ETH Price: $3,306.75 (-3.71%)
Gas: 14 Gwei

Token

MutantApeWives (MAW)
 

Overview

Max Total Supply

3,262 MAW

Holders

1,301

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 MAW
0xF5dd83180669255D64686921eA525F0096b95f23
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Heed words of warning for they may be the last will ever need. An oozing sickness has begun seeping into the metaverse. It is a vicious virus that has infected the race of ApeWives.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MutantApeWives

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-18
*/

// SPDX-License-Identifier: MIT
// 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);
}

// OpenZeppelin Contracts v4.4.1 (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`, 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 be 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 Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

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

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



// OpenZeppelin Contracts v4.4.1 (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 `IERC721.onERC721Received.selector`.
     */
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}


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


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


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

pragma solidity ^0.8.0;

/**
 * @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
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @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

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


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


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

pragma solidity ^0.8.0;

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

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

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

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

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


// OpenZeppelin Contracts v4.4.1 (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: balance query for the zero address");
        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: owner query for nonexistent token");
        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) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        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 overriden 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 owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        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: transfer caller is not 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: transfer caller is not 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) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, 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);
    }

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

    /**
     * @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 of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

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

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

        emit Transfer(from, to, tokenId);
    }

    /**
     * @dev Approve `to` to operate on `tokenId`
     *
     * Emits a {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 a {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 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 {
                    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 {}
}


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

pragma solidity ^0.8.0;

/**
 * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Enumerable is IERC721 {
    /**
     * @dev Returns the total amount of tokens stored by the contract.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns a token ID owned by `owner` at a given `index` of its token list.
     * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);

    /**
     * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
     * Use along with {totalSupply} to enumerate all tokens.
     */
    function tokenByIndex(uint256 index) external view returns (uint256);
}



pragma solidity ^0.8.0;


/**
 * @dev This implements an optional extension of {ERC721} defined in the EIP that adds
 * enumerability of all the token ids in the contract as well as all token ids owned by each
 * account.
 */
abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    // Mapping from owner to list of owned token IDs
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

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

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

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

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

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

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

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

    /**
     * @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` cannot be the zero address.
     * - `to` cannot be the zero address.
     *
     * 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 override {
        super._beforeTokenTransfer(from, to, tokenId);

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

    /**
     * @dev Private function to add a token to this extension's ownership-tracking data structures.
     * @param to address representing the new owner of the given token ID
     * @param tokenId uint256 ID of the token to be added to the tokens list of the given address
     */
    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        uint256 length = ERC721.balanceOf(to);
        _ownedTokens[to][length] = tokenId;
        _ownedTokensIndex[tokenId] = length;
    }

    /**
     * @dev Private function to add a token to this extension's token tracking data structures.
     * @param tokenId uint256 ID of the token to be added to the tokens list
     */
    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }

    /**
     * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that
     * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for
     * gas optimizations e.g. when performing a transfer operation (avoiding double writes).
     * This has O(1) time complexity, but alters the order of the _ownedTokens array.
     * @param from address representing the previous owner of the given token ID
     * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address
     */
    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

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

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

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

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

    /**
     * @dev Private function to remove a token from this extension's token tracking data structures.
     * This has O(1) time complexity, but alters the order of the _allTokens array.
     * @param tokenId uint256 ID of the token to be removed from the tokens list
     */
    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

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

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

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

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

// OpenZeppelin Contracts v4.4.1 (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 Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        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);
    }
}


pragma solidity ^0.8.0;


