ETH Price: $3,388.31 (-1.71%)
Gas: 4 Gwei

Token

Zoo-manFreemint (ZMN)
 

Overview

Max Total Supply

0 ZMN

Holders

322

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Balance
0 ZMN
0x5b6e4330ad93b8082d646f1684dcb32ec975289e
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:
ZoomanFreemint

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-24
*/

// SPDX-License-Identifier: MIT

// File @openzeppelin/contracts/utils/[email protected]

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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


// File @openzeppelin/contracts/access/[email protected]


// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


// File operator-filter-registry/src/[email protected]


pragma solidity ^0.8.13;

interface IOperatorFilterRegistry {
    function isOperatorAllowed(address registrant, address operator) external view returns (bool);
    function register(address registrant) external;
    function registerAndSubscribe(address registrant, address subscription) external;
    function registerAndCopyEntries(address registrant, address registrantToCopy) external;
    function unregister(address addr) external;
    function updateOperator(address registrant, address operator, bool filtered) external;
    function updateOperators(address registrant, address[] calldata operators, bool filtered) external;
    function updateCodeHash(address registrant, bytes32 codehash, bool filtered) external;
    function updateCodeHashes(address registrant, bytes32[] calldata codeHashes, bool filtered) external;
    function subscribe(address registrant, address registrantToSubscribe) external;
    function unsubscribe(address registrant, bool copyExistingEntries) external;
    function subscriptionOf(address addr) external returns (address registrant);
    function subscribers(address registrant) external returns (address[] memory);
    function subscriberAt(address registrant, uint256 index) external returns (address);
    function copyEntriesOf(address registrant, address registrantToCopy) external;
    function isOperatorFiltered(address registrant, address operator) external returns (bool);
    function isCodeHashOfFiltered(address registrant, address operatorWithCode) external returns (bool);
    function isCodeHashFiltered(address registrant, bytes32 codeHash) external returns (bool);
    function filteredOperators(address addr) external returns (address[] memory);
    function filteredCodeHashes(address addr) external returns (bytes32[] memory);
    function filteredOperatorAt(address registrant, uint256 index) external returns (address);
    function filteredCodeHashAt(address registrant, uint256 index) external returns (bytes32);
    function isRegistered(address addr) external returns (bool);
    function codeHashOf(address addr) external returns (bytes32);
}


// File operator-filter-registry/src/[email protected]


pragma solidity ^0.8.13;

/**
 * @title  OperatorFilterer
 * @notice Abstract contract whose constructor automatically registers and optionally subscribes to or copies another
 *         registrant's entries in the OperatorFilterRegistry.
 * @dev    This smart contract is meant to be inherited by token contracts so they can use the following:
 *         - `onlyAllowedOperator` modifier for `transferFrom` and `safeTransferFrom` methods.
 *         - `onlyAllowedOperatorApproval` modifier for `approve` and `setApprovalForAll` methods.
 */
abstract contract OperatorFilterer {
    error OperatorNotAllowed(address operator);

    IOperatorFilterRegistry public constant OPERATOR_FILTER_REGISTRY =
        IOperatorFilterRegistry(0x000000000000AAeB6D7670E522A718067333cd4E);

    constructor(address subscriptionOrRegistrantToCopy, bool subscribe) {
        // If an inheriting token contract is deployed to a network without the registry deployed, the modifier
        // will not revert, but the contract will need to be registered with the registry once it is deployed in
        // order for the modifier to filter addresses.
        if (address(OPERATOR_FILTER_REGISTRY).code.length > 0) {
            if (subscribe) {
                OPERATOR_FILTER_REGISTRY.registerAndSubscribe(address(this), subscriptionOrRegistrantToCopy);
            } else {
                if (subscriptionOrRegistrantToCopy != address(0)) {
                    OPERATOR_FILTER_REGISTRY.registerAndCopyEntries(address(this), subscriptionOrRegistrantToCopy);
                } else {
                    OPERATOR_FILTER_REGISTRY.register(address(this));
                }
            }
        }
    }

    modifier onlyAllowedOperator(address from) virtual {
        // Allow spending tokens from addresses with balance
        // Note that this still allows listings and marketplaces with escrow to transfer tokens if transferred
        // from an EOA.
        if (from != msg.sender) {
            _checkFilterOperator(msg.sender);
        }
        _;
    }

    modifier onlyAllowedOperatorApproval(address operator) virtual {
        _checkFilterOperator(operator);
        _;
    }

    function _checkFilterOperator(address operator) internal view virtual {
        // Check registry code length to facilitate testing in environments without a deployed registry.
        if (address(OPERATOR_FILTER_REGISTRY).code.length > 0) {
            if (!OPERATOR_FILTER_REGISTRY.isOperatorAllowed(address(this), operator)) {
                revert OperatorNotAllowed(operator);
            }
        }
    }
}


// File operator-filter-registry/src/[email protected]


pragma solidity ^0.8.13;

/**
 * @title  DefaultOperatorFilterer
 * @notice Inherits from OperatorFilterer and automatically subscribes to the default OpenSea subscription.
 */
abstract contract DefaultOperatorFilterer is OperatorFilterer {
    address constant DEFAULT_SUBSCRIPTION = address(0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6);

    constructor() OperatorFilterer(DEFAULT_SUBSCRIPTION, true) {}
}


// File @openzeppelin/contracts/utils/[email protected]


// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    uint8 private constant _ADDRESS_LENGTH = 20;

    /**
     * @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);
    }

    /**
     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.
     */
    function toHexString(address addr) internal pure returns (string memory) {
        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
    }
}


// File @openzeppelin/contracts/utils/[email protected]


// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)

pragma solidity ^0.8.0;

/**
 * @title Counters
 * @author Matt Condon (@shrugs)
 * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number
 * of elements in a mapping, issuing ERC721 ids, or counting request ids.
 *
 * Include with `using Counters for Counters.Counter;`
 */
library Counters {
    struct Counter {
        // This variable should never be directly accessed by users of the library: interactions must be restricted to
        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add
        // this feature: see https://github.com/ethereum/solidity/issues/4637
        uint256 _value; // default: 0
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
        unchecked {
            counter._value += 1;
        }
    }

    function decrement(Counter storage counter) internal {
        uint256 value = counter._value;
        require(value > 0, "Counter: decrement overflow");
        unchecked {
            counter._value = value - 1;
        }
    }

    function reset(Counter storage counter) internal {
        counter._value = 0;
    }
}


// File @openzeppelin/contracts/utils/[email protected]


// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

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

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

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

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly
                /// @solidity memory-safe-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


// File @openzeppelin/contracts/utils/introspection/[email protected]


// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}


// File @openzeppelin/contracts/token/ERC721/[email protected]


// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)

pragma solidity ^0.8.0;

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);
}


// File @openzeppelin/contracts/utils/introspection/[email protected]


// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}


// File @openzeppelin/contracts/token/ERC721/[email protected]


// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)

pragma solidity ^0.8.0;

/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
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);
}


// File @openzeppelin/contracts/token/ERC721/extensions/[email protected]


// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)

pragma solidity ^0.8.0;

/**
 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Metadata is IERC721 {
    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

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

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


// File @openzeppelin/contracts/token/ERC721/[email protected]


// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)

pragma solidity ^0.8.0;







/**
 * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
 * the Metadata extension, but not including the Enumerable extension, which is available separately as
 * {ERC721Enumerable}.
 */
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

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

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

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

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

    /**
     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: address zero is not a valid owner");
        return _balances[owner];
    }

    /**
     * @dev See {IERC721-ownerOf}.
     */
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: invalid token ID");
        return owner;
    }

    /**
     * @dev See {IERC721Metadata-name}.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC721Metadata-symbol}.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        _requireMinted(tokenId);

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

    /**
     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty
     * by default, can be overridden in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

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

        _approve(to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        _requireMinted(tokenId);

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_msgSender(), operator, approved);
    }

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

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner nor approved");

        _transfer(from, to, tokenId);
    }

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

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory data
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner nor approved");
        _safeTransfer(from, to, tokenId, data);
    }

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * `data` is additional data, it has no specified format and it is sent in call to `to`.
     *
     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.
     * implement alternative mechanisms to perform token transfer, such as signature-based.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    /**
     * @dev Returns whether `tokenId` exists.
     *
     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
     *
     * Tokens start existing when they are minted (`_mint`),
     * and stop existing when they are burned (`_burn`).
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    /**
     * @dev Returns whether `spender` is allowed to manage `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);
    }

    /**
     * @dev Safely mints `tokenId` and transfers it to `to`.
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    /**
     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
     */
    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    /**
     * @dev Mints `tokenId` and transfers it to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - `to` cannot be the zero address.
     *
     * Emits a {Transfer} event.
     */
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

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

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

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

        _afterTokenTransfer(address(0), to, tokenId);
    }

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

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

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

        _balances[owner] -= 1;
        delete _owners[tokenId];

        emit Transfer(owner, address(0), tokenId);

        _afterTokenTransfer(owner, address(0), tokenId);
    }

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     *
     * Emits a {Transfer} event.
     */
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

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

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

        emit Transfer(from, to, tokenId);

        _afterTokenTransfer(from, to, tokenId);
    }

    /**
     * @dev Approve `to` to operate on `tokenId`
     *
     * Emits an {Approval} event.
     */
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    /**
     * @dev Approve `operator` to operate on all of `owner` tokens
     *
     * Emits an {ApprovalForAll} event.
     */
    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "ERC721: approve to caller");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    /**
     * @dev Reverts if the `tokenId` has not been minted yet.
     */
    function _requireMinted(uint256 tokenId) internal view virtual {
        require(_exists(tokenId), "ERC721: invalid token ID");
    }

    /**
     * @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.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    /// @solidity memory-safe-assembly
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning.
     *
     * Calling conditions:
     *
     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
     * transferred to `to`.
     * - When `from` is zero, `tokenId` will be minted for `to`.
     * - When `to` is zero, ``from``'s `tokenId` will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}


// File @openzeppelin/contracts/interfaces/[email protected]


// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface for the NFT Royalty Standard.
 *
 * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal
 * support for royalty payments across all NFT marketplaces and ecosystem participants.
 *
 * _Available since v4.5._
 */
interface IERC2981 is IERC165 {
    /**
     * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of
     * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.
     */
    function royaltyInfo(uint256 tokenId, uint256 salePrice)
        external
        view
        returns (address receiver, uint256 royaltyAmount);
}


// File @openzeppelin/contracts/token/common/[email protected]


// OpenZeppelin Contracts (last updated v4.7.0) (token/common/ERC2981.sol)

pragma solidity ^0.8.0;


/**
 * @dev Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information.
 *
 * Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for
 * specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first.
 *
 * Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the
 * fee is specified in basis points by default.
 *
 * IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See
 * https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to
 * voluntarily pay royalties together with sales, but note that this standard is not yet widely supported.
 *
 * _Available since v4.5._
 */
abstract contract ERC2981 is IERC2981, ERC165 {
    struct RoyaltyInfo {
        address receiver;
        uint96 royaltyFraction;
    }

    RoyaltyInfo private _defaultRoyaltyInfo;
    mapping(uint256 => RoyaltyInfo) private _tokenRoyaltyInfo;

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC165) returns (bool) {
        return interfaceId == type(IERC2981).interfaceId || super.supportsInterface(interfaceId);
    }

    /**
     * @inheritdoc IERC2981
     */
    function royaltyInfo(uint256 _tokenId, uint256 _salePrice) public view virtual override returns (address, uint256) {
        RoyaltyInfo memory royalty = _tokenRoyaltyInfo[_tokenId];

        if (royalty.receiver == address(0)) {
            royalty = _defaultRoyaltyInfo;
        }

        uint256 royaltyAmount = (_salePrice * royalty.royaltyFraction) / _feeDenominator();

        return (royalty.receiver, royaltyAmount);
    }

    /**
     * @dev The denominator with which to interpret the fee set in {_setTokenRoyalty} and {_setDefaultRoyalty} as a
     * fraction of the sale price. Defaults to 10000 so fees are expressed in basis points, but may be customized by an
     * override.
     */
    function _feeDenominator() internal pure virtual returns (uint96) {
        return 10000;
    }

    /**
     * @dev Sets the royalty information that all ids in this contract will default to.
     *
     * Requirements:
     *
     * - `receiver` cannot be the zero address.
     * - `feeNumerator` cannot be greater than the fee denominator.
     */
    function _setDefaultRoyalty(address receiver, uint96 feeNumerator) internal virtual {
        require(feeNumerator <= _feeDenominator(), "ERC2981: royalty fee will exceed salePrice");
        require(receiver != address(0), "ERC2981: invalid receiver");

        _defaultRoyaltyInfo = RoyaltyInfo(receiver, feeNumerator);
    }

    /**
     * @dev Removes default royalty information.
     */
    function _deleteDefaultRoyalty() internal virtual {
        delete _defaultRoyaltyInfo;
    }

    /**
     * @dev Sets the royalty information for a specific token id, overriding the global default.
     *
     * Requirements:
     *
     * - `receiver` cannot be the zero address.
     * - `feeNumerator` cannot be greater than the fee denominator.
     */
    function _setTokenRoyalty(
        uint256 tokenId,
        address receiver,
        uint96 feeNumerator
    ) internal virtual {
        require(feeNumerator <= _feeDenominator(), "ERC2981: royalty fee will exceed salePrice");
        require(receiver != address(0), "ERC2981: Invalid parameters");

        _tokenRoyaltyInfo[tokenId] = RoyaltyInfo(receiver, feeNumerator);
    }

    /**
     * @dev Resets royalty information for the token id back to the global default.
     */
    function _resetTokenRoyalty(uint256 tokenId) internal virtual {
        delete _tokenRoyaltyInfo[tokenId];
    }
}


// File @openzeppelin/contracts/token/ERC721/extensions/[email protected]


// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/ERC721Royalty.sol)

pragma solidity ^0.8.0;



/**
 * @dev Extension of ERC721 with the ERC2981 NFT Royalty Standard, a standardized way to retrieve royalty payment
 * information.
 *
 * Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for
 * specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first.
 *
 * IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See
 * https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to
 * voluntarily pay royalties together with sales, but note that this standard is not yet widely supported.
 *
 * _Available since v4.5._
 */
abstract contract ERC721Royalty is ERC2981, ERC721 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721, ERC2981) returns (bool) {
        return super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {ERC721-_burn}. This override additionally clears the royalty information for the token.
     */
    function _burn(uint256 tokenId) internal virtual override {
        super._burn(tokenId);
        _resetTokenRoyalty(tokenId);
    }
}


// File contracts/kzfmfinal.sol


pragma solidity ^0.8.0;





