Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 14 from a total of 14 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Set Approval For... | 15312203 | 1325 days ago | IN | 0 ETH | 0.00052644 | ||||
| Withdraw | 15289254 | 1329 days ago | IN | 0 ETH | 0.00052151 | ||||
| Transfer From | 15289205 | 1329 days ago | IN | 0 ETH | 0.0011399 | ||||
| Mint | 15289201 | 1329 days ago | IN | 0.2 ETH | 0.00196608 | ||||
| Transfer From | 15289194 | 1329 days ago | IN | 0 ETH | 0.00082678 | ||||
| Mint | 15289186 | 1329 days ago | IN | 0.01 ETH | 0.00137245 | ||||
| Transfer From | 15289165 | 1329 days ago | IN | 0 ETH | 0.00039521 | ||||
| Mint | 15289157 | 1329 days ago | IN | 0 ETH | 0.00043452 | ||||
| Set Price | 15289149 | 1329 days ago | IN | 0 ETH | 0.00015552 | ||||
| Withdraw | 15288239 | 1329 days ago | IN | 0 ETH | 0.00019313 | ||||
| Transfer From | 15288212 | 1329 days ago | IN | 0 ETH | 0.00068274 | ||||
| Set Approval For... | 15288205 | 1329 days ago | IN | 0 ETH | 0.00047796 | ||||
| Mint | 15288188 | 1329 days ago | IN | 0.2 ETH | 0.00053338 | ||||
| Set Price | 15288144 | 1329 days ago | IN | 0 ETH | 0.00026245 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ERC721
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-08-06
*/
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
pragma solidity ^0.8.0;
/**
* @title ERC721 token receiver interface
* @dev Interface for any contract that wants to support safeTransfers
* from ERC721 asset contracts.
*/
interface IERC721Receiver {
/**
* @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
* by `operator` from `from`, this function is called.
*
* It must return its Solidity selector to confirm the token transfer.
* If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
*
* The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
*/
function onERC721Received(
address operator,
address from,
uint256 tokenId,
bytes calldata data
) external returns (bytes4);
}
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);
}
/**
* @dev Required interface of an ERC721 compliant contract.
*/
interface IERC721 is IERC165 {
/**
* @dev Emitted when `tokenId` token is transferred from `from` to `to`.
*/
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
*/
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
*/
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
/**
* @dev Returns the number of tokens in ``owner``'s account.
*/
function balanceOf(address owner) external view returns (uint256 balance);
/**
* @dev Returns the owner of the `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function ownerOf(uint256 tokenId) external view returns (address owner);
/**
* @dev Safely transfers `tokenId` token from `from` to `to`.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId,
bytes calldata data
) external;
/**
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
* are aware of the ERC721 protocol to prevent tokens from being forever locked.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId
) external;
/**
* @dev Transfers `tokenId` token from `from` to `to`.
*
* WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 tokenId
) external;
/**
* @dev Gives permission to `to` to transfer `tokenId` token to another account.
* The approval is cleared when the token is transferred.
*
* Only a single account can be approved at a time, so approving the zero address clears previous approvals.
*
* Requirements:
*
* - The caller must own the token or be an approved operator.
* - `tokenId` must exist.
*
* Emits an {Approval} event.
*/
function approve(address to, uint256 tokenId) external;
/**
* @dev Approve or remove `operator` as an operator for the caller.
* Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
*
* Requirements:
*
* - The `operator` cannot be the caller.
*
* Emits an {ApprovalForAll} event.
*/
function setApprovalForAll(address operator, bool _approved) external;
/**
* @dev Returns the account approved for `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function getApproved(uint256 tokenId) external view returns (address operator);
/**
* @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
*
* See {setApprovalForAll}
*/
function isApprovedForAll(address owner, address operator) external view returns (bool);
}
/**
* @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);
}
pragma solidity ^0.8.1;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*
* [IMPORTANT]
* ====
* You shouldn't rely on `isContract` to protect against flash loan attacks!
*
* Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
* like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
* constructor.
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize/address.code.length, which returns 0
// for contracts in construction, since the code is only stored at the end
// of the constructor execution.
return account.code.length > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, "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");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResultFromTarget(target, 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) {
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResultFromTarget(target, 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) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
* the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
*
* _Available since v4.8._
*/
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata,
string memory errorMessage
) internal view returns (bytes memory) {
if (success) {
if (returndata.length == 0) {
// only check isContract if the call was successful and the return data is empty
// otherwise we already know that it was a contract
require(isContract(target), "Address: call to non-contract");
}
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
/**
* @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason or using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function _revert(bytes memory returndata, string memory errorMessage) private pure {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
/// @solidity memory-safe-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
pragma solidity ^0.8.0;
/**
* @dev String operations.
*/
library Strings {
bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
uint8 private constant _ADDRESS_LENGTH = 20;
/**
* @dev Converts a `uint256` to its ASCII `string` decimal representation.
*/
function toString(uint256 value) internal pure returns (string memory) {
// Inspired by OraclizeAPI's implementation - MIT licence
// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol
if (value == 0) {
return "0";
}
uint256 temp = value;
uint256 digits;
while (temp != 0) {
digits++;
temp /= 10;
}
bytes memory buffer = new bytes(digits);
while (value != 0) {
digits -= 1;
buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
value /= 10;
}
return string(buffer);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
*/
function toHexString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return "0x00";
}
uint256 temp = value;
uint256 length = 0;
while (temp != 0) {
length++;
temp >>= 8;
}
return toHexString(value, length);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
*/
function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
bytes memory buffer = new bytes(2 * length + 2);
buffer[0] = "0";
buffer[1] = "x";
for (uint256 i = 2 * length + 1; i > 1; --i) {
buffer[i] = _HEX_SYMBOLS[value & 0xf];
value >>= 4;
}
require(value == 0, "Strings: hex length insufficient");
return string(buffer);
}
/**
* @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.
*/
function toHexString(address addr) internal pure returns (string memory) {
return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
}
}
/**
* @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;
}
}
/**
* @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
* the Metadata extension, but not including the Enumerable extension, which is available separately as
* {ERC721Enumerable}.
*/
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
using Address for address;
using Strings for uint256;
// Token name
string private _name;
// Token symbol
string private _symbol;
// Mapping from token ID to owner address
mapping(uint256 => address) private _owners;
// Mapping owner address to token count
mapping(address => uint256) private _balances;
// Mapping from token ID to approved address
mapping(uint256 => address) private _tokenApprovals;
// Mapping from owner to operator approvals
mapping(address => mapping(address => bool)) private _operatorApprovals;
address public _owner;
uint256 public totalSupply;
uint256 public _price;
string public _baseURI;
/**
* @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
*/
constructor(string memory name_, string memory symbol_, string memory baseURI_) {
_name = name_;
_symbol = symbol_;
_owner = msg.sender;
_baseURI = baseURI_;
}
modifier onlyOwner() {
require(msg.sender == _owner, "not owner");
_;
}
function setPrice(uint256 amount) public onlyOwner {
_price = amount;
}
function withdraw(address to, uint256 amount) public onlyOwner {
payable(to).transfer(amount);
}
function mint() payable public {
require(msg.value >= _price, "insufficient value");
totalSupply = totalSupply + 1;
_mint(msg.sender, totalSupply);
}
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
return
interfaceId == type(IERC721).interfaceId ||
interfaceId == type(IERC721Metadata).interfaceId ||
super.supportsInterface(interfaceId);
}
/**
* @dev See {IERC721-balanceOf}.
*/
function balanceOf(address owner) public view virtual override returns (uint256) {
require(owner != address(0), "ERC721: address zero is not a valid owner");
return _balances[owner];
}
/**
* @dev See {IERC721-ownerOf}.
*/
function ownerOf(uint256 tokenId) public view virtual override returns (address) {
address owner = _owners[tokenId];
require(owner != address(0), "ERC721: invalid token ID");
return owner;
}
/**
* @dev See {IERC721Metadata-name}.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev See {IERC721Metadata-symbol}.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev See {IERC721Metadata-tokenURI}.
*/
function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
_requireMinted(tokenId);
string memory baseURI = _baseURI;
return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
}
/**
* @dev See {IERC721-approve}.
*/
function approve(address to, uint256 tokenId) public virtual override {
address owner = ERC721.ownerOf(tokenId);
require(to != owner, "ERC721: approval to current owner");
require(
_msgSender() == owner || isApprovedForAll(owner, _msgSender()),
"ERC721: approve caller is not token owner or approved for all"
);
_approve(to, tokenId);
}
/**
* @dev See {IERC721-getApproved}.
*/
function getApproved(uint256 tokenId) public view virtual override returns (address) {
_requireMinted(tokenId);
return _tokenApprovals[tokenId];
}
/**
* @dev See {IERC721-setApprovalForAll}.
*/
function setApprovalForAll(address operator, bool approved) public virtual override {
_setApprovalForAll(_msgSender(), operator, approved);
}
/**
* @dev See {IERC721-isApprovedForAll}.
*/
function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
return _operatorApprovals[owner][operator];
}
/**
* @dev See {IERC721-transferFrom}.
*/
function transferFrom(
address from,
address to,
uint256 tokenId
) public virtual override {
//solhint-disable-next-line max-line-length
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner or approved");
_transfer(from, to, tokenId);
}
/**
* @dev See {IERC721-safeTransferFrom}.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId
) public virtual override {
safeTransferFrom(from, to, tokenId, "");
}
/**
* @dev See {IERC721-safeTransferFrom}.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId,
bytes memory data
) public virtual override {
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner or approved");
_safeTransfer(from, to, tokenId, data);
}
/**
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
* are aware of the ERC721 protocol to prevent tokens from being forever locked.
*
* `data` is additional data, it has no specified format and it is sent in call to `to`.
*
* This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.
* implement alternative mechanisms to perform token transfer, such as signature-based.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function _safeTransfer(
address from,
address to,
uint256 tokenId,
bytes memory data
) internal virtual {
_transfer(from, to, tokenId);
require(_checkOnERC721Received(from, to, tokenId, data), "ERC721: transfer to non ERC721Receiver implementer");
}
/**
* @dev Returns whether `tokenId` exists.
*
* Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
*
* Tokens start existing when they are minted (`_mint`),
* and stop existing when they are burned (`_burn`).
*/
function _exists(uint256 tokenId) internal view virtual returns (bool) {
return _owners[tokenId] != address(0);
}
/**
* @dev Returns whether `spender` is allowed to manage `tokenId`.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
address owner = ERC721.ownerOf(tokenId);
return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);
}
/**
* @dev Safely mints `tokenId` and transfers it to `to`.
*
* Requirements:
*
* - `tokenId` must not exist.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function _safeMint(address to, uint256 tokenId) internal virtual {
_safeMint(to, tokenId, "");
}
/**
* @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
* forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
*/
function _safeMint(
address to,
uint256 tokenId,
bytes memory data
) internal virtual {
_mint(to, tokenId);
require(
_checkOnERC721Received(address(0), to, tokenId, data),
"ERC721: transfer to non ERC721Receiver implementer"
);
}
/**
* @dev Mints `tokenId` and transfers it to `to`.
*
* WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
*
* Requirements:
*
* - `tokenId` must not exist.
* - `to` cannot be the zero address.
*
* Emits a {Transfer} event.
*/
function _mint(address to, uint256 tokenId) internal virtual {
require(to != address(0), "ERC721: mint to the zero address");
require(!_exists(tokenId), "ERC721: token already minted");
_beforeTokenTransfer(address(0), to, tokenId);
_balances[to] += 1;
_owners[tokenId] = to;
emit Transfer(address(0), to, tokenId);
_afterTokenTransfer(address(0), to, tokenId);
}
/**
* @dev Destroys `tokenId`.
* The approval is cleared when the token is burned.
* This is an internal function that does not check if the sender is authorized to operate on the token.
*
* Requirements:
*
* - `tokenId` must exist.
*
* Emits a {Transfer} event.
*/
function _burn(uint256 tokenId) internal virtual {
address owner = ERC721.ownerOf(tokenId);
_beforeTokenTransfer(owner, address(0), tokenId);
// Clear approvals
delete _tokenApprovals[tokenId];
_balances[owner] -= 1;
delete _owners[tokenId];
emit Transfer(owner, address(0), tokenId);
_afterTokenTransfer(owner, address(0), tokenId);
}
/**
* @dev Transfers `tokenId` from `from` to `to`.
* As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
*
* Emits a {Transfer} event.
*/
function _transfer(
address from,
address to,
uint256 tokenId
) internal virtual {
require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner");
require(to != address(0), "ERC721: transfer to the zero address");
_beforeTokenTransfer(from, to, tokenId);
// Clear approvals from the previous owner
delete _tokenApprovals[tokenId];
_balances[from] -= 1;
_balances[to] += 1;
_owners[tokenId] = to;
emit Transfer(from, to, tokenId);
_afterTokenTransfer(from, to, tokenId);
}
/**
* @dev Approve `to` to operate on `tokenId`
*
* Emits an {Approval} event.
*/
function _approve(address to, uint256 tokenId) internal virtual {
_tokenApprovals[tokenId] = to;
emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
}
/**
* @dev Approve `operator` to operate on all of `owner` tokens
*
* Emits an {ApprovalForAll} event.
*/
function _setApprovalForAll(
address owner,
address operator,
bool approved
) internal virtual {
require(owner != operator, "ERC721: approve to caller");
_operatorApprovals[owner][operator] = approved;
emit ApprovalForAll(owner, operator, approved);
}
/**
* @dev Reverts if the `tokenId` has not been minted yet.
*/
function _requireMinted(uint256 tokenId) internal view virtual {
require(_exists(tokenId), "ERC721: invalid token ID");
}
/**
* @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
* The call is not executed if the target address is not a contract.
*
* @param from address representing the previous owner of the given token ID
* @param to target address that will receive the tokens
* @param tokenId uint256 ID of the token to be transferred
* @param data bytes optional data to send along with the call
* @return bool whether the call correctly returned the expected magic value
*/
function _checkOnERC721Received(
address from,
address to,
uint256 tokenId,
bytes memory data
) private returns (bool) {
if (to.isContract()) {
try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {
return retval == IERC721Receiver.onERC721Received.selector;
} catch (bytes memory reason) {
if (reason.length == 0) {
revert("ERC721: transfer to non ERC721Receiver implementer");
} else {
/// @solidity memory-safe-assembly
assembly {
revert(add(32, reason), mload(reason))
}
}
}
} else {
return true;
}
}
/**
* @dev Hook that is called before any token transfer. This includes minting
* and burning.
*
* Calling conditions:
*
* - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
* transferred to `to`.
* - When `from` is zero, `tokenId` will be minted for `to`.
* - When `to` is zero, ``from``'s `tokenId` will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address from,
address to,
uint256 tokenId
) internal virtual {}
/**
* @dev Hook that is called after any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _afterTokenTransfer(
address from,
address to,
uint256 tokenId
) internal virtual {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"string","name":"baseURI_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"_baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_price","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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b5060405162002e9c38038062002e9c8339818101604052810190620000379190620001fa565b82600090805190602001906200004f929190620000cc565b50816001908051906020019062000068929190620000cc565b5033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060099080519060200190620000c2929190620000cc565b5050505062000437565b828054620000da9062000348565b90600052602060002090601f016020900481019282620000fe57600085556200014a565b82601f106200011957805160ff19168380011785556200014a565b828001600101855582156200014a579182015b82811115620001495782518255916020019190600101906200012c565b5b5090506200015991906200015d565b5090565b5b80821115620001785760008160009055506001016200015e565b5090565b6000620001936200018d84620002dc565b620002b3565b905082815260208101848484011115620001b257620001b162000417565b5b620001bf84828562000312565b509392505050565b600082601f830112620001df57620001de62000412565b5b8151620001f18482602086016200017c565b91505092915050565b60008060006060848603121562000216576200021562000421565b5b600084015167ffffffffffffffff8111156200023757620002366200041c565b5b6200024586828701620001c7565b935050602084015167ffffffffffffffff8111156200026957620002686200041c565b5b6200027786828701620001c7565b925050604084015167ffffffffffffffff8111156200029b576200029a6200041c565b5b620002a986828701620001c7565b9150509250925092565b6000620002bf620002d2565b9050620002cd82826200037e565b919050565b6000604051905090565b600067ffffffffffffffff821115620002fa57620002f9620003e3565b5b620003058262000426565b9050602081019050919050565b60005b838110156200033257808201518184015260208101905062000315565b8381111562000342576000848401525b50505050565b600060028204905060018216806200036157607f821691505b60208210811415620003785762000377620003b4565b5b50919050565b620003898262000426565b810181811067ffffffffffffffff82111715620003ab57620003aa620003e3565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b612a5580620004476000396000f3fe60806040526004361061011f5760003560e01c806370a08231116100a0578063b2bdfa7b11610064578063b2bdfa7b146103c6578063b88d4fde146103f1578063c87b56dd1461041a578063e985e9c514610457578063f3fef3a3146104945761011f565b806370a08231146102e1578063743976a01461031e57806391b7f5ed1461034957806395d89b4114610372578063a22cb4651461039d5761011f565b806318160ddd116100e757806318160ddd146101fc578063235b6ea11461022757806323b872dd1461025257806342842e0e1461027b5780636352211e146102a45761011f565b806301ffc9a71461012457806306fdde0314610161578063081812fc1461018c578063095ea7b3146101c95780631249c58b146101f2575b600080fd5b34801561013057600080fd5b5061014b60048036038101906101469190611d0c565b6104bd565b60405161015891906120b5565b60405180910390f35b34801561016d57600080fd5b5061017661059f565b60405161018391906120d0565b60405180910390f35b34801561019857600080fd5b506101b360048036038101906101ae9190611d66565b610631565b6040516101c0919061204e565b60405180910390f35b3480156101d557600080fd5b506101f060048036038101906101eb9190611ccc565b610677565b005b6101fa61078f565b005b34801561020857600080fd5b506102116107f7565b60405161021e9190612292565b60405180910390f35b34801561023357600080fd5b5061023c6107fd565b6040516102499190612292565b60405180910390f35b34801561025e57600080fd5b5061027960048036038101906102749190611bb6565b610803565b005b34801561028757600080fd5b506102a2600480360381019061029d9190611bb6565b610863565b005b3480156102b057600080fd5b506102cb60048036038101906102c69190611d66565b610883565b6040516102d8919061204e565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190611b49565b610935565b6040516103159190612292565b60405180910390f35b34801561032a57600080fd5b506103336109ed565b60405161034091906120d0565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190611d66565b610a7b565b005b34801561037e57600080fd5b50610387610b15565b60405161039491906120d0565b60405180910390f35b3480156103a957600080fd5b506103c460048036038101906103bf9190611c8c565b610ba7565b005b3480156103d257600080fd5b506103db610bbd565b6040516103e8919061204e565b60405180910390f35b3480156103fd57600080fd5b5061041860048036038101906104139190611c09565b610be3565b005b34801561042657600080fd5b50610441600480360381019061043c9190611d66565b610c45565b60405161044e91906120d0565b60405180910390f35b34801561046357600080fd5b5061047e60048036038101906104799190611b76565b610d30565b60405161048b91906120b5565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b69190611ccc565b610dc4565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061058857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610598575061059782610e9f565b5b9050919050565b6060600080546105ae906124b7565b80601f01602080910402602001604051908101604052809291908181526020018280546105da906124b7565b80156106275780601f106105fc57610100808354040283529160200191610627565b820191906000526020600020905b81548152906001019060200180831161060a57829003601f168201915b5050505050905090565b600061063c82610f09565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061068282610883565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156106f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ea90612232565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610712610f54565b73ffffffffffffffffffffffffffffffffffffffff16148061074157506107408161073b610f54565b610d30565b5b610780576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077790612252565b60405180910390fd5b61078a8383610f5c565b505050565b6008543410156107d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cb90612172565b60405180910390fd5b60016007546107e39190612346565b6007819055506107f533600754611015565b565b60075481565b60085481565b61081461080e610f54565b826111ef565b610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084a906120f2565b60405180910390fd5b61085e838383611284565b505050565b61087e83838360405180602001604052806000815250610be3565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561092c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092390612212565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099d906121d2565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600980546109fa906124b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610a26906124b7565b8015610a735780601f10610a4857610100808354040283529160200191610a73565b820191906000526020600020905b815481529060010190602001808311610a5657829003601f168201915b505050505081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0290612272565b60405180910390fd5b8060088190555050565b606060018054610b24906124b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610b50906124b7565b8015610b9d5780601f10610b7257610100808354040283529160200191610b9d565b820191906000526020600020905b815481529060010190602001808311610b8057829003601f168201915b5050505050905090565b610bb9610bb2610f54565b8383611516565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bf4610bee610f54565b836111ef565b610c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2a906120f2565b60405180910390fd5b610c3f84848484611683565b50505050565b6060610c5082610f09565b600060098054610c5f906124b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8b906124b7565b8015610cd85780601f10610cad57610100808354040283529160200191610cd8565b820191906000526020600020905b815481529060010190602001808311610cbb57829003601f168201915b505050505090506000815111610cfd5760405180602001604052806000815250610d28565b80610d07846116df565b604051602001610d1892919061202a565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b90612272565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610e9a573d6000803e3d6000fd5b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610f1281611840565b610f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4890612212565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610fcf83610883565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107c906121f2565b60405180910390fd5b61108e81611840565b156110ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c590612152565b60405180910390fd5b6110da600083836118ac565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461112a9190612346565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46111eb600083836118b1565b5050565b6000806111fb83610883565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061123d575061123c8185610d30565b5b8061127b57508373ffffffffffffffffffffffffffffffffffffffff1661126384610631565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166112a482610883565b73ffffffffffffffffffffffffffffffffffffffff16146112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190612132565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561136a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136190612192565b60405180910390fd5b6113758383836118ac565b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113fb91906123cd565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114529190612346565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46115118383836118b1565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c906121b2565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161167691906120b5565b60405180910390a3505050565b61168e848484611284565b61169a848484846118b6565b6116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d090612112565b60405180910390fd5b50505050565b60606000821415611727576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061183b565b600082905060005b600082146117595780806117429061251a565b915050600a82611752919061239c565b915061172f565b60008167ffffffffffffffff81111561177557611774612650565b5b6040519080825280601f01601f1916602001820160405280156117a75781602001600182028036833780820191505090505b5090505b60008514611834576001826117c091906123cd565b9150600a856117cf9190612563565b60306117db9190612346565b60f81b8183815181106117f1576117f0612621565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561182d919061239c565b94506117ab565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b60006118d78473ffffffffffffffffffffffffffffffffffffffff16611a4d565b15611a40578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611900610f54565b8786866040518563ffffffff1660e01b81526004016119229493929190612069565b602060405180830381600087803b15801561193c57600080fd5b505af192505050801561196d57506040513d601f19601f8201168201806040525081019061196a9190611d39565b60015b6119f0573d806000811461199d576040519150601f19603f3d011682016040523d82523d6000602084013e6119a2565b606091505b506000815114156119e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119df90612112565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611a45565b600190505b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000611a83611a7e846122d2565b6122ad565b905082815260208101848484011115611a9f57611a9e612684565b5b611aaa848285612475565b509392505050565b600081359050611ac1816129c3565b92915050565b600081359050611ad6816129da565b92915050565b600081359050611aeb816129f1565b92915050565b600081519050611b00816129f1565b92915050565b600082601f830112611b1b57611b1a61267f565b5b8135611b2b848260208601611a70565b91505092915050565b600081359050611b4381612a08565b92915050565b600060208284031215611b5f57611b5e61268e565b5b6000611b6d84828501611ab2565b91505092915050565b60008060408385031215611b8d57611b8c61268e565b5b6000611b9b85828601611ab2565b9250506020611bac85828601611ab2565b9150509250929050565b600080600060608486031215611bcf57611bce61268e565b5b6000611bdd86828701611ab2565b9350506020611bee86828701611ab2565b9250506040611bff86828701611b34565b9150509250925092565b60008060008060808587031215611c2357611c2261268e565b5b6000611c3187828801611ab2565b9450506020611c4287828801611ab2565b9350506040611c5387828801611b34565b925050606085013567ffffffffffffffff811115611c7457611c73612689565b5b611c8087828801611b06565b91505092959194509250565b60008060408385031215611ca357611ca261268e565b5b6000611cb185828601611ab2565b9250506020611cc285828601611ac7565b9150509250929050565b60008060408385031215611ce357611ce261268e565b5b6000611cf185828601611ab2565b9250506020611d0285828601611b34565b9150509250929050565b600060208284031215611d2257611d2161268e565b5b6000611d3084828501611adc565b91505092915050565b600060208284031215611d4f57611d4e61268e565b5b6000611d5d84828501611af1565b91505092915050565b600060208284031215611d7c57611d7b61268e565b5b6000611d8a84828501611b34565b91505092915050565b611d9c81612401565b82525050565b611dab81612413565b82525050565b6000611dbc82612303565b611dc68185612319565b9350611dd6818560208601612484565b611ddf81612693565b840191505092915050565b6000611df58261230e565b611dff818561232a565b9350611e0f818560208601612484565b611e1881612693565b840191505092915050565b6000611e2e8261230e565b611e38818561233b565b9350611e48818560208601612484565b80840191505092915050565b6000611e61602d8361232a565b9150611e6c826126a4565b604082019050919050565b6000611e8460328361232a565b9150611e8f826126f3565b604082019050919050565b6000611ea760258361232a565b9150611eb282612742565b604082019050919050565b6000611eca601c8361232a565b9150611ed582612791565b602082019050919050565b6000611eed60128361232a565b9150611ef8826127ba565b602082019050919050565b6000611f1060248361232a565b9150611f1b826127e3565b604082019050919050565b6000611f3360198361232a565b9150611f3e82612832565b602082019050919050565b6000611f5660298361232a565b9150611f618261285b565b604082019050919050565b6000611f7960208361232a565b9150611f84826128aa565b602082019050919050565b6000611f9c60188361232a565b9150611fa7826128d3565b602082019050919050565b6000611fbf60218361232a565b9150611fca826128fc565b604082019050919050565b6000611fe2603d8361232a565b9150611fed8261294b565b604082019050919050565b600061200560098361232a565b91506120108261299a565b602082019050919050565b6120248161246b565b82525050565b60006120368285611e23565b91506120428284611e23565b91508190509392505050565b60006020820190506120636000830184611d93565b92915050565b600060808201905061207e6000830187611d93565b61208b6020830186611d93565b612098604083018561201b565b81810360608301526120aa8184611db1565b905095945050505050565b60006020820190506120ca6000830184611da2565b92915050565b600060208201905081810360008301526120ea8184611dea565b905092915050565b6000602082019050818103600083015261210b81611e54565b9050919050565b6000602082019050818103600083015261212b81611e77565b9050919050565b6000602082019050818103600083015261214b81611e9a565b9050919050565b6000602082019050818103600083015261216b81611ebd565b9050919050565b6000602082019050818103600083015261218b81611ee0565b9050919050565b600060208201905081810360008301526121ab81611f03565b9050919050565b600060208201905081810360008301526121cb81611f26565b9050919050565b600060208201905081810360008301526121eb81611f49565b9050919050565b6000602082019050818103600083015261220b81611f6c565b9050919050565b6000602082019050818103600083015261222b81611f8f565b9050919050565b6000602082019050818103600083015261224b81611fb2565b9050919050565b6000602082019050818103600083015261226b81611fd5565b9050919050565b6000602082019050818103600083015261228b81611ff8565b9050919050565b60006020820190506122a7600083018461201b565b92915050565b60006122b76122c8565b90506122c382826124e9565b919050565b6000604051905090565b600067ffffffffffffffff8211156122ed576122ec612650565b5b6122f682612693565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006123518261246b565b915061235c8361246b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561239157612390612594565b5b828201905092915050565b60006123a78261246b565b91506123b28361246b565b9250826123c2576123c16125c3565b5b828204905092915050565b60006123d88261246b565b91506123e38361246b565b9250828210156123f6576123f5612594565b5b828203905092915050565b600061240c8261244b565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156124a2578082015181840152602081019050612487565b838111156124b1576000848401525b50505050565b600060028204905060018216806124cf57607f821691505b602082108114156124e3576124e26125f2565b5b50919050565b6124f282612693565b810181811067ffffffffffffffff8211171561251157612510612650565b5b80604052505050565b60006125258261246b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561255857612557612594565b5b600182019050919050565b600061256e8261246b565b91506125798361246b565b925082612589576125886125c3565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f696e73756666696369656e742076616c75650000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b7f6e6f74206f776e65720000000000000000000000000000000000000000000000600082015250565b6129cc81612401565b81146129d757600080fd5b50565b6129e381612413565b81146129ee57600080fd5b50565b6129fa8161241f565b8114612a0557600080fd5b50565b612a118161246b565b8114612a1c57600080fd5b5056fea26469706673582212206ffc94d446390c5a06c43f06da6171f99439761465b0bde88b833f314649dd4564736f6c63430008070033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000f526f79616c204361747320436c756200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007524320436c756200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b68747470733a2f2f726f79616c636174732e6f72672f697066732f0000000000
Deployed Bytecode
0x60806040526004361061011f5760003560e01c806370a08231116100a0578063b2bdfa7b11610064578063b2bdfa7b146103c6578063b88d4fde146103f1578063c87b56dd1461041a578063e985e9c514610457578063f3fef3a3146104945761011f565b806370a08231146102e1578063743976a01461031e57806391b7f5ed1461034957806395d89b4114610372578063a22cb4651461039d5761011f565b806318160ddd116100e757806318160ddd146101fc578063235b6ea11461022757806323b872dd1461025257806342842e0e1461027b5780636352211e146102a45761011f565b806301ffc9a71461012457806306fdde0314610161578063081812fc1461018c578063095ea7b3146101c95780631249c58b146101f2575b600080fd5b34801561013057600080fd5b5061014b60048036038101906101469190611d0c565b6104bd565b60405161015891906120b5565b60405180910390f35b34801561016d57600080fd5b5061017661059f565b60405161018391906120d0565b60405180910390f35b34801561019857600080fd5b506101b360048036038101906101ae9190611d66565b610631565b6040516101c0919061204e565b60405180910390f35b3480156101d557600080fd5b506101f060048036038101906101eb9190611ccc565b610677565b005b6101fa61078f565b005b34801561020857600080fd5b506102116107f7565b60405161021e9190612292565b60405180910390f35b34801561023357600080fd5b5061023c6107fd565b6040516102499190612292565b60405180910390f35b34801561025e57600080fd5b5061027960048036038101906102749190611bb6565b610803565b005b34801561028757600080fd5b506102a2600480360381019061029d9190611bb6565b610863565b005b3480156102b057600080fd5b506102cb60048036038101906102c69190611d66565b610883565b6040516102d8919061204e565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190611b49565b610935565b6040516103159190612292565b60405180910390f35b34801561032a57600080fd5b506103336109ed565b60405161034091906120d0565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190611d66565b610a7b565b005b34801561037e57600080fd5b50610387610b15565b60405161039491906120d0565b60405180910390f35b3480156103a957600080fd5b506103c460048036038101906103bf9190611c8c565b610ba7565b005b3480156103d257600080fd5b506103db610bbd565b6040516103e8919061204e565b60405180910390f35b3480156103fd57600080fd5b5061041860048036038101906104139190611c09565b610be3565b005b34801561042657600080fd5b50610441600480360381019061043c9190611d66565b610c45565b60405161044e91906120d0565b60405180910390f35b34801561046357600080fd5b5061047e60048036038101906104799190611b76565b610d30565b60405161048b91906120b5565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b69190611ccc565b610dc4565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061058857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610598575061059782610e9f565b5b9050919050565b6060600080546105ae906124b7565b80601f01602080910402602001604051908101604052809291908181526020018280546105da906124b7565b80156106275780601f106105fc57610100808354040283529160200191610627565b820191906000526020600020905b81548152906001019060200180831161060a57829003601f168201915b5050505050905090565b600061063c82610f09565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061068282610883565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156106f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ea90612232565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610712610f54565b73ffffffffffffffffffffffffffffffffffffffff16148061074157506107408161073b610f54565b610d30565b5b610780576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077790612252565b60405180910390fd5b61078a8383610f5c565b505050565b6008543410156107d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cb90612172565b60405180910390fd5b60016007546107e39190612346565b6007819055506107f533600754611015565b565b60075481565b60085481565b61081461080e610f54565b826111ef565b610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084a906120f2565b60405180910390fd5b61085e838383611284565b505050565b61087e83838360405180602001604052806000815250610be3565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561092c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092390612212565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099d906121d2565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600980546109fa906124b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610a26906124b7565b8015610a735780601f10610a4857610100808354040283529160200191610a73565b820191906000526020600020905b815481529060010190602001808311610a5657829003601f168201915b505050505081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0290612272565b60405180910390fd5b8060088190555050565b606060018054610b24906124b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610b50906124b7565b8015610b9d5780601f10610b7257610100808354040283529160200191610b9d565b820191906000526020600020905b815481529060010190602001808311610b8057829003601f168201915b5050505050905090565b610bb9610bb2610f54565b8383611516565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bf4610bee610f54565b836111ef565b610c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2a906120f2565b60405180910390fd5b610c3f84848484611683565b50505050565b6060610c5082610f09565b600060098054610c5f906124b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8b906124b7565b8015610cd85780601f10610cad57610100808354040283529160200191610cd8565b820191906000526020600020905b815481529060010190602001808311610cbb57829003601f168201915b505050505090506000815111610cfd5760405180602001604052806000815250610d28565b80610d07846116df565b604051602001610d1892919061202a565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b90612272565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610e9a573d6000803e3d6000fd5b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610f1281611840565b610f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4890612212565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610fcf83610883565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107c906121f2565b60405180910390fd5b61108e81611840565b156110ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c590612152565b60405180910390fd5b6110da600083836118ac565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461112a9190612346565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46111eb600083836118b1565b5050565b6000806111fb83610883565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061123d575061123c8185610d30565b5b8061127b57508373ffffffffffffffffffffffffffffffffffffffff1661126384610631565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166112a482610883565b73ffffffffffffffffffffffffffffffffffffffff16146112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190612132565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561136a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136190612192565b60405180910390fd5b6113758383836118ac565b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113fb91906123cd565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114529190612346565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46115118383836118b1565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c906121b2565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161167691906120b5565b60405180910390a3505050565b61168e848484611284565b61169a848484846118b6565b6116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d090612112565b60405180910390fd5b50505050565b60606000821415611727576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061183b565b600082905060005b600082146117595780806117429061251a565b915050600a82611752919061239c565b915061172f565b60008167ffffffffffffffff81111561177557611774612650565b5b6040519080825280601f01601f1916602001820160405280156117a75781602001600182028036833780820191505090505b5090505b60008514611834576001826117c091906123cd565b9150600a856117cf9190612563565b60306117db9190612346565b60f81b8183815181106117f1576117f0612621565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561182d919061239c565b94506117ab565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b60006118d78473ffffffffffffffffffffffffffffffffffffffff16611a4d565b15611a40578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611900610f54565b8786866040518563ffffffff1660e01b81526004016119229493929190612069565b602060405180830381600087803b15801561193c57600080fd5b505af192505050801561196d57506040513d601f19601f8201168201806040525081019061196a9190611d39565b60015b6119f0573d806000811461199d576040519150601f19603f3d011682016040523d82523d6000602084013e6119a2565b606091505b506000815114156119e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119df90612112565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611a45565b600190505b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000611a83611a7e846122d2565b6122ad565b905082815260208101848484011115611a9f57611a9e612684565b5b611aaa848285612475565b509392505050565b600081359050611ac1816129c3565b92915050565b600081359050611ad6816129da565b92915050565b600081359050611aeb816129f1565b92915050565b600081519050611b00816129f1565b92915050565b600082601f830112611b1b57611b1a61267f565b5b8135611b2b848260208601611a70565b91505092915050565b600081359050611b4381612a08565b92915050565b600060208284031215611b5f57611b5e61268e565b5b6000611b6d84828501611ab2565b91505092915050565b60008060408385031215611b8d57611b8c61268e565b5b6000611b9b85828601611ab2565b9250506020611bac85828601611ab2565b9150509250929050565b600080600060608486031215611bcf57611bce61268e565b5b6000611bdd86828701611ab2565b9350506020611bee86828701611ab2565b9250506040611bff86828701611b34565b9150509250925092565b60008060008060808587031215611c2357611c2261268e565b5b6000611c3187828801611ab2565b9450506020611c4287828801611ab2565b9350506040611c5387828801611b34565b925050606085013567ffffffffffffffff811115611c7457611c73612689565b5b611c8087828801611b06565b91505092959194509250565b60008060408385031215611ca357611ca261268e565b5b6000611cb185828601611ab2565b9250506020611cc285828601611ac7565b9150509250929050565b60008060408385031215611ce357611ce261268e565b5b6000611cf185828601611ab2565b9250506020611d0285828601611b34565b9150509250929050565b600060208284031215611d2257611d2161268e565b5b6000611d3084828501611adc565b91505092915050565b600060208284031215611d4f57611d4e61268e565b5b6000611d5d84828501611af1565b91505092915050565b600060208284031215611d7c57611d7b61268e565b5b6000611d8a84828501611b34565b91505092915050565b611d9c81612401565b82525050565b611dab81612413565b82525050565b6000611dbc82612303565b611dc68185612319565b9350611dd6818560208601612484565b611ddf81612693565b840191505092915050565b6000611df58261230e565b611dff818561232a565b9350611e0f818560208601612484565b611e1881612693565b840191505092915050565b6000611e2e8261230e565b611e38818561233b565b9350611e48818560208601612484565b80840191505092915050565b6000611e61602d8361232a565b9150611e6c826126a4565b604082019050919050565b6000611e8460328361232a565b9150611e8f826126f3565b604082019050919050565b6000611ea760258361232a565b9150611eb282612742565b604082019050919050565b6000611eca601c8361232a565b9150611ed582612791565b602082019050919050565b6000611eed60128361232a565b9150611ef8826127ba565b602082019050919050565b6000611f1060248361232a565b9150611f1b826127e3565b604082019050919050565b6000611f3360198361232a565b9150611f3e82612832565b602082019050919050565b6000611f5660298361232a565b9150611f618261285b565b604082019050919050565b6000611f7960208361232a565b9150611f84826128aa565b602082019050919050565b6000611f9c60188361232a565b9150611fa7826128d3565b602082019050919050565b6000611fbf60218361232a565b9150611fca826128fc565b604082019050919050565b6000611fe2603d8361232a565b9150611fed8261294b565b604082019050919050565b600061200560098361232a565b91506120108261299a565b602082019050919050565b6120248161246b565b82525050565b60006120368285611e23565b91506120428284611e23565b91508190509392505050565b60006020820190506120636000830184611d93565b92915050565b600060808201905061207e6000830187611d93565b61208b6020830186611d93565b612098604083018561201b565b81810360608301526120aa8184611db1565b905095945050505050565b60006020820190506120ca6000830184611da2565b92915050565b600060208201905081810360008301526120ea8184611dea565b905092915050565b6000602082019050818103600083015261210b81611e54565b9050919050565b6000602082019050818103600083015261212b81611e77565b9050919050565b6000602082019050818103600083015261214b81611e9a565b9050919050565b6000602082019050818103600083015261216b81611ebd565b9050919050565b6000602082019050818103600083015261218b81611ee0565b9050919050565b600060208201905081810360008301526121ab81611f03565b9050919050565b600060208201905081810360008301526121cb81611f26565b9050919050565b600060208201905081810360008301526121eb81611f49565b9050919050565b6000602082019050818103600083015261220b81611f6c565b9050919050565b6000602082019050818103600083015261222b81611f8f565b9050919050565b6000602082019050818103600083015261224b81611fb2565b9050919050565b6000602082019050818103600083015261226b81611fd5565b9050919050565b6000602082019050818103600083015261228b81611ff8565b9050919050565b60006020820190506122a7600083018461201b565b92915050565b60006122b76122c8565b90506122c382826124e9565b919050565b6000604051905090565b600067ffffffffffffffff8211156122ed576122ec612650565b5b6122f682612693565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006123518261246b565b915061235c8361246b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561239157612390612594565b5b828201905092915050565b60006123a78261246b565b91506123b28361246b565b9250826123c2576123c16125c3565b5b828204905092915050565b60006123d88261246b565b91506123e38361246b565b9250828210156123f6576123f5612594565b5b828203905092915050565b600061240c8261244b565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156124a2578082015181840152602081019050612487565b838111156124b1576000848401525b50505050565b600060028204905060018216806124cf57607f821691505b602082108114156124e3576124e26125f2565b5b50919050565b6124f282612693565b810181811067ffffffffffffffff8211171561251157612510612650565b5b80604052505050565b60006125258261246b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561255857612557612594565b5b600182019050919050565b600061256e8261246b565b91506125798361246b565b925082612589576125886125c3565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f696e73756666696369656e742076616c75650000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b7f6e6f74206f776e65720000000000000000000000000000000000000000000000600082015250565b6129cc81612401565b81146129d757600080fd5b50565b6129e381612413565b81146129ee57600080fd5b50565b6129fa8161241f565b8114612a0557600080fd5b50565b612a118161246b565b8114612a1c57600080fd5b5056fea26469706673582212206ffc94d446390c5a06c43f06da6171f99439761465b0bde88b833f314649dd4564736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000f526f79616c204361747320436c756200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007524320436c756200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b68747470733a2f2f726f79616c636174732e6f72672f697066732f0000000000
-----Decoded View---------------
Arg [0] : name_ (string): Royal Cats Club
Arg [1] : symbol_ (string): RC Club
Arg [2] : baseURI_ (string): https://royalcats.org/ipfs/
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [4] : 526f79616c204361747320436c75620000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [6] : 524320436c756200000000000000000000000000000000000000000000000000
Arg [7] : 000000000000000000000000000000000000000000000000000000000000001b
Arg [8] : 68747470733a2f2f726f79616c636174732e6f72672f697066732f0000000000
Deployed Bytecode Sourcemap
20713:14631:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22398:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23325:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24494:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24012:416;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22145:181;;;:::i;:::-;;21418:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21451:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25194:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25600:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23036:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22767:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21479:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21934:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23494:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24737:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21390:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25856:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23669:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24963:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22027:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22398:305;22500:4;22552:25;22537:40;;;:11;:40;;;;:105;;;;22609:33;22594:48;;;:11;:48;;;;22537:105;:158;;;;22659:36;22683:11;22659:23;:36::i;:::-;22537:158;22517:178;;22398:305;;;:::o;23325:100::-;23379:13;23412:5;23405:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23325:100;:::o;24494:171::-;24570:7;24590:23;24605:7;24590:14;:23::i;:::-;24633:15;:24;24649:7;24633:24;;;;;;;;;;;;;;;;;;;;;24626:31;;24494:171;;;:::o;24012:416::-;24093:13;24109:23;24124:7;24109:14;:23::i;:::-;24093:39;;24157:5;24151:11;;:2;:11;;;;24143:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;24251:5;24235:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;24260:37;24277:5;24284:12;:10;:12::i;:::-;24260:16;:37::i;:::-;24235:62;24213:173;;;;;;;;;;;;:::i;:::-;;;;;;;;;24399:21;24408:2;24412:7;24399:8;:21::i;:::-;24082:346;24012:416;;:::o;22145:181::-;22208:6;;22195:9;:19;;22187:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;22276:1;22262:11;;:15;;;;:::i;:::-;22248:11;:29;;;;22288:30;22294:10;22306:11;;22288:5;:30::i;:::-;22145:181::o;21418:26::-;;;;:::o;21451:21::-;;;;:::o;25194:335::-;25389:41;25408:12;:10;:12::i;:::-;25422:7;25389:18;:41::i;:::-;25381:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;25493:28;25503:4;25509:2;25513:7;25493:9;:28::i;:::-;25194:335;;;:::o;25600:185::-;25738:39;25755:4;25761:2;25765:7;25738:39;;;;;;;;;;;;:16;:39::i;:::-;25600:185;;;:::o;23036:222::-;23108:7;23128:13;23144:7;:16;23152:7;23144:16;;;;;;;;;;;;;;;;;;;;;23128:32;;23196:1;23179:19;;:5;:19;;;;23171:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;23245:5;23238:12;;;23036:222;;;:::o;22767:207::-;22839:7;22884:1;22867:19;;:5;:19;;;;22859:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22950:9;:16;22960:5;22950:16;;;;;;;;;;;;;;;;22943:23;;22767:207;;;:::o;21479:22::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21934:85::-;21886:6;;;;;;;;;;;21872:20;;:10;:20;;;21864:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;22005:6:::1;21996;:15;;;;21934:85:::0;:::o;23494:104::-;23550:13;23583:7;23576:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23494:104;:::o;24737:155::-;24832:52;24851:12;:10;:12::i;:::-;24865:8;24875;24832:18;:52::i;:::-;24737:155;;:::o;21390:21::-;;;;;;;;;;;;;:::o;25856:322::-;26030:41;26049:12;:10;:12::i;:::-;26063:7;26030:18;:41::i;:::-;26022:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;26132:38;26146:4;26152:2;26156:7;26165:4;26132:13;:38::i;:::-;25856:322;;;;:::o;23669:279::-;23742:13;23768:23;23783:7;23768:14;:23::i;:::-;23804:21;23828:8;23804:32;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23878:1;23860:7;23854:21;:25;:86;;;;;;;;;;;;;;;;;23906:7;23915:18;:7;:16;:18::i;:::-;23889:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23854:86;23847:93;;;23669:279;;;:::o;24963:164::-;25060:4;25084:18;:25;25103:5;25084:25;;;;;;;;;;;;;;;:35;25110:8;25084:35;;;;;;;;;;;;;;;;;;;;;;;;;25077:42;;24963:164;;;;:::o;22027:110::-;21886:6;;;;;;;;;;;21872:20;;:10;:20;;;21864:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;22109:2:::1;22101:20;;:28;22122:6;22101:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22027:110:::0;;:::o;20261:157::-;20346:4;20385:25;20370:40;;;:11;:40;;;;20363:47;;20261:157;;;:::o;32581:135::-;32663:16;32671:7;32663;:16::i;:::-;32655:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;32581:135;:::o;16977:98::-;17030:7;17057:10;17050:17;;16977:98;:::o;31860:174::-;31962:2;31935:15;:24;31951:7;31935:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;32018:7;32014:2;31980:46;;31989:23;32004:7;31989:14;:23::i;:::-;31980:46;;;;;;;;;;;;31860:174;;:::o;29577:439::-;29671:1;29657:16;;:2;:16;;;;29649:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;29730:16;29738:7;29730;:16::i;:::-;29729:17;29721:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;29792:45;29821:1;29825:2;29829:7;29792:20;:45::i;:::-;29867:1;29850:9;:13;29860:2;29850:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;29898:2;29879:7;:16;29887:7;29879:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;29943:7;29939:2;29918:33;;29935:1;29918:33;;;;;;;;;;;;29964:44;29992:1;29996:2;30000:7;29964:19;:44::i;:::-;29577:439;;:::o;27979:264::-;28072:4;28089:13;28105:23;28120:7;28105:14;:23::i;:::-;28089:39;;28158:5;28147:16;;:7;:16;;;:52;;;;28167:32;28184:5;28191:7;28167:16;:32::i;:::-;28147:52;:87;;;;28227:7;28203:31;;:20;28215:7;28203:11;:20::i;:::-;:31;;;28147:87;28139:96;;;27979:264;;;;:::o;31114:627::-;31273:4;31246:31;;:23;31261:7;31246:14;:23::i;:::-;:31;;;31238:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;31352:1;31338:16;;:2;:16;;;;31330:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;31408:39;31429:4;31435:2;31439:7;31408:20;:39::i;:::-;31519:15;:24;31535:7;31519:24;;;;;;;;;;;;31512:31;;;;;;;;;;;31575:1;31556:9;:15;31566:4;31556:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;31604:1;31587:9;:13;31597:2;31587:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;31635:2;31616:7;:16;31624:7;31616:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;31674:7;31670:2;31655:27;;31664:4;31655:27;;;;;;;;;;;;31695:38;31715:4;31721:2;31725:7;31695:19;:38::i;:::-;31114:627;;;:::o;32177:315::-;32332:8;32323:17;;:5;:17;;;;32315:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;32419:8;32381:18;:25;32400:5;32381:25;;;;;;;;;;;;;;;:35;32407:8;32381:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;32465:8;32443:41;;32458:5;32443:41;;;32475:8;32443:41;;;;;;:::i;:::-;;;;;;;;32177:315;;;:::o;27059:313::-;27215:28;27225:4;27231:2;27235:7;27215:9;:28::i;:::-;27262:47;27285:4;27291:2;27295:7;27304:4;27262:22;:47::i;:::-;27254:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;27059:313;;;;:::o;17494:723::-;17550:13;17780:1;17771:5;:10;17767:53;;;17798:10;;;;;;;;;;;;;;;;;;;;;17767:53;17830:12;17845:5;17830:20;;17861:14;17886:78;17901:1;17893:4;:9;17886:78;;17919:8;;;;;:::i;:::-;;;;17950:2;17942:10;;;;;:::i;:::-;;;17886:78;;;17974:19;18006:6;17996:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17974:39;;18024:154;18040:1;18031:5;:10;18024:154;;18068:1;18058:11;;;;;:::i;:::-;;;18135:2;18127:5;:10;;;;:::i;:::-;18114:2;:24;;;;:::i;:::-;18101:39;;18084:6;18091;18084:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;18164:2;18155:11;;;;;:::i;:::-;;;18024:154;;;18202:6;18188:21;;;;;17494:723;;;;:::o;27685:127::-;27750:4;27802:1;27774:30;;:7;:16;27782:7;27774:16;;;;;;;;;;;;;;;;;;;;;:30;;;;27767:37;;27685:127;;;:::o;34705:126::-;;;;:::o;35216:125::-;;;;:::o;33280:853::-;33434:4;33455:15;:2;:13;;;:15::i;:::-;33451:675;;;33507:2;33491:36;;;33528:12;:10;:12::i;:::-;33542:4;33548:7;33557:4;33491:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;33487:584;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33749:1;33732:6;:13;:18;33728:328;;;33775:60;;;;;;;;;;:::i;:::-;;;;;;;;33728:328;34006:6;34000:13;33991:6;33987:2;33983:15;33976:38;33487:584;33623:41;;;33613:51;;;:6;:51;;;;33606:58;;;;;33451:675;34110:4;34103:11;;33280:853;;;;;;;:::o;8213:326::-;8273:4;8530:1;8508:7;:19;;;:23;8501:30;;8213:326;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:139::-;469:5;507:6;494:20;485:29;;523:33;550:5;523:33;:::i;:::-;423:139;;;;:::o;568:133::-;611:5;649:6;636:20;627:29;;665:30;689:5;665:30;:::i;:::-;568:133;;;;:::o;707:137::-;752:5;790:6;777:20;768:29;;806:32;832:5;806:32;:::i;:::-;707:137;;;;:::o;850:141::-;906:5;937:6;931:13;922:22;;953:32;979:5;953:32;:::i;:::-;850:141;;;;:::o;1010:338::-;1065:5;1114:3;1107:4;1099:6;1095:17;1091:27;1081:122;;1122:79;;:::i;:::-;1081:122;1239:6;1226:20;1264:78;1338:3;1330:6;1323:4;1315:6;1311:17;1264:78;:::i;:::-;1255:87;;1071:277;1010:338;;;;:::o;1354:139::-;1400:5;1438:6;1425:20;1416:29;;1454:33;1481:5;1454:33;:::i;:::-;1354:139;;;;:::o;1499:329::-;1558:6;1607:2;1595:9;1586:7;1582:23;1578:32;1575:119;;;1613:79;;:::i;:::-;1575:119;1733:1;1758:53;1803:7;1794:6;1783:9;1779:22;1758:53;:::i;:::-;1748:63;;1704:117;1499:329;;;;:::o;1834:474::-;1902:6;1910;1959:2;1947:9;1938:7;1934:23;1930:32;1927:119;;;1965:79;;:::i;:::-;1927:119;2085:1;2110:53;2155:7;2146:6;2135:9;2131:22;2110:53;:::i;:::-;2100:63;;2056:117;2212:2;2238:53;2283:7;2274:6;2263:9;2259:22;2238:53;:::i;:::-;2228:63;;2183:118;1834:474;;;;;:::o;2314:619::-;2391:6;2399;2407;2456:2;2444:9;2435:7;2431:23;2427:32;2424:119;;;2462:79;;:::i;:::-;2424:119;2582:1;2607:53;2652:7;2643:6;2632:9;2628:22;2607:53;:::i;:::-;2597:63;;2553:117;2709:2;2735:53;2780:7;2771:6;2760:9;2756:22;2735:53;:::i;:::-;2725:63;;2680:118;2837:2;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2808:118;2314:619;;;;;:::o;2939:943::-;3034:6;3042;3050;3058;3107:3;3095:9;3086:7;3082:23;3078:33;3075:120;;;3114:79;;:::i;:::-;3075:120;3234:1;3259:53;3304:7;3295:6;3284:9;3280:22;3259:53;:::i;:::-;3249:63;;3205:117;3361:2;3387:53;3432:7;3423:6;3412:9;3408:22;3387:53;:::i;:::-;3377:63;;3332:118;3489:2;3515:53;3560:7;3551:6;3540:9;3536:22;3515:53;:::i;:::-;3505:63;;3460:118;3645:2;3634:9;3630:18;3617:32;3676:18;3668:6;3665:30;3662:117;;;3698:79;;:::i;:::-;3662:117;3803:62;3857:7;3848:6;3837:9;3833:22;3803:62;:::i;:::-;3793:72;;3588:287;2939:943;;;;;;;:::o;3888:468::-;3953:6;3961;4010:2;3998:9;3989:7;3985:23;3981:32;3978:119;;;4016:79;;:::i;:::-;3978:119;4136:1;4161:53;4206:7;4197:6;4186:9;4182:22;4161:53;:::i;:::-;4151:63;;4107:117;4263:2;4289:50;4331:7;4322:6;4311:9;4307:22;4289:50;:::i;:::-;4279:60;;4234:115;3888:468;;;;;:::o;4362:474::-;4430:6;4438;4487:2;4475:9;4466:7;4462:23;4458:32;4455:119;;;4493:79;;:::i;:::-;4455:119;4613:1;4638:53;4683:7;4674:6;4663:9;4659:22;4638:53;:::i;:::-;4628:63;;4584:117;4740:2;4766:53;4811:7;4802:6;4791:9;4787:22;4766:53;:::i;:::-;4756:63;;4711:118;4362:474;;;;;:::o;4842:327::-;4900:6;4949:2;4937:9;4928:7;4924:23;4920:32;4917:119;;;4955:79;;:::i;:::-;4917:119;5075:1;5100:52;5144:7;5135:6;5124:9;5120:22;5100:52;:::i;:::-;5090:62;;5046:116;4842:327;;;;:::o;5175:349::-;5244:6;5293:2;5281:9;5272:7;5268:23;5264:32;5261:119;;;5299:79;;:::i;:::-;5261:119;5419:1;5444:63;5499:7;5490:6;5479:9;5475:22;5444:63;:::i;:::-;5434:73;;5390:127;5175:349;;;;:::o;5530:329::-;5589:6;5638:2;5626:9;5617:7;5613:23;5609:32;5606:119;;;5644:79;;:::i;:::-;5606:119;5764:1;5789:53;5834:7;5825:6;5814:9;5810:22;5789:53;:::i;:::-;5779:63;;5735:117;5530:329;;;;:::o;5865:118::-;5952:24;5970:5;5952:24;:::i;:::-;5947:3;5940:37;5865:118;;:::o;5989:109::-;6070:21;6085:5;6070:21;:::i;:::-;6065:3;6058:34;5989:109;;:::o;6104:360::-;6190:3;6218:38;6250:5;6218:38;:::i;:::-;6272:70;6335:6;6330:3;6272:70;:::i;:::-;6265:77;;6351:52;6396:6;6391:3;6384:4;6377:5;6373:16;6351:52;:::i;:::-;6428:29;6450:6;6428:29;:::i;:::-;6423:3;6419:39;6412:46;;6194:270;6104:360;;;;:::o;6470:364::-;6558:3;6586:39;6619:5;6586:39;:::i;:::-;6641:71;6705:6;6700:3;6641:71;:::i;:::-;6634:78;;6721:52;6766:6;6761:3;6754:4;6747:5;6743:16;6721:52;:::i;:::-;6798:29;6820:6;6798:29;:::i;:::-;6793:3;6789:39;6782:46;;6562:272;6470:364;;;;:::o;6840:377::-;6946:3;6974:39;7007:5;6974:39;:::i;:::-;7029:89;7111:6;7106:3;7029:89;:::i;:::-;7022:96;;7127:52;7172:6;7167:3;7160:4;7153:5;7149:16;7127:52;:::i;:::-;7204:6;7199:3;7195:16;7188:23;;6950:267;6840:377;;;;:::o;7223:366::-;7365:3;7386:67;7450:2;7445:3;7386:67;:::i;:::-;7379:74;;7462:93;7551:3;7462:93;:::i;:::-;7580:2;7575:3;7571:12;7564:19;;7223:366;;;:::o;7595:::-;7737:3;7758:67;7822:2;7817:3;7758:67;:::i;:::-;7751:74;;7834:93;7923:3;7834:93;:::i;:::-;7952:2;7947:3;7943:12;7936:19;;7595:366;;;:::o;7967:::-;8109:3;8130:67;8194:2;8189:3;8130:67;:::i;:::-;8123:74;;8206:93;8295:3;8206:93;:::i;:::-;8324:2;8319:3;8315:12;8308:19;;7967:366;;;:::o;8339:::-;8481:3;8502:67;8566:2;8561:3;8502:67;:::i;:::-;8495:74;;8578:93;8667:3;8578:93;:::i;:::-;8696:2;8691:3;8687:12;8680:19;;8339:366;;;:::o;8711:::-;8853:3;8874:67;8938:2;8933:3;8874:67;:::i;:::-;8867:74;;8950:93;9039:3;8950:93;:::i;:::-;9068:2;9063:3;9059:12;9052:19;;8711:366;;;:::o;9083:::-;9225:3;9246:67;9310:2;9305:3;9246:67;:::i;:::-;9239:74;;9322:93;9411:3;9322:93;:::i;:::-;9440:2;9435:3;9431:12;9424:19;;9083:366;;;:::o;9455:::-;9597:3;9618:67;9682:2;9677:3;9618:67;:::i;:::-;9611:74;;9694:93;9783:3;9694:93;:::i;:::-;9812:2;9807:3;9803:12;9796:19;;9455:366;;;:::o;9827:::-;9969:3;9990:67;10054:2;10049:3;9990:67;:::i;:::-;9983:74;;10066:93;10155:3;10066:93;:::i;:::-;10184:2;10179:3;10175:12;10168:19;;9827:366;;;:::o;10199:::-;10341:3;10362:67;10426:2;10421:3;10362:67;:::i;:::-;10355:74;;10438:93;10527:3;10438:93;:::i;:::-;10556:2;10551:3;10547:12;10540:19;;10199:366;;;:::o;10571:::-;10713:3;10734:67;10798:2;10793:3;10734:67;:::i;:::-;10727:74;;10810:93;10899:3;10810:93;:::i;:::-;10928:2;10923:3;10919:12;10912:19;;10571:366;;;:::o;10943:::-;11085:3;11106:67;11170:2;11165:3;11106:67;:::i;:::-;11099:74;;11182:93;11271:3;11182:93;:::i;:::-;11300:2;11295:3;11291:12;11284:19;;10943:366;;;:::o;11315:::-;11457:3;11478:67;11542:2;11537:3;11478:67;:::i;:::-;11471:74;;11554:93;11643:3;11554:93;:::i;:::-;11672:2;11667:3;11663:12;11656:19;;11315:366;;;:::o;11687:365::-;11829:3;11850:66;11914:1;11909:3;11850:66;:::i;:::-;11843:73;;11925:93;12014:3;11925:93;:::i;:::-;12043:2;12038:3;12034:12;12027:19;;11687:365;;;:::o;12058:118::-;12145:24;12163:5;12145:24;:::i;:::-;12140:3;12133:37;12058:118;;:::o;12182:435::-;12362:3;12384:95;12475:3;12466:6;12384:95;:::i;:::-;12377:102;;12496:95;12587:3;12578:6;12496:95;:::i;:::-;12489:102;;12608:3;12601:10;;12182:435;;;;;:::o;12623:222::-;12716:4;12754:2;12743:9;12739:18;12731:26;;12767:71;12835:1;12824:9;12820:17;12811:6;12767:71;:::i;:::-;12623:222;;;;:::o;12851:640::-;13046:4;13084:3;13073:9;13069:19;13061:27;;13098:71;13166:1;13155:9;13151:17;13142:6;13098:71;:::i;:::-;13179:72;13247:2;13236:9;13232:18;13223:6;13179:72;:::i;:::-;13261;13329:2;13318:9;13314:18;13305:6;13261:72;:::i;:::-;13380:9;13374:4;13370:20;13365:2;13354:9;13350:18;13343:48;13408:76;13479:4;13470:6;13408:76;:::i;:::-;13400:84;;12851:640;;;;;;;:::o;13497:210::-;13584:4;13622:2;13611:9;13607:18;13599:26;;13635:65;13697:1;13686:9;13682:17;13673:6;13635:65;:::i;:::-;13497:210;;;;:::o;13713:313::-;13826:4;13864:2;13853:9;13849:18;13841:26;;13913:9;13907:4;13903:20;13899:1;13888:9;13884:17;13877:47;13941:78;14014:4;14005:6;13941:78;:::i;:::-;13933:86;;13713:313;;;;:::o;14032:419::-;14198:4;14236:2;14225:9;14221:18;14213:26;;14285:9;14279:4;14275:20;14271:1;14260:9;14256:17;14249:47;14313:131;14439:4;14313:131;:::i;:::-;14305:139;;14032:419;;;:::o;14457:::-;14623:4;14661:2;14650:9;14646:18;14638:26;;14710:9;14704:4;14700:20;14696:1;14685:9;14681:17;14674:47;14738:131;14864:4;14738:131;:::i;:::-;14730:139;;14457:419;;;:::o;14882:::-;15048:4;15086:2;15075:9;15071:18;15063:26;;15135:9;15129:4;15125:20;15121:1;15110:9;15106:17;15099:47;15163:131;15289:4;15163:131;:::i;:::-;15155:139;;14882:419;;;:::o;15307:::-;15473:4;15511:2;15500:9;15496:18;15488:26;;15560:9;15554:4;15550:20;15546:1;15535:9;15531:17;15524:47;15588:131;15714:4;15588:131;:::i;:::-;15580:139;;15307:419;;;:::o;15732:::-;15898:4;15936:2;15925:9;15921:18;15913:26;;15985:9;15979:4;15975:20;15971:1;15960:9;15956:17;15949:47;16013:131;16139:4;16013:131;:::i;:::-;16005:139;;15732:419;;;:::o;16157:::-;16323:4;16361:2;16350:9;16346:18;16338:26;;16410:9;16404:4;16400:20;16396:1;16385:9;16381:17;16374:47;16438:131;16564:4;16438:131;:::i;:::-;16430:139;;16157:419;;;:::o;16582:::-;16748:4;16786:2;16775:9;16771:18;16763:26;;16835:9;16829:4;16825:20;16821:1;16810:9;16806:17;16799:47;16863:131;16989:4;16863:131;:::i;:::-;16855:139;;16582:419;;;:::o;17007:::-;17173:4;17211:2;17200:9;17196:18;17188:26;;17260:9;17254:4;17250:20;17246:1;17235:9;17231:17;17224:47;17288:131;17414:4;17288:131;:::i;:::-;17280:139;;17007:419;;;:::o;17432:::-;17598:4;17636:2;17625:9;17621:18;17613:26;;17685:9;17679:4;17675:20;17671:1;17660:9;17656:17;17649:47;17713:131;17839:4;17713:131;:::i;:::-;17705:139;;17432:419;;;:::o;17857:::-;18023:4;18061:2;18050:9;18046:18;18038:26;;18110:9;18104:4;18100:20;18096:1;18085:9;18081:17;18074:47;18138:131;18264:4;18138:131;:::i;:::-;18130:139;;17857:419;;;:::o;18282:::-;18448:4;18486:2;18475:9;18471:18;18463:26;;18535:9;18529:4;18525:20;18521:1;18510:9;18506:17;18499:47;18563:131;18689:4;18563:131;:::i;:::-;18555:139;;18282:419;;;:::o;18707:::-;18873:4;18911:2;18900:9;18896:18;18888:26;;18960:9;18954:4;18950:20;18946:1;18935:9;18931:17;18924:47;18988:131;19114:4;18988:131;:::i;:::-;18980:139;;18707:419;;;:::o;19132:::-;19298:4;19336:2;19325:9;19321:18;19313:26;;19385:9;19379:4;19375:20;19371:1;19360:9;19356:17;19349:47;19413:131;19539:4;19413:131;:::i;:::-;19405:139;;19132:419;;;:::o;19557:222::-;19650:4;19688:2;19677:9;19673:18;19665:26;;19701:71;19769:1;19758:9;19754:17;19745:6;19701:71;:::i;:::-;19557:222;;;;:::o;19785:129::-;19819:6;19846:20;;:::i;:::-;19836:30;;19875:33;19903:4;19895:6;19875:33;:::i;:::-;19785:129;;;:::o;19920:75::-;19953:6;19986:2;19980:9;19970:19;;19920:75;:::o;20001:307::-;20062:4;20152:18;20144:6;20141:30;20138:56;;;20174:18;;:::i;:::-;20138:56;20212:29;20234:6;20212:29;:::i;:::-;20204:37;;20296:4;20290;20286:15;20278:23;;20001:307;;;:::o;20314:98::-;20365:6;20399:5;20393:12;20383:22;;20314:98;;;:::o;20418:99::-;20470:6;20504:5;20498:12;20488:22;;20418:99;;;:::o;20523:168::-;20606:11;20640:6;20635:3;20628:19;20680:4;20675:3;20671:14;20656:29;;20523:168;;;;:::o;20697:169::-;20781:11;20815:6;20810:3;20803:19;20855:4;20850:3;20846:14;20831:29;;20697:169;;;;:::o;20872:148::-;20974:11;21011:3;20996:18;;20872:148;;;;:::o;21026:305::-;21066:3;21085:20;21103:1;21085:20;:::i;:::-;21080:25;;21119:20;21137:1;21119:20;:::i;:::-;21114:25;;21273:1;21205:66;21201:74;21198:1;21195:81;21192:107;;;21279:18;;:::i;:::-;21192:107;21323:1;21320;21316:9;21309:16;;21026:305;;;;:::o;21337:185::-;21377:1;21394:20;21412:1;21394:20;:::i;:::-;21389:25;;21428:20;21446:1;21428:20;:::i;:::-;21423:25;;21467:1;21457:35;;21472:18;;:::i;:::-;21457:35;21514:1;21511;21507:9;21502:14;;21337:185;;;;:::o;21528:191::-;21568:4;21588:20;21606:1;21588:20;:::i;:::-;21583:25;;21622:20;21640:1;21622:20;:::i;:::-;21617:25;;21661:1;21658;21655:8;21652:34;;;21666:18;;:::i;:::-;21652:34;21711:1;21708;21704:9;21696:17;;21528:191;;;;:::o;21725:96::-;21762:7;21791:24;21809:5;21791:24;:::i;:::-;21780:35;;21725:96;;;:::o;21827:90::-;21861:7;21904:5;21897:13;21890:21;21879:32;;21827:90;;;:::o;21923:149::-;21959:7;21999:66;21992:5;21988:78;21977:89;;21923:149;;;:::o;22078:126::-;22115:7;22155:42;22148:5;22144:54;22133:65;;22078:126;;;:::o;22210:77::-;22247:7;22276:5;22265:16;;22210:77;;;:::o;22293:154::-;22377:6;22372:3;22367;22354:30;22439:1;22430:6;22425:3;22421:16;22414:27;22293:154;;;:::o;22453:307::-;22521:1;22531:113;22545:6;22542:1;22539:13;22531:113;;;22630:1;22625:3;22621:11;22615:18;22611:1;22606:3;22602:11;22595:39;22567:2;22564:1;22560:10;22555:15;;22531:113;;;22662:6;22659:1;22656:13;22653:101;;;22742:1;22733:6;22728:3;22724:16;22717:27;22653:101;22502:258;22453:307;;;:::o;22766:320::-;22810:6;22847:1;22841:4;22837:12;22827:22;;22894:1;22888:4;22884:12;22915:18;22905:81;;22971:4;22963:6;22959:17;22949:27;;22905:81;23033:2;23025:6;23022:14;23002:18;22999:38;22996:84;;;23052:18;;:::i;:::-;22996:84;22817:269;22766:320;;;:::o;23092:281::-;23175:27;23197:4;23175:27;:::i;:::-;23167:6;23163:40;23305:6;23293:10;23290:22;23269:18;23257:10;23254:34;23251:62;23248:88;;;23316:18;;:::i;:::-;23248:88;23356:10;23352:2;23345:22;23135:238;23092:281;;:::o;23379:233::-;23418:3;23441:24;23459:5;23441:24;:::i;:::-;23432:33;;23487:66;23480:5;23477:77;23474:103;;;23557:18;;:::i;:::-;23474:103;23604:1;23597:5;23593:13;23586:20;;23379:233;;;:::o;23618:176::-;23650:1;23667:20;23685:1;23667:20;:::i;:::-;23662:25;;23701:20;23719:1;23701:20;:::i;:::-;23696:25;;23740:1;23730:35;;23745:18;;:::i;:::-;23730:35;23786:1;23783;23779:9;23774:14;;23618:176;;;;:::o;23800:180::-;23848:77;23845:1;23838:88;23945:4;23942:1;23935:15;23969:4;23966:1;23959:15;23986:180;24034:77;24031:1;24024:88;24131:4;24128:1;24121:15;24155:4;24152:1;24145:15;24172:180;24220:77;24217:1;24210:88;24317:4;24314:1;24307:15;24341:4;24338:1;24331:15;24358:180;24406:77;24403:1;24396:88;24503:4;24500:1;24493:15;24527:4;24524:1;24517:15;24544:180;24592:77;24589:1;24582:88;24689:4;24686:1;24679:15;24713:4;24710:1;24703:15;24730:117;24839:1;24836;24829:12;24853:117;24962:1;24959;24952:12;24976:117;25085:1;25082;25075:12;25099:117;25208:1;25205;25198:12;25222:102;25263:6;25314:2;25310:7;25305:2;25298:5;25294:14;25290:28;25280:38;;25222:102;;;:::o;25330:232::-;25470:34;25466:1;25458:6;25454:14;25447:58;25539:15;25534:2;25526:6;25522:15;25515:40;25330:232;:::o;25568:237::-;25708:34;25704:1;25696:6;25692:14;25685:58;25777:20;25772:2;25764:6;25760:15;25753:45;25568:237;:::o;25811:224::-;25951:34;25947:1;25939:6;25935:14;25928:58;26020:7;26015:2;26007:6;26003:15;25996:32;25811:224;:::o;26041:178::-;26181:30;26177:1;26169:6;26165:14;26158:54;26041:178;:::o;26225:168::-;26365:20;26361:1;26353:6;26349:14;26342:44;26225:168;:::o;26399:223::-;26539:34;26535:1;26527:6;26523:14;26516:58;26608:6;26603:2;26595:6;26591:15;26584:31;26399:223;:::o;26628:175::-;26768:27;26764:1;26756:6;26752:14;26745:51;26628:175;:::o;26809:228::-;26949:34;26945:1;26937:6;26933:14;26926:58;27018:11;27013:2;27005:6;27001:15;26994:36;26809:228;:::o;27043:182::-;27183:34;27179:1;27171:6;27167:14;27160:58;27043:182;:::o;27231:174::-;27371:26;27367:1;27359:6;27355:14;27348:50;27231:174;:::o;27411:220::-;27551:34;27547:1;27539:6;27535:14;27528:58;27620:3;27615:2;27607:6;27603:15;27596:28;27411:220;:::o;27637:248::-;27777:34;27773:1;27765:6;27761:14;27754:58;27846:31;27841:2;27833:6;27829:15;27822:56;27637:248;:::o;27891:159::-;28031:11;28027:1;28019:6;28015:14;28008:35;27891:159;:::o;28056:122::-;28129:24;28147:5;28129:24;:::i;:::-;28122:5;28119:35;28109:63;;28168:1;28165;28158:12;28109:63;28056:122;:::o;28184:116::-;28254:21;28269:5;28254:21;:::i;:::-;28247:5;28244:32;28234:60;;28290:1;28287;28280:12;28234:60;28184:116;:::o;28306:120::-;28378:23;28395:5;28378:23;:::i;:::-;28371:5;28368:34;28358:62;;28416:1;28413;28406:12;28358:62;28306:120;:::o;28432:122::-;28505:24;28523:5;28505:24;:::i;:::-;28498:5;28495:35;28485:63;;28544:1;28541;28534:12;28485:63;28432:122;:::o
Swarm Source
ipfs://6ffc94d446390c5a06c43f06da6171f99439761465b0bde88b833f314649dd45
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 32 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.