contract MutantApeWives is ERC721Enumerable, Ownable {

    uint256 public apePrice = 40000000000000000;
    uint public constant maxApePurchase = 10;
    uint public ApeSup = 10000;
    bool public drop_is_active = false;
    bool public presale_is_active = false;
    string public baseURI = "";
    uint256 public tokensMinted = 0;

    struct Whitelistaddr {
        uint256 presalemints;
        bool exists;
    }
    mapping(address => Whitelistaddr) private whitelist;

    constructor() ERC721("MutantApeWives", "MAW"){
    whitelist[0x1Fa0c42a65B51ABdd384C1bba97992CA478DF4e7].exists = true;
    whitelist[0x03EED5383cd57b8155De4A67fEdB906dC3C9eB6D].exists = true;
    whitelist[0x4d9f62922A828939eF6CE5E50FaF4A7B5360b943].exists = true;
    whitelist[0x1CccFDBaD92675f7212cb264e4FdCbd8699a81dE].exists = true;
    whitelist[0xA01C0735C7cA5f8efc1e63efa5F2D1C4fc1a4714].exists = true;
    whitelist[0x5ed39Ed5C210bdB9e67385478323E6113C33b1F0].exists = true;
    whitelist[0xA4Adc8AbE09cf3c06f353576c2E9886eef815ebE].exists = true;
    whitelist[0x921D53Af7CC5aE8fc65B6CB390762F9Abc82b8EA].exists = true;
    whitelist[0xaD31dFbF78BdC8E90c7DeF2a97ECbE917C53E7e3].exists = true;
    whitelist[0x8d256C3dEEDCF219764425Daf6c1e47244c6839b].exists = true;
    whitelist[0x98c68168474c7EfE22828EaB331Ce98655a8ecc9].exists = true;
    whitelist[0x64B1dF8EbeA8a1039217B9A7fAAed386d856e7c2].exists = true;
    whitelist[0x511DbcBa0c78cb4E35f1Fc2b14b1FCdDf133c2dd].exists = true;
    whitelist[0x036863A5A05c5A7EbD2553824Cb040aAa2a6D687].exists = true;
    whitelist[0x2fa03dcc825f2a09705904bc8f6E51662e9c9448].exists = true;
    whitelist[0xca4BF72AE1b9C050729931e715Bd6653df951848].exists = true;
    whitelist[0x9f8c7c5BaC70342B572Af5B395553eFd978C4425].exists = true;
    whitelist[0x90a4D5aD231E9250F53D0b2a0029556798eCcaeD].exists = true;
    whitelist[0xc5F62Ed23fb755D2B89c2372bF21eE711E4DB3B4].exists = true;
    whitelist[0xd34a6B9Fca0867988CDC602D60724F822F96ffFD].exists = true;
    whitelist[0x5fE8a15dbE1863B37F7e15B1B180af7627548738].exists = true;
    whitelist[0x21bd72a7e219B836680201c25B61a4AA407F7bfD].exists = true;
    whitelist[0x9AE6d4859109c83fab823Ea4dFd42843568D1084].exists = true;
    whitelist[0x2014ca876094Bf98F53226C9CD4E811862d07504].exists = true;
    whitelist[0xB1059da8327718704086e372320185B970b3FAFD].exists = true;
    whitelist[0x5C3086CdEC08849CdC592Eb88F9b8d2F72E3e42f].exists = true;
    whitelist[0xe701A35273c57791009a5d0B2de9B9b8c1fCeAEA].exists = true;
    whitelist[0x9e14b5E72b6F94b839C148C3A60F78c999DfE9db].exists = true;
    whitelist[0xf7A926e197e2A07213B320ad4651C8DF5Bdc6B1a].exists = true;
    whitelist[0x115D55FE3f068e05f57D247389c5B93534D685CA].exists = true;
    whitelist[0xBF2C089F3e9d23aa7D124c4B4E8371A54300fD5e].exists = true;
    whitelist[0x32752703548FbAf0113d4C20ddF08B66Eef1D31A].exists = true;
    whitelist[0xc34E1e7ae15410B37Db674955335E8Fd722cb3e6].exists = true;
    whitelist[0x428e209dA85f879168fd8e91e6eBFdb809c7EA46].exists = true;
    whitelist[0xa47467EfD942daCBf3b0D1d656bC512847e7f4e0].exists = true;
    whitelist[0x7B02Cf72c598F569237336F30c283668E8199dd9].exists = true;
    whitelist[0x86cb4684b24ff467Df46EF5804B24515E6AdB9C9].exists = true;
    whitelist[0x7254bb676d9cB54281028c4083455e85e2904C1b].exists = true;
    whitelist[0xED3ea09408bc99B8617Af13CfA2A86Ae4b247c2E].exists = true;
    whitelist[0x39794c3171d4D82eB9C6FBb764749Eb7ED92881d].exists = true;
    whitelist[0x37002077CacCA7534D89118836662779233e62B1].exists = true;
    whitelist[0x033d1a2357307Ae3f8a2D7aC15931f555d37D41d].exists = true;
    whitelist[0x483199Cc3318414B2b7Af323Cb981840ae8AB4F9].exists = true;
    whitelist[0xeacF6c83C26508F55AD6Bd49746E65C39645223E].exists = true;
    whitelist[0x602B93A6ab102907a40cDE6B786cD07B4279E796].exists = true;
    whitelist[0x87C9e727aD6DD925A1De7CD949349a855bEbD836].exists = true;
    whitelist[0xD57E60947C5AEfB0D80edca6b0B0Bfd31A50b739].exists = true;
    whitelist[0x8B0C2928e935b1D2Ac9D5a149829f7103c60b94f].exists = true;
    whitelist[0x06C4106E578110ED05c943d97A9a3e561b598DB0].exists = true;
    whitelist[0x746b024b8b93D0d447c61B955f8452afdB7682c4].exists = true;
    whitelist[0x713b8C9f2713a07a43EDA78B454BEaB9D9E96015].exists = true;
    whitelist[0xf543428D35aB7F3a86a7F4F448ec2B32eb0d8b32].exists = true;
    whitelist[0x642b286935113276d363dF4Cfd202079233f25d1].exists = true;
    whitelist[0xd7B83C30609db3f1F4ad68d9c046703a7d06D722].exists = true;
    whitelist[0x6f15Aa54a9370fB5A64291499B77650d5f3882FC].exists = true;
    whitelist[0x7443E57a7d4df44FE6819dd76474BA9C3BE3c81D].exists = true;
    whitelist[0x03f4Cb9e297ea659F30E09341eE7155a7d136398].exists = true;
    whitelist[0x6A61925DcdF27d8b28C11Ec76228b4195A978069].exists = true;
    whitelist[0x5078328036E21C42426D9514378d782e489c9844].exists = true;
    whitelist[0x2AF37023A1bEf8164781f1B941E8B7d9D2764766].exists = true;
    whitelist[0x4DA33Cf3100E5DA72285F1Cc282cf056ce0ADD51].exists = true;
    whitelist[0x2a32093A20D9E1D3f0620FbA008c9b2107Aa0D39].exists = true;
    whitelist[0x0C289Ec5d7FAC13EcBa85A404f144dfE461F6757].exists = true;
    whitelist[0xb5c1bbd13f127Bd1807d6434bB016ec93e6CB107].exists = true;
    whitelist[0x9B53f9f5e94fE905a25eB5E14EFa03a86AEf2f08].exists = true;
    whitelist[0x42cBD461BADfa828D64bB2684F49289a62248D4a].exists = true;
    whitelist[0xb53467e86A7AC44ED8623f01A3772F573d2A1f1d].exists = true;
    whitelist[0x7Eca7b2A0b7170DE1Fe3DC8ABb3007d60BE382Fc].exists = true;
    whitelist[0xB13a509B8E3Dd88f4a5239c1cC4a749111CCa5a7].exists = true;
    whitelist[0xc68810cD92dAC5186d035cC65C388060C1f85373].exists = true;
    whitelist[0xf7f058Cd6D8BC862BE2193AE60f9Fe3387fdFa3A].exists = true;
    whitelist[0xe2320De5d2ddA68A9479E4271b704284679E49eb].exists = true;
    whitelist[0x4a3172c5879ab244d53ed2eEf38dDc1bD8ACaCcb].exists = true;
    whitelist[0x35851bBBDF431c2AcF773f0e3FFeaa7279Dc60d7].exists = true;
    whitelist[0x2cDAAF054a63C2eaeA23A7A071E39bE872f2f808].exists = true;
    whitelist[0xA9DCc7771b949d9917AC2Db34471325D901303cD].exists = true;
    whitelist[0x358f0632548968776247C6154c06023a10A9Aa10].exists = true;
    whitelist[0x62Ac503e46fCc13317580b8B177f28f2F5270f17].exists = true;
    whitelist[0x07cd24C35403E88B647778ccA17B91D2ee02aFF3].exists = true;
    whitelist[0x2b762480E5BdF49eBa0e2126bd96685c70112355].exists = true;
    whitelist[0xABC2A9349d41ffBe8AFdB7886D70773991ACD833].exists = true;
    whitelist[0xb0f380d49a59F929c5481992892F899d390a6110].exists = true;
    whitelist[0x40119fD73a4c3c6cAf9DD5B0078f6c13E1133c61].exists = true;
    whitelist[0x6F2752bCF04aD3Bd569F8523C146701088dB8b2A].exists = true;
    whitelist[0x64aBB85Cc94dE5e0B56B2a1139B7DA70A7cd3b01].exists = true;
    whitelist[0xc27BA52C493e291FA50a8e537142dF2140520F0b].exists = true;
    whitelist[0x27F4f00A36FAa31A60A60cb56B25F99f9C683e9A].exists = true;
    whitelist[0xd6F1c330BF5379f8dC1C3db7f5daA8FB59581E30].exists = true;
    whitelist[0xCBcA70E92C68F08350deBB50a85bae486a709cBe].exists = true;
    whitelist[0x59Dcd59551848dda2448c71485E6E25238252682].exists = true;
    whitelist[0x1F057a18a0F3a0061d8170c303019CfA1D4E70C1].exists = true;
    whitelist[0xE289512D2322Ce7Bd468C2d9E1FEe03d0fBC4D43].exists = true;
    whitelist[0xf71Fc2ecf07364F3992beaf93168e8D911ac4336].exists = true;
    whitelist[0x1a47Ef7e41E3ac6e7f9612F697E69F8D0D9F0249].exists = true;
    whitelist[0x870B4947A30939C4D9338fc07C1370CE678C4a65].exists = true;
    whitelist[0x28c1Ed3cA6289F8E0C6B68508c1B7Fc00372001E].exists = true;
    whitelist[0xB6cd1D08bE8BaB1E702d6528702310239dc9E7D4].exists = true;
    whitelist[0x2B6E6bcB6d1a0544ec09A5209Db4f6023F6EbDF5].exists = true;
    whitelist[0xaa1edc3769f31Fe780e3Ee6d6C8ec534BA9A7725].exists = true;
    whitelist[0x06020f527C640692542D542A4d25Fc104E8F46a5].exists = true;
    whitelist[0x120C0daC8A4423a495AF6AB1aD64bc26b2C73986].exists = true;
    whitelist[0xAa5Ea948fCBd10132B2659Cd2181AA06a000c74F].exists = true;
    whitelist[0xFfE4261a55f4d5AE916D1130Ce4D9132f9Adb262].exists = true;
    whitelist[0x6CFbA31B89974acD050d5cAf48Ae92A12Ed160B9].exists = true;
    whitelist[0x35ddcaa76104D8009502fFFcfd00fe54210676F6].exists = true;
    whitelist[0xaFB2BdeCafeC778923cC9058c9642565B2999A29].exists = true;
    whitelist[0x665D43b4b3167D292Fd8D2712Bb7576e9eE31334].exists = true;
    whitelist[0xaB3418068Cdcf0cB116E408948c4aA1344519C3a].exists = true;
    whitelist[0x14D05798E8FB39Ea2604243fb6C4393DD7f36E14].exists = true;
    whitelist[0x4C97361f6D41f1E27daF636114F0Abaa61459167].exists = true;
    whitelist[0x259c9B7a6D6bA8CA30B849719a7Ee4CE843E4DDE].exists = true;
    whitelist[0x4bc91Bd7126B68CBD18F367E59754b878b72B848].exists = true;
    whitelist[0x2DD534dd4949ccDbB301D29b15d8B86111eE4aE1].exists = true;
    whitelist[0x8C87b46DC45076F3Cd457790100485Fd94fb4157].exists = true;
    whitelist[0x1228a857FD7Ee845f4999f33540F6b9D0988e80d].exists = true;
    whitelist[0xe522BfAbDba3E40dFf4187f5219a4E9f267cf504].exists = true;
    whitelist[0x49565Ba1f295dD7cfaD35C198f04153B9a0FB6d7].exists = true;
    whitelist[0x5444C883AA97d419AC20DCDbD7767F632b1A7669].exists = true;
    whitelist[0x7dD580A38454b97022B59EA1747e0Ffe279C508d].exists = true;
    whitelist[0x2B1632e4EF7cde52531E84998Df74773cA5216b7].exists = true;
    whitelist[0x65e46516353dB530f431Ee0535047c00e7e07E5F].exists = true;
    whitelist[0x8D24bCfEFbC93568872490C7A5f49E67819e8242].exists = true;
    whitelist[0x492191D35Ee2040E7733e7D18E405314a31abA85].exists = true;
    whitelist[0x66883274f20a617E781c3f869c48eD93a041F178].exists = true;
    whitelist[0x358Ffb79c76b45A3B9B13EE24Eb05Db85AdB1bB8].exists = true;
    whitelist[0xf0323b7dA670B039289A222189AC61389462Cb5A].exists = true;
    whitelist[0x162195Ea6e3d170939891Dd3A68a9CA32EcC1ca7].exists = true;
    whitelist[0xF328e13C8aB3cA38845724104aCC074Ff4121D74].exists = true;
    whitelist[0xbc3C52ECa94Fc1F412443a3d706CF19Fc80FfcB3].exists = true;
    whitelist[0x58f3e78f49296D5aD1C7798057A2e34949E95d55].exists = true;
    whitelist[0x74205C844f0a6c8510a03e68008B3e5be2d642e4].exists = true;
    whitelist[0x579cD9D50cda026B06891D5D482ce1f00D754022].exists = true;
    whitelist[0xc785EB6CF887b9d1DC971FcC9A81BF3fE030fD61].exists = true;
    whitelist[0xD42a0b819F6171A697501693D234bcE421FEAFEE].exists = true;
    whitelist[0x307C13D2820F35802307e943F59d65741256326F].exists = true;
    whitelist[0x04f5465dE5E6cE83bFc5a41E3b6450B7A52a361a].exists = true;
    whitelist[0xa04aC0F08D81bbfE8a5AFd8368Fa2E8d184fA9b5].exists = true;
    whitelist[0x9321D8d72f8BeBCf3D48725643564Eaf75a7a9ef].exists = true;
    whitelist[0xdEbD23D4f7706D873Ff766ed025C5854A732A463].exists = true;
    whitelist[0xe7c1DB78d86A6Ab2295a2B911559fd754710B64e].exists = true;
    whitelist[0x20f76AE93b4217D325b09bA5B99D4062BC6f1090].exists = true;
    whitelist[0x9C74F1a06CEa6587029029f3dE875D08757B9960].exists = true;
    whitelist[0xA8a437E16Ab784D72362F9ebFdC025f200BE28bF].exists = true;
    whitelist[0x69b02E16F3818D6211071E08E19f42944B90D1E7].exists = true;
    whitelist[0xDB2e9Af0Ec4Dc504b9409ec78b0FC4D9B30281Fc].exists = true;
    whitelist[0x686CB9D88719E85aCA606797743A6cc0F7343d31].exists = true;
    whitelist[0x0b6f3D59d4268679c6eba04eaCFAA4Ab4C9352D9].exists = true;
    whitelist[0x69F50475f695760C85bb28D7d6ecb9baD4Dd911d].exists = true;
    whitelist[0x7B3ea3001cbfB19fe7142757811056680C062114].exists = true;
    whitelist[0x5fD21B488987365b2C79aD42e5Ac6c15A1EA9cF0].exists = true;
    whitelist[0x196bF546a4944C31856009a87347C735e5d42A9D].exists = true;
    whitelist[0x4e1686BEdCF7B4f21B40a032cf6E7aFBbFaD947B].exists = true;
    whitelist[0x89f2C064a1e1ee5e37DF0698Fc95F43DAAA2a43A].exists = true;
    whitelist[0x84A2345A7fE0aBb8e6726051bf5bEb4A3E47A3Ee].exists = true;
    whitelist[0x88d19e08Cd43bba5761c10c588b2A3D85C75041f].exists = true;
    whitelist[0x9d4B7D78C81cDB2FB08bb24B3FA3E65f1ac444cA].exists = true;
    whitelist[0xaE149e2a083d94B9833102cF4fd6BEFF5409Fb20].exists = true;
    whitelist[0x612952a8D811B3Cd5626eBc748d5eB835Fcf724B].exists = true;
    whitelist[0x31B19F9183094fB6B87B8F26988865026c6AcF17].exists = true;
    whitelist[0x0b4955C7B65c9fdAeCB2e12717092936316f52F3].exists = true;
    whitelist[0x6507Db73D6AdE38af8467eB5aB445f224CeDAF38].exists = true;
    whitelist[0xB9c2cB57Dfe51F8A2Fb588f333bDC89D8d90ca9B].exists = true;
    whitelist[0x8F66c0c359B4546512BC8dca379B89Ac93008d97].exists = true;
    whitelist[0xc955Ce75796eF64eB1F09e9eff4481c8968C9346].exists = true;
    whitelist[0xA3274031a981003f136b731DF2B78CEE0ceCb160].exists = true;
    whitelist[0x466AbBfb9AAb4C6dF6d3Cc03D6C63C43C5162048].exists = true;
    whitelist[0x80EF7fB78F7e65928Ba2e60B7a5A9501Cbdcb612].exists = true;
    whitelist[0x58269C4fc0ACb2fB612638e75ED0e7113612F20f].exists = true;
    whitelist[0x7448E0C5f8e6cB5920bc197B0503e6B1c8cC495f].exists = true;
    whitelist[0x409239E29Dc9595D8DE2f8D4B916e2d076C82A73].exists = true;
    whitelist[0x82CAb764Df6a044029e34Ce281dF520c7DbeCed6].exists = true;
    whitelist[0x3fE167eD835fB3B28a555a5470b355202d27F436].exists = true;
    whitelist[0x35471F2cFab7B75e88D0eBfd5528586F55900C4E].exists = true;
    whitelist[0xd17579Ecff58C528C4Aa64Db58e8A829B1c111Cd].exists = true;
    whitelist[0xA94e497c4d7d59f572e8E27D53916f23635d6acd].exists = true;
    whitelist[0x07fC676A307F41dfa7e53b285cF87305B9ab940A].exists = true;
    whitelist[0xd8226Dd110c7bA2bcD7A680d9EA5206BaC40F201].exists = true;
    whitelist[0xE56B07262a1F52755B63bf32697511F84d46E780].exists = true;
    whitelist[0xE5Dd1908626392F5F4160C4d06729F733B1cfA3D].exists = true;
    whitelist[0x7f2FD2EAAF73CE2b4897566acA233244a4524BFB].exists = true;
    whitelist[0xDc92f758986cc62A1085319D2038445f3FeEF74b].exists = true;
    whitelist[0xDdE58fb699EB6f309b5759c9fC7c3aec43EbebE7].exists = true;
    whitelist[0xCe239202371B5215aA9155c6600c4D3506bD816A].exists = true;
    whitelist[0x1bd06653d474eF3d30E2057242a07A5E976Fb91f].exists = true;
    whitelist[0xaDD089EAD1d42bF90181D1c064931c3829438074].exists = true;
    whitelist[0xDfE59d4F638E24D413f0Be75417cCeD8Fae5FECb].exists = true;
    whitelist[0x0D5a507E4883b1F8a15103C842aA63D9e0F1D108].exists = true;
    whitelist[0x5CDB7Ff563c26beA21502d1e28f6566BFdA4a498].exists = true;
    whitelist[0xF85f584D4078E16673D3326a92C836E8350c7508].exists = true;
    whitelist[0x50c6320567cC830535f026193b57C370A65bDa80].exists = true;
    whitelist[0x563b3d92A0eE49C281ee50324bCd659B2bDBA414].exists = true;
    whitelist[0xdfDd269285cfc31A47ea35Df69E149e49cFca436].exists = true;
    whitelist[0xe03f7703ED4Af3a43Ac3608b46728884f0897f33].exists = true;
    whitelist[0x3eC4483CDB2bCcC637EF2C94e8F6EEEB8247823b].exists = true;
    whitelist[0xB04791252721BcB1c9B0Af567C985EF72C03b12D].exists = true;
    whitelist[0x7296077C84DD5249B2e3ae7fC3d49C86abc38C03].exists = true;
    whitelist[0x9cb01386968136745654650a9C806C211Fd61998].exists = true;
    whitelist[0x99549Be88376CE2edCBF513964c32243c2Daf3de].exists = true;
    whitelist[0x2C14d26e34cED6BA51e9a6c0c496b1aA42BAD131].exists = true;
    whitelist[0x8053843d83282e91f9DAaecfb66fE7C440545Ef8].exists = true;
    whitelist[0x8889D47281AEF794e39f50e679242bc9AC32cfeE].exists = true;
    whitelist[0xE8BEb17839F5f7fDD8324e3de41eaB74c03A280A].exists = true;
    whitelist[0x2146b3AE649d2829ec3234d2D4f5c9f34965E3Fe].exists = true;
    whitelist[0xDbf7E19a4FbCA4a2cD8820ca8A860C41fEadda90].exists = true;
    whitelist[0xBf7c5F30057288FC2D7D406B6F6c57E1D3235A27].exists = true;
    whitelist[0x0F87cD8301a0B74CCa321Be2b3e92fF859dd59Cb].exists = true;
    whitelist[0x1F3A0dd591B51Ae6a67415E147c7a25437B54501].exists = true;
    whitelist[0xA3c731882BBb5C2f19abcbbab06c22F20745Ef2b].exists = true;
    whitelist[0x00085AA596DA26FF95A0aa5772988E100bf52730].exists = true;
    whitelist[0xA7Fc9f19d9C5F8c39E69c1674C4c14fdd8f0dc2c].exists = true;
    whitelist[0xaB58f3dE07Fb3455D218438A99d69B3f06F23C49].exists = true;
    whitelist[0x67Bb605e68389C39e1b71990c54E985BeFFa0bd6].exists = true;
    whitelist[0x0A9acCc02Bf746D44E8E5f00056E24583AFDe0E4].exists = true;
    whitelist[0x3aE68dCe9c856413D5Fc72225e3b60E4EB8984Fc].exists = true;
    whitelist[0x50517761D2be85075Df41b92E2a581B59a0DB549].exists = true;
    whitelist[0x22eEF23D58355f08034551f66c194c2752D494C6].exists = true;
    whitelist[0xA0BDF16f3C91633838ad715a4bC7e8B406093340].exists = true;
    whitelist[0xD7e5EcE88400B813Ca8BE363583ACB3342939b24].exists = true;
    whitelist[0xeA5876991ca48E366f46b5BdE5E6aDCfFA2000bc].exists = true;
    whitelist[0x095fd83d8909B3f9daB3ab36B24a28d5b57a5E48].exists = true;
    whitelist[0xbAaBA861464F25f52c2eE10CC3AC024F4f77812a].exists = true;
    whitelist[0x09AF59067B159A023E41DF8721ce4ad71cd70a99].exists = true;
    whitelist[0x56F4507C6Fdb017CDE092C37D3cf9893322245EB].exists = true;
    whitelist[0x6245f1c86AF1D0F87e5830b400033b1369d41c34].exists = true;
    whitelist[0x709Ab301978E2Cc74D35D15C7C33107a37047BFa].exists = true;
    whitelist[0x6139A7487D122934982A9a0f6eb81D64F25A8176].exists = true;
    whitelist[0xbdE1668dC41e0edDb253c03faF965ADc72BFd027].exists = true;
    whitelist[0x70070d4Ff9487755709e8ddC895820B456AF9d9A].exists = true;
    whitelist[0xA5a88A21896f963F59f2c3E0Ee2247565dd9F257].exists = true;
    whitelist[0xa26bdB6b0183F142355D82BA51540D28ABeD75fF].exists = true;
    whitelist[0xC31cB85aFa668fa7BFDF1Ad189b16F5249FA4c8E].exists = true;
    whitelist[0xDF0f45c028946D7c410e06f18547EA5eD4B98B63].exists = true;
    whitelist[0x943ead70dce4DF339227f4c7480f80A584f3d884].exists = true;
    whitelist[0xD9E77B9dc0095F45273A49442FDC49513F2E062d].exists = true;
    whitelist[0x0763cB7FC792A0AD0EE5593be50f82e2Da7aeb09].exists = true;
    whitelist[0x445934820d319b9F26cD7E7675c3184C0E2013FD].exists = true;
    whitelist[0x4f0c752fdbEA79558DdA8273750562eed4a518e2].exists = true;
    whitelist[0x9a290AF64601F34debadc26526a1A52F7a554E1b].exists = true;
    whitelist[0x8A3FfA2F2F2249da2B475EB15a223C3b9F735Fe8].exists = true;
    whitelist[0x08A5ae15FAE7A78517438A7e44f3DefE588dEf6f].exists = true;
    whitelist[0x8118123F6747f6f079492b8789256f2CEe932B64].exists = true;
    whitelist[0x327Af9D0EC5851102D53326d1dD89ea0F43eC85c].exists = true;
    whitelist[0xcCC34C28A0b3762DaE74EECa2a631661DaF3DAf5].exists = true;
    whitelist[0xe0d4938f6325F0f4f944a581fc5bb68Faa07f47a].exists = true;
    whitelist[0xaEFC4c562002de306714a40Cc0A31b86f7E79077].exists = true;
    whitelist[0xd4Af804b5fc981c889E7b7c3af0E8D8aC2e2630D].exists = true;
    whitelist[0xB5BEebBFB568be3d5d7AFc7C35CAC5bC517a1fA4].exists = true;
    whitelist[0x9Fd9eC2A8BD80EE3105E979DB5f052B92A2F3FF1].exists = true;
    whitelist[0x2401379C8f2f131089db4a13454920F64bfBE622].exists = true;
    whitelist[0xDADa6af9D17B79d2a6e916c415178c3Fc252bD9A].exists = true;
    whitelist[0x72df07D6cB06d55B4e38f0b3761e0406E3FB38F6].exists = true;
    whitelist[0xB89f17Dd3772EFa4cf32785c3ad8c73a38A82409].exists = true;
    whitelist[0x65ADb749acE94D10535e0996C4223c3DcB4E6c84].exists = true;
    whitelist[0x7A7f4487642CB6Ba2D09A7f6902EB2feFA2ED5a4].exists = true;
    whitelist[0xaEaf879E6b2BECb46e173dC96888276800C74119].exists = true;
    whitelist[0xb490dde9273C5042B1c4E18aA1d551853b4862D0].exists = true;
    whitelist[0x367fc750E257656A6B4d497a0d9Ea74FE5C320eB].exists = true;
    whitelist[0xAD0bc71Da62040A4204bbbB0D83c4F4DCE5c8B03].exists = true;
    whitelist[0xBC50EB3b6C11F05a20353c1098B49Cd137788D40].exists = true;
    whitelist[0xa32886a9abB05D69ee88A55d98418539FE2B6339].exists = true;
    whitelist[0x3E18B56E65ccb82Ac6E81a0c18071D1dd644B65B].exists = true;
    whitelist[0x048B1cCecf3635f0506909e5BCF61Fac69b9236d].exists = true;
    whitelist[0x9Ca2F06c148b6ee694892B8A455400F75c2807A2].exists = true;
    whitelist[0xf147510B4755159608C4395C121fD64FeEA37747].exists = true;
    whitelist[0x3f015b37cd324D3cbaaA075A75f8F0a9AfeB04e1].exists = true;
    whitelist[0xE8fa3E7281C9fDE4F9c590DCEF0c797FDbd8E71f].exists = true;
    whitelist[0x3580aB76A179aF05E94FcB16f84C9C253d4d0aB1].exists = true;
    whitelist[0xe63fA6524Fa2d252cC3B46fDb4839900BfBFBB49].exists = true;
    whitelist[0xb518a513fE076345B13911617976E27b262d5033].exists = true;
    whitelist[0xdb2Ceb603DdF833A8D68698078F46efaA9C165E1].exists = true;
    whitelist[0x3Dce69B6e183ceb6B39fA7DF2BC190185D8eDf75].exists = true;
    whitelist[0xf43967FCA936a195981ebEECEC035daa59Fab443].exists = true;
    whitelist[0x43123084c1B589447a02e351688765ef57dc9B85].exists = true;
    whitelist[0xe072BE2b42857dbeeE17a30fA53752BF438058b7].exists = true;
    whitelist[0x15e8CcBD3CE150B382aB8bb8B1E874fC81d14EdD].exists = true;
    whitelist[0x11C61bcD43d61b62719c7971b227fBb8Cf6F3B71].exists = true;
    whitelist[0x68EFfCbfA1Fb3b5A18FEbC8aC4d22B5999B93E7f].exists = true;
    whitelist[0x3E59eA5c21ebb11765f182D7Cf901a8615c7cCDA].exists = true;
    whitelist[0x38E3f0Ca14525d869Fa7fE19303a9b711DD375c9].exists = true;
    whitelist[0x020F441f825767542a8853e08F7fd086a26981C2].exists = true;
    whitelist[0xE498Aa2326F80c7299E22d16376D4113cb519733].exists = true;
    whitelist[0x99F1396495cCeaFfE82C9e22b8A6ceB9c6b9336d].exists = true;
    whitelist[0xF9a99B48Ca723176B5Cc10d6EB0bA7d0e0529a3E].exists = true;
    whitelist[0xA17138c0675173B8Ea506Fb1b96FA754BC316cc2].exists = true;
    whitelist[0x9c4f52cf0f6537031d64B0C8BA7ea1729f0d1087].exists = true;
    whitelist[0x98BE88Fe1305e65EBd2AfaEf493A36200740e212].exists = true;
    whitelist[0xf777a4BA5021F3aB5Fe1F623d4051e556A246F72].exists = true;
    whitelist[0x0C9642Dc22C957612fD1c297EBB9fB91d9d12990].exists = true;
    whitelist[0x402a0Af9f46690c1f5d78e4d4990fb00a91C4114].exists = true;
    whitelist[0xF4a52a3B2715dd0bb046a212dE51dB38eb1329D3].exists = true;
    whitelist[0x4bB7Eceeb36395Deb86A42be19fC1440A23B5eA0].exists = true;
    whitelist[0xE5eF9FF63C464Cf421Aa95F06Ce15D707662D5f2].exists = true;
    whitelist[0x5233f73d362BC62Ccc500036027A100194506eC9].exists = true;
    whitelist[0x9EB335400b6AB26481002a25171b0E0b50A33fd8].exists = true;
    whitelist[0xf92f571Fd4ed497f672D4F37F46ee02eb13b63C8].exists = true;
    whitelist[0xcce848d0E705c72ce054c5D4918d32Ecf44c5905].exists = true;
    whitelist[0x40B4911489A87858F7e6765FDD32DFdD9D449aC6].exists = true;
    whitelist[0x406E4e822E0706Acf2c958d00ff82452020c556B].exists = true;
    whitelist[0x6b88C64796192728eEe4Ee19db1AE43FC4C80A23].exists = true;
    whitelist[0x8f94bE578e4A5435244b2E272D2b649D58242b23].exists = true;
    whitelist[0x2b08B2c356C2c9C4Cc8F2993673F44106165b20b].exists = true;
    whitelist[0x40b6B169FC9aAa1380375EBcC4BE40D19F37e1Ff].exists = true;
    }

    function OnWhiteList(address walletaddr)
    public
    view
    returns (bool)
    {
        if (whitelist[walletaddr].exists){
            return true;
        }
        else{
            return false;
        }
    }

    function addToWhiteList (address[] memory newWalletaddr) public onlyOwner{
        for (uint256 i = 0; i<newWalletaddr.length;i++){
            whitelist[newWalletaddr[i]].exists = true;
        }        
    }

    function withdraw() public onlyOwner {
    require(payable(msg.sender).send(address(this).balance));
    }

    function flipDropState() public onlyOwner {
        drop_is_active = !drop_is_active;
    }

    function flipPresaleSate() public onlyOwner {
        presale_is_active = !presale_is_active;
    }

    function PresaleMint(uint256 numberOfTokens) public payable{
        require(presale_is_active, "Please wait until the PreMint has begun!");
        require(whitelist[msg.sender].exists == true, "This Wallet is not able mint for presale");
        require(numberOfTokens > 0 && tokensMinted + numberOfTokens <= ApeSup, "Purchase would exceed max supply of MAW's");
        require(whitelist[msg.sender].presalemints + numberOfTokens <= 2,"This Wallet has already minted its 2 reserved MAW's");
        require(msg.value >= apePrice * numberOfTokens, "ETH value sent is too little for this many MAW's");

        for(uint i=0;i<numberOfTokens;i++){
            if (tokensMinted < ApeSup){
                whitelist[msg.sender].presalemints++;
                tokensMinted++;
                _safeMint(msg.sender, tokensMinted);
            }
        }

    }

    function mintMAW(uint numberOfTokens) public payable {
        require(drop_is_active, "Please wait until the Public sale is active to mint");
        require(numberOfTokens > 0 && numberOfTokens <= maxApePurchase);
        require(tokensMinted + numberOfTokens <= ApeSup, "Purchase would exceed max supply of MAW's");
        require(msg.value >= apePrice * numberOfTokens, "ETH value sent is too little for this many MAW's");

        for (uint i=0;i<numberOfTokens;i++){
            if (tokensMinted < ApeSup){
                tokensMinted++;
                _safeMint(msg.sender, tokensMinted);
            }
        }
    }

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

    function setBaseURI(string memory newBaseURI)public onlyOwner{
        baseURI = newBaseURI;
    }
    function lowerMintPrice(uint256 newPrice) public onlyOwner {
        require(newPrice < apePrice);
        apePrice = newPrice;
    }

    function lowerMintSupply(uint256 newSupply) public onlyOwner {
        require(newSupply < ApeSup);
        require(newSupply > totalSupply());
        ApeSup = newSupply;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ApeSup","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"walletaddr","type":"address"}],"name":"OnWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfTokens","type":"uint256"}],"name":"PresaleMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"newWalletaddr","type":"address[]"}],"name":"addToWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"apePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"drop_is_active","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flipDropState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPresaleSate","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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"lowerMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSupply","type":"uint256"}],"name":"lowerMintSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxApePurchase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfTokens","type":"uint256"}],"name":"mintMAW","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presale_is_active","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052668e1bc9bf040000600b55612710600c556000600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff02191690831515021790555060405180602001604052806000815250600e9080519060200190620000729291906200850b565b506000600f553480156200008557600080fd5b506040518060400160405280600e81526020017f4d7574616e7441706557697665730000000000000000000000000000000000008152506040518060400160405280600381526020017f4d4157000000000000000000000000000000000000000000000000000000000081525081600090805190602001906200010a9291906200850b565b508060019080519060200190620001239291906200850b565b505050620001466200013a6200843d60201b60201c565b6200844560201b60201c565b600160106000731fa0c42a65b51abdd384c1bba97992ca478df4e773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007303eed5383cd57b8155de4a67fedb906dc3c9eb6d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000734d9f62922a828939ef6ce5e50faf4a7b5360b94373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000731cccfdbad92675f7212cb264e4fdcbd8699a81de73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073a01c0735c7ca5f8efc1e63efa5f2d1c4fc1a471473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000735ed39ed5c210bdb9e67385478323e6113c33b1f073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073a4adc8abe09cf3c06f353576c2e9886eef815ebe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073921d53af7cc5ae8fc65b6cb390762f9abc82b8ea73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073ad31dfbf78bdc8e90c7def2a97ecbe917c53e7e373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000738d256c3deedcf219764425daf6c1e47244c6839b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007398c68168474c7efe22828eab331ce98655a8ecc973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007364b1df8ebea8a1039217b9a7faaed386d856e7c273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073511dbcba0c78cb4e35f1fc2b14b1fcddf133c2dd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073036863a5a05c5a7ebd2553824cb040aaa2a6d68773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000732fa03dcc825f2a09705904bc8f6e51662e9c944873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073ca4bf72ae1b9c050729931e715bd6653df95184873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000739f8c7c5bac70342b572af5b395553efd978c442573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007390a4d5ad231e9250f53d0b2a0029556798eccaed73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073c5f62ed23fb755d2b89c2372bf21ee711e4db3b473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073d34a6b9fca0867988cdc602d60724f822f96fffd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000735fe8a15dbe1863b37f7e15b1b180af762754873873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007321bd72a7e219b836680201c25b61a4aa407f7bfd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000739ae6d4859109c83fab823ea4dfd42843568d108473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000732014ca876094bf98f53226c9cd4e811862d0750473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073b1059da8327718704086e372320185b970b3fafd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000735c3086cdec08849cdc592eb88f9b8d2f72e3e42f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073e701a35273c57791009a5d0b2de9b9b8c1fceaea73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000739e14b5e72b6f94b839c148c3a60f78c999dfe9db73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073f7a926e197e2a07213b320ad4651c8df5bdc6b1a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073115d55fe3f068e05f57d247389c5b93534d685ca73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073bf2c089f3e9d23aa7d124c4b4e8371a54300fd5e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007332752703548fbaf0113d4c20ddf08b66eef1d31a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073c34e1e7ae15410b37db674955335e8fd722cb3e673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073428e209da85f879168fd8e91e6ebfdb809c7ea4673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073a47467efd942dacbf3b0d1d656bc512847e7f4e073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000737b02cf72c598f569237336f30c283668e8199dd973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007386cb4684b24ff467df46ef5804b24515e6adb9c973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000737254bb676d9cb54281028c4083455e85e2904c1b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073ed3ea09408bc99b8617af13cfa2a86ae4b247c2e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007339794c3171d4d82eb9c6fbb764749eb7ed92881d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007337002077cacca7534d89118836662779233e62b173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073033d1a2357307ae3f8a2d7ac15931f555d37d41d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073483199cc3318414b2b7af323cb981840ae8ab4f973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073eacf6c83c26508f55ad6bd49746e65c39645223e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073602b93a6ab102907a40cde6b786cd07b4279e79673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007387c9e727ad6dd925a1de7cd949349a855bebd83673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073d57e60947c5aefb0d80edca6b0b0bfd31a50b73973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000738b0c2928e935b1d2ac9d5a149829f7103c60b94f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007306c4106e578110ed05c943d97a9a3e561b598db073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073746b024b8b93d0d447c61b955f8452afdb7682c473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073713b8c9f2713a07a43eda78b454beab9d9e9601573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073f543428d35ab7f3a86a7f4f448ec2b32eb0d8b3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073642b286935113276d363df4cfd202079233f25d173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073d7b83c30609db3f1f4ad68d9c046703a7d06d72273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000736f15aa54a9370fb5a64291499b77650d5f3882fc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000737443e57a7d4df44fe6819dd76474ba9c3be3c81d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007303f4cb9e297ea659f30e09341ee7155a7d13639873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000736a61925dcdf27d8b28c11ec76228b4195a97806973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000735078328036e21c42426d9514378d782e489c984473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000732af37023a1bef8164781f1b941e8b7d9d276476673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000734da33cf3100e5da72285f1cc282cf056ce0add5173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000732a32093a20d9e1d3f0620fba008c9b2107aa0d3973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000730c289ec5d7fac13ecba85a404f144dfe461f675773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073b5c1bbd13f127bd1807d6434bb016ec93e6cb10773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000739b53f9f5e94fe905a25eb5e14efa03a86aef2f0873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007342cbd461badfa828d64bb2684f49289a62248d4a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073b53467e86a7ac44ed8623f01a3772f573d2a1f1d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000737eca7b2a0b7170de1fe3dc8abb3007d60be382fc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073b13a509b8e3dd88f4a5239c1cc4a749111cca5a773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073c68810cd92dac5186d035cc65c388060c1f8537373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073f7f058cd6d8bc862be2193ae60f9fe3387fdfa3a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073e2320de5d2dda68a9479e4271b704284679e49eb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000734a3172c5879ab244d53ed2eef38ddc1bd8acaccb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007335851bbbdf431c2acf773f0e3ffeaa7279dc60d773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000732cdaaf054a63c2eaea23a7a071e39be872f2f80873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073a9dcc7771b949d9917ac2db34471325d901303cd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073358f0632548968776247c6154c06023a10a9aa1073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007362ac503e46fcc13317580b8b177f28f2f5270f1773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007307cd24c35403e88b647778cca17b91d2ee02aff373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000732b762480e5bdf49eba0e2126bd96685c7011235573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073abc2a9349d41ffbe8afdb7886d70773991acd83373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073b0f380d49a59f929c5481992892f899d390a611073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007340119fd73a4c3c6caf9dd5b0078f6c13e1133c6173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000736f2752bcf04ad3bd569f8523c146701088db8b2a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007364abb85cc94de5e0b56b2a1139b7da70a7cd3b0173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073c27ba52c493e291fa50a8e537142df2140520f0b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007327f4f00a36faa31a60a60cb56b25f99f9c683e9a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073d6f1c330bf5379f8dc1c3db7f5daa8fb59581e3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073cbca70e92c68f08350debb50a85bae486a709cbe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007359dcd59551848dda2448c71485e6e2523825268273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000731f057a18a0f3a0061d8170c303019cfa1d4e70c173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073e289512d2322ce7bd468c2d9e1fee03d0fbc4d4373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073f71fc2ecf07364f3992beaf93168e8d911ac433673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000731a47ef7e41e3ac6e7f9612f697e69f8d0d9f024973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073870b4947a30939c4d9338fc07c1370ce678c4a6573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007328c1ed3ca6289f8e0c6b68508c1b7fc00372001e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073b6cd1d08be8bab1e702d6528702310239dc9e7d473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000732b6e6bcb6d1a0544ec09a5209db4f6023f6ebdf573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073aa1edc3769f31fe780e3ee6d6c8ec534ba9a772573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007306020f527c640692542d542a4d25fc104e8f46a573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073120c0dac8a4423a495af6ab1ad64bc26b2c7398673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073aa5ea948fcbd10132b2659cd2181aa06a000c74f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073ffe4261a55f4d5ae916d1130ce4d9132f9adb26273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000736cfba31b89974acd050d5caf48ae92a12ed160b973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007335ddcaa76104d8009502fffcfd00fe54210676f673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073afb2bdecafec778923cc9058c9642565b2999a2973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073665d43b4b3167d292fd8d2712bb7576e9ee3133473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073ab3418068cdcf0cb116e408948c4aa1344519c3a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007314d05798e8fb39ea2604243fb6c4393dd7f36e1473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000734c97361f6d41f1e27daf636114f0abaa6145916773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073259c9b7a6d6ba8ca30b849719a7ee4ce843e4dde73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000734bc91bd7126b68cbd18f367e59754b878b72b84873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000732dd534dd4949ccdbb301d29b15d8b86111ee4ae173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000738c87b46dc45076f3cd457790100485fd94fb415773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000731228a857fd7ee845f4999f33540f6b9d0988e80d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073e522bfabdba3e40dff4187f5219a4e9f267cf50473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007349565ba1f295dd7cfad35c198f04153b9a0fb6d773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000735444c883aa97d419ac20dcdbd7767f632b1a766973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000737dd580a38454b97022b59ea1747e0ffe279c508d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000732b1632e4ef7cde52531e84998df74773ca5216b773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007365e46516353db530f431ee0535047c00e7e07e5f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000738d24bcfefbc93568872490c7a5f49e67819e824273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073492191d35ee2040e7733e7d18e405314a31aba8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007366883274f20a617e781c3f869c48ed93a041f17873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073358ffb79c76b45a3b9b13ee24eb05db85adb1bb873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073f0323b7da670b039289a222189ac61389462cb5a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073162195ea6e3d170939891dd3a68a9ca32ecc1ca773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073f328e13c8ab3ca38845724104acc074ff4121d7473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073bc3c52eca94fc1f412443a3d706cf19fc80ffcb373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007358f3e78f49296d5ad1c7798057a2e34949e95d5573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007374205c844f0a6c8510a03e68008b3e5be2d642e473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073579cd9d50cda026b06891d5d482ce1f00d75402273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073c785eb6cf887b9d1dc971fcc9a81bf3fe030fd6173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073d42a0b819f6171a697501693d234bce421feafee73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073307c13d2820f35802307e943f59d65741256326f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007304f5465de5e6ce83bfc5a41e3b6450b7a52a361a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073a04ac0f08d81bbfe8a5afd8368fa2e8d184fa9b573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000739321d8d72f8bebcf3d48725643564eaf75a7a9ef73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073debd23d4f7706d873ff766ed025c5854a732a46373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073e7c1db78d86a6ab2295a2b911559fd754710b64e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007320f76ae93b4217d325b09ba5b99d4062bc6f109073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000739c74f1a06cea6587029029f3de875d08757b996073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073a8a437e16ab784d72362f9ebfdc025f200be28bf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007369b02e16f3818d6211071e08e19f42944b90d1e773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073db2e9af0ec4dc504b9409ec78b0fc4d9b30281fc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073686cb9d88719e85aca606797743a6cc0f7343d3173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000730b6f3d59d4268679c6eba04eacfaa4ab4c9352d973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007369f50475f695760c85bb28d7d6ecb9bad4dd911d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000737b3ea3001cbfb19fe7142757811056680c06211473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000735fd21b488987365b2c79ad42e5ac6c15a1ea9cf073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073196bf546a4944c31856009a87347c735e5d42a9d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000734e1686bedcf7b4f21b40a032cf6e7afbbfad947b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007389f2c064a1e1ee5e37df0698fc95f43daaa2a43a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007384a2345a7fe0abb8e6726051bf5beb4a3e47a3ee73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007388d19e08cd43bba5761c10c588b2a3d85c75041f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000739d4b7d78c81cdb2fb08bb24b3fa3e65f1ac444ca73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073ae149e2a083d94b9833102cf4fd6beff5409fb2073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073612952a8d811b3cd5626ebc748d5eb835fcf724b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007331b19f9183094fb6b87b8f26988865026c6acf1773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000730b4955c7b65c9fdaecb2e12717092936316f52f373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000736507db73d6ade38af8467eb5ab445f224cedaf3873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073b9c2cb57dfe51f8a2fb588f333bdc89d8d90ca9b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000738f66c0c359b4546512bc8dca379b89ac93008d9773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073c955ce75796ef64eb1f09e9eff4481c8968c934673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073a3274031a981003f136b731df2b78cee0cecb16073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073466abbfb9aab4c6df6d3cc03d6c63c43c516204873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007380ef7fb78f7e65928ba2e60b7a5a9501cbdcb61273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007358269c4fc0acb2fb612638e75ed0e7113612f20f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000737448e0c5f8e6cb5920bc197b0503e6b1c8cc495f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073409239e29dc9595d8de2f8d4b916e2d076c82a7373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007382cab764df6a044029e34ce281df520c7dbeced673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000733fe167ed835fb3b28a555a5470b355202d27f43673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007335471f2cfab7b75e88d0ebfd5528586f55900c4e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073d17579ecff58c528c4aa64db58e8a829b1c111cd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073a94e497c4d7d59f572e8e27d53916f23635d6acd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007307fc676a307f41dfa7e53b285cf87305b9ab940a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073d8226dd110c7ba2bcd7a680d9ea5206bac40f20173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073e56b07262a1f52755b63bf32697511f84d46e78073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073e5dd1908626392f5f4160c4d06729f733b1cfa3d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000737f2fd2eaaf73ce2b4897566aca233244a4524bfb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073dc92f758986cc62a1085319d2038445f3feef74b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073dde58fb699eb6f309b5759c9fc7c3aec43ebebe773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073ce239202371b5215aa9155c6600c4d3506bd816a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000731bd06653d474ef3d30e2057242a07a5e976fb91f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073add089ead1d42bf90181d1c064931c382943807473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073dfe59d4f638e24d413f0be75417cced8fae5fecb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000730d5a507e4883b1f8a15103c842aa63d9e0f1d10873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000735cdb7ff563c26bea21502d1e28f6566bfda4a49873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073f85f584d4078e16673d3326a92c836e8350c750873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007350c6320567cc830535f026193b57c370a65bda8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073563b3d92a0ee49c281ee50324bcd659b2bdba41473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073dfdd269285cfc31a47ea35df69e149e49cfca43673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073e03f7703ed4af3a43ac3608b46728884f0897f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000733ec4483cdb2bccc637ef2c94e8f6eeeb8247823b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073b04791252721bcb1c9b0af567c985ef72c03b12d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000737296077c84dd5249b2e3ae7fc3d49c86abc38c0373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000739cb01386968136745654650a9c806c211fd6199873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007399549be88376ce2edcbf513964c32243c2daf3de73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000732c14d26e34ced6ba51e9a6c0c496b1aa42bad13173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000738053843d83282e91f9daaecfb66fe7c440545ef873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000738889d47281aef794e39f50e679242bc9ac32cfee73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073e8beb17839f5f7fdd8324e3de41eab74c03a280a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000732146b3ae649d2829ec3234d2d4f5c9f34965e3fe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073dbf7e19a4fbca4a2cd8820ca8a860c41feadda9073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073bf7c5f30057288fc2d7d406b6f6c57e1d3235a2773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000730f87cd8301a0b74cca321be2b3e92ff859dd59cb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000731f3a0dd591b51ae6a67415e147c7a25437b5450173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073a3c731882bbb5c2f19abcbbab06c22f20745ef2b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600072085aa596da26ff95a0aa5772988e100bf5273073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073a7fc9f19d9c5f8c39e69c1674c4c14fdd8f0dc2c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073ab58f3de07fb3455d218438a99d69b3f06f23c4973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007367bb605e68389c39e1b71990c54e985beffa0bd673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000730a9accc02bf746d44e8e5f00056e24583afde0e473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000733ae68dce9c856413d5fc72225e3b60e4eb8984fc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007350517761d2be85075df41b92e2a581b59a0db54973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007322eef23d58355f08034551f66c194c2752d494c673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073a0bdf16f3c91633838ad715a4bc7e8b40609334073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073d7e5ece88400b813ca8be363583acb3342939b2473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073ea5876991ca48e366f46b5bde5e6adcffa2000bc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073095fd83d8909b3f9dab3ab36b24a28d5b57a5e4873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073baaba861464f25f52c2ee10cc3ac024f4f77812a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007309af59067b159a023e41df8721ce4ad71cd70a9973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007356f4507c6fdb017cde092c37d3cf9893322245eb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000736245f1c86af1d0f87e5830b400033b1369d41c3473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073709ab301978e2cc74d35d15c7c33107a37047bfa73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000736139a7487d122934982a9a0f6eb81d64f25a817673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073bde1668dc41e0eddb253c03faf965adc72bfd02773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007370070d4ff9487755709e8ddc895820b456af9d9a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073a5a88a21896f963f59f2c3e0ee2247565dd9f25773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073a26bdb6b0183f142355d82ba51540d28abed75ff73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073c31cb85afa668fa7bfdf1ad189b16f5249fa4c8e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073df0f45c028946d7c410e06f18547ea5ed4b98b6373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073943ead70dce4df339227f4c7480f80a584f3d88473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073d9e77b9dc0095f45273a49442fdc49513f2e062d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000730763cb7fc792a0ad0ee5593be50f82e2da7aeb0973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073445934820d319b9f26cd7e7675c3184c0e2013fd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000734f0c752fdbea79558dda8273750562eed4a518e273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000739a290af64601f34debadc26526a1a52f7a554e1b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000738a3ffa2f2f2249da2b475eb15a223c3b9f735fe873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007308a5ae15fae7a78517438a7e44f3defe588def6f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000738118123f6747f6f079492b8789256f2cee932b6473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073327af9d0ec5851102d53326d1dd89ea0f43ec85c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073ccc34c28a0b3762dae74eeca2a631661daf3daf573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073e0d4938f6325f0f4f944a581fc5bb68faa07f47a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073aefc4c562002de306714a40cc0a31b86f7e7907773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073d4af804b5fc981c889e7b7c3af0e8d8ac2e2630d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073b5beebbfb568be3d5d7afc7c35cac5bc517a1fa473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000739fd9ec2a8bd80ee3105e979db5f052b92a2f3ff173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000732401379c8f2f131089db4a13454920f64bfbe62273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073dada6af9d17b79d2a6e916c415178c3fc252bd9a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007372df07d6cb06d55b4e38f0b3761e0406e3fb38f673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073b89f17dd3772efa4cf32785c3ad8c73a38a8240973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007365adb749ace94d10535e0996c4223c3dcb4e6c8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000737a7f4487642cb6ba2d09a7f6902eb2fefa2ed5a473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073aeaf879e6b2becb46e173dc96888276800c7411973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073b490dde9273c5042b1c4e18aa1d551853b4862d073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073367fc750e257656a6b4d497a0d9ea74fe5c320eb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073ad0bc71da62040a4204bbbb0d83c4f4dce5c8b0373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073bc50eb3b6c11f05a20353c1098b49cd137788d4073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073a32886a9abb05d69ee88a55d98418539fe2b633973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000733e18b56e65ccb82ac6e81a0c18071d1dd644b65b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073048b1ccecf3635f0506909e5bcf61fac69b9236d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000739ca2f06c148b6ee694892b8a455400f75c2807a273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073f147510b4755159608c4395c121fd64feea3774773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000733f015b37cd324d3cbaaa075a75f8f0a9afeb04e173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073e8fa3e7281c9fde4f9c590dcef0c797fdbd8e71f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000733580ab76a179af05e94fcb16f84c9c253d4d0ab173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073e63fa6524fa2d252cc3b46fdb4839900bfbfbb4973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073b518a513fe076345b13911617976e27b262d503373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073db2ceb603ddf833a8d68698078f46efaa9c165e173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000733dce69b6e183ceb6b39fa7df2bc190185d8edf7573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073f43967fca936a195981ebeecec035daa59fab44373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007343123084c1b589447a02e351688765ef57dc9b8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073e072be2b42857dbeee17a30fa53752bf438058b773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007315e8ccbd3ce150b382ab8bb8b1e874fc81d14edd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007311c61bcd43d61b62719c7971b227fbb8cf6f3b7173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007368effcbfa1fb3b5a18febc8ac4d22b5999b93e7f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000733e59ea5c21ebb11765f182d7cf901a8615c7ccda73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007338e3f0ca14525d869fa7fe19303a9b711dd375c973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073020f441f825767542a8853e08f7fd086a26981c273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073e498aa2326f80c7299e22d16376d4113cb51973373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007399f1396495cceaffe82c9e22b8a6ceb9c6b9336d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073f9a99b48ca723176b5cc10d6eb0ba7d0e0529a3e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073a17138c0675173b8ea506fb1b96fa754bc316cc273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000739c4f52cf0f6537031d64b0c8ba7ea1729f0d108773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007398be88fe1305e65ebd2afaef493a36200740e21273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073f777a4ba5021f3ab5fe1f623d4051e556a246f7273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000730c9642dc22c957612fd1c297ebb9fb91d9d1299073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073402a0af9f46690c1f5d78e4d4990fb00a91c411473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073f4a52a3b2715dd0bb046a212de51db38eb1329d373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000734bb7eceeb36395deb86a42be19fc1440a23b5ea073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073e5ef9ff63c464cf421aa95f06ce15d707662d5f273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000735233f73d362bc62ccc500036027a100194506ec973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000739eb335400b6ab26481002a25171b0e0b50a33fd873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073f92f571fd4ed497f672d4f37f46ee02eb13b63c873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073cce848d0e705c72ce054c5d4918d32ecf44c590573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007340b4911489a87858f7e6765fdd32dfdd9d449ac673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555060016010600073406e4e822e0706acf2c958d00ff82452020c556b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000736b88c64796192728eee4ee19db1ae43fc4c80a2373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000738f94be578e4a5435244b2e272d2b649d58242b2373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550600160106000732b08b2c356c2c9c4cc8f2993673f44106165b20b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001601060007340b6b169fc9aaa1380375ebcc4be40d19f37e1ff73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff02191690831515021790555062008620565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200851990620085bb565b90600052602060002090601f0160209004810192826200853d576000855562008589565b82601f106200855857805160ff191683800117855562008589565b8280016001018555821562008589579182015b82811115620085885782518255916020019190600101906200856b565b5b5090506200859891906200859c565b5090565b5b80821115620085b75760008160009055506001016200859d565b5090565b60006002820490506001821680620085d457607f821691505b60208210811415620085eb57620085ea620085f1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61482280620086306000396000f3fe60806040526004361061020f5760003560e01c806370a0823111610118578063a22cb465116100a0578063b88d4fde1161006f578063b88d4fde1461074b578063c87b56dd14610774578063e985e9c5146107b1578063f2fde38b146107ee578063f6e752fd146108175761020f565b8063a22cb465146106c6578063a31a13eb146106ef578063ab64c48914610706578063af27073e1461072f5761020f565b80637a3f451e116100e75780637a3f451e146106125780638be25e151461063d5780638da5cb5b1461065957806395d89b411461068457806396f8f6dd146106af5761020f565b806370a0823114610558578063715018a614610595578063740d73f3146105ac57806377bf1411146105d55761020f565b80633ccfd60b1161019b57806355f804b31161016a57806355f804b314610471578063571dff3b1461049a5780636352211e146104c55780636c0360eb146105025780636de9f32b1461052d5761020f565b80633ccfd60b146103c957806342842e0e146103e05780634f6ccce714610409578063528173a6146104465761020f565b8063095ea7b3116101e2578063095ea7b3146102e457806318160ddd1461030d57806318308a581461033857806323b872dd146103635780632f745c591461038c5761020f565b806301ffc9a714610214578063052939051461025157806306fdde031461027c578063081812fc146102a7575b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190613313565b610840565b6040516102489190613886565b60405180910390f35b34801561025d57600080fd5b506102666108ba565b6040516102739190613886565b60405180910390f35b34801561028857600080fd5b506102916108cd565b60405161029e91906138a1565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c991906133b6565b61095f565b6040516102db919061381f565b60405180910390f35b3480156102f057600080fd5b5061030b6004803603810190610306919061328a565b6109e4565b005b34801561031957600080fd5b50610322610afc565b60405161032f9190613bc3565b60405180910390f35b34801561034457600080fd5b5061034d610b09565b60405161035a9190613886565b60405180910390f35b34801561036f57600080fd5b5061038a60048036038101906103859190613174565b610b1c565b005b34801561039857600080fd5b506103b360048036038101906103ae919061328a565b610b7c565b6040516103c09190613bc3565b60405180910390f35b3480156103d557600080fd5b506103de610c21565b005b3480156103ec57600080fd5b5061040760048036038101906104029190613174565b610cdd565b005b34801561041557600080fd5b50610430600480360381019061042b91906133b6565b610cfd565b60405161043d9190613bc3565b60405180910390f35b34801561045257600080fd5b5061045b610d6e565b6040516104689190613bc3565b60405180910390f35b34801561047d57600080fd5b506104986004803603810190610493919061336d565b610d74565b005b3480156104a657600080fd5b506104af610e0a565b6040516104bc9190613bc3565b60405180910390f35b3480156104d157600080fd5b506104ec60048036038101906104e791906133b6565b610e0f565b6040516104f9919061381f565b60405180910390f35b34801561050e57600080fd5b50610517610ec1565b60405161052491906138a1565b60405180910390f35b34801561053957600080fd5b50610542610f4f565b60405161054f9190613bc3565b60405180910390f35b34801561056457600080fd5b5061057f600480360381019061057a9190613107565b610f55565b60405161058c9190613bc3565b60405180910390f35b3480156105a157600080fd5b506105aa61100d565b005b3480156105b857600080fd5b506105d360048036038101906105ce91906132ca565b611095565b005b3480156105e157600080fd5b506105fc60048036038101906105f79190613107565b6111a9565b6040516106099190613886565b60405180910390f35b34801561061e57600080fd5b50610627611213565b6040516106349190613bc3565b60405180910390f35b610657600480360381019061065291906133b6565b611219565b005b34801561066557600080fd5b5061066e611377565b60405161067b919061381f565b60405180910390f35b34801561069057600080fd5b506106996113a1565b6040516106a691906138a1565b60405180910390f35b3480156106bb57600080fd5b506106c4611433565b005b3480156106d257600080fd5b506106ed60048036038101906106e8919061324a565b6114db565b005b3480156106fb57600080fd5b506107046114f1565b005b34801561071257600080fd5b5061072d600480360381019061072891906133b6565b611599565b005b610749600480360381019061074491906133b6565b611640565b005b34801561075757600080fd5b50610772600480360381019061076d91906131c7565b61190f565b005b34801561078057600080fd5b5061079b600480360381019061079691906133b6565b611971565b6040516107a891906138a1565b60405180910390f35b3480156107bd57600080fd5b506107d860048036038101906107d39190613134565b611a18565b6040516107e59190613886565b60405180910390f35b3480156107fa57600080fd5b5061081560048036038101906108109190613107565b611aac565b005b34801561082357600080fd5b5061083e600480360381019061083991906133b6565b611ba4565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108b357506108b282611c38565b5b9050919050565b600d60009054906101000a900460ff1681565b6060600080546108dc90613e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461090890613e9f565b80156109555780601f1061092a57610100808354040283529160200191610955565b820191906000526020600020905b81548152906001019060200180831161093857829003601f168201915b5050505050905090565b600061096a82611d1a565b6109a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a090613aa3565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109ef82610e0f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5790613b23565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a7f611d86565b73ffffffffffffffffffffffffffffffffffffffff161480610aae5750610aad81610aa8611d86565b611a18565b5b610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae490613a23565b60405180910390fd5b610af78383611d8e565b505050565b6000600880549050905090565b600d60019054906101000a900460ff1681565b610b2d610b27611d86565b82611e47565b610b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6390613b43565b60405180910390fd5b610b77838383611f25565b505050565b6000610b8783610f55565b8210610bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbf90613903565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610c29611d86565b73ffffffffffffffffffffffffffffffffffffffff16610c47611377565b73ffffffffffffffffffffffffffffffffffffffff1614610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9490613ac3565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050610cdb57600080fd5b565b610cf88383836040518060200160405280600081525061190f565b505050565b6000610d07610afc565b8210610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f90613b83565b60405180910390fd5b60088281548110610d5c57610d5b614038565b5b90600052602060002001549050919050565b600c5481565b610d7c611d86565b73ffffffffffffffffffffffffffffffffffffffff16610d9a611377565b73ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de790613ac3565b60405180910390fd5b80600e9080519060200190610e06929190612e7d565b5050565b600a81565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaf90613a63565b60405180910390fd5b80915050919050565b600e8054610ece90613e9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610efa90613e9f565b8015610f475780601f10610f1c57610100808354040283529160200191610f47565b820191906000526020600020905b815481529060010190602001808311610f2a57829003601f168201915b505050505081565b600f5481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd90613a43565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611015611d86565b73ffffffffffffffffffffffffffffffffffffffff16611033611377565b73ffffffffffffffffffffffffffffffffffffffff1614611089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108090613ac3565b60405180910390fd5b6110936000612181565b565b61109d611d86565b73ffffffffffffffffffffffffffffffffffffffff166110bb611377565b73ffffffffffffffffffffffffffffffffffffffff1614611111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110890613ac3565b60405180910390fd5b60005b81518110156111a55760016010600084848151811061113657611135614038565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550808061119d90613f02565b915050611114565b5050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1615611209576001905061120e565b600090505b919050565b600b5481565b600d60009054906101000a900460ff16611268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125f90613983565b60405180910390fd5b6000811180156112795750600a8111155b61128257600080fd5b600c5481600f546112939190613cd4565b11156112d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cb906138e3565b60405180910390fd5b80600b546112e29190613d5b565b341015611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b90613b63565b60405180910390fd5b60005b8181101561137357600c54600f54101561136057600f600081548092919061134e90613f02565b919050555061135f33600f54612247565b5b808061136b90613f02565b915050611327565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546113b090613e9f565b80601f01602080910402602001604051908101604052809291908181526020018280546113dc90613e9f565b80156114295780601f106113fe57610100808354040283529160200191611429565b820191906000526020600020905b81548152906001019060200180831161140c57829003601f168201915b5050505050905090565b61143b611d86565b73ffffffffffffffffffffffffffffffffffffffff16611459611377565b73ffffffffffffffffffffffffffffffffffffffff16146114af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a690613ac3565b60405180910390fd5b600d60009054906101000a900460ff1615600d60006101000a81548160ff021916908315150217905550565b6114ed6114e6611d86565b8383612265565b5050565b6114f9611d86565b73ffffffffffffffffffffffffffffffffffffffff16611517611377565b73ffffffffffffffffffffffffffffffffffffffff161461156d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156490613ac3565b60405180910390fd5b600d60019054906101000a900460ff1615600d60016101000a81548160ff021916908315150217905550565b6115a1611d86565b73ffffffffffffffffffffffffffffffffffffffff166115bf611377565b73ffffffffffffffffffffffffffffffffffffffff1614611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c90613ac3565b60405180910390fd5b600c54811061162357600080fd5b61162b610afc565b811161163657600080fd5b80600c8190555050565b600d60019054906101000a900460ff1661168f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611686906139e3565b60405180910390fd5b60011515601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff16151514611725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171c90613ba3565b60405180910390fd5b6000811180156117445750600c5481600f546117419190613cd4565b11155b611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177a906138e3565b60405180910390fd5b600281601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546117d39190613cd4565b1115611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b906138c3565b60405180910390fd5b80600b546118229190613d5b565b341015611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185b90613b63565b60405180910390fd5b60005b8181101561190b57600c54600f5410156118f857601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008154809291906118ce90613f02565b9190505550600f60008154809291906118e690613f02565b91905055506118f733600f54612247565b5b808061190390613f02565b915050611867565b5050565b61192061191a611d86565b83611e47565b61195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690613b43565b60405180910390fd5b61196b848484846123d2565b50505050565b606061197c82611d1a565b6119bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b290613b03565b60405180910390fd5b60006119c561242e565b905060008151116119e55760405180602001604052806000815250611a10565b806119ef846124c0565b604051602001611a009291906137fb565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611ab4611d86565b73ffffffffffffffffffffffffffffffffffffffff16611ad2611377565b73ffffffffffffffffffffffffffffffffffffffff1614611b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1f90613ac3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8f90613943565b60405180910390fd5b611ba181612181565b50565b611bac611d86565b73ffffffffffffffffffffffffffffffffffffffff16611bca611377565b73ffffffffffffffffffffffffffffffffffffffff1614611c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1790613ac3565b60405180910390fd5b600b548110611c2e57600080fd5b80600b8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d0357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611d135750611d1282612621565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611e0183610e0f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611e5282611d1a565b611e91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8890613a03565b60405180910390fd5b6000611e9c83610e0f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611f0b57508373ffffffffffffffffffffffffffffffffffffffff16611ef38461095f565b73ffffffffffffffffffffffffffffffffffffffff16145b80611f1c5750611f1b8185611a18565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611f4582610e0f565b73ffffffffffffffffffffffffffffffffffffffff1614611f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9290613ae3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561200b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612002906139a3565b60405180910390fd5b61201683838361268b565b612021600082611d8e565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120719190613db5565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120c89190613cd4565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61226182826040518060200160405280600081525061279f565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cb906139c3565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516123c59190613886565b60405180910390a3505050565b6123dd848484611f25565b6123e9848484846127fa565b612428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241f90613923565b60405180910390fd5b50505050565b6060600e805461243d90613e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461246990613e9f565b80156124b65780601f1061248b576101008083540402835291602001916124b6565b820191906000526020600020905b81548152906001019060200180831161249957829003601f168201915b5050505050905090565b60606000821415612508576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061261c565b600082905060005b6000821461253a57808061252390613f02565b915050600a826125339190613d2a565b9150612510565b60008167ffffffffffffffff81111561255657612555614067565b5b6040519080825280601f01601f1916602001820160405280156125885781602001600182028036833780820191505090505b5090505b60008514612615576001826125a19190613db5565b9150600a856125b09190613f4b565b60306125bc9190613cd4565b60f81b8183815181106125d2576125d1614038565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561260e9190613d2a565b945061258c565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612696838383612991565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126d9576126d481612996565b612718565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146127175761271683826129df565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561275b5761275681612b4c565b61279a565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612799576127988282612c1d565b5b5b505050565b6127a98383612c9c565b6127b660008484846127fa565b6127f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ec90613923565b60405180910390fd5b505050565b600061281b8473ffffffffffffffffffffffffffffffffffffffff16612e6a565b15612984578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612844611d86565b8786866040518563ffffffff1660e01b8152600401612866949392919061383a565b602060405180830381600087803b15801561288057600080fd5b505af19250505080156128b157506040513d601f19601f820116820180604052508101906128ae9190613340565b60015b612934573d80600081146128e1576040519150601f19603f3d011682016040523d82523d6000602084013e6128e6565b606091505b5060008151141561292c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292390613923565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612989565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016129ec84610f55565b6129f69190613db5565b9050600060076000848152602001908152602001600020549050818114612adb576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050612b609190613db5565b9050600060096000848152602001908152602001600020549050600060088381548110612b9057612b8f614038565b5b906000526020600020015490508060088381548110612bb257612bb1614038565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480612c0157612c00614009565b5b6001900381819060005260206000200160009055905550505050565b6000612c2883610f55565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0390613a83565b60405180910390fd5b612d1581611d1a565b15612d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4c90613963565b60405180910390fd5b612d616000838361268b565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612db19190613cd4565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054612e8990613e9f565b90600052602060002090601f016020900481019282612eab5760008555612ef2565b82601f10612ec457805160ff1916838001178555612ef2565b82800160010185558215612ef2579182015b82811115612ef1578251825591602001919060010190612ed6565b5b509050612eff9190612f03565b5090565b5b80821115612f1c576000816000905550600101612f04565b5090565b6000612f33612f2e84613c03565b613bde565b90508083825260208201905082856020860282011115612f5657612f5561409b565b5b60005b85811015612f865781612f6c8882613014565b845260208401935060208301925050600181019050612f59565b5050509392505050565b6000612fa3612f9e84613c2f565b613bde565b905082815260208101848484011115612fbf57612fbe6140a0565b5b612fca848285613e5d565b509392505050565b6000612fe5612fe084613c60565b613bde565b905082815260208101848484011115613001576130006140a0565b5b61300c848285613e5d565b509392505050565b60008135905061302381614790565b92915050565b600082601f83011261303e5761303d614096565b5b813561304e848260208601612f20565b91505092915050565b600081359050613066816147a7565b92915050565b60008135905061307b816147be565b92915050565b600081519050613090816147be565b92915050565b600082601f8301126130ab576130aa614096565b5b81356130bb848260208601612f90565b91505092915050565b600082601f8301126130d9576130d8614096565b5b81356130e9848260208601612fd2565b91505092915050565b600081359050613101816147d5565b92915050565b60006020828403121561311d5761311c6140aa565b5b600061312b84828501613014565b91505092915050565b6000806040838503121561314b5761314a6140aa565b5b600061315985828601613014565b925050602061316a85828601613014565b9150509250929050565b60008060006060848603121561318d5761318c6140aa565b5b600061319b86828701613014565b93505060206131ac86828701613014565b92505060406131bd868287016130f2565b9150509250925092565b600080600080608085870312156131e1576131e06140aa565b5b60006131ef87828801613014565b945050602061320087828801613014565b9350506040613211878288016130f2565b925050606085013567ffffffffffffffff811115613232576132316140a5565b5b61323e87828801613096565b91505092959194509250565b60008060408385031215613261576132606140aa565b5b600061326f85828601613014565b925050602061328085828601613057565b9150509250929050565b600080604083850312156132a1576132a06140aa565b5b60006132af85828601613014565b92505060206132c0858286016130f2565b9150509250929050565b6000602082840312156132e0576132df6140aa565b5b600082013567ffffffffffffffff8111156132fe576132fd6140a5565b5b61330a84828501613029565b91505092915050565b600060208284031215613329576133286140aa565b5b60006133378482850161306c565b91505092915050565b600060208284031215613356576133556140aa565b5b600061336484828501613081565b91505092915050565b600060208284031215613383576133826140aa565b5b600082013567ffffffffffffffff8111156133a1576133a06140a5565b5b6133ad848285016130c4565b91505092915050565b6000602082840312156133cc576133cb6140aa565b5b60006133da848285016130f2565b91505092915050565b6133ec81613de9565b82525050565b6133fb81613dfb565b82525050565b600061340c82613c91565b6134168185613ca7565b9350613426818560208601613e6c565b61342f816140af565b840191505092915050565b600061344582613c9c565b61344f8185613cb8565b935061345f818560208601613e6c565b613468816140af565b840191505092915050565b600061347e82613c9c565b6134888185613cc9565b9350613498818560208601613e6c565b80840191505092915050565b60006134b1603383613cb8565b91506134bc826140c0565b604082019050919050565b60006134d4602983613cb8565b91506134df8261410f565b604082019050919050565b60006134f7602b83613cb8565b91506135028261415e565b604082019050919050565b600061351a603283613cb8565b9150613525826141ad565b604082019050919050565b600061353d602683613cb8565b9150613548826141fc565b604082019050919050565b6000613560601c83613cb8565b915061356b8261424b565b602082019050919050565b6000613583603383613cb8565b915061358e82614274565b604082019050919050565b60006135a6602483613cb8565b91506135b1826142c3565b604082019050919050565b60006135c9601983613cb8565b91506135d482614312565b602082019050919050565b60006135ec602883613cb8565b91506135f78261433b565b604082019050919050565b600061360f602c83613cb8565b915061361a8261438a565b604082019050919050565b6000613632603883613cb8565b915061363d826143d9565b604082019050919050565b6000613655602a83613cb8565b915061366082614428565b604082019050919050565b6000613678602983613cb8565b915061368382614477565b604082019050919050565b600061369b602083613cb8565b91506136a6826144c6565b602082019050919050565b60006136be602c83613cb8565b91506136c9826144ef565b604082019050919050565b60006136e1602083613cb8565b91506136ec8261453e565b602082019050919050565b6000613704602983613cb8565b915061370f82614567565b604082019050919050565b6000613727602f83613cb8565b9150613732826145b6565b604082019050919050565b600061374a602183613cb8565b915061375582614605565b604082019050919050565b600061376d603183613cb8565b915061377882614654565b604082019050919050565b6000613790603083613cb8565b915061379b826146a3565b604082019050919050565b60006137b3602c83613cb8565b91506137be826146f2565b604082019050919050565b60006137d6602883613cb8565b91506137e182614741565b604082019050919050565b6137f581613e53565b82525050565b60006138078285613473565b91506138138284613473565b91508190509392505050565b600060208201905061383460008301846133e3565b92915050565b600060808201905061384f60008301876133e3565b61385c60208301866133e3565b61386960408301856137ec565b818103606083015261387b8184613401565b905095945050505050565b600060208201905061389b60008301846133f2565b92915050565b600060208201905081810360008301526138bb818461343a565b905092915050565b600060208201905081810360008301526138dc816134a4565b9050919050565b600060208201905081810360008301526138fc816134c7565b9050919050565b6000602082019050818103600083015261391c816134ea565b9050919050565b6000602082019050818103600083015261393c8161350d565b9050919050565b6000602082019050818103600083015261395c81613530565b9050919050565b6000602082019050818103600083015261397c81613553565b9050919050565b6000602082019050818103600083015261399c81613576565b9050919050565b600060208201905081810360008301526139bc81613599565b9050919050565b600060208201905081810360008301526139dc816135bc565b9050919050565b600060208201905081810360008301526139fc816135df565b9050919050565b60006020820190508181036000830152613a1c81613602565b9050919050565b60006020820190508181036000830152613a3c81613625565b9050919050565b60006020820190508181036000830152613a5c81613648565b9050919050565b60006020820190508181036000830152613a7c8161366b565b9050919050565b60006020820190508181036000830152613a9c8161368e565b9050919050565b60006020820190508181036000830152613abc816136b1565b9050919050565b60006020820190508181036000830152613adc816136d4565b9050919050565b60006020820190508181036000830152613afc816136f7565b9050919050565b60006020820190508181036000830152613b1c8161371a565b9050919050565b60006020820190508181036000830152613b3c8161373d565b9050919050565b60006020820190508181036000830152613b5c81613760565b9050919050565b60006020820190508181036000830152613b7c81613783565b9050919050565b60006020820190508181036000830152613b9c816137a6565b9050919050565b60006020820190508181036000830152613bbc816137c9565b9050919050565b6000602082019050613bd860008301846137ec565b92915050565b6000613be8613bf9565b9050613bf48282613ed1565b919050565b6000604051905090565b600067ffffffffffffffff821115613c1e57613c1d614067565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613c4a57613c49614067565b5b613c53826140af565b9050602081019050919050565b600067ffffffffffffffff821115613c7b57613c7a614067565b5b613c84826140af565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613cdf82613e53565b9150613cea83613e53565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613d1f57613d1e613f7c565b5b828201905092915050565b6000613d3582613e53565b9150613d4083613e53565b925082613d5057613d4f613fab565b5b828204905092915050565b6000613d6682613e53565b9150613d7183613e53565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613daa57613da9613f7c565b5b828202905092915050565b6000613dc082613e53565b9150613dcb83613e53565b925082821015613dde57613ddd613f7c565b5b828203905092915050565b6000613df482613e33565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613e8a578082015181840152602081019050613e6f565b83811115613e99576000848401525b50505050565b60006002820490506001821680613eb757607f821691505b60208210811415613ecb57613eca613fda565b5b50919050565b613eda826140af565b810181811067ffffffffffffffff82111715613ef957613ef8614067565b5b80604052505050565b6000613f0d82613e53565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613f4057613f3f613f7c565b5b600182019050919050565b6000613f5682613e53565b9150613f6183613e53565b925082613f7157613f70613fab565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f546869732057616c6c65742068617320616c7265616479206d696e746564206960008201527f74732032207265736572766564204d4157277300000000000000000000000000602082015250565b7f507572636861736520776f756c6420657863656564206d617820737570706c7960008201527f206f66204d415727730000000000000000000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f506c65617365207761697420756e74696c20746865205075626c69632073616c60008201527f652069732061637469766520746f206d696e7400000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f506c65617365207761697420756e74696c20746865205072654d696e7420686160008201527f7320626567756e21000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f4554482076616c75652073656e7420697320746f6f206c6974746c6520666f7260008201527f2074686973206d616e79204d4157277300000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f546869732057616c6c6574206973206e6f742061626c65206d696e7420666f7260008201527f2070726573616c65000000000000000000000000000000000000000000000000602082015250565b61479981613de9565b81146147a457600080fd5b50565b6147b081613dfb565b81146147bb57600080fd5b50565b6147c781613e07565b81146147d257600080fd5b50565b6147de81613e53565b81146147e957600080fd5b5056fea2646970667358221220d680acad069120d789f0f8cffbf9b08f949ae2d92323e5ef39051fdb4e0aec5764736f6c63430008070033