contract ZoomanFreemint is ERC721Royalty, Ownable, DefaultOperatorFilterer {
    using Strings for uint256;
    using Counters for Counters.Counter;
    Counters.Counter private _tokenIdCounter;

    constructor() ERC721('Zoo-manFreemint', 'ZMN') {
        _setDefaultRoyalty(owner(), 1000);
        freeMintAmountMapping[0x002841301d1AB971D8acB3509Aa2891e3ef9D7E1] = 3;
        freeMintAmountMapping[0xFE4bE01Da4fBfD47650EB2c7bd37d09607d1337F] = 1;
        freeMintAmountMapping[0xfE2cd171379139bc0D895dA75464AEF8460B3400] = 1;
        freeMintAmountMapping[0xFdAb2E988Cf8242AfbDf208f9368868d050CC253] = 1;
        freeMintAmountMapping[0xFD52c7f77C60dD0aDB11C2E631A9C9a7efEBF8dc] = 1;
        freeMintAmountMapping[0xfc5F6FfA7007900654fA9E974Be837b26abf0cA2] = 1;
        freeMintAmountMapping[0xfB29409dD2c76157a6F8f7F06Fd51630AdAa1be9] = 1;
        freeMintAmountMapping[0xF6e512563eE2c8Fc3aE713dc41CA9175FeFE2503] = 1;
        freeMintAmountMapping[0xF661c19c314292E24564F8EAec220Da9607873Ba] = 1;
        freeMintAmountMapping[0xf58808BCA3c49BAe910C693155f3427cE539DF2a] = 1;
        freeMintAmountMapping[0xF522cE5819CA0a9B922C1262E7b8542d14F0001a] = 1;
        freeMintAmountMapping[0xf514A75f48364fff1276cdcF23171A8F0fb5998d] = 1;
        freeMintAmountMapping[0xf4E54339403CF8201B55AA97b3B3baD8221B239C] = 1;
        freeMintAmountMapping[0xF4548503Dd51De15e8D0E6fB559f6062d38667e7] = 1;
        freeMintAmountMapping[0xf406aed3369614123eB6c8ea6afB12995D49dBdB] = 1;
        freeMintAmountMapping[0xF33621a6612D789f31cb39130e8e1239213ef2aa] = 1;
        freeMintAmountMapping[0xf2F3f58E80340918F85a11E090311e1a96c10156] = 1;
        freeMintAmountMapping[0xf2F39F813ebA0B580887199632c91308fb54cF9b] = 1;
        freeMintAmountMapping[0xF1C78c04EB0f2dB43cF499CDe23bE74230D43b1A] = 1;
        freeMintAmountMapping[0xf15b2D971B9b320d931B5264Df47af3B4DB82981] = 1;
        freeMintAmountMapping[0xf08a26090d1CDf2958299A6479dB4d9F34616110] = 1;
        freeMintAmountMapping[0xF05b026855C8FbC0a2682cbb1b610BafCF54a047] = 1;
        freeMintAmountMapping[0xef7Ce9855AEfBCd56dF4E54BC63fA09a1cFc5F8f] = 1;
        freeMintAmountMapping[0xeF1DAd2b5345A25DDF0eC504532ad21aB9EFd24a] = 1;
        freeMintAmountMapping[0xee38E54DE56a9d3878267fB26697AdB990947330] = 1;
        freeMintAmountMapping[0xEdAf3aF3220d9bf6083FBf03f52e9b1807f9ca56] = 1;
        freeMintAmountMapping[0xed937a015c832b3C067e28c68fD980100175e6E9] = 1;
        freeMintAmountMapping[0xECEbbbe3E40175C2b5a441149F855f0e215acbcd] = 1;
        freeMintAmountMapping[0xec79f29C30Bae7F31cF0462e0658F9f0C368f454] = 1;
        freeMintAmountMapping[0xEc2ef0657495611906bcb32dd98f6b41f50186E5] = 1;
        freeMintAmountMapping[0xeC20527c933DE96c37822384828Ed6bE1D8Cd807] = 1;
        freeMintAmountMapping[0xEAbB8945bf334c05144A13DF75eB76d047a7eebD] = 1;
        freeMintAmountMapping[0xE8f2754fbF84DB99d1b94fe3507809469e01d6A3] = 1;
        freeMintAmountMapping[0xE87cD0136d604B34410F8CB3E2DC7dFc04cB9Bc6] = 1;
        freeMintAmountMapping[0xE69e744949Dc0A6Af1a3381b41333C9b91302eC4] = 1;
        freeMintAmountMapping[0xE5D8F6D0Bc8E5bd9751F611AeaA6BABcd08C7d83] = 1;
        freeMintAmountMapping[0xE51Dc2090F49e01857Bb08A7B6ADA93A0BD43a1a] = 1;
        freeMintAmountMapping[0xE49f7b329621e4e8dda916e02C0D9e0651b58775] = 1;
        freeMintAmountMapping[0xe49d5BE6C9f8Ff32bBa6Fa0ec26C8b9BbB23b0A8] = 1;
        freeMintAmountMapping[0xE440964985D8005A5f44Ed830Fb3acfceF15dd04] = 1;
        freeMintAmountMapping[0xe34a3dDA68988076F1Ac02B7B62e9a264525615E] = 1;
        freeMintAmountMapping[0xE2Ad9b510407Cdc4E383C020C2962EcB0a4f5Bea] = 1;
        freeMintAmountMapping[0xE27A311ab12dF25e2885e7BF51Cd494a6488b380] = 1;
        freeMintAmountMapping[0xE0BC83041bda542408edAd51263F5d41955D1f17] = 1;
        freeMintAmountMapping[0xdf6e1e8945bcB7f1B17f4D83e36Ab79a5d724607] = 1;
        freeMintAmountMapping[0xDF1424D814C223769def829278a54f9562Ae10aB] = 1;
        freeMintAmountMapping[0xddF21318ca81F9dcB3f143b40B95C72328c46892] = 1;
        freeMintAmountMapping[0xdd2Cb738E8f987579776c6d25b4F769Bf6529792] = 1;
        freeMintAmountMapping[0xDD12A0c04BE3fF962E7321f11Bc08DbE227c25aC] = 1;
        freeMintAmountMapping[0xdAcdB79016cB5e155Ea960e7615b3A7796420E61] = 1;
        freeMintAmountMapping[0xda69fb774131cdCE04E8f8EcE3c67b20815Bd71e] = 1;
        freeMintAmountMapping[0xda5bcb02b4EF1850F9781153CAF1b7e7C268aE3b] = 1;
        freeMintAmountMapping[0xdA32D3EE3b60EbE8f9D296A34bc628149A5D320c] = 1;
        freeMintAmountMapping[0xD75c07B56CB3E1E47Adc22944b5E78efBc242b8f] = 1;
        freeMintAmountMapping[0xd63520F915bB5E13cC07CD053de320dFa661227d] = 1;
        freeMintAmountMapping[0xd4B1623E464e8Bc0260A88E09d933f895cbf33BE] = 1;
        freeMintAmountMapping[0xD46486757b7d7a3f45E7364a5defE30247e93a9a] = 1;
        freeMintAmountMapping[0xd4076fff8B52e3590486Dc772f9AB10fe8dD8A29] = 1;
        freeMintAmountMapping[0xd1d2262D1fEA768fe0dc3c26C5b0D91748727000] = 1;
        freeMintAmountMapping[0xd073974fF18df18b56F70E69dFA0893B8c385764] = 1;
        freeMintAmountMapping[0xd06AA2838Fdd54d12Fe366DBad6bb7EC86d17C5E] = 1;
        freeMintAmountMapping[0xCFcb18A76DAF95633ca762C5E46DdB5E04ADE31F] = 1;
        freeMintAmountMapping[0xCf3223ca96C4a3cbb50E40eE376b0a5d86E829E2] = 1;
        freeMintAmountMapping[0xCe0233903111Adc2D90bde8AEEdDf6C77F731A20] = 1;
        freeMintAmountMapping[0xCd10c01d455a5b50737d2b734196766FD0b4b7eE] = 1;
        freeMintAmountMapping[0xCAc61AAD8b8AAae87D1BA2f680871A95Ddd0f8b1] = 1;
        freeMintAmountMapping[0xc9F2fE88250098838e8A36210E9311015Ef62b48] = 1;
        freeMintAmountMapping[0xc8331Db1414bdF20a88f0192351d3eCFaD11aAC1] = 1;
        freeMintAmountMapping[0xc67C21D1fdfF7AFB241C8C829E40cd289f8eb001] = 1;
        freeMintAmountMapping[0xc5eda85d9c9F62f34D807D9A1adA3A1c59f3AD2b] = 1;
        freeMintAmountMapping[0xc34b1b511A14BFf1D54e557c0e37F7937509Ea97] = 1;
        freeMintAmountMapping[0xc2E7D8C328F156D99C4cde1ac6D6B03D2d41a9cA] = 1;
        freeMintAmountMapping[0xC1B4Bb6260e68E339CF54cC2733aeecC0F8295aF] = 1;
        freeMintAmountMapping[0xc0658AF26F21c5b8b31951B38c69cc465116Ad5C] = 1;
        freeMintAmountMapping[0xBEbf53131E47dB582f6453a7CfA8827D59F7A6af] = 1;
        freeMintAmountMapping[0xbDC674b2C585dA3C80E50e48f6b73690dFcAFeBD] = 1;
        freeMintAmountMapping[0xbd0DE205C5AB42257e63a5f9cc7fa3b0e2f9A3CA] = 1;
        freeMintAmountMapping[0xBBc8Bd583430Abb3aF7b24A29bfeeC44D2D9e97C] = 1;
        freeMintAmountMapping[0xBACb4dB3dCC49c9493163eF9EB3E7Fb0254a0D00] = 1;
        freeMintAmountMapping[0xB9b503c8C6AAf2Ff16E16F069053DA2155A03c61] = 1;
        freeMintAmountMapping[0xb92AA8895BDDf37B1F3BC315aCA6B74f17E973cd] = 1;
        freeMintAmountMapping[0xB9165f97E0A28485c4d54d29206b25627B44be53] = 1;
        freeMintAmountMapping[0xb6f9ECEa3Beb098981110C55223135C94F92c679] = 1;
        freeMintAmountMapping[0xB658ee7c91c927D5CBb5251eAd780d7b9C6C455b] = 1;
        freeMintAmountMapping[0xB4D9a40712fed064e90dc3552d0CEAcA6c888551] = 1;
        freeMintAmountMapping[0xB4ac8a8e9c61Ac35D00469842C65Dc0cd9bca130] = 1;
        freeMintAmountMapping[0xB31853FA4dF39dffe598f835D0B26174430e285B] = 1;
        freeMintAmountMapping[0xB237d44B7C9F5C0b175Cb7d205b97a19E958C514] = 1;
        freeMintAmountMapping[0xB0dcACCC43cfeE786acAD6E250cC8Cff6045B194] = 1;
        freeMintAmountMapping[0xafc3B89f14893f5BfA33B858B6C318394EfA2ade] = 1;
        freeMintAmountMapping[0xAea31abFAdfb9c8B885c54e751C0d99CB0662137] = 1;
        freeMintAmountMapping[0xAe85D36BC312288B3444E81f6502CD238c137E32] = 1;
        freeMintAmountMapping[0xaD29F6dD5a03105813Ad0d879383f818c6B5FB99] = 1;
        freeMintAmountMapping[0xace93d27680d27d8C2181ECC6AFBda93Cd678aC3] = 1;
        freeMintAmountMapping[0xAc9F69978AE542b4bcE62314fAcb4a790d2102f1] = 1;
        freeMintAmountMapping[0xab4753de403D0861590680c6FFc8329572D54D31] = 1;
        freeMintAmountMapping[0xaA2F9Ddc1d5981eB715168Ae09121F08228C483e] = 1;
        freeMintAmountMapping[0xAA196af22025958430D5ef504a27b4e7b05bBD68] = 1;
        freeMintAmountMapping[0xa98c8FC9e02069F8Cc305238eB001CcF647E8105] = 1;
        freeMintAmountMapping[0xA73757C41995E93A0af5AAe7828AE3369752d09E] = 1;
        freeMintAmountMapping[0xa70c08AA66365CeFD9B4C8af0c4e8A366E595d6C] = 1;
        freeMintAmountMapping[0xA546Ee534805f9968e5a84A9Cb48860779E45E13] = 1;
        freeMintAmountMapping[0xA4c3C659dCbf3021D32e378e164B0D1c339843De] = 1;
        freeMintAmountMapping[0xa49dfD905EfB545019EACbE25a4024A7C70866C8] = 1;
        freeMintAmountMapping[0xa45E81919BF7563F39b99Cf0603A28175276B60a] = 1;
        freeMintAmountMapping[0xA1AC9882c1f2fa810EEBad1ADeE4B71eE2454A19] = 1;
        freeMintAmountMapping[0xa0751827DA7a5cE235D85694164382Ee8920648D] = 1;
        freeMintAmountMapping[0x9F61B0aC23747AF2734Bcf3A8EEF0BbB82932cEa] = 1;
        freeMintAmountMapping[0x9Ee987F7D547C036901AD3DAD30671Cf54cCCc92] = 1;
        freeMintAmountMapping[0x9cAfE57302Db8334DE78FdB0244eA536911908c5] = 1;
        freeMintAmountMapping[0x9B2e6dfcB85237EEAAc4a95968B616485EE53D8E] = 1;
        freeMintAmountMapping[0x9aa7cF645442097F134902B0cBb595CaDff24960] = 1;
        freeMintAmountMapping[0x99F277d2a41113Fccd60d3Bd874FdDd67f0204Be] = 1;
        freeMintAmountMapping[0x97F5E4dcEf753df248479d5150Df177355453d00] = 1;
        freeMintAmountMapping[0x97c544BB08BD793eB56cc9452D15e77F067a66bb] = 1;
        freeMintAmountMapping[0x95d78bA3b80D76740732bA4b02Bb3887C880A562] = 1;
        freeMintAmountMapping[0x95576B44757263150E1224dA24d6A6a0EDC81CD6] = 1;
        freeMintAmountMapping[0x94B4D1a7cF4D46e5F52C7f5B6E7e63926fBE6d73] = 1;
        freeMintAmountMapping[0x945475aF27f187506A896ccdD2CbAe103d6490AA] = 1;
        freeMintAmountMapping[0x939BF69c9D3376290922E45466D96e5200D33B63] = 1;
        freeMintAmountMapping[0x934b19E396566d3aa45ebeb611325f899951adA5] = 1;
        freeMintAmountMapping[0x91aDb5B476418D7f70a112bE8a5166020769919A] = 1;
        freeMintAmountMapping[0x8D8e99BFD8D31A9812329824635e3eA7800b6406] = 1;
        freeMintAmountMapping[0x8d82fC0E884E4509D01884263Da76f10bdF75F9c] = 1;
        freeMintAmountMapping[0x8CACb17F18dDf34Ea35BE228f30A2c41E8A11d75] = 1;
        freeMintAmountMapping[0x8c1584666c98257A5872E6205b6dE631B3301829] = 1;
        freeMintAmountMapping[0x8b9A364581eDd2520d355002D7049568AC64b71C] = 1;
        freeMintAmountMapping[0x8A04De446D1bBFA3F8f6C41442AA62C719157ef8] = 1;
        freeMintAmountMapping[0x89ea3681FA7A838084b28C1bEe1e0de1c2ce1C11] = 1;
        freeMintAmountMapping[0x8871d265a0C8dF287Cf9A76Dd8F6ba513DFdA3B9] = 1;
        freeMintAmountMapping[0x87F06a9bE97AE026220B24389095AFC2277AF93e] = 1;
        freeMintAmountMapping[0x870BA521b5830Ce144DD0e824DA837269491C8FA] = 1;
        freeMintAmountMapping[0x86573536Ab37E0dea5b2D37247aD68fb3C668803] = 1;
        freeMintAmountMapping[0x8427b5AE23291F2c5D1D85ABf6AFAe48426F357c] = 1;
        freeMintAmountMapping[0x829B2dE9c1b1E18a94f3c71aA9fb3832D4C61Df5] = 1;
        freeMintAmountMapping[0x81f5B2538a5762467f256B0E5A07c0AC812Fde67] = 1;
        freeMintAmountMapping[0x819fCccdeeAC99405348Df192601dd07EF1d77e9] = 1;
        freeMintAmountMapping[0x7Ec1B412Ce73254b2a965F1251837f52e30B9217] = 1;
        freeMintAmountMapping[0x7e5D1ec3cd82F73Bca98727194c70b67D27F42f1] = 1;
        freeMintAmountMapping[0x7E01CCb7a89dc5417C3F87cc738ae4db2c219173] = 1;
        freeMintAmountMapping[0x7DFd472eE9fE7cA9AFc81C1BBB155F0bD635B968] = 1;
        freeMintAmountMapping[0x7Be0614BF06Cb9B6f72518CCbE550053c36127c7] = 1;
        freeMintAmountMapping[0x7BA721159C92ee766fcD578E06D488f1916DF17d] = 1;
        freeMintAmountMapping[0x7aD304E9596881f175B76b856FC2ef761927C61a] = 1;
        freeMintAmountMapping[0x7A2234DB7EE77589Da07d593F1563Ad83F0A1253] = 1;
        freeMintAmountMapping[0x79F910f11a2B3DAb380b0B6C1E75EdfABce8423c] = 1;
        freeMintAmountMapping[0x79e7Cf2c7f085a39a0F0d40E30dE9b759862B9F7] = 1;
        freeMintAmountMapping[0x797C81efE7a4EE6B517Eae06CaB4eB866b5d33F8] = 1;
        freeMintAmountMapping[0x7962F5959633405FcA783928E41fE933DCEb9AaD] = 1;
        freeMintAmountMapping[0x790D7FF1555b9b951aeF8c59728AeFe2A326DEa0] = 1;
        freeMintAmountMapping[0x77C219F85B6d20Ba6139003C5D13Ff985924504f] = 1;
        freeMintAmountMapping[0x761e4dE49B3Cbb53972f8372c4CEc44E4d8b36ec] = 1;
        freeMintAmountMapping[0x7413A533d57223C222BA0aA37A09A2E733878013] = 1;
        freeMintAmountMapping[0x73F55d0FaE1A4A95769E4b9F0Cc18B6106a32D89] = 1;
        freeMintAmountMapping[0x7371262598d7936fB0B5b6D46f12611821F36895] = 1;
        freeMintAmountMapping[0x72E22DEAbeaEaBDd559EA7B741EF2BD77D08439e] = 1;
        freeMintAmountMapping[0x72A4D7A1E496104185C558d13230A2c075ecbDCf] = 1;
        freeMintAmountMapping[0x729dA52EE3a8f9a2053fdFE877E5c281ce8785Df] = 1;
        freeMintAmountMapping[0x721e02FBe66c1eDE165ac3ABb335419FC3F374Ef] = 1;
        freeMintAmountMapping[0x71c0dD41A4B35596399D647df6420C6e847D23b4] = 1;
        freeMintAmountMapping[0x71a5a3aa039fB63DBa8ce2E3C3a3e2DaB81a5939] = 1;
        freeMintAmountMapping[0x70A5751cE33dE4436B1e5935772aFA007382a78b] = 1;
        freeMintAmountMapping[0x6ebe842F91D4f0a2d28Cf273BCEc8E34247B2595] = 1;
        freeMintAmountMapping[0x6e448Ac7C20e3011BB15a9F83cce71aC00303805] = 1;
        freeMintAmountMapping[0x6E1324676F515bcAb14c26C5F1d70ca6172Ca455] = 1;
        freeMintAmountMapping[0x6aB8eA1b7852589CcCDc80Ac5f6c21afAD74ce38] = 1;
        freeMintAmountMapping[0x6a780C771281322c8E0bbAb55b935C1bb70F66ec] = 1;
        freeMintAmountMapping[0x6909FE2c20FEa0e84077E2C26709A42FD482fAB2] = 1;
        freeMintAmountMapping[0x68174da16A168122bddDD93456F97B089068d46d] = 1;
        freeMintAmountMapping[0x67a1Ee75aA95C5C1E7341Ac81e0cA30D3EAafbc5] = 1;
        freeMintAmountMapping[0x67155a71Ec459C595F3A6Eb13520a78f8bB90B7C] = 1;
        freeMintAmountMapping[0x6609eC70BF04f20DDd720470B2fEDA600427fC3A] = 1;
        freeMintAmountMapping[0x6571C1643F76945926Fa93ca07aB6104DF2b6DD2] = 1;
        freeMintAmountMapping[0x64ff8A32bd2b2746ed2A42Ce46eb1Bd74C59f70C] = 1;
        freeMintAmountMapping[0x647a36F2f04f5b54Cb4c8022b9026f7fbDAd7F1b] = 1;
        freeMintAmountMapping[0x63a71B19b70F05cf6b5a79Da0d717eF46de97552] = 1;
        freeMintAmountMapping[0x6321F49B3a9182Be7cB57De40bbf8117E37668d2] = 1;
        freeMintAmountMapping[0x61EC94F740707F8cE243b80F765A2b95196f1c5A] = 1;
        freeMintAmountMapping[0x60b2972658a600e2d0a39DB4aF1f9Fb11097b8a5] = 1;
        freeMintAmountMapping[0x607e6697233D045EE6A586B303630298Dd80515d] = 1;
        freeMintAmountMapping[0x603Bddc4d7FE9681dcfbbDBD99c0B152d684bA45] = 1;
        freeMintAmountMapping[0x5e85c03Ad8B2C86018D0eDDfaEBdd55EfdCFfB0D] = 1;
        freeMintAmountMapping[0x5cD935Bd72eBfBf4B0141568Bc89cC896d9f0b1D] = 1;
        freeMintAmountMapping[0x5bf6dBEe2798ca0674e5703DFc2fC32855245e55] = 1;
        freeMintAmountMapping[0x5aE2d4dab5881fbF2a5dCD3ccDCf5190Cf69293b] = 1;
        freeMintAmountMapping[0x5acd55138528f9e8BF4a2855ecF2777E6a1909F9] = 1;
        freeMintAmountMapping[0x5a8D322920B5e3D9670B3ED80a0d9e4e37C0470C] = 1;
        freeMintAmountMapping[0x59a1C0Ab93b5C0853ECa16ff594568dB4D481182] = 1;
        freeMintAmountMapping[0x5770B226AD3497EB7F02637f65615CDD620D5e79] = 1;
        freeMintAmountMapping[0x55F555CcF956802A42596c708C08cB8bD99214fA] = 1;
        freeMintAmountMapping[0x555b9d685Af3f8003F3D3df3D4b8338e78aA8184] = 1;
        freeMintAmountMapping[0x55215b8E731276EAfCfC9a8bf7d325cdf9E1c0d7] = 1;
        freeMintAmountMapping[0x537A4046755e610D9b97CA4203A4f836974e0d11] = 1;
        freeMintAmountMapping[0x5357E4671EAa4a7367921EfC8EB60D56d3650ad5] = 1;
        freeMintAmountMapping[0x5253043DF7a50970398dd1037eeCf6B384FD4672] = 1;
        freeMintAmountMapping[0x522FA1709cBdE1cd54652639B93403b7367B4A3e] = 1;
        freeMintAmountMapping[0x52008d2a42a15915509D4c7fE6694B0Ed11beB5B] = 1;
        freeMintAmountMapping[0x5154c1F3959b7c5B2F1956947BC77Eee0C1039e0] = 1;
        freeMintAmountMapping[0x50F0f41E527Bc7DDb9d4192937281773b1a47c99] = 1;
        freeMintAmountMapping[0x50eC189497A2A93ae670e8193DE41b389c45b300] = 1;
        freeMintAmountMapping[0x50252dDeC36De574734FE0CB4A475c7e6F1C2eb2] = 1;
        freeMintAmountMapping[0x50063D335B85898AE7Aa0b28B86Db96507A5c25F] = 1;
        freeMintAmountMapping[0x4FDB49033C916b9b09BCd0850F2240d610afF726] = 1;
        freeMintAmountMapping[0x4E3b3680BbaF5b6eE805E4606a772C5A112723c3] = 1;
        freeMintAmountMapping[0x4D3B23Cf47440C709d9B37Ae37366d3BC8B5889f] = 1;
        freeMintAmountMapping[0x4D3122eA24d779CF7741f1d6A5829905B235c48c] = 1;
        freeMintAmountMapping[0x4CaE8F1F7A5CFcc82b5123872ef3B9fAc395c210] = 1;
        freeMintAmountMapping[0x4C8e07E0DF30120dFa2bd20BB84D68108928569F] = 1;
        freeMintAmountMapping[0x4c87e557C2878257d689849820dc4c2edb229f27] = 1;
        freeMintAmountMapping[0x4a02e5FD33E84aa36549890A2eBd21d275080966] = 1;
        freeMintAmountMapping[0x493Da0cDe8cbe456d096D296B88550a703939354] = 1;
        freeMintAmountMapping[0x48eF11011DeD807F3246bB8c2F4CE9426e09Be88] = 1;
        freeMintAmountMapping[0x47d317653695aa0c57557519AFf9f7A186141510] = 1;
        freeMintAmountMapping[0x47a991819ab1e4Fb3A884b54F12bAeb346f9dc69] = 1;
        freeMintAmountMapping[0x47659CAf77A8822F477887657Dfb34EC2F448852] = 1;
        freeMintAmountMapping[0x474f057fFd4184cE80236d39C88E8ECFe8589931] = 1;
        freeMintAmountMapping[0x465951a661084386bc46306C2eb3A2Fe921F0c7d] = 1;
        freeMintAmountMapping[0x46570358D6202Cb2c74c02e5722a65863787DDf0] = 1;
        freeMintAmountMapping[0x461B854BA646F97aE209FFDe8ce383b49e4522E8] = 1;
        freeMintAmountMapping[0x45B526788E9AC6DE32fC9364484241677aa03B58] = 1;
        freeMintAmountMapping[0x44A756D6E0B9B01B79e2709b53d1f5D6f54830d2] = 1;
        freeMintAmountMapping[0x434f7C4a1470a03494dFf3530037082d086738a5] = 1;
        freeMintAmountMapping[0x4269417EeFa4e8F515b67C63974474993062cE85] = 1;
        freeMintAmountMapping[0x423A65Cd9F3AbC065d1fCfCD64780903E2842d10] = 1;
        freeMintAmountMapping[0x40cB3AB5930FF6cE0375c37E17941C65eE6323fC] = 1;
        freeMintAmountMapping[0x40c54783FeADE03d09C49ba76598efB1B43F9C44] = 1;
        freeMintAmountMapping[0x403Ca284c16795263c704F3411360A5A11cE91DC] = 1;
        freeMintAmountMapping[0x3E1dc89ab1E3BB8A64bB0f65b65b404f1BF708c3] = 1;
        freeMintAmountMapping[0x3D0fC6E351FaEeD03aa179308fF4a7960b808bC5] = 1;
        freeMintAmountMapping[0x343126bbDE06A8BCBBD71eB966705f5a8a12EB8d] = 1;
        freeMintAmountMapping[0x33fe4A6B3E79615067E75bDa042F8820D7666d82] = 1;
        freeMintAmountMapping[0x3340DE8618888ba23DD1CE5AF43C020cF2605023] = 1;
        freeMintAmountMapping[0x330E705D7c1340BE603bCde12CED193868De7739] = 1;
        freeMintAmountMapping[0x2fd87ACfee01B5311fDD33a10866fFd14c4aE36B] = 1;
        freeMintAmountMapping[0x2F9087D8A9701DD7adEE061823BAb529877a1043] = 1;
        freeMintAmountMapping[0x2d5a1190b6c1bf13b256210A65F625681b488110] = 1;
        freeMintAmountMapping[0x2D1AEa14Ca5A10d1D7532e909F94DD0d5E16295f] = 1;
        freeMintAmountMapping[0x2bdDC6B3eb3aBed4A6C362763e5CF8E9f9037DbA] = 1;
        freeMintAmountMapping[0x2B8b0C7E42Cd82C92d4Be78e2dD1F1Af4ddE7Cce] = 1;
        freeMintAmountMapping[0x2aC651150309ad369d5b7278bBe11FF7e76B5EAd] = 1;
        freeMintAmountMapping[0x2a8482a8e89C1D4aCdDA32FD232EA425eeb87e60] = 1;
        freeMintAmountMapping[0x29C07AA7105d2869a17dD3821bCf1E3Ad6a3f682] = 1;
        freeMintAmountMapping[0x27e7610DC12a2aB5E219043FB41AbC313Cb11b5F] = 1;
        freeMintAmountMapping[0x27a2AdC97246eC7580388bF20d19f889d56388e9] = 1;
        freeMintAmountMapping[0x25dE611cea5cA7Ba0668f2D8Eb3068ba72F0C30d] = 1;
        freeMintAmountMapping[0x25885B2f3d6521022523213e208920A9F3C17Db1] = 1;
        freeMintAmountMapping[0x243119dbef6Acffe4420C2b49F7a3EC2f8f870F5] = 1;
        freeMintAmountMapping[0x24169E61432CeaC043CbeA388BD5b51AAf8B2B1c] = 1;
        freeMintAmountMapping[0x222c52726f0D1d4D452F69C87f38429a09229f1f] = 1;
        freeMintAmountMapping[0x21116c1eE3D766be50377c190056b2419946Fc3e] = 1;
        freeMintAmountMapping[0x2099296f14173b27bbe49F9232d3eF95dfD1a259] = 1;
        freeMintAmountMapping[0x20827652c6dc88015C66448A6eC5cf74daeECC4D] = 1;
        freeMintAmountMapping[0x2076A87D5968fB96d24f56315cA9014897973772] = 1;
        freeMintAmountMapping[0x2072C081C77A476c28d4B2e0F86ED8A789BD8078] = 1;
        freeMintAmountMapping[0x2065685879367ff787F19bC0a2BBAE2e284dFCe4] = 1;
        freeMintAmountMapping[0x1FDA16d5111f639D20ac78b31742b152729b421F] = 1;
        freeMintAmountMapping[0x1f5066F3a87c117075F57eb3E9839F3999977FDD] = 1;
        freeMintAmountMapping[0x1E6416545d3d520Dd0A512CBE8787cA61E8491bE] = 1;
        freeMintAmountMapping[0x1DC952E7232A25340Ecdf9Ef722D3ceee0f4beD4] = 1;
        freeMintAmountMapping[0x1DA399FEBc4d2aC3841f3dBBf1201078Bb10520E] = 1;
        freeMintAmountMapping[0x1D028D6fFEFbc9ec660aA30385733415F20f78fd] = 1;
        freeMintAmountMapping[0x1C23FA52c7e4B1eD0aa70611d918F5FD20E2b039] = 1;
        freeMintAmountMapping[0x1b42eaF5FA6cBe192FF7C43615dfFbc20541aAb3] = 1;
        freeMintAmountMapping[0x1b3b107FBb9A4530bA8b0F764F63f62a53788e4a] = 1;
        freeMintAmountMapping[0x1aa42256135E53Ebd86f19699A62702B57265869] = 1;
        freeMintAmountMapping[0x1A3326bf12589eE53b3f796c9D376EA3df60d459] = 1;
        freeMintAmountMapping[0x19D89263CaBC26030178955fF5bABc2641379f8C] = 1;
        freeMintAmountMapping[0x19206CC9eb256F611b0985d18867d1Cc6ef80EE1] = 1;
        freeMintAmountMapping[0x16dEaa7aDEe82463ea617dfb931a6bf2B41bf428] = 1;
        freeMintAmountMapping[0x16414387406dE17f3eCB0e2CAd263C9D04553f4e] = 1;
        freeMintAmountMapping[0x14e083f433308170ECB3a2758D51332a0B833e10] = 1;
        freeMintAmountMapping[0x14ad8F58d7EbA4B50689c9165af9cfbceF706398] = 1;
        freeMintAmountMapping[0x149435d8E44B7f0bd12EC849678Ae55c4951027E] = 1;
        freeMintAmountMapping[0x1479B108407e7a9DE802D14B3e55B2962a0f26bc] = 1;
        freeMintAmountMapping[0x145dBea397f71512Ab97cbbF080d74D3bcC29176] = 1;
        freeMintAmountMapping[0x130f994E85B9c81Aa8AA63e25fc05fF27f16Ef20] = 1;
        freeMintAmountMapping[0x112CfD399062161dDaEA99bC30c97013d61927c5] = 1;
        freeMintAmountMapping[0x108BE80b8f2E44034171723AC720A7177b002FAE] = 1;
        freeMintAmountMapping[0x0Feb8c649fbE79e576BCc0857e2aEa7e4359561a] = 1;
        freeMintAmountMapping[0x0f138831Aa4a28E298CD120D6338dc815d93481d] = 1;
        freeMintAmountMapping[0x0Ed35594FDb513f955cddE0B0B54a12d619d109c] = 1;
        freeMintAmountMapping[0x0cD6139A8cc6Cba0a9067e9E5fF13FEeBF95Ad47] = 1;
        freeMintAmountMapping[0x0b386696fEb58e5d30f8036AE0ee663857c9C150] = 1;
        freeMintAmountMapping[0x0b1F309FBd3D038576Df6d205bc6c6c13ebBE3B6] = 1;
        freeMintAmountMapping[0x0B15d768985d35039CfaBFCE8680AfD535fD1556] = 1;
        freeMintAmountMapping[0x0b122c9d7B1E0dc305feb4CBfE97646d02a10bc6] = 1;
        freeMintAmountMapping[0x0aa22bdc1F0A6850928750306f697E7394C6aB38] = 1;
        freeMintAmountMapping[0x0A11605280c54F62F4968DBd7078981006716355] = 1;
        freeMintAmountMapping[0x098Ca151fc2E112459DF0f5F88f85AafE605F0fB] = 1;
        freeMintAmountMapping[0x08113b0e3f4D02b6ACB9073B4acA8FFaBcc740A3] = 1;
        freeMintAmountMapping[0x079754F9A459716B36ECa1EFb72b3ceADDd8E0E7] = 1;
        freeMintAmountMapping[0x060AE6eb0AE0C2A1aA37fe6Aa43711D46EE19B31] = 1;
        freeMintAmountMapping[0x05bE7B75Cc3D3Bf89cb548F74D37d4367dd5544b] = 1;
        freeMintAmountMapping[0x0591763c6fc03C991643be4CAe8BC42e785896de] = 1;
        freeMintAmountMapping[0x04e45DC9785ceCd1a2CcFb40ad70ad70B3f10D45] = 1;
        freeMintAmountMapping[0x03a965fA0283F5E5A5E02e6e859e97710D2b50c3] = 1;
        freeMintAmountMapping[0x0290d2853585c35550F7d1E82Ca9b9BE497cBBfD] = 1;
        freeMintAmountMapping[0x019D239a36a4fd4828253E8EcCaDD1dD2D0dd147] = 1;
        freeMintAmountMapping[0x004fb342F4B36e504f667a4fe6932E0a1e20E529] = 1;
        freeMintAmountMapping[0xFd55D2558Fa1a8D6321336E681d4bE2048AF4117] = 2;
        freeMintAmountMapping[0xf6B56fBb88Ebc36F16835559E5aea990855Bb693] = 2;
        freeMintAmountMapping[0xf23B45a630724Ccba2AEA077B743F9e43465852E] = 2;
        freeMintAmountMapping[0xE8AbFe0685d7596c78438eD0B68c709b83486052] = 2;
        freeMintAmountMapping[0xE745cB3c5152750C63e2eD81510E3Edc89C3bcfa] = 2;
        freeMintAmountMapping[0xe1b38E2c33acfd66283334CfFbe1dA1a69e02F87] = 2;
        freeMintAmountMapping[0xE19216644ae5E188DAAbe8C9FC515Ec4783D52cC] = 2;
        freeMintAmountMapping[0xCE75584C49c4b5A3d232c16230a384497f91019E] = 2;
        freeMintAmountMapping[0xC74D61485be0647E388ff351ABFBAEEBc8977C12] = 2;
        freeMintAmountMapping[0xC264b4a5fb07202721eAaF13E756a91A34C409C5] = 2;
        freeMintAmountMapping[0xBEA72d78Bfe1d9c7F10Adbfd13f0476101CD00Df] = 2;
        freeMintAmountMapping[0xAf41939181902e68865186ae1f61e42338ddD754] = 2;
        freeMintAmountMapping[0xaa77d1a289F45F494edE8D2C93022b5E88baed2E] = 2;
        freeMintAmountMapping[0xa8E035f1D0Ef3f9EeA02688D1D64e7FDaA91970A] = 2;
        freeMintAmountMapping[0x98F202FD845AC175AD2d62bBe2d8684aff8AEcbE] = 2;
        freeMintAmountMapping[0x9854153589d671742d9B70b079984178db5436C0] = 2;
        freeMintAmountMapping[0x971DC6BB8122F51375e1b8c17212f987Fb6Db306] = 2;
        freeMintAmountMapping[0x8F31dd09226c5f82EdC414b3382AD9C404dE27Dc] = 2;
        freeMintAmountMapping[0x8dB5824Dab9848Ea740Bc06133E59AE679DE857f] = 2;
        freeMintAmountMapping[0x8aFe8F0b3486bbf3A0b6c785D87D9B972bD22F1D] = 2;
        freeMintAmountMapping[0x847A643AD8d71569329E8B133a68291696D9ac4B] = 2;
        freeMintAmountMapping[0x83e958aa52023ec40dE1dC30276adDEea6de4028] = 2;
        freeMintAmountMapping[0x6ce0DB14A58c81aaa13Cf0764199D206BD25312F] = 2;
        freeMintAmountMapping[0x5Edb7A2a7067Cc95c58C073d0c9a8B999dCa3b29] = 2;
        freeMintAmountMapping[0x5eC0f7103c93cbAd1A5Ce240D691f47566233134] = 2;
        freeMintAmountMapping[0x5cd796f22119bFb027b8ef25853923E59E950524] = 2;
        freeMintAmountMapping[0x5b6e4330ad93B8082d646f1684dcB32EC975289E] = 2;
        freeMintAmountMapping[0x58CEde4254a9d04464f11e7237a6f5872B84f364] = 2;
        freeMintAmountMapping[0x5632F9275B385eF8c51AD9956dB681776a26Be28] = 2;
        freeMintAmountMapping[0x561D4C86576C9E1675F1f77318ECfc18EC85D9Dc] = 2;
        freeMintAmountMapping[0x55fA6481A31f1963d5d6ab16d16E72d7225c3E8b] = 2;
        freeMintAmountMapping[0x5411Cf794c9cE7d956F47074A85411d597C83CD9] = 2;
        freeMintAmountMapping[0x52e030bCc69161e1A1f420485F6AEa6Eb0D97733] = 2;
        freeMintAmountMapping[0x4fedb138A7D7f1427768EF5747Bb8556b352e764] = 2;
        freeMintAmountMapping[0x4F6c919A4dc3D5870c51A05762A7088f5943Cb45] = 2;
        freeMintAmountMapping[0x498699432B19Bb8718c7f5BA61f1B2a116583803] = 2;
        freeMintAmountMapping[0x484aBbaA00Fc5A703dA1Eb747315660C11cd7103] = 2;
        freeMintAmountMapping[0x40B7Bea71f83a94c912E4C0a58564459D4Dd4cb8] = 2;
        freeMintAmountMapping[0x3d9fd60AEC344C20Fc0ef161f59225181730f47B] = 2;
        freeMintAmountMapping[0x35cCEd5CdF2483848EFc48Dbf6c5C4fdE225522D] = 2;
        freeMintAmountMapping[0x30C71b427b1822cbd95939851E61cF896d03f2e4] = 2;
        freeMintAmountMapping[0x2EE6B129a671cD805b1FB1e5ff70587E8F551c42] = 2;
        freeMintAmountMapping[0x2e40eF7526B1c86A19005346127d3C0FC2EC9019] = 2;
        freeMintAmountMapping[0x2A84c441f6002b2310D4925232676E6Dc8E78A40] = 2;
        freeMintAmountMapping[0x24379F6561726956fF440f72713cc31Bf5F6d34a] = 2;
        freeMintAmountMapping[0x2126d8d321fc638E1fcC58BF74c9D00156397524] = 2;
        freeMintAmountMapping[0x1Fb2DF535d1c7969a2964F49E25cE3a05bf45A91] = 2;
        freeMintAmountMapping[0x1F5705e882b7B190538508bF83485564fF9a0e6a] = 2;
        freeMintAmountMapping[0x1d6e4d039A259390Bc71BD2a1E60861BD6D7d50a] = 2;
        freeMintAmountMapping[0x17982d4224d781187617e01A4b7f4Df7CbcF317b] = 2;
        freeMintAmountMapping[0x0E644De3505B7b024f4d4C37B093a62CCF82af16] = 2;
        freeMintAmountMapping[0x0Dc1949E3a7282c293A491b1b66756aa65DE7e55] = 2;
        freeMintAmountMapping[0xee610163862968E5bC6d4d55493DE6a64222C07c] = 3;
        freeMintAmountMapping[0xEd44CA68bA2375A29492A860DDd5d41B4Db46e56] = 3;
        freeMintAmountMapping[0xeC1d11D899A8Ed5fcC1a03Ca9ce14Bbd06B24d97] = 3;
        freeMintAmountMapping[0xdFc85e3409Ea08ee0AD05A9D9Bd6f1B352308392] = 3;
        freeMintAmountMapping[0xc6bD569dBf8abcf20aBBbaB6F58AAEef2a22040e] = 3;
        freeMintAmountMapping[0xA79CaAbAf320A8Fe645C1C7290f14276c2a477d2] = 3;
        freeMintAmountMapping[0x85ab567d13086cd03976765a2c9a49e8E1DA9187] = 3;
        freeMintAmountMapping[0x82d2f81F61556f80bcDA77491B3CCBa4cfaE1142] = 3;
        freeMintAmountMapping[0x7B0f3E1eA31A731Da7E35628f1D6D1a772B8F8f3] = 3;
        freeMintAmountMapping[0x5e93303aEadccf996bd77EB91A9FaB241880334f] = 3;
        freeMintAmountMapping[0x4f556D724b1f7EFF4a6efAb5Af3a647f3dEbE48C] = 3;
        freeMintAmountMapping[0x4ADe4038736Ed186bee80f3fA8a7Bf931126F72C] = 3;
        freeMintAmountMapping[0x221995e6B982a5a9023df2fc4E4e00EdDC54010b] = 3;
        freeMintAmountMapping[0x1d7A3E7366d84F78E616dD805B305AC402cc5a6b] = 3;
        freeMintAmountMapping[0x002841301d1AB971D8acB3509Aa2891e3ef9D7E1] = 3;
        freeMintAmountMapping[0xE794cE89b1bb16780be977fe7a246bb6E6b256e0] = 4;
        freeMintAmountMapping[0xd99694fD205Cc2c9d5EBFFc5fD5ca5cb5416Ed03] = 4;
        freeMintAmountMapping[0xd239815bfCC6C70358927437429789Bcf0ac810D] = 4;
        freeMintAmountMapping[0xc8Ba8bBd50D10E3078BDf8f475516C5b02175D2C] = 4;
        freeMintAmountMapping[0xC8B51A47b7eDD0681276444770Bff117957A180a] = 4;
        freeMintAmountMapping[0xB4a4b42081Ca39F07c62F0A3f4bee9687559d7A9] = 4;
        freeMintAmountMapping[0xA672273865810234fAe493C944fC3a000f303f60] = 4;
        freeMintAmountMapping[0x9f819b76f00DA9dF29b4D2760cC888b74F17006C] = 4;
        freeMintAmountMapping[0x64541D14fC2ba37bFfCd209b5173479D41d1513D] = 4;
        freeMintAmountMapping[0x0f01eb10c9AfdC4A8094088793C59d04FC6dD2a0] = 4;
        freeMintAmountMapping[0xbD57dE27Eb6b422350c262f0e451d31a65e3EFe5] = 5;
        freeMintAmountMapping[0xa961a6375dBE7B14Df4f0cD426552C5a7709eFb9] = 5;
        freeMintAmountMapping[0xA8eb2ea3A233bC7Af4043DF453191a0939Bcb286] = 5;
        freeMintAmountMapping[0x9139Cd9146aB97162334205563662412a5D62CB2] = 5;
        freeMintAmountMapping[0x5f2952fF0E30f272554CC1f74884261D561ae979] = 5;
        freeMintAmountMapping[0x501790C6890dFA43c264AeE4Ed9aA5E116d0A0d4] = 5;
        freeMintAmountMapping[0x2aa92Eb0024e3F54c35dF1b1d6879631241222f2] = 5;
        freeMintAmountMapping[0x2664d2b96bd52b0E3eB08DE99C726D694f23D34F] = 5;
        freeMintAmountMapping[0x221a11F813e30CEf5399F3D584c4f3E00f5C0486] = 5;
        freeMintAmountMapping[0x115CB6Dc6223EAe44a8ce4F4CB8407f24F6Fd70f] = 5;
        freeMintAmountMapping[0xfDE0E287b589Ee479bD188F717bd566903da2C87] = 6;
        freeMintAmountMapping[0xFb2520759E6Dbc4696111a8Ef18bE569fe6b0E3E] = 6;
        freeMintAmountMapping[0xc1b853f9B2f3aa1e0f853901aC3e340f8bEa33B3] = 6;
        freeMintAmountMapping[0x9Ee6B94b4Fd48A75178D57bF5eb263DA709b8dbb] = 6;
        freeMintAmountMapping[0x2494062FeBddc66a073C00ac958d5132547eC449] = 6;
        freeMintAmountMapping[0x97eC8b90856649a0B61d09E2151b869635012724] = 7;
        freeMintAmountMapping[0x50871234728bF8d881d0f4e4B718080f71044185] = 7;
        freeMintAmountMapping[0xd18c458D756b8F6eD3742cc6a594D3A2B576Fa8F] = 8;
        freeMintAmountMapping[0x5F1A688C94971e2b7Da2b1a030947DeF4D7172e7] = 9;
        freeMintAmountMapping[0x2C7f5C7cD4b7bFeE9d4216B29e1A61D2A0a398F1] = 9;
        freeMintAmountMapping[0x57B27fC6EfF1c5DbDeC4a615cC88D43A583772d8] =     13;
        freeMintAmountMapping[0x4e9A80Ce5E4B0dF0d324aCaFebbbB2332Cb38Ff8] =     13;
        freeMintAmountMapping[0x44FaA42Da632DEcbdC7D40231Eb115DE6CB60f06] =     13;
        freeMintAmountMapping[0x5687e44feb0401d6FA56a26D01b253cec63276De] =     15;
        freeMintAmountMapping[0x4AA41136AD53FfB0f028dcA371D7B3c87305423D] =     15;
        freeMintAmountMapping[0x4E98dc956DE2B19Df8363c6Fb1af283a5600d80F] =     17;
        freeMintAmountMapping[0xEe50ab320e99c3a291A16E52EBF5409f122CBD67] =     20;
        freeMintAmountMapping[0x13c9b8215E03f4554fD066468700bf6a496912Bf] =     25;
        freeMintAmountMapping[0xDD178e387006425eC15CFF07F7e38A37BcC92a8D] =     28;
        freeMintAmountMapping[0x5ED0Cb5F507cF82F5A1b84E715b040fA361c433B] =     34;
    }

    mapping(address => uint256) freeMintAmountMapping;

    uint256 freeMintStartTime = 1671973200;
    
    uint256 freeMintEndTime = 1672225200;
    uint16 freeMintMaxAmount = 800;
    uint16 freeMintCount;

    bool revealStatus = false;
    string baseURIbeforeReveal = 'https://freemint.zoo-man.com/br/br.json';
    string baseURIafterReveal;

    function setBeforeRevealURI(string memory uri) public onlyOwner {
        baseURIbeforeReveal = uri;
    }

    function setAfterRevealURI(string memory uri) public onlyOwner {
        baseURIafterReveal = uri;
    }

    function setRevealOn() public onlyOwner {
        revealStatus = true;
    }

    function setFreeMint(address to, uint16 amount) public onlyOwner {
        freeMintAmountMapping[to] = amount;
    }

    function freeMint() public {
        require(freeMintAmountMapping[msg.sender] - balanceOf(msg.sender) >= 1);
        require(freeMintCount + 1 <= freeMintMaxAmount);
        require(block.timestamp >= freeMintStartTime);
        require(block.timestamp < freeMintEndTime);

        uint256 tokenId = _tokenIdCounter.current();

        _safeMint(msg.sender, tokenId, '');
        _tokenIdCounter.increment();
        freeMintCount ++;
    }

    function freeBatchMint() public {
        uint256 freeMintLeftAmount = freeMintAmountMapping[msg.sender] - balanceOf(msg.sender);
        require(freeMintLeftAmount >= 1);
        require((freeMintLeftAmount + freeMintCount) <= freeMintMaxAmount);
        require(block.timestamp >= freeMintStartTime);
        require(block.timestamp < freeMintEndTime);

        for (uint256 i = 0; i < freeMintLeftAmount; i++) {
            uint256 tokenId = _tokenIdCounter.current();
            _safeMint(msg.sender, tokenId, '');
            _tokenIdCounter.increment();
            freeMintCount ++;
        }
    }

    function ownerMint() public onlyOwner {
        require(freeMintCount <= freeMintMaxAmount);
        require(block.timestamp >= freeMintEndTime);

        uint256 tokenId = _tokenIdCounter.current();

        _safeMint(msg.sender, tokenId, '');
        freeMintCount ++;
    }

    function ownerBatchMint() public onlyOwner {
        require(freeMintCount <= freeMintMaxAmount);
        require(block.timestamp >= freeMintEndTime);

        for(uint256 i = freeMintCount; i <= freeMintMaxAmount; i++) {
            uint256 tokenId = _tokenIdCounter.current();
            _safeMint(msg.sender, tokenId, '');
            _tokenIdCounter.increment();
            freeMintCount ++;
        }
    }

     function tokenURI(uint256 tokenId)
        public
        view
        override
        returns(string memory)
    {
        return getURI(tokenId);
    }
    
    function getURI(uint256 tokenId)
        public
        view
        returns(string memory)
    {
        if(revealStatus == true) {
            return string(abi.encodePacked(baseURIafterReveal, tokenId.toString(), ".json"));
        } else {
            return baseURIbeforeReveal;
        }
    }

    function setApprovalForAll(address operator, bool approved) public override onlyAllowedOperatorApproval(operator) {
        super.setApprovalForAll(operator, approved);
    }

    function approve(address operator, uint256 tokenId) public override onlyAllowedOperatorApproval(operator) {
        super.approve(operator, tokenId);
    }

    function transferFrom(address from, address to, uint256 tokenId) public override onlyAllowedOperator(from) {
        super.transferFrom(from, to, tokenId);
    }

    function safeTransferFrom(address from, address to, uint256 tokenId) public override onlyAllowedOperator(from) {
        super.safeTransferFrom(from, to, tokenId);
    }

    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data)
        public
        override
        onlyAllowedOperator(from)
    {
        super.safeTransferFrom(from, to, tokenId, data);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"OperatorNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"OPERATOR_FILTER_REGISTRY","outputs":[{"internalType":"contract IOperatorFilterRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","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":"freeBatchMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerBatchMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ownerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"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":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"uri","type":"string"}],"name":"setAfterRevealURI","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":"uri","type":"string"}],"name":"setBeforeRevealURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint16","name":"amount","type":"uint16"}],"name":"setFreeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setRevealOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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"}]

