Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 4,260 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Nimrodz | 15026002 | 912 days ago | IN | 0 ETH | 0.00052991 | ||||
Claim Nimrodz | 14941936 | 927 days ago | IN | 0 ETH | 0.00048174 | ||||
Claim Nimrodz | 14941936 | 927 days ago | IN | 0 ETH | 0.00048174 | ||||
Claim Nimrodz | 14941936 | 927 days ago | IN | 0 ETH | 0.00048174 | ||||
Claim Nimrodz | 14940574 | 927 days ago | IN | 0 ETH | 0.00114994 | ||||
Claim Nimrodz | 14936810 | 927 days ago | IN | 0 ETH | 0.0007075 | ||||
Claim Nimrodz | 14936808 | 927 days ago | IN | 0 ETH | 0.00071798 | ||||
Claim Nimrodz | 14936238 | 928 days ago | IN | 0 ETH | 0.00077985 | ||||
Claim Nimrodz | 14935984 | 928 days ago | IN | 0 ETH | 0.00096348 | ||||
Set Approval For... | 14935876 | 928 days ago | IN | 0 ETH | 0.00144626 | ||||
Set Approval For... | 14935876 | 928 days ago | IN | 0 ETH | 0.00251665 | ||||
Set Approval For... | 14935876 | 928 days ago | IN | 0 ETH | 0.00251665 | ||||
Set Approval For... | 14935876 | 928 days ago | IN | 0 ETH | 0.00251665 | ||||
Claim Nimrodz | 14935636 | 928 days ago | IN | 0 ETH | 0.00101165 | ||||
Claim Nimrodz | 14935632 | 928 days ago | IN | 0 ETH | 0.00102044 | ||||
Claim Nimrodz | 14935623 | 928 days ago | IN | 0 ETH | 0.0011729 | ||||
Claim Nimrodz | 14935618 | 928 days ago | IN | 0 ETH | 0.00149722 | ||||
Claim Nimrodz | 14935589 | 928 days ago | IN | 0 ETH | 0.00120435 | ||||
Claim Nimrodz | 14935589 | 928 days ago | IN | 0 ETH | 0.00120435 | ||||
Claim Nimrodz | 14935589 | 928 days ago | IN | 0 ETH | 0.00120435 | ||||
Claim Nimrodz | 14935589 | 928 days ago | IN | 0 ETH | 0.00120435 | ||||
Claim Nimrodz | 14935589 | 928 days ago | IN | 0 ETH | 0.00120435 | ||||
Claim Nimrodz | 14935589 | 928 days ago | IN | 0 ETH | 0.00120435 | ||||
Claim Nimrodz | 14935589 | 928 days ago | IN | 0 ETH | 0.00120822 | ||||
Claim Nimrodz | 14935585 | 928 days ago | IN | 0 ETH | 0.00139271 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
NimrodzClaim
Compiler Version
v0.8.14+commit.80d49f37
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-06-09 */ /* The Nimrodz NFT Claim Contract ERC721A */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.14; /** * @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); } } // Context.sol /** * @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; } } // Ownable.sol /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _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); } } // Address.sol /** * @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); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // IERC721Receiver.sol /** * @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); } // IERC165.sol /** * @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); } // ERC165.sol /** * @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; } } // IERC721.sol /** * @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; } // IERC721Enumerable.sol /** * @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); } // IERC721Metadata.sol /** * @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); } // ERC721A.sol contract ERC721A is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable { using Address for address; using Strings for uint256; struct TokenOwnership { address addr; uint64 startTimestamp; } struct AddressData { uint128 balance; uint128 numberMinted; } uint256 internal currentIndex; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to ownership details // An empty struct value does not necessarily mean the token is unowned. See ownershipOf implementation for details. mapping(uint256 => TokenOwnership) internal _ownerships; // Mapping owner address to address data mapping(address => AddressData) private _addressData; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view override returns (uint256) { return currentIndex; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view override returns (uint256) { require(index < totalSupply(), 'ERC721A: global index out of bounds'); return index; } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. * This read function is O(totalSupply). If calling from a separate contract, be sure to test gas first. * It may also degrade with extremely large collection sizes (e.g >> 10000), test for your use case. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256) { require(index < balanceOf(owner), 'ERC721A: owner index out of bounds'); uint256 numMintedSoFar = totalSupply(); uint256 tokenIdsIdx; address currOwnershipAddr; // Counter overflow is impossible as the loop breaks when uint256 i is equal to another uint256 numMintedSoFar. unchecked { for (uint256 i; i < numMintedSoFar; i++) { TokenOwnership memory ownership = _ownerships[i]; if (ownership.addr != address(0)) { currOwnershipAddr = ownership.addr; } if (currOwnershipAddr == owner) { if (tokenIdsIdx == index) { return i; } tokenIdsIdx++; } } } revert('ERC721A: unable to get token of owner by index'); } /** * @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 || interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view override returns (uint256) { require(owner != address(0), 'ERC721A: balance query for the zero address'); return uint256(_addressData[owner].balance); } function _numberMinted(address owner) internal view returns (uint256) { require(owner != address(0), 'ERC721A: number minted query for the zero address'); return uint256(_addressData[owner].numberMinted); } /** * Gas spent here starts off proportional to the maximum mint batch size. * It gradually moves to O(1) as tokens get transferred around in the collection over time. */ function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) { require(_exists(tokenId), 'ERC721A: owner query for nonexistent token'); unchecked { for (uint256 curr = tokenId; curr >= 0; curr--) { TokenOwnership memory ownership = _ownerships[curr]; if (ownership.addr != address(0)) { return ownership; } } } revert('ERC721A: unable to determine the owner of token'); } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view override returns (address) { return ownershipOf(tokenId).addr; } /** * @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 override { address owner = ERC721A.ownerOf(tokenId); require(to != owner, 'ERC721A: approval to current owner'); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), 'ERC721A: approve caller is not owner nor approved for all' ); _approve(to, tokenId, owner); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view override returns (address) { require(_exists(tokenId), 'ERC721A: approved query for nonexistent token'); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public override { require(operator != _msgSender(), 'ERC721A: 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 override { _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public override { safeTransferFrom(from, to, tokenId, ''); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public override { _transfer(from, to, tokenId); require( _checkOnERC721Received(from, to, tokenId, _data), 'ERC721A: 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`), */ function _exists(uint256 tokenId) internal view returns (bool) { return tokenId < currentIndex; } function _safeMint(address to, uint256 quantity) internal { _safeMint(to, quantity, ''); } /** * @dev Safely mints `quantity` tokens and transfers them to `to`. * * Requirements: * * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called for each safe transfer. * - `quantity` must be greater than 0. * * Emits a {Transfer} event. */ function _safeMint( address to, uint256 quantity, bytes memory _data ) internal { _mint(to, quantity, _data, true); } /** * @dev Mints `quantity` tokens and transfers them to `to`. * * Requirements: * * - `to` cannot be the zero address. * - `quantity` must be greater than 0. * * Emits a {Transfer} event. */ function _mint( address to, uint256 quantity, bytes memory _data, bool safe ) internal { uint256 startTokenId = currentIndex; require(to != address(0), 'ERC721A: mint to the zero address'); require(quantity != 0, 'ERC721A: quantity must be greater than 0'); _beforeTokenTransfers(address(0), to, startTokenId, quantity); // Overflows are incredibly unrealistic. // balance or numberMinted overflow if current value of either + quantity > 3.4e38 (2**128) - 1 // updatedIndex overflows if currentIndex + quantity > 1.56e77 (2**256) - 1 unchecked { _addressData[to].balance += uint128(quantity); _addressData[to].numberMinted += uint128(quantity); _ownerships[startTokenId].addr = to; _ownerships[startTokenId].startTimestamp = uint64(block.timestamp); uint256 updatedIndex = startTokenId; for (uint256 i; i < quantity; i++) { emit Transfer(address(0), to, updatedIndex); if (safe) { require( _checkOnERC721Received(address(0), to, updatedIndex, _data), 'ERC721A: transfer to non ERC721Receiver implementer' ); } updatedIndex++; } currentIndex = updatedIndex; } _afterTokenTransfers(address(0), to, startTokenId, quantity); } /** * @dev Transfers `tokenId` from `from` to `to`. * * 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 ) private { TokenOwnership memory prevOwnership = ownershipOf(tokenId); bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr || getApproved(tokenId) == _msgSender() || isApprovedForAll(prevOwnership.addr, _msgSender())); require(isApprovedOrOwner, 'ERC721A: transfer caller is not owner nor approved'); require(prevOwnership.addr == from, 'ERC721A: transfer from incorrect owner'); require(to != address(0), 'ERC721A: transfer to the zero address'); _beforeTokenTransfers(from, to, tokenId, 1); // Clear approvals from the previous owner _approve(address(0), tokenId, prevOwnership.addr); // Underflow of the sender's balance is impossible because we check for // ownership above and the recipient's balance can't realistically overflow. // Counter overflow is incredibly unrealistic as tokenId would have to be 2**256. unchecked { _addressData[from].balance -= 1; _addressData[to].balance += 1; _ownerships[tokenId].addr = to; _ownerships[tokenId].startTimestamp = uint64(block.timestamp); // If the ownership slot of tokenId+1 is not explicitly set, that means the transfer initiator owns it. // Set the slot of tokenId+1 explicitly in storage to maintain correctness for ownerOf(tokenId+1) calls. uint256 nextTokenId = tokenId + 1; if (_ownerships[nextTokenId].addr == address(0)) { if (_exists(nextTokenId)) { _ownerships[nextTokenId].addr = prevOwnership.addr; _ownerships[nextTokenId].startTimestamp = prevOwnership.startTimestamp; } } } emit Transfer(from, to, tokenId); _afterTokenTransfers(from, to, tokenId, 1); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve( address to, uint256 tokenId, address owner ) private { _tokenApprovals[tokenId] = to; emit Approval(owner, 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(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert('ERC721A: transfer to non ERC721Receiver implementer'); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before a set of serially-ordered token ids are about to be transferred. This includes minting. * * startTokenId - the first token id to be transferred * quantity - the amount to be transferred * * 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`. */ function _beforeTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} /** * @dev Hook that is called after a set of serially-ordered token ids have been transferred. This includes * minting. * * startTokenId - the first token id to be transferred * quantity - the amount to be transferred * * Calling conditions: * * - when `from` and `to` are both non-zero. * - `from` and `to` are never both zero. */ function _afterTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} } // ReentrancyGuard.sol /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } contract Nimrodz is ERC721A, Ownable, ReentrancyGuard { uint256 MAX_MINTS = 6; uint256 MAX_SUPPLY = 10000; uint256 REMAINING_FREE_SUPPLY = 2000; uint256 REMAINING_SUPPLY = 10000; uint256 public NIMLIST_RESERVE = 500; uint256 REMAINING_NIMLIST_RESERVE = 500; uint256 public premMintRate = 0.03 ether; uint256 public mintRate = 0.03 ether; uint256 public nimlistedMintRate = 0; string public the_homeland; string public notRevealedUri = "ipfs://QmcHJyCzBwvkLY8G45Axph41EnTxj6uwWfRhH56g1f7Eev/hidden.json"; string public baseExtension = ".json"; bool public revealed = true; bool public mintOpen = false; bool public nimlistedMintOpen = false; bool public leftover_reserves_minted = false; bool private stupidnimrod = true; mapping (address => bool) private nimlisted_friends; mapping (address => bool) private already_freeminted; mapping (address => bool) private nim_best_friends; mapping (address => uint256) private nims_allocated; constructor() ERC721A("Nimrodz", "NIMS") {} function nimcost(uint256 quantity) public view returns (uint256) { uint256 freemints_in_tx = 0; if(REMAINING_FREE_SUPPLY > 0 && !already_freeminted[msg.sender]) { if(quantity == 1) { freemints_in_tx = 1; } else if (quantity >= 2 && REMAINING_FREE_SUPPLY > 1) { freemints_in_tx = 2; } else if (quantity >= 2 && REMAINING_FREE_SUPPLY == 1) { freemints_in_tx = 1; } } return ((quantity - freemints_in_tx) * mintRate); } function withdraw() external payable onlyOwner { payable(owner()).transfer(address(this).balance); } function _baseURI() internal view override returns (string memory) { return the_homeland; } function _notRevealedURI() public view returns (string memory) { return notRevealedUri; } function nimrodzhomeland(string memory homeland) public onlyOwner { the_homeland = homeland; } function amianimfriend() public view returns (bool) { return nimlisted_friends[msg.sender]; } function hinimfriends(address[] calldata friends) public onlyOwner { for(uint256 i=0; i<friends.length; i++) { nimlisted_friends[friends[i]] = true; } } function nimbestfriend(address[] calldata bestfriends) public onlyOwner { for(uint256 i=0; i<bestfriends.length; i++) { nim_best_friends[bestfriends[i]] = true; } } function missingnimfriends(uint256 missing_friends) public onlyOwner { NIMLIST_RESERVE = missing_friends; } function nimprice(uint256 nimrate) public onlyOwner { mintRate = nimrate; } function welcomenimrodz() public onlyOwner { mintOpen = !mintOpen; } function welcomenimfriends() public onlyOwner { nimlistedMintOpen = !nimlistedMintOpen; } function wowitsnimrodz() public onlyOwner { revealed = true; } function howmanymintnims() public view returns (uint256) { return (REMAINING_SUPPLY - NIMLIST_RESERVE); } function howmanynims() public view returns (uint256) { return REMAINING_SUPPLY; } function howmanyfreenims() public view returns (uint256) { return REMAINING_FREE_SUPPLY; } function howmanynimlist() public view returns (uint256) { return REMAINING_NIMLIST_RESERVE; } function mint_nimrodz(uint256 quantity) external payable { require(mintOpen && !nimlistedMintOpen, "Minting has not started yet"); require(((nims_allocated[msg.sender] + quantity) <= MAX_MINTS) || nim_best_friends[msg.sender], "Exceeded the limit per wallet"); require((totalSupply() + quantity) <= (MAX_SUPPLY - REMAINING_NIMLIST_RESERVE), "Not enough tokens left"); require(!stupidnimrod, "Lol, imagine thinking this would work...nim nim bot!"); uint256 etherRequired = (quantity * mintRate); require(msg.value >= etherRequired, "Not enough ether sent"); _safeMint(msg.sender, quantity); nims_allocated[msg.sender] += quantity; REMAINING_SUPPLY -= quantity; mintRate = premMintRate; } function nimrodzmagic(uint256 magic) external payable { require(mintOpen, "Minting has not started yet"); require(((nims_allocated[msg.sender] + magic) <= MAX_MINTS) || nim_best_friends[msg.sender], "Exceeded the limit per wallet"); require((totalSupply() + magic) <= (MAX_SUPPLY - REMAINING_NIMLIST_RESERVE), "Not enough tokens left"); uint256 freemints_in_tx = 0; if(REMAINING_FREE_SUPPLY > 0 && !already_freeminted[msg.sender]) { if(magic == 1) { freemints_in_tx += 1; REMAINING_FREE_SUPPLY -= 1; } else if (magic >= 2 && REMAINING_FREE_SUPPLY > 1) { freemints_in_tx += 2; REMAINING_FREE_SUPPLY -= 2; } else if (magic >= 2 && REMAINING_FREE_SUPPLY == 1) { freemints_in_tx += 1; REMAINING_FREE_SUPPLY = 0; } already_freeminted[msg.sender] = true; } uint256 etherRequired = ((magic - freemints_in_tx) * mintRate); require(msg.value >= etherRequired, "Not enough ether sent"); _safeMint(msg.sender, magic); nims_allocated[msg.sender] += magic; REMAINING_SUPPLY -= magic; mintRate = premMintRate; } function nimfriendsmagic() external payable { require(nimlistedMintOpen, "Nimlisted minting has not started yet"); require(nimlisted_friends[msg.sender] && REMAINING_NIMLIST_RESERVE > 0, "Not enough tokens left"); uint256 etherRequired = nimlistedMintRate; require(msg.value >= etherRequired, "Not enough ether sent"); _safeMint(msg.sender, 1); REMAINING_NIMLIST_RESERVE -= 1; nimlisted_friends[msg.sender] = false; } function strandednimz() external payable onlyOwner { require(!leftover_reserves_minted, "Leftover reserves can only be called once and has already been called"); if(REMAINING_NIMLIST_RESERVE > REMAINING_SUPPLY) { REMAINING_NIMLIST_RESERVE = REMAINING_SUPPLY; } mintRate = 0; leftover_reserves_minted = true; _safeMint(msg.sender, REMAINING_NIMLIST_RESERVE); mintRate = premMintRate; REMAINING_SUPPLY -= REMAINING_NIMLIST_RESERVE; REMAINING_NIMLIST_RESERVE = 0; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require( _exists(tokenId), "ERC721AMetadata: URI query for nonexistent token" ); if(revealed == false) { return notRevealedUri; } string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, Strings.toString(tokenId), baseExtension)) : notRevealedUri; } } contract NimrodzClaim is ERC721A, Ownable { uint256 MAX_CLAIM = 2; bool public claimOpen = false; uint256 public currentTokenId = 2383; uint256 public REMAINING_SUPPLY = 7112; uint256 public missedTokenId = 4480; uint256 public jumpTokenId = 4496; address public nimrodz_deployer = 0xA9259D010C8467A47FC486666DFbb9238094F51f; mapping (address => uint256) private nims_allocated; Nimrodz nimrodz_contract = Nimrodz(0x2ea0D46d78cf57e1288cF8582FECd89cF3f078f6); constructor() ERC721A("Nimrodz Claim", "NIMS") {} function claimNimrodz(uint256 quantity) public { require(REMAINING_SUPPLY > quantity, "Not enough supply left."); require(nims_allocated[msg.sender] + quantity <= MAX_CLAIM); require(claimOpen, "Claim is not yet open."); for(uint256 i=0; i<quantity; i++) { if(currentTokenId == missedTokenId) { currentTokenId = jumpTokenId; } nimrodz_contract.safeTransferFrom(nimrodz_deployer, msg.sender, currentTokenId); currentTokenId++; } nims_allocated[msg.sender] += quantity; REMAINING_SUPPLY -= quantity; } function updateMaxClaim(uint256 new_max) public onlyOwner { MAX_CLAIM = new_max; } function updateCurrentTokenId(uint256 new_id) public onlyOwner { currentTokenId = new_id; } function updateClaimOpen(bool open) public onlyOwner { claimOpen = open; } function updateRemainingSupply(uint256 rem) public onlyOwner { REMAINING_SUPPLY = rem; } function updateNimrodzDeployer(address deployer) public onlyOwner { nimrodz_deployer = deployer; } function updateNimrodzContract(Nimrodz new_contract) public onlyOwner { nimrodz_contract = new_contract; } function correctTokenId(uint256 missed, uint256 jump) public onlyOwner { missedTokenId = missed; jumpTokenId = jump; } function getRemainingSupply() public view returns (uint256) { return REMAINING_SUPPLY; } function getClaimOpen() public view returns (bool) { return claimOpen; } function getCurrentTokenId() public onlyOwner view returns (uint256) { return currentTokenId; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"REMAINING_SUPPLY","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":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"claimNimrodz","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"missed","type":"uint256"},{"internalType":"uint256","name":"jump","type":"uint256"}],"name":"correctTokenId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getClaimOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRemainingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"jumpTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"missedTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nimrodz_deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"bool","name":"open","type":"bool"}],"name":"updateClaimOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_id","type":"uint256"}],"name":"updateCurrentTokenId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_max","type":"uint256"}],"name":"updateMaxClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract Nimrodz","name":"new_contract","type":"address"}],"name":"updateNimrodzContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"deployer","type":"address"}],"name":"updateNimrodzDeployer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rem","type":"uint256"}],"name":"updateRemainingSupply","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405260026008556000600960006101000a81548160ff02191690831515021790555061094f600a55611bc8600b55611180600c55611190600d5573a9259d010c8467a47fc486666dfbb9238094f51f600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732ea0d46d78cf57e1288cf8582fecd89cf3f078f6601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000f357600080fd5b506040518060400160405280600d81526020017f4e696d726f647a20436c61696d000000000000000000000000000000000000008152506040518060400160405280600481526020017f4e494d530000000000000000000000000000000000000000000000000000000081525081600190805190602001906200017892919062000288565b5080600290805190602001906200019192919062000288565b505050620001b4620001a8620001ba60201b60201c565b620001c260201b60201c565b6200039c565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002969062000367565b90600052602060002090601f016020900481019282620002ba576000855562000306565b82601f10620002d557805160ff191683800117855562000306565b8280016001018555821562000306579182015b8281111562000305578251825591602001919060010190620002e8565b5b50905062000315919062000319565b5090565b5b80821115620003345760008160009055506001016200031a565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200038057607f821691505b60208210810362000396576200039562000338565b5b50919050565b613b5d80620003ac6000396000f3fe608060405234801561001057600080fd5b506004361061021b5760003560e01c80636af7e3a711610125578063b88d4fde116100ad578063e3b27b4a1161007c578063e3b27b4a14610614578063e4b7fb7314610630578063e985e9c51461064e578063eaefc5461461067e578063f2fde38b1461069c5761021b565b8063b88d4fde14610590578063c87b56dd146105ac578063dd835bf1146105dc578063e20eedc8146105f85761021b565b80638da5cb5b116100f45780638da5cb5b146104fe578063916b0d4e1461051c57806395d89b41146105385780639cec69ae14610556578063a22cb465146105745761021b565b80636af7e3a71461048857806370a08231146104a6578063715018a6146104d657806385d63cce146104e05761021b565b806323b872dd116101a85780634b8bcb58116101775780634b8bcb58146103d05780634f6ccce7146103ee578063561892361461041e57806357f3c0a51461043c5780636352211e146104585761021b565b806323b872dd1461034c5780632f745c591461036857806342842e0e146103985780634470240d146103b45761021b565b8063081812fc116101ef578063081812fc146102a8578063095ea7b3146102d857806312b87793146102f457806318160ddd146103125780631fd4d0ab146103305761021b565b80629a9b7b1461022057806301ffc9a71461023e57806302c8365b1461026e57806306fdde031461028a575b600080fd5b6102286106b8565b60405161023591906126cc565b60405180910390f35b61025860048036038101906102539190612753565b6106be565b604051610265919061279b565b60405180910390f35b610288600480360381019061028391906127e2565b610808565b005b610292610896565b60405161029f91906128bb565b60405180910390f35b6102c260048036038101906102bd91906128dd565b610928565b6040516102cf919061294b565b60405180910390f35b6102f260048036038101906102ed9190612992565b6109ad565b005b6102fc610ac5565b60405161030991906126cc565b60405180910390f35b61031a610acb565b60405161032791906126cc565b60405180910390f35b61034a600480360381019061034591906129fe565b610ad4565b005b61036660048036038101906103619190612a2b565b610b6d565b005b610382600480360381019061037d9190612992565b610b7d565b60405161038f91906126cc565b60405180910390f35b6103b260048036038101906103ad9190612a2b565b610d6d565b005b6103ce60048036038101906103c991906128dd565b610d8d565b005b6103d8610e13565b6040516103e5919061279b565b60405180910390f35b610408600480360381019061040391906128dd565b610e26565b60405161041591906126cc565b60405180910390f35b610426610e79565b60405161043391906126cc565b60405180910390f35b610456600480360381019061045191906128dd565b610eff565b005b610472600480360381019061046d91906128dd565b610f85565b60405161047f919061294b565b60405180910390f35b610490610f9b565b60405161049d919061294b565b60405180910390f35b6104c060048036038101906104bb9190612a7e565b610fc1565b6040516104cd91906126cc565b60405180910390f35b6104de6110a9565b005b6104e8611131565b6040516104f591906126cc565b60405180910390f35b610506611137565b604051610513919061294b565b60405180910390f35b610536600480360381019061053191906128dd565b611161565b005b6105406113c0565b60405161054d91906128bb565b60405180910390f35b61055e611452565b60405161056b91906126cc565b60405180910390f35b61058e60048036038101906105899190612aab565b611458565b005b6105aa60048036038101906105a59190612c20565b6115d8565b005b6105c660048036038101906105c191906128dd565b611634565b6040516105d391906128bb565b60405180910390f35b6105f660048036038101906105f19190612ce1565b6116db565b005b610612600480360381019061060d91906128dd565b61179b565b005b61062e60048036038101906106299190612a7e565b611821565b005b6106386118e1565b60405161064591906126cc565b60405180910390f35b61066860048036038101906106639190612d0e565b6118eb565b604051610675919061279b565b60405180910390f35b61068661197f565b604051610693919061279b565b60405180910390f35b6106b660048036038101906106b19190612a7e565b611996565b005b600a5481565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061078957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107f157507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610801575061080082611a8d565b5b9050919050565b610810611af7565b73ffffffffffffffffffffffffffffffffffffffff1661082e611137565b73ffffffffffffffffffffffffffffffffffffffff1614610884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087b90612d9a565b60405180910390fd5b81600c8190555080600d819055505050565b6060600180546108a590612de9565b80601f01602080910402602001604051908101604052809291908181526020018280546108d190612de9565b801561091e5780601f106108f35761010080835404028352916020019161091e565b820191906000526020600020905b81548152906001019060200180831161090157829003601f168201915b5050505050905090565b600061093382611aff565b610972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096990612e8c565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109b882610f85565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1f90612f1e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a47611af7565b73ffffffffffffffffffffffffffffffffffffffff161480610a765750610a7581610a70611af7565b6118eb565b5b610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac90612fb0565b60405180910390fd5b610ac0838383611b0c565b505050565b600d5481565b60008054905090565b610adc611af7565b73ffffffffffffffffffffffffffffffffffffffff16610afa611137565b73ffffffffffffffffffffffffffffffffffffffff1614610b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4790612d9a565b60405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b610b78838383611bbe565b505050565b6000610b8883610fc1565b8210610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc090613042565b60405180910390fd5b6000610bd3610acb565b905060008060005b83811015610d2b576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610ccd57806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d1d57868403610d14578195505050505050610d67565b83806001019450505b508080600101915050610bdb565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5e906130d4565b60405180910390fd5b92915050565b610d88838383604051806020016040528060008152506115d8565b505050565b610d95611af7565b73ffffffffffffffffffffffffffffffffffffffff16610db3611137565b73ffffffffffffffffffffffffffffffffffffffff1614610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0090612d9a565b60405180910390fd5b80600b8190555050565b600960009054906101000a900460ff1681565b6000610e30610acb565b8210610e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6890613166565b60405180910390fd5b819050919050565b6000610e83611af7565b73ffffffffffffffffffffffffffffffffffffffff16610ea1611137565b73ffffffffffffffffffffffffffffffffffffffff1614610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee90612d9a565b60405180910390fd5b600a54905090565b610f07611af7565b73ffffffffffffffffffffffffffffffffffffffff16610f25611137565b73ffffffffffffffffffffffffffffffffffffffff1614610f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7290612d9a565b60405180910390fd5b8060088190555050565b6000610f90826120fc565b600001519050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611031576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611028906131f8565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6110b1611af7565b73ffffffffffffffffffffffffffffffffffffffff166110cf611137565b73ffffffffffffffffffffffffffffffffffffffff1614611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90612d9a565b60405180910390fd5b61112f6000612296565b565b600b5481565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600b54116111a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119c90613264565b60405180910390fd5b60085481600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111f391906132b3565b11156111fe57600080fd5b600960009054906101000a900460ff1661124d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124490613355565b60405180910390fd5b60005b8181101561134d57600c54600a540361126d57600d54600a819055505b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633600a546040518463ffffffff1660e01b81526004016112f093929190613375565b600060405180830381600087803b15801561130a57600080fd5b505af115801561131e573d6000803e3d6000fd5b50505050600a6000815480929190611335906133ac565b91905055508080611345906133ac565b915050611250565b5080600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461139d91906132b3565b9250508190555080600b60008282546113b691906133f4565b9250508190555050565b6060600280546113cf90612de9565b80601f01602080910402602001604051908101604052809291908181526020018280546113fb90612de9565b80156114485780601f1061141d57610100808354040283529160200191611448565b820191906000526020600020905b81548152906001019060200180831161142b57829003601f168201915b5050505050905090565b600c5481565b611460611af7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c490613474565b60405180910390fd5b80600660006114da611af7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611587611af7565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115cc919061279b565b60405180910390a35050565b6115e3848484611bbe565b6115ef8484848461235c565b61162e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162590613506565b60405180910390fd5b50505050565b606061163f82611aff565b61167e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167590613598565b60405180910390fd5b60006116886124e3565b905060008151036116a857604051806020016040528060008152506116d3565b806116b2846124fa565b6040516020016116c39291906135f4565b6040516020818303038152906040525b915050919050565b6116e3611af7565b73ffffffffffffffffffffffffffffffffffffffff16611701611137565b73ffffffffffffffffffffffffffffffffffffffff1614611757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174e90612d9a565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117a3611af7565b73ffffffffffffffffffffffffffffffffffffffff166117c1611137565b73ffffffffffffffffffffffffffffffffffffffff1614611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90612d9a565b60405180910390fd5b80600a8190555050565b611829611af7565b73ffffffffffffffffffffffffffffffffffffffff16611847611137565b73ffffffffffffffffffffffffffffffffffffffff161461189d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189490612d9a565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600b54905090565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000600960009054906101000a900460ff16905090565b61199e611af7565b73ffffffffffffffffffffffffffffffffffffffff166119bc611137565b73ffffffffffffffffffffffffffffffffffffffff1614611a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0990612d9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a789061368a565b60405180910390fd5b611a8a81612296565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6000805482109050919050565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000611bc9826120fc565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611bf0611af7565b73ffffffffffffffffffffffffffffffffffffffff161480611c4c5750611c15611af7565b73ffffffffffffffffffffffffffffffffffffffff16611c3484610928565b73ffffffffffffffffffffffffffffffffffffffff16145b80611c685750611c678260000151611c62611af7565b6118eb565b5b905080611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca19061371c565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d13906137ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290613840565b60405180910390fd5b611d98858585600161265a565b611da86000848460000151611b0c565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361208c57611feb81611aff565b1561208b5782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46120f58585856001612660565b5050505050565b612104612679565b61210d82611aff565b61214c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612143906138d2565b60405180910390fd5b60008290505b60008110612255576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612246578092505050612291565b50808060019003915050612152565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228890613964565b60405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600061237d8473ffffffffffffffffffffffffffffffffffffffff16612666565b156124d6578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026123a6611af7565b8786866040518563ffffffff1660e01b81526004016123c894939291906139d9565b6020604051808303816000875af192505050801561240457506040513d601f19601f820116820180604052508101906124019190613a3a565b60015b612486573d8060008114612434576040519150601f19603f3d011682016040523d82523d6000602084013e612439565b606091505b50600081510361247e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247590613506565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506124db565b600190505b949350505050565b606060405180602001604052806000815250905090565b606060008203612541576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612655565b600082905060005b6000821461257357808061255c906133ac565b915050600a8261256c9190613a96565b9150612549565b60008167ffffffffffffffff81111561258f5761258e612af5565b5b6040519080825280601f01601f1916602001820160405280156125c15781602001600182028036833780820191505090505b5090505b6000851461264e576001826125da91906133f4565b9150600a856125e99190613ac7565b60306125f591906132b3565b60f81b81838151811061260b5761260a613af8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856126479190613a96565b94506125c5565b8093505050505b919050565b50505050565b50505050565b600080823b905060008111915050919050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000819050919050565b6126c6816126b3565b82525050565b60006020820190506126e160008301846126bd565b92915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612730816126fb565b811461273b57600080fd5b50565b60008135905061274d81612727565b92915050565b600060208284031215612769576127686126f1565b5b60006127778482850161273e565b91505092915050565b60008115159050919050565b61279581612780565b82525050565b60006020820190506127b0600083018461278c565b92915050565b6127bf816126b3565b81146127ca57600080fd5b50565b6000813590506127dc816127b6565b92915050565b600080604083850312156127f9576127f86126f1565b5b6000612807858286016127cd565b9250506020612818858286016127cd565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561285c578082015181840152602081019050612841565b8381111561286b576000848401525b50505050565b6000601f19601f8301169050919050565b600061288d82612822565b612897818561282d565b93506128a781856020860161283e565b6128b081612871565b840191505092915050565b600060208201905081810360008301526128d58184612882565b905092915050565b6000602082840312156128f3576128f26126f1565b5b6000612901848285016127cd565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129358261290a565b9050919050565b6129458161292a565b82525050565b6000602082019050612960600083018461293c565b92915050565b61296f8161292a565b811461297a57600080fd5b50565b60008135905061298c81612966565b92915050565b600080604083850312156129a9576129a86126f1565b5b60006129b78582860161297d565b92505060206129c8858286016127cd565b9150509250929050565b6129db81612780565b81146129e657600080fd5b50565b6000813590506129f8816129d2565b92915050565b600060208284031215612a1457612a136126f1565b5b6000612a22848285016129e9565b91505092915050565b600080600060608486031215612a4457612a436126f1565b5b6000612a528682870161297d565b9350506020612a638682870161297d565b9250506040612a74868287016127cd565b9150509250925092565b600060208284031215612a9457612a936126f1565b5b6000612aa28482850161297d565b91505092915050565b60008060408385031215612ac257612ac16126f1565b5b6000612ad08582860161297d565b9250506020612ae1858286016129e9565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b2d82612871565b810181811067ffffffffffffffff82111715612b4c57612b4b612af5565b5b80604052505050565b6000612b5f6126e7565b9050612b6b8282612b24565b919050565b600067ffffffffffffffff821115612b8b57612b8a612af5565b5b612b9482612871565b9050602081019050919050565b82818337600083830152505050565b6000612bc3612bbe84612b70565b612b55565b905082815260208101848484011115612bdf57612bde612af0565b5b612bea848285612ba1565b509392505050565b600082601f830112612c0757612c06612aeb565b5b8135612c17848260208601612bb0565b91505092915050565b60008060008060808587031215612c3a57612c396126f1565b5b6000612c488782880161297d565b9450506020612c598782880161297d565b9350506040612c6a878288016127cd565b925050606085013567ffffffffffffffff811115612c8b57612c8a6126f6565b5b612c9787828801612bf2565b91505092959194509250565b6000612cae8261292a565b9050919050565b612cbe81612ca3565b8114612cc957600080fd5b50565b600081359050612cdb81612cb5565b92915050565b600060208284031215612cf757612cf66126f1565b5b6000612d0584828501612ccc565b91505092915050565b60008060408385031215612d2557612d246126f1565b5b6000612d338582860161297d565b9250506020612d448582860161297d565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d8460208361282d565b9150612d8f82612d4e565b602082019050919050565b60006020820190508181036000830152612db381612d77565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e0157607f821691505b602082108103612e1457612e13612dba565b5b50919050565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b6000612e76602d8361282d565b9150612e8182612e1a565b604082019050919050565b60006020820190508181036000830152612ea581612e69565b9050919050565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f0860228361282d565b9150612f1382612eac565b604082019050919050565b60006020820190508181036000830152612f3781612efb565b9050919050565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b6000612f9a60398361282d565b9150612fa582612f3e565b604082019050919050565b60006020820190508181036000830152612fc981612f8d565b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b600061302c60228361282d565b915061303782612fd0565b604082019050919050565b6000602082019050818103600083015261305b8161301f565b9050919050565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b60006130be602e8361282d565b91506130c982613062565b604082019050919050565b600060208201905081810360008301526130ed816130b1565b9050919050565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b600061315060238361282d565b915061315b826130f4565b604082019050919050565b6000602082019050818103600083015261317f81613143565b9050919050565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b60006131e2602b8361282d565b91506131ed82613186565b604082019050919050565b60006020820190508181036000830152613211816131d5565b9050919050565b7f4e6f7420656e6f75676820737570706c79206c6566742e000000000000000000600082015250565b600061324e60178361282d565b915061325982613218565b602082019050919050565b6000602082019050818103600083015261327d81613241565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132be826126b3565b91506132c9836126b3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132fe576132fd613284565b5b828201905092915050565b7f436c61696d206973206e6f7420796574206f70656e2e00000000000000000000600082015250565b600061333f60168361282d565b915061334a82613309565b602082019050919050565b6000602082019050818103600083015261336e81613332565b9050919050565b600060608201905061338a600083018661293c565b613397602083018561293c565b6133a460408301846126bd565b949350505050565b60006133b7826126b3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133e9576133e8613284565b5b600182019050919050565b60006133ff826126b3565b915061340a836126b3565b92508282101561341d5761341c613284565b5b828203905092915050565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b600061345e601a8361282d565b915061346982613428565b602082019050919050565b6000602082019050818103600083015261348d81613451565b9050919050565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b60006134f060338361282d565b91506134fb82613494565b604082019050919050565b6000602082019050818103600083015261351f816134e3565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613582602f8361282d565b915061358d82613526565b604082019050919050565b600060208201905081810360008301526135b181613575565b9050919050565b600081905092915050565b60006135ce82612822565b6135d881856135b8565b93506135e881856020860161283e565b80840191505092915050565b600061360082856135c3565b915061360c82846135c3565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061367460268361282d565b915061367f82613618565b604082019050919050565b600060208201905081810360008301526136a381613667565b9050919050565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b600061370660328361282d565b9150613711826136aa565b604082019050919050565b60006020820190508181036000830152613735816136f9565b9050919050565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b600061379860268361282d565b91506137a38261373c565b604082019050919050565b600060208201905081810360008301526137c78161378b565b9050919050565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061382a60258361282d565b9150613835826137ce565b604082019050919050565b600060208201905081810360008301526138598161381d565b9050919050565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b60006138bc602a8361282d565b91506138c782613860565b604082019050919050565b600060208201905081810360008301526138eb816138af565b9050919050565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b600061394e602f8361282d565b9150613959826138f2565b604082019050919050565b6000602082019050818103600083015261397d81613941565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006139ab82613984565b6139b5818561398f565b93506139c581856020860161283e565b6139ce81612871565b840191505092915050565b60006080820190506139ee600083018761293c565b6139fb602083018661293c565b613a0860408301856126bd565b8181036060830152613a1a81846139a0565b905095945050505050565b600081519050613a3481612727565b92915050565b600060208284031215613a5057613a4f6126f1565b5b6000613a5e84828501613a25565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613aa1826126b3565b9150613aac836126b3565b925082613abc57613abb613a67565b5b828204905092915050565b6000613ad2826126b3565b9150613add836126b3565b925082613aed57613aec613a67565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212203db26e01c8ca6a36b2a50ca91bdd44f72ec49dd0a7d64795e3f0e8ea1e0d685964736f6c634300080e0033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061021b5760003560e01c80636af7e3a711610125578063b88d4fde116100ad578063e3b27b4a1161007c578063e3b27b4a14610614578063e4b7fb7314610630578063e985e9c51461064e578063eaefc5461461067e578063f2fde38b1461069c5761021b565b8063b88d4fde14610590578063c87b56dd146105ac578063dd835bf1146105dc578063e20eedc8146105f85761021b565b80638da5cb5b116100f45780638da5cb5b146104fe578063916b0d4e1461051c57806395d89b41146105385780639cec69ae14610556578063a22cb465146105745761021b565b80636af7e3a71461048857806370a08231146104a6578063715018a6146104d657806385d63cce146104e05761021b565b806323b872dd116101a85780634b8bcb58116101775780634b8bcb58146103d05780634f6ccce7146103ee578063561892361461041e57806357f3c0a51461043c5780636352211e146104585761021b565b806323b872dd1461034c5780632f745c591461036857806342842e0e146103985780634470240d146103b45761021b565b8063081812fc116101ef578063081812fc146102a8578063095ea7b3146102d857806312b87793146102f457806318160ddd146103125780631fd4d0ab146103305761021b565b80629a9b7b1461022057806301ffc9a71461023e57806302c8365b1461026e57806306fdde031461028a575b600080fd5b6102286106b8565b60405161023591906126cc565b60405180910390f35b61025860048036038101906102539190612753565b6106be565b604051610265919061279b565b60405180910390f35b610288600480360381019061028391906127e2565b610808565b005b610292610896565b60405161029f91906128bb565b60405180910390f35b6102c260048036038101906102bd91906128dd565b610928565b6040516102cf919061294b565b60405180910390f35b6102f260048036038101906102ed9190612992565b6109ad565b005b6102fc610ac5565b60405161030991906126cc565b60405180910390f35b61031a610acb565b60405161032791906126cc565b60405180910390f35b61034a600480360381019061034591906129fe565b610ad4565b005b61036660048036038101906103619190612a2b565b610b6d565b005b610382600480360381019061037d9190612992565b610b7d565b60405161038f91906126cc565b60405180910390f35b6103b260048036038101906103ad9190612a2b565b610d6d565b005b6103ce60048036038101906103c991906128dd565b610d8d565b005b6103d8610e13565b6040516103e5919061279b565b60405180910390f35b610408600480360381019061040391906128dd565b610e26565b60405161041591906126cc565b60405180910390f35b610426610e79565b60405161043391906126cc565b60405180910390f35b610456600480360381019061045191906128dd565b610eff565b005b610472600480360381019061046d91906128dd565b610f85565b60405161047f919061294b565b60405180910390f35b610490610f9b565b60405161049d919061294b565b60405180910390f35b6104c060048036038101906104bb9190612a7e565b610fc1565b6040516104cd91906126cc565b60405180910390f35b6104de6110a9565b005b6104e8611131565b6040516104f591906126cc565b60405180910390f35b610506611137565b604051610513919061294b565b60405180910390f35b610536600480360381019061053191906128dd565b611161565b005b6105406113c0565b60405161054d91906128bb565b60405180910390f35b61055e611452565b60405161056b91906126cc565b60405180910390f35b61058e60048036038101906105899190612aab565b611458565b005b6105aa60048036038101906105a59190612c20565b6115d8565b005b6105c660048036038101906105c191906128dd565b611634565b6040516105d391906128bb565b60405180910390f35b6105f660048036038101906105f19190612ce1565b6116db565b005b610612600480360381019061060d91906128dd565b61179b565b005b61062e60048036038101906106299190612a7e565b611821565b005b6106386118e1565b60405161064591906126cc565b60405180910390f35b61066860048036038101906106639190612d0e565b6118eb565b604051610675919061279b565b60405180910390f35b61068661197f565b604051610693919061279b565b60405180910390f35b6106b660048036038101906106b19190612a7e565b611996565b005b600a5481565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061078957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107f157507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610801575061080082611a8d565b5b9050919050565b610810611af7565b73ffffffffffffffffffffffffffffffffffffffff1661082e611137565b73ffffffffffffffffffffffffffffffffffffffff1614610884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087b90612d9a565b60405180910390fd5b81600c8190555080600d819055505050565b6060600180546108a590612de9565b80601f01602080910402602001604051908101604052809291908181526020018280546108d190612de9565b801561091e5780601f106108f35761010080835404028352916020019161091e565b820191906000526020600020905b81548152906001019060200180831161090157829003601f168201915b5050505050905090565b600061093382611aff565b610972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096990612e8c565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109b882610f85565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1f90612f1e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a47611af7565b73ffffffffffffffffffffffffffffffffffffffff161480610a765750610a7581610a70611af7565b6118eb565b5b610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac90612fb0565b60405180910390fd5b610ac0838383611b0c565b505050565b600d5481565b60008054905090565b610adc611af7565b73ffffffffffffffffffffffffffffffffffffffff16610afa611137565b73ffffffffffffffffffffffffffffffffffffffff1614610b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4790612d9a565b60405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b610b78838383611bbe565b505050565b6000610b8883610fc1565b8210610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc090613042565b60405180910390fd5b6000610bd3610acb565b905060008060005b83811015610d2b576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610ccd57806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d1d57868403610d14578195505050505050610d67565b83806001019450505b508080600101915050610bdb565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5e906130d4565b60405180910390fd5b92915050565b610d88838383604051806020016040528060008152506115d8565b505050565b610d95611af7565b73ffffffffffffffffffffffffffffffffffffffff16610db3611137565b73ffffffffffffffffffffffffffffffffffffffff1614610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0090612d9a565b60405180910390fd5b80600b8190555050565b600960009054906101000a900460ff1681565b6000610e30610acb565b8210610e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6890613166565b60405180910390fd5b819050919050565b6000610e83611af7565b73ffffffffffffffffffffffffffffffffffffffff16610ea1611137565b73ffffffffffffffffffffffffffffffffffffffff1614610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee90612d9a565b60405180910390fd5b600a54905090565b610f07611af7565b73ffffffffffffffffffffffffffffffffffffffff16610f25611137565b73ffffffffffffffffffffffffffffffffffffffff1614610f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7290612d9a565b60405180910390fd5b8060088190555050565b6000610f90826120fc565b600001519050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611031576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611028906131f8565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6110b1611af7565b73ffffffffffffffffffffffffffffffffffffffff166110cf611137565b73ffffffffffffffffffffffffffffffffffffffff1614611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90612d9a565b60405180910390fd5b61112f6000612296565b565b600b5481565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600b54116111a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119c90613264565b60405180910390fd5b60085481600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111f391906132b3565b11156111fe57600080fd5b600960009054906101000a900460ff1661124d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124490613355565b60405180910390fd5b60005b8181101561134d57600c54600a540361126d57600d54600a819055505b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633600a546040518463ffffffff1660e01b81526004016112f093929190613375565b600060405180830381600087803b15801561130a57600080fd5b505af115801561131e573d6000803e3d6000fd5b50505050600a6000815480929190611335906133ac565b91905055508080611345906133ac565b915050611250565b5080600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461139d91906132b3565b9250508190555080600b60008282546113b691906133f4565b9250508190555050565b6060600280546113cf90612de9565b80601f01602080910402602001604051908101604052809291908181526020018280546113fb90612de9565b80156114485780601f1061141d57610100808354040283529160200191611448565b820191906000526020600020905b81548152906001019060200180831161142b57829003601f168201915b5050505050905090565b600c5481565b611460611af7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c490613474565b60405180910390fd5b80600660006114da611af7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611587611af7565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115cc919061279b565b60405180910390a35050565b6115e3848484611bbe565b6115ef8484848461235c565b61162e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162590613506565b60405180910390fd5b50505050565b606061163f82611aff565b61167e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167590613598565b60405180910390fd5b60006116886124e3565b905060008151036116a857604051806020016040528060008152506116d3565b806116b2846124fa565b6040516020016116c39291906135f4565b6040516020818303038152906040525b915050919050565b6116e3611af7565b73ffffffffffffffffffffffffffffffffffffffff16611701611137565b73ffffffffffffffffffffffffffffffffffffffff1614611757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174e90612d9a565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117a3611af7565b73ffffffffffffffffffffffffffffffffffffffff166117c1611137565b73ffffffffffffffffffffffffffffffffffffffff1614611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90612d9a565b60405180910390fd5b80600a8190555050565b611829611af7565b73ffffffffffffffffffffffffffffffffffffffff16611847611137565b73ffffffffffffffffffffffffffffffffffffffff161461189d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189490612d9a565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600b54905090565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000600960009054906101000a900460ff16905090565b61199e611af7565b73ffffffffffffffffffffffffffffffffffffffff166119bc611137565b73ffffffffffffffffffffffffffffffffffffffff1614611a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0990612d9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a789061368a565b60405180910390fd5b611a8a81612296565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6000805482109050919050565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000611bc9826120fc565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611bf0611af7565b73ffffffffffffffffffffffffffffffffffffffff161480611c4c5750611c15611af7565b73ffffffffffffffffffffffffffffffffffffffff16611c3484610928565b73ffffffffffffffffffffffffffffffffffffffff16145b80611c685750611c678260000151611c62611af7565b6118eb565b5b905080611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca19061371c565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d13906137ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290613840565b60405180910390fd5b611d98858585600161265a565b611da86000848460000151611b0c565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361208c57611feb81611aff565b1561208b5782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46120f58585856001612660565b5050505050565b612104612679565b61210d82611aff565b61214c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612143906138d2565b60405180910390fd5b60008290505b60008110612255576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612246578092505050612291565b50808060019003915050612152565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228890613964565b60405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600061237d8473ffffffffffffffffffffffffffffffffffffffff16612666565b156124d6578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026123a6611af7565b8786866040518563ffffffff1660e01b81526004016123c894939291906139d9565b6020604051808303816000875af192505050801561240457506040513d601f19601f820116820180604052508101906124019190613a3a565b60015b612486573d8060008114612434576040519150601f19603f3d011682016040523d82523d6000602084013e612439565b606091505b50600081510361247e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247590613506565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506124db565b600190505b949350505050565b606060405180602001604052806000815250905090565b606060008203612541576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612655565b600082905060005b6000821461257357808061255c906133ac565b915050600a8261256c9190613a96565b9150612549565b60008167ffffffffffffffff81111561258f5761258e612af5565b5b6040519080825280601f01601f1916602001820160405280156125c15781602001600182028036833780820191505090505b5090505b6000851461264e576001826125da91906133f4565b9150600a856125e99190613ac7565b60306125f591906132b3565b60f81b81838151811061260b5761260a613af8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856126479190613a96565b94506125c5565b8093505050505b919050565b50505050565b50505050565b600080823b905060008111915050919050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000819050919050565b6126c6816126b3565b82525050565b60006020820190506126e160008301846126bd565b92915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612730816126fb565b811461273b57600080fd5b50565b60008135905061274d81612727565b92915050565b600060208284031215612769576127686126f1565b5b60006127778482850161273e565b91505092915050565b60008115159050919050565b61279581612780565b82525050565b60006020820190506127b0600083018461278c565b92915050565b6127bf816126b3565b81146127ca57600080fd5b50565b6000813590506127dc816127b6565b92915050565b600080604083850312156127f9576127f86126f1565b5b6000612807858286016127cd565b9250506020612818858286016127cd565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561285c578082015181840152602081019050612841565b8381111561286b576000848401525b50505050565b6000601f19601f8301169050919050565b600061288d82612822565b612897818561282d565b93506128a781856020860161283e565b6128b081612871565b840191505092915050565b600060208201905081810360008301526128d58184612882565b905092915050565b6000602082840312156128f3576128f26126f1565b5b6000612901848285016127cd565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129358261290a565b9050919050565b6129458161292a565b82525050565b6000602082019050612960600083018461293c565b92915050565b61296f8161292a565b811461297a57600080fd5b50565b60008135905061298c81612966565b92915050565b600080604083850312156129a9576129a86126f1565b5b60006129b78582860161297d565b92505060206129c8858286016127cd565b9150509250929050565b6129db81612780565b81146129e657600080fd5b50565b6000813590506129f8816129d2565b92915050565b600060208284031215612a1457612a136126f1565b5b6000612a22848285016129e9565b91505092915050565b600080600060608486031215612a4457612a436126f1565b5b6000612a528682870161297d565b9350506020612a638682870161297d565b9250506040612a74868287016127cd565b9150509250925092565b600060208284031215612a9457612a936126f1565b5b6000612aa28482850161297d565b91505092915050565b60008060408385031215612ac257612ac16126f1565b5b6000612ad08582860161297d565b9250506020612ae1858286016129e9565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b2d82612871565b810181811067ffffffffffffffff82111715612b4c57612b4b612af5565b5b80604052505050565b6000612b5f6126e7565b9050612b6b8282612b24565b919050565b600067ffffffffffffffff821115612b8b57612b8a612af5565b5b612b9482612871565b9050602081019050919050565b82818337600083830152505050565b6000612bc3612bbe84612b70565b612b55565b905082815260208101848484011115612bdf57612bde612af0565b5b612bea848285612ba1565b509392505050565b600082601f830112612c0757612c06612aeb565b5b8135612c17848260208601612bb0565b91505092915050565b60008060008060808587031215612c3a57612c396126f1565b5b6000612c488782880161297d565b9450506020612c598782880161297d565b9350506040612c6a878288016127cd565b925050606085013567ffffffffffffffff811115612c8b57612c8a6126f6565b5b612c9787828801612bf2565b91505092959194509250565b6000612cae8261292a565b9050919050565b612cbe81612ca3565b8114612cc957600080fd5b50565b600081359050612cdb81612cb5565b92915050565b600060208284031215612cf757612cf66126f1565b5b6000612d0584828501612ccc565b91505092915050565b60008060408385031215612d2557612d246126f1565b5b6000612d338582860161297d565b9250506020612d448582860161297d565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d8460208361282d565b9150612d8f82612d4e565b602082019050919050565b60006020820190508181036000830152612db381612d77565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e0157607f821691505b602082108103612e1457612e13612dba565b5b50919050565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b6000612e76602d8361282d565b9150612e8182612e1a565b604082019050919050565b60006020820190508181036000830152612ea581612e69565b9050919050565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f0860228361282d565b9150612f1382612eac565b604082019050919050565b60006020820190508181036000830152612f3781612efb565b9050919050565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b6000612f9a60398361282d565b9150612fa582612f3e565b604082019050919050565b60006020820190508181036000830152612fc981612f8d565b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b600061302c60228361282d565b915061303782612fd0565b604082019050919050565b6000602082019050818103600083015261305b8161301f565b9050919050565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b60006130be602e8361282d565b91506130c982613062565b604082019050919050565b600060208201905081810360008301526130ed816130b1565b9050919050565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b600061315060238361282d565b915061315b826130f4565b604082019050919050565b6000602082019050818103600083015261317f81613143565b9050919050565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b60006131e2602b8361282d565b91506131ed82613186565b604082019050919050565b60006020820190508181036000830152613211816131d5565b9050919050565b7f4e6f7420656e6f75676820737570706c79206c6566742e000000000000000000600082015250565b600061324e60178361282d565b915061325982613218565b602082019050919050565b6000602082019050818103600083015261327d81613241565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132be826126b3565b91506132c9836126b3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132fe576132fd613284565b5b828201905092915050565b7f436c61696d206973206e6f7420796574206f70656e2e00000000000000000000600082015250565b600061333f60168361282d565b915061334a82613309565b602082019050919050565b6000602082019050818103600083015261336e81613332565b9050919050565b600060608201905061338a600083018661293c565b613397602083018561293c565b6133a460408301846126bd565b949350505050565b60006133b7826126b3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133e9576133e8613284565b5b600182019050919050565b60006133ff826126b3565b915061340a836126b3565b92508282101561341d5761341c613284565b5b828203905092915050565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b600061345e601a8361282d565b915061346982613428565b602082019050919050565b6000602082019050818103600083015261348d81613451565b9050919050565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b60006134f060338361282d565b91506134fb82613494565b604082019050919050565b6000602082019050818103600083015261351f816134e3565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613582602f8361282d565b915061358d82613526565b604082019050919050565b600060208201905081810360008301526135b181613575565b9050919050565b600081905092915050565b60006135ce82612822565b6135d881856135b8565b93506135e881856020860161283e565b80840191505092915050565b600061360082856135c3565b915061360c82846135c3565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061367460268361282d565b915061367f82613618565b604082019050919050565b600060208201905081810360008301526136a381613667565b9050919050565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b600061370660328361282d565b9150613711826136aa565b604082019050919050565b60006020820190508181036000830152613735816136f9565b9050919050565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b600061379860268361282d565b91506137a38261373c565b604082019050919050565b600060208201905081810360008301526137c78161378b565b9050919050565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061382a60258361282d565b9150613835826137ce565b604082019050919050565b600060208201905081810360008301526138598161381d565b9050919050565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b60006138bc602a8361282d565b91506138c782613860565b604082019050919050565b600060208201905081810360008301526138eb816138af565b9050919050565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b600061394e602f8361282d565b9150613959826138f2565b604082019050919050565b6000602082019050818103600083015261397d81613941565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006139ab82613984565b6139b5818561398f565b93506139c581856020860161283e565b6139ce81612871565b840191505092915050565b60006080820190506139ee600083018761293c565b6139fb602083018661293c565b613a0860408301856126bd565b8181036060830152613a1a81846139a0565b905095945050505050565b600081519050613a3481612727565b92915050565b600060208284031215613a5057613a4f6126f1565b5b6000613a5e84828501613a25565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613aa1826126b3565b9150613aac836126b3565b925082613abc57613abb613a67565b5b828204905092915050565b6000613ad2826126b3565b9150613add836126b3565b925082613aed57613aec613a67565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212203db26e01c8ca6a36b2a50ca91bdd44f72ec49dd0a7d64795e3f0e8ea1e0d685964736f6c634300080e0033
Deployed Bytecode Sourcemap
47813:2319:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47928:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24698:372;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49667:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26584:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28146:214;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27667:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;48058:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22955:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49213:88;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29022:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23619:1007;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29255:177;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49309:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47892:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23132:187;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50020:109;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48996:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26393:124;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48098:76;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25134:221;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4449:94;;;:::i;:::-;;47971:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3798:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48387:601;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26753:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48016:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28432:288;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29503:355;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26928:335;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49539:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49100:105;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49419:112;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49816:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28791:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49926:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4698:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47928:36;;;;:::o;24698:372::-;24800:4;24852:25;24837:40;;;:11;:40;;;;:105;;;;24909:33;24894:48;;;:11;:48;;;;24837:105;:172;;;;24974:35;24959:50;;;:11;:50;;;;24837:172;:225;;;;25026:36;25050:11;25026:23;:36::i;:::-;24837:225;24817:245;;24698:372;;;:::o;49667:141::-;4029:12;:10;:12::i;:::-;4018:23;;:7;:5;:7::i;:::-;:23;;;4010:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49765:6:::1;49749:13;:22;;;;49796:4;49782:11;:18;;;;49667:141:::0;;:::o;26584:100::-;26638:13;26671:5;26664:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26584:100;:::o;28146:214::-;28214:7;28242:16;28250:7;28242;:16::i;:::-;28234:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;28328:15;:24;28344:7;28328:24;;;;;;;;;;;;;;;;;;;;;28321:31;;28146:214;;;:::o;27667:413::-;27740:13;27756:24;27772:7;27756:15;:24::i;:::-;27740:40;;27805:5;27799:11;;:2;:11;;;27791:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;27900:5;27884:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;27909:37;27926:5;27933:12;:10;:12::i;:::-;27909:16;:37::i;:::-;27884:62;27862:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;28044:28;28053:2;28057:7;28066:5;28044:8;:28::i;:::-;27729:351;27667:413;;:::o;48058:33::-;;;;:::o;22955:100::-;23008:7;23035:12;;23028:19;;22955:100;:::o;49213:88::-;4029:12;:10;:12::i;:::-;4018:23;;:7;:5;:7::i;:::-;:23;;;4010:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49289:4:::1;49277:9;;:16;;;;;;;;;;;;;;;;;;49213:88:::0;:::o;29022:162::-;29148:28;29158:4;29164:2;29168:7;29148:9;:28::i;:::-;29022:162;;;:::o;23619:1007::-;23708:7;23744:16;23754:5;23744:9;:16::i;:::-;23736:5;:24;23728:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23810:22;23835:13;:11;:13::i;:::-;23810:38;;23859:19;23889:25;24078:9;24073:466;24093:14;24089:1;:18;24073:466;;;24133:31;24167:11;:14;24179:1;24167:14;;;;;;;;;;;24133:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24230:1;24204:28;;:9;:14;;;:28;;;24200:111;;24277:9;:14;;;24257:34;;24200:111;24354:5;24333:26;;:17;:26;;;24329:195;;24403:5;24388:11;:20;24384:85;;24444:1;24437:8;;;;;;;;;24384:85;24491:13;;;;;;;24329:195;24114:425;24109:3;;;;;;;24073:466;;;;24562:56;;;;;;;;;;:::i;:::-;;;;;;;;23619:1007;;;;;:::o;29255:177::-;29385:39;29402:4;29408:2;29412:7;29385:39;;;;;;;;;;;;:16;:39::i;:::-;29255:177;;;:::o;49309:102::-;4029:12;:10;:12::i;:::-;4018:23;;:7;:5;:7::i;:::-;:23;;;4010:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49400:3:::1;49381:16;:22;;;;49309:102:::0;:::o;47892:29::-;;;;;;;;;;;;;:::o;23132:187::-;23199:7;23235:13;:11;:13::i;:::-;23227:5;:21;23219:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;23306:5;23299:12;;23132:187;;;:::o;50020:109::-;50080:7;4029:12;:10;:12::i;:::-;4018:23;;:7;:5;:7::i;:::-;:23;;;4010:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50107:14:::1;;50100:21;;50020:109:::0;:::o;48996:96::-;4029:12;:10;:12::i;:::-;4018:23;;:7;:5;:7::i;:::-;:23;;;4010:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49077:7:::1;49065:9;:19;;;;48996:96:::0;:::o;26393:124::-;26457:7;26484:20;26496:7;26484:11;:20::i;:::-;:25;;;26477:32;;26393:124;;;:::o;48098:76::-;;;;;;;;;;;;;:::o;25134:221::-;25198:7;25243:1;25226:19;;:5;:19;;;25218:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;25319:12;:19;25332:5;25319:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;25311:36;;25304:43;;25134:221;;;:::o;4449:94::-;4029:12;:10;:12::i;:::-;4018:23;;:7;:5;:7::i;:::-;:23;;;4010:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4514:21:::1;4532:1;4514:9;:21::i;:::-;4449:94::o:0;47971:38::-;;;;:::o;3798:87::-;3844:7;3871:6;;;;;;;;;;;3864:13;;3798:87;:::o;48387:601::-;48472:8;48453:16;;:27;48445:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;48568:9;;48556:8;48527:14;:26;48542:10;48527:26;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:50;;48519:59;;;;;;48597:9;;;;;;;;;;;48589:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;48650:9;48646:245;48665:8;48663:1;:10;48646:245;;;48707:13;;48689:14;;:31;48686:69;;48741:11;;48724:14;:28;;;;48686:69;48769:16;;;;;;;;;;;:33;;;48803:16;;;;;;;;;;;48821:10;48833:14;;48769:79;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48863:14;;:16;;;;;;;;;:::i;:::-;;;;;;48675:3;;;;;:::i;:::-;;;;48646:245;;;;48933:8;48903:14;:26;48918:10;48903:26;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;48972:8;48952:16;;:28;;;;;;;:::i;:::-;;;;;;;;48387:601;:::o;26753:104::-;26809:13;26842:7;26835:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26753:104;:::o;48016:35::-;;;;:::o;28432:288::-;28539:12;:10;:12::i;:::-;28527:24;;:8;:24;;;28519:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;28640:8;28595:18;:32;28614:12;:10;:12::i;:::-;28595:32;;;;;;;;;;;;;;;:42;28628:8;28595:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;28693:8;28664:48;;28679:12;:10;:12::i;:::-;28664:48;;;28703:8;28664:48;;;;;;:::i;:::-;;;;;;;;28432:288;;:::o;29503:355::-;29662:28;29672:4;29678:2;29682:7;29662:9;:28::i;:::-;29723:48;29746:4;29752:2;29756:7;29765:5;29723:22;:48::i;:::-;29701:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;29503:355;;;;:::o;26928:335::-;27001:13;27035:16;27043:7;27035;:16::i;:::-;27027:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;27116:21;27140:10;:8;:10::i;:::-;27116:34;;27193:1;27174:7;27168:21;:26;:87;;;;;;;;;;;;;;;;;27221:7;27230:18;:7;:16;:18::i;:::-;27204:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;27168:87;27161:94;;;26928:335;;;:::o;49539:120::-;4029:12;:10;:12::i;:::-;4018:23;;:7;:5;:7::i;:::-;:23;;;4010:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49639:12:::1;49620:16;;:31;;;;;;;;;;;;;;;;;;49539:120:::0;:::o;49100:105::-;4029:12;:10;:12::i;:::-;4018:23;;:7;:5;:7::i;:::-;:23;;;4010:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49191:6:::1;49174:14;:23;;;;49100:105:::0;:::o;49419:112::-;4029:12;:10;:12::i;:::-;4018:23;;:7;:5;:7::i;:::-;:23;;;4010:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49515:8:::1;49496:16;;:27;;;;;;;;;;;;;;;;;;49419:112:::0;:::o;49816:102::-;49867:7;49894:16;;49887:23;;49816:102;:::o;28791:164::-;28888:4;28912:18;:25;28931:5;28912:25;;;;;;;;;;;;;;;:35;28938:8;28912:35;;;;;;;;;;;;;;;;;;;;;;;;;28905:42;;28791:164;;;;:::o;49926:86::-;49971:4;49995:9;;;;;;;;;;;49988:16;;49926:86;:::o;4698:192::-;4029:12;:10;:12::i;:::-;4018:23;;:7;:5;:7::i;:::-;:23;;;4010:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4807:1:::1;4787:22;;:8;:22;;::::0;4779:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4863:19;4873:8;4863:9;:19::i;:::-;4698:192:::0;:::o;15254:157::-;15339:4;15378:25;15363:40;;;:11;:40;;;;15356:47;;15254:157;;;:::o;2656:98::-;2709:7;2736:10;2729:17;;2656:98;:::o;30113:111::-;30170:4;30204:12;;30194:7;:22;30187:29;;30113:111;;;:::o;35033:196::-;35175:2;35148:15;:24;35164:7;35148:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;35213:7;35209:2;35193:28;;35202:5;35193:28;;;;;;;;;;;;35033:196;;;:::o;32913:2002::-;33028:35;33066:20;33078:7;33066:11;:20::i;:::-;33028:58;;33099:22;33141:13;:18;;;33125:34;;:12;:10;:12::i;:::-;:34;;;:87;;;;33200:12;:10;:12::i;:::-;33176:36;;:20;33188:7;33176:11;:20::i;:::-;:36;;;33125:87;:154;;;;33229:50;33246:13;:18;;;33266:12;:10;:12::i;:::-;33229:16;:50::i;:::-;33125:154;33099:181;;33301:17;33293:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;33416:4;33394:26;;:13;:18;;;:26;;;33386:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;33496:1;33482:16;;:2;:16;;;33474:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;33553:43;33575:4;33581:2;33585:7;33594:1;33553:21;:43::i;:::-;33661:49;33678:1;33682:7;33691:13;:18;;;33661:8;:49::i;:::-;34036:1;34006:12;:18;34019:4;34006:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34080:1;34052:12;:16;34065:2;34052:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34126:2;34098:11;:20;34110:7;34098:20;;;;;;;;;;;:25;;;:30;;;;;;;;;;;;;;;;;;34188:15;34143:11;:20;34155:7;34143:20;;;;;;;;;;;:35;;;:61;;;;;;;;;;;;;;;;;;34456:19;34488:1;34478:7;:11;34456:33;;34549:1;34508:43;;:11;:24;34520:11;34508:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;34504:295;;34576:20;34584:11;34576:7;:20::i;:::-;34572:212;;;34653:13;:18;;;34621:11;:24;34633:11;34621:24;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;34736:13;:28;;;34694:11;:24;34706:11;34694:24;;;;;;;;;;;:39;;;:70;;;;;;;;;;;;;;;;;;34572:212;34504:295;33981:829;34846:7;34842:2;34827:27;;34836:4;34827:27;;;;;;;;;;;;34865:42;34886:4;34892:2;34896:7;34905:1;34865:20;:42::i;:::-;33017:1898;;32913:2002;;;:::o;25794:537::-;25855:21;;:::i;:::-;25897:16;25905:7;25897;:16::i;:::-;25889:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26003:12;26018:7;26003:22;;25998:245;26035:1;26027:4;:9;25998:245;;26065:31;26099:11;:17;26111:4;26099:17;;;;;;;;;;;26065:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26165:1;26139:28;;:9;:14;;;:28;;;26135:93;;26199:9;26192:16;;;;;;26135:93;26046:197;26038:6;;;;;;;;25998:245;;;;26266:57;;;;;;;;;;:::i;:::-;;;;;;;;25794:537;;;;:::o;4898:173::-;4954:16;4973:6;;;;;;;;;;;4954:25;;4999:8;4990:6;;:17;;;;;;;;;;;;;;;;;;5054:8;5023:40;;5044:8;5023:40;;;;;;;;;;;;4943:128;4898:173;:::o;35794:804::-;35949:4;35970:15;:2;:13;;;:15::i;:::-;35966:625;;;36022:2;36006:36;;;36043:12;:10;:12::i;:::-;36057:4;36063:7;36072:5;36006:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;36002:534;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36269:1;36252:6;:13;:18;36248:273;;36295:61;;;;;;;;;;:::i;:::-;;;;;;;;36248:273;36471:6;36465:13;36456:6;36452:2;36448:15;36441:38;36002:534;36139:45;;;36129:55;;;:6;:55;;;;36122:62;;;;;35966:625;36575:4;36568:11;;35794:804;;;;;;;:::o;27511:94::-;27562:13;27588:9;;;;;;;;;;;;;;27511:94;:::o;341:723::-;397:13;627:1;618:5;:10;614:53;;645:10;;;;;;;;;;;;;;;;;;;;;614:53;677:12;692:5;677:20;;708:14;733:78;748:1;740:4;:9;733:78;;766:8;;;;;:::i;:::-;;;;797:2;789:10;;;;;:::i;:::-;;;733:78;;;821:19;853:6;843:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;821:39;;871:154;887:1;878:5;:10;871:154;;915:1;905:11;;;;;:::i;:::-;;;982:2;974:5;:10;;;;:::i;:::-;961:2;:24;;;;:::i;:::-;948:39;;931:6;938;931:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;1011:2;1002:11;;;;;:::i;:::-;;;871:154;;;1049:6;1035:21;;;;;341:723;;;;:::o;37086:159::-;;;;;:::o;37657:158::-;;;;;:::o;5775:387::-;5835:4;6043:12;6110:7;6098:20;6090:28;;6153:1;6146:4;:8;6139:15;;;5775:387;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:75::-;475:6;508:2;502:9;492:19;;442:75;:::o;523:117::-;632:1;629;622:12;646:117;755:1;752;745:12;769:149;805:7;845:66;838:5;834:78;823:89;;769:149;;;:::o;924:120::-;996:23;1013:5;996:23;:::i;:::-;989:5;986:34;976:62;;1034:1;1031;1024:12;976:62;924:120;:::o;1050:137::-;1095:5;1133:6;1120:20;1111:29;;1149:32;1175:5;1149:32;:::i;:::-;1050:137;;;;:::o;1193:327::-;1251:6;1300:2;1288:9;1279:7;1275:23;1271:32;1268:119;;;1306:79;;:::i;:::-;1268:119;1426:1;1451:52;1495:7;1486:6;1475:9;1471:22;1451:52;:::i;:::-;1441:62;;1397:116;1193:327;;;;:::o;1526:90::-;1560:7;1603:5;1596:13;1589:21;1578:32;;1526:90;;;:::o;1622:109::-;1703:21;1718:5;1703:21;:::i;:::-;1698:3;1691:34;1622:109;;:::o;1737:210::-;1824:4;1862:2;1851:9;1847:18;1839:26;;1875:65;1937:1;1926:9;1922:17;1913:6;1875:65;:::i;:::-;1737:210;;;;:::o;1953:122::-;2026:24;2044:5;2026:24;:::i;:::-;2019:5;2016:35;2006:63;;2065:1;2062;2055:12;2006:63;1953:122;:::o;2081:139::-;2127:5;2165:6;2152:20;2143:29;;2181:33;2208:5;2181:33;:::i;:::-;2081:139;;;;:::o;2226:474::-;2294:6;2302;2351:2;2339:9;2330:7;2326:23;2322:32;2319:119;;;2357:79;;:::i;:::-;2319:119;2477:1;2502:53;2547:7;2538:6;2527:9;2523:22;2502:53;:::i;:::-;2492:63;;2448:117;2604:2;2630:53;2675:7;2666:6;2655:9;2651:22;2630:53;:::i;:::-;2620:63;;2575:118;2226:474;;;;;:::o;2706:99::-;2758:6;2792:5;2786:12;2776:22;;2706:99;;;:::o;2811:169::-;2895:11;2929:6;2924:3;2917:19;2969:4;2964:3;2960:14;2945:29;;2811:169;;;;:::o;2986:307::-;3054:1;3064:113;3078:6;3075:1;3072:13;3064:113;;;3163:1;3158:3;3154:11;3148:18;3144:1;3139:3;3135:11;3128:39;3100:2;3097:1;3093:10;3088:15;;3064:113;;;3195:6;3192:1;3189:13;3186:101;;;3275:1;3266:6;3261:3;3257:16;3250:27;3186:101;3035:258;2986:307;;;:::o;3299:102::-;3340:6;3391:2;3387:7;3382:2;3375:5;3371:14;3367:28;3357:38;;3299:102;;;:::o;3407:364::-;3495:3;3523:39;3556:5;3523:39;:::i;:::-;3578:71;3642:6;3637:3;3578:71;:::i;:::-;3571:78;;3658:52;3703:6;3698:3;3691:4;3684:5;3680:16;3658:52;:::i;:::-;3735:29;3757:6;3735:29;:::i;:::-;3730:3;3726:39;3719:46;;3499:272;3407:364;;;;:::o;3777:313::-;3890:4;3928:2;3917:9;3913:18;3905:26;;3977:9;3971:4;3967:20;3963:1;3952:9;3948:17;3941:47;4005:78;4078:4;4069:6;4005:78;:::i;:::-;3997:86;;3777:313;;;;:::o;4096:329::-;4155:6;4204:2;4192:9;4183:7;4179:23;4175:32;4172:119;;;4210:79;;:::i;:::-;4172:119;4330:1;4355:53;4400:7;4391:6;4380:9;4376:22;4355:53;:::i;:::-;4345:63;;4301:117;4096:329;;;;:::o;4431:126::-;4468:7;4508:42;4501:5;4497:54;4486:65;;4431:126;;;:::o;4563:96::-;4600:7;4629:24;4647:5;4629:24;:::i;:::-;4618:35;;4563:96;;;:::o;4665:118::-;4752:24;4770:5;4752:24;:::i;:::-;4747:3;4740:37;4665:118;;:::o;4789:222::-;4882:4;4920:2;4909:9;4905:18;4897:26;;4933:71;5001:1;4990:9;4986:17;4977:6;4933:71;:::i;:::-;4789:222;;;;:::o;5017:122::-;5090:24;5108:5;5090:24;:::i;:::-;5083:5;5080:35;5070:63;;5129:1;5126;5119:12;5070:63;5017:122;:::o;5145:139::-;5191:5;5229:6;5216:20;5207:29;;5245:33;5272:5;5245:33;:::i;:::-;5145:139;;;;:::o;5290:474::-;5358:6;5366;5415:2;5403:9;5394:7;5390:23;5386:32;5383:119;;;5421:79;;:::i;:::-;5383:119;5541:1;5566:53;5611:7;5602:6;5591:9;5587:22;5566:53;:::i;:::-;5556:63;;5512:117;5668:2;5694:53;5739:7;5730:6;5719:9;5715:22;5694:53;:::i;:::-;5684:63;;5639:118;5290:474;;;;;:::o;5770:116::-;5840:21;5855:5;5840:21;:::i;:::-;5833:5;5830:32;5820:60;;5876:1;5873;5866:12;5820:60;5770:116;:::o;5892:133::-;5935:5;5973:6;5960:20;5951:29;;5989:30;6013:5;5989:30;:::i;:::-;5892:133;;;;:::o;6031:323::-;6087:6;6136:2;6124:9;6115:7;6111:23;6107:32;6104:119;;;6142:79;;:::i;:::-;6104:119;6262:1;6287:50;6329:7;6320:6;6309:9;6305:22;6287:50;:::i;:::-;6277:60;;6233:114;6031:323;;;;:::o;6360:619::-;6437:6;6445;6453;6502:2;6490:9;6481:7;6477:23;6473:32;6470:119;;;6508:79;;:::i;:::-;6470:119;6628:1;6653:53;6698:7;6689:6;6678:9;6674:22;6653:53;:::i;:::-;6643:63;;6599:117;6755:2;6781:53;6826:7;6817:6;6806:9;6802:22;6781:53;:::i;:::-;6771:63;;6726:118;6883:2;6909:53;6954:7;6945:6;6934:9;6930:22;6909:53;:::i;:::-;6899:63;;6854:118;6360:619;;;;;:::o;6985:329::-;7044:6;7093:2;7081:9;7072:7;7068:23;7064:32;7061:119;;;7099:79;;:::i;:::-;7061:119;7219:1;7244:53;7289:7;7280:6;7269:9;7265:22;7244:53;:::i;:::-;7234:63;;7190:117;6985:329;;;;:::o;7320:468::-;7385:6;7393;7442:2;7430:9;7421:7;7417:23;7413:32;7410:119;;;7448:79;;:::i;:::-;7410:119;7568:1;7593:53;7638:7;7629:6;7618:9;7614:22;7593:53;:::i;:::-;7583:63;;7539:117;7695:2;7721:50;7763:7;7754:6;7743:9;7739:22;7721:50;:::i;:::-;7711:60;;7666:115;7320:468;;;;;:::o;7794:117::-;7903:1;7900;7893:12;7917:117;8026:1;8023;8016:12;8040:180;8088:77;8085:1;8078:88;8185:4;8182:1;8175:15;8209:4;8206:1;8199:15;8226:281;8309:27;8331:4;8309:27;:::i;:::-;8301:6;8297:40;8439:6;8427:10;8424:22;8403:18;8391:10;8388:34;8385:62;8382:88;;;8450:18;;:::i;:::-;8382:88;8490:10;8486:2;8479:22;8269:238;8226:281;;:::o;8513:129::-;8547:6;8574:20;;:::i;:::-;8564:30;;8603:33;8631:4;8623:6;8603:33;:::i;:::-;8513:129;;;:::o;8648:307::-;8709:4;8799:18;8791:6;8788:30;8785:56;;;8821:18;;:::i;:::-;8785:56;8859:29;8881:6;8859:29;:::i;:::-;8851:37;;8943:4;8937;8933:15;8925:23;;8648:307;;;:::o;8961:154::-;9045:6;9040:3;9035;9022:30;9107:1;9098:6;9093:3;9089:16;9082:27;8961:154;;;:::o;9121:410::-;9198:5;9223:65;9239:48;9280:6;9239:48;:::i;:::-;9223:65;:::i;:::-;9214:74;;9311:6;9304:5;9297:21;9349:4;9342:5;9338:16;9387:3;9378:6;9373:3;9369:16;9366:25;9363:112;;;9394:79;;:::i;:::-;9363:112;9484:41;9518:6;9513:3;9508;9484:41;:::i;:::-;9204:327;9121:410;;;;;:::o;9550:338::-;9605:5;9654:3;9647:4;9639:6;9635:17;9631:27;9621:122;;9662:79;;:::i;:::-;9621:122;9779:6;9766:20;9804:78;9878:3;9870:6;9863:4;9855:6;9851:17;9804:78;:::i;:::-;9795:87;;9611:277;9550:338;;;;:::o;9894:943::-;9989:6;9997;10005;10013;10062:3;10050:9;10041:7;10037:23;10033:33;10030:120;;;10069:79;;:::i;:::-;10030:120;10189:1;10214:53;10259:7;10250:6;10239:9;10235:22;10214:53;:::i;:::-;10204:63;;10160:117;10316:2;10342:53;10387:7;10378:6;10367:9;10363:22;10342:53;:::i;:::-;10332:63;;10287:118;10444:2;10470:53;10515:7;10506:6;10495:9;10491:22;10470:53;:::i;:::-;10460:63;;10415:118;10600:2;10589:9;10585:18;10572:32;10631:18;10623:6;10620:30;10617:117;;;10653:79;;:::i;:::-;10617:117;10758:62;10812:7;10803:6;10792:9;10788:22;10758:62;:::i;:::-;10748:72;;10543:287;9894:943;;;;;;;:::o;10843:112::-;10896:7;10925:24;10943:5;10925:24;:::i;:::-;10914:35;;10843:112;;;:::o;10961:154::-;11050:40;11084:5;11050:40;:::i;:::-;11043:5;11040:51;11030:79;;11105:1;11102;11095:12;11030:79;10961:154;:::o;11121:171::-;11183:5;11221:6;11208:20;11199:29;;11237:49;11280:5;11237:49;:::i;:::-;11121:171;;;;:::o;11298:361::-;11373:6;11422:2;11410:9;11401:7;11397:23;11393:32;11390:119;;;11428:79;;:::i;:::-;11390:119;11548:1;11573:69;11634:7;11625:6;11614:9;11610:22;11573:69;:::i;:::-;11563:79;;11519:133;11298:361;;;;:::o;11665:474::-;11733:6;11741;11790:2;11778:9;11769:7;11765:23;11761:32;11758:119;;;11796:79;;:::i;:::-;11758:119;11916:1;11941:53;11986:7;11977:6;11966:9;11962:22;11941:53;:::i;:::-;11931:63;;11887:117;12043:2;12069:53;12114:7;12105:6;12094:9;12090:22;12069:53;:::i;:::-;12059:63;;12014:118;11665:474;;;;;:::o;12145:182::-;12285:34;12281:1;12273:6;12269:14;12262:58;12145:182;:::o;12333:366::-;12475:3;12496:67;12560:2;12555:3;12496:67;:::i;:::-;12489:74;;12572:93;12661:3;12572:93;:::i;:::-;12690:2;12685:3;12681:12;12674:19;;12333:366;;;:::o;12705:419::-;12871:4;12909:2;12898:9;12894:18;12886:26;;12958:9;12952:4;12948:20;12944:1;12933:9;12929:17;12922:47;12986:131;13112:4;12986:131;:::i;:::-;12978:139;;12705:419;;;:::o;13130:180::-;13178:77;13175:1;13168:88;13275:4;13272:1;13265:15;13299:4;13296:1;13289:15;13316:320;13360:6;13397:1;13391:4;13387:12;13377:22;;13444:1;13438:4;13434:12;13465:18;13455:81;;13521:4;13513:6;13509:17;13499:27;;13455:81;13583:2;13575:6;13572:14;13552:18;13549:38;13546:84;;13602:18;;:::i;:::-;13546:84;13367:269;13316:320;;;:::o;13642:232::-;13782:34;13778:1;13770:6;13766:14;13759:58;13851:15;13846:2;13838:6;13834:15;13827:40;13642:232;:::o;13880:366::-;14022:3;14043:67;14107:2;14102:3;14043:67;:::i;:::-;14036:74;;14119:93;14208:3;14119:93;:::i;:::-;14237:2;14232:3;14228:12;14221:19;;13880:366;;;:::o;14252:419::-;14418:4;14456:2;14445:9;14441:18;14433:26;;14505:9;14499:4;14495:20;14491:1;14480:9;14476:17;14469:47;14533:131;14659:4;14533:131;:::i;:::-;14525:139;;14252:419;;;:::o;14677:221::-;14817:34;14813:1;14805:6;14801:14;14794:58;14886:4;14881:2;14873:6;14869:15;14862:29;14677:221;:::o;14904:366::-;15046:3;15067:67;15131:2;15126:3;15067:67;:::i;:::-;15060:74;;15143:93;15232:3;15143:93;:::i;:::-;15261:2;15256:3;15252:12;15245:19;;14904:366;;;:::o;15276:419::-;15442:4;15480:2;15469:9;15465:18;15457:26;;15529:9;15523:4;15519:20;15515:1;15504:9;15500:17;15493:47;15557:131;15683:4;15557:131;:::i;:::-;15549:139;;15276:419;;;:::o;15701:244::-;15841:34;15837:1;15829:6;15825:14;15818:58;15910:27;15905:2;15897:6;15893:15;15886:52;15701:244;:::o;15951:366::-;16093:3;16114:67;16178:2;16173:3;16114:67;:::i;:::-;16107:74;;16190:93;16279:3;16190:93;:::i;:::-;16308:2;16303:3;16299:12;16292:19;;15951:366;;;:::o;16323:419::-;16489:4;16527:2;16516:9;16512:18;16504:26;;16576:9;16570:4;16566:20;16562:1;16551:9;16547:17;16540:47;16604:131;16730:4;16604:131;:::i;:::-;16596:139;;16323:419;;;:::o;16748:221::-;16888:34;16884:1;16876:6;16872:14;16865:58;16957:4;16952:2;16944:6;16940:15;16933:29;16748:221;:::o;16975:366::-;17117:3;17138:67;17202:2;17197:3;17138:67;:::i;:::-;17131:74;;17214:93;17303:3;17214:93;:::i;:::-;17332:2;17327:3;17323:12;17316:19;;16975:366;;;:::o;17347:419::-;17513:4;17551:2;17540:9;17536:18;17528:26;;17600:9;17594:4;17590:20;17586:1;17575:9;17571:17;17564:47;17628:131;17754:4;17628:131;:::i;:::-;17620:139;;17347:419;;;:::o;17772:233::-;17912:34;17908:1;17900:6;17896:14;17889:58;17981:16;17976:2;17968:6;17964:15;17957:41;17772:233;:::o;18011:366::-;18153:3;18174:67;18238:2;18233:3;18174:67;:::i;:::-;18167:74;;18250:93;18339:3;18250:93;:::i;:::-;18368:2;18363:3;18359:12;18352:19;;18011:366;;;:::o;18383:419::-;18549:4;18587:2;18576:9;18572:18;18564:26;;18636:9;18630:4;18626:20;18622:1;18611:9;18607:17;18600:47;18664:131;18790:4;18664:131;:::i;:::-;18656:139;;18383:419;;;:::o;18808:222::-;18948:34;18944:1;18936:6;18932:14;18925:58;19017:5;19012:2;19004:6;19000:15;18993:30;18808:222;:::o;19036:366::-;19178:3;19199:67;19263:2;19258:3;19199:67;:::i;:::-;19192:74;;19275:93;19364:3;19275:93;:::i;:::-;19393:2;19388:3;19384:12;19377:19;;19036:366;;;:::o;19408:419::-;19574:4;19612:2;19601:9;19597:18;19589:26;;19661:9;19655:4;19651:20;19647:1;19636:9;19632:17;19625:47;19689:131;19815:4;19689:131;:::i;:::-;19681:139;;19408:419;;;:::o;19833:230::-;19973:34;19969:1;19961:6;19957:14;19950:58;20042:13;20037:2;20029:6;20025:15;20018:38;19833:230;:::o;20069:366::-;20211:3;20232:67;20296:2;20291:3;20232:67;:::i;:::-;20225:74;;20308:93;20397:3;20308:93;:::i;:::-;20426:2;20421:3;20417:12;20410:19;;20069:366;;;:::o;20441:419::-;20607:4;20645:2;20634:9;20630:18;20622:26;;20694:9;20688:4;20684:20;20680:1;20669:9;20665:17;20658:47;20722:131;20848:4;20722:131;:::i;:::-;20714:139;;20441:419;;;:::o;20866:173::-;21006:25;21002:1;20994:6;20990:14;20983:49;20866:173;:::o;21045:366::-;21187:3;21208:67;21272:2;21267:3;21208:67;:::i;:::-;21201:74;;21284:93;21373:3;21284:93;:::i;:::-;21402:2;21397:3;21393:12;21386:19;;21045:366;;;:::o;21417:419::-;21583:4;21621:2;21610:9;21606:18;21598:26;;21670:9;21664:4;21660:20;21656:1;21645:9;21641:17;21634:47;21698:131;21824:4;21698:131;:::i;:::-;21690:139;;21417:419;;;:::o;21842:180::-;21890:77;21887:1;21880:88;21987:4;21984:1;21977:15;22011:4;22008:1;22001:15;22028:305;22068:3;22087:20;22105:1;22087:20;:::i;:::-;22082:25;;22121:20;22139:1;22121:20;:::i;:::-;22116:25;;22275:1;22207:66;22203:74;22200:1;22197:81;22194:107;;;22281:18;;:::i;:::-;22194:107;22325:1;22322;22318:9;22311:16;;22028:305;;;;:::o;22339:172::-;22479:24;22475:1;22467:6;22463:14;22456:48;22339:172;:::o;22517:366::-;22659:3;22680:67;22744:2;22739:3;22680:67;:::i;:::-;22673:74;;22756:93;22845:3;22756:93;:::i;:::-;22874:2;22869:3;22865:12;22858:19;;22517:366;;;:::o;22889:419::-;23055:4;23093:2;23082:9;23078:18;23070:26;;23142:9;23136:4;23132:20;23128:1;23117:9;23113:17;23106:47;23170:131;23296:4;23170:131;:::i;:::-;23162:139;;22889:419;;;:::o;23314:442::-;23463:4;23501:2;23490:9;23486:18;23478:26;;23514:71;23582:1;23571:9;23567:17;23558:6;23514:71;:::i;:::-;23595:72;23663:2;23652:9;23648:18;23639:6;23595:72;:::i;:::-;23677;23745:2;23734:9;23730:18;23721:6;23677:72;:::i;:::-;23314:442;;;;;;:::o;23762:233::-;23801:3;23824:24;23842:5;23824:24;:::i;:::-;23815:33;;23870:66;23863:5;23860:77;23857:103;;23940:18;;:::i;:::-;23857:103;23987:1;23980:5;23976:13;23969:20;;23762:233;;;:::o;24001:191::-;24041:4;24061:20;24079:1;24061:20;:::i;:::-;24056:25;;24095:20;24113:1;24095:20;:::i;:::-;24090:25;;24134:1;24131;24128:8;24125:34;;;24139:18;;:::i;:::-;24125:34;24184:1;24181;24177:9;24169:17;;24001:191;;;;:::o;24198:176::-;24338:28;24334:1;24326:6;24322:14;24315:52;24198:176;:::o;24380:366::-;24522:3;24543:67;24607:2;24602:3;24543:67;:::i;:::-;24536:74;;24619:93;24708:3;24619:93;:::i;:::-;24737:2;24732:3;24728:12;24721:19;;24380:366;;;:::o;24752:419::-;24918:4;24956:2;24945:9;24941:18;24933:26;;25005:9;24999:4;24995:20;24991:1;24980:9;24976:17;24969:47;25033:131;25159:4;25033:131;:::i;:::-;25025:139;;24752:419;;;:::o;25177:238::-;25317:34;25313:1;25305:6;25301:14;25294:58;25386:21;25381:2;25373:6;25369:15;25362:46;25177:238;:::o;25421:366::-;25563:3;25584:67;25648:2;25643:3;25584:67;:::i;:::-;25577:74;;25660:93;25749:3;25660:93;:::i;:::-;25778:2;25773:3;25769:12;25762:19;;25421:366;;;:::o;25793:419::-;25959:4;25997:2;25986:9;25982:18;25974:26;;26046:9;26040:4;26036:20;26032:1;26021:9;26017:17;26010:47;26074:131;26200:4;26074:131;:::i;:::-;26066:139;;25793:419;;;:::o;26218:234::-;26358:34;26354:1;26346:6;26342:14;26335:58;26427:17;26422:2;26414:6;26410:15;26403:42;26218:234;:::o;26458:366::-;26600:3;26621:67;26685:2;26680:3;26621:67;:::i;:::-;26614:74;;26697:93;26786:3;26697:93;:::i;:::-;26815:2;26810:3;26806:12;26799:19;;26458:366;;;:::o;26830:419::-;26996:4;27034:2;27023:9;27019:18;27011:26;;27083:9;27077:4;27073:20;27069:1;27058:9;27054:17;27047:47;27111:131;27237:4;27111:131;:::i;:::-;27103:139;;26830:419;;;:::o;27255:148::-;27357:11;27394:3;27379:18;;27255:148;;;;:::o;27409:377::-;27515:3;27543:39;27576:5;27543:39;:::i;:::-;27598:89;27680:6;27675:3;27598:89;:::i;:::-;27591:96;;27696:52;27741:6;27736:3;27729:4;27722:5;27718:16;27696:52;:::i;:::-;27773:6;27768:3;27764:16;27757:23;;27519:267;27409:377;;;;:::o;27792:435::-;27972:3;27994:95;28085:3;28076:6;27994:95;:::i;:::-;27987:102;;28106:95;28197:3;28188:6;28106:95;:::i;:::-;28099:102;;28218:3;28211:10;;27792:435;;;;;:::o;28233:225::-;28373:34;28369:1;28361:6;28357:14;28350:58;28442:8;28437:2;28429:6;28425:15;28418:33;28233:225;:::o;28464:366::-;28606:3;28627:67;28691:2;28686:3;28627:67;:::i;:::-;28620:74;;28703:93;28792:3;28703:93;:::i;:::-;28821:2;28816:3;28812:12;28805:19;;28464:366;;;:::o;28836:419::-;29002:4;29040:2;29029:9;29025:18;29017:26;;29089:9;29083:4;29079:20;29075:1;29064:9;29060:17;29053:47;29117:131;29243:4;29117:131;:::i;:::-;29109:139;;28836:419;;;:::o;29261:237::-;29401:34;29397:1;29389:6;29385:14;29378:58;29470:20;29465:2;29457:6;29453:15;29446:45;29261:237;:::o;29504:366::-;29646:3;29667:67;29731:2;29726:3;29667:67;:::i;:::-;29660:74;;29743:93;29832:3;29743:93;:::i;:::-;29861:2;29856:3;29852:12;29845:19;;29504:366;;;:::o;29876:419::-;30042:4;30080:2;30069:9;30065:18;30057:26;;30129:9;30123:4;30119:20;30115:1;30104:9;30100:17;30093:47;30157:131;30283:4;30157:131;:::i;:::-;30149:139;;29876:419;;;:::o;30301:225::-;30441:34;30437:1;30429:6;30425:14;30418:58;30510:8;30505:2;30497:6;30493:15;30486:33;30301:225;:::o;30532:366::-;30674:3;30695:67;30759:2;30754:3;30695:67;:::i;:::-;30688:74;;30771:93;30860:3;30771:93;:::i;:::-;30889:2;30884:3;30880:12;30873:19;;30532:366;;;:::o;30904:419::-;31070:4;31108:2;31097:9;31093:18;31085:26;;31157:9;31151:4;31147:20;31143:1;31132:9;31128:17;31121:47;31185:131;31311:4;31185:131;:::i;:::-;31177:139;;30904:419;;;:::o;31329:224::-;31469:34;31465:1;31457:6;31453:14;31446:58;31538:7;31533:2;31525:6;31521:15;31514:32;31329:224;:::o;31559:366::-;31701:3;31722:67;31786:2;31781:3;31722:67;:::i;:::-;31715:74;;31798:93;31887:3;31798:93;:::i;:::-;31916:2;31911:3;31907:12;31900:19;;31559:366;;;:::o;31931:419::-;32097:4;32135:2;32124:9;32120:18;32112:26;;32184:9;32178:4;32174:20;32170:1;32159:9;32155:17;32148:47;32212:131;32338:4;32212:131;:::i;:::-;32204:139;;31931:419;;;:::o;32356:229::-;32496:34;32492:1;32484:6;32480:14;32473:58;32565:12;32560:2;32552:6;32548:15;32541:37;32356:229;:::o;32591:366::-;32733:3;32754:67;32818:2;32813:3;32754:67;:::i;:::-;32747:74;;32830:93;32919:3;32830:93;:::i;:::-;32948:2;32943:3;32939:12;32932:19;;32591:366;;;:::o;32963:419::-;33129:4;33167:2;33156:9;33152:18;33144:26;;33216:9;33210:4;33206:20;33202:1;33191:9;33187:17;33180:47;33244:131;33370:4;33244:131;:::i;:::-;33236:139;;32963:419;;;:::o;33388:234::-;33528:34;33524:1;33516:6;33512:14;33505:58;33597:17;33592:2;33584:6;33580:15;33573:42;33388:234;:::o;33628:366::-;33770:3;33791:67;33855:2;33850:3;33791:67;:::i;:::-;33784:74;;33867:93;33956:3;33867:93;:::i;:::-;33985:2;33980:3;33976:12;33969:19;;33628:366;;;:::o;34000:419::-;34166:4;34204:2;34193:9;34189:18;34181:26;;34253:9;34247:4;34243:20;34239:1;34228:9;34224:17;34217:47;34281:131;34407:4;34281:131;:::i;:::-;34273:139;;34000:419;;;:::o;34425:98::-;34476:6;34510:5;34504:12;34494:22;;34425:98;;;:::o;34529:168::-;34612:11;34646:6;34641:3;34634:19;34686:4;34681:3;34677:14;34662:29;;34529:168;;;;:::o;34703:360::-;34789:3;34817:38;34849:5;34817:38;:::i;:::-;34871:70;34934:6;34929:3;34871:70;:::i;:::-;34864:77;;34950:52;34995:6;34990:3;34983:4;34976:5;34972:16;34950:52;:::i;:::-;35027:29;35049:6;35027:29;:::i;:::-;35022:3;35018:39;35011:46;;34793:270;34703:360;;;;:::o;35069:640::-;35264:4;35302:3;35291:9;35287:19;35279:27;;35316:71;35384:1;35373:9;35369:17;35360:6;35316:71;:::i;:::-;35397:72;35465:2;35454:9;35450:18;35441:6;35397:72;:::i;:::-;35479;35547:2;35536:9;35532:18;35523:6;35479:72;:::i;:::-;35598:9;35592:4;35588:20;35583:2;35572:9;35568:18;35561:48;35626:76;35697:4;35688:6;35626:76;:::i;:::-;35618:84;;35069:640;;;;;;;:::o;35715:141::-;35771:5;35802:6;35796:13;35787:22;;35818:32;35844:5;35818:32;:::i;:::-;35715:141;;;;:::o;35862:349::-;35931:6;35980:2;35968:9;35959:7;35955:23;35951:32;35948:119;;;35986:79;;:::i;:::-;35948:119;36106:1;36131:63;36186:7;36177:6;36166:9;36162:22;36131:63;:::i;:::-;36121:73;;36077:127;35862:349;;;;:::o;36217:180::-;36265:77;36262:1;36255:88;36362:4;36359:1;36352:15;36386:4;36383:1;36376:15;36403:185;36443:1;36460:20;36478:1;36460:20;:::i;:::-;36455:25;;36494:20;36512:1;36494:20;:::i;:::-;36489:25;;36533:1;36523:35;;36538:18;;:::i;:::-;36523:35;36580:1;36577;36573:9;36568:14;;36403:185;;;;:::o;36594:176::-;36626:1;36643:20;36661:1;36643:20;:::i;:::-;36638:25;;36677:20;36695:1;36677:20;:::i;:::-;36672:25;;36716:1;36706:35;;36721:18;;:::i;:::-;36706:35;36762:1;36759;36755:9;36750:14;;36594:176;;;;:::o;36776:180::-;36824:77;36821:1;36814:88;36921:4;36918:1;36911:15;36945:4;36942:1;36935:15
Swarm Source
ipfs://3db26e01c8ca6a36b2a50ca91bdd44f72ec49dd0a7d64795e3f0e8ea1e0d6859
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.