Deployed Bytecode

0x60806040526004361061020f5760003560e01c806370a0823111610118578063a22cb465116100a0578063b88d4fde1161006f578063b88d4fde1461074b578063c87b56dd14610774578063e985e9c5146107b1578063f2fde38b146107ee578063f6e752fd146108175761020f565b8063a22cb465146106c6578063a31a13eb146106ef578063ab64c48914610706578063af27073e1461072f5761020f565b80637a3f451e116100e75780637a3f451e146106125780638be25e151461063d5780638da5cb5b1461065957806395d89b411461068457806396f8f6dd146106af5761020f565b806370a0823114610558578063715018a614610595578063740d73f3146105ac57806377bf1411146105d55761020f565b80633ccfd60b1161019b57806355f804b31161016a57806355f804b314610471578063571dff3b1461049a5780636352211e146104c55780636c0360eb146105025780636de9f32b1461052d5761020f565b80633ccfd60b146103c957806342842e0e146103e05780634f6ccce714610409578063528173a6146104465761020f565b8063095ea7b3116101e2578063095ea7b3146102e457806318160ddd1461030d57806318308a581461033857806323b872dd146103635780632f745c591461038c5761020f565b806301ffc9a714610214578063052939051461025157806306fdde031461027c578063081812fc146102a7575b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190613313565b610840565b6040516102489190613886565b60405180910390f35b34801561025d57600080fd5b506102666108ba565b6040516102739190613886565b60405180910390f35b34801561028857600080fd5b506102916108cd565b60405161029e91906138a1565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c991906133b6565b61095f565b6040516102db919061381f565b60405180910390f35b3480156102f057600080fd5b5061030b6004803603810190610306919061328a565b6109e4565b005b34801561031957600080fd5b50610322610afc565b60405161032f9190613bc3565b60405180910390f35b34801561034457600080fd5b5061034d610b09565b60405161035a9190613886565b60405180910390f35b34801561036f57600080fd5b5061038a60048036038101906103859190613174565b610b1c565b005b34801561039857600080fd5b506103b360048036038101906103ae919061328a565b610b7c565b6040516103c09190613bc3565b60405180910390f35b3480156103d557600080fd5b506103de610c21565b005b3480156103ec57600080fd5b5061040760048036038101906104029190613174565b610cdd565b005b34801561041557600080fd5b50610430600480360381019061042b91906133b6565b610cfd565b60405161043d9190613bc3565b60405180910390f35b34801561045257600080fd5b5061045b610d6e565b6040516104689190613bc3565b60405180910390f35b34801561047d57600080fd5b506104986004803603810190610493919061336d565b610d74565b005b3480156104a657600080fd5b506104af610e0a565b6040516104bc9190613bc3565b60405180910390f35b3480156104d157600080fd5b506104ec60048036038101906104e791906133b6565b610e0f565b6040516104f9919061381f565b60405180910390f35b34801561050e57600080fd5b50610517610ec1565b60405161052491906138a1565b60405180910390f35b34801561053957600080fd5b50610542610f4f565b60405161054f9190613bc3565b60405180910390f35b34801561056457600080fd5b5061057f600480360381019061057a9190613107565b610f55565b60405161058c9190613bc3565b60405180910390f35b3480156105a157600080fd5b506105aa61100d565b005b3480156105b857600080fd5b506105d360048036038101906105ce91906132ca565b611095565b005b3480156105e157600080fd5b506105fc60048036038101906105f79190613107565b6111a9565b6040516106099190613886565b60405180910390f35b34801561061e57600080fd5b50610627611213565b6040516106349190613bc3565b60405180910390f35b610657600480360381019061065291906133b6565b611219565b005b34801561066557600080fd5b5061066e611377565b60405161067b919061381f565b60405180910390f35b34801561069057600080fd5b506106996113a1565b6040516106a691906138a1565b60405180910390f35b3480156106bb57600080fd5b506106c4611433565b005b3480156106d257600080fd5b506106ed60048036038101906106e8919061324a565b6114db565b005b3480156106fb57600080fd5b506107046114f1565b005b34801561071257600080fd5b5061072d600480360381019061072891906133b6565b611599565b005b610749600480360381019061074491906133b6565b611640565b005b34801561075757600080fd5b50610772600480360381019061076d91906131c7565b61190f565b005b34801561078057600080fd5b5061079b600480360381019061079691906133b6565b611971565b6040516107a891906138a1565b60405180910390f35b3480156107bd57600080fd5b506107d860048036038101906107d39190613134565b611a18565b6040516107e59190613886565b60405180910390f35b3480156107fa57600080fd5b5061081560048036038101906108109190613107565b611aac565b005b34801561082357600080fd5b5061083e600480360381019061083991906133b6565b611ba4565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108b357506108b282611c38565b5b9050919050565b600d60009054906101000a900460ff1681565b6060600080546108dc90613e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461090890613e9f565b80156109555780601f1061092a57610100808354040283529160200191610955565b820191906000526020600020905b81548152906001019060200180831161093857829003601f168201915b5050505050905090565b600061096a82611d1a565b6109a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a090613aa3565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109ef82610e0f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5790613b23565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a7f611d86565b73ffffffffffffffffffffffffffffffffffffffff161480610aae5750610aad81610aa8611d86565b611a18565b5b610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae490613a23565b60405180910390fd5b610af78383611d8e565b505050565b6000600880549050905090565b600d60019054906101000a900460ff1681565b610b2d610b27611d86565b82611e47565b610b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6390613b43565b60405180910390fd5b610b77838383611f25565b505050565b6000610b8783610f55565b8210610bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbf90613903565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610c29611d86565b73ffffffffffffffffffffffffffffffffffffffff16610c47611377565b73ffffffffffffffffffffffffffffffffffffffff1614610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9490613ac3565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050610cdb57600080fd5b565b610cf88383836040518060200160405280600081525061190f565b505050565b6000610d07610afc565b8210610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f90613b83565b60405180910390fd5b60088281548110610d5c57610d5b614038565b5b90600052602060002001549050919050565b600c5481565b610d7c611d86565b73ffffffffffffffffffffffffffffffffffffffff16610d9a611377565b73ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de790613ac3565b60405180910390fd5b80600e9080519060200190610e06929190612e7d565b5050565b600a81565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaf90613a63565b60405180910390fd5b80915050919050565b600e8054610ece90613e9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610efa90613e9f565b8015610f475780601f10610f1c57610100808354040283529160200191610f47565b820191906000526020600020905b815481529060010190602001808311610f2a57829003601f168201915b505050505081565b600f5481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd90613a43565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611015611d86565b73ffffffffffffffffffffffffffffffffffffffff16611033611377565b73ffffffffffffffffffffffffffffffffffffffff1614611089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108090613ac3565b60405180910390fd5b6110936000612181565b565b61109d611d86565b73ffffffffffffffffffffffffffffffffffffffff166110bb611377565b73ffffffffffffffffffffffffffffffffffffffff1614611111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110890613ac3565b60405180910390fd5b60005b81518110156111a55760016010600084848151811061113657611135614038565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff021916908315150217905550808061119d90613f02565b915050611114565b5050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1615611209576001905061120e565b600090505b919050565b600b5481565b600d60009054906101000a900460ff16611268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125f90613983565b60405180910390fd5b6000811180156112795750600a8111155b61128257600080fd5b600c5481600f546112939190613cd4565b11156112d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cb906138e3565b60405180910390fd5b80600b546112e29190613d5b565b341015611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b90613b63565b60405180910390fd5b60005b8181101561137357600c54600f54101561136057600f600081548092919061134e90613f02565b919050555061135f33600f54612247565b5b808061136b90613f02565b915050611327565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546113b090613e9f565b80601f01602080910402602001604051908101604052809291908181526020018280546113dc90613e9f565b80156114295780601f106113fe57610100808354040283529160200191611429565b820191906000526020600020905b81548152906001019060200180831161140c57829003601f168201915b5050505050905090565b61143b611d86565b73ffffffffffffffffffffffffffffffffffffffff16611459611377565b73ffffffffffffffffffffffffffffffffffffffff16146114af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a690613ac3565b60405180910390fd5b600d60009054906101000a900460ff1615600d60006101000a81548160ff021916908315150217905550565b6114ed6114e6611d86565b8383612265565b5050565b6114f9611d86565b73ffffffffffffffffffffffffffffffffffffffff16611517611377565b73ffffffffffffffffffffffffffffffffffffffff161461156d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156490613ac3565b60405180910390fd5b600d60019054906101000a900460ff1615600d60016101000a81548160ff021916908315150217905550565b6115a1611d86565b73ffffffffffffffffffffffffffffffffffffffff166115bf611377565b73ffffffffffffffffffffffffffffffffffffffff1614611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c90613ac3565b60405180910390fd5b600c54811061162357600080fd5b61162b610afc565b811161163657600080fd5b80600c8190555050565b600d60019054906101000a900460ff1661168f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611686906139e3565b60405180910390fd5b60011515601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff16151514611725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171c90613ba3565b60405180910390fd5b6000811180156117445750600c5481600f546117419190613cd4565b11155b611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177a906138e3565b60405180910390fd5b600281601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546117d39190613cd4565b1115611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b906138c3565b60405180910390fd5b80600b546118229190613d5b565b341015611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185b90613b63565b60405180910390fd5b60005b8181101561190b57600c54600f5410156118f857601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008154809291906118ce90613f02565b9190505550600f60008154809291906118e690613f02565b91905055506118f733600f54612247565b5b808061190390613f02565b915050611867565b5050565b61192061191a611d86565b83611e47565b61195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690613b43565b60405180910390fd5b61196b848484846123d2565b50505050565b606061197c82611d1a565b6119bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b290613b03565b60405180910390fd5b60006119c561242e565b905060008151116119e55760405180602001604052806000815250611a10565b806119ef846124c0565b604051602001611a009291906137fb565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611ab4611d86565b73ffffffffffffffffffffffffffffffffffffffff16611ad2611377565b73ffffffffffffffffffffffffffffffffffffffff1614611b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1f90613ac3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8f90613943565b60405180910390fd5b611ba181612181565b50565b611bac611d86565b73ffffffffffffffffffffffffffffffffffffffff16611bca611377565b73ffffffffffffffffffffffffffffffffffffffff1614611c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1790613ac3565b60405180910390fd5b600b548110611c2e57600080fd5b80600b8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d0357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611d135750611d1282612621565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611e0183610e0f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611e5282611d1a565b611e91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8890613a03565b60405180910390fd5b6000611e9c83610e0f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611f0b57508373ffffffffffffffffffffffffffffffffffffffff16611ef38461095f565b73ffffffffffffffffffffffffffffffffffffffff16145b80611f1c5750611f1b8185611a18565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611f4582610e0f565b73ffffffffffffffffffffffffffffffffffffffff1614611f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9290613ae3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561200b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612002906139a3565b60405180910390fd5b61201683838361268b565b612021600082611d8e565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120719190613db5565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120c89190613cd4565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61226182826040518060200160405280600081525061279f565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cb906139c3565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516123c59190613886565b60405180910390a3505050565b6123dd848484611f25565b6123e9848484846127fa565b612428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241f90613923565b60405180910390fd5b50505050565b6060600e805461243d90613e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461246990613e9f565b80156124b65780601f1061248b576101008083540402835291602001916124b6565b820191906000526020600020905b81548152906001019060200180831161249957829003601f168201915b5050505050905090565b60606000821415612508576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061261c565b600082905060005b6000821461253a57808061252390613f02565b915050600a826125339190613d2a565b9150612510565b60008167ffffffffffffffff81111561255657612555614067565b5b6040519080825280601f01601f1916602001820160405280156125885781602001600182028036833780820191505090505b5090505b60008514612615576001826125a19190613db5565b9150600a856125b09190613f4b565b60306125bc9190613cd4565b60f81b8183815181106125d2576125d1614038565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561260e9190613d2a565b945061258c565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612696838383612991565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126d9576126d481612996565b612718565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146127175761271683826129df565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561275b5761275681612b4c565b61279a565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612799576127988282612c1d565b5b5b505050565b6127a98383612c9c565b6127b660008484846127fa565b6127f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ec90613923565b60405180910390fd5b505050565b600061281b8473ffffffffffffffffffffffffffffffffffffffff16612e6a565b15612984578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612844611d86565b8786866040518563ffffffff1660e01b8152600401612866949392919061383a565b602060405180830381600087803b15801561288057600080fd5b505af19250505080156128b157506040513d601f19601f820116820180604052508101906128ae9190613340565b60015b612934573d80600081146128e1576040519150601f19603f3d011682016040523d82523d6000602084013e6128e6565b606091505b5060008151141561292c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292390613923565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612989565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016129ec84610f55565b6129f69190613db5565b9050600060076000848152602001908152602001600020549050818114612adb576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050612b609190613db5565b9050600060096000848152602001908152602001600020549050600060088381548110612b9057612b8f614038565b5b906000526020600020015490508060088381548110612bb257612bb1614038565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480612c0157612c00614009565b5b6001900381819060005260206000200160009055905550505050565b6000612c2883610f55565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0390613a83565b60405180910390fd5b612d1581611d1a565b15612d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4c90613963565b60405180910390fd5b612d616000838361268b565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612db19190613cd4565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054612e8990613e9f565b90600052602060002090601f016020900481019282612eab5760008555612ef2565b82601f10612ec457805160ff1916838001178555612ef2565b82800160010185558215612ef2579182015b82811115612ef1578251825591602001919060010190612ed6565b5b509050612eff9190612f03565b5090565b5b80821115612f1c576000816000905550600101612f04565b5090565b6000612f33612f2e84613c03565b613bde565b90508083825260208201905082856020860282011115612f5657612f5561409b565b5b60005b85811015612f865781612f6c8882613014565b845260208401935060208301925050600181019050612f59565b5050509392505050565b6000612fa3612f9e84613c2f565b613bde565b905082815260208101848484011115612fbf57612fbe6140a0565b5b612fca848285613e5d565b509392505050565b6000612fe5612fe084613c60565b613bde565b905082815260208101848484011115613001576130006140a0565b5b61300c848285613e5d565b509392505050565b60008135905061302381614790565b92915050565b600082601f83011261303e5761303d614096565b5b813561304e848260208601612f20565b91505092915050565b600081359050613066816147a7565b92915050565b60008135905061307b816147be565b92915050565b600081519050613090816147be565b92915050565b600082601f8301126130ab576130aa614096565b5b81356130bb848260208601612f90565b91505092915050565b600082601f8301126130d9576130d8614096565b5b81356130e9848260208601612fd2565b91505092915050565b600081359050613101816147d5565b92915050565b60006020828403121561311d5761311c6140aa565b5b600061312b84828501613014565b91505092915050565b6000806040838503121561314b5761314a6140aa565b5b600061315985828601613014565b925050602061316a85828601613014565b9150509250929050565b60008060006060848603121561318d5761318c6140aa565b5b600061319b86828701613014565b93505060206131ac86828701613014565b92505060406131bd868287016130f2565b9150509250925092565b600080600080608085870312156131e1576131e06140aa565b5b60006131ef87828801613014565b945050602061320087828801613014565b9350506040613211878288016130f2565b925050606085013567ffffffffffffffff811115613232576132316140a5565b5b61323e87828801613096565b91505092959194509250565b60008060408385031215613261576132606140aa565b5b600061326f85828601613014565b925050602061328085828601613057565b9150509250929050565b600080604083850312156132a1576132a06140aa565b5b60006132af85828601613014565b92505060206132c0858286016130f2565b9150509250929050565b6000602082840312156132e0576132df6140aa565b5b600082013567ffffffffffffffff8111156132fe576132fd6140a5565b5b61330a84828501613029565b91505092915050565b600060208284031215613329576133286140aa565b5b60006133378482850161306c565b91505092915050565b600060208284031215613356576133556140aa565b5b600061336484828501613081565b91505092915050565b600060208284031215613383576133826140aa565b5b600082013567ffffffffffffffff8111156133a1576133a06140a5565b5b6133ad848285016130c4565b91505092915050565b6000602082840312156133cc576133cb6140aa565b5b60006133da848285016130f2565b91505092915050565b6133ec81613de9565b82525050565b6133fb81613dfb565b82525050565b600061340c82613c91565b6134168185613ca7565b9350613426818560208601613e6c565b61342f816140af565b840191505092915050565b600061344582613c9c565b61344f8185613cb8565b935061345f818560208601613e6c565b613468816140af565b840191505092915050565b600061347e82613c9c565b6134888185613cc9565b9350613498818560208601613e6c565b80840191505092915050565b60006134b1603383613cb8565b91506134bc826140c0565b604082019050919050565b60006134d4602983613cb8565b91506134df8261410f565b604082019050919050565b60006134f7602b83613cb8565b91506135028261415e565b604082019050919050565b600061351a603283613cb8565b9150613525826141ad565b604082019050919050565b600061353d602683613cb8565b9150613548826141fc565b604082019050919050565b6000613560601c83613cb8565b915061356b8261424b565b602082019050919050565b6000613583603383613cb8565b915061358e82614274565b604082019050919050565b60006135a6602483613cb8565b91506135b1826142c3565b604082019050919050565b60006135c9601983613cb8565b91506135d482614312565b602082019050919050565b60006135ec602883613cb8565b91506135f78261433b565b604082019050919050565b600061360f602c83613cb8565b915061361a8261438a565b604082019050919050565b6000613632603883613cb8565b915061363d826143d9565b604082019050919050565b6000613655602a83613cb8565b915061366082614428565b604082019050919050565b6000613678602983613cb8565b915061368382614477565b604082019050919050565b600061369b602083613cb8565b91506136a6826144c6565b602082019050919050565b60006136be602c83613cb8565b91506136c9826144ef565b604082019050919050565b60006136e1602083613cb8565b91506136ec8261453e565b602082019050919050565b6000613704602983613cb8565b915061370f82614567565b604082019050919050565b6000613727602f83613cb8565b9150613732826145b6565b604082019050919050565b600061374a602183613cb8565b915061375582614605565b604082019050919050565b600061376d603183613cb8565b915061377882614654565b604082019050919050565b6000613790603083613cb8565b915061379b826146a3565b604082019050919050565b60006137b3602c83613cb8565b91506137be826146f2565b604082019050919050565b60006137d6602883613cb8565b91506137e182614741565b604082019050919050565b6137f581613e53565b82525050565b60006138078285613473565b91506138138284613473565b91508190509392505050565b600060208201905061383460008301846133e3565b92915050565b600060808201905061384f60008301876133e3565b61385c60208301866133e3565b61386960408301856137ec565b818103606083015261387b8184613401565b905095945050505050565b600060208201905061389b60008301846133f2565b92915050565b600060208201905081810360008301526138bb818461343a565b905092915050565b600060208201905081810360008301526138dc816134a4565b9050919050565b600060208201905081810360008301526138fc816134c7565b9050919050565b6000602082019050818103600083015261391c816134ea565b9050919050565b6000602082019050818103600083015261393c8161350d565b9050919050565b6000602082019050818103600083015261395c81613530565b9050919050565b6000602082019050818103600083015261397c81613553565b9050919050565b6000602082019050818103600083015261399c81613576565b9050919050565b600060208201905081810360008301526139bc81613599565b9050919050565b600060208201905081810360008301526139dc816135bc565b9050919050565b600060208201905081810360008301526139fc816135df565b9050919050565b60006020820190508181036000830152613a1c81613602565b9050919050565b60006020820190508181036000830152613a3c81613625565b9050919050565b60006020820190508181036000830152613a5c81613648565b9050919050565b60006020820190508181036000830152613a7c8161366b565b9050919050565b60006020820190508181036000830152613a9c8161368e565b9050919050565b60006020820190508181036000830152613abc816136b1565b9050919050565b60006020820190508181036000830152613adc816136d4565b9050919050565b60006020820190508181036000830152613afc816136f7565b9050919050565b60006020820190508181036000830152613b1c8161371a565b9050919050565b60006020820190508181036000830152613b3c8161373d565b9050919050565b60006020820190508181036000830152613b5c81613760565b9050919050565b60006020820190508181036000830152613b7c81613783565b9050919050565b60006020820190508181036000830152613b9c816137a6565b9050919050565b60006020820190508181036000830152613bbc816137c9565b9050919050565b6000602082019050613bd860008301846137ec565b92915050565b6000613be8613bf9565b9050613bf48282613ed1565b919050565b6000604051905090565b600067ffffffffffffffff821115613c1e57613c1d614067565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613c4a57613c49614067565b5b613c53826140af565b9050602081019050919050565b600067ffffffffffffffff821115613c7b57613c7a614067565b5b613c84826140af565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613cdf82613e53565b9150613cea83613e53565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613d1f57613d1e613f7c565b5b828201905092915050565b6000613d3582613e53565b9150613d4083613e53565b925082613d5057613d4f613fab565b5b828204905092915050565b6000613d6682613e53565b9150613d7183613e53565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613daa57613da9613f7c565b5b828202905092915050565b6000613dc082613e53565b9150613dcb83613e53565b925082821015613dde57613ddd613f7c565b5b828203905092915050565b6000613df482613e33565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613e8a578082015181840152602081019050613e6f565b83811115613e99576000848401525b50505050565b60006002820490506001821680613eb757607f821691505b60208210811415613ecb57613eca613fda565b5b50919050565b613eda826140af565b810181811067ffffffffffffffff82111715613ef957613ef8614067565b5b80604052505050565b6000613f0d82613e53565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613f4057613f3f613f7c565b5b600182019050919050565b6000613f5682613e53565b9150613f6183613e53565b925082613f7157613f70613fab565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f546869732057616c6c65742068617320616c7265616479206d696e746564206960008201527f74732032207265736572766564204d4157277300000000000000000000000000602082015250565b7f507572636861736520776f756c6420657863656564206d617820737570706c7960008201527f206f66204d415727730000000000000000000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f506c65617365207761697420756e74696c20746865205075626c69632073616c60008201527f652069732061637469766520746f206d696e7400000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f506c65617365207761697420756e74696c20746865205072654d696e7420686160008201527f7320626567756e21000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f4554482076616c75652073656e7420697320746f6f206c6974746c6520666f7260008201527f2074686973206d616e79204d4157277300000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f546869732057616c6c6574206973206e6f742061626c65206d696e7420666f7260008201527f2070726573616c65000000000000000000000000000000000000000000000000602082015250565b61479981613de9565b81146147a457600080fd5b50565b6147b081613dfb565b81146147bb57600080fd5b50565b6147c781613e07565b81146147d257600080fd5b50565b6147de81613e53565b81146147e957600080fd5b5056fea2646970667358221220d680acad069120d789f0f8cffbf9b08f949ae2d92323e5ef39051fdb4e0aec5764736f6c63430008070033