60806040526363a84950600b556363ac21b0600c55610320600d60006101000a81548161ffff021916908361ffff1602179055506000600d60046101000a81548160ff0219169083151502179055506040518060600160405280602781526020016200cf0360279139600e90805190602001906200007f9291906200934c565b503480156200008d57600080fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb660016040518060400160405280600f81526020017f5a6f6f2d6d616e467265656d696e7400000000000000000000000000000000008152506040518060400160405280600381526020017f5a4d4e00000000000000000000000000000000000000000000000000000000008152508160029080519060200190620001299291906200934c565b508060039080519060200190620001429291906200934c565b5050506200016562000159620090a860201b60201c565b620090b060201b60201c565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156200035a57801562000220576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b8152600401620001e692919062009441565b600060405180830381600087803b1580156200020157600080fd5b505af115801562000216573d6000803e3d6000fd5b5050505062000359565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614620002da576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b8152600401620002a092919062009441565b600060405180830381600087803b158015620002bb57600080fd5b505af1158015620002d0573d6000803e3d6000fd5b5050505062000358565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b81526004016200032391906200946e565b600060405180830381600087803b1580156200033e57600080fd5b505af115801562000353573d6000803e3d6000fd5b505050505b5b5b50506200037f620003706200917660201b60201c565b6103e8620091a060201b60201c565b6003600a6000722841301d1ab971d8acb3509aa2891e3ef9d7e173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073fe4be01da4fbfd47650eb2c7bd37d09607d1337f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073fe2cd171379139bc0d895da75464aef8460b340073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073fdab2e988cf8242afbdf208f9368868d050cc25373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073fd52c7f77c60dd0adb11c2e631a9c9a7efebf8dc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073fc5f6ffa7007900654fa9e974be837b26abf0ca273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073fb29409dd2c76157a6f8f7f06fd51630adaa1be973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073f6e512563ee2c8fc3ae713dc41ca9175fefe250373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073f661c19c314292e24564f8eaec220da9607873ba73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073f58808bca3c49bae910c693155f3427ce539df2a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073f522ce5819ca0a9b922c1262e7b8542d14f0001a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073f514a75f48364fff1276cdcf23171a8f0fb5998d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073f4e54339403cf8201b55aa97b3b3bad8221b239c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073f4548503dd51de15e8d0e6fb559f6062d38667e773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073f406aed3369614123eb6c8ea6afb12995d49dbdb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073f33621a6612d789f31cb39130e8e1239213ef2aa73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073f2f3f58e80340918f85a11e090311e1a96c1015673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073f2f39f813eba0b580887199632c91308fb54cf9b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073f1c78c04eb0f2db43cf499cde23be74230d43b1a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073f15b2d971b9b320d931b5264df47af3b4db8298173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073f08a26090d1cdf2958299a6479db4d9f3461611073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073f05b026855c8fbc0a2682cbb1b610bafcf54a04773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073ef7ce9855aefbcd56df4e54bc63fa09a1cfc5f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073ef1dad2b5345a25ddf0ec504532ad21ab9efd24a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073ee38e54de56a9d3878267fb26697adb99094733073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073edaf3af3220d9bf6083fbf03f52e9b1807f9ca5673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073ed937a015c832b3c067e28c68fd980100175e6e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073ecebbbe3e40175c2b5a441149f855f0e215acbcd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073ec79f29c30bae7f31cf0462e0658f9f0c368f45473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073ec2ef0657495611906bcb32dd98f6b41f50186e573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073ec20527c933de96c37822384828ed6be1d8cd80773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073eabb8945bf334c05144a13df75eb76d047a7eebd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073e8f2754fbf84db99d1b94fe3507809469e01d6a373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073e87cd0136d604b34410f8cb3e2dc7dfc04cb9bc673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073e69e744949dc0a6af1a3381b41333c9b91302ec473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073e5d8f6d0bc8e5bd9751f611aeaa6babcd08c7d8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073e51dc2090f49e01857bb08a7b6ada93a0bd43a1a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073e49f7b329621e4e8dda916e02c0d9e0651b5877573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073e49d5be6c9f8ff32bba6fa0ec26c8b9bbb23b0a873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073e440964985d8005a5f44ed830fb3acfcef15dd0473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073e34a3dda68988076f1ac02b7b62e9a264525615e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073e2ad9b510407cdc4e383c020c2962ecb0a4f5bea73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073e27a311ab12df25e2885e7bf51cd494a6488b38073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073e0bc83041bda542408edad51263f5d41955d1f1773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073df6e1e8945bcb7f1b17f4d83e36ab79a5d72460773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073df1424d814c223769def829278a54f9562ae10ab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073ddf21318ca81f9dcb3f143b40b95c72328c4689273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073dd2cb738e8f987579776c6d25b4f769bf652979273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073dd12a0c04be3ff962e7321f11bc08dbe227c25ac73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073dacdb79016cb5e155ea960e7615b3a7796420e6173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073da69fb774131cdce04e8f8ece3c67b20815bd71e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073da5bcb02b4ef1850f9781153caf1b7e7c268ae3b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073da32d3ee3b60ebe8f9d296a34bc628149a5d320c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073d75c07b56cb3e1e47adc22944b5e78efbc242b8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073d63520f915bb5e13cc07cd053de320dfa661227d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073d4b1623e464e8bc0260a88e09d933f895cbf33be73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073d46486757b7d7a3f45e7364a5defe30247e93a9a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073d4076fff8b52e3590486dc772f9ab10fe8dd8a2973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073d1d2262d1fea768fe0dc3c26c5b0d9174872700073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073d073974ff18df18b56f70e69dfa0893b8c38576473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073d06aa2838fdd54d12fe366dbad6bb7ec86d17c5e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073cfcb18a76daf95633ca762c5e46ddb5e04ade31f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073cf3223ca96c4a3cbb50e40ee376b0a5d86e829e273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073ce0233903111adc2d90bde8aeeddf6c77f731a2073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073cd10c01d455a5b50737d2b734196766fd0b4b7ee73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073cac61aad8b8aaae87d1ba2f680871a95ddd0f8b173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073c9f2fe88250098838e8a36210e9311015ef62b4873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073c8331db1414bdf20a88f0192351d3ecfad11aac173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073c67c21d1fdff7afb241c8c829e40cd289f8eb00173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073c5eda85d9c9f62f34d807d9a1ada3a1c59f3ad2b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073c34b1b511a14bff1d54e557c0e37f7937509ea9773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073c2e7d8c328f156d99c4cde1ac6d6b03d2d41a9ca73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073c1b4bb6260e68e339cf54cc2733aeecc0f8295af73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073c0658af26f21c5b8b31951b38c69cc465116ad5c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073bebf53131e47db582f6453a7cfa8827d59f7a6af73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073bdc674b2c585da3c80e50e48f6b73690dfcafebd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073bd0de205c5ab42257e63a5f9cc7fa3b0e2f9a3ca73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073bbc8bd583430abb3af7b24a29bfeec44d2d9e97c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073bacb4db3dcc49c9493163ef9eb3e7fb0254a0d0073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073b9b503c8c6aaf2ff16e16f069053da2155a03c6173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073b92aa8895bddf37b1f3bc315aca6b74f17e973cd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073b9165f97e0a28485c4d54d29206b25627b44be5373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073b6f9ecea3beb098981110c55223135c94f92c67973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073b658ee7c91c927d5cbb5251ead780d7b9c6c455b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073b4d9a40712fed064e90dc3552d0ceaca6c88855173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073b4ac8a8e9c61ac35d00469842c65dc0cd9bca13073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073b31853fa4df39dffe598f835d0b26174430e285b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073b237d44b7c9f5c0b175cb7d205b97a19e958c51473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073b0dcaccc43cfee786acad6e250cc8cff6045b19473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073afc3b89f14893f5bfa33b858b6c318394efa2ade73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073aea31abfadfb9c8b885c54e751c0d99cb066213773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073ae85d36bc312288b3444e81f6502cd238c137e3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073ad29f6dd5a03105813ad0d879383f818c6b5fb9973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073ace93d27680d27d8c2181ecc6afbda93cd678ac373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073ac9f69978ae542b4bce62314facb4a790d2102f173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073ab4753de403d0861590680c6ffc8329572d54d3173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073aa2f9ddc1d5981eb715168ae09121f08228c483e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073aa196af22025958430d5ef504a27b4e7b05bbd6873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073a98c8fc9e02069f8cc305238eb001ccf647e810573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073a73757c41995e93a0af5aae7828ae3369752d09e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073a70c08aa66365cefd9b4c8af0c4e8a366e595d6c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073a546ee534805f9968e5a84a9cb48860779e45e1373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073a4c3c659dcbf3021d32e378e164b0d1c339843de73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073a49dfd905efb545019eacbe25a4024a7c70866c873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073a45e81919bf7563f39b99cf0603a28175276b60a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073a1ac9882c1f2fa810eebad1adee4b71ee2454a1973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073a0751827da7a5ce235d85694164382ee8920648d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000739f61b0ac23747af2734bcf3a8eef0bbb82932cea73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000739ee987f7d547c036901ad3dad30671cf54cccc9273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000739cafe57302db8334de78fdb0244ea536911908c573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000739b2e6dfcb85237eeaac4a95968b616485ee53d8e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000739aa7cf645442097f134902b0cbb595cadff2496073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007399f277d2a41113fccd60d3bd874fddd67f0204be73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007397f5e4dcef753df248479d5150df177355453d0073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007397c544bb08bd793eb56cc9452d15e77f067a66bb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007395d78ba3b80d76740732ba4b02bb3887c880a56273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007395576b44757263150e1224da24d6a6a0edc81cd673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007394b4d1a7cf4d46e5f52c7f5b6e7e63926fbe6d7373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073945475af27f187506a896ccdd2cbae103d6490aa73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073939bf69c9d3376290922e45466d96e5200d33b6373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073934b19e396566d3aa45ebeb611325f899951ada573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007391adb5b476418d7f70a112be8a5166020769919a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000738d8e99bfd8d31a9812329824635e3ea7800b640673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000738d82fc0e884e4509d01884263da76f10bdf75f9c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000738cacb17f18ddf34ea35be228f30a2c41e8a11d7573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000738c1584666c98257a5872e6205b6de631b330182973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000738b9a364581edd2520d355002d7049568ac64b71c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000738a04de446d1bbfa3f8f6c41442aa62c719157ef873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007389ea3681fa7a838084b28c1bee1e0de1c2ce1c1173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000738871d265a0c8df287cf9a76dd8f6ba513dfda3b973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007387f06a9be97ae026220b24389095afc2277af93e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073870ba521b5830ce144dd0e824da837269491c8fa73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007386573536ab37e0dea5b2d37247ad68fb3c66880373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000738427b5ae23291f2c5d1d85abf6afae48426f357c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073829b2de9c1b1e18a94f3c71aa9fb3832d4c61df573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007381f5b2538a5762467f256b0e5a07c0ac812fde6773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073819fcccdeeac99405348df192601dd07ef1d77e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000737ec1b412ce73254b2a965f1251837f52e30b921773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000737e5d1ec3cd82f73bca98727194c70b67d27f42f173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000737e01ccb7a89dc5417c3f87cc738ae4db2c21917373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000737dfd472ee9fe7ca9afc81c1bbb155f0bd635b96873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000737be0614bf06cb9b6f72518ccbe550053c36127c773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000737ba721159c92ee766fcd578e06d488f1916df17d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000737ad304e9596881f175b76b856fc2ef761927c61a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000737a2234db7ee77589da07d593f1563ad83f0a125373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007379f910f11a2b3dab380b0b6c1e75edfabce8423c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007379e7cf2c7f085a39a0f0d40e30de9b759862b9f773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073797c81efe7a4ee6b517eae06cab4eb866b5d33f873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000737962f5959633405fca783928e41fe933dceb9aad73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073790d7ff1555b9b951aef8c59728aefe2a326dea073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007377c219f85b6d20ba6139003c5d13ff985924504f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073761e4de49b3cbb53972f8372c4cec44e4d8b36ec73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000737413a533d57223c222ba0aa37a09a2e73387801373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007373f55d0fae1a4a95769e4b9f0cc18b6106a32d8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000737371262598d7936fb0b5b6d46f12611821f3689573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007372e22deabeaeabdd559ea7b741ef2bd77d08439e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007372a4d7a1e496104185c558d13230a2c075ecbdcf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073729da52ee3a8f9a2053fdfe877e5c281ce8785df73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073721e02fbe66c1ede165ac3abb335419fc3f374ef73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007371c0dd41a4b35596399d647df6420c6e847d23b473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007371a5a3aa039fb63dba8ce2e3c3a3e2dab81a593973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007370a5751ce33de4436b1e5935772afa007382a78b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000736ebe842f91d4f0a2d28cf273bcec8e34247b259573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000736e448ac7c20e3011bb15a9f83cce71ac0030380573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000736e1324676f515bcab14c26c5f1d70ca6172ca45573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000736ab8ea1b7852589cccdc80ac5f6c21afad74ce3873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000736a780c771281322c8e0bbab55b935c1bb70f66ec73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000736909fe2c20fea0e84077e2c26709a42fd482fab273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007368174da16a168122bdddd93456f97b089068d46d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007367a1ee75aa95c5c1e7341ac81e0ca30d3eaafbc573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007367155a71ec459c595f3a6eb13520a78f8bb90b7c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000736609ec70bf04f20ddd720470b2feda600427fc3a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000736571c1643f76945926fa93ca07ab6104df2b6dd273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007364ff8a32bd2b2746ed2a42ce46eb1bd74c59f70c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073647a36f2f04f5b54cb4c8022b9026f7fbdad7f1b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007363a71b19b70f05cf6b5a79da0d717ef46de9755273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000736321f49b3a9182be7cb57de40bbf8117e37668d273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007361ec94f740707f8ce243b80f765a2b95196f1c5a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007360b2972658a600e2d0a39db4af1f9fb11097b8a573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073607e6697233d045ee6a586b303630298dd80515d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073603bddc4d7fe9681dcfbbdbd99c0b152d684ba4573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000735e85c03ad8b2c86018d0eddfaebdd55efdcffb0d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000735cd935bd72ebfbf4b0141568bc89cc896d9f0b1d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000735bf6dbee2798ca0674e5703dfc2fc32855245e5573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000735ae2d4dab5881fbf2a5dcd3ccdcf5190cf69293b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000735acd55138528f9e8bf4a2855ecf2777e6a1909f973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000735a8d322920b5e3d9670b3ed80a0d9e4e37c0470c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007359a1c0ab93b5c0853eca16ff594568db4d48118273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000735770b226ad3497eb7f02637f65615cdd620d5e7973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007355f555ccf956802a42596c708c08cb8bd99214fa73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073555b9d685af3f8003f3d3df3d4b8338e78aa818473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007355215b8e731276eafcfc9a8bf7d325cdf9e1c0d773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073537a4046755e610d9b97ca4203a4f836974e0d1173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000735357e4671eaa4a7367921efc8eb60d56d3650ad573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000735253043df7a50970398dd1037eecf6b384fd467273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073522fa1709cbde1cd54652639b93403b7367b4a3e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007352008d2a42a15915509d4c7fe6694b0ed11beb5b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000735154c1f3959b7c5b2f1956947bc77eee0c1039e073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007350f0f41e527bc7ddb9d4192937281773b1a47c9973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007350ec189497a2a93ae670e8193de41b389c45b30073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007350252ddec36de574734fe0cb4a475c7e6f1c2eb273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007350063d335b85898ae7aa0b28b86db96507a5c25f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000734fdb49033c916b9b09bcd0850f2240d610aff72673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000734e3b3680bbaf5b6ee805e4606a772c5a112723c373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000734d3b23cf47440c709d9b37ae37366d3bc8b5889f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000734d3122ea24d779cf7741f1d6a5829905b235c48c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000734cae8f1f7a5cfcc82b5123872ef3b9fac395c21073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000734c8e07e0df30120dfa2bd20bb84d68108928569f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000734c87e557c2878257d689849820dc4c2edb229f2773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000734a02e5fd33e84aa36549890a2ebd21d27508096673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073493da0cde8cbe456d096d296b88550a70393935473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007348ef11011ded807f3246bb8c2f4ce9426e09be8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007347d317653695aa0c57557519aff9f7a18614151073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007347a991819ab1e4fb3a884b54f12baeb346f9dc6973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007347659caf77a8822f477887657dfb34ec2f44885273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073474f057ffd4184ce80236d39c88e8ecfe858993173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073465951a661084386bc46306c2eb3a2fe921f0c7d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007346570358d6202cb2c74c02e5722a65863787ddf073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073461b854ba646f97ae209ffde8ce383b49e4522e873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007345b526788e9ac6de32fc9364484241677aa03b5873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007344a756d6e0b9b01b79e2709b53d1f5d6f54830d273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073434f7c4a1470a03494dff3530037082d086738a573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000734269417eefa4e8f515b67c63974474993062ce8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073423a65cd9f3abc065d1fcfcd64780903e2842d1073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007340cb3ab5930ff6ce0375c37e17941c65ee6323fc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007340c54783feade03d09c49ba76598efb1b43f9c4473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073403ca284c16795263c704f3411360a5a11ce91dc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000733e1dc89ab1e3bb8a64bb0f65b65b404f1bf708c373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000733d0fc6e351faeed03aa179308ff4a7960b808bc573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073343126bbde06a8bcbbd71eb966705f5a8a12eb8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007333fe4a6b3e79615067e75bda042f8820d7666d8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000733340de8618888ba23dd1ce5af43c020cf260502373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073330e705d7c1340be603bcde12ced193868de773973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000732fd87acfee01b5311fdd33a10866ffd14c4ae36b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000732f9087d8a9701dd7adee061823bab529877a104373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000732d5a1190b6c1bf13b256210a65f625681b48811073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000732d1aea14ca5a10d1d7532e909f94dd0d5e16295f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000732bddc6b3eb3abed4a6c362763e5cf8e9f9037dba73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000732b8b0c7e42cd82c92d4be78e2dd1f1af4dde7cce73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000732ac651150309ad369d5b7278bbe11ff7e76b5ead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000732a8482a8e89c1d4acdda32fd232ea425eeb87e6073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007329c07aa7105d2869a17dd3821bcf1e3ad6a3f68273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007327e7610dc12a2ab5e219043fb41abc313cb11b5f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007327a2adc97246ec7580388bf20d19f889d56388e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007325de611cea5ca7ba0668f2d8eb3068ba72f0c30d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007325885b2f3d6521022523213e208920a9f3c17db173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073243119dbef6acffe4420c2b49f7a3ec2f8f870f573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007324169e61432ceac043cbea388bd5b51aaf8b2b1c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073222c52726f0d1d4d452f69c87f38429a09229f1f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007321116c1ee3d766be50377c190056b2419946fc3e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000732099296f14173b27bbe49f9232d3ef95dfd1a25973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007320827652c6dc88015c66448a6ec5cf74daeecc4d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000732076a87d5968fb96d24f56315ca901489797377273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000732072c081c77a476c28d4b2e0f86ed8a789bd807873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000732065685879367ff787f19bc0a2bbae2e284dfce473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000731fda16d5111f639d20ac78b31742b152729b421f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000731f5066f3a87c117075f57eb3e9839f3999977fdd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000731e6416545d3d520dd0a512cbe8787ca61e8491be73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000731dc952e7232a25340ecdf9ef722d3ceee0f4bed473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000731da399febc4d2ac3841f3dbbf1201078bb10520e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000731d028d6ffefbc9ec660aa30385733415f20f78fd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000731c23fa52c7e4b1ed0aa70611d918f5fd20e2b03973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000731b42eaf5fa6cbe192ff7c43615dffbc20541aab373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000731b3b107fbb9a4530ba8b0f764f63f62a53788e4a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000731aa42256135e53ebd86f19699a62702b5726586973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000731a3326bf12589ee53b3f796c9d376ea3df60d45973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007319d89263cabc26030178955ff5babc2641379f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007319206cc9eb256f611b0985d18867d1cc6ef80ee173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007316deaa7adee82463ea617dfb931a6bf2b41bf42873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007316414387406de17f3ecb0e2cad263c9d04553f4e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007314e083f433308170ecb3a2758d51332a0b833e1073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007314ad8f58d7eba4b50689c9165af9cfbcef70639873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073149435d8e44b7f0bd12ec849678ae55c4951027e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000731479b108407e7a9de802d14b3e55b2962a0f26bc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073145dbea397f71512ab97cbbf080d74d3bcc2917673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073130f994e85b9c81aa8aa63e25fc05ff27f16ef2073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073112cfd399062161ddaea99bc30c97013d61927c573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073108be80b8f2e44034171723ac720a7177b002fae73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000730feb8c649fbe79e576bcc0857e2aea7e4359561a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000730f138831aa4a28e298cd120d6338dc815d93481d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000730ed35594fdb513f955cdde0b0b54a12d619d109c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000730cd6139a8cc6cba0a9067e9e5ff13feebf95ad4773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000730b386696feb58e5d30f8036ae0ee663857c9c15073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000730b1f309fbd3d038576df6d205bc6c6c13ebbe3b673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000730b15d768985d35039cfabfce8680afd535fd155673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000730b122c9d7b1e0dc305feb4cbfe97646d02a10bc673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000730aa22bdc1f0a6850928750306f697e7394c6ab3873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000730a11605280c54f62f4968dbd707898100671635573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073098ca151fc2e112459df0f5f88f85aafe605f0fb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007308113b0e3f4d02b6acb9073b4aca8ffabcc740a373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073079754f9a459716b36eca1efb72b3ceaddd8e0e773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073060ae6eb0ae0c2a1aa37fe6aa43711d46ee19b3173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007305be7b75cc3d3bf89cb548f74d37d4367dd5544b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000730591763c6fc03c991643be4cae8bc42e785896de73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007304e45dc9785cecd1a2ccfb40ad70ad70b3f10d4573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60007303a965fa0283f5e5a5e02e6e859e97710d2b50c373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000730290d2853585c35550f7d1e82ca9b9be497cbbfd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a600073019d239a36a4fd4828253e8eccadd1dd2d0dd14773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000724fb342f4b36e504f667a4fe6932e0a1e20e52973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073fd55d2558fa1a8d6321336e681d4be2048af411773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073f6b56fbb88ebc36f16835559e5aea990855bb69373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073f23b45a630724ccba2aea077b743f9e43465852e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073e8abfe0685d7596c78438ed0b68c709b8348605273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073e745cb3c5152750c63e2ed81510e3edc89c3bcfa73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073e1b38e2c33acfd66283334cffbe1da1a69e02f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073e19216644ae5e188daabe8c9fc515ec4783d52cc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073ce75584c49c4b5a3d232c16230a384497f91019e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073c74d61485be0647e388ff351abfbaeebc8977c1273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073c264b4a5fb07202721eaaf13e756a91a34c409c573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073bea72d78bfe1d9c7f10adbfd13f0476101cd00df73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073af41939181902e68865186ae1f61e42338ddd75473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073aa77d1a289f45f494ede8d2c93022b5e88baed2e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073a8e035f1d0ef3f9eea02688d1d64e7fdaa91970a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a60007398f202fd845ac175ad2d62bbe2d8684aff8aecbe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000739854153589d671742d9b70b079984178db5436c073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073971dc6bb8122f51375e1b8c17212f987fb6db30673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000738f31dd09226c5f82edc414b3382ad9c404de27dc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000738db5824dab9848ea740bc06133e59ae679de857f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000738afe8f0b3486bbf3a0b6c785d87d9b972bd22f1d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073847a643ad8d71569329e8b133a68291696d9ac4b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a60007383e958aa52023ec40de1dc30276addeea6de402873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000736ce0db14a58c81aaa13cf0764199d206bd25312f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000735edb7a2a7067cc95c58c073d0c9a8b999dca3b2973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000735ec0f7103c93cbad1a5ce240d691f4756623313473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000735cd796f22119bfb027b8ef25853923e59e95052473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000735b6e4330ad93b8082d646f1684dcb32ec975289e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a60007358cede4254a9d04464f11e7237a6f5872b84f36473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000735632f9275b385ef8c51ad9956db681776a26be2873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073561d4c86576c9e1675f1f77318ecfc18ec85d9dc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a60007355fa6481a31f1963d5d6ab16d16e72d7225c3e8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000735411cf794c9ce7d956f47074a85411d597c83cd973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a60007352e030bcc69161e1a1f420485f6aea6eb0d9773373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000734fedb138a7d7f1427768ef5747bb8556b352e76473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000734f6c919a4dc3d5870c51a05762a7088f5943cb4573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073498699432b19bb8718c7f5ba61f1b2a11658380373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a600073484abbaa00fc5a703da1eb747315660c11cd710373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a60007340b7bea71f83a94c912e4c0a58564459d4dd4cb873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000733d9fd60aec344c20fc0ef161f59225181730f47b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a60007335cced5cdf2483848efc48dbf6c5c4fde225522d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a60007330c71b427b1822cbd95939851e61cf896d03f2e473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000732ee6b129a671cd805b1fb1e5ff70587e8f551c4273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000732e40ef7526b1c86a19005346127d3c0fc2ec901973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000732a84c441f6002b2310d4925232676e6dc8e78a4073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a60007324379f6561726956ff440f72713cc31bf5f6d34a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000732126d8d321fc638e1fcc58bf74c9d0015639752473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000731fb2df535d1c7969a2964f49e25ce3a05bf45a9173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000731f5705e882b7b190538508bf83485564ff9a0e6a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000731d6e4d039a259390bc71bd2a1e60861bd6d7d50a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a60007317982d4224d781187617e01a4b7f4df7cbcf317b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000730e644de3505b7b024f4d4c37b093a62ccf82af1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a6000730dc1949e3a7282c293a491b1b66756aa65de7e5573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003600a600073ee610163862968e5bc6d4d55493de6a64222c07c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003600a600073ed44ca68ba2375a29492a860ddd5d41b4db46e5673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003600a600073ec1d11d899a8ed5fcc1a03ca9ce14bbd06b24d9773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003600a600073dfc85e3409ea08ee0ad05a9d9bd6f1b35230839273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003600a600073c6bd569dbf8abcf20abbbab6f58aaeef2a22040e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003600a600073a79caabaf320a8fe645c1c7290f14276c2a477d273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003600a60007385ab567d13086cd03976765a2c9a49e8e1da918773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003600a60007382d2f81f61556f80bcda77491b3ccba4cfae114273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003600a6000737b0f3e1ea31a731da7e35628f1d6d1a772b8f8f373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003600a6000735e93303aeadccf996bd77eb91a9fab241880334f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003600a6000734f556d724b1f7eff4a6efab5af3a647f3debe48c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003600a6000734ade4038736ed186bee80f3fa8a7bf931126f72c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003600a600073221995e6b982a5a9023df2fc4e4e00eddc54010b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003600a6000731d7a3e7366d84f78e616dd805b305ac402cc5a6b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003600a6000722841301d1ab971d8acb3509aa2891e3ef9d7e173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004600a600073e794ce89b1bb16780be977fe7a246bb6e6b256e073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004600a600073d99694fd205cc2c9d5ebffc5fd5ca5cb5416ed0373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004600a600073d239815bfcc6c70358927437429789bcf0ac810d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004600a600073c8ba8bbd50d10e3078bdf8f475516c5b02175d2c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004600a600073c8b51a47b7edd0681276444770bff117957a180a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004600a600073b4a4b42081ca39f07c62f0a3f4bee9687559d7a973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004600a600073a672273865810234fae493c944fc3a000f303f6073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004600a6000739f819b76f00da9df29b4d2760cc888b74f17006c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004600a60007364541d14fc2ba37bffcd209b5173479d41d1513d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004600a6000730f01eb10c9afdc4a8094088793c59d04fc6dd2a073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506005600a600073bd57de27eb6b422350c262f0e451d31a65e3efe573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506005600a600073a961a6375dbe7b14df4f0cd426552c5a7709efb973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506005600a600073a8eb2ea3a233bc7af4043df453191a0939bcb28673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506005600a6000739139cd9146ab97162334205563662412a5d62cb273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506005600a6000735f2952ff0e30f272554cc1f74884261d561ae97973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506005600a600073501790c6890dfa43c264aee4ed9aa5e116d0a0d473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506005600a6000732aa92eb0024e3f54c35df1b1d6879631241222f273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506005600a6000732664d2b96bd52b0e3eb08de99c726d694f23d34f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506005600a600073221a11f813e30cef5399f3d584c4f3e00f5c048673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506005600a600073115cb6dc6223eae44a8ce4f4cb8407f24f6fd70f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506006600a600073fde0e287b589ee479bd188f717bd566903da2c8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506006600a600073fb2520759e6dbc4696111a8ef18be569fe6b0e3e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506006600a600073c1b853f9b2f3aa1e0f853901ac3e340f8bea33b373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506006600a6000739ee6b94b4fd48a75178d57bf5eb263da709b8dbb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506006600a6000732494062febddc66a073c00ac958d5132547ec44973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506007600a60007397ec8b90856649a0b61d09e2151b86963501272473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506007600a60007350871234728bf8d881d0f4e4b718080f7104418573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506008600a600073d18c458d756b8f6ed3742cc6a594d3a2b576fa8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506009600a6000735f1a688c94971e2b7da2b1a030947def4d7172e773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506009600a6000732c7f5c7cd4b7bfee9d4216b29e1a61d2a0a398f173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d600a60007357b27fc6eff1c5dbdec4a615cc88d43a583772d873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d600a6000734e9a80ce5e4b0df0d324acafebbbb2332cb38ff873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d600a60007344faa42da632decbdc7d40231eb115de6cb60f0673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f600a6000735687e44feb0401d6fa56a26d01b253cec63276de73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f600a6000734aa41136ad53ffb0f028dca371d7b3c87305423d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506011600a6000734e98dc956de2b19df8363c6fb1af283a5600d80f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506014600a600073ee50ab320e99c3a291a16e52ebf5409f122cbd6773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506019600a60007313c9b8215e03f4554fd066468700bf6a496912bf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601c600a600073dd178e387006425ec15cff07f7e38a37bcc92a8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506022600a6000735ed0cb5f507cf82f5a1b84e715b040fa361c433b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200960a565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620091b06200934260201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111562009211576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620092089062009512565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362009283576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200927a9062009584565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff168152506000808201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6000612710905090565b8280546200935a90620095d5565b90600052602060002090601f0160209004810192826200937e5760008555620093ca565b82601f106200939957805160ff1916838001178555620093ca565b82800160010185558215620093ca579182015b82811115620093c9578251825591602001919060010190620093ac565b5b509050620093d99190620093dd565b5090565b5b80821115620093f8576000816000905550600101620093de565b5090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200942982620093fc565b9050919050565b6200943b816200941c565b82525050565b600060408201905062009458600083018562009430565b62009467602083018462009430565b9392505050565b600060208201905062009485600083018462009430565b92915050565b600082825260208201905092915050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b6000620094fa602a836200948b565b915062009507826200949c565b604082019050919050565b600060208201905081810360008301526200952d81620094eb565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b60006200956c6019836200948b565b9150620095798262009534565b602082019050919050565b600060208201905081810360008301526200959f816200955d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620095ee57607f821691505b602082108103620096045762009603620095a6565b5b50919050565b6138e9806200961a6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063b88d4fde11610097578063d150c82c11610071578063d150c82c1461046d578063df45bbcc14610477578063e985e9c514610493578063f2fde38b146104c3576101a9565b8063b88d4fde14610417578063b9f411e514610433578063c87b56dd1461043d576101a9565b806395d89b41116100d357806395d89b41146103b7578063a22cb465146103d5578063afa7823b146103f1578063b12dc9911461040d576101a9565b806370a082311461035f578063715018a61461038f5780638da5cb5b14610399576101a9565b806323b872dd1161016657806341f434341161014057806341f43434146102eb57806342842e0e146103095780635b70ea9f146103255780636352211e1461032f576101a9565b806323b872dd146102825780632a55205a1461029e5780632d1f6f26146102cf576101a9565b806301ffc9a7146101ae57806306fdde03146101de578063081812fc146101fc578063095ea7b31461022c5780631aa347dc14610248578063207d022314610278575b600080fd5b6101c860048036038101906101c391906124f3565b6104df565b6040516101d5919061253b565b60405180910390f35b6101e66104f1565b6040516101f391906125ef565b60405180910390f35b61021660048036038101906102119190612647565b610583565b60405161022391906126b5565b60405180910390f35b610246600480360381019061024191906126fc565b6105c9565b005b610262600480360381019061025d9190612647565b6105e2565b60405161026f91906125ef565b60405180910390f35b6102806106c4565b005b61029c6004803603810190610297919061273c565b6107c9565b005b6102b860048036038101906102b3919061278f565b610818565b6040516102c69291906127de565b60405180910390f35b6102e960048036038101906102e4919061293c565b610a02565b005b6102f3610a24565b60405161030091906129e4565b60405180910390f35b610323600480360381019061031e919061273c565b610a36565b005b61032d610a85565b005b61034960048036038101906103449190612647565b610bb3565b60405161035691906126b5565b60405180910390f35b610379600480360381019061037491906129ff565b610c64565b6040516103869190612a2c565b60405180910390f35b610397610d1b565b005b6103a1610d2f565b6040516103ae91906126b5565b60405180910390f35b6103bf610d59565b6040516103cc91906125ef565b60405180910390f35b6103ef60048036038101906103ea9190612a73565b610deb565b005b61040b60048036038101906104069190612aed565b610e04565b005b610415610e58565b005b610431600480360381019061042c9190612bce565b610f0a565b005b61043b610f5b565b005b61045760048036038101906104529190612647565b610f80565b60405161046491906125ef565b60405180910390f35b610475610f92565b005b610491600480360381019061048c919061293c565b6110e4565b005b6104ad60048036038101906104a89190612c51565b611106565b6040516104ba919061253b565b60405180910390f35b6104dd60048036038101906104d891906129ff565b61119a565b005b60006104ea8261121d565b9050919050565b60606002805461050090612cc0565b80601f016020809104026020016040519081016040528092919081815260200182805461052c90612cc0565b80156105795780601f1061054e57610100808354040283529160200191610579565b820191906000526020600020905b81548152906001019060200180831161055c57829003601f168201915b5050505050905090565b600061058e826112ff565b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b816105d38161134a565b6105dd8383611447565b505050565b606060011515600d60049054906101000a900460ff1615150361063157600f61060a8361155e565b60405160200161061b929190612e0d565b60405160208183030381529060405290506106bf565b600e805461063e90612cc0565b80601f016020809104026020016040519081016040528092919081815260200182805461066a90612cc0565b80156106b75780601f1061068c576101008083540402835291602001916106b7565b820191906000526020600020905b81548152906001019060200180831161069a57829003601f168201915b505050505090505b919050565b6106cc6116be565b600d60009054906101000a900461ffff1661ffff16600d60029054906101000a900461ffff1661ffff16111561070157600080fd5b600c5442101561071057600080fd5b6000600d60029054906101000a900461ffff1661ffff1690505b600d60009054906101000a900461ffff1661ffff1681116107c6576000610751600961173c565b905061076d33826040518060200160405280600081525061174a565b61077760096117a5565b600d600281819054906101000a900461ffff168092919061079790612e6b565b91906101000a81548161ffff021916908361ffff160217905550505080806107be90612e95565b91505061072a565b50565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610807576108063361134a565b5b6108128484846117bb565b50505050565b6000806000600160008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036109ad5760006040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b60006109b761181b565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff16866109e39190612edd565b6109ed9190612f66565b90508160000151819350935050509250929050565b610a0a6116be565b80600f9080519060200190610a209291906123e4565b5050565b6daaeb6d7670e522a718067333cd4e81565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a7457610a733361134a565b5b610a7f848484611825565b50505050565b6001610a9033610c64565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ada9190612f97565b1015610ae557600080fd5b600d60009054906101000a900461ffff1661ffff166001600d60029054906101000a900461ffff16610b179190612fcb565b61ffff161115610b2657600080fd5b600b54421015610b3557600080fd5b600c544210610b4357600080fd5b6000610b4f600961173c565b9050610b6b33826040518060200160405280600081525061174a565b610b7560096117a5565b600d600281819054906101000a900461ffff1680929190610b9590612e6b565b91906101000a81548161ffff021916908361ffff1602179055505050565b6000806004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c529061304f565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb906130e1565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d236116be565b610d2d6000611845565b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054610d6890612cc0565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9490612cc0565b8015610de15780601f10610db657610100808354040283529160200191610de1565b820191906000526020600020905b815481529060010190602001808311610dc457829003601f168201915b5050505050905090565b81610df58161134a565b610dff838361190b565b505050565b610e0c6116be565b8061ffff16600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b610e606116be565b600d60009054906101000a900461ffff1661ffff16600d60029054906101000a900461ffff1661ffff161115610e9557600080fd5b600c54421015610ea457600080fd5b6000610eb0600961173c565b9050610ecc33826040518060200160405280600081525061174a565b600d600281819054906101000a900461ffff1680929190610eec90612e6b565b91906101000a81548161ffff021916908361ffff1602179055505050565b833373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f4857610f473361134a565b5b610f5485858585611921565b5050505050565b610f636116be565b6001600d60046101000a81548160ff021916908315150217905550565b6060610f8b826105e2565b9050919050565b6000610f9d33610c64565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fe79190612f97565b90506001811015610ff757600080fd5b600d60009054906101000a900461ffff1661ffff16600d60029054906101000a900461ffff1661ffff168261102c9190613101565b111561103757600080fd5b600b5442101561104657600080fd5b600c54421061105457600080fd5b60005b818110156110e057600061106b600961173c565b905061108733826040518060200160405280600081525061174a565b61109160096117a5565b600d600281819054906101000a900461ffff16809291906110b190612e6b565b91906101000a81548161ffff021916908361ffff160217905550505080806110d890612e95565b915050611057565b5050565b6110ec6116be565b80600e90805190602001906111029291906123e4565b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6111a26116be565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611211576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611208906131c9565b60405180910390fd5b61121a81611845565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806112e857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806112f857506112f782611983565b5b9050919050565b611308816119fd565b611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133e9061304f565b60405180910390fd5b50565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115611444576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b81526004016113c19291906131e9565b602060405180830381865afa1580156113de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114029190613227565b61144357806040517fede71dcc00000000000000000000000000000000000000000000000000000000815260040161143a91906126b5565b60405180910390fd5b5b50565b600061145282610bb3565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b9906132c6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166114e1611a69565b73ffffffffffffffffffffffffffffffffffffffff161480611510575061150f8161150a611a69565b611106565b5b61154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154690613358565b60405180910390fd5b6115598383611a71565b505050565b6060600082036115a5576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506116b9565b600082905060005b600082146115d75780806115c090612e95565b915050600a826115d09190612f66565b91506115ad565b60008167ffffffffffffffff8111156115f3576115f2612811565b5b6040519080825280601f01601f1916602001820160405280156116255781602001600182028036833780820191505090505b5090505b600085146116b25760018261163e9190612f97565b9150600a8561164d9190613378565b60306116599190613101565b60f81b81838151811061166f5761166e6133a9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856116ab9190612f66565b9450611629565b8093505050505b919050565b6116c6611a69565b73ffffffffffffffffffffffffffffffffffffffff166116e4610d2f565b73ffffffffffffffffffffffffffffffffffffffff161461173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173190613424565b60405180910390fd5b565b600081600001549050919050565b6117548383611b2a565b6117616000848484611d03565b6117a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611797906134b6565b60405180910390fd5b505050565b6001816000016000828254019250508190555050565b6117cc6117c6611a69565b82611e8a565b61180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180290613548565b60405180910390fd5b611816838383611f1f565b505050565b6000612710905090565b61184083838360405180602001604052806000815250610f0a565b505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61191d611916611a69565b8383612185565b5050565b61193261192c611a69565b83611e8a565b611971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196890613548565b60405180910390fd5b61197d848484846122f1565b50505050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806119f657506119f58261234d565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816006600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611ae483610bb3565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b90906135b4565b60405180910390fd5b611ba2816119fd565b15611be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd990613620565b60405180910390fd5b611bee600083836123b7565b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c3e9190613101565b92505081905550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611cff600083836123bc565b5050565b6000611d248473ffffffffffffffffffffffffffffffffffffffff166123c1565b15611e7d578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611d4d611a69565b8786866040518563ffffffff1660e01b8152600401611d6f9493929190613695565b6020604051808303816000875af1925050508015611dab57506040513d601f19601f82011682018060405250810190611da891906136f6565b60015b611e2d573d8060008114611ddb576040519150601f19603f3d011682016040523d82523d6000602084013e611de0565b606091505b506000815103611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c906134b6565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611e82565b600190505b949350505050565b600080611e9683610bb3565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611ed85750611ed78185611106565b5b80611f1657508373ffffffffffffffffffffffffffffffffffffffff16611efe84610583565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611f3f82610bb3565b73ffffffffffffffffffffffffffffffffffffffff1614611f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8c90613795565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffb90613827565b60405180910390fd5b61200f8383836123b7565b61201a600082611a71565b6001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461206a9190612f97565b925050819055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120c19190613101565b92505081905550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46121808383836123bc565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ea90613893565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122e4919061253b565b60405180910390a3505050565b6122fc848484611f1f565b61230884848484611d03565b612347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233e906134b6565b60405180910390fd5b50505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546123f090612cc0565b90600052602060002090601f0160209004810192826124125760008555612459565b82601f1061242b57805160ff1916838001178555612459565b82800160010185558215612459579182015b8281111561245857825182559160200191906001019061243d565b5b509050612466919061246a565b5090565b5b8082111561248357600081600090555060010161246b565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6124d08161249b565b81146124db57600080fd5b50565b6000813590506124ed816124c7565b92915050565b60006020828403121561250957612508612491565b5b6000612517848285016124de565b91505092915050565b60008115159050919050565b61253581612520565b82525050565b6000602082019050612550600083018461252c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612590578082015181840152602081019050612575565b8381111561259f576000848401525b50505050565b6000601f19601f8301169050919050565b60006125c182612556565b6125cb8185612561565b93506125db818560208601612572565b6125e4816125a5565b840191505092915050565b6000602082019050818103600083015261260981846125b6565b905092915050565b6000819050919050565b61262481612611565b811461262f57600080fd5b50565b6000813590506126418161261b565b92915050565b60006020828403121561265d5761265c612491565b5b600061266b84828501612632565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061269f82612674565b9050919050565b6126af81612694565b82525050565b60006020820190506126ca60008301846126a6565b92915050565b6126d981612694565b81146126e457600080fd5b50565b6000813590506126f6816126d0565b92915050565b6000806040838503121561271357612712612491565b5b6000612721858286016126e7565b925050602061273285828601612632565b9150509250929050565b60008060006060848603121561275557612754612491565b5b6000612763868287016126e7565b9350506020612774868287016126e7565b925050604061278586828701612632565b9150509250925092565b600080604083850312156127a6576127a5612491565b5b60006127b485828601612632565b92505060206127c585828601612632565b9150509250929050565b6127d881612611565b82525050565b60006040820190506127f360008301856126a6565b61280060208301846127cf565b9392505050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612849826125a5565b810181811067ffffffffffffffff8211171561286857612867612811565b5b80604052505050565b600061287b612487565b90506128878282612840565b919050565b600067ffffffffffffffff8211156128a7576128a6612811565b5b6128b0826125a5565b9050602081019050919050565b82818337600083830152505050565b60006128df6128da8461288c565b612871565b9050828152602081018484840111156128fb576128fa61280c565b5b6129068482856128bd565b509392505050565b600082601f83011261292357612922612807565b5b81356129338482602086016128cc565b91505092915050565b60006020828403121561295257612951612491565b5b600082013567ffffffffffffffff8111156129705761296f612496565b5b61297c8482850161290e565b91505092915050565b6000819050919050565b60006129aa6129a56129a084612674565b612985565b612674565b9050919050565b60006129bc8261298f565b9050919050565b60006129ce826129b1565b9050919050565b6129de816129c3565b82525050565b60006020820190506129f960008301846129d5565b92915050565b600060208284031215612a1557612a14612491565b5b6000612a23848285016126e7565b91505092915050565b6000602082019050612a4160008301846127cf565b92915050565b612a5081612520565b8114612a5b57600080fd5b50565b600081359050612a6d81612a47565b92915050565b60008060408385031215612a8a57612a89612491565b5b6000612a98858286016126e7565b9250506020612aa985828601612a5e565b9150509250929050565b600061ffff82169050919050565b612aca81612ab3565b8114612ad557600080fd5b50565b600081359050612ae781612ac1565b92915050565b60008060408385031215612b0457612b03612491565b5b6000612b12858286016126e7565b9250506020612b2385828601612ad8565b9150509250929050565b600067ffffffffffffffff821115612b4857612b47612811565b5b612b51826125a5565b9050602081019050919050565b6000612b71612b6c84612b2d565b612871565b905082815260208101848484011115612b8d57612b8c61280c565b5b612b988482856128bd565b509392505050565b600082601f830112612bb557612bb4612807565b5b8135612bc5848260208601612b5e565b91505092915050565b60008060008060808587031215612be857612be7612491565b5b6000612bf6878288016126e7565b9450506020612c07878288016126e7565b9350506040612c1887828801612632565b925050606085013567ffffffffffffffff811115612c3957612c38612496565b5b612c4587828801612ba0565b91505092959194509250565b60008060408385031215612c6857612c67612491565b5b6000612c76858286016126e7565b9250506020612c87858286016126e7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612cd857607f821691505b602082108103612ceb57612cea612c91565b5b50919050565b600081905092915050565b60008190508160005260206000209050919050565b60008154612d1e81612cc0565b612d288186612cf1565b94506001821660008114612d435760018114612d5457612d87565b60ff19831686528186019350612d87565b612d5d85612cfc565b60005b83811015612d7f57815481890152600182019150602081019050612d60565b838801955050505b50505092915050565b6000612d9b82612556565b612da58185612cf1565b9350612db5818560208601612572565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000612df7600583612cf1565b9150612e0282612dc1565b600582019050919050565b6000612e198285612d11565b9150612e258284612d90565b9150612e3082612dea565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e7682612ab3565b915061ffff8203612e8a57612e89612e3c565b5b600182019050919050565b6000612ea082612611565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ed257612ed1612e3c565b5b600182019050919050565b6000612ee882612611565b9150612ef383612611565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f2c57612f2b612e3c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612f7182612611565b9150612f7c83612611565b925082612f8c57612f8b612f37565b5b828204905092915050565b6000612fa282612611565b9150612fad83612611565b925082821015612fc057612fbf612e3c565b5b828203905092915050565b6000612fd682612ab3565b9150612fe183612ab3565b92508261ffff03821115612ff857612ff7612e3c565b5b828201905092915050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000613039601883612561565b915061304482613003565b602082019050919050565b600060208201905081810360008301526130688161302c565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006130cb602983612561565b91506130d68261306f565b604082019050919050565b600060208201905081810360008301526130fa816130be565b9050919050565b600061310c82612611565b915061311783612611565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561314c5761314b612e3c565b5b828201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131b3602683612561565b91506131be82613157565b604082019050919050565b600060208201905081810360008301526131e2816131a6565b9050919050565b60006040820190506131fe60008301856126a6565b61320b60208301846126a6565b9392505050565b60008151905061322181612a47565b92915050565b60006020828403121561323d5761323c612491565b5b600061324b84828501613212565b91505092915050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006132b0602183612561565b91506132bb82613254565b604082019050919050565b600060208201905081810360008301526132df816132a3565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000613342603e83612561565b915061334d826132e6565b604082019050919050565b6000602082019050818103600083015261337181613335565b9050919050565b600061338382612611565b915061338e83612611565b92508261339e5761339d612f37565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061340e602083612561565b9150613419826133d8565b602082019050919050565b6000602082019050818103600083015261343d81613401565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006134a0603283612561565b91506134ab82613444565b604082019050919050565b600060208201905081810360008301526134cf81613493565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b6000613532602e83612561565b915061353d826134d6565b604082019050919050565b6000602082019050818103600083015261356181613525565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061359e602083612561565b91506135a982613568565b602082019050919050565b600060208201905081810360008301526135cd81613591565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061360a601c83612561565b9150613615826135d4565b602082019050919050565b60006020820190508181036000830152613639816135fd565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061366782613640565b613671818561364b565b9350613681818560208601612572565b61368a816125a5565b840191505092915050565b60006080820190506136aa60008301876126a6565b6136b760208301866126a6565b6136c460408301856127cf565b81810360608301526136d6818461365c565b905095945050505050565b6000815190506136f0816124c7565b92915050565b60006020828403121561370c5761370b612491565b5b600061371a848285016136e1565b91505092915050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061377f602583612561565b915061378a82613723565b604082019050919050565b600060208201905081810360008301526137ae81613772565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613811602483612561565b915061381c826137b5565b604082019050919050565b6000602082019050818103600083015261384081613804565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061387d601983612561565b915061388882613847565b602082019050919050565b600060208201905081810360008301526138ac81613870565b905091905056fea264697066735822122077570c92cf3922370180f53e557cfa3065ad229b36c2d6068b806a27ab31ecee64736f6c634300080d003368747470733a2f2f667265656d696e742e7a6f6f2d6d616e2e636f6d2f62722f62722e6a736f6e

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063b88d4fde11610097578063d150c82c11610071578063d150c82c1461046d578063df45bbcc14610477578063e985e9c514610493578063f2fde38b146104c3576101a9565b8063b88d4fde14610417578063b9f411e514610433578063c87b56dd1461043d576101a9565b806395d89b41116100d357806395d89b41146103b7578063a22cb465146103d5578063afa7823b146103f1578063b12dc9911461040d576101a9565b806370a082311461035f578063715018a61461038f5780638da5cb5b14610399576101a9565b806323b872dd1161016657806341f434341161014057806341f43434146102eb57806342842e0e146103095780635b70ea9f146103255780636352211e1461032f576101a9565b806323b872dd146102825780632a55205a1461029e5780632d1f6f26146102cf576101a9565b806301ffc9a7146101ae57806306fdde03146101de578063081812fc146101fc578063095ea7b31461022c5780631aa347dc14610248578063207d022314610278575b600080fd5b6101c860048036038101906101c391906124f3565b6104df565b6040516101d5919061253b565b60405180910390f35b6101e66104f1565b6040516101f391906125ef565b60405180910390f35b61021660048036038101906102119190612647565b610583565b60405161022391906126b5565b60405180910390f35b610246600480360381019061024191906126fc565b6105c9565b005b610262600480360381019061025d9190612647565b6105e2565b60405161026f91906125ef565b60405180910390f35b6102806106c4565b005b61029c6004803603810190610297919061273c565b6107c9565b005b6102b860048036038101906102b3919061278f565b610818565b6040516102c69291906127de565b60405180910390f35b6102e960048036038101906102e4919061293c565b610a02565b005b6102f3610a24565b60405161030091906129e4565b60405180910390f35b610323600480360381019061031e919061273c565b610a36565b005b61032d610a85565b005b61034960048036038101906103449190612647565b610bb3565b60405161035691906126b5565b60405180910390f35b610379600480360381019061037491906129ff565b610c64565b6040516103869190612a2c565b60405180910390f35b610397610d1b565b005b6103a1610d2f565b6040516103ae91906126b5565b60405180910390f35b6103bf610d59565b6040516103cc91906125ef565b60405180910390f35b6103ef60048036038101906103ea9190612a73565b610deb565b005b61040b60048036038101906104069190612aed565b610e04565b005b610415610e58565b005b610431600480360381019061042c9190612bce565b610f0a565b005b61043b610f5b565b005b61045760048036038101906104529190612647565b610f80565b60405161046491906125ef565b60405180910390f35b610475610f92565b005b610491600480360381019061048c919061293c565b6110e4565b005b6104ad60048036038101906104a89190612c51565b611106565b6040516104ba919061253b565b60405180910390f35b6104dd60048036038101906104d891906129ff565b61119a565b005b60006104ea8261121d565b9050919050565b60606002805461050090612cc0565b80601f016020809104026020016040519081016040528092919081815260200182805461052c90612cc0565b80156105795780601f1061054e57610100808354040283529160200191610579565b820191906000526020600020905b81548152906001019060200180831161055c57829003601f168201915b5050505050905090565b600061058e826112ff565b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b816105d38161134a565b6105dd8383611447565b505050565b606060011515600d60049054906101000a900460ff1615150361063157600f61060a8361155e565b60405160200161061b929190612e0d565b60405160208183030381529060405290506106bf565b600e805461063e90612cc0565b80601f016020809104026020016040519081016040528092919081815260200182805461066a90612cc0565b80156106b75780601f1061068c576101008083540402835291602001916106b7565b820191906000526020600020905b81548152906001019060200180831161069a57829003601f168201915b505050505090505b919050565b6106cc6116be565b600d60009054906101000a900461ffff1661ffff16600d60029054906101000a900461ffff1661ffff16111561070157600080fd5b600c5442101561071057600080fd5b6000600d60029054906101000a900461ffff1661ffff1690505b600d60009054906101000a900461ffff1661ffff1681116107c6576000610751600961173c565b905061076d33826040518060200160405280600081525061174a565b61077760096117a5565b600d600281819054906101000a900461ffff168092919061079790612e6b565b91906101000a81548161ffff021916908361ffff160217905550505080806107be90612e95565b91505061072a565b50565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610807576108063361134a565b5b6108128484846117bb565b50505050565b6000806000600160008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036109ad5760006040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b60006109b761181b565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff16866109e39190612edd565b6109ed9190612f66565b90508160000151819350935050509250929050565b610a0a6116be565b80600f9080519060200190610a209291906123e4565b5050565b6daaeb6d7670e522a718067333cd4e81565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a7457610a733361134a565b5b610a7f848484611825565b50505050565b6001610a9033610c64565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ada9190612f97565b1015610ae557600080fd5b600d60009054906101000a900461ffff1661ffff166001600d60029054906101000a900461ffff16610b179190612fcb565b61ffff161115610b2657600080fd5b600b54421015610b3557600080fd5b600c544210610b4357600080fd5b6000610b4f600961173c565b9050610b6b33826040518060200160405280600081525061174a565b610b7560096117a5565b600d600281819054906101000a900461ffff1680929190610b9590612e6b565b91906101000a81548161ffff021916908361ffff1602179055505050565b6000806004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c529061304f565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb906130e1565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d236116be565b610d2d6000611845565b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054610d6890612cc0565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9490612cc0565b8015610de15780601f10610db657610100808354040283529160200191610de1565b820191906000526020600020905b815481529060010190602001808311610dc457829003601f168201915b5050505050905090565b81610df58161134a565b610dff838361190b565b505050565b610e0c6116be565b8061ffff16600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b610e606116be565b600d60009054906101000a900461ffff1661ffff16600d60029054906101000a900461ffff1661ffff161115610e9557600080fd5b600c54421015610ea457600080fd5b6000610eb0600961173c565b9050610ecc33826040518060200160405280600081525061174a565b600d600281819054906101000a900461ffff1680929190610eec90612e6b565b91906101000a81548161ffff021916908361ffff1602179055505050565b833373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f4857610f473361134a565b5b610f5485858585611921565b5050505050565b610f636116be565b6001600d60046101000a81548160ff021916908315150217905550565b6060610f8b826105e2565b9050919050565b6000610f9d33610c64565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fe79190612f97565b90506001811015610ff757600080fd5b600d60009054906101000a900461ffff1661ffff16600d60029054906101000a900461ffff1661ffff168261102c9190613101565b111561103757600080fd5b600b5442101561104657600080fd5b600c54421061105457600080fd5b60005b818110156110e057600061106b600961173c565b905061108733826040518060200160405280600081525061174a565b61109160096117a5565b600d600281819054906101000a900461ffff16809291906110b190612e6b565b91906101000a81548161ffff021916908361ffff160217905550505080806110d890612e95565b915050611057565b5050565b6110ec6116be565b80600e90805190602001906111029291906123e4565b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6111a26116be565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611211576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611208906131c9565b60405180910390fd5b61121a81611845565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806112e857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806112f857506112f782611983565b5b9050919050565b611308816119fd565b611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133e9061304f565b60405180910390fd5b50565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115611444576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b81526004016113c19291906131e9565b602060405180830381865afa1580156113de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114029190613227565b61144357806040517fede71dcc00000000000000000000000000000000000000000000000000000000815260040161143a91906126b5565b60405180910390fd5b5b50565b600061145282610bb3565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b9906132c6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166114e1611a69565b73ffffffffffffffffffffffffffffffffffffffff161480611510575061150f8161150a611a69565b611106565b5b61154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154690613358565b60405180910390fd5b6115598383611a71565b505050565b6060600082036115a5576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506116b9565b600082905060005b600082146115d75780806115c090612e95565b915050600a826115d09190612f66565b91506115ad565b60008167ffffffffffffffff8111156115f3576115f2612811565b5b6040519080825280601f01601f1916602001820160405280156116255781602001600182028036833780820191505090505b5090505b600085146116b25760018261163e9190612f97565b9150600a8561164d9190613378565b60306116599190613101565b60f81b81838151811061166f5761166e6133a9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856116ab9190612f66565b9450611629565b8093505050505b919050565b6116c6611a69565b73ffffffffffffffffffffffffffffffffffffffff166116e4610d2f565b73ffffffffffffffffffffffffffffffffffffffff161461173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173190613424565b60405180910390fd5b565b600081600001549050919050565b6117548383611b2a565b6117616000848484611d03565b6117a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611797906134b6565b60405180910390fd5b505050565b6001816000016000828254019250508190555050565b6117cc6117c6611a69565b82611e8a565b61180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180290613548565b60405180910390fd5b611816838383611f1f565b505050565b6000612710905090565b61184083838360405180602001604052806000815250610f0a565b505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61191d611916611a69565b8383612185565b5050565b61193261192c611a69565b83611e8a565b611971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196890613548565b60405180910390fd5b61197d848484846122f1565b50505050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806119f657506119f58261234d565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816006600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611ae483610bb3565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b90906135b4565b60405180910390fd5b611ba2816119fd565b15611be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd990613620565b60405180910390fd5b611bee600083836123b7565b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c3e9190613101565b92505081905550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611cff600083836123bc565b5050565b6000611d248473ffffffffffffffffffffffffffffffffffffffff166123c1565b15611e7d578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611d4d611a69565b8786866040518563ffffffff1660e01b8152600401611d6f9493929190613695565b6020604051808303816000875af1925050508015611dab57506040513d601f19601f82011682018060405250810190611da891906136f6565b60015b611e2d573d8060008114611ddb576040519150601f19603f3d011682016040523d82523d6000602084013e611de0565b606091505b506000815103611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c906134b6565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611e82565b600190505b949350505050565b600080611e9683610bb3565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611ed85750611ed78185611106565b5b80611f1657508373ffffffffffffffffffffffffffffffffffffffff16611efe84610583565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611f3f82610bb3565b73ffffffffffffffffffffffffffffffffffffffff1614611f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8c90613795565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffb90613827565b60405180910390fd5b61200f8383836123b7565b61201a600082611a71565b6001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461206a9190612f97565b925050819055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120c19190613101565b92505081905550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46121808383836123bc565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ea90613893565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122e4919061253b565b60405180910390a3505050565b6122fc848484611f1f565b61230884848484611d03565b612347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233e906134b6565b60405180910390fd5b50505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546123f090612cc0565b90600052602060002090601f0160209004810192826124125760008555612459565b82601f1061242b57805160ff1916838001178555612459565b82800160010185558215612459579182015b8281111561245857825182559160200191906001019061243d565b5b509050612466919061246a565b5090565b5b8082111561248357600081600090555060010161246b565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6124d08161249b565b81146124db57600080fd5b50565b6000813590506124ed816124c7565b92915050565b60006020828403121561250957612508612491565b5b6000612517848285016124de565b91505092915050565b60008115159050919050565b61253581612520565b82525050565b6000602082019050612550600083018461252c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612590578082015181840152602081019050612575565b8381111561259f576000848401525b50505050565b6000601f19601f8301169050919050565b60006125c182612556565b6125cb8185612561565b93506125db818560208601612572565b6125e4816125a5565b840191505092915050565b6000602082019050818103600083015261260981846125b6565b905092915050565b6000819050919050565b61262481612611565b811461262f57600080fd5b50565b6000813590506126418161261b565b92915050565b60006020828403121561265d5761265c612491565b5b600061266b84828501612632565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061269f82612674565b9050919050565b6126af81612694565b82525050565b60006020820190506126ca60008301846126a6565b92915050565b6126d981612694565b81146126e457600080fd5b50565b6000813590506126f6816126d0565b92915050565b6000806040838503121561271357612712612491565b5b6000612721858286016126e7565b925050602061273285828601612632565b9150509250929050565b60008060006060848603121561275557612754612491565b5b6000612763868287016126e7565b9350506020612774868287016126e7565b925050604061278586828701612632565b9150509250925092565b600080604083850312156127a6576127a5612491565b5b60006127b485828601612632565b92505060206127c585828601612632565b9150509250929050565b6127d881612611565b82525050565b60006040820190506127f360008301856126a6565b61280060208301846127cf565b9392505050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612849826125a5565b810181811067ffffffffffffffff8211171561286857612867612811565b5b80604052505050565b600061287b612487565b90506128878282612840565b919050565b600067ffffffffffffffff8211156128a7576128a6612811565b5b6128b0826125a5565b9050602081019050919050565b82818337600083830152505050565b60006128df6128da8461288c565b612871565b9050828152602081018484840111156128fb576128fa61280c565b5b6129068482856128bd565b509392505050565b600082601f83011261292357612922612807565b5b81356129338482602086016128cc565b91505092915050565b60006020828403121561295257612951612491565b5b600082013567ffffffffffffffff8111156129705761296f612496565b5b61297c8482850161290e565b91505092915050565b6000819050919050565b60006129aa6129a56129a084612674565b612985565b612674565b9050919050565b60006129bc8261298f565b9050919050565b60006129ce826129b1565b9050919050565b6129de816129c3565b82525050565b60006020820190506129f960008301846129d5565b92915050565b600060208284031215612a1557612a14612491565b5b6000612a23848285016126e7565b91505092915050565b6000602082019050612a4160008301846127cf565b92915050565b612a5081612520565b8114612a5b57600080fd5b50565b600081359050612a6d81612a47565b92915050565b60008060408385031215612a8a57612a89612491565b5b6000612a98858286016126e7565b9250506020612aa985828601612a5e565b9150509250929050565b600061ffff82169050919050565b612aca81612ab3565b8114612ad557600080fd5b50565b600081359050612ae781612ac1565b92915050565b60008060408385031215612b0457612b03612491565b5b6000612b12858286016126e7565b9250506020612b2385828601612ad8565b9150509250929050565b600067ffffffffffffffff821115612b4857612b47612811565b5b612b51826125a5565b9050602081019050919050565b6000612b71612b6c84612b2d565b612871565b905082815260208101848484011115612b8d57612b8c61280c565b5b612b988482856128bd565b509392505050565b600082601f830112612bb557612bb4612807565b5b8135612bc5848260208601612b5e565b91505092915050565b60008060008060808587031215612be857612be7612491565b5b6000612bf6878288016126e7565b9450506020612c07878288016126e7565b9350506040612c1887828801612632565b925050606085013567ffffffffffffffff811115612c3957612c38612496565b5b612c4587828801612ba0565b91505092959194509250565b60008060408385031215612c6857612c67612491565b5b6000612c76858286016126e7565b9250506020612c87858286016126e7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612cd857607f821691505b602082108103612ceb57612cea612c91565b5b50919050565b600081905092915050565b60008190508160005260206000209050919050565b60008154612d1e81612cc0565b612d288186612cf1565b94506001821660008114612d435760018114612d5457612d87565b60ff19831686528186019350612d87565b612d5d85612cfc565b60005b83811015612d7f57815481890152600182019150602081019050612d60565b838801955050505b50505092915050565b6000612d9b82612556565b612da58185612cf1565b9350612db5818560208601612572565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000612df7600583612cf1565b9150612e0282612dc1565b600582019050919050565b6000612e198285612d11565b9150612e258284612d90565b9150612e3082612dea565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e7682612ab3565b915061ffff8203612e8a57612e89612e3c565b5b600182019050919050565b6000612ea082612611565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ed257612ed1612e3c565b5b600182019050919050565b6000612ee882612611565b9150612ef383612611565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f2c57612f2b612e3c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612f7182612611565b9150612f7c83612611565b925082612f8c57612f8b612f37565b5b828204905092915050565b6000612fa282612611565b9150612fad83612611565b925082821015612fc057612fbf612e3c565b5b828203905092915050565b6000612fd682612ab3565b9150612fe183612ab3565b92508261ffff03821115612ff857612ff7612e3c565b5b828201905092915050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000613039601883612561565b915061304482613003565b602082019050919050565b600060208201905081810360008301526130688161302c565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006130cb602983612561565b91506130d68261306f565b604082019050919050565b600060208201905081810360008301526130fa816130be565b9050919050565b600061310c82612611565b915061311783612611565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561314c5761314b612e3c565b5b828201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131b3602683612561565b91506131be82613157565b604082019050919050565b600060208201905081810360008301526131e2816131a6565b9050919050565b60006040820190506131fe60008301856126a6565b61320b60208301846126a6565b9392505050565b60008151905061322181612a47565b92915050565b60006020828403121561323d5761323c612491565b5b600061324b84828501613212565b91505092915050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006132b0602183612561565b91506132bb82613254565b604082019050919050565b600060208201905081810360008301526132df816132a3565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000613342603e83612561565b915061334d826132e6565b604082019050919050565b6000602082019050818103600083015261337181613335565b9050919050565b600061338382612611565b915061338e83612611565b92508261339e5761339d612f37565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061340e602083612561565b9150613419826133d8565b602082019050919050565b6000602082019050818103600083015261343d81613401565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006134a0603283612561565b91506134ab82613444565b604082019050919050565b600060208201905081810360008301526134cf81613493565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b6000613532602e83612561565b915061353d826134d6565b604082019050919050565b6000602082019050818103600083015261356181613525565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061359e602083612561565b91506135a982613568565b602082019050919050565b600060208201905081810360008301526135cd81613591565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061360a601c83612561565b9150613615826135d4565b602082019050919050565b60006020820190508181036000830152613639816135fd565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061366782613640565b613671818561364b565b9350613681818560208601612572565b61368a816125a5565b840191505092915050565b60006080820190506136aa60008301876126a6565b6136b760208301866126a6565b6136c460408301856127cf565b81810360608301526136d6818461365c565b905095945050505050565b6000815190506136f0816124c7565b92915050565b60006020828403121561370c5761370b612491565b5b600061371a848285016136e1565b91505092915050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061377f602583612561565b915061378a82613723565b604082019050919050565b600060208201905081810360008301526137ae81613772565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613811602483612561565b915061381c826137b5565b604082019050919050565b6000602082019050818103600083015261384081613804565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061387d601983612561565b915061388882613847565b602082019050919050565b600060208201905081810360008301526138ac81613870565b905091905056fea264697066735822122077570c92cf3922370180f53e557cfa3065ad229b36c2d6068b806a27ab31ecee64736f6c634300080d0033

