Polygon Sponsored slots available. Book your slot here!
Contract Overview
[ Download CSV Export ]
Latest 9 internal transactions
[ Download CSV Export ]
Contract Name:
CYBERPUNKS_REMIX
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at PolygonScan.com on 2022-04-26 */ // SPDX-License-Identifier: GPL-3.0 // File: @openzeppelin/contracts/utils/introspection/IERC165.sol pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/token/ERC721/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; } // File: @openzeppelin/contracts/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); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/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); } } // File: @openzeppelin/contracts/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); } } } } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC721/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); } // File: @openzeppelin/contracts/utils/Context.sol pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/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 { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_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 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 {} } // File: @openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol 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(); } } // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity ^0.8.0; 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() { _setOwner(_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 { _setOwner(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"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: contracts/CyberPunksRemix.sol // Created by NEOTECNO // CyberPunks REMIX EVOLUTION pragma solidity >=0.7.0 <0.9.0; contract CYBERPUNKS_REMIX is ERC721Enumerable, Ownable { using Strings for uint256; string baseURI; string evolvedURI; string public notRevealedURI; string public baseExtension = ".json"; uint256 public cost = 2.0 ether; uint256 public maxSupply = 10000; uint256 public maxMintAmount = 100; uint256 public nftPerAddressLimit = 1000; bool public paused = true; bool public evolution = false; bool public revealed = false; bool public onlyWhitelisted = false; address public parentAddress; address[] public whitelistedAddresses; mapping(address => uint256) public addressMintedBalance; mapping(uint256 => bool) public evolved; constructor ( string memory _name, string memory _symbol, string memory _initBaseURI, string memory _initEvolvedURI, string memory _initNotRevealedURI ) ERC721 (_name, _symbol) { setBaseURI(_initBaseURI); setEvolvedURI(_initEvolvedURI); setNotRevealedURI(_initNotRevealedURI); } // internal function _baseURI() internal view virtual override returns (string memory) { return baseURI; } function _evolvedURI() internal view virtual returns (string memory) { return evolvedURI; } // public MINT function mint(uint256 _mintAmount) public payable { if (msg.sender != owner()) { require(!paused, "The contract is paused."); } uint256 supply = totalSupply(); require(_mintAmount > 0, "need to mint at least 1 NFT"); require(_mintAmount <= maxMintAmount, "max mint amount per session exceeded"); require(supply + _mintAmount <= maxSupply, "max NFT limit exceeded"); if (msg.sender != owner()) { if(onlyWhitelisted == true) { require(isWhitelisted(msg.sender), "user is not whitelisted"); uint256 ownerMintedCount = addressMintedBalance[msg.sender]; require(ownerMintedCount + _mintAmount <= nftPerAddressLimit, "max NFT per address exceeded"); } require(msg.value >= cost * _mintAmount, "insufficient funds"); } for (uint256 i = 1; i <= _mintAmount; i++) { addressMintedBalance[msg.sender]++; _safeMint(msg.sender, supply + i); } } // only Owner MINT function mintForAddress(address _to, uint256 _mintAmount) public onlyOwner { uint256 supply = totalSupply(); require(_mintAmount > 0); require(supply + _mintAmount <= maxSupply); for (uint256 i = 1; i <= _mintAmount; i++) { _safeMint(_to, supply + i); } } function isWhitelisted(address _user) public view returns (bool) { for (uint i = 0; i < whitelistedAddresses.length; i++) { if (whitelistedAddresses[i] == _user) { return true; } } return false; } function walletOfOwner(address _owner) public view returns (uint256[] memory) { uint256 ownerTokenCount = balanceOf(_owner); uint256[] memory tokenIds = new uint256[](ownerTokenCount); for (uint256 i; i < ownerTokenCount; i++) { tokenIds[i] = tokenOfOwnerByIndex(_owner, i); } return tokenIds; } // TOKEN URI - TOKEN URI - TOKEN URI <= If you are reading this you are awesome!! function tokenURI(uint256 _tokenId) public view virtual override returns (string memory) { require(_exists(_tokenId),"ERC721Metadata: URI query for nonexistent token"); if (revealed == false) { return notRevealedURI; } else if (evolved[_tokenId] == true) { string memory currentEvolvedURI = _evolvedURI(); return bytes(currentEvolvedURI).length > 0 ? string(abi.encodePacked(currentEvolvedURI, _tokenId.toString(), baseExtension)) : ""; } string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, _tokenId.toString(), baseExtension)) : ""; } // Here you can evolve or devolve your NFTs function evolveNFT(uint256 _tokenId) public payable { require(evolved[_tokenId] == false, "This NFT is already evolved."); if (msg.sender != owner()) { require(!paused, "The contract is paused."); require(evolution, "Evolution is not active yet."); require(msg.sender == ownerOf(_tokenId), "You are not the owner of this NFT."); require(msg.value >= cost, "Insufficient funds, evolve cost 2 MATIC."); } evolved[_tokenId] = true; } function devolveNFT(uint256 _tokenId) public { require(evolved[_tokenId] == true, "This NFT isn't evolved."); if (msg.sender != owner()) { require(!paused, "The contract is paused."); require(msg.sender == ownerOf(_tokenId), "You are not the owner of this NFT."); } evolved[_tokenId] = false; } // Only owner function reveal() public onlyOwner { if (revealed == true) { revealed = false; } else { revealed = true; } } // Switch evolution on and off function setEvolution() public onlyOwner { if (evolution == true) { evolution = false; } else { evolution = true; } } function setParentAddress(address _newAddress) public onlyOwner { parentAddress = _newAddress; } function setNftPerAddressLimit(uint256 _limit) public onlyOwner { nftPerAddressLimit = _limit; } function setCost(uint256 _newCost) public onlyOwner { cost = _newCost; } function setmaxMintAmount(uint256 _newmaxMintAmount) public onlyOwner { maxMintAmount = _newmaxMintAmount; } function setBaseURI(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } function setEvolvedURI(string memory _newEvolvedURI) public onlyOwner { evolvedURI = _newEvolvedURI; } function setNotRevealedURI(string memory _notRevealedURI) public onlyOwner { notRevealedURI = _notRevealedURI; } function setBaseExtension(string memory _newBaseExtension) public onlyOwner { baseExtension = _newBaseExtension; } function setOnlyWhitelisted(bool _state) public onlyOwner { onlyWhitelisted = _state; } function whitelistUsers(address[] calldata _users) public onlyOwner { delete whitelistedAddresses; whitelistedAddresses = _users; } function pause() public onlyOwner { if (paused == true) { paused = false; } else { paused = true; } } function withdraw() public payable onlyOwner { (bool os, ) = payable(owner()).call{value: address(this).balance}(""); require(os); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"},{"internalType":"string","name":"_initEvolvedURI","type":"string"},{"internalType":"string","name":"_initNotRevealedURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressMintedBalance","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":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"devolveNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"evolution","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"evolveNFT","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"evolved","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mintForAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftPerAddressLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onlyWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"parentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setEvolution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newEvolvedURI","type":"string"}],"name":"setEvolvedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"setNftPerAddressLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setOnlyWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"setParentAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintAmount","type":"uint256"}],"name":"setmaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"whitelistUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"whitelistedAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600e9080519060200190620000519291906200049b565b50671bc16d674ec80000600f5561271060105560646011556103e86012556001601360006101000a81548160ff0219169083151502179055506000601360016101000a81548160ff0219169083151502179055506000601360026101000a81548160ff0219169083151502179055506000601360036101000a81548160ff021916908315150217905550348015620000e857600080fd5b50604051620066093803806200660983398181016040528101906200010e9190620005c9565b84848160009080519060200190620001289291906200049b565b508060019080519060200190620001419291906200049b565b5050506200016462000158620001a260201b60201c565b620001aa60201b60201c565b62000175836200027060201b60201c565b62000186826200031b60201b60201c565b6200019781620003c660201b60201c565b5050505050620008f3565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000280620001a260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002a66200047160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002f69062000713565b60405180910390fd5b80600b9080519060200190620003179291906200049b565b5050565b6200032b620001a260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620003516200047160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620003aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003a19062000713565b60405180910390fd5b80600c9080519060200190620003c29291906200049b565b5050565b620003d6620001a260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620003fc6200047160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000455576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200044c9062000713565b60405180910390fd5b80600d90805190602001906200046d9291906200049b565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620004a990620007db565b90600052602060002090601f016020900481019282620004cd576000855562000519565b82601f10620004e857805160ff191683800117855562000519565b8280016001018555821562000519579182015b8281111562000518578251825591602001919060010190620004fb565b5b5090506200052891906200052c565b5090565b5b80821115620005475760008160009055506001016200052d565b5090565b6000620005626200055c846200075e565b62000735565b905082815260208101848484011115620005815762000580620008aa565b5b6200058e848285620007a5565b509392505050565b600082601f830112620005ae57620005ad620008a5565b5b8151620005c08482602086016200054b565b91505092915050565b600080600080600060a08688031215620005e857620005e7620008b4565b5b600086015167ffffffffffffffff811115620006095762000608620008af565b5b620006178882890162000596565b955050602086015167ffffffffffffffff8111156200063b576200063a620008af565b5b620006498882890162000596565b945050604086015167ffffffffffffffff8111156200066d576200066c620008af565b5b6200067b8882890162000596565b935050606086015167ffffffffffffffff8111156200069f576200069e620008af565b5b620006ad8882890162000596565b925050608086015167ffffffffffffffff811115620006d157620006d0620008af565b5b620006df8882890162000596565b9150509295509295909350565b6000620006fb60208362000794565b91506200070882620008ca565b602082019050919050565b600060208201905081810360008301526200072e81620006ec565b9050919050565b60006200074162000754565b90506200074f828262000811565b919050565b6000604051905090565b600067ffffffffffffffff8211156200077c576200077b62000876565b5b6200078782620008b9565b9050602081019050919050565b600082825260208201905092915050565b60005b83811015620007c5578082015181840152602081019050620007a8565b83811115620007d5576000848401525b50505050565b60006002820490506001821680620007f457607f821691505b602082108114156200080b576200080a62000847565b5b50919050565b6200081c82620008b9565b810181811067ffffffffffffffff821117156200083e576200083d62000876565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b615d0680620009036000396000f3fe6080604052600436106103195760003560e01c806372250380116101ab578063ba7d2c76116100f7578063e985e9c511610095578063f254933d1161006f578063f254933d14610b98578063f2c4ce1e14610bc1578063f2fde38b14610bea578063fa5afe4014610c1357610319565b8063e985e9c514610b07578063ed19e3e714610b44578063edec5f2714610b6f57610319565b8063d0eb26b0116100d1578063d0eb26b014610a61578063d5abeb0114610a8a578063da3ef23f14610ab5578063dc1270c714610ade57610319565b8063ba7d2c76146109ce578063c6682862146109f9578063c87b56dd14610a2457610319565b806395d89b4111610164578063a22cb4651161013e578063a22cb46514610928578063a475b5dd14610951578063b88d4fde14610968578063ba4e5c491461099157610319565b806395d89b41146108b65780639c70b512146108e1578063a0712d681461090c57610319565b806372250380146107e05780637b6f77681461080b5780637dd40d27146108345780637f00c7a61461084b5780638456cb59146108745780638da5cb5b1461088b57610319565b80633ccfd60b1161026a57806351830227116102235780635fa964d6116101fd5780635fa964d6146107125780636352211e1461074f57806370a082311461078c578063715018a6146107c957610319565b8063518302271461069357806355f804b3146106be5780635c975abb146106e757610319565b80633ccfd60b146105a157806342842e0e146105ab578063438b6300146105d457806344a0d68a1461061157806346abdccf1461063a5780634f6ccce71461065657610319565b806318160ddd116102d757806323b872dd116102b157806323b872dd146104d55780632f745c59146104fe5780633af32abf1461053b5780633c9527641461057857610319565b806318160ddd1461044257806318cae2691461046d578063239c70ae146104aa57610319565b8062821de31461031e57806301ffc9a71461034957806306fdde0314610386578063081812fc146103b1578063095ea7b3146103ee57806313faede614610417575b600080fd5b34801561032a57600080fd5b50610333610c3c565b6040516103409190614b68565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190614441565b610c62565b60405161037d9190614bf1565b60405180910390f35b34801561039257600080fd5b5061039b610cdc565b6040516103a89190614c0c565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d391906144e4565b610d6e565b6040516103e59190614b68565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190614387565b610df3565b005b34801561042357600080fd5b5061042c610f0b565b6040516104399190614fee565b60405180910390f35b34801561044e57600080fd5b50610457610f11565b6040516104649190614fee565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190614204565b610f1e565b6040516104a19190614fee565b60405180910390f35b3480156104b657600080fd5b506104bf610f36565b6040516104cc9190614fee565b60405180910390f35b3480156104e157600080fd5b506104fc60048036038101906104f79190614271565b610f3c565b005b34801561050a57600080fd5b5061052560048036038101906105209190614387565b610f9c565b6040516105329190614fee565b60405180910390f35b34801561054757600080fd5b50610562600480360381019061055d9190614204565b611041565b60405161056f9190614bf1565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190614414565b6110f0565b005b6105a9611189565b005b3480156105b757600080fd5b506105d260048036038101906105cd9190614271565b611285565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190614204565b6112a5565b6040516106089190614bcf565b60405180910390f35b34801561061d57600080fd5b50610638600480360381019061063391906144e4565b611353565b005b610654600480360381019061064f91906144e4565b6113d9565b005b34801561066257600080fd5b5061067d600480360381019061067891906144e4565b611604565b60405161068a9190614fee565b60405180910390f35b34801561069f57600080fd5b506106a8611675565b6040516106b59190614bf1565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e0919061449b565b611688565b005b3480156106f357600080fd5b506106fc61171e565b6040516107099190614bf1565b60405180910390f35b34801561071e57600080fd5b50610739600480360381019061073491906144e4565b611731565b6040516107469190614bf1565b60405180910390f35b34801561075b57600080fd5b50610776600480360381019061077191906144e4565b611751565b6040516107839190614b68565b60405180910390f35b34801561079857600080fd5b506107b360048036038101906107ae9190614204565b611803565b6040516107c09190614fee565b60405180910390f35b3480156107d557600080fd5b506107de6118bb565b005b3480156107ec57600080fd5b506107f5611943565b6040516108029190614c0c565b60405180910390f35b34801561081757600080fd5b50610832600480360381019061082d919061449b565b6119d1565b005b34801561084057600080fd5b50610849611a67565b005b34801561085757600080fd5b50610872600480360381019061086d91906144e4565b611b3d565b005b34801561088057600080fd5b50610889611bc3565b005b34801561089757600080fd5b506108a0611c99565b6040516108ad9190614b68565b60405180910390f35b3480156108c257600080fd5b506108cb611cc3565b6040516108d89190614c0c565b60405180910390f35b3480156108ed57600080fd5b506108f6611d55565b6040516109039190614bf1565b60405180910390f35b610926600480360381019061092191906144e4565b611d68565b005b34801561093457600080fd5b5061094f600480360381019061094a9190614347565b6120ec565b005b34801561095d57600080fd5b5061096661226d565b005b34801561097457600080fd5b5061098f600480360381019061098a91906142c4565b612343565b005b34801561099d57600080fd5b506109b860048036038101906109b391906144e4565b6123a5565b6040516109c59190614b68565b60405180910390f35b3480156109da57600080fd5b506109e36123e4565b6040516109f09190614fee565b60405180910390f35b348015610a0557600080fd5b50610a0e6123ea565b604051610a1b9190614c0c565b60405180910390f35b348015610a3057600080fd5b50610a4b6004803603810190610a4691906144e4565b612478565b604051610a589190614c0c565b60405180910390f35b348015610a6d57600080fd5b50610a886004803603810190610a8391906144e4565b61265e565b005b348015610a9657600080fd5b50610a9f6126e4565b604051610aac9190614fee565b60405180910390f35b348015610ac157600080fd5b50610adc6004803603810190610ad7919061449b565b6126ea565b005b348015610aea57600080fd5b50610b056004803603810190610b0091906144e4565b612780565b005b348015610b1357600080fd5b50610b2e6004803603810190610b299190614231565b612917565b604051610b3b9190614bf1565b60405180910390f35b348015610b5057600080fd5b50610b596129ab565b604051610b669190614bf1565b60405180910390f35b348015610b7b57600080fd5b50610b966004803603810190610b9191906143c7565b6129be565b005b348015610ba457600080fd5b50610bbf6004803603810190610bba9190614387565b612a5e565b005b348015610bcd57600080fd5b50610be86004803603810190610be3919061449b565b612b49565b005b348015610bf657600080fd5b50610c116004803603810190610c0c9190614204565b612bdf565b005b348015610c1f57600080fd5b50610c3a6004803603810190610c359190614204565b612cd7565b005b601360049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610cd55750610cd482612d97565b5b9050919050565b606060008054610ceb906152f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610d17906152f7565b8015610d645780601f10610d3957610100808354040283529160200191610d64565b820191906000526020600020905b815481529060010190602001808311610d4757829003601f168201915b5050505050905090565b6000610d7982612e79565b610db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daf90614e6e565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610dfe82611751565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6690614f0e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e8e612ee5565b73ffffffffffffffffffffffffffffffffffffffff161480610ebd5750610ebc81610eb7612ee5565b612917565b5b610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef390614d8e565b60405180910390fd5b610f068383612eed565b505050565b600f5481565b6000600880549050905090565b60156020528060005260406000206000915090505481565b60115481565b610f4d610f47612ee5565b82612fa6565b610f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8390614f6e565b60405180910390fd5b610f97838383613084565b505050565b6000610fa783611803565b8210610fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdf90614c2e565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600080600090505b6014805490508110156110e5578273ffffffffffffffffffffffffffffffffffffffff166014828154811061108157611080615490565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110d25760019150506110eb565b80806110dd9061535a565b915050611049565b50600090505b919050565b6110f8612ee5565b73ffffffffffffffffffffffffffffffffffffffff16611116611c99565b73ffffffffffffffffffffffffffffffffffffffff161461116c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116390614e8e565b60405180910390fd5b80601360036101000a81548160ff02191690831515021790555050565b611191612ee5565b73ffffffffffffffffffffffffffffffffffffffff166111af611c99565b73ffffffffffffffffffffffffffffffffffffffff1614611205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fc90614e8e565b60405180910390fd5b600061120f611c99565b73ffffffffffffffffffffffffffffffffffffffff164760405161123290614b53565b60006040518083038185875af1925050503d806000811461126f576040519150601f19603f3d011682016040523d82523d6000602084013e611274565b606091505b505090508061128257600080fd5b50565b6112a083838360405180602001604052806000815250612343565b505050565b606060006112b283611803565b905060008167ffffffffffffffff8111156112d0576112cf6154bf565b5b6040519080825280602002602001820160405280156112fe5781602001602082028036833780820191505090505b50905060005b82811015611348576113168582610f9c565b82828151811061132957611328615490565b5b60200260200101818152505080806113409061535a565b915050611304565b508092505050919050565b61135b612ee5565b73ffffffffffffffffffffffffffffffffffffffff16611379611c99565b73ffffffffffffffffffffffffffffffffffffffff16146113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c690614e8e565b60405180910390fd5b80600f8190555050565b600015156016600083815260200190815260200160002060009054906101000a900460ff16151514611440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143790614cae565b60405180910390fd5b611448611c99565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115d557601360009054906101000a900460ff16156114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c190614e4e565b60405180910390fd5b601360019054906101000a900460ff16611519576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151090614d6e565b60405180910390fd5b61152281611751565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461158f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158690614eee565b60405180910390fd5b600f543410156115d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cb90614f2e565b60405180910390fd5b5b60016016600083815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061160e610f11565b821061164f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164690614f8e565b60405180910390fd5b6008828154811061166357611662615490565b5b90600052602060002001549050919050565b601360029054906101000a900460ff1681565b611690612ee5565b73ffffffffffffffffffffffffffffffffffffffff166116ae611c99565b73ffffffffffffffffffffffffffffffffffffffff1614611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb90614e8e565b60405180910390fd5b80600b908051906020019061171a929190613f01565b5050565b601360009054906101000a900460ff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f190614dce565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186b90614dae565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118c3612ee5565b73ffffffffffffffffffffffffffffffffffffffff166118e1611c99565b73ffffffffffffffffffffffffffffffffffffffff1614611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e90614e8e565b60405180910390fd5b61194160006132e0565b565b600d8054611950906152f7565b80601f016020809104026020016040519081016040528092919081815260200182805461197c906152f7565b80156119c95780601f1061199e576101008083540402835291602001916119c9565b820191906000526020600020905b8154815290600101906020018083116119ac57829003601f168201915b505050505081565b6119d9612ee5565b73ffffffffffffffffffffffffffffffffffffffff166119f7611c99565b73ffffffffffffffffffffffffffffffffffffffff1614611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4490614e8e565b60405180910390fd5b80600c9080519060200190611a63929190613f01565b5050565b611a6f612ee5565b73ffffffffffffffffffffffffffffffffffffffff16611a8d611c99565b73ffffffffffffffffffffffffffffffffffffffff1614611ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ada90614e8e565b60405180910390fd5b60011515601360019054906101000a900460ff1615151415611b1f576000601360016101000a81548160ff021916908315150217905550611b3b565b6001601360016101000a81548160ff0219169083151502179055505b565b611b45612ee5565b73ffffffffffffffffffffffffffffffffffffffff16611b63611c99565b73ffffffffffffffffffffffffffffffffffffffff1614611bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb090614e8e565b60405180910390fd5b8060118190555050565b611bcb612ee5565b73ffffffffffffffffffffffffffffffffffffffff16611be9611c99565b73ffffffffffffffffffffffffffffffffffffffff1614611c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3690614e8e565b60405180910390fd5b60011515601360009054906101000a900460ff1615151415611c7b576000601360006101000a81548160ff021916908315150217905550611c97565b6001601360006101000a81548160ff0219169083151502179055505b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054611cd2906152f7565b80601f0160208091040260200160405190810160405280929190818152602001828054611cfe906152f7565b8015611d4b5780601f10611d2057610100808354040283529160200191611d4b565b820191906000526020600020905b815481529060010190602001808311611d2e57829003601f168201915b5050505050905090565b601360039054906101000a900460ff1681565b611d70611c99565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611df357601360009054906101000a900460ff1615611df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de990614e4e565b60405180910390fd5b5b6000611dfd610f11565b905060008211611e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3990614fce565b60405180910390fd5b601154821115611e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7e90614e0e565b60405180910390fd5b6010548282611e96919061512c565b1115611ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ece90614dee565b60405180910390fd5b611edf611c99565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461205c5760011515601360039054906101000a900460ff161515141561200b57611f3633611041565b611f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6c90614fae565b60405180910390fd5b6000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506012548382611fc8919061512c565b1115612009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200090614cce565b60405180910390fd5b505b81600f5461201991906151b3565b34101561205b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205290614f4e565b60405180910390fd5b5b6000600190505b8281116120e757601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906120ba9061535a565b91905055506120d43382846120cf919061512c565b6133a6565b80806120df9061535a565b915050612063565b505050565b6120f4612ee5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215990614d0e565b60405180910390fd5b806005600061216f612ee5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661221c612ee5565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122619190614bf1565b60405180910390a35050565b612275612ee5565b73ffffffffffffffffffffffffffffffffffffffff16612293611c99565b73ffffffffffffffffffffffffffffffffffffffff16146122e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e090614e8e565b60405180910390fd5b60011515601360029054906101000a900460ff1615151415612325576000601360026101000a81548160ff021916908315150217905550612341565b6001601360026101000a81548160ff0219169083151502179055505b565b61235461234e612ee5565b83612fa6565b612393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238a90614f6e565b60405180910390fd5b61239f848484846133c4565b50505050565b601481815481106123b557600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b600e80546123f7906152f7565b80601f0160208091040260200160405190810160405280929190818152602001828054612423906152f7565b80156124705780601f1061244557610100808354040283529160200191612470565b820191906000526020600020905b81548152906001019060200180831161245357829003601f168201915b505050505081565b606061248382612e79565b6124c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b990614ece565b60405180910390fd5b60001515601360029054906101000a900460ff161515141561257057600d80546124eb906152f7565b80601f0160208091040260200160405190810160405280929190818152602001828054612517906152f7565b80156125645780601f1061253957610100808354040283529160200191612564565b820191906000526020600020905b81548152906001019060200180831161254757829003601f168201915b50505050509050612659565b600115156016600084815260200190815260200160002060009054906101000a900460ff16151514156125fd5760006125a7613420565b905060008151116125c757604051806020016040528060008152506125f5565b806125d1846134b2565b600e6040516020016125e593929190614b22565b6040516020818303038152906040525b915050612659565b6000612607613613565b905060008151116126275760405180602001604052806000815250612655565b80612631846134b2565b600e60405160200161264593929190614b22565b6040516020818303038152906040525b9150505b919050565b612666612ee5565b73ffffffffffffffffffffffffffffffffffffffff16612684611c99565b73ffffffffffffffffffffffffffffffffffffffff16146126da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d190614e8e565b60405180910390fd5b8060128190555050565b60105481565b6126f2612ee5565b73ffffffffffffffffffffffffffffffffffffffff16612710611c99565b73ffffffffffffffffffffffffffffffffffffffff1614612766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275d90614e8e565b60405180910390fd5b80600e908051906020019061277c929190613f01565b5050565b600115156016600083815260200190815260200160002060009054906101000a900460ff161515146127e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127de90614d2e565b60405180910390fd5b6127ef611c99565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128e857601360009054906101000a900460ff1615612871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286890614e4e565b60405180910390fd5b61287a81611751565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128de90614eee565b60405180910390fd5b5b60006016600083815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b601360019054906101000a900460ff1681565b6129c6612ee5565b73ffffffffffffffffffffffffffffffffffffffff166129e4611c99565b73ffffffffffffffffffffffffffffffffffffffff1614612a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3190614e8e565b60405180910390fd5b60146000612a489190613f87565b818160149190612a59929190613fa8565b505050565b612a66612ee5565b73ffffffffffffffffffffffffffffffffffffffff16612a84611c99565b73ffffffffffffffffffffffffffffffffffffffff1614612ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad190614e8e565b60405180910390fd5b6000612ae4610f11565b905060008211612af357600080fd5b6010548282612b02919061512c565b1115612b0d57600080fd5b6000600190505b828111612b4357612b30848284612b2b919061512c565b6133a6565b8080612b3b9061535a565b915050612b14565b50505050565b612b51612ee5565b73ffffffffffffffffffffffffffffffffffffffff16612b6f611c99565b73ffffffffffffffffffffffffffffffffffffffff1614612bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbc90614e8e565b60405180910390fd5b80600d9080519060200190612bdb929190613f01565b5050565b612be7612ee5565b73ffffffffffffffffffffffffffffffffffffffff16612c05611c99565b73ffffffffffffffffffffffffffffffffffffffff1614612c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5290614e8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc290614c6e565b60405180910390fd5b612cd4816132e0565b50565b612cdf612ee5565b73ffffffffffffffffffffffffffffffffffffffff16612cfd611c99565b73ffffffffffffffffffffffffffffffffffffffff1614612d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4a90614e8e565b60405180910390fd5b80601360046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612e6257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612e725750612e71826136a5565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612f6083611751565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612fb182612e79565b612ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe790614d4e565b60405180910390fd5b6000612ffb83611751565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061306a57508373ffffffffffffffffffffffffffffffffffffffff1661305284610d6e565b73ffffffffffffffffffffffffffffffffffffffff16145b8061307b575061307a8185612917565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166130a482611751565b73ffffffffffffffffffffffffffffffffffffffff16146130fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f190614eae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561316a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316190614cee565b60405180910390fd5b61317583838361370f565b613180600082612eed565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131d0919061520d565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613227919061512c565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6133c0828260405180602001604052806000815250613823565b5050565b6133cf848484613084565b6133db8484848461387e565b61341a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341190614c4e565b60405180910390fd5b50505050565b6060600c805461342f906152f7565b80601f016020809104026020016040519081016040528092919081815260200182805461345b906152f7565b80156134a85780601f1061347d576101008083540402835291602001916134a8565b820191906000526020600020905b81548152906001019060200180831161348b57829003601f168201915b5050505050905090565b606060008214156134fa576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061360e565b600082905060005b6000821461352c5780806135159061535a565b915050600a826135259190615182565b9150613502565b60008167ffffffffffffffff811115613548576135476154bf565b5b6040519080825280601f01601f19166020018201604052801561357a5781602001600182028036833780820191505090505b5090505b6000851461360757600182613593919061520d565b9150600a856135a291906153a3565b60306135ae919061512c565b60f81b8183815181106135c4576135c3615490565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856136009190615182565b945061357e565b8093505050505b919050565b6060600b8054613622906152f7565b80601f016020809104026020016040519081016040528092919081815260200182805461364e906152f7565b801561369b5780601f106136705761010080835404028352916020019161369b565b820191906000526020600020905b81548152906001019060200180831161367e57829003601f168201915b5050505050905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61371a838383613a15565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561375d5761375881613a1a565b61379c565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461379b5761379a8382613a63565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156137df576137da81613bd0565b61381e565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461381d5761381c8282613ca1565b5b5b505050565b61382d8383613d20565b61383a600084848461387e565b613879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161387090614c4e565b60405180910390fd5b505050565b600061389f8473ffffffffffffffffffffffffffffffffffffffff16613eee565b15613a08578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026138c8612ee5565b8786866040518563ffffffff1660e01b81526004016138ea9493929190614b83565b602060405180830381600087803b15801561390457600080fd5b505af192505050801561393557506040513d601f19601f82011682018060405250810190613932919061446e565b60015b6139b8573d8060008114613965576040519150601f19603f3d011682016040523d82523d6000602084013e61396a565b606091505b506000815114156139b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139a790614c4e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613a0d565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001613a7084611803565b613a7a919061520d565b9050600060076000848152602001908152602001600020549050818114613b5f576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050613be4919061520d565b9050600060096000848152602001908152602001600020549050600060088381548110613c1457613c13615490565b5b906000526020600020015490508060088381548110613c3657613c35615490565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480613c8557613c84615461565b5b6001900381819060005260206000200160009055905550505050565b6000613cac83611803565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d8790614e2e565b60405180910390fd5b613d9981612e79565b15613dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dd090614c8e565b60405180910390fd5b613de56000838361370f565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613e35919061512c565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054613f0d906152f7565b90600052602060002090601f016020900481019282613f2f5760008555613f76565b82601f10613f4857805160ff1916838001178555613f76565b82800160010185558215613f76579182015b82811115613f75578251825591602001919060010190613f5a565b5b509050613f839190614048565b5090565b5080546000825590600052602060002090810190613fa59190614048565b50565b828054828255906000526020600020908101928215614037579160200282015b8281111561403657823573ffffffffffffffffffffffffffffffffffffffff168260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190613fc8565b5b5090506140449190614048565b5090565b5b80821115614061576000816000905550600101614049565b5090565b60006140786140738461502e565b615009565b905082815260208101848484011115614094576140936154fd565b5b61409f8482856152b5565b509392505050565b60006140ba6140b58461505f565b615009565b9050828152602081018484840111156140d6576140d56154fd565b5b6140e18482856152b5565b509392505050565b6000813590506140f881615c74565b92915050565b60008083601f840112614114576141136154f3565b5b8235905067ffffffffffffffff811115614131576141306154ee565b5b60208301915083602082028301111561414d5761414c6154f8565b5b9250929050565b60008135905061416381615c8b565b92915050565b60008135905061417881615ca2565b92915050565b60008151905061418d81615ca2565b92915050565b600082601f8301126141a8576141a76154f3565b5b81356141b8848260208601614065565b91505092915050565b600082601f8301126141d6576141d56154f3565b5b81356141e68482602086016140a7565b91505092915050565b6000813590506141fe81615cb9565b92915050565b60006020828403121561421a57614219615507565b5b6000614228848285016140e9565b91505092915050565b6000806040838503121561424857614247615507565b5b6000614256858286016140e9565b9250506020614267858286016140e9565b9150509250929050565b60008060006060848603121561428a57614289615507565b5b6000614298868287016140e9565b93505060206142a9868287016140e9565b92505060406142ba868287016141ef565b9150509250925092565b600080600080608085870312156142de576142dd615507565b5b60006142ec878288016140e9565b94505060206142fd878288016140e9565b935050604061430e878288016141ef565b925050606085013567ffffffffffffffff81111561432f5761432e615502565b5b61433b87828801614193565b91505092959194509250565b6000806040838503121561435e5761435d615507565b5b600061436c858286016140e9565b925050602061437d85828601614154565b9150509250929050565b6000806040838503121561439e5761439d615507565b5b60006143ac858286016140e9565b92505060206143bd858286016141ef565b9150509250929050565b600080602083850312156143de576143dd615507565b5b600083013567ffffffffffffffff8111156143fc576143fb615502565b5b614408858286016140fe565b92509250509250929050565b60006020828403121561442a57614429615507565b5b600061443884828501614154565b91505092915050565b60006020828403121561445757614456615507565b5b600061446584828501614169565b91505092915050565b60006020828403121561448457614483615507565b5b60006144928482850161417e565b91505092915050565b6000602082840312156144b1576144b0615507565b5b600082013567ffffffffffffffff8111156144cf576144ce615502565b5b6144db848285016141c1565b91505092915050565b6000602082840312156144fa576144f9615507565b5b6000614508848285016141ef565b91505092915050565b600061451d8383614b04565b60208301905092915050565b61453281615241565b82525050565b6000614543826150b5565b61454d81856150e3565b935061455883615090565b8060005b838110156145895781516145708882614511565b975061457b836150d6565b92505060018101905061455c565b5085935050505092915050565b61459f81615253565b82525050565b60006145b0826150c0565b6145ba81856150f4565b93506145ca8185602086016152c4565b6145d38161550c565b840191505092915050565b60006145e9826150cb565b6145f38185615110565b93506146038185602086016152c4565b61460c8161550c565b840191505092915050565b6000614622826150cb565b61462c8185615121565b935061463c8185602086016152c4565b80840191505092915050565b60008154614655816152f7565b61465f8186615121565b9450600182166000811461467a576001811461468b576146be565b60ff198316865281860193506146be565b614694856150a0565b60005b838110156146b657815481890152600182019150602081019050614697565b838801955050505b50505092915050565b60006146d4602b83615110565b91506146df8261551d565b604082019050919050565b60006146f7603283615110565b91506147028261556c565b604082019050919050565b600061471a602683615110565b9150614725826155bb565b604082019050919050565b600061473d601c83615110565b91506147488261560a565b602082019050919050565b6000614760601c83615110565b915061476b82615633565b602082019050919050565b6000614783601c83615110565b915061478e8261565c565b602082019050919050565b60006147a6602483615110565b91506147b182615685565b604082019050919050565b60006147c9601983615110565b91506147d4826156d4565b602082019050919050565b60006147ec601783615110565b91506147f7826156fd565b602082019050919050565b600061480f602c83615110565b915061481a82615726565b604082019050919050565b6000614832601c83615110565b915061483d82615775565b602082019050919050565b6000614855603883615110565b91506148608261579e565b604082019050919050565b6000614878602a83615110565b9150614883826157ed565b604082019050919050565b600061489b602983615110565b91506148a68261583c565b604082019050919050565b60006148be601683615110565b91506148c98261588b565b602082019050919050565b60006148e1602483615110565b91506148ec826158b4565b604082019050919050565b6000614904602083615110565b915061490f82615903565b602082019050919050565b6000614927601783615110565b91506149328261592c565b602082019050919050565b600061494a602c83615110565b915061495582615955565b604082019050919050565b600061496d602083615110565b9150614978826159a4565b602082019050919050565b6000614990602983615110565b915061499b826159cd565b604082019050919050565b60006149b3602f83615110565b91506149be82615a1c565b604082019050919050565b60006149d6602283615110565b91506149e182615a6b565b604082019050919050565b60006149f9602183615110565b9150614a0482615aba565b604082019050919050565b6000614a1c602883615110565b9150614a2782615b09565b604082019050919050565b6000614a3f600083615105565b9150614a4a82615b58565b600082019050919050565b6000614a62601283615110565b9150614a6d82615b5b565b602082019050919050565b6000614a85603183615110565b9150614a9082615b84565b604082019050919050565b6000614aa8602c83615110565b9150614ab382615bd3565b604082019050919050565b6000614acb601783615110565b9150614ad682615c22565b602082019050919050565b6000614aee601b83615110565b9150614af982615c4b565b602082019050919050565b614b0d816152ab565b82525050565b614b1c816152ab565b82525050565b6000614b2e8286614617565b9150614b3a8285614617565b9150614b468284614648565b9150819050949350505050565b6000614b5e82614a32565b9150819050919050565b6000602082019050614b7d6000830184614529565b92915050565b6000608082019050614b986000830187614529565b614ba56020830186614529565b614bb26040830185614b13565b8181036060830152614bc481846145a5565b905095945050505050565b60006020820190508181036000830152614be98184614538565b905092915050565b6000602082019050614c066000830184614596565b92915050565b60006020820190508181036000830152614c2681846145de565b905092915050565b60006020820190508181036000830152614c47816146c7565b9050919050565b60006020820190508181036000830152614c67816146ea565b9050919050565b60006020820190508181036000830152614c878161470d565b9050919050565b60006020820190508181036000830152614ca781614730565b9050919050565b60006020820190508181036000830152614cc781614753565b9050919050565b60006020820190508181036000830152614ce781614776565b9050919050565b60006020820190508181036000830152614d0781614799565b9050919050565b60006020820190508181036000830152614d27816147bc565b9050919050565b60006020820190508181036000830152614d47816147df565b9050919050565b60006020820190508181036000830152614d6781614802565b9050919050565b60006020820190508181036000830152614d8781614825565b9050919050565b60006020820190508181036000830152614da781614848565b9050919050565b60006020820190508181036000830152614dc78161486b565b9050919050565b60006020820190508181036000830152614de78161488e565b9050919050565b60006020820190508181036000830152614e07816148b1565b9050919050565b60006020820190508181036000830152614e27816148d4565b9050919050565b60006020820190508181036000830152614e47816148f7565b9050919050565b60006020820190508181036000830152614e678161491a565b9050919050565b60006020820190508181036000830152614e878161493d565b9050919050565b60006020820190508181036000830152614ea781614960565b9050919050565b60006020820190508181036000830152614ec781614983565b9050919050565b60006020820190508181036000830152614ee7816149a6565b9050919050565b60006020820190508181036000830152614f07816149c9565b9050919050565b60006020820190508181036000830152614f27816149ec565b9050919050565b60006020820190508181036000830152614f4781614a0f565b9050919050565b60006020820190508181036000830152614f6781614a55565b9050919050565b60006020820190508181036000830152614f8781614a78565b9050919050565b60006020820190508181036000830152614fa781614a9b565b9050919050565b60006020820190508181036000830152614fc781614abe565b9050919050565b60006020820190508181036000830152614fe781614ae1565b9050919050565b60006020820190506150036000830184614b13565b92915050565b6000615013615024565b905061501f8282615329565b919050565b6000604051905090565b600067ffffffffffffffff821115615049576150486154bf565b5b6150528261550c565b9050602081019050919050565b600067ffffffffffffffff82111561507a576150796154bf565b5b6150838261550c565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000615137826152ab565b9150615142836152ab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615177576151766153d4565b5b828201905092915050565b600061518d826152ab565b9150615198836152ab565b9250826151a8576151a7615403565b5b828204905092915050565b60006151be826152ab565b91506151c9836152ab565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615202576152016153d4565b5b828202905092915050565b6000615218826152ab565b9150615223836152ab565b925082821015615236576152356153d4565b5b828203905092915050565b600061524c8261528b565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156152e25780820151818401526020810190506152c7565b838111156152f1576000848401525b50505050565b6000600282049050600182168061530f57607f821691505b6020821081141561532357615322615432565b5b50919050565b6153328261550c565b810181811067ffffffffffffffff82111715615351576153506154bf565b5b80604052505050565b6000615365826152ab565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615398576153976153d4565b5b600182019050919050565b60006153ae826152ab565b91506153b9836152ab565b9250826153c9576153c8615403565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f54686973204e465420697320616c72656164792065766f6c7665642e00000000600082015250565b7f6d6178204e465420706572206164647265737320657863656564656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f54686973204e46542069736e27742065766f6c7665642e000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f45766f6c7574696f6e206973206e6f7420616374697665207965742e00000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f6d6178204e4654206c696d697420657863656564656400000000000000000000600082015250565b7f6d6178206d696e7420616d6f756e74207065722073657373696f6e206578636560008201527f6564656400000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f54686520636f6e7472616374206973207061757365642e000000000000000000600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f596f7520617265206e6f7420746865206f776e6572206f662074686973204e4660008201527f542e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f496e73756666696369656e742066756e64732c2065766f6c766520636f73742060008201527f32204d415449432e000000000000000000000000000000000000000000000000602082015250565b50565b7f696e73756666696369656e742066756e64730000000000000000000000000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f75736572206973206e6f742077686974656c6973746564000000000000000000600082015250565b7f6e65656420746f206d696e74206174206c656173742031204e46540000000000600082015250565b615c7d81615241565b8114615c8857600080fd5b50565b615c9481615253565b8114615c9f57600080fd5b50565b615cab8161525f565b8114615cb657600080fd5b50565b615cc2816152ab565b8114615ccd57600080fd5b5056fea26469706673582212207d537af0e3ea37695cf772f531436e8f4e26544bf4174470579ffbb6f2c6875464736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000010437962657270756e6b732052454d495800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000343505200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d655876794a654879424352696742454364436a7650483259724c3241337467696368705136706d4e4c757a762f000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d5652716637686554344535527041514335666a757042574e44585858646231594b5a4a736655615a676439362f000000000000000000000000000000000000000000000000000000000000000000000000000000000041697066733a2f2f516d656268634b727567505751324c425545655244357a4c485a625a584768484d313164507a4c414e633667384a2f68696464656e2e6a736f6e00000000000000000000000000000000000000000000000000000000000000
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000010437962657270756e6b732052454d495800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000343505200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d655876794a654879424352696742454364436a7650483259724c3241337467696368705136706d4e4c757a762f000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d5652716637686554344535527041514335666a757042574e44585858646231594b5a4a736655615a676439362f000000000000000000000000000000000000000000000000000000000000000000000000000000000041697066733a2f2f516d656268634b727567505751324c425545655244357a4c485a625a584768484d313164507a4c414e633667384a2f68696464656e2e6a736f6e00000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Cyberpunks REMIX
Arg [1] : _symbol (string): CPR
Arg [2] : _initBaseURI (string): ipfs://QmeXvyJeHyBCRigBECdCjvPH2YrL2A3tgichpQ6pmNLuzv/
Arg [3] : _initEvolvedURI (string): ipfs://QmVRqf7heT4E5RpAQC5fjupBWNDXXXdb1YKZJsfUaZgd96/
Arg [4] : _initNotRevealedURI (string): ipfs://QmebhcKrugPWQ2LBUEeRD5zLHZbZXGhHM11dPzLANc6g8J/hidden.json
-----Encoded View---------------
19 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [4] : 00000000000000000000000000000000000000000000000000000000000001e0
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000010
Arg [6] : 437962657270756e6b732052454d495800000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [8] : 4350520000000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [10] : 697066733a2f2f516d655876794a654879424352696742454364436a76504832
Arg [11] : 59724c3241337467696368705136706d4e4c757a762f00000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [13] : 697066733a2f2f516d5652716637686554344535527041514335666a75704257
Arg [14] : 4e44585858646231594b5a4a736655615a676439362f00000000000000000000
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000041
Arg [16] : 697066733a2f2f516d656268634b727567505751324c425545655244357a4c48
Arg [17] : 5a625a584768484d313164507a4c414e633667384a2f68696464656e2e6a736f
Arg [18] : 6e00000000000000000000000000000000000000000000000000000000000000
Deployed ByteCode Sourcemap
42705:6659:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43207:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34656:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22552:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24111:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23634:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42913:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35296:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43282:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42986:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25001:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34964:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45285:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48842:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49216:145;;;:::i;:::-;;25411:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45532:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48158:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46764:499;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35486:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43134:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48366:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43070:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43342:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22246:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21976:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41940:94;;;;;;;;;;;;;:::i;:::-;;42838:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48470:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47798:130;;;;;;;;;;;;;:::i;:::-;;48244:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49095:114;;;;;;;;;;;;;:::i;:::-;;41289:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22721:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43167:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43966:981;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24404:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47635:121;;;;;;;;;;;;;:::i;:::-;;25667:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43240:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43025:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42871:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45963:744;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48046:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42949:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48712:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47269:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24770:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43100:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48945:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44979:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;48586:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42189:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47936:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43207:28;;;;;;;;;;;;;:::o;34656:224::-;34758:4;34797:35;34782:50;;;:11;:50;;;;:90;;;;34836:36;34860:11;34836:23;:36::i;:::-;34782:90;34775:97;;34656:224;;;:::o;22552:100::-;22606:13;22639:5;22632:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22552:100;:::o;24111:221::-;24187:7;24215:16;24223:7;24215;:16::i;:::-;24207:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;24300:15;:24;24316:7;24300:24;;;;;;;;;;;;;;;;;;;;;24293:31;;24111:221;;;:::o;23634:411::-;23715:13;23731:23;23746:7;23731:14;:23::i;:::-;23715:39;;23779:5;23773:11;;:2;:11;;;;23765:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;23873:5;23857:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;23882:37;23899:5;23906:12;:10;:12::i;:::-;23882:16;:37::i;:::-;23857:62;23835:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;24016:21;24025:2;24029:7;24016:8;:21::i;:::-;23704:341;23634:411;;:::o;42913:31::-;;;;:::o;35296:113::-;35357:7;35384:10;:17;;;;35377:24;;35296:113;:::o;43282:55::-;;;;;;;;;;;;;;;;;:::o;42986:34::-;;;;:::o;25001:339::-;25196:41;25215:12;:10;:12::i;:::-;25229:7;25196:18;:41::i;:::-;25188:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;25304:28;25314:4;25320:2;25324:7;25304:9;:28::i;:::-;25001:339;;;:::o;34964:256::-;35061:7;35097:23;35114:5;35097:16;:23::i;:::-;35089:5;:31;35081:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;35186:12;:19;35199:5;35186:19;;;;;;;;;;;;;;;:26;35206:5;35186:26;;;;;;;;;;;;35179:33;;34964:256;;;;:::o;45285:241::-;45344:4;45362:6;45371:1;45362:10;;45357:145;45378:20;:27;;;;45374:1;:31;45357:145;;;45454:5;45427:32;;:20;45448:1;45427:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:32;;;45423:72;;;45479:4;45472:11;;;;;45423:72;45407:3;;;;;:::i;:::-;;;;45357:145;;;;45515:5;45508:12;;45285:241;;;;:::o;48842:95::-;41520:12;:10;:12::i;:::-;41509:23;;:7;:5;:7::i;:::-;:23;;;41501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48925:6:::1;48907:15;;:24;;;;;;;;;;;;;;;;;;48842:95:::0;:::o;49216:145::-;41520:12;:10;:12::i;:::-;41509:23;;:7;:5;:7::i;:::-;:23;;;41501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49269:7:::1;49290;:5;:7::i;:::-;49282:21;;49311;49282:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49268:69;;;49352:2;49344:11;;;::::0;::::1;;49261:100;49216:145::o:0;25411:185::-;25549:39;25566:4;25572:2;25576:7;25549:39;;;;;;;;;;;;:16;:39::i;:::-;25411:185;;;:::o;45532:336::-;45592:16;45617:23;45643:17;45653:6;45643:9;:17::i;:::-;45617:43;;45667:25;45709:15;45695:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45667:58;;45737:9;45732:109;45752:15;45748:1;:19;45732:109;;;45799:30;45819:6;45827:1;45799:19;:30::i;:::-;45785:8;45794:1;45785:11;;;;;;;;:::i;:::-;;;;;;;:44;;;;;45769:3;;;;;:::i;:::-;;;;45732:109;;;;45854:8;45847:15;;;;45532:336;;;:::o;48158:80::-;41520:12;:10;:12::i;:::-;41509:23;;:7;:5;:7::i;:::-;:23;;;41501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48224:8:::1;48217:4;:15;;;;48158:80:::0;:::o;46764:499::-;46852:5;46831:26;;:7;:17;46839:8;46831:17;;;;;;;;;;;;;;;;;;;;;:26;;;46823:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;46921:7;:5;:7::i;:::-;46907:21;;:10;:21;;;46903:324;;46950:6;;;;;;;;;;;46949:7;46941:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;47003:9;;;;;;;;;;;46995:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;47078:17;47086:8;47078:7;:17::i;:::-;47064:31;;:10;:31;;;47056:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;47166:4;;47153:9;:17;;47145:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;46903:324;47253:4;47233:7;:17;47241:8;47233:17;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;46764:499;:::o;35486:233::-;35561:7;35597:30;:28;:30::i;:::-;35589:5;:38;35581:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;35694:10;35705:5;35694:17;;;;;;;;:::i;:::-;;;;;;;;;;35687:24;;35486:233;;;:::o;43134:28::-;;;;;;;;;;;;;:::o;48366:98::-;41520:12;:10;:12::i;:::-;41509:23;;:7;:5;:7::i;:::-;:23;;;41501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48447:11:::1;48437:7;:21;;;;;;;;;;;;:::i;:::-;;48366:98:::0;:::o;43070:25::-;;;;;;;;;;;;;:::o;43342:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;22246:239::-;22318:7;22338:13;22354:7;:16;22362:7;22354:16;;;;;;;;;;;;;;;;;;;;;22338:32;;22406:1;22389:19;;:5;:19;;;;22381:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22472:5;22465:12;;;22246:239;;;:::o;21976:208::-;22048:7;22093:1;22076:19;;:5;:19;;;;22068:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;22160:9;:16;22170:5;22160:16;;;;;;;;;;;;;;;;22153:23;;21976:208;;;:::o;41940:94::-;41520:12;:10;:12::i;:::-;41509:23;;:7;:5;:7::i;:::-;:23;;;41501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42005:21:::1;42023:1;42005:9;:21::i;:::-;41940:94::o:0;42838:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;48470:110::-;41520:12;:10;:12::i;:::-;41509:23;;:7;:5;:7::i;:::-;:23;;;41501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48560:14:::1;48547:10;:27;;;;;;;;;;;;:::i;:::-;;48470:110:::0;:::o;47798:130::-;41520:12;:10;:12::i;:::-;41509:23;;:7;:5;:7::i;:::-;:23;;;41501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47863:4:::1;47850:17;;:9;;;;;;;;;;;:17;;;47846:77;;;47883:5;47871:9;;:17;;;;;;;;;;;;;;;;;;47846:77;;;47916:4;47904:9;;:16;;;;;;;;;;;;;;;;;;47846:77;47798:130::o:0;48244:116::-;41520:12;:10;:12::i;:::-;41509:23;;:7;:5;:7::i;:::-;:23;;;41501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48337:17:::1;48321:13;:33;;;;48244:116:::0;:::o;49095:114::-;41520:12;:10;:12::i;:::-;41509:23;;:7;:5;:7::i;:::-;:23;;;41501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49150:4:::1;49140:14;;:6;;;;;;;;;;;:14;;;49136:68;;;49167:5;49158:6;;:14;;;;;;;;;;;;;;;;;;49136:68;;;49197:4;49188:6;;:13;;;;;;;;;;;;;;;;;;49136:68;49095:114::o:0;41289:87::-;41335:7;41362:6;;;;;;;;;;;41355:13;;41289:87;:::o;22721:104::-;22777:13;22810:7;22803:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22721:104;:::o;43167:35::-;;;;;;;;;;;;;:::o;43966:981::-;44047:7;:5;:7::i;:::-;44033:21;;:10;:21;;;44029:85;;44072:6;;;;;;;;;;;44071:7;44063:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;44029:85;44122:14;44139:13;:11;:13::i;:::-;44122:30;;44181:1;44167:11;:15;44159:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;44244:13;;44229:11;:28;;44221:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;44337:9;;44322:11;44313:6;:20;;;;:::i;:::-;:33;;44305:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44400:7;:5;:7::i;:::-;44386:21;;:10;:21;;;44382:416;;44442:4;44423:23;;:15;;;;;;;;;;;:23;;;44420:298;;;44471:25;44485:10;44471:13;:25::i;:::-;44463:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;44539:24;44566:20;:32;44587:10;44566:32;;;;;;;;;;;;;;;;44539:59;;44655:18;;44640:11;44621:16;:30;;;;:::i;:::-;:52;;44613:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;44448:270;44420:298;44756:11;44749:4;;:18;;;;:::i;:::-;44736:9;:31;;44728:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;44382:416;44811:9;44823:1;44811:13;;44806:136;44831:11;44826:1;:16;44806:136;;44858:20;:32;44879:10;44858:32;;;;;;;;;;;;;;;;:34;;;;;;;;;:::i;:::-;;;;;;44901:33;44911:10;44932:1;44923:6;:10;;;;:::i;:::-;44901:9;:33::i;:::-;44844:3;;;;;:::i;:::-;;;;44806:136;;;;44016:931;43966:981;:::o;24404:295::-;24519:12;:10;:12::i;:::-;24507:24;;:8;:24;;;;24499:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;24619:8;24574:18;:32;24593:12;:10;:12::i;:::-;24574:32;;;;;;;;;;;;;;;:42;24607:8;24574:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;24672:8;24643:48;;24658:12;:10;:12::i;:::-;24643:48;;;24682:8;24643:48;;;;;;:::i;:::-;;;;;;;;24404:295;;:::o;47635:121::-;41520:12;:10;:12::i;:::-;41509:23;;:7;:5;:7::i;:::-;:23;;;41501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47693:4:::1;47681:16;;:8;;;;;;;;;;;:16;;;47677:74;;;47712:5;47701:8;;:16;;;;;;;;;;;;;;;;;;47677:74;;;47744:4;47733:8;;:15;;;;;;;;;;;;;;;;;;47677:74;47635:121::o:0;25667:328::-;25842:41;25861:12;:10;:12::i;:::-;25875:7;25842:18;:41::i;:::-;25834:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;25948:39;25962:4;25968:2;25972:7;25981:5;25948:13;:39::i;:::-;25667:328;;;;:::o;43240:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;43025:40::-;;;;:::o;42871:37::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;45963:744::-;46037:13;46073:17;46081:8;46073:7;:17::i;:::-;46065:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;46170:5;46158:17;;:8;;;;;;;;;;;:17;;;46154:356;;;46205:14;46198:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46154:356;46267:4;46246:25;;:7;:17;46254:8;46246:17;;;;;;;;;;;;;;;;;;;;;:25;;;46242:268;;;46293:31;46327:13;:11;:13::i;:::-;46293:47;;46392:1;46364:17;46358:31;:35;:140;;;;;;;;;;;;;;;;;46429:17;46448:19;:8;:17;:19::i;:::-;46469:13;46412:71;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;46358:140;46351:147;;;;;46242:268;46518:28;46549:10;:8;:10::i;:::-;46518:41;;46604:1;46579:14;46573:28;:32;:126;;;;;;;;;;;;;;;;;46637:14;46653:19;:8;:17;:19::i;:::-;46674:13;46620:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;46573:126;46566:133;;;45963:744;;;;:::o;48046:104::-;41520:12;:10;:12::i;:::-;41509:23;;:7;:5;:7::i;:::-;:23;;;41501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48138:6:::1;48117:18;:27;;;;48046:104:::0;:::o;42949:32::-;;;;:::o;48712:122::-;41520:12;:10;:12::i;:::-;41509:23;;:7;:5;:7::i;:::-;:23;;;41501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48811:17:::1;48795:13;:33;;;;;;;;;;;;:::i;:::-;;48712:122:::0;:::o;47269:341::-;47350:4;47329:25;;:7;:17;47337:8;47329:17;;;;;;;;;;;;;;;;;;;;;:25;;;47321:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;47409:7;:5;:7::i;:::-;47395:21;;:10;:21;;;47391:182;;47438:6;;;;;;;;;;;47437:7;47429:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;47505:17;47513:8;47505:7;:17::i;:::-;47491:31;;:10;:31;;;47483:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;47391:182;47599:5;47579:7;:17;47587:8;47579:17;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;47269:341;:::o;24770:164::-;24867:4;24891:18;:25;24910:5;24891:25;;;;;;;;;;;;;;;:35;24917:8;24891:35;;;;;;;;;;;;;;;;;;;;;;;;;24884:42;;24770:164;;;;:::o;43100:29::-;;;;;;;;;;;;;:::o;48945:144::-;41520:12;:10;:12::i;:::-;41509:23;;:7;:5;:7::i;:::-;:23;;;41501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49027:20:::1;;49020:27;;;;:::i;:::-;49077:6;;49054:20;:29;;;;;;;:::i;:::-;;48945:144:::0;;:::o;44979:300::-;41520:12;:10;:12::i;:::-;41509:23;;:7;:5;:7::i;:::-;:23;;;41501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;45061:14:::1;45078:13;:11;:13::i;:::-;45061:30;;45120:1;45106:11;:15;45098:24;;;::::0;::::1;;45161:9;;45146:11;45137:6;:20;;;;:::i;:::-;:33;;45129:42;;;::::0;::::1;;45185:9;45197:1;45185:13;;45180:92;45205:11;45200:1;:16;45180:92;;45234:26;45244:3;45258:1;45249:6;:10;;;;:::i;:::-;45234:9;:26::i;:::-;45218:3;;;;;:::i;:::-;;;;45180:92;;;;45054:225;44979:300:::0;;:::o;48586:120::-;41520:12;:10;:12::i;:::-;41509:23;;:7;:5;:7::i;:::-;:23;;;41501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48685:15:::1;48668:14;:32;;;;;;;;;;;;:::i;:::-;;48586:120:::0;:::o;42189:192::-;41520:12;:10;:12::i;:::-;41509:23;;:7;:5;:7::i;:::-;:23;;;41501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42298:1:::1;42278:22;;:8;:22;;;;42270:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;42354:19;42364:8;42354:9;:19::i;:::-;42189:192:::0;:::o;47936:104::-;41520:12;:10;:12::i;:::-;41509:23;;:7;:5;:7::i;:::-;:23;;;41501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48023:11:::1;48007:13;;:27;;;;;;;;;;;;;;;;;;47936:104:::0;:::o;21607:305::-;21709:4;21761:25;21746:40;;;:11;:40;;;;:105;;;;21818:33;21803:48;;;:11;:48;;;;21746:105;:158;;;;21868:36;21892:11;21868:23;:36::i;:::-;21746:158;21726:178;;21607:305;;;:::o;27505:127::-;27570:4;27622:1;27594:30;;:7;:16;27602:7;27594:16;;;;;;;;;;;;;;;;;;;;;:30;;;;27587:37;;27505:127;;;:::o;20081:98::-;20134:7;20161:10;20154:17;;20081:98;:::o;31487:174::-;31589:2;31562:15;:24;31578:7;31562:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;31645:7;31641:2;31607:46;;31616:23;31631:7;31616:14;:23::i;:::-;31607:46;;;;;;;;;;;;31487:174;;:::o;27799:348::-;27892:4;27917:16;27925:7;27917;:16::i;:::-;27909:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27993:13;28009:23;28024:7;28009:14;:23::i;:::-;27993:39;;28062:5;28051:16;;:7;:16;;;:51;;;;28095:7;28071:31;;:20;28083:7;28071:11;:20::i;:::-;:31;;;28051:51;:87;;;;28106:32;28123:5;28130:7;28106:16;:32::i;:::-;28051:87;28043:96;;;27799:348;;;;:::o;30791:578::-;30950:4;30923:31;;:23;30938:7;30923:14;:23::i;:::-;:31;;;30915:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;31033:1;31019:16;;:2;:16;;;;31011:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;31089:39;31110:4;31116:2;31120:7;31089:20;:39::i;:::-;31193:29;31210:1;31214:7;31193:8;:29::i;:::-;31254:1;31235:9;:15;31245:4;31235:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;31283:1;31266:9;:13;31276:2;31266:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;31314:2;31295:7;:16;31303:7;31295:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;31353:7;31349:2;31334:27;;31343:4;31334:27;;;;;;;;;;;;30791:578;;;:::o;42389:173::-;42445:16;42464:6;;;;;;;;;;;42445:25;;42490:8;42481:6;;:17;;;;;;;;;;;;;;;;;;42545:8;42514:40;;42535:8;42514:40;;;;;;;;;;;;42434:128;42389:173;:::o;28489:110::-;28565:26;28575:2;28579:7;28565:26;;;;;;;;;;;;:9;:26::i;:::-;28489:110;;:::o;26877:315::-;27034:28;27044:4;27050:2;27054:7;27034:9;:28::i;:::-;27081:48;27104:4;27110:2;27114:7;27123:5;27081:22;:48::i;:::-;27073:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;26877:315;;;;:::o;43841:99::-;43895:13;43924:10;43917:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43841:99;:::o;7919:723::-;7975:13;8205:1;8196:5;:10;8192:53;;;8223:10;;;;;;;;;;;;;;;;;;;;;8192:53;8255:12;8270:5;8255:20;;8286:14;8311:78;8326:1;8318:4;:9;8311:78;;8344:8;;;;;:::i;:::-;;;;8375:2;8367:10;;;;;:::i;:::-;;;8311:78;;;8399:19;8431:6;8421:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8399:39;;8449:154;8465:1;8456:5;:10;8449:154;;8493:1;8483:11;;;;;:::i;:::-;;;8560:2;8552:5;:10;;;;:::i;:::-;8539:2;:24;;;;:::i;:::-;8526:39;;8509:6;8516;8509:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;8589:2;8580:11;;;;;:::i;:::-;;;8449:154;;;8627:6;8613:21;;;;;7919:723;;;;:::o;43733:102::-;43793:13;43822:7;43815:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43733:102;:::o;7444:157::-;7529:4;7568:25;7553:40;;;:11;:40;;;;7546:47;;7444:157;;;:::o;36332:589::-;36476:45;36503:4;36509:2;36513:7;36476:26;:45::i;:::-;36554:1;36538:18;;:4;:18;;;36534:187;;;36573:40;36605:7;36573:31;:40::i;:::-;36534:187;;;36643:2;36635:10;;:4;:10;;;36631:90;;36662:47;36695:4;36701:7;36662:32;:47::i;:::-;36631:90;36534:187;36749:1;36735:16;;:2;:16;;;36731:183;;;36768:45;36805:7;36768:36;:45::i;:::-;36731:183;;;36841:4;36835:10;;:2;:10;;;36831:83;;36862:40;36890:2;36894:7;36862:27;:40::i;:::-;36831:83;36731:183;36332:589;;;:::o;28826:321::-;28956:18;28962:2;28966:7;28956:5;:18::i;:::-;29007:54;29038:1;29042:2;29046:7;29055:5;29007:22;:54::i;:::-;28985:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;28826:321;;;:::o;32226:799::-;32381:4;32402:15;:2;:13;;;:15::i;:::-;32398:620;;;32454:2;32438:36;;;32475:12;:10;:12::i;:::-;32489:4;32495:7;32504:5;32438:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;32434:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32697:1;32680:6;:13;:18;32676:272;;;32723:60;;;;;;;;;;:::i;:::-;;;;;;;;32676:272;32898:6;32892:13;32883:6;32879:2;32875:15;32868:38;32434:529;32571:41;;;32561:51;;;:6;:51;;;;32554:58;;;;;32398:620;33002:4;32995:11;;32226:799;;;;;;;:::o;33597:126::-;;;;:::o;37644:164::-;37748:10;:17;;;;37721:15;:24;37737:7;37721:24;;;;;;;;;;;:44;;;;37776:10;37792:7;37776:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37644:164;:::o;38435:988::-;38701:22;38751:1;38726:22;38743:4;38726:16;:22::i;:::-;:26;;;;:::i;:::-;38701:51;;38763:18;38784:17;:26;38802:7;38784:26;;;;;;;;;;;;38763:47;;38931:14;38917:10;:28;38913:328;;38962:19;38984:12;:18;38997:4;38984:18;;;;;;;;;;;;;;;:34;39003:14;38984:34;;;;;;;;;;;;38962:56;;39068:11;39035:12;:18;39048:4;39035:18;;;;;;;;;;;;;;;:30;39054:10;39035:30;;;;;;;;;;;:44;;;;39185:10;39152:17;:30;39170:11;39152:30;;;;;;;;;;;:43;;;;38947:294;38913:328;39337:17;:26;39355:7;39337:26;;;;;;;;;;;39330:33;;;39381:12;:18;39394:4;39381:18;;;;;;;;;;;;;;;:34;39400:14;39381:34;;;;;;;;;;;39374:41;;;38516:907;;38435:988;;:::o;39718:1079::-;39971:22;40016:1;39996:10;:17;;;;:21;;;;:::i;:::-;39971:46;;40028:18;40049:15;:24;40065:7;40049:24;;;;;;;;;;;;40028:45;;40400:19;40422:10;40433:14;40422:26;;;;;;;;:::i;:::-;;;;;;;;;;40400:48;;40486:11;40461:10;40472;40461:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;40597:10;40566:15;:28;40582:11;40566:28;;;;;;;;;;;:41;;;;40738:15;:24;40754:7;40738:24;;;;;;;;;;;40731:31;;;40773:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;39789:1008;;;39718:1079;:::o;37222:221::-;37307:14;37324:20;37341:2;37324:16;:20::i;:::-;37307:37;;37382:7;37355:12;:16;37368:2;37355:16;;;;;;;;;;;;;;;:24;37372:6;37355:24;;;;;;;;;;;:34;;;;37429:6;37400:17;:26;37418:7;37400:26;;;;;;;;;;;:35;;;;37296:147;37222:221;;:::o;29483:382::-;29577:1;29563:16;;:2;:16;;;;29555:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;29636:16;29644:7;29636;:16::i;:::-;29635:17;29627:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;29698:45;29727:1;29731:2;29735:7;29698:20;:45::i;:::-;29773:1;29756:9;:13;29766:2;29756:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;29804:2;29785:7;:16;29793:7;29785:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;29849:7;29845:2;29824:33;;29841:1;29824:33;;;;;;;;;;;;29483:382;;:::o;10442:387::-;10502:4;10710:12;10777:7;10765:20;10757:28;;10820:1;10813:4;:8;10806:15;;;10442:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;1003:568::-;1076:8;1086:6;1136:3;1129:4;1121:6;1117:17;1113:27;1103:122;;1144:79;;:::i;:::-;1103:122;1257:6;1244:20;1234:30;;1287:18;1279:6;1276:30;1273:117;;;1309:79;;:::i;:::-;1273:117;1423:4;1415:6;1411:17;1399:29;;1477:3;1469:4;1461:6;1457:17;1447:8;1443:32;1440:41;1437:128;;;1484:79;;:::i;:::-;1437:128;1003:568;;;;;:::o;1577:133::-;1620:5;1658:6;1645:20;1636:29;;1674:30;1698:5;1674:30;:::i;:::-;1577:133;;;;:::o;1716:137::-;1761:5;1799:6;1786:20;1777:29;;1815:32;1841:5;1815:32;:::i;:::-;1716:137;;;;:::o;1859:141::-;1915:5;1946:6;1940:13;1931:22;;1962:32;1988:5;1962:32;:::i;:::-;1859:141;;;;:::o;2019:338::-;2074:5;2123:3;2116:4;2108:6;2104:17;2100:27;2090:122;;2131:79;;:::i;:::-;2090:122;2248:6;2235:20;2273:78;2347:3;2339:6;2332:4;2324:6;2320:17;2273:78;:::i;:::-;2264:87;;2080:277;2019:338;;;;:::o;2377:340::-;2433:5;2482:3;2475:4;2467:6;2463:17;2459:27;2449:122;;2490:79;;:::i;:::-;2449:122;2607:6;2594:20;2632:79;2707:3;2699:6;2692:4;2684:6;2680:17;2632:79;:::i;:::-;2623:88;;2439:278;2377:340;;;;:::o;2723:139::-;2769:5;2807:6;2794:20;2785:29;;2823:33;2850:5;2823:33;:::i;:::-;2723:139;;;;:::o;2868:329::-;2927:6;2976:2;2964:9;2955:7;2951:23;2947:32;2944:119;;;2982:79;;:::i;:::-;2944:119;3102:1;3127:53;3172:7;3163:6;3152:9;3148:22;3127:53;:::i;:::-;3117:63;;3073:117;2868:329;;;;:::o;3203:474::-;3271:6;3279;3328:2;3316:9;3307:7;3303:23;3299:32;3296:119;;;3334:79;;:::i;:::-;3296:119;3454:1;3479:53;3524:7;3515:6;3504:9;3500:22;3479:53;:::i;:::-;3469:63;;3425:117;3581:2;3607:53;3652:7;3643:6;3632:9;3628:22;3607:53;:::i;:::-;3597:63;;3552:118;3203:474;;;;;:::o;3683:619::-;3760:6;3768;3776;3825:2;3813:9;3804:7;3800:23;3796:32;3793:119;;;3831:79;;:::i;:::-;3793:119;3951:1;3976:53;4021:7;4012:6;4001:9;3997:22;3976:53;:::i;:::-;3966:63;;3922:117;4078:2;4104:53;4149:7;4140:6;4129:9;4125:22;4104:53;:::i;:::-;4094:63;;4049:118;4206:2;4232:53;4277:7;4268:6;4257:9;4253:22;4232:53;:::i;:::-;4222:63;;4177:118;3683:619;;;;;:::o;4308:943::-;4403:6;4411;4419;4427;4476:3;4464:9;4455:7;4451:23;4447:33;4444:120;;;4483:79;;:::i;:::-;4444:120;4603:1;4628:53;4673:7;4664:6;4653:9;4649:22;4628:53;:::i;:::-;4618:63;;4574:117;4730:2;4756:53;4801:7;4792:6;4781:9;4777:22;4756:53;:::i;:::-;4746:63;;4701:118;4858:2;4884:53;4929:7;4920:6;4909:9;4905:22;4884:53;:::i;:::-;4874:63;;4829:118;5014:2;5003:9;4999:18;4986:32;5045:18;5037:6;5034:30;5031:117;;;5067:79;;:::i;:::-;5031:117;5172:62;5226:7;5217:6;5206:9;5202:22;5172:62;:::i;:::-;5162:72;;4957:287;4308:943;;;;;;;:::o;5257:468::-;5322:6;5330;5379:2;5367:9;5358:7;5354:23;5350:32;5347:119;;;5385:79;;:::i;:::-;5347:119;5505:1;5530:53;5575:7;5566:6;5555:9;5551:22;5530:53;:::i;:::-;5520:63;;5476:117;5632:2;5658:50;5700:7;5691:6;5680:9;5676:22;5658:50;:::i;:::-;5648:60;;5603:115;5257:468;;;;;:::o;5731:474::-;5799:6;5807;5856:2;5844:9;5835:7;5831:23;5827:32;5824:119;;;5862:79;;:::i;:::-;5824:119;5982:1;6007:53;6052:7;6043:6;6032:9;6028:22;6007:53;:::i;:::-;5997:63;;5953:117;6109:2;6135:53;6180:7;6171:6;6160:9;6156:22;6135:53;:::i;:::-;6125:63;;6080:118;5731:474;;;;;:::o;6211:559::-;6297:6;6305;6354:2;6342:9;6333:7;6329:23;6325:32;6322:119;;;6360:79;;:::i;:::-;6322:119;6508:1;6497:9;6493:17;6480:31;6538:18;6530:6;6527:30;6524:117;;;6560:79;;:::i;:::-;6524:117;6673:80;6745:7;6736:6;6725:9;6721:22;6673:80;:::i;:::-;6655:98;;;;6451:312;6211:559;;;;;:::o;6776:323::-;6832:6;6881:2;6869:9;6860:7;6856:23;6852:32;6849:119;;;6887:79;;:::i;:::-;6849:119;7007:1;7032:50;7074:7;7065:6;7054:9;7050:22;7032:50;:::i;:::-;7022:60;;6978:114;6776:323;;;;:::o;7105:327::-;7163:6;7212:2;7200:9;7191:7;7187:23;7183:32;7180:119;;;7218:79;;:::i;:::-;7180:119;7338:1;7363:52;7407:7;7398:6;7387:9;7383:22;7363:52;:::i;:::-;7353:62;;7309:116;7105:327;;;;:::o;7438:349::-;7507:6;7556:2;7544:9;7535:7;7531:23;7527:32;7524:119;;;7562:79;;:::i;:::-;7524:119;7682:1;7707:63;7762:7;7753:6;7742:9;7738:22;7707:63;:::i;:::-;7697:73;;7653:127;7438:349;;;;:::o;7793:509::-;7862:6;7911:2;7899:9;7890:7;7886:23;7882:32;7879:119;;;7917:79;;:::i;:::-;7879:119;8065:1;8054:9;8050:17;8037:31;8095:18;8087:6;8084:30;8081:117;;;8117:79;;:::i;:::-;8081:117;8222:63;8277:7;8268:6;8257:9;8253:22;8222:63;:::i;:::-;8212:73;;8008:287;7793:509;;;;:::o;8308:329::-;8367:6;8416:2;8404:9;8395:7;8391:23;8387:32;8384:119;;;8422:79;;:::i;:::-;8384:119;8542:1;8567:53;8612:7;8603:6;8592:9;8588:22;8567:53;:::i;:::-;8557:63;;8513:117;8308:329;;;;:::o;8643:179::-;8712:10;8733:46;8775:3;8767:6;8733:46;:::i;:::-;8811:4;8806:3;8802:14;8788:28;;8643:179;;;;:::o;8828:118::-;8915:24;8933:5;8915:24;:::i;:::-;8910:3;8903:37;8828:118;;:::o;8982:732::-;9101:3;9130:54;9178:5;9130:54;:::i;:::-;9200:86;9279:6;9274:3;9200:86;:::i;:::-;9193:93;;9310:56;9360:5;9310:56;:::i;:::-;9389:7;9420:1;9405:284;9430:6;9427:1;9424:13;9405:284;;;9506:6;9500:13;9533:63;9592:3;9577:13;9533:63;:::i;:::-;9526:70;;9619:60;9672:6;9619:60;:::i;:::-;9609:70;;9465:224;9452:1;9449;9445:9;9440:14;;9405:284;;;9409:14;9705:3;9698:10;;9106:608;;;8982:732;;;;:::o;9720:109::-;9801:21;9816:5;9801:21;:::i;:::-;9796:3;9789:34;9720:109;;:::o;9835:360::-;9921:3;9949:38;9981:5;9949:38;:::i;:::-;10003:70;10066:6;10061:3;10003:70;:::i;:::-;9996:77;;10082:52;10127:6;10122:3;10115:4;10108:5;10104:16;10082:52;:::i;:::-;10159:29;10181:6;10159:29;:::i;:::-;10154:3;10150:39;10143:46;;9925:270;9835:360;;;;:::o;10201:364::-;10289:3;10317:39;10350:5;10317:39;:::i;:::-;10372:71;10436:6;10431:3;10372:71;:::i;:::-;10365:78;;10452:52;10497:6;10492:3;10485:4;10478:5;10474:16;10452:52;:::i;:::-;10529:29;10551:6;10529:29;:::i;:::-;10524:3;10520:39;10513:46;;10293:272;10201:364;;;;:::o;10571:377::-;10677:3;10705:39;10738:5;10705:39;:::i;:::-;10760:89;10842:6;10837:3;10760:89;:::i;:::-;10753:96;;10858:52;10903:6;10898:3;10891:4;10884:5;10880:16;10858:52;:::i;:::-;10935:6;10930:3;10926:16;10919:23;;10681:267;10571:377;;;;:::o;10978:845::-;11081:3;11118:5;11112:12;11147:36;11173:9;11147:36;:::i;:::-;11199:89;11281:6;11276:3;11199:89;:::i;:::-;11192:96;;11319:1;11308:9;11304:17;11335:1;11330:137;;;;11481:1;11476:341;;;;11297:520;;11330:137;11414:4;11410:9;11399;11395:25;11390:3;11383:38;11450:6;11445:3;11441:16;11434:23;;11330:137;;11476:341;11543:38;11575:5;11543:38;:::i;:::-;11603:1;11617:154;11631:6;11628:1;11625:13;11617:154;;;11705:7;11699:14;11695:1;11690:3;11686:11;11679:35;11755:1;11746:7;11742:15;11731:26;;11653:4;11650:1;11646:12;11641:17;;11617:154;;;11800:6;11795:3;11791:16;11784:23;;11483:334;;11297:520;;11085:738;;10978:845;;;;:::o;11829:366::-;11971:3;11992:67;12056:2;12051:3;11992:67;:::i;:::-;11985:74;;12068:93;12157:3;12068:93;:::i;:::-;12186:2;12181:3;12177:12;12170:19;;11829:366;;;:::o;12201:::-;12343:3;12364:67;12428:2;12423:3;12364:67;:::i;:::-;12357:74;;12440:93;12529:3;12440:93;:::i;:::-;12558:2;12553:3;12549:12;12542:19;;12201:366;;;:::o;12573:::-;12715:3;12736:67;12800:2;12795:3;12736:67;:::i;:::-;12729:74;;12812:93;12901:3;12812:93;:::i;:::-;12930:2;12925:3;12921:12;12914:19;;12573:366;;;:::o;12945:::-;13087:3;13108:67;13172:2;13167:3;13108:67;:::i;:::-;13101:74;;13184:93;13273:3;13184:93;:::i;:::-;13302:2;13297:3;13293:12;13286:19;;12945:366;;;:::o;13317:::-;13459:3;13480:67;13544:2;13539:3;13480:67;:::i;:::-;13473:74;;13556:93;13645:3;13556:93;:::i;:::-;13674:2;13669:3;13665:12;13658:19;;13317:366;;;:::o;13689:::-;13831:3;13852:67;13916:2;13911:3;13852:67;:::i;:::-;13845:74;;13928:93;14017:3;13928:93;:::i;:::-;14046:2;14041:3;14037:12;14030:19;;13689:366;;;:::o;14061:::-;14203:3;14224:67;14288:2;14283:3;14224:67;:::i;:::-;14217:74;;14300:93;14389:3;14300:93;:::i;:::-;14418:2;14413:3;14409:12;14402:19;;14061:366;;;:::o;14433:::-;14575:3;14596:67;14660:2;14655:3;14596:67;:::i;:::-;14589:74;;14672:93;14761:3;14672:93;:::i;:::-;14790:2;14785:3;14781:12;14774:19;;14433:366;;;:::o;14805:::-;14947:3;14968:67;15032:2;15027:3;14968:67;:::i;:::-;14961:74;;15044:93;15133:3;15044:93;:::i;:::-;15162:2;15157:3;15153:12;15146:19;;14805:366;;;:::o;15177:::-;15319:3;15340:67;15404:2;15399:3;15340:67;:::i;:::-;15333:74;;15416:93;15505:3;15416:93;:::i;:::-;15534:2;15529:3;15525:12;15518:19;;15177:366;;;:::o;15549:::-;15691:3;15712:67;15776:2;15771:3;15712:67;:::i;:::-;15705:74;;15788:93;15877:3;15788:93;:::i;:::-;15906:2;15901:3;15897:12;15890:19;;15549:366;;;:::o;15921:::-;16063:3;16084:67;16148:2;16143:3;16084:67;:::i;:::-;16077:74;;16160:93;16249:3;16160:93;:::i;:::-;16278:2;16273:3;16269:12;16262:19;;15921:366;;;:::o;16293:::-;16435:3;16456:67;16520:2;16515:3;16456:67;:::i;:::-;16449:74;;16532:93;16621:3;16532:93;:::i;:::-;16650:2;16645:3;16641:12;16634:19;;16293:366;;;:::o;16665:::-;16807:3;16828:67;16892:2;16887:3;16828:67;:::i;:::-;16821:74;;16904:93;16993:3;16904:93;:::i;:::-;17022:2;17017:3;17013:12;17006:19;;16665:366;;;:::o;17037:::-;17179:3;17200:67;17264:2;17259:3;17200:67;:::i;:::-;17193:74;;17276:93;17365:3;17276:93;:::i;:::-;17394:2;17389:3;17385:12;17378:19;;17037:366;;;:::o;17409:::-;17551:3;17572:67;17636:2;17631:3;17572:67;:::i;:::-;17565:74;;17648:93;17737:3;17648:93;:::i;:::-;17766:2;17761:3;17757:12;17750:19;;17409:366;;;:::o;17781:::-;17923:3;17944:67;18008:2;18003:3;17944:67;:::i;:::-;17937:74;;18020:93;18109:3;18020:93;:::i;:::-;18138:2;18133:3;18129:12;18122:19;;17781:366;;;:::o;18153:::-;18295:3;18316:67;18380:2;18375:3;18316:67;:::i;:::-;18309:74;;18392:93;18481:3;18392:93;:::i;:::-;18510:2;18505:3;18501:12;18494:19;;18153:366;;;:::o;18525:::-;18667:3;18688:67;18752:2;18747:3;18688:67;:::i;:::-;18681:74;;18764:93;18853:3;18764:93;:::i;:::-;18882:2;18877:3;18873:12;18866:19;;18525:366;;;:::o;18897:::-;19039:3;19060:67;19124:2;19119:3;19060:67;:::i;:::-;19053:74;;19136:93;19225:3;19136:93;:::i;:::-;19254:2;19249:3;19245:12;19238:19;;18897:366;;;:::o;19269:::-;19411:3;19432:67;19496:2;19491:3;19432:67;:::i;:::-;19425:74;;19508:93;19597:3;19508:93;:::i;:::-;19626:2;19621:3;19617:12;19610:19;;19269:366;;;:::o;19641:::-;19783:3;19804:67;19868:2;19863:3;19804:67;:::i;:::-;19797:74;;19880:93;19969:3;19880:93;:::i;:::-;19998:2;19993:3;19989:12;19982:19;;19641:366;;;:::o;20013:::-;20155:3;20176:67;20240:2;20235:3;20176:67;:::i;:::-;20169:74;;20252:93;20341:3;20252:93;:::i;:::-;20370:2;20365:3;20361:12;20354:19;;20013:366;;;:::o;20385:::-;20527:3;20548:67;20612:2;20607:3;20548:67;:::i;:::-;20541:74;;20624:93;20713:3;20624:93;:::i;:::-;20742:2;20737:3;20733:12;20726:19;;20385:366;;;:::o;20757:::-;20899:3;20920:67;20984:2;20979:3;20920:67;:::i;:::-;20913:74;;20996:93;21085:3;20996:93;:::i;:::-;21114:2;21109:3;21105:12;21098:19;;20757:366;;;:::o;21129:398::-;21288:3;21309:83;21390:1;21385:3;21309:83;:::i;:::-;21302:90;;21401:93;21490:3;21401:93;:::i;:::-;21519:1;21514:3;21510:11;21503:18;;21129:398;;;:::o;21533:366::-;21675:3;21696:67;21760:2;21755:3;21696:67;:::i;:::-;21689:74;;21772:93;21861:3;21772:93;:::i;:::-;21890:2;21885:3;21881:12;21874:19;;21533:366;;;:::o;21905:::-;22047:3;22068:67;22132:2;22127:3;22068:67;:::i;:::-;22061:74;;22144:93;22233:3;22144:93;:::i;:::-;22262:2;22257:3;22253:12;22246:19;;21905:366;;;:::o;22277:::-;22419:3;22440:67;22504:2;22499:3;22440:67;:::i;:::-;22433:74;;22516:93;22605:3;22516:93;:::i;:::-;22634:2;22629:3;22625:12;22618:19;;22277:366;;;:::o;22649:::-;22791:3;22812:67;22876:2;22871:3;22812:67;:::i;:::-;22805:74;;22888:93;22977:3;22888:93;:::i;:::-;23006:2;23001:3;22997:12;22990:19;;22649:366;;;:::o;23021:::-;23163:3;23184:67;23248:2;23243:3;23184:67;:::i;:::-;23177:74;;23260:93;23349:3;23260:93;:::i;:::-;23378:2;23373:3;23369:12;23362:19;;23021:366;;;:::o;23393:108::-;23470:24;23488:5;23470:24;:::i;:::-;23465:3;23458:37;23393:108;;:::o;23507:118::-;23594:24;23612:5;23594:24;:::i;:::-;23589:3;23582:37;23507:118;;:::o;23631:589::-;23856:3;23878:95;23969:3;23960:6;23878:95;:::i;:::-;23871:102;;23990:95;24081:3;24072:6;23990:95;:::i;:::-;23983:102;;24102:92;24190:3;24181:6;24102:92;:::i;:::-;24095:99;;24211:3;24204:10;;23631:589;;;;;;:::o;24226:379::-;24410:3;24432:147;24575:3;24432:147;:::i;:::-;24425:154;;24596:3;24589:10;;24226:379;;;:::o;24611:222::-;24704:4;24742:2;24731:9;24727:18;24719:26;;24755:71;24823:1;24812:9;24808:17;24799:6;24755:71;:::i;:::-;24611:222;;;;:::o;24839:640::-;25034:4;25072:3;25061:9;25057:19;25049:27;;25086:71;25154:1;25143:9;25139:17;25130:6;25086:71;:::i;:::-;25167:72;25235:2;25224:9;25220:18;25211:6;25167:72;:::i;:::-;25249;25317:2;25306:9;25302:18;25293:6;25249:72;:::i;:::-;25368:9;25362:4;25358:20;25353:2;25342:9;25338:18;25331:48;25396:76;25467:4;25458:6;25396:76;:::i;:::-;25388:84;;24839:640;;;;;;;:::o;25485:373::-;25628:4;25666:2;25655:9;25651:18;25643:26;;25715:9;25709:4;25705:20;25701:1;25690:9;25686:17;25679:47;25743:108;25846:4;25837:6;25743:108;:::i;:::-;25735:116;;25485:373;;;;:::o;25864:210::-;25951:4;25989:2;25978:9;25974:18;25966:26;;26002:65;26064:1;26053:9;26049:17;26040:6;26002:65;:::i;:::-;25864:210;;;;:::o;26080:313::-;26193:4;26231:2;26220:9;26216:18;26208:26;;26280:9;26274:4;26270:20;26266:1;26255:9;26251:17;26244:47;26308:78;26381:4;26372:6;26308:78;:::i;:::-;26300:86;;26080:313;;;;:::o;26399:419::-;26565:4;26603:2;26592:9;26588:18;26580:26;;26652:9;26646:4;26642:20;26638:1;26627:9;26623:17;26616:47;26680:131;26806:4;26680:131;:::i;:::-;26672:139;;26399:419;;;:::o;26824:::-;26990:4;27028:2;27017:9;27013:18;27005:26;;27077:9;27071:4;27067:20;27063:1;27052:9;27048:17;27041:47;27105:131;27231:4;27105:131;:::i;:::-;27097:139;;26824:419;;;:::o;27249:::-;27415:4;27453:2;27442:9;27438:18;27430:26;;27502:9;27496:4;27492:20;27488:1;27477:9;27473:17;27466:47;27530:131;27656:4;27530:131;:::i;:::-;27522:139;;27249:419;;;:::o;27674:::-;27840:4;27878:2;27867:9;27863:18;27855:26;;27927:9;27921:4;27917:20;27913:1;27902:9;27898:17;27891:47;27955:131;28081:4;27955:131;:::i;:::-;27947:139;;27674:419;;;:::o;28099:::-;28265:4;28303:2;28292:9;28288:18;28280:26;;28352:9;28346:4;28342:20;28338:1;28327:9;28323:17;28316:47;28380:131;28506:4;28380:131;:::i;:::-;28372:139;;28099:419;;;:::o;28524:::-;28690:4;28728:2;28717:9;28713:18;28705:26;;28777:9;28771:4;28767:20;28763:1;28752:9;28748:17;28741:47;28805:131;28931:4;28805:131;:::i;:::-;28797:139;;28524:419;;;:::o;28949:::-;29115:4;29153:2;29142:9;29138:18;29130:26;;29202:9;29196:4;29192:20;29188:1;29177:9;29173:17;29166:47;29230:131;29356:4;29230:131;:::i;:::-;29222:139;;28949:419;;;:::o;29374:::-;29540:4;29578:2;29567:9;29563:18;29555:26;;29627:9;29621:4;29617:20;29613:1;29602:9;29598:17;29591:47;29655:131;29781:4;29655:131;:::i;:::-;29647:139;;29374:419;;;:::o;29799:::-;29965:4;30003:2;29992:9;29988:18;29980:26;;30052:9;30046:4;30042:20;30038:1;30027:9;30023:17;30016:47;30080:131;30206:4;30080:131;:::i;:::-;30072:139;;29799:419;;;:::o;30224:::-;30390:4;30428:2;30417:9;30413:18;30405:26;;30477:9;30471:4;30467:20;30463:1;30452:9;30448:17;30441:47;30505:131;30631:4;30505:131;:::i;:::-;30497:139;;30224:419;;;:::o;30649:::-;30815:4;30853:2;30842:9;30838:18;30830:26;;30902:9;30896:4;30892:20;30888:1;30877:9;30873:17;30866:47;30930:131;31056:4;30930:131;:::i;:::-;30922:139;;30649:419;;;:::o;31074:::-;31240:4;31278:2;31267:9;31263:18;31255:26;;31327:9;31321:4;31317:20;31313:1;31302:9;31298:17;31291:47;31355:131;31481:4;31355:131;:::i;:::-;31347:139;;31074:419;;;:::o;31499:::-;31665:4;31703:2;31692:9;31688:18;31680:26;;31752:9;31746:4;31742:20;31738:1;31727:9;31723:17;31716:47;31780:131;31906:4;31780:131;:::i;:::-;31772:139;;31499:419;;;:::o;31924:::-;32090:4;32128:2;32117:9;32113:18;32105:26;;32177:9;32171:4;32167:20;32163:1;32152:9;32148:17;32141:47;32205:131;32331:4;32205:131;:::i;:::-;32197:139;;31924:419;;;:::o;32349:::-;32515:4;32553:2;32542:9;32538:18;32530:26;;32602:9;32596:4;32592:20;32588:1;32577:9;32573:17;32566:47;32630:131;32756:4;32630:131;:::i;:::-;32622:139;;32349:419;;;:::o;32774:::-;32940:4;32978:2;32967:9;32963:18;32955:26;;33027:9;33021:4;33017:20;33013:1;33002:9;32998:17;32991:47;33055:131;33181:4;33055:131;:::i;:::-;33047:139;;32774:419;;;:::o;33199:::-;33365:4;33403:2;33392:9;33388:18;33380:26;;33452:9;33446:4;33442:20;33438:1;33427:9;33423:17;33416:47;33480:131;33606:4;33480:131;:::i;:::-;33472:139;;33199:419;;;:::o;33624:::-;33790:4;33828:2;33817:9;33813:18;33805:26;;33877:9;33871:4;33867:20;33863:1;33852:9;33848:17;33841:47;33905:131;34031:4;33905:131;:::i;:::-;33897:139;;33624:419;;;:::o;34049:::-;34215:4;34253:2;34242:9;34238:18;34230:26;;34302:9;34296:4;34292:20;34288:1;34277:9;34273:17;34266:47;34330:131;34456:4;34330:131;:::i;:::-;34322:139;;34049:419;;;:::o;34474:::-;34640:4;34678:2;34667:9;34663:18;34655:26;;34727:9;34721:4;34717:20;34713:1;34702:9;34698:17;34691:47;34755:131;34881:4;34755:131;:::i;:::-;34747:139;;34474:419;;;:::o;34899:::-;35065:4;35103:2;35092:9;35088:18;35080:26;;35152:9;35146:4;35142:20;35138:1;35127:9;35123:17;35116:47;35180:131;35306:4;35180:131;:::i;:::-;35172:139;;34899:419;;;:::o;35324:::-;35490:4;35528:2;35517:9;35513:18;35505:26;;35577:9;35571:4;35567:20;35563:1;35552:9;35548:17;35541:47;35605:131;35731:4;35605:131;:::i;:::-;35597:139;;35324:419;;;:::o;35749:::-;35915:4;35953:2;35942:9;35938:18;35930:26;;36002:9;35996:4;35992:20;35988:1;35977:9;35973:17;35966:47;36030:131;36156:4;36030:131;:::i;:::-;36022:139;;35749:419;;;:::o;36174:::-;36340:4;36378:2;36367:9;36363:18;36355:26;;36427:9;36421:4;36417:20;36413:1;36402:9;36398:17;36391:47;36455:131;36581:4;36455:131;:::i;:::-;36447:139;;36174:419;;;:::o;36599:::-;36765:4;36803:2;36792:9;36788:18;36780:26;;36852:9;36846:4;36842:20;36838:1;36827:9;36823:17;36816:47;36880:131;37006:4;36880:131;:::i;:::-;36872:139;;36599:419;;;:::o;37024:::-;37190:4;37228:2;37217:9;37213:18;37205:26;;37277:9;37271:4;37267:20;37263:1;37252:9;37248:17;37241:47;37305:131;37431:4;37305:131;:::i;:::-;37297:139;;37024:419;;;:::o;37449:::-;37615:4;37653:2;37642:9;37638:18;37630:26;;37702:9;37696:4;37692:20;37688:1;37677:9;37673:17;37666:47;37730:131;37856:4;37730:131;:::i;:::-;37722:139;;37449:419;;;:::o;37874:::-;38040:4;38078:2;38067:9;38063:18;38055:26;;38127:9;38121:4;38117:20;38113:1;38102:9;38098:17;38091:47;38155:131;38281:4;38155:131;:::i;:::-;38147:139;;37874:419;;;:::o;38299:::-;38465:4;38503:2;38492:9;38488:18;38480:26;;38552:9;38546:4;38542:20;38538:1;38527:9;38523:17;38516:47;38580:131;38706:4;38580:131;:::i;:::-;38572:139;;38299:419;;;:::o;38724:::-;38890:4;38928:2;38917:9;38913:18;38905:26;;38977:9;38971:4;38967:20;38963:1;38952:9;38948:17;38941:47;39005:131;39131:4;39005:131;:::i;:::-;38997:139;;38724:419;;;:::o;39149:222::-;39242:4;39280:2;39269:9;39265:18;39257:26;;39293:71;39361:1;39350:9;39346:17;39337:6;39293:71;:::i;:::-;39149:222;;;;:::o;39377:129::-;39411:6;39438:20;;:::i;:::-;39428:30;;39467:33;39495:4;39487:6;39467:33;:::i;:::-;39377:129;;;:::o;39512:75::-;39545:6;39578:2;39572:9;39562:19;;39512:75;:::o;39593:307::-;39654:4;39744:18;39736:6;39733:30;39730:56;;;39766:18;;:::i;:::-;39730:56;39804:29;39826:6;39804:29;:::i;:::-;39796:37;;39888:4;39882;39878:15;39870:23;;39593:307;;;:::o;39906:308::-;39968:4;40058:18;40050:6;40047:30;40044:56;;;40080:18;;:::i;:::-;40044:56;40118:29;40140:6;40118:29;:::i;:::-;40110:37;;40202:4;40196;40192:15;40184:23;;39906:308;;;:::o;40220:132::-;40287:4;40310:3;40302:11;;40340:4;40335:3;40331:14;40323:22;;40220:132;;;:::o;40358:141::-;40407:4;40430:3;40422:11;;40453:3;40450:1;40443:14;40487:4;40484:1;40474:18;40466:26;;40358:141;;;:::o;40505:114::-;40572:6;40606:5;40600:12;40590:22;;40505:114;;;:::o;40625:98::-;40676:6;40710:5;40704:12;40694:22;;40625:98;;;:::o;40729:99::-;40781:6;40815:5;40809:12;40799:22;;40729:99;;;:::o;40834:113::-;40904:4;40936;40931:3;40927:14;40919:22;;40834:113;;;:::o;40953:184::-;41052:11;41086:6;41081:3;41074:19;41126:4;41121:3;41117:14;41102:29;;40953:184;;;;:::o;41143:168::-;41226:11;41260:6;41255:3;41248:19;41300:4;41295:3;41291:14;41276:29;;41143:168;;;;:::o;41317:147::-;41418:11;41455:3;41440:18;;41317:147;;;;:::o;41470:169::-;41554:11;41588:6;41583:3;41576:19;41628:4;41623:3;41619:14;41604:29;;41470:169;;;;:::o;41645:148::-;41747:11;41784:3;41769:18;;41645:148;;;;:::o;41799:305::-;41839:3;41858:20;41876:1;41858:20;:::i;:::-;41853:25;;41892:20;41910:1;41892:20;:::i;:::-;41887:25;;42046:1;41978:66;41974:74;41971:1;41968:81;41965:107;;;42052:18;;:::i;:::-;41965:107;42096:1;42093;42089:9;42082:16;;41799:305;;;;:::o;42110:185::-;42150:1;42167:20;42185:1;42167:20;:::i;:::-;42162:25;;42201:20;42219:1;42201:20;:::i;:::-;42196:25;;42240:1;42230:35;;42245:18;;:::i;:::-;42230:35;42287:1;42284;42280:9;42275:14;;42110:185;;;;:::o;42301:348::-;42341:7;42364:20;42382:1;42364:20;:::i;:::-;42359:25;;42398:20;42416:1;42398:20;:::i;:::-;42393:25;;42586:1;42518:66;42514:74;42511:1;42508:81;42503:1;42496:9;42489:17;42485:105;42482:131;;;42593:18;;:::i;:::-;42482:131;42641:1;42638;42634:9;42623:20;;42301:348;;;;:::o;42655:191::-;42695:4;42715:20;42733:1;42715:20;:::i;:::-;42710:25;;42749:20;42767:1;42749:20;:::i;:::-;42744:25;;42788:1;42785;42782:8;42779:34;;;42793:18;;:::i;:::-;42779:34;42838:1;42835;42831:9;42823:17;;42655:191;;;;:::o;42852:96::-;42889:7;42918:24;42936:5;42918:24;:::i;:::-;42907:35;;42852:96;;;:::o;42954:90::-;42988:7;43031:5;43024:13;43017:21;43006:32;;42954:90;;;:::o;43050:149::-;43086:7;43126:66;43119:5;43115:78;43104:89;;43050:149;;;:::o;43205:126::-;43242:7;43282:42;43275:5;43271:54;43260:65;;43205:126;;;:::o;43337:77::-;43374:7;43403:5;43392:16;;43337:77;;;:::o;43420:154::-;43504:6;43499:3;43494;43481:30;43566:1;43557:6;43552:3;43548:16;43541:27;43420:154;;;:::o;43580:307::-;43648:1;43658:113;43672:6;43669:1;43666:13;43658:113;;;43757:1;43752:3;43748:11;43742:18;43738:1;43733:3;43729:11;43722:39;43694:2;43691:1;43687:10;43682:15;;43658:113;;;43789:6;43786:1;43783:13;43780:101;;;43869:1;43860:6;43855:3;43851:16;43844:27;43780:101;43629:258;43580:307;;;:::o;43893:320::-;43937:6;43974:1;43968:4;43964:12;43954:22;;44021:1;44015:4;44011:12;44042:18;44032:81;;44098:4;44090:6;44086:17;44076:27;;44032:81;44160:2;44152:6;44149:14;44129:18;44126:38;44123:84;;;44179:18;;:::i;:::-;44123:84;43944:269;43893:320;;;:::o;44219:281::-;44302:27;44324:4;44302:27;:::i;:::-;44294:6;44290:40;44432:6;44420:10;44417:22;44396:18;44384:10;44381:34;44378:62;44375:88;;;44443:18;;:::i;:::-;44375:88;44483:10;44479:2;44472:22;44262:238;44219:281;;:::o;44506:233::-;44545:3;44568:24;44586:5;44568:24;:::i;:::-;44559:33;;44614:66;44607:5;44604:77;44601:103;;;44684:18;;:::i;:::-;44601:103;44731:1;44724:5;44720:13;44713:20;;44506:233;;;:::o;44745:176::-;44777:1;44794:20;44812:1;44794:20;:::i;:::-;44789:25;;44828:20;44846:1;44828:20;:::i;:::-;44823:25;;44867:1;44857:35;;44872:18;;:::i;:::-;44857:35;44913:1;44910;44906:9;44901:14;;44745:176;;;;:::o;44927:180::-;44975:77;44972:1;44965:88;45072:4;45069:1;45062:15;45096:4;45093:1;45086:15;45113:180;45161:77;45158:1;45151:88;45258:4;45255:1;45248:15;45282:4;45279:1;45272:15;45299:180;45347:77;45344:1;45337:88;45444:4;45441:1;45434:15;45468:4;45465:1;45458:15;45485:180;45533:77;45530:1;45523:88;45630:4;45627:1;45620:15;45654:4;45651:1;45644:15;45671:180;45719:77;45716:1;45709:88;45816:4;45813:1;45806:15;45840:4;45837:1;45830:15;45857:180;45905:77;45902:1;45895:88;46002:4;45999:1;45992:15;46026:4;46023:1;46016:15;46043:117;46152:1;46149;46142:12;46166:117;46275:1;46272;46265:12;46289:117;46398:1;46395;46388:12;46412:117;46521:1;46518;46511:12;46535:117;46644:1;46641;46634:12;46658:117;46767:1;46764;46757:12;46781:102;46822:6;46873:2;46869:7;46864:2;46857:5;46853:14;46849:28;46839:38;;46781:102;;;:::o;46889:230::-;47029:34;47025:1;47017:6;47013:14;47006:58;47098:13;47093:2;47085:6;47081:15;47074:38;46889:230;:::o;47125:237::-;47265:34;47261:1;47253:6;47249:14;47242:58;47334:20;47329:2;47321:6;47317:15;47310:45;47125:237;:::o;47368:225::-;47508:34;47504:1;47496:6;47492:14;47485:58;47577:8;47572:2;47564:6;47560:15;47553:33;47368:225;:::o;47599:178::-;47739:30;47735:1;47727:6;47723:14;47716:54;47599:178;:::o;47783:::-;47923:30;47919:1;47911:6;47907:14;47900:54;47783:178;:::o;47967:::-;48107:30;48103:1;48095:6;48091:14;48084:54;47967:178;:::o;48151:223::-;48291:34;48287:1;48279:6;48275:14;48268:58;48360:6;48355:2;48347:6;48343:15;48336:31;48151:223;:::o;48380:175::-;48520:27;48516:1;48508:6;48504:14;48497:51;48380:175;:::o;48561:173::-;48701:25;48697:1;48689:6;48685:14;48678:49;48561:173;:::o;48740:231::-;48880:34;48876:1;48868:6;48864:14;48857:58;48949:14;48944:2;48936:6;48932:15;48925:39;48740:231;:::o;48977:178::-;49117:30;49113:1;49105:6;49101:14;49094:54;48977:178;:::o;49161:243::-;49301:34;49297:1;49289:6;49285:14;49278:58;49370:26;49365:2;49357:6;49353:15;49346:51;49161:243;:::o;49410:229::-;49550:34;49546:1;49538:6;49534:14;49527:58;49619:12;49614:2;49606:6;49602:15;49595:37;49410:229;:::o;49645:228::-;49785:34;49781:1;49773:6;49769:14;49762:58;49854:11;49849:2;49841:6;49837:15;49830:36;49645:228;:::o;49879:172::-;50019:24;50015:1;50007:6;50003:14;49996:48;49879:172;:::o;50057:223::-;50197:34;50193:1;50185:6;50181:14;50174:58;50266:6;50261:2;50253:6;50249:15;50242:31;50057:223;:::o;50286:182::-;50426:34;50422:1;50414:6;50410:14;50403:58;50286:182;:::o;50474:173::-;50614:25;50610:1;50602:6;50598:14;50591:49;50474:173;:::o;50653:231::-;50793:34;50789:1;50781:6;50777:14;50770:58;50862:14;50857:2;50849:6;50845:15;50838:39;50653:231;:::o;50890:182::-;51030:34;51026:1;51018:6;51014:14;51007:58;50890:182;:::o;51078:228::-;51218:34;51214:1;51206:6;51202:14;51195:58;51287:11;51282:2;51274:6;51270:15;51263:36;51078:228;:::o;51312:234::-;51452:34;51448:1;51440:6;51436:14;51429:58;51521:17;51516:2;51508:6;51504:15;51497:42;51312:234;:::o;51552:221::-;51692:34;51688:1;51680:6;51676:14;51669:58;51761:4;51756:2;51748:6;51744:15;51737:29;51552:221;:::o;51779:220::-;51919:34;51915:1;51907:6;51903:14;51896:58;51988:3;51983:2;51975:6;51971:15;51964:28;51779:220;:::o;52005:227::-;52145:34;52141:1;52133:6;52129:14;52122:58;52214:10;52209:2;52201:6;52197:15;52190:35;52005:227;:::o;52238:114::-;;:::o;52358:168::-;52498:20;52494:1;52486:6;52482:14;52475:44;52358:168;:::o;52532:236::-;52672:34;52668:1;52660:6;52656:14;52649:58;52741:19;52736:2;52728:6;52724:15;52717:44;52532:236;:::o;52774:231::-;52914:34;52910:1;52902:6;52898:14;52891:58;52983:14;52978:2;52970:6;52966:15;52959:39;52774:231;:::o;53011:173::-;53151:25;53147:1;53139:6;53135:14;53128:49;53011:173;:::o;53190:177::-;53330:29;53326:1;53318:6;53314:14;53307:53;53190:177;:::o;53373:122::-;53446:24;53464:5;53446:24;:::i;:::-;53439:5;53436:35;53426:63;;53485:1;53482;53475:12;53426:63;53373:122;:::o;53501:116::-;53571:21;53586:5;53571:21;:::i;:::-;53564:5;53561:32;53551:60;;53607:1;53604;53597:12;53551:60;53501:116;:::o;53623:120::-;53695:23;53712:5;53695:23;:::i;:::-;53688:5;53685:34;53675:62;;53733:1;53730;53723:12;53675:62;53623:120;:::o;53749:122::-;53822:24;53840:5;53822:24;:::i;:::-;53815:5;53812:35;53802:63;;53861:1;53858;53851:12;53802:63;53749:122;:::o
Swarm Source
ipfs://7d537af0e3ea37695cf772f531436e8f4e26544bf4174470579ffbb6f2c68754
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.