Deployed Bytecode Sourcemap

43590:25771:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34938:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43782:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21607:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23166:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22689:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35578:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43823:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23916:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35246:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;66957:108;;;;;;;;;;;;;:::i;:::-;;24326:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35768:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43749:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;68927:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43702:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21301:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43867:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43900:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21031:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42742:103;;;;;;;;;;;;;:::i;:::-;;66735:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;66497:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43652:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;68163:640;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42091:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21776:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;67073:93;;;;;;;;;;;;;:::i;:::-;;23459:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;67174:101;;;;;;;;;;;;;:::i;:::-;;69177:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;67283:872;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24582:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21951:334;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23685:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43000:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;69033:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34938:224;35040:4;35079:35;35064:50;;;:11;:50;;;;:90;;;;35118:36;35142:11;35118:23;:36::i;:::-;35064:90;35057:97;;34938:224;;;:::o;43782:34::-;;;;;;;;;;;;;:::o;21607:100::-;21661:13;21694:5;21687:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21607:100;:::o;23166:221::-;23242:7;23270:16;23278:7;23270;:16::i;:::-;23262:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;23355:15;:24;23371:7;23355:24;;;;;;;;;;;;;;;;;;;;;23348:31;;23166:221;;;:::o;22689:411::-;22770:13;22786:23;22801:7;22786:14;:23::i;:::-;22770:39;;22834:5;22828:11;;:2;:11;;;;22820:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;22928:5;22912:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;22937:37;22954:5;22961:12;:10;:12::i;:::-;22937:16;:37::i;:::-;22912:62;22890:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;23071:21;23080:2;23084:7;23071:8;:21::i;:::-;22759:341;22689:411;;:::o;35578:113::-;35639:7;35666:10;:17;;;;35659:24;;35578:113;:::o;43823:37::-;;;;;;;;;;;;;:::o;23916:339::-;24111:41;24130:12;:10;:12::i;:::-;24144:7;24111:18;:41::i;:::-;24103:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24219:28;24229:4;24235:2;24239:7;24219:9;:28::i;:::-;23916:339;;;:::o;35246:256::-;35343:7;35379:23;35396:5;35379:16;:23::i;:::-;35371:5;:31;35363:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;35468:12;:19;35481:5;35468:19;;;;;;;;;;;;;;;:26;35488:5;35468:26;;;;;;;;;;;;35461:33;;35246:256;;;;:::o;66957:108::-;42322:12;:10;:12::i;:::-;42311:23;;:7;:5;:7::i;:::-;:23;;;42303:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;67017:10:::1;67009:24;;:47;67034:21;67009:47;;;;;;;;;;;;;;;;;;;;;;;67001:56;;;::::0;::::1;;66957:108::o:0;24326:185::-;24464:39;24481:4;24487:2;24491:7;24464:39;;;;;;;;;;;;:16;:39::i;:::-;24326:185;;;:::o;35768:233::-;35843:7;35879:30;:28;:30::i;:::-;35871:5;:38;35863:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;35976:10;35987:5;35976:17;;;;;;;;:::i;:::-;;;;;;;;;;35969:24;;35768:233;;;:::o;43749:26::-;;;;:::o;68927:100::-;42322:12;:10;:12::i;:::-;42311:23;;:7;:5;:7::i;:::-;:23;;;42303:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;69009:10:::1;68999:7;:20;;;;;;;;;;;;:::i;:::-;;68927:100:::0;:::o;43702:40::-;43740:2;43702:40;:::o;21301:239::-;21373:7;21393:13;21409:7;:16;21417:7;21409:16;;;;;;;;;;;;;;;;;;;;;21393:32;;21461:1;21444:19;;:5;:19;;;;21436:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21527:5;21520:12;;;21301:239;;;:::o;43867:26::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;43900:31::-;;;;:::o;21031:208::-;21103:7;21148:1;21131:19;;:5;:19;;;;21123:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;21215:9;:16;21225:5;21215:16;;;;;;;;;;;;;;;;21208:23;;21031:208;;;:::o;42742:103::-;42322:12;:10;:12::i;:::-;42311:23;;:7;:5;:7::i;:::-;:23;;;42303:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42807:30:::1;42834:1;42807:18;:30::i;:::-;42742:103::o:0;66735:214::-;42322:12;:10;:12::i;:::-;42311:23;;:7;:5;:7::i;:::-;:23;;;42303:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;66824:9:::1;66819:115;66841:13;:20;66839:1;:22;66819:115;;;66918:4;66881:9;:27;66891:13;66905:1;66891:16;;;;;;;;:::i;:::-;;;;;;;;66881:27;;;;;;;;;;;;;;;:34;;;:41;;;;;;;;;;;;;;;;;;66862:3;;;;;:::i;:::-;;;;66819:115;;;;66735:214:::0;:::o;66497:230::-;66574:4;66600:9;:21;66610:10;66600:21;;;;;;;;;;;;;;;:28;;;;;;;;;;;;66596:124;;;66651:4;66644:11;;;;66596:124;66703:5;66696:12;;66497:230;;;;:::o;43652:43::-;;;;:::o;68163:640::-;68235:14;;;;;;;;;;;68227:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;68341:1;68324:14;:18;:54;;;;;43740:2;68346:14;:32;;68324:54;68316:63;;;;;;68431:6;;68413:14;68398:12;;:29;;;;:::i;:::-;:39;;68390:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;68526:14;68515:8;;:25;;;;:::i;:::-;68502:9;:38;;68494:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;68611:6;68606:190;68622:14;68620:1;:16;68606:190;;;68675:6;;68660:12;;:21;68656:129;;;68701:12;;:14;;;;;;;;;:::i;:::-;;;;;;68734:35;68744:10;68756:12;;68734:9;:35::i;:::-;68656:129;68637:3;;;;;:::i;:::-;;;;68606:190;;;;68163:640;:::o;42091:87::-;42137:7;42164:6;;;;;;;;;;;42157:13;;42091:87;:::o;21776:104::-;21832:13;21865:7;21858:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21776:104;:::o;67073:93::-;42322:12;:10;:12::i;:::-;42311:23;;:7;:5;:7::i;:::-;:23;;;42303:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;67144:14:::1;;;;;;;;;;;67143:15;67126:14;;:32;;;;;;;;;;;;;;;;;;67073:93::o:0;23459:155::-;23554:52;23573:12;:10;:12::i;:::-;23587:8;23597;23554:18;:52::i;:::-;23459:155;;:::o;67174:101::-;42322:12;:10;:12::i;:::-;42311:23;;:7;:5;:7::i;:::-;:23;;;42303:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;67250:17:::1;;;;;;;;;;;67249:18;67229:17;;:38;;;;;;;;;;;;;;;;;;67174:101::o:0;69177:181::-;42322:12;:10;:12::i;:::-;42311:23;;:7;:5;:7::i;:::-;:23;;;42303:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;69269:6:::1;;69257:9;:18;69249:27;;;::::0;::::1;;69307:13;:11;:13::i;:::-;69295:9;:25;69287:34;;;::::0;::::1;;69341:9;69332:6;:18;;;;69177:181:::0;:::o;67283:872::-;67361:17;;;;;;;;;;;67353:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;67474:4;67442:36;;:9;:21;67452:10;67442:21;;;;;;;;;;;;;;;:28;;;;;;;;;;;;:36;;;67434:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;67559:1;67542:14;:18;:61;;;;;67597:6;;67579:14;67564:12;;:29;;;;:::i;:::-;:39;;67542:61;67534:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;67723:1;67705:14;67668:9;:21;67678:10;67668:21;;;;;;;;;;;;;;;:34;;;:51;;;;:::i;:::-;:56;;67660:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;67822:14;67811:8;;:25;;;;:::i;:::-;67798:9;:38;;67790:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;67906:6;67902:244;67917:14;67915:1;:16;67902:244;;;67970:6;;67955:12;;:21;67951:184;;;67996:9;:21;68006:10;67996:21;;;;;;;;;;;;;;;:34;;;:36;;;;;;;;;:::i;:::-;;;;;;68051:12;;:14;;;;;;;;;:::i;:::-;;;;;;68084:35;68094:10;68106:12;;68084:9;:35::i;:::-;67951:184;67932:3;;;;;:::i;:::-;;;;67902:244;;;;67283:872;:::o;24582:328::-;24757:41;24776:12;:10;:12::i;:::-;24790:7;24757:18;:41::i;:::-;24749:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24863:39;24877:4;24883:2;24887:7;24896:5;24863:13;:39::i;:::-;24582:328;;;;:::o;21951:334::-;22024:13;22058:16;22066:7;22058;:16::i;:::-;22050:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;22139:21;22163:10;:8;:10::i;:::-;22139:34;;22215:1;22197:7;22191:21;:25;:86;;;;;;;;;;;;;;;;;22243:7;22252:18;:7;:16;:18::i;:::-;22226:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22191:86;22184:93;;;21951:334;;;:::o;23685:164::-;23782:4;23806:18;:25;23825:5;23806:25;;;;;;;;;;;;;;;:35;23832:8;23806:35;;;;;;;;;;;;;;;;;;;;;;;;;23799:42;;23685:164;;;;:::o;43000:201::-;42322:12;:10;:12::i;:::-;42311:23;;:7;:5;:7::i;:::-;:23;;;42303:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43109:1:::1;43089:22;;:8;:22;;;;43081:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;43165:28;43184:8;43165:18;:28::i;:::-;43000:201:::0;:::o;69033:136::-;42322:12;:10;:12::i;:::-;42311:23;;:7;:5;:7::i;:::-;:23;;;42303:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;69122:8:::1;;69111;:19;69103:28;;;::::0;::::1;;69153:8;69142;:19;;;;69033:136:::0;:::o;20662:305::-;20764:4;20816:25;20801:40;;;:11;:40;;;;:105;;;;20873:33;20858:48;;;:11;:48;;;;20801:105;:158;;;;20923:36;20947:11;20923:23;:36::i;:::-;20801:158;20781:178;;20662:305;;;:::o;26420:127::-;26485:4;26537:1;26509:30;;:7;:16;26517:7;26509:16;;;;;;;;;;;;;;;;;;;;;:30;;;;26502:37;;26420:127;;;:::o;17058:98::-;17111:7;17138:10;17131:17;;17058:98;:::o;30402:174::-;30504:2;30477:15;:24;30493:7;30477:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;30560:7;30556:2;30522:46;;30531:23;30546:7;30531:14;:23::i;:::-;30522:46;;;;;;;;;;;;30402:174;;:::o;26714:348::-;26807:4;26832:16;26840:7;26832;:16::i;:::-;26824:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26908:13;26924:23;26939:7;26924:14;:23::i;:::-;26908:39;;26977:5;26966:16;;:7;:16;;;:51;;;;27010:7;26986:31;;:20;26998:7;26986:11;:20::i;:::-;:31;;;26966:51;:87;;;;27021:32;27038:5;27045:7;27021:16;:32::i;:::-;26966:87;26958:96;;;26714:348;;;;:::o;29706:578::-;29865:4;29838:31;;:23;29853:7;29838:14;:23::i;:::-;:31;;;29830:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;29948:1;29934:16;;:2;:16;;;;29926:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;30004:39;30025:4;30031:2;30035:7;30004:20;:39::i;:::-;30108:29;30125:1;30129:7;30108:8;:29::i;:::-;30169:1;30150:9;:15;30160:4;30150:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;30198:1;30181:9;:13;30191:2;30181:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;30229:2;30210:7;:16;30218:7;30210:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;30268:7;30264:2;30249:27;;30258:4;30249:27;;;;;;;;;;;;29706:578;;;:::o;43361:191::-;43435:16;43454:6;;;;;;;;;;;43435:25;;43480:8;43471:6;;:17;;;;;;;;;;;;;;;;;;43535:8;43504:40;;43525:8;43504:40;;;;;;;;;;;;43424:128;43361:191;:::o;27404:110::-;27480:26;27490:2;27494:7;27480:26;;;;;;;;;;;;:9;:26::i;:::-;27404:110;;:::o;30718:315::-;30873:8;30864:17;;:5;:17;;;;30856:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;30960:8;30922:18;:25;30941:5;30922:25;;;;;;;;;;;;;;;:35;30948:8;30922:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;31006:8;30984:41;;30999:5;30984:41;;;31016:8;30984:41;;;;;;:::i;:::-;;;;;;;;30718:315;;;:::o;25792:::-;25949:28;25959:4;25965:2;25969:7;25949:9;:28::i;:::-;25996:48;26019:4;26025:2;26029:7;26038:5;25996:22;:48::i;:::-;25988:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;25792:315;;;;:::o;68811:108::-;68871:13;68904:7;68897:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;68811:108;:::o;17583:723::-;17639:13;17869:1;17860:5;:10;17856:53;;;17887:10;;;;;;;;;;;;;;;;;;;;;17856:53;17919:12;17934:5;17919:20;;17950:14;17975:78;17990:1;17982:4;:9;17975:78;;18008:8;;;;;:::i;:::-;;;;18039:2;18031:10;;;;;:::i;:::-;;;17975:78;;;18063:19;18095:6;18085:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18063:39;;18113:154;18129:1;18120:5;:10;18113:154;;18157:1;18147:11;;;;;:::i;:::-;;;18224:2;18216:5;:10;;;;:::i;:::-;18203:2;:24;;;;:::i;:::-;18190:39;;18173:6;18180;18173:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;18253:2;18244:11;;;;;:::i;:::-;;;18113:154;;;18291:6;18277:21;;;;;17583:723;;;;:::o;8172:157::-;8257:4;8296:25;8281:40;;;:11;:40;;;;8274:47;;8172:157;;;:::o;36614:589::-;36758:45;36785:4;36791:2;36795:7;36758:26;:45::i;:::-;36836:1;36820:18;;:4;:18;;;36816:187;;;36855:40;36887:7;36855:31;:40::i;:::-;36816:187;;;36925:2;36917:10;;:4;:10;;;36913:90;;36944:47;36977:4;36983:7;36944:32;:47::i;:::-;36913:90;36816:187;37031:1;37017:16;;:2;:16;;;37013:183;;;37050:45;37087:7;37050:36;:45::i;:::-;37013:183;;;37123:4;37117:10;;:2;:10;;;37113:83;;37144:40;37172:2;37176:7;37144:27;:40::i;:::-;37113:83;37013:183;36614:589;;;:::o;27741:321::-;27871:18;27877:2;27881:7;27871:5;:18::i;:::-;27922:54;27953:1;27957:2;27961:7;27970:5;27922:22;:54::i;:::-;27900:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;27741:321;;;:::o;31598:799::-;31753:4;31774:15;:2;:13;;;:15::i;:::-;31770:620;;;31826:2;31810:36;;;31847:12;:10;:12::i;:::-;31861:4;31867:7;31876:5;31810:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;31806:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32069:1;32052:6;:13;:18;32048:272;;;32095:60;;;;;;;;;;:::i;:::-;;;;;;;;32048:272;32270:6;32264:13;32255:6;32251:2;32247:15;32240:38;31806:529;31943:41;;;31933:51;;;:6;:51;;;;31926:58;;;;;31770:620;32374:4;32367:11;;31598:799;;;;;;;:::o;32969:126::-;;;;:::o;37926:164::-;38030:10;:17;;;;38003:15;:24;38019:7;38003:24;;;;;;;;;;;:44;;;;38058:10;38074:7;38058:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37926:164;:::o;38717:988::-;38983:22;39033:1;39008:22;39025:4;39008:16;:22::i;:::-;:26;;;;:::i;:::-;38983:51;;39045:18;39066:17;:26;39084:7;39066:26;;;;;;;;;;;;39045:47;;39213:14;39199:10;:28;39195:328;;39244:19;39266:12;:18;39279:4;39266:18;;;;;;;;;;;;;;;:34;39285:14;39266:34;;;;;;;;;;;;39244:56;;39350:11;39317:12;:18;39330:4;39317:18;;;;;;;;;;;;;;;:30;39336:10;39317:30;;;;;;;;;;;:44;;;;39467:10;39434:17;:30;39452:11;39434:30;;;;;;;;;;;:43;;;;39229:294;39195:328;39619:17;:26;39637:7;39619:26;;;;;;;;;;;39612:33;;;39663:12;:18;39676:4;39663:18;;;;;;;;;;;;;;;:34;39682:14;39663:34;;;;;;;;;;;39656:41;;;38798:907;;38717:988;;:::o;40000:1079::-;40253:22;40298:1;40278:10;:17;;;;:21;;;;:::i;:::-;40253:46;;40310:18;40331:15;:24;40347:7;40331:24;;;;;;;;;;;;40310:45;;40682:19;40704:10;40715:14;40704:26;;;;;;;;:::i;:::-;;;;;;;;;;40682:48;;40768:11;40743:10;40754;40743:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;40879:10;40848:15;:28;40864:11;40848:28;;;;;;;;;;;:41;;;;41020:15;:24;41036:7;41020:24;;;;;;;;;;;41013:31;;;41055:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;40071:1008;;;40000:1079;:::o;37504:221::-;37589:14;37606:20;37623:2;37606:16;:20::i;:::-;37589:37;;37664:7;37637:12;:16;37650:2;37637:16;;;;;;;;;;;;;;;:24;37654:6;37637:24;;;;;;;;;;;:34;;;;37711:6;37682:17;:26;37700:7;37682:26;;;;;;;;;;;:35;;;;37578:147;37504:221;;:::o;28398:382::-;28492:1;28478:16;;:2;:16;;;;28470:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;28551:16;28559:7;28551;:16::i;:::-;28550:17;28542:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;28613:45;28642:1;28646:2;28650:7;28613:20;:45::i;:::-;28688:1;28671:9;:13;28681:2;28671:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;28719:2;28700:7;:16;28708:7;28700:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;28764:7;28760:2;28739:33;;28756:1;28739:33;;;;;;;;;;;;28398:382;;:::o;9102:387::-;9162:4;9370:12;9437:7;9425:20;9417:28;;9480:1;9473:4;:8;9466:15;;;9102:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:410::-;829:5;854:65;870:48;911:6;870:48;:::i;:::-;854:65;:::i;:::-;845:74;;942:6;935:5;928:21;980:4;973:5;969:16;1018:3;1009:6;1004:3;1000:16;997:25;994:112;;;1025:79;;:::i;:::-;994:112;1115:41;1149:6;1144:3;1139;1115:41;:::i;:::-;835:327;752:410;;;;;:::o;1168:412::-;1246:5;1271:66;1287:49;1329:6;1287:49;:::i;:::-;1271:66;:::i;:::-;1262:75;;1360:6;1353:5;1346:21;1398:4;1391:5;1387:16;1436:3;1427:6;1422:3;1418:16;1415:25;1412:112;;;1443:79;;:::i;:::-;1412:112;1533:41;1567:6;1562:3;1557;1533:41;:::i;:::-;1252:328;1168:412;;;;;:::o;1586:139::-;1632:5;1670:6;1657:20;1648:29;;1686:33;1713:5;1686:33;:::i;:::-;1586:139;;;;:::o;1748:370::-;1819:5;1868:3;1861:4;1853:6;1849:17;1845:27;1835:122;;1876:79;;:::i;:::-;1835:122;1993:6;1980:20;2018:94;2108:3;2100:6;2093:4;2085:6;2081:17;2018:94;:::i;:::-;2009:103;;1825:293;1748:370;;;;:::o;2124:133::-;2167:5;2205:6;2192:20;2183:29;;2221:30;2245:5;2221:30;:::i;:::-;2124:133;;;;:::o;2263:137::-;2308:5;2346:6;2333:20;2324:29;;2362:32;2388:5;2362:32;:::i;:::-;2263:137;;;;:::o;2406:141::-;2462:5;2493:6;2487:13;2478:22;;2509:32;2535:5;2509:32;:::i;:::-;2406:141;;;;:::o;2566:338::-;2621:5;2670:3;2663:4;2655:6;2651:17;2647:27;2637:122;;2678:79;;:::i;:::-;2637:122;2795:6;2782:20;2820:78;2894:3;2886:6;2879:4;2871:6;2867:17;2820:78;:::i;:::-;2811:87;;2627:277;2566:338;;;;:::o;2924:340::-;2980:5;3029:3;3022:4;3014:6;3010:17;3006:27;2996:122;;3037:79;;:::i;:::-;2996:122;3154:6;3141:20;3179:79;3254:3;3246:6;3239:4;3231:6;3227:17;3179:79;:::i;:::-;3170:88;;2986:278;2924:340;;;;:::o;3270:139::-;3316:5;3354:6;3341:20;3332:29;;3370:33;3397:5;3370:33;:::i;:::-;3270:139;;;;:::o;3415:329::-;3474:6;3523:2;3511:9;3502:7;3498:23;3494:32;3491:119;;;3529:79;;:::i;:::-;3491:119;3649:1;3674:53;3719:7;3710:6;3699:9;3695:22;3674:53;:::i;:::-;3664:63;;3620:117;3415:329;;;;:::o;3750:474::-;3818:6;3826;3875:2;3863:9;3854:7;3850:23;3846:32;3843:119;;;3881:79;;:::i;:::-;3843:119;4001:1;4026:53;4071:7;4062:6;4051:9;4047:22;4026:53;:::i;:::-;4016:63;;3972:117;4128:2;4154:53;4199:7;4190:6;4179:9;4175:22;4154:53;:::i;:::-;4144:63;;4099:118;3750:474;;;;;:::o;4230:619::-;4307:6;4315;4323;4372:2;4360:9;4351:7;4347:23;4343:32;4340:119;;;4378:79;;:::i;:::-;4340:119;4498:1;4523:53;4568:7;4559:6;4548:9;4544:22;4523:53;:::i;:::-;4513:63;;4469:117;4625:2;4651:53;4696:7;4687:6;4676:9;4672:22;4651:53;:::i;:::-;4641:63;;4596:118;4753:2;4779:53;4824:7;4815:6;4804:9;4800:22;4779:53;:::i;:::-;4769:63;;4724:118;4230:619;;;;;:::o;4855:943::-;4950:6;4958;4966;4974;5023:3;5011:9;5002:7;4998:23;4994:33;4991:120;;;5030:79;;:::i;:::-;4991:120;5150:1;5175:53;5220:7;5211:6;5200:9;5196:22;5175:53;:::i;:::-;5165:63;;5121:117;5277:2;5303:53;5348:7;5339:6;5328:9;5324:22;5303:53;:::i;:::-;5293:63;;5248:118;5405:2;5431:53;5476:7;5467:6;5456:9;5452:22;5431:53;:::i;:::-;5421:63;;5376:118;5561:2;5550:9;5546:18;5533:32;5592:18;5584:6;5581:30;5578:117;;;5614:79;;:::i;:::-;5578:117;5719:62;5773:7;5764:6;5753:9;5749:22;5719:62;:::i;:::-;5709:72;;5504:287;4855:943;;;;;;;:::o;5804:468::-;5869:6;5877;5926:2;5914:9;5905:7;5901:23;5897:32;5894:119;;;5932:79;;:::i;:::-;5894:119;6052:1;6077:53;6122:7;6113:6;6102:9;6098:22;6077:53;:::i;:::-;6067:63;;6023:117;6179:2;6205:50;6247:7;6238:6;6227:9;6223:22;6205:50;:::i;:::-;6195:60;;6150:115;5804:468;;;;;:::o;6278:474::-;6346:6;6354;6403:2;6391:9;6382:7;6378:23;6374:32;6371:119;;;6409:79;;:::i;:::-;6371:119;6529:1;6554:53;6599:7;6590:6;6579:9;6575:22;6554:53;:::i;:::-;6544:63;;6500:117;6656:2;6682:53;6727:7;6718:6;6707:9;6703:22;6682:53;:::i;:::-;6672:63;;6627:118;6278:474;;;;;:::o;6758:539::-;6842:6;6891:2;6879:9;6870:7;6866:23;6862:32;6859:119;;;6897:79;;:::i;:::-;6859:119;7045:1;7034:9;7030:17;7017:31;7075:18;7067:6;7064:30;7061:117;;;7097:79;;:::i;:::-;7061:117;7202:78;7272:7;7263:6;7252:9;7248:22;7202:78;:::i;:::-;7192:88;;6988:302;6758:539;;;;:::o;7303:327::-;7361:6;7410:2;7398:9;7389:7;7385:23;7381:32;7378:119;;;7416:79;;:::i;:::-;7378:119;7536:1;7561:52;7605:7;7596:6;7585:9;7581:22;7561:52;:::i;:::-;7551:62;;7507:116;7303:327;;;;:::o;7636:349::-;7705:6;7754:2;7742:9;7733:7;7729:23;7725:32;7722:119;;;7760:79;;:::i;:::-;7722:119;7880:1;7905:63;7960:7;7951:6;7940:9;7936:22;7905:63;:::i;:::-;7895:73;;7851:127;7636:349;;;;:::o;7991:509::-;8060:6;8109:2;8097:9;8088:7;8084:23;8080:32;8077:119;;;8115:79;;:::i;:::-;8077:119;8263:1;8252:9;8248:17;8235:31;8293:18;8285:6;8282:30;8279:117;;;8315:79;;:::i;:::-;8279:117;8420:63;8475:7;8466:6;8455:9;8451:22;8420:63;:::i;:::-;8410:73;;8206:287;7991:509;;;;:::o;8506:329::-;8565:6;8614:2;8602:9;8593:7;8589:23;8585:32;8582:119;;;8620:79;;:::i;:::-;8582:119;8740:1;8765:53;8810:7;8801:6;8790:9;8786:22;8765:53;:::i;:::-;8755:63;;8711:117;8506:329;;;;:::o;8841:118::-;8928:24;8946:5;8928:24;:::i;:::-;8923:3;8916:37;8841:118;;:::o;8965:109::-;9046:21;9061:5;9046:21;:::i;:::-;9041:3;9034:34;8965:109;;:::o;9080:360::-;9166:3;9194:38;9226:5;9194:38;:::i;:::-;9248:70;9311:6;9306:3;9248:70;:::i;:::-;9241:77;;9327:52;9372:6;9367:3;9360:4;9353:5;9349:16;9327:52;:::i;:::-;9404:29;9426:6;9404:29;:::i;:::-;9399:3;9395:39;9388:46;;9170:270;9080:360;;;;:::o;9446:364::-;9534:3;9562:39;9595:5;9562:39;:::i;:::-;9617:71;9681:6;9676:3;9617:71;:::i;:::-;9610:78;;9697:52;9742:6;9737:3;9730:4;9723:5;9719:16;9697:52;:::i;:::-;9774:29;9796:6;9774:29;:::i;:::-;9769:3;9765:39;9758:46;;9538:272;9446:364;;;;:::o;9816:377::-;9922:3;9950:39;9983:5;9950:39;:::i;:::-;10005:89;10087:6;10082:3;10005:89;:::i;:::-;9998:96;;10103:52;10148:6;10143:3;10136:4;10129:5;10125:16;10103:52;:::i;:::-;10180:6;10175:3;10171:16;10164:23;;9926:267;9816:377;;;;:::o;10199:366::-;10341:3;10362:67;10426:2;10421:3;10362:67;:::i;:::-;10355:74;;10438:93;10527:3;10438:93;:::i;:::-;10556:2;10551:3;10547:12;10540:19;;10199:366;;;:::o;10571:::-;10713:3;10734:67;10798:2;10793:3;10734:67;:::i;:::-;10727:74;;10810:93;10899:3;10810:93;:::i;:::-;10928:2;10923:3;10919:12;10912:19;;10571:366;;;:::o;10943:::-;11085:3;11106:67;11170:2;11165:3;11106:67;:::i;:::-;11099:74;;11182:93;11271:3;11182:93;:::i;:::-;11300:2;11295:3;11291:12;11284:19;;10943:366;;;:::o;11315:::-;11457:3;11478:67;11542:2;11537:3;11478:67;:::i;:::-;11471:74;;11554:93;11643:3;11554:93;:::i;:::-;11672:2;11667:3;11663:12;11656:19;;11315:366;;;:::o;11687:::-;11829:3;11850:67;11914:2;11909:3;11850:67;:::i;:::-;11843:74;;11926:93;12015:3;11926:93;:::i;:::-;12044:2;12039:3;12035:12;12028:19;;11687:366;;;:::o;12059:::-;12201:3;12222:67;12286:2;12281:3;12222:67;:::i;:::-;12215:74;;12298:93;12387:3;12298:93;:::i;:::-;12416:2;12411:3;12407:12;12400:19;;12059:366;;;:::o;12431:::-;12573:3;12594:67;12658:2;12653:3;12594:67;:::i;:::-;12587:74;;12670:93;12759:3;12670:93;:::i;:::-;12788:2;12783:3;12779:12;12772:19;;12431:366;;;:::o;12803:::-;12945:3;12966:67;13030:2;13025:3;12966:67;:::i;:::-;12959:74;;13042:93;13131:3;13042:93;:::i;:::-;13160:2;13155:3;13151:12;13144:19;;12803:366;;;:::o;13175:::-;13317:3;13338:67;13402:2;13397:3;13338:67;:::i;:::-;13331:74;;13414:93;13503:3;13414:93;:::i;:::-;13532:2;13527:3;13523:12;13516:19;;13175:366;;;:::o;13547:::-;13689:3;13710:67;13774:2;13769:3;13710:67;:::i;:::-;13703:74;;13786:93;13875:3;13786:93;:::i;:::-;13904:2;13899:3;13895:12;13888:19;;13547:366;;;:::o;13919:::-;14061:3;14082:67;14146:2;14141:3;14082:67;:::i;:::-;14075:74;;14158:93;14247:3;14158:93;:::i;:::-;14276:2;14271:3;14267:12;14260:19;;13919:366;;;:::o;14291:::-;14433:3;14454:67;14518:2;14513:3;14454:67;:::i;:::-;14447:74;;14530:93;14619:3;14530:93;:::i;:::-;14648:2;14643:3;14639:12;14632:19;;14291:366;;;:::o;14663:::-;14805:3;14826:67;14890:2;14885:3;14826:67;:::i;:::-;14819:74;;14902:93;14991:3;14902:93;:::i;:::-;15020:2;15015:3;15011:12;15004:19;;14663:366;;;:::o;15035:::-;15177:3;15198:67;15262:2;15257:3;15198:67;:::i;:::-;15191:74;;15274:93;15363:3;15274:93;:::i;:::-;15392:2;15387:3;15383:12;15376:19;;15035:366;;;:::o;15407:::-;15549:3;15570:67;15634:2;15629:3;15570:67;:::i;:::-;15563:74;;15646:93;15735:3;15646:93;:::i;:::-;15764:2;15759:3;15755:12;15748:19;;15407:366;;;:::o;15779:::-;15921:3;15942:67;16006:2;16001:3;15942:67;:::i;:::-;15935:74;;16018:93;16107:3;16018:93;:::i;:::-;16136:2;16131:3;16127:12;16120:19;;15779:366;;;:::o;16151:::-;16293:3;16314:67;16378:2;16373:3;16314:67;:::i;:::-;16307:74;;16390:93;16479:3;16390:93;:::i;:::-;16508:2;16503:3;16499:12;16492:19;;16151:366;;;:::o;16523:::-;16665:3;16686:67;16750:2;16745:3;16686:67;:::i;:::-;16679:74;;16762:93;16851:3;16762:93;:::i;:::-;16880:2;16875:3;16871:12;16864:19;;16523:366;;;:::o;16895:::-;17037:3;17058:67;17122:2;17117:3;17058:67;:::i;:::-;17051:74;;17134:93;17223:3;17134:93;:::i;:::-;17252:2;17247:3;17243:12;17236:19;;16895:366;;;:::o;17267:::-;17409:3;17430:67;17494:2;17489:3;17430:67;:::i;:::-;17423:74;;17506:93;17595:3;17506:93;:::i;:::-;17624:2;17619:3;17615:12;17608:19;;17267:366;;;:::o;17639:::-;17781:3;17802:67;17866:2;17861:3;17802:67;:::i;:::-;17795:74;;17878:93;17967:3;17878:93;:::i;:::-;17996:2;17991:3;17987:12;17980:19;;17639:366;;;:::o;18011:::-;18153:3;18174:67;18238:2;18233:3;18174:67;:::i;:::-;18167:74;;18250:93;18339:3;18250:93;:::i;:::-;18368:2;18363:3;18359:12;18352:19;;18011:366;;;:::o;18383:::-;18525:3;18546:67;18610:2;18605:3;18546:67;:::i;:::-;18539:74;;18622:93;18711:3;18622:93;:::i;:::-;18740:2;18735:3;18731:12;18724:19;;18383:366;;;:::o;18755:::-;18897:3;18918:67;18982:2;18977:3;18918:67;:::i;:::-;18911:74;;18994:93;19083:3;18994:93;:::i;:::-;19112:2;19107:3;19103:12;19096:19;;18755:366;;;:::o;19127:118::-;19214:24;19232:5;19214:24;:::i;:::-;19209:3;19202:37;19127:118;;:::o;19251:435::-;19431:3;19453:95;19544:3;19535:6;19453:95;:::i;:::-;19446:102;;19565:95;19656:3;19647:6;19565:95;:::i;:::-;19558:102;;19677:3;19670:10;;19251:435;;;;;:::o;19692:222::-;19785:4;19823:2;19812:9;19808:18;19800:26;;19836:71;19904:1;19893:9;19889:17;19880:6;19836:71;:::i;:::-;19692:222;;;;:::o;19920:640::-;20115:4;20153:3;20142:9;20138:19;20130:27;;20167:71;20235:1;20224:9;20220:17;20211:6;20167:71;:::i;:::-;20248:72;20316:2;20305:9;20301:18;20292:6;20248:72;:::i;:::-;20330;20398:2;20387:9;20383:18;20374:6;20330:72;:::i;:::-;20449:9;20443:4;20439:20;20434:2;20423:9;20419:18;20412:48;20477:76;20548:4;20539:6;20477:76;:::i;:::-;20469:84;;19920:640;;;;;;;:::o;20566:210::-;20653:4;20691:2;20680:9;20676:18;20668:26;;20704:65;20766:1;20755:9;20751:17;20742:6;20704:65;:::i;:::-;20566:210;;;;:::o;20782:313::-;20895:4;20933:2;20922:9;20918:18;20910:26;;20982:9;20976:4;20972:20;20968:1;20957:9;20953:17;20946:47;21010:78;21083:4;21074:6;21010:78;:::i;:::-;21002:86;;20782:313;;;;:::o;21101:419::-;21267:4;21305:2;21294:9;21290:18;21282:26;;21354:9;21348:4;21344:20;21340:1;21329:9;21325:17;21318:47;21382:131;21508:4;21382:131;:::i;:::-;21374:139;;21101:419;;;:::o;21526:::-;21692:4;21730:2;21719:9;21715:18;21707:26;;21779:9;21773:4;21769:20;21765:1;21754:9;21750:17;21743:47;21807:131;21933:4;21807:131;:::i;:::-;21799:139;;21526:419;;;:::o;21951:::-;22117:4;22155:2;22144:9;22140:18;22132:26;;22204:9;22198:4;22194:20;22190:1;22179:9;22175:17;22168:47;22232:131;22358:4;22232:131;:::i;:::-;22224:139;;21951:419;;;:::o;22376:::-;22542:4;22580:2;22569:9;22565:18;22557:26;;22629:9;22623:4;22619:20;22615:1;22604:9;22600:17;22593:47;22657:131;22783:4;22657:131;:::i;:::-;22649:139;;22376:419;;;:::o;22801:::-;22967:4;23005:2;22994:9;22990:18;22982:26;;23054:9;23048:4;23044:20;23040:1;23029:9;23025:17;23018:47;23082:131;23208:4;23082:131;:::i;:::-;23074:139;;22801:419;;;:::o;23226:::-;23392:4;23430:2;23419:9;23415:18;23407:26;;23479:9;23473:4;23469:20;23465:1;23454:9;23450:17;23443:47;23507:131;23633:4;23507:131;:::i;:::-;23499:139;;23226:419;;;:::o;23651:::-;23817:4;23855:2;23844:9;23840:18;23832:26;;23904:9;23898:4;23894:20;23890:1;23879:9;23875:17;23868:47;23932:131;24058:4;23932:131;:::i;:::-;23924:139;;23651:419;;;:::o;24076:::-;24242:4;24280:2;24269:9;24265:18;24257:26;;24329:9;24323:4;24319:20;24315:1;24304:9;24300:17;24293:47;24357:131;24483:4;24357:131;:::i;:::-;24349:139;;24076:419;;;:::o;24501:::-;24667:4;24705:2;24694:9;24690:18;24682:26;;24754:9;24748:4;24744:20;24740:1;24729:9;24725:17;24718:47;24782:131;24908:4;24782:131;:::i;:::-;24774:139;;24501:419;;;:::o;24926:::-;25092:4;25130:2;25119:9;25115:18;25107:26;;25179:9;25173:4;25169:20;25165:1;25154:9;25150:17;25143:47;25207:131;25333:4;25207:131;:::i;:::-;25199:139;;24926:419;;;:::o;25351:::-;25517:4;25555:2;25544:9;25540:18;25532:26;;25604:9;25598:4;25594:20;25590:1;25579:9;25575:17;25568:47;25632:131;25758:4;25632:131;:::i;:::-;25624:139;;25351:419;;;:::o;25776:::-;25942:4;25980:2;25969:9;25965:18;25957:26;;26029:9;26023:4;26019:20;26015:1;26004:9;26000:17;25993:47;26057:131;26183:4;26057:131;:::i;:::-;26049:139;;25776:419;;;:::o;26201:::-;26367:4;26405:2;26394:9;26390:18;26382:26;;26454:9;26448:4;26444:20;26440:1;26429:9;26425:17;26418:47;26482:131;26608:4;26482:131;:::i;:::-;26474:139;;26201:419;;;:::o;26626:::-;26792:4;26830:2;26819:9;26815:18;26807:26;;26879:9;26873:4;26869:20;26865:1;26854:9;26850:17;26843:47;26907:131;27033:4;26907:131;:::i;:::-;26899:139;;26626:419;;;:::o;27051:::-;27217:4;27255:2;27244:9;27240:18;27232:26;;27304:9;27298:4;27294:20;27290:1;27279:9;27275:17;27268:47;27332:131;27458:4;27332:131;:::i;:::-;27324:139;;27051:419;;;:::o;27476:::-;27642:4;27680:2;27669:9;27665:18;27657:26;;27729:9;27723:4;27719:20;27715:1;27704:9;27700:17;27693:47;27757:131;27883:4;27757:131;:::i;:::-;27749:139;;27476:419;;;:::o;27901:::-;28067:4;28105:2;28094:9;28090:18;28082:26;;28154:9;28148:4;28144:20;28140:1;28129:9;28125:17;28118:47;28182:131;28308:4;28182:131;:::i;:::-;28174:139;;27901:419;;;:::o;28326:::-;28492:4;28530:2;28519:9;28515:18;28507:26;;28579:9;28573:4;28569:20;28565:1;28554:9;28550:17;28543:47;28607:131;28733:4;28607:131;:::i;:::-;28599:139;;28326:419;;;:::o;28751:::-;28917:4;28955:2;28944:9;28940:18;28932:26;;29004:9;28998:4;28994:20;28990:1;28979:9;28975:17;28968:47;29032:131;29158:4;29032:131;:::i;:::-;29024:139;;28751:419;;;:::o;29176:::-;29342:4;29380:2;29369:9;29365:18;29357:26;;29429:9;29423:4;29419:20;29415:1;29404:9;29400:17;29393:47;29457:131;29583:4;29457:131;:::i;:::-;29449:139;;29176:419;;;:::o;29601:::-;29767:4;29805:2;29794:9;29790:18;29782:26;;29854:9;29848:4;29844:20;29840:1;29829:9;29825:17;29818:47;29882:131;30008:4;29882:131;:::i;:::-;29874:139;;29601:419;;;:::o;30026:::-;30192:4;30230:2;30219:9;30215:18;30207:26;;30279:9;30273:4;30269:20;30265:1;30254:9;30250:17;30243:47;30307:131;30433:4;30307:131;:::i;:::-;30299:139;;30026:419;;;:::o;30451:::-;30617:4;30655:2;30644:9;30640:18;30632:26;;30704:9;30698:4;30694:20;30690:1;30679:9;30675:17;30668:47;30732:131;30858:4;30732:131;:::i;:::-;30724:139;;30451:419;;;:::o;30876:::-;31042:4;31080:2;31069:9;31065:18;31057:26;;31129:9;31123:4;31119:20;31115:1;31104:9;31100:17;31093:47;31157:131;31283:4;31157:131;:::i;:::-;31149:139;;30876:419;;;:::o;31301:222::-;31394:4;31432:2;31421:9;31417:18;31409:26;;31445:71;31513:1;31502:9;31498:17;31489:6;31445:71;:::i;:::-;31301:222;;;;:::o;31529:129::-;31563:6;31590:20;;:::i;:::-;31580:30;;31619:33;31647:4;31639:6;31619:33;:::i;:::-;31529:129;;;:::o;31664:75::-;31697:6;31730:2;31724:9;31714:19;;31664:75;:::o;31745:311::-;31822:4;31912:18;31904:6;31901:30;31898:56;;;31934:18;;:::i;:::-;31898:56;31984:4;31976:6;31972:17;31964:25;;32044:4;32038;32034:15;32026:23;;31745:311;;;:::o;32062:307::-;32123:4;32213:18;32205:6;32202:30;32199:56;;;32235:18;;:::i;:::-;32199:56;32273:29;32295:6;32273:29;:::i;:::-;32265:37;;32357:4;32351;32347:15;32339:23;;32062:307;;;:::o;32375:308::-;32437:4;32527:18;32519:6;32516:30;32513:56;;;32549:18;;:::i;:::-;32513:56;32587:29;32609:6;32587:29;:::i;:::-;32579:37;;32671:4;32665;32661:15;32653:23;;32375:308;;;:::o;32689:98::-;32740:6;32774:5;32768:12;32758:22;;32689:98;;;:::o;32793:99::-;32845:6;32879:5;32873:12;32863:22;;32793:99;;;:::o;32898:168::-;32981:11;33015:6;33010:3;33003:19;33055:4;33050:3;33046:14;33031:29;;32898:168;;;;:::o;33072:169::-;33156:11;33190:6;33185:3;33178:19;33230:4;33225:3;33221:14;33206:29;;33072:169;;;;:::o;33247:148::-;33349:11;33386:3;33371:18;;33247:148;;;;:::o;33401:305::-;33441:3;33460:20;33478:1;33460:20;:::i;:::-;33455:25;;33494:20;33512:1;33494:20;:::i;:::-;33489:25;;33648:1;33580:66;33576:74;33573:1;33570:81;33567:107;;;33654:18;;:::i;:::-;33567:107;33698:1;33695;33691:9;33684:16;;33401:305;;;;:::o;33712:185::-;33752:1;33769:20;33787:1;33769:20;:::i;:::-;33764:25;;33803:20;33821:1;33803:20;:::i;:::-;33798:25;;33842:1;33832:35;;33847:18;;:::i;:::-;33832:35;33889:1;33886;33882:9;33877:14;;33712:185;;;;:::o;33903:348::-;33943:7;33966:20;33984:1;33966:20;:::i;:::-;33961:25;;34000:20;34018:1;34000:20;:::i;:::-;33995:25;;34188:1;34120:66;34116:74;34113:1;34110:81;34105:1;34098:9;34091:17;34087:105;34084:131;;;34195:18;;:::i;:::-;34084:131;34243:1;34240;34236:9;34225:20;;33903:348;;;;:::o;34257:191::-;34297:4;34317:20;34335:1;34317:20;:::i;:::-;34312:25;;34351:20;34369:1;34351:20;:::i;:::-;34346:25;;34390:1;34387;34384:8;34381:34;;;34395:18;;:::i;:::-;34381:34;34440:1;34437;34433:9;34425:17;;34257:191;;;;:::o;34454:96::-;34491:7;34520:24;34538:5;34520:24;:::i;:::-;34509:35;;34454:96;;;:::o;34556:90::-;34590:7;34633:5;34626:13;34619:21;34608:32;;34556:90;;;:::o;34652:149::-;34688:7;34728:66;34721:5;34717:78;34706:89;;34652:149;;;:::o;34807:126::-;34844:7;34884:42;34877:5;34873:54;34862:65;;34807:126;;;:::o;34939:77::-;34976:7;35005:5;34994:16;;34939:77;;;:::o;35022:154::-;35106:6;35101:3;35096;35083:30;35168:1;35159:6;35154:3;35150:16;35143:27;35022:154;;;:::o;35182:307::-;35250:1;35260:113;35274:6;35271:1;35268:13;35260:113;;;35359:1;35354:3;35350:11;35344:18;35340:1;35335:3;35331:11;35324:39;35296:2;35293:1;35289:10;35284:15;;35260:113;;;35391:6;35388:1;35385:13;35382:101;;;35471:1;35462:6;35457:3;35453:16;35446:27;35382:101;35231:258;35182:307;;;:::o;35495:320::-;35539:6;35576:1;35570:4;35566:12;35556:22;;35623:1;35617:4;35613:12;35644:18;35634:81;;35700:4;35692:6;35688:17;35678:27;;35634:81;35762:2;35754:6;35751:14;35731:18;35728:38;35725:84;;;35781:18;;:::i;:::-;35725:84;35546:269;35495:320;;;:::o;35821:281::-;35904:27;35926:4;35904:27;:::i;:::-;35896:6;35892:40;36034:6;36022:10;36019:22;35998:18;35986:10;35983:34;35980:62;35977:88;;;36045:18;;:::i;:::-;35977:88;36085:10;36081:2;36074:22;35864:238;35821:281;;:::o;36108:233::-;36147:3;36170:24;36188:5;36170:24;:::i;:::-;36161:33;;36216:66;36209:5;36206:77;36203:103;;;36286:18;;:::i;:::-;36203:103;36333:1;36326:5;36322:13;36315:20;;36108:233;;;:::o;36347:176::-;36379:1;36396:20;36414:1;36396:20;:::i;:::-;36391:25;;36430:20;36448:1;36430:20;:::i;:::-;36425:25;;36469:1;36459:35;;36474:18;;:::i;:::-;36459:35;36515:1;36512;36508:9;36503:14;;36347:176;;;;:::o;36529:180::-;36577:77;36574:1;36567:88;36674:4;36671:1;36664:15;36698:4;36695:1;36688:15;36715:180;36763:77;36760:1;36753:88;36860:4;36857:1;36850:15;36884:4;36881:1;36874:15;36901:180;36949:77;36946:1;36939:88;37046:4;37043:1;37036:15;37070:4;37067:1;37060:15;37087:180;37135:77;37132:1;37125:88;37232:4;37229:1;37222:15;37256:4;37253:1;37246:15;37273:180;37321:77;37318:1;37311:88;37418:4;37415:1;37408:15;37442:4;37439:1;37432:15;37459:180;37507:77;37504:1;37497:88;37604:4;37601:1;37594:15;37628:4;37625:1;37618:15;37645:117;37754:1;37751;37744:12;37768:117;37877:1;37874;37867:12;37891:117;38000:1;37997;37990:12;38014:117;38123:1;38120;38113:12;38137:117;38246:1;38243;38236:12;38260:102;38301:6;38352:2;38348:7;38343:2;38336:5;38332:14;38328:28;38318:38;;38260:102;;;:::o;38368:238::-;38508:34;38504:1;38496:6;38492:14;38485:58;38577:21;38572:2;38564:6;38560:15;38553:46;38368:238;:::o;38612:228::-;38752:34;38748:1;38740:6;38736:14;38729:58;38821:11;38816:2;38808:6;38804:15;38797:36;38612:228;:::o;38846:230::-;38986:34;38982:1;38974:6;38970:14;38963:58;39055:13;39050:2;39042:6;39038:15;39031:38;38846:230;:::o;39082:237::-;39222:34;39218:1;39210:6;39206:14;39199:58;39291:20;39286:2;39278:6;39274:15;39267:45;39082:237;:::o;39325:225::-;39465:34;39461:1;39453:6;39449:14;39442:58;39534:8;39529:2;39521:6;39517:15;39510:33;39325:225;:::o;39556:178::-;39696:30;39692:1;39684:6;39680:14;39673:54;39556:178;:::o;39740:238::-;39880:34;39876:1;39868:6;39864:14;39857:58;39949:21;39944:2;39936:6;39932:15;39925:46;39740:238;:::o;39984:223::-;40124:34;40120:1;40112:6;40108:14;40101:58;40193:6;40188:2;40180:6;40176:15;40169:31;39984:223;:::o;40213:175::-;40353:27;40349:1;40341:6;40337:14;40330:51;40213:175;:::o;40394:227::-;40534:34;40530:1;40522:6;40518:14;40511:58;40603:10;40598:2;40590:6;40586:15;40579:35;40394:227;:::o;40627:231::-;40767:34;40763:1;40755:6;40751:14;40744:58;40836:14;40831:2;40823:6;40819:15;40812:39;40627:231;:::o;40864:243::-;41004:34;41000:1;40992:6;40988:14;40981:58;41073:26;41068:2;41060:6;41056:15;41049:51;40864:243;:::o;41113:229::-;41253:34;41249:1;41241:6;41237:14;41230:58;41322:12;41317:2;41309:6;41305:15;41298:37;41113:229;:::o;41348:228::-;41488:34;41484:1;41476:6;41472:14;41465:58;41557:11;41552:2;41544:6;41540:15;41533:36;41348:228;:::o;41582:182::-;41722:34;41718:1;41710:6;41706:14;41699:58;41582:182;:::o;41770:231::-;41910:34;41906:1;41898:6;41894:14;41887:58;41979:14;41974:2;41966:6;41962:15;41955:39;41770:231;:::o;42007:182::-;42147:34;42143:1;42135:6;42131:14;42124:58;42007:182;:::o;42195:228::-;42335:34;42331:1;42323:6;42319:14;42312:58;42404:11;42399:2;42391:6;42387:15;42380:36;42195:228;:::o;42429:234::-;42569:34;42565:1;42557:6;42553:14;42546:58;42638:17;42633:2;42625:6;42621:15;42614:42;42429:234;:::o;42669:220::-;42809:34;42805:1;42797:6;42793:14;42786:58;42878:3;42873:2;42865:6;42861:15;42854:28;42669:220;:::o;42895:236::-;43035:34;43031:1;43023:6;43019:14;43012:58;43104:19;43099:2;43091:6;43087:15;43080:44;42895:236;:::o;43137:235::-;43277:34;43273:1;43265:6;43261:14;43254:58;43346:18;43341:2;43333:6;43329:15;43322:43;43137:235;:::o;43378:231::-;43518:34;43514:1;43506:6;43502:14;43495:58;43587:14;43582:2;43574:6;43570:15;43563:39;43378:231;:::o;43615:227::-;43755:34;43751:1;43743:6;43739:14;43732:58;43824:10;43819:2;43811:6;43807:15;43800:35;43615:227;:::o;43848:122::-;43921:24;43939:5;43921:24;:::i;:::-;43914:5;43911:35;43901:63;;43960:1;43957;43950:12;43901:63;43848:122;:::o;43976:116::-;44046:21;44061:5;44046:21;:::i;:::-;44039:5;44036:32;44026:60;;44082:1;44079;44072:12;44026:60;43976:116;:::o;44098:120::-;44170:23;44187:5;44170:23;:::i;:::-;44163:5;44160:34;44150:62;;44208:1;44205;44198:12;44150:62;44098:120;:::o;44224:122::-;44297:24;44315:5;44297:24;:::i;:::-;44290:5;44287:35;44277:63;;44336:1;44333;44326:12;44277:63;44224:122;:::o

Swarm Source

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