Deployed Bytecode Sourcemap

51589:36876:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51071:170;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32683:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34196:171;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;87719:157;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;87218:309;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;86613:423;;;:::i;:::-;;87884:163;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47504:442;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;84908:106;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6579:143;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;88055:171;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;85234:452;;;:::i;:::-;;32394:222;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32125:207;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2821:103;;;:::i;:::-;;2173:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32852:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;87535:176;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;85108:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;86321:284;;;:::i;:::-;;88234:228;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;85022:78;;;:::i;:::-;;87045:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;85694:619;;;:::i;:::-;;84792:108;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34665:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3079:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51071:170;51173:4;51197:36;51221:11;51197:23;:36::i;:::-;51190:43;;51071:170;;;:::o;32683:100::-;32737:13;32770:5;32763:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32683:100;:::o;34196:171::-;34272:7;34292:23;34307:7;34292:14;:23::i;:::-;34335:15;:24;34351:7;34335:24;;;;;;;;;;;;;;;;;;;;;34328:31;;34196:171;;;:::o;87719:157::-;87815:8;8100:30;8121:8;8100:20;:30::i;:::-;87836:32:::1;87850:8;87860:7;87836:13;:32::i;:::-;87719:157:::0;;;:::o;87218:309::-;87298:13;87348:4;87332:20;;:12;;;;;;;;;;;:20;;;87329:191;;87400:18;87420;:7;:16;:18::i;:::-;87383:65;;;;;;;;;:::i;:::-;;;;;;;;;;;;;87369:80;;;;87329:191;87489:19;87482:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;87218:309;;;;:::o;86613:423::-;2059:13;:11;:13::i;:::-;86692:17:::1;;;;;;;;;;;86675:34;;:13;;;;;;;;;;;:34;;;;86667:43;;;::::0;::::1;;86748:15;;86729;:34;;86721:43;;;::::0;::::1;;86781:9;86793:13;;;;;;;;;;;86781:25;;;;86777:252;86813:17;;;;;;;;;;;86808:22;;:1;:22;86777:252;;86852:15;86870:25;:15;:23;:25::i;:::-;86852:43;;86910:34;86920:10;86932:7;86910:34;;;;;;;;;;;::::0;:9:::1;:34::i;:::-;86959:27;:15;:25;:27::i;:::-;87001:13;;:16;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;86837:192;86832:3;;;;;:::i;:::-;;;;86777:252;;;;86613:423::o:0;87884:163::-;87985:4;7928:10;7920:18;;:4;:18;;;7916:83;;7955:32;7976:10;7955:20;:32::i;:::-;7916:83;88002:37:::1;88021:4;88027:2;88031:7;88002:18;:37::i;:::-;87884:163:::0;;;;:::o;47504:442::-;47601:7;47610;47630:26;47659:17;:27;47677:8;47659:27;;;;;;;;;;;47630:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47731:1;47703:30;;:7;:16;;;:30;;;47699:92;;47760:19;47750:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47699:92;47803:21;47868:17;:15;:17::i;:::-;47827:58;;47841:7;:23;;;47828:36;;:10;:36;;;;:::i;:::-;47827:58;;;;:::i;:::-;47803:82;;47906:7;:16;;;47924:13;47898:40;;;;;;47504:442;;;;;:::o;84908:106::-;2059:13;:11;:13::i;:::-;85003:3:::1;84982:18;:24;;;;;;;;;;;;:::i;:::-;;84908:106:::0;:::o;6579:143::-;6679:42;6579:143;:::o;88055:171::-;88160:4;7928:10;7920:18;;:4;:18;;;7916:83;;7955:32;7976:10;7955:20;:32::i;:::-;7916:83;88177:41:::1;88200:4;88206:2;88210:7;88177:22;:41::i;:::-;88055:171:::0;;;;:::o;85234:452::-;85341:1;85316:21;85326:10;85316:9;:21::i;:::-;85280;:33;85302:10;85280:33;;;;;;;;;;;;;;;;:57;;;;:::i;:::-;:62;;85272:71;;;;;;85383:17;;;;;;;;;;;85362:38;;85378:1;85362:13;;;;;;;;;;;:17;;;;:::i;:::-;:38;;;;85354:47;;;;;;85439:17;;85420:15;:36;;85412:45;;;;;;85494:15;;85476;:33;85468:42;;;;;;85523:15;85541:25;:15;:23;:25::i;:::-;85523:43;;85579:34;85589:10;85601:7;85579:34;;;;;;;;;;;;:9;:34::i;:::-;85624:27;:15;:25;:27::i;:::-;85662:13;;:16;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;85261:425;85234:452::o;32394:222::-;32466:7;32486:13;32502:7;:16;32510:7;32502:16;;;;;;;;;;;;;;;;;;;;;32486:32;;32554:1;32537:19;;:5;:19;;;32529:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;32603:5;32596:12;;;32394:222;;;:::o;32125:207::-;32197:7;32242:1;32225:19;;:5;:19;;;32217:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;32308:9;:16;32318:5;32308:16;;;;;;;;;;;;;;;;32301:23;;32125:207;;;:::o;2821:103::-;2059:13;:11;:13::i;:::-;2886:30:::1;2913:1;2886:18;:30::i;:::-;2821:103::o:0;2173:87::-;2219:7;2246:6;;;;;;;;;;;2239:13;;2173:87;:::o;32852:104::-;32908:13;32941:7;32934:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32852:104;:::o;87535:176::-;87639:8;8100:30;8121:8;8100:20;:30::i;:::-;87660:43:::1;87684:8;87694;87660:23;:43::i;:::-;87535:176:::0;;;:::o;85108:118::-;2059:13;:11;:13::i;:::-;85212:6:::1;85184:34;;:21;:25;85206:2;85184:25;;;;;;;;;;;;;;;:34;;;;85108:118:::0;;:::o;86321:284::-;2059:13;:11;:13::i;:::-;86395:17:::1;;;;;;;;;;;86378:34;;:13;;;;;;;;;;;:34;;;;86370:43;;;::::0;::::1;;86451:15;;86432;:34;;86424:43;;;::::0;::::1;;86480:15;86498:25;:15;:23;:25::i;:::-;86480:43;;86536:34;86546:10;86558:7;86536:34;;;;;;;;;;;::::0;:9:::1;:34::i;:::-;86581:13;;:16;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;86359:246;86321:284::o:0;88234:228::-;88385:4;7928:10;7920:18;;:4;:18;;;7916:83;;7955:32;7976:10;7955:20;:32::i;:::-;7916:83;88407:47:::1;88430:4;88436:2;88440:7;88449:4;88407:22;:47::i;:::-;88234:228:::0;;;;;:::o;85022:78::-;2059:13;:11;:13::i;:::-;85088:4:::1;85073:12;;:19;;;;;;;;;;;;;;;;;;85022:78::o:0;87045:161::-;87145:13;87183:15;87190:7;87183:6;:15::i;:::-;87176:22;;87045:161;;;:::o;85694:619::-;85737:26;85802:21;85812:10;85802:9;:21::i;:::-;85766;:33;85788:10;85766:33;;;;;;;;;;;;;;;;:57;;;;:::i;:::-;85737:86;;85864:1;85842:18;:23;;85834:32;;;;;;85925:17;;;;;;;;;;;85885:57;;85907:13;;;;;;;;;;;85886:34;;:18;:34;;;;:::i;:::-;85885:57;;85877:66;;;;;;85981:17;;85962:15;:36;;85954:45;;;;;;86036:15;;86018;:33;86010:42;;;;;;86070:9;86065:241;86089:18;86085:1;:22;86065:241;;;86129:15;86147:25;:15;:23;:25::i;:::-;86129:43;;86187:34;86197:10;86209:7;86187:34;;;;;;;;;;;;:9;:34::i;:::-;86236:27;:15;:25;:27::i;:::-;86278:13;;:16;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;86114:192;86109:3;;;;;:::i;:::-;;;;86065:241;;;;85726:587;85694:619::o;84792:108::-;2059:13;:11;:13::i;:::-;84889:3:::1;84867:19;:25;;;;;;;;;;;;:::i;:::-;;84792:108:::0;:::o;34665:164::-;34762:4;34786:18;:25;34805:5;34786:25;;;;;;;;;;;;;;;:35;34812:8;34786:35;;;;;;;;;;;;;;;;;;;;;;;;;34779:42;;34665:164;;;;:::o;3079:201::-;2059:13;:11;:13::i;:::-;3188:1:::1;3168:22;;:8;:22;;::::0;3160:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3244:28;3263:8;3244:18;:28::i;:::-;3079:201:::0;:::o;31756:305::-;31858:4;31910:25;31895:40;;;:11;:40;;;;:105;;;;31967:33;31952:48;;;:11;:48;;;;31895:105;:158;;;;32017:36;32041:11;32017:23;:36::i;:::-;31895:158;31875:178;;31756:305;;;:::o;42171:135::-;42253:16;42261:7;42253;:16::i;:::-;42245:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;42171:135;:::o;8158:419::-;8397:1;6679:42;8349:45;;;:49;8345:225;;;6679:42;8420;;;8471:4;8478:8;8420:67;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8415:144;;8534:8;8515:28;;;;;;;;;;;:::i;:::-;;;;;;;;8415:144;8345:225;8158:419;:::o;33713:417::-;33794:13;33810:23;33825:7;33810:14;:23::i;:::-;33794:39;;33858:5;33852:11;;:2;:11;;;33844:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;33952:5;33936:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;33961:37;33978:5;33985:12;:10;:12::i;:::-;33961:16;:37::i;:::-;33936:62;33914:174;;;;;;;;;;;;:::i;:::-;;;;;;;;;34101:21;34110:2;34114:7;34101:8;:21::i;:::-;33783:347;33713:417;;:::o;9521:723::-;9577:13;9807:1;9798:5;:10;9794:53;;9825:10;;;;;;;;;;;;;;;;;;;;;9794:53;9857:12;9872:5;9857:20;;9888:14;9913:78;9928:1;9920:4;:9;9913:78;;9946:8;;;;;:::i;:::-;;;;9977:2;9969:10;;;;;:::i;:::-;;;9913:78;;;10001:19;10033:6;10023:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10001:39;;10051:154;10067:1;10058:5;:10;10051:154;;10095:1;10085:11;;;;;:::i;:::-;;;10162:2;10154:5;:10;;;;:::i;:::-;10141:2;:24;;;;:::i;:::-;10128:39;;10111:6;10118;10111:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;10191:2;10182:11;;;;;:::i;:::-;;;10051:154;;;10229:6;10215:21;;;;;9521:723;;;;:::o;2338:132::-;2413:12;:10;:12::i;:::-;2402:23;;:7;:5;:7::i;:::-;:23;;;2394:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2338:132::o;12468:114::-;12533:7;12560;:14;;;12553:21;;12468:114;;;:::o;38626:319::-;38755:18;38761:2;38765:7;38755:5;:18::i;:::-;38806:53;38837:1;38841:2;38845:7;38854:4;38806:22;:53::i;:::-;38784:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;38626:319;;;:::o;12590:127::-;12697:1;12679:7;:14;;;:19;;;;;;;;;;;12590:127;:::o;34896:336::-;35091:41;35110:12;:10;:12::i;:::-;35124:7;35091:18;:41::i;:::-;35083:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;35196:28;35206:4;35212:2;35216:7;35196:9;:28::i;:::-;34896:336;;;:::o;48228:97::-;48286:6;48312:5;48305:12;;48228:97;:::o;35303:185::-;35441:39;35458:4;35464:2;35468:7;35441:39;;;;;;;;;;;;:16;:39::i;:::-;35303:185;;;:::o;3440:191::-;3514:16;3533:6;;;;;;;;;;;3514:25;;3559:8;3550:6;;:17;;;;;;;;;;;;;;;;;;3614:8;3583:40;;3604:8;3583:40;;;;;;;;;;;;3503:128;3440:191;:::o;34439:155::-;34534:52;34553:12;:10;:12::i;:::-;34567:8;34577;34534:18;:52::i;:::-;34439:155;;:::o;35559:323::-;35733:41;35752:12;:10;:12::i;:::-;35766:7;35733:18;:41::i;:::-;35725:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;35836:38;35850:4;35856:2;35860:7;35869:4;35836:13;:38::i;:::-;35559:323;;;;:::o;47234:215::-;47336:4;47375:26;47360:41;;;:11;:41;;;;:81;;;;47405:36;47429:11;47405:23;:36::i;:::-;47360:81;47353:88;;47234:215;;;:::o;37389:127::-;37454:4;37506:1;37478:30;;:7;:16;37486:7;37478:16;;;;;;;;;;;;;;;;;;;;;:30;;;;37471:37;;37389:127;;;:::o;718:98::-;771:7;798:10;791:17;;718:98;:::o;41450:174::-;41552:2;41525:15;:24;41541:7;41525:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;41608:7;41604:2;41570:46;;41579:23;41594:7;41579:14;:23::i;:::-;41570:46;;;;;;;;;;;;41450:174;;:::o;39281:439::-;39375:1;39361:16;;:2;:16;;;39353:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;39434:16;39442:7;39434;:16::i;:::-;39433:17;39425:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;39496:45;39525:1;39529:2;39533:7;39496:20;:45::i;:::-;39571:1;39554:9;:13;39564:2;39554:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;39602:2;39583:7;:16;39591:7;39583:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;39647:7;39643:2;39622:33;;39639:1;39622:33;;;;;;;;;;;;39668:44;39696:1;39700:2;39704:7;39668:19;:44::i;:::-;39281:439;;:::o;42870:853::-;43024:4;43045:15;:2;:13;;;:15::i;:::-;43041:675;;;43097:2;43081:36;;;43118:12;:10;:12::i;:::-;43132:4;43138:7;43147:4;43081:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;43077:584;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43339:1;43322:6;:13;:18;43318:328;;43365:60;;;;;;;;;;:::i;:::-;;;;;;;;43318:328;43596:6;43590:13;43581:6;43577:2;43573:15;43566:38;43077:584;43213:41;;;43203:51;;;:6;:51;;;;43196:58;;;;;43041:675;43700:4;43693:11;;42870:853;;;;;;;:::o;37683:264::-;37776:4;37793:13;37809:23;37824:7;37809:14;:23::i;:::-;37793:39;;37862:5;37851:16;;:7;:16;;;:52;;;;37871:32;37888:5;37895:7;37871:16;:32::i;:::-;37851:52;:87;;;;37931:7;37907:31;;:20;37919:7;37907:11;:20::i;:::-;:31;;;37851:87;37843:96;;;37683:264;;;;:::o;40706:625::-;40865:4;40838:31;;:23;40853:7;40838:14;:23::i;:::-;:31;;;40830:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;40944:1;40930:16;;:2;:16;;;40922:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;41000:39;41021:4;41027:2;41031:7;41000:20;:39::i;:::-;41104:29;41121:1;41125:7;41104:8;:29::i;:::-;41165:1;41146:9;:15;41156:4;41146:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;41194:1;41177:9;:13;41187:2;41177:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;41225:2;41206:7;:16;41214:7;41206:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;41264:7;41260:2;41245:27;;41254:4;41245:27;;;;;;;;;;;;41285:38;41305:4;41311:2;41315:7;41285:19;:38::i;:::-;40706:625;;;:::o;41767:315::-;41922:8;41913:17;;:5;:17;;;41905:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;42009:8;41971:18;:25;41990:5;41971:25;;;;;;;;;;;;;;;:35;41997:8;41971:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;42055:8;42033:41;;42048:5;42033:41;;;42065:8;42033:41;;;;;;:::i;:::-;;;;;;;;41767:315;;;:::o;36763:313::-;36919:28;36929:4;36935:2;36939:7;36919:9;:28::i;:::-;36966:47;36989:4;36995:2;36999:7;37008:4;36966:22;:47::i;:::-;36958:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;36763:313;;;;:::o;28298:157::-;28383:4;28422:25;28407:40;;;:11;:40;;;;28400:47;;28298:157;;;:::o;44295:126::-;;;;:::o;44806:125::-;;;;:::o;14302:326::-;14362:4;14619:1;14597:7;:19;;;:23;14590:30;;14302:326;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::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:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:619::-;5015:6;5023;5031;5080:2;5068:9;5059:7;5055:23;5051:32;5048:119;;;5086:79;;:::i;:::-;5048:119;5206:1;5231:53;5276:7;5267:6;5256:9;5252:22;5231:53;:::i;:::-;5221:63;;5177:117;5333:2;5359:53;5404:7;5395:6;5384:9;5380:22;5359:53;:::i;:::-;5349:63;;5304:118;5461:2;5487:53;5532:7;5523:6;5512:9;5508:22;5487:53;:::i;:::-;5477:63;;5432:118;4938:619;;;;;:::o;5563:474::-;5631:6;5639;5688:2;5676:9;5667:7;5663:23;5659:32;5656:119;;;5694:79;;:::i;:::-;5656:119;5814:1;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5785:117;5941:2;5967:53;6012:7;6003:6;5992:9;5988:22;5967:53;:::i;:::-;5957:63;;5912:118;5563:474;;;;;:::o;6043:118::-;6130:24;6148:5;6130:24;:::i;:::-;6125:3;6118:37;6043:118;;:::o;6167:332::-;6288:4;6326:2;6315:9;6311:18;6303:26;;6339:71;6407:1;6396:9;6392:17;6383:6;6339:71;:::i;:::-;6420:72;6488:2;6477:9;6473:18;6464:6;6420:72;:::i;:::-;6167:332;;;;;:::o;6505:117::-;6614:1;6611;6604:12;6628:117;6737:1;6734;6727:12;6751:180;6799:77;6796:1;6789:88;6896:4;6893:1;6886:15;6920:4;6917:1;6910:15;6937:281;7020:27;7042:4;7020:27;:::i;:::-;7012:6;7008:40;7150:6;7138:10;7135:22;7114:18;7102:10;7099:34;7096:62;7093:88;;;7161:18;;:::i;:::-;7093:88;7201:10;7197:2;7190:22;6980:238;6937:281;;:::o;7224:129::-;7258:6;7285:20;;:::i;:::-;7275:30;;7314:33;7342:4;7334:6;7314:33;:::i;:::-;7224:129;;;:::o;7359:308::-;7421:4;7511:18;7503:6;7500:30;7497:56;;;7533:18;;:::i;:::-;7497:56;7571:29;7593:6;7571:29;:::i;:::-;7563:37;;7655:4;7649;7645:15;7637:23;;7359:308;;;:::o;7673:154::-;7757:6;7752:3;7747;7734:30;7819:1;7810:6;7805:3;7801:16;7794:27;7673:154;;;:::o;7833:412::-;7911:5;7936:66;7952:49;7994:6;7952:49;:::i;:::-;7936:66;:::i;:::-;7927:75;;8025:6;8018:5;8011:21;8063:4;8056:5;8052:16;8101:3;8092:6;8087:3;8083:16;8080:25;8077:112;;;8108:79;;:::i;:::-;8077:112;8198:41;8232:6;8227:3;8222;8198:41;:::i;:::-;7917:328;7833:412;;;;;:::o;8265:340::-;8321:5;8370:3;8363:4;8355:6;8351:17;8347:27;8337:122;;8378:79;;:::i;:::-;8337:122;8495:6;8482:20;8520:79;8595:3;8587:6;8580:4;8572:6;8568:17;8520:79;:::i;:::-;8511:88;;8327:278;8265:340;;;;:::o;8611:509::-;8680:6;8729:2;8717:9;8708:7;8704:23;8700:32;8697:119;;;8735:79;;:::i;:::-;8697:119;8883:1;8872:9;8868:17;8855:31;8913:18;8905:6;8902:30;8899:117;;;8935:79;;:::i;:::-;8899:117;9040:63;9095:7;9086:6;9075:9;9071:22;9040:63;:::i;:::-;9030:73;;8826:287;8611:509;;;;:::o;9126:60::-;9154:3;9175:5;9168:12;;9126:60;;;:::o;9192:142::-;9242:9;9275:53;9293:34;9302:24;9320:5;9302:24;:::i;:::-;9293:34;:::i;:::-;9275:53;:::i;:::-;9262:66;;9192:142;;;:::o;9340:126::-;9390:9;9423:37;9454:5;9423:37;:::i;:::-;9410:50;;9340:126;;;:::o;9472:157::-;9553:9;9586:37;9617:5;9586:37;:::i;:::-;9573:50;;9472:157;;;:::o;9635:193::-;9753:68;9815:5;9753:68;:::i;:::-;9748:3;9741:81;9635:193;;:::o;9834:284::-;9958:4;9996:2;9985:9;9981:18;9973:26;;10009:102;10108:1;10097:9;10093:17;10084:6;10009:102;:::i;:::-;9834:284;;;;:::o;10124:329::-;10183:6;10232:2;10220:9;10211:7;10207:23;10203:32;10200:119;;;10238:79;;:::i;:::-;10200:119;10358:1;10383:53;10428:7;10419:6;10408:9;10404:22;10383:53;:::i;:::-;10373:63;;10329:117;10124:329;;;;:::o;10459:222::-;10552:4;10590:2;10579:9;10575:18;10567:26;;10603:71;10671:1;10660:9;10656:17;10647:6;10603:71;:::i;:::-;10459:222;;;;:::o;10687:116::-;10757:21;10772:5;10757:21;:::i;:::-;10750:5;10747:32;10737:60;;10793:1;10790;10783:12;10737:60;10687:116;:::o;10809:133::-;10852:5;10890:6;10877:20;10868:29;;10906:30;10930:5;10906:30;:::i;:::-;10809:133;;;;:::o;10948:468::-;11013:6;11021;11070:2;11058:9;11049:7;11045:23;11041:32;11038:119;;;11076:79;;:::i;:::-;11038:119;11196:1;11221:53;11266:7;11257:6;11246:9;11242:22;11221:53;:::i;:::-;11211:63;;11167:117;11323:2;11349:50;11391:7;11382:6;11371:9;11367:22;11349:50;:::i;:::-;11339:60;;11294:115;10948:468;;;;;:::o;11422:89::-;11458:7;11498:6;11491:5;11487:18;11476:29;;11422:89;;;:::o;11517:120::-;11589:23;11606:5;11589:23;:::i;:::-;11582:5;11579:34;11569:62;;11627:1;11624;11617:12;11569:62;11517:120;:::o;11643:137::-;11688:5;11726:6;11713:20;11704:29;;11742:32;11768:5;11742:32;:::i;:::-;11643:137;;;;:::o;11786:472::-;11853:6;11861;11910:2;11898:9;11889:7;11885:23;11881:32;11878:119;;;11916:79;;:::i;:::-;11878:119;12036:1;12061:53;12106:7;12097:6;12086:9;12082:22;12061:53;:::i;:::-;12051:63;;12007:117;12163:2;12189:52;12233:7;12224:6;12213:9;12209:22;12189:52;:::i;:::-;12179:62;;12134:117;11786:472;;;;;:::o;12264:307::-;12325:4;12415:18;12407:6;12404:30;12401:56;;;12437:18;;:::i;:::-;12401:56;12475:29;12497:6;12475:29;:::i;:::-;12467:37;;12559:4;12553;12549:15;12541:23;;12264:307;;;:::o;12577:410::-;12654:5;12679:65;12695:48;12736:6;12695:48;:::i;:::-;12679:65;:::i;:::-;12670:74;;12767:6;12760:5;12753:21;12805:4;12798:5;12794:16;12843:3;12834:6;12829:3;12825:16;12822:25;12819:112;;;12850:79;;:::i;:::-;12819:112;12940:41;12974:6;12969:3;12964;12940:41;:::i;:::-;12660:327;12577:410;;;;;:::o;13006:338::-;13061:5;13110:3;13103:4;13095:6;13091:17;13087:27;13077:122;;13118:79;;:::i;:::-;13077:122;13235:6;13222:20;13260:78;13334:3;13326:6;13319:4;13311:6;13307:17;13260:78;:::i;:::-;13251:87;;13067:277;13006:338;;;;:::o;13350:943::-;13445:6;13453;13461;13469;13518:3;13506:9;13497:7;13493:23;13489:33;13486:120;;;13525:79;;:::i;:::-;13486:120;13645:1;13670:53;13715:7;13706:6;13695:9;13691:22;13670:53;:::i;:::-;13660:63;;13616:117;13772:2;13798:53;13843:7;13834:6;13823:9;13819:22;13798:53;:::i;:::-;13788:63;;13743:118;13900:2;13926:53;13971:7;13962:6;13951:9;13947:22;13926:53;:::i;:::-;13916:63;;13871:118;14056:2;14045:9;14041:18;14028:32;14087:18;14079:6;14076:30;14073:117;;;14109:79;;:::i;:::-;14073:117;14214:62;14268:7;14259:6;14248:9;14244:22;14214:62;:::i;:::-;14204:72;;13999:287;13350:943;;;;;;;:::o;14299:474::-;14367:6;14375;14424:2;14412:9;14403:7;14399:23;14395:32;14392:119;;;14430:79;;:::i;:::-;14392:119;14550:1;14575:53;14620:7;14611:6;14600:9;14596:22;14575:53;:::i;:::-;14565:63;;14521:117;14677:2;14703:53;14748:7;14739:6;14728:9;14724:22;14703:53;:::i;:::-;14693:63;;14648:118;14299:474;;;;;:::o;14779:180::-;14827:77;14824:1;14817:88;14924:4;14921:1;14914:15;14948:4;14945:1;14938:15;14965:320;15009:6;15046:1;15040:4;15036:12;15026:22;;15093:1;15087:4;15083:12;15114:18;15104:81;;15170:4;15162:6;15158:17;15148:27;;15104:81;15232:2;15224:6;15221:14;15201:18;15198:38;15195:84;;15251:18;;:::i;:::-;15195:84;15016:269;14965:320;;;:::o;15291:148::-;15393:11;15430:3;15415:18;;15291:148;;;;:::o;15445:141::-;15494:4;15517:3;15509:11;;15540:3;15537:1;15530:14;15574:4;15571:1;15561:18;15553:26;;15445:141;;;:::o;15616:845::-;15719:3;15756:5;15750:12;15785:36;15811:9;15785:36;:::i;:::-;15837:89;15919:6;15914:3;15837:89;:::i;:::-;15830:96;;15957:1;15946:9;15942:17;15973:1;15968:137;;;;16119:1;16114:341;;;;15935:520;;15968:137;16052:4;16048:9;16037;16033:25;16028:3;16021:38;16088:6;16083:3;16079:16;16072:23;;15968:137;;16114:341;16181:38;16213:5;16181:38;:::i;:::-;16241:1;16255:154;16269:6;16266:1;16263:13;16255:154;;;16343:7;16337:14;16333:1;16328:3;16324:11;16317:35;16393:1;16384:7;16380:15;16369:26;;16291:4;16288:1;16284:12;16279:17;;16255:154;;;16438:6;16433:3;16429:16;16422:23;;16121:334;;15935:520;;15723:738;;15616:845;;;;:::o;16467:377::-;16573:3;16601:39;16634:5;16601:39;:::i;:::-;16656:89;16738:6;16733:3;16656:89;:::i;:::-;16649:96;;16754:52;16799:6;16794:3;16787:4;16780:5;16776:16;16754:52;:::i;:::-;16831:6;16826:3;16822:16;16815:23;;16577:267;16467:377;;;;:::o;16850:155::-;16990:7;16986:1;16978:6;16974:14;16967:31;16850:155;:::o;17011:400::-;17171:3;17192:84;17274:1;17269:3;17192:84;:::i;:::-;17185:91;;17285:93;17374:3;17285:93;:::i;:::-;17403:1;17398:3;17394:11;17387:18;;17011:400;;;:::o;17417:695::-;17695:3;17717:92;17805:3;17796:6;17717:92;:::i;:::-;17710:99;;17826:95;17917:3;17908:6;17826:95;:::i;:::-;17819:102;;17938:148;18082:3;17938:148;:::i;:::-;17931:155;;18103:3;18096:10;;17417:695;;;;;:::o;18118:180::-;18166:77;18163:1;18156:88;18263:4;18260:1;18253:15;18287:4;18284:1;18277:15;18304:171;18342:3;18365:23;18382:5;18365:23;:::i;:::-;18356:32;;18410:6;18403:5;18400:17;18397:43;;18420:18;;:::i;:::-;18397:43;18467:1;18460:5;18456:13;18449:20;;18304:171;;;:::o;18481:233::-;18520:3;18543:24;18561:5;18543:24;:::i;:::-;18534:33;;18589:66;18582:5;18579:77;18576:103;;18659:18;;:::i;:::-;18576:103;18706:1;18699:5;18695:13;18688:20;;18481:233;;;:::o;18720:348::-;18760:7;18783:20;18801:1;18783:20;:::i;:::-;18778:25;;18817:20;18835:1;18817:20;:::i;:::-;18812:25;;19005:1;18937:66;18933:74;18930:1;18927:81;18922:1;18915:9;18908:17;18904:105;18901:131;;;19012:18;;:::i;:::-;18901:131;19060:1;19057;19053:9;19042:20;;18720:348;;;;:::o;19074:180::-;19122:77;19119:1;19112:88;19219:4;19216:1;19209:15;19243:4;19240:1;19233:15;19260:185;19300:1;19317:20;19335:1;19317:20;:::i;:::-;19312:25;;19351:20;19369:1;19351:20;:::i;:::-;19346:25;;19390:1;19380:35;;19395:18;;:::i;:::-;19380:35;19437:1;19434;19430:9;19425:14;;19260:185;;;;:::o;19451:191::-;19491:4;19511:20;19529:1;19511:20;:::i;:::-;19506:25;;19545:20;19563:1;19545:20;:::i;:::-;19540:25;;19584:1;19581;19578:8;19575:34;;;19589:18;;:::i;:::-;19575:34;19634:1;19631;19627:9;19619:17;;19451:191;;;;:::o;19648:242::-;19687:3;19706:19;19723:1;19706:19;:::i;:::-;19701:24;;19739:19;19756:1;19739:19;:::i;:::-;19734:24;;19832:1;19824:6;19820:14;19817:1;19814:21;19811:47;;;19838:18;;:::i;:::-;19811:47;19882:1;19879;19875:9;19868:16;;19648:242;;;;:::o;19896:174::-;20036:26;20032:1;20024:6;20020:14;20013:50;19896:174;:::o;20076:366::-;20218:3;20239:67;20303:2;20298:3;20239:67;:::i;:::-;20232:74;;20315:93;20404:3;20315:93;:::i;:::-;20433:2;20428:3;20424:12;20417:19;;20076:366;;;:::o;20448:419::-;20614:4;20652:2;20641:9;20637:18;20629:26;;20701:9;20695:4;20691:20;20687:1;20676:9;20672:17;20665:47;20729:131;20855:4;20729:131;:::i;:::-;20721:139;;20448:419;;;:::o;20873:228::-;21013:34;21009:1;21001:6;20997:14;20990:58;21082:11;21077:2;21069:6;21065:15;21058:36;20873:228;:::o;21107:366::-;21249:3;21270:67;21334:2;21329:3;21270:67;:::i;:::-;21263:74;;21346:93;21435:3;21346:93;:::i;:::-;21464:2;21459:3;21455:12;21448:19;;21107:366;;;:::o;21479:419::-;21645:4;21683:2;21672:9;21668:18;21660:26;;21732:9;21726:4;21722:20;21718:1;21707:9;21703:17;21696:47;21760:131;21886:4;21760:131;:::i;:::-;21752:139;;21479:419;;;:::o;21904:305::-;21944:3;21963:20;21981:1;21963:20;:::i;:::-;21958:25;;21997:20;22015:1;21997:20;:::i;:::-;21992:25;;22151:1;22083:66;22079:74;22076:1;22073:81;22070:107;;;22157:18;;:::i;:::-;22070:107;22201:1;22198;22194:9;22187:16;;21904:305;;;;:::o;22215:225::-;22355:34;22351:1;22343:6;22339:14;22332:58;22424:8;22419:2;22411:6;22407:15;22400:33;22215:225;:::o;22446:366::-;22588:3;22609:67;22673:2;22668:3;22609:67;:::i;:::-;22602:74;;22685:93;22774:3;22685:93;:::i;:::-;22803:2;22798:3;22794:12;22787:19;;22446:366;;;:::o;22818:419::-;22984:4;23022:2;23011:9;23007:18;22999:26;;23071:9;23065:4;23061:20;23057:1;23046:9;23042:17;23035:47;23099:131;23225:4;23099:131;:::i;:::-;23091:139;;22818:419;;;:::o;23243:332::-;23364:4;23402:2;23391:9;23387:18;23379:26;;23415:71;23483:1;23472:9;23468:17;23459:6;23415:71;:::i;:::-;23496:72;23564:2;23553:9;23549:18;23540:6;23496:72;:::i;:::-;23243:332;;;;;:::o;23581:137::-;23635:5;23666:6;23660:13;23651:22;;23682:30;23706:5;23682:30;:::i;:::-;23581:137;;;;:::o;23724:345::-;23791:6;23840:2;23828:9;23819:7;23815:23;23811:32;23808:119;;;23846:79;;:::i;:::-;23808:119;23966:1;23991:61;24044:7;24035:6;24024:9;24020:22;23991:61;:::i;:::-;23981:71;;23937:125;23724:345;;;;:::o;24075:220::-;24215:34;24211:1;24203:6;24199:14;24192:58;24284:3;24279:2;24271:6;24267:15;24260:28;24075:220;:::o;24301:366::-;24443:3;24464:67;24528:2;24523:3;24464:67;:::i;:::-;24457:74;;24540:93;24629:3;24540:93;:::i;:::-;24658:2;24653:3;24649:12;24642:19;;24301:366;;;:::o;24673:419::-;24839:4;24877:2;24866:9;24862:18;24854:26;;24926:9;24920:4;24916:20;24912:1;24901:9;24897:17;24890:47;24954:131;25080:4;24954:131;:::i;:::-;24946:139;;24673:419;;;:::o;25098:249::-;25238:34;25234:1;25226:6;25222:14;25215:58;25307:32;25302:2;25294:6;25290:15;25283:57;25098:249;:::o;25353:366::-;25495:3;25516:67;25580:2;25575:3;25516:67;:::i;:::-;25509:74;;25592:93;25681:3;25592:93;:::i;:::-;25710:2;25705:3;25701:12;25694:19;;25353:366;;;:::o;25725:419::-;25891:4;25929:2;25918:9;25914:18;25906:26;;25978:9;25972:4;25968:20;25964:1;25953:9;25949:17;25942:47;26006:131;26132:4;26006:131;:::i;:::-;25998:139;;25725:419;;;:::o;26150:176::-;26182:1;26199:20;26217:1;26199:20;:::i;:::-;26194:25;;26233:20;26251:1;26233:20;:::i;:::-;26228:25;;26272:1;26262:35;;26277:18;;:::i;:::-;26262:35;26318:1;26315;26311:9;26306:14;;26150:176;;;;:::o;26332:180::-;26380:77;26377:1;26370:88;26477:4;26474:1;26467:15;26501:4;26498:1;26491:15;26518:182;26658:34;26654:1;26646:6;26642:14;26635:58;26518:182;:::o;26706:366::-;26848:3;26869:67;26933:2;26928:3;26869:67;:::i;:::-;26862:74;;26945:93;27034:3;26945:93;:::i;:::-;27063:2;27058:3;27054:12;27047:19;;26706:366;;;:::o;27078:419::-;27244:4;27282:2;27271:9;27267:18;27259:26;;27331:9;27325:4;27321:20;27317:1;27306:9;27302:17;27295:47;27359:131;27485:4;27359:131;:::i;:::-;27351:139;;27078:419;;;:::o;27503:237::-;27643:34;27639:1;27631:6;27627:14;27620:58;27712:20;27707:2;27699:6;27695:15;27688:45;27503:237;:::o;27746:366::-;27888:3;27909:67;27973:2;27968:3;27909:67;:::i;:::-;27902:74;;27985:93;28074:3;27985:93;:::i;:::-;28103:2;28098:3;28094:12;28087:19;;27746:366;;;:::o;28118:419::-;28284:4;28322:2;28311:9;28307:18;28299:26;;28371:9;28365:4;28361:20;28357:1;28346:9;28342:17;28335:47;28399:131;28525:4;28399:131;:::i;:::-;28391:139;;28118:419;;;:::o;28543:233::-;28683:34;28679:1;28671:6;28667:14;28660:58;28752:16;28747:2;28739:6;28735:15;28728:41;28543:233;:::o;28782:366::-;28924:3;28945:67;29009:2;29004:3;28945:67;:::i;:::-;28938:74;;29021:93;29110:3;29021:93;:::i;:::-;29139:2;29134:3;29130:12;29123:19;;28782:366;;;:::o;29154:419::-;29320:4;29358:2;29347:9;29343:18;29335:26;;29407:9;29401:4;29397:20;29393:1;29382:9;29378:17;29371:47;29435:131;29561:4;29435:131;:::i;:::-;29427:139;;29154:419;;;:::o;29579:182::-;29719:34;29715:1;29707:6;29703:14;29696:58;29579:182;:::o;29767:366::-;29909:3;29930:67;29994:2;29989:3;29930:67;:::i;:::-;29923:74;;30006:93;30095:3;30006:93;:::i;:::-;30124:2;30119:3;30115:12;30108:19;;29767:366;;;:::o;30139:419::-;30305:4;30343:2;30332:9;30328:18;30320:26;;30392:9;30386:4;30382:20;30378:1;30367:9;30363:17;30356:47;30420:131;30546:4;30420:131;:::i;:::-;30412:139;;30139:419;;;:::o;30564:178::-;30704:30;30700:1;30692:6;30688:14;30681:54;30564:178;:::o;30748:366::-;30890:3;30911:67;30975:2;30970:3;30911:67;:::i;:::-;30904:74;;30987:93;31076:3;30987:93;:::i;:::-;31105:2;31100:3;31096:12;31089:19;;30748:366;;;:::o;31120:419::-;31286:4;31324:2;31313:9;31309:18;31301:26;;31373:9;31367:4;31363:20;31359:1;31348:9;31344:17;31337:47;31401:131;31527:4;31401:131;:::i;:::-;31393:139;;31120:419;;;:::o;31545:98::-;31596:6;31630:5;31624:12;31614:22;;31545:98;;;:::o;31649:168::-;31732:11;31766:6;31761:3;31754:19;31806:4;31801:3;31797:14;31782:29;;31649:168;;;;:::o;31823:360::-;31909:3;31937:38;31969:5;31937:38;:::i;:::-;31991:70;32054:6;32049:3;31991:70;:::i;:::-;31984:77;;32070:52;32115:6;32110:3;32103:4;32096:5;32092:16;32070:52;:::i;:::-;32147:29;32169:6;32147:29;:::i;:::-;32142:3;32138:39;32131:46;;31913:270;31823:360;;;;:::o;32189:640::-;32384:4;32422:3;32411:9;32407:19;32399:27;;32436:71;32504:1;32493:9;32489:17;32480:6;32436:71;:::i;:::-;32517:72;32585:2;32574:9;32570:18;32561:6;32517:72;:::i;:::-;32599;32667:2;32656:9;32652:18;32643:6;32599:72;:::i;:::-;32718:9;32712:4;32708:20;32703:2;32692:9;32688:18;32681:48;32746:76;32817:4;32808:6;32746:76;:::i;:::-;32738:84;;32189:640;;;;;;;:::o;32835:141::-;32891:5;32922:6;32916:13;32907:22;;32938:32;32964:5;32938:32;:::i;:::-;32835:141;;;;:::o;32982:349::-;33051:6;33100:2;33088:9;33079:7;33075:23;33071:32;33068:119;;;33106:79;;:::i;:::-;33068:119;33226:1;33251:63;33306:7;33297:6;33286:9;33282:22;33251:63;:::i;:::-;33241:73;;33197:127;32982:349;;;;:::o;33337:224::-;33477:34;33473:1;33465:6;33461:14;33454:58;33546:7;33541:2;33533:6;33529:15;33522:32;33337:224;:::o;33567:366::-;33709:3;33730:67;33794:2;33789:3;33730:67;:::i;:::-;33723:74;;33806:93;33895:3;33806:93;:::i;:::-;33924:2;33919:3;33915:12;33908:19;;33567:366;;;:::o;33939:419::-;34105:4;34143:2;34132:9;34128:18;34120:26;;34192:9;34186:4;34182:20;34178:1;34167:9;34163:17;34156:47;34220:131;34346:4;34220:131;:::i;:::-;34212:139;;33939:419;;;:::o;34364:223::-;34504:34;34500:1;34492:6;34488:14;34481:58;34573:6;34568:2;34560:6;34556:15;34549:31;34364:223;:::o;34593:366::-;34735:3;34756:67;34820:2;34815:3;34756:67;:::i;:::-;34749:74;;34832:93;34921:3;34832:93;:::i;:::-;34950:2;34945:3;34941:12;34934:19;;34593:366;;;:::o;34965:419::-;35131:4;35169:2;35158:9;35154:18;35146:26;;35218:9;35212:4;35208:20;35204:1;35193:9;35189:17;35182:47;35246:131;35372:4;35246:131;:::i;:::-;35238:139;;34965:419;;;:::o;35390:175::-;35530:27;35526:1;35518:6;35514:14;35507:51;35390:175;:::o;35571:366::-;35713:3;35734:67;35798:2;35793:3;35734:67;:::i;:::-;35727:74;;35810:93;35899:3;35810:93;:::i;:::-;35928:2;35923:3;35919:12;35912:19;;35571:366;;;:::o;35943:419::-;36109:4;36147:2;36136:9;36132:18;36124:26;;36196:9;36190:4;36186:20;36182:1;36171:9;36167:17;36160:47;36224:131;36350:4;36224:131;:::i;:::-;36216:139;;35943:419;;;:::o

Swarm Source

ipfs://77570c92cf3922370180f53e557cfa3065ad229b36c2d6068b806a27ab31ecee
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.