Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0.15 ETH
Eth Value
$320.93 (@ $2,139.55/ETH)More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 18 from a total of 18 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Mint | 14364747 | 1473 days ago | IN | 0.05 ETH | 0.00101236 | ||||
| Mint | 14340437 | 1477 days ago | IN | 0.05 ETH | 0.00177759 | ||||
| Mint | 14339284 | 1477 days ago | IN | 0.05 ETH | 0.00140576 | ||||
| Withdraw | 14314436 | 1481 days ago | IN | 0 ETH | 0.00330103 | ||||
| Mint | 14314267 | 1481 days ago | IN | 0.05 ETH | 0.00236181 | ||||
| Mint | 14313173 | 1481 days ago | IN | 0.05 ETH | 0.0014101 | ||||
| Withdraw | 14307984 | 1482 days ago | IN | 0 ETH | 0.00171256 | ||||
| Mint | 14307127 | 1482 days ago | IN | 0.05 ETH | 0.00181338 | ||||
| Withdraw | 14306809 | 1482 days ago | IN | 0 ETH | 0.00102471 | ||||
| Mint | 14303668 | 1483 days ago | IN | 0.1 ETH | 0.00206067 | ||||
| Mint | 14303545 | 1483 days ago | IN | 0.05 ETH | 0.00255725 | ||||
| Mint | 14303301 | 1483 days ago | IN | 0.05 ETH | 0.00263599 | ||||
| Mint | 14303120 | 1483 days ago | IN | 0.15 ETH | 0.00269105 | ||||
| Mint | 14302634 | 1483 days ago | IN | 0.2 ETH | 0.00317483 | ||||
| Mint | 14302618 | 1483 days ago | IN | 0.05 ETH | 0.00446028 | ||||
| Mint | 14302021 | 1483 days ago | IN | 0.05 ETH | 0.00237263 | ||||
| Withdraw | 14296886 | 1484 days ago | IN | 0 ETH | 0.00306417 | ||||
| Mint | 14296854 | 1484 days ago | IN | 0.05 ETH | 0.00472092 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Fund4Ukraine
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-02-28
*/
// SPDX-License-Identifier: MIT
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;
}
}
/**
* @dev Collection of functions related to the address type
*/
/**
* @dev String operations.
*/
library Strings {
bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
/**
* @dev Converts a `uint256` to its ASCII `string` decimal representation.
*/
function toString(uint256 value) internal pure returns (string memory) {
// Inspired by OraclizeAPI's implementation - MIT licence
// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol
if (value == 0) {
return "0";
}
uint256 temp = value;
uint256 digits;
while (temp != 0) {
digits++;
temp /= 10;
}
bytes memory buffer = new bytes(digits);
while (value != 0) {
digits -= 1;
buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
value /= 10;
}
return string(buffer);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
*/
function toHexString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return "0x00";
}
uint256 temp = value;
uint256 length = 0;
while (temp != 0) {
length++;
temp >>= 8;
}
return toHexString(value, length);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
*/
function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
bytes memory buffer = new bytes(2 * length + 2);
buffer[0] = "0";
buffer[1] = "x";
for (uint256 i = 2 * length + 1; i > 1; --i) {
buffer[i] = _HEX_SYMBOLS[value & 0xf];
value >>= 4;
}
require(value == 0, "Strings: hex length insufficient");
return string(buffer);
}
}
/**
* @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.
*
* These functions can be used to verify that a message was signed by the holder
* of the private keys of a given address.
*/
library ECDSA {
enum RecoverError {
NoError,
InvalidSignature,
InvalidSignatureLength,
InvalidSignatureS,
InvalidSignatureV
}
function _throwError(RecoverError error) private pure {
if (error == RecoverError.NoError) {
return; // no error: do nothing
} else if (error == RecoverError.InvalidSignature) {
revert("ECDSA: invalid signature");
} else if (error == RecoverError.InvalidSignatureLength) {
revert("ECDSA: invalid signature length");
} else if (error == RecoverError.InvalidSignatureS) {
revert("ECDSA: invalid signature 's' value");
} else if (error == RecoverError.InvalidSignatureV) {
revert("ECDSA: invalid signature 'v' value");
}
}
/**
* @dev Returns the address that signed a hashed message (`hash`) with
* `signature` or error string. This address can then be used for verification purposes.
*
* The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
* this function rejects them by requiring the `s` value to be in the lower
* half order, and the `v` value to be either 27 or 28.
*
* IMPORTANT: `hash` _must_ be the result of a hash operation for the
* verification to be secure: it is possible to craft signatures that
* recover to arbitrary addresses for non-hashed data. A safe way to ensure
* this is by receiving a hash of the original message (which may otherwise
* be too long), and then calling {toEthSignedMessageHash} on it.
*
* Documentation for signature generation:
* - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]
* - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]
*
* _Available since v4.3._
*/
function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {
// Check the signature length
// - case 65: r,s,v signature (standard)
// - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._
if (signature.length == 65) {
bytes32 r;
bytes32 s;
uint8 v;
// ecrecover takes the signature parameters, and the only way to get them
// currently is to use assembly.
assembly {
r := mload(add(signature, 0x20))
s := mload(add(signature, 0x40))
v := byte(0, mload(add(signature, 0x60)))
}
return tryRecover(hash, v, r, s);
} else if (signature.length == 64) {
bytes32 r;
bytes32 vs;
// ecrecover takes the signature parameters, and the only way to get them
// currently is to use assembly.
assembly {
r := mload(add(signature, 0x20))
vs := mload(add(signature, 0x40))
}
return tryRecover(hash, r, vs);
} else {
return (address(0), RecoverError.InvalidSignatureLength);
}
}
/**
* @dev Returns the address that signed a hashed message (`hash`) with
* `signature`. This address can then be used for verification purposes.
*
* The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
* this function rejects them by requiring the `s` value to be in the lower
* half order, and the `v` value to be either 27 or 28.
*
* IMPORTANT: `hash` _must_ be the result of a hash operation for the
* verification to be secure: it is possible to craft signatures that
* recover to arbitrary addresses for non-hashed data. A safe way to ensure
* this is by receiving a hash of the original message (which may otherwise
* be too long), and then calling {toEthSignedMessageHash} on it.
*/
function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
(address recovered, RecoverError error) = tryRecover(hash, signature);
_throwError(error);
return recovered;
}
/**
* @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.
*
* See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]
*
* _Available since v4.3._
*/
function tryRecover(
bytes32 hash,
bytes32 r,
bytes32 vs
) internal pure returns (address, RecoverError) {
bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
uint8 v = uint8((uint256(vs) >> 255) + 27);
return tryRecover(hash, v, r, s);
}
/**
* @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.
*
* _Available since v4.2._
*/
function recover(
bytes32 hash,
bytes32 r,
bytes32 vs
) internal pure returns (address) {
(address recovered, RecoverError error) = tryRecover(hash, r, vs);
_throwError(error);
return recovered;
}
/**
* @dev Overload of {ECDSA-tryRecover} that receives the `v`,
* `r` and `s` signature fields separately.
*
* _Available since v4.3._
*/
function tryRecover(
bytes32 hash,
uint8 v,
bytes32 r,
bytes32 s
) internal pure returns (address, RecoverError) {
// EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
// unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
// the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most
// signatures from current libraries generate a unique signature with an s-value in the lower half order.
//
// If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
// with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
// vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
// these malleable signatures as well.
if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
return (address(0), RecoverError.InvalidSignatureS);
}
if (v != 27 && v != 28) {
return (address(0), RecoverError.InvalidSignatureV);
}
// If the signature is valid (and not malleable), return the signer address
address signer = ecrecover(hash, v, r, s);
if (signer == address(0)) {
return (address(0), RecoverError.InvalidSignature);
}
return (signer, RecoverError.NoError);
}
/**
* @dev Overload of {ECDSA-recover} that receives the `v`,
* `r` and `s` signature fields separately.
*/
function recover(
bytes32 hash,
uint8 v,
bytes32 r,
bytes32 s
) internal pure returns (address) {
(address recovered, RecoverError error) = tryRecover(hash, v, r, s);
_throwError(error);
return recovered;
}
/**
* @dev Returns an Ethereum Signed Message, created from a `hash`. This
* produces hash corresponding to the one signed with the
* https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]
* JSON-RPC method as part of EIP-191.
*
* See {recover}.
*/
function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {
// 32 is the length in bytes of hash,
// enforced by the type signature above
return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
}
/**
* @dev Returns an Ethereum Signed Message, created from `s`. This
* produces hash corresponding to the one signed with the
* https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]
* JSON-RPC method as part of EIP-191.
*
* See {recover}.
*/
function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {
return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n", Strings.toString(s.length), s));
}
/**
* @dev Returns an Ethereum Signed Typed Data, created from a
* `domainSeparator` and a `structHash`. This produces hash corresponding
* to the one signed with the
* https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]
* JSON-RPC method as part of EIP-712.
*
* See {recover}.
*/
function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {
return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
}
}
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*
* [IMPORTANT]
* ====
* You shouldn't rely on `isContract` to protect against flash loan attacks!
*
* Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
* like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
* constructor.
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize/address.code.length, which returns 0
// for contracts in construction, since the code is only stored at the end
// of the constructor execution.
return account.code.length > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
abstract contract ERC165 is IERC165 {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
interface IERC1155Receiver is IERC165 {
/**
* @dev Handles the receipt of a single ERC1155 token type. This function is
* called at the end of a `safeTransferFrom` after the balance has been updated.
*
* NOTE: To accept the transfer, this must return
* `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
* (i.e. 0xf23a6e61, or its own function selector).
*
* @param operator The address which initiated the transfer (i.e. msg.sender)
* @param from The address which previously owned the token
* @param id The ID of the token being transferred
* @param value The amount of tokens being transferred
* @param data Additional data with no specified format
* @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
*/
function onERC1155Received(
address operator,
address from,
uint256 id,
uint256 value,
bytes calldata data
) external returns (bytes4);
/**
* @dev Handles the receipt of a multiple ERC1155 token types. This function
* is called at the end of a `safeBatchTransferFrom` after the balances have
* been updated.
*
* NOTE: To accept the transfer(s), this must return
* `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
* (i.e. 0xbc197c81, or its own function selector).
*
* @param operator The address which initiated the batch transfer (i.e. msg.sender)
* @param from The address which previously owned the token
* @param ids An array containing ids of each token being transferred (order and length must match values array)
* @param values An array containing amounts of each token being transferred (order and length must match ids array)
* @param data Additional data with no specified format
* @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
*/
function onERC1155BatchReceived(
address operator,
address from,
uint256[] calldata ids,
uint256[] calldata values,
bytes calldata data
) external returns (bytes4);
}
/**
* @dev _Available since v3.1._
*/
abstract contract ERC1155Receiver is ERC165, IERC1155Receiver {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
return interfaceId == type(IERC1155Receiver).interfaceId || super.supportsInterface(interfaceId);
}
}
interface IERC1155 is IERC165 {
/**
* @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
*/
event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);
/**
* @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
* transfers.
*/
event TransferBatch(
address indexed operator,
address indexed from,
address indexed to,
uint256[] ids,
uint256[] values
);
/**
* @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
* `approved`.
*/
event ApprovalForAll(address indexed account, address indexed operator, bool approved);
/**
* @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
*
* If an {URI} event was emitted for `id`, the standard
* https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
* returned by {IERC1155MetadataURI-uri}.
*/
event URI(string value, uint256 indexed id);
/**
* @dev Returns the amount of tokens of token type `id` owned by `account`.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function balanceOf(address account, uint256 id) external view returns (uint256);
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
*
* Requirements:
*
* - `accounts` and `ids` must have the same length.
*/
function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
external
view
returns (uint256[] memory);
/**
* @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
*
* Emits an {ApprovalForAll} event.
*
* Requirements:
*
* - `operator` cannot be the caller.
*/
function setApprovalForAll(address operator, bool approved) external;
/**
* @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
*
* See {setApprovalForAll}.
*/
function isApprovedForAll(address account, address operator) external view returns (bool);
/**
* @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.
* - `from` must have a balance of tokens of type `id` of at least `amount`.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
* acceptance magic value.
*/
function safeTransferFrom(
address from,
address to,
uint256 id,
uint256 amount,
bytes calldata data
) external;
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
*
* Emits a {TransferBatch} event.
*
* Requirements:
*
* - `ids` and `amounts` must have the same length.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
* acceptance magic value.
*/
function safeBatchTransferFrom(
address from,
address to,
uint256[] calldata ids,
uint256[] calldata amounts,
bytes calldata data
) external;
}
interface IERC1155MetadataURI is IERC1155 {
/**
* @dev Returns the URI for token type `id`.
*
* If the `\{id\}` substring is present in the URI, it must be replaced by
* clients with the actual token type ID.
*/
function uri(uint256 id) external view returns (string memory);
}
/**
* @dev Implementation of the basic standard multi-token.
* See https://eips.ethereum.org/EIPS/eip-1155
* Originally based on code by Enjin: https://github.com/enjin/erc-1155
*
* _Available since v3.1._
*/
contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
using Address for address;
// Mapping from token ID to account balances
mapping(uint256 => mapping(address => uint256)) private _balances;
// Mapping from account to operator approvals
mapping(address => mapping(address => bool)) private _operatorApprovals;
// Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json
string private _uri;
/**
* @dev See {_setURI}.
*/
constructor(string memory uri_) {
_setURI(uri_);
}
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
return
interfaceId == type(IERC1155).interfaceId ||
interfaceId == type(IERC1155MetadataURI).interfaceId ||
super.supportsInterface(interfaceId);
}
/**
* @dev See {IERC1155MetadataURI-uri}.
*
* This implementation returns the same URI for *all* token types. It relies
* on the token type ID substitution mechanism
* https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
*
* Clients calling this function must replace the `\{id\}` substring with the
* actual token type ID.
*/
function uri(uint256) public view virtual override returns (string memory) {
return _uri;
}
/**
* @dev See {IERC1155-balanceOf}.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
require(account != address(0), "ERC1155: balance query for the zero address");
return _balances[id][account];
}
/**
* @dev See {IERC1155-balanceOfBatch}.
*
* Requirements:
*
* - `accounts` and `ids` must have the same length.
*/
function balanceOfBatch(address[] memory accounts, uint256[] memory ids)
public
view
virtual
override
returns (uint256[] memory)
{
require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");
uint256[] memory batchBalances = new uint256[](accounts.length);
for (uint256 i = 0; i < accounts.length; ++i) {
batchBalances[i] = balanceOf(accounts[i], ids[i]);
}
return batchBalances;
}
/**
* @dev See {IERC1155-setApprovalForAll}.
*/
function setApprovalForAll(address operator, bool approved) public virtual override {
_setApprovalForAll(_msgSender(), operator, approved);
}
/**
* @dev See {IERC1155-isApprovedForAll}.
*/
function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {
return _operatorApprovals[account][operator];
}
/**
* @dev See {IERC1155-safeTransferFrom}.
*/
function safeTransferFrom(
address from,
address to,
uint256 id,
uint256 amount,
bytes memory data
) public virtual override {
require(
from == _msgSender() || isApprovedForAll(from, _msgSender()),
"ERC1155: caller is not owner nor approved"
);
_safeTransferFrom(from, to, id, amount, data);
}
/**
* @dev See {IERC1155-safeBatchTransferFrom}.
*/
function safeBatchTransferFrom(
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) public virtual override {
require(
from == _msgSender() || isApprovedForAll(from, _msgSender()),
"ERC1155: transfer caller is not owner nor approved"
);
_safeBatchTransferFrom(from, to, ids, amounts, data);
}
/**
* @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - `from` must have a balance of tokens of type `id` of at least `amount`.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
* acceptance magic value.
*/
function _safeTransferFrom(
address from,
address to,
uint256 id,
uint256 amount,
bytes memory data
) internal virtual {
require(to != address(0), "ERC1155: transfer to the zero address");
address operator = _msgSender();
uint256[] memory ids = _asSingletonArray(id);
uint256[] memory amounts = _asSingletonArray(amount);
_beforeTokenTransfer(operator, from, to, ids, amounts, data);
uint256 fromBalance = _balances[id][from];
require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
unchecked {
_balances[id][from] = fromBalance - amount;
}
_balances[id][to] += amount;
emit TransferSingle(operator, from, to, id, amount);
_afterTokenTransfer(operator, from, to, ids, amounts, data);
_doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
}
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.
*
* Emits a {TransferBatch} event.
*
* Requirements:
*
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
* acceptance magic value.
*/
function _safeBatchTransferFrom(
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual {
require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
require(to != address(0), "ERC1155: transfer to the zero address");
address operator = _msgSender();
_beforeTokenTransfer(operator, from, to, ids, amounts, data);
for (uint256 i = 0; i < ids.length; ++i) {
uint256 id = ids[i];
uint256 amount = amounts[i];
uint256 fromBalance = _balances[id][from];
require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
unchecked {
_balances[id][from] = fromBalance - amount;
}
_balances[id][to] += amount;
}
emit TransferBatch(operator, from, to, ids, amounts);
_afterTokenTransfer(operator, from, to, ids, amounts, data);
_doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
}
/**
* @dev Sets a new URI for all token types, by relying on the token type ID
* substitution mechanism
* https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
*
* By this mechanism, any occurrence of the `\{id\}` substring in either the
* URI or any of the amounts in the JSON file at said URI will be replaced by
* clients with the token type ID.
*
* For example, the `https://token-cdn-domain/\{id\}.json` URI would be
* interpreted by clients as
* `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`
* for token type ID 0x4cce0.
*
* See {uri}.
*
* Because these URIs cannot be meaningfully represented by the {URI} event,
* this function emits no events.
*/
function _setURI(string memory newuri) internal virtual {
_uri = newuri;
}
/**
* @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
* acceptance magic value.
*/
function _mint(
address to,
uint256 id,
uint256 amount,
bytes memory data
) internal virtual {
require(to != address(0), "ERC1155: mint to the zero address");
address operator = _msgSender();
uint256[] memory ids = _asSingletonArray(id);
uint256[] memory amounts = _asSingletonArray(amount);
_beforeTokenTransfer(operator, address(0), to, ids, amounts, data);
_balances[id][to] += amount;
emit TransferSingle(operator, address(0), to, id, amount);
_afterTokenTransfer(operator, address(0), to, ids, amounts, data);
_doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);
}
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.
*
* Requirements:
*
* - `ids` and `amounts` must have the same length.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
* acceptance magic value.
*/
function _mintBatch(
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual {
require(to != address(0), "ERC1155: mint to the zero address");
require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
address operator = _msgSender();
_beforeTokenTransfer(operator, address(0), to, ids, amounts, data);
for (uint256 i = 0; i < ids.length; i++) {
_balances[ids[i]][to] += amounts[i];
}
emit TransferBatch(operator, address(0), to, ids, amounts);
_afterTokenTransfer(operator, address(0), to, ids, amounts, data);
_doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
}
/**
* @dev Destroys `amount` tokens of token type `id` from `from`
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `from` must have at least `amount` tokens of token type `id`.
*/
function _burn(
address from,
uint256 id,
uint256 amount
) internal virtual {
require(from != address(0), "ERC1155: burn from the zero address");
address operator = _msgSender();
uint256[] memory ids = _asSingletonArray(id);
uint256[] memory amounts = _asSingletonArray(amount);
_beforeTokenTransfer(operator, from, address(0), ids, amounts, "");
uint256 fromBalance = _balances[id][from];
require(fromBalance >= amount, "ERC1155: burn amount exceeds balance");
unchecked {
_balances[id][from] = fromBalance - amount;
}
emit TransferSingle(operator, from, address(0), id, amount);
_afterTokenTransfer(operator, from, address(0), ids, amounts, "");
}
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.
*
* Requirements:
*
* - `ids` and `amounts` must have the same length.
*/
function _burnBatch(
address from,
uint256[] memory ids,
uint256[] memory amounts
) internal virtual {
require(from != address(0), "ERC1155: burn from the zero address");
require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
address operator = _msgSender();
_beforeTokenTransfer(operator, from, address(0), ids, amounts, "");
for (uint256 i = 0; i < ids.length; i++) {
uint256 id = ids[i];
uint256 amount = amounts[i];
uint256 fromBalance = _balances[id][from];
require(fromBalance >= amount, "ERC1155: burn amount exceeds balance");
unchecked {
_balances[id][from] = fromBalance - amount;
}
}
emit TransferBatch(operator, from, address(0), ids, amounts);
_afterTokenTransfer(operator, from, address(0), ids, amounts, "");
}
/**
* @dev Approve `operator` to operate on all of `owner` tokens
*
* Emits a {ApprovalForAll} event.
*/
function _setApprovalForAll(
address owner,
address operator,
bool approved
) internal virtual {
require(owner != operator, "ERC1155: setting approval status for self");
_operatorApprovals[owner][operator] = approved;
emit ApprovalForAll(owner, operator, approved);
}
/**
* @dev Hook that is called before any token transfer. This includes minting
* and burning, as well as batched variants.
*
* The same hook is called on both single and batched variants. For single
* transfers, the length of the `id` and `amount` arrays will be 1.
*
* Calling conditions (for each `id` and `amount` pair):
*
* - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* of token type `id` will be transferred to `to`.
* - When `from` is zero, `amount` tokens of token type `id` will be minted
* for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
* will be burned.
* - `from` and `to` are never both zero.
* - `ids` and `amounts` have the same, non-zero length.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address operator,
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual {}
/**
* @dev Hook that is called after any token transfer. This includes minting
* and burning, as well as batched variants.
*
* The same hook is called on both single and batched variants. For single
* transfers, the length of the `id` and `amount` arrays will be 1.
*
* Calling conditions (for each `id` and `amount` pair):
*
* - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* of token type `id` will be transferred to `to`.
* - When `from` is zero, `amount` tokens of token type `id` will be minted
* for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
* will be burned.
* - `from` and `to` are never both zero.
* - `ids` and `amounts` have the same, non-zero length.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _afterTokenTransfer(
address operator,
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual {}
function _doSafeTransferAcceptanceCheck(
address operator,
address from,
address to,
uint256 id,
uint256 amount,
bytes memory data
) private {
if (to.isContract()) {
try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {
if (response != IERC1155Receiver.onERC1155Received.selector) {
revert("ERC1155: ERC1155Receiver rejected tokens");
}
} catch Error(string memory reason) {
revert(reason);
} catch {
revert("ERC1155: transfer to non ERC1155Receiver implementer");
}
}
}
function _doSafeBatchTransferAcceptanceCheck(
address operator,
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) private {
if (to.isContract()) {
try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (
bytes4 response
) {
if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {
revert("ERC1155: ERC1155Receiver rejected tokens");
}
} catch Error(string memory reason) {
revert(reason);
} catch {
revert("ERC1155: transfer to non ERC1155Receiver implementer");
}
}
}
function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {
uint256[] memory array = new uint256[](1);
array[0] = element;
return array;
}
}
/**
* @dev Extension of ERC1155 that adds tracking of total supply per id.
*
* Useful for scenarios where Fungible and Non-fungible tokens have to be
* clearly identified. Note: While a totalSupply of 1 might mean the
* corresponding is an NFT, there is no guarantees that no other token with the
* same id are not going to be minted.
*/
abstract contract ERC1155Supply is ERC1155 {
mapping(uint256 => uint256) private _totalSupply;
/**
* @dev Total amount of tokens in with a given id.
*/
function totalSupply(uint256 id) public view virtual returns (uint256) {
return _totalSupply[id];
}
/**
* @dev Indicates weither any token exist with a given id, or not.
*/
function exists(uint256 id) public view virtual returns (bool) {
return ERC1155Supply.totalSupply(id) > 0;
}
/**
* @dev See {ERC1155-_mint}.
*/
function _mint(
address account,
uint256 id,
uint256 amount,
bytes memory data
) internal virtual override {
super._mint(account, id, amount, data);
_totalSupply[id] += amount;
}
/**
* @dev See {ERC1155-_mintBatch}.
*/
function _mintBatch(
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual override {
super._mintBatch(to, ids, amounts, data);
for (uint256 i = 0; i < ids.length; ++i) {
_totalSupply[ids[i]] += amounts[i];
}
}
/**
* @dev See {ERC1155-_burn}.
*/
function _burn(
address account,
uint256 id,
uint256 amount
) internal virtual override {
super._burn(account, id, amount);
_totalSupply[id] -= amount;
}
/**
* @dev See {ERC1155-_burnBatch}.
*/
function _burnBatch(
address account,
uint256[] memory ids,
uint256[] memory amounts
) internal virtual override {
super._burnBatch(account, ids, amounts);
for (uint256 i = 0; i < ids.length; ++i) {
_totalSupply[ids[i]] -= amounts[i];
}
}
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
contract Fund4Ukraine is ERC1155Supply, Ownable {
using ECDSA for bytes32;
// Contract name
string public name = "Fund4Ukraine";
// Contract symbol
string public symbol = "F4UA";
bool public pauseTokenOne = false;
uint256 public constant TOKEN_ID_ONE = 1;
uint256 public constant TOKEN_ONE_PRICE = 0.05 ether;
address public DonationAddress = 0x165CD37b4C644C2921454429E7F9358d18A45e14;
// Used to ensure each new token id can only be minted once by the owner
mapping (uint256 => string) public tokenURI;
constructor(
string memory uriBase,
string memory uriTokenOne
) ERC1155(uriBase) {
tokenURI[TOKEN_ID_ONE] = uriTokenOne;
}
/**
* Returns the custom URI for each token id. Overrides the default ERC-1155 single URI.
*/
function uri(uint256 tokenId) public view override returns (string memory) {
// If no URI exists for the specific id requested, fallback to the default ERC-1155 URI.
if (bytes(tokenURI[tokenId]).length == 0) {
return super.uri(tokenId);
}
return tokenURI[tokenId];
}
/**
* Sets a URI for a specific token id.
*/
function setURI(string memory _newTokenURI, uint256 tokenId) public onlyOwner {
tokenURI[tokenId] = _newTokenURI;
}
function setPauseStateOne(bool _pause) public onlyOwner {
pauseTokenOne = _pause;
}
function mint(uint256 numberOfTokens, uint256 tokenId) external payable {
require(tokenId > 0, "TokenId must be more than zero");
require(tokenId < 2, "TokenId must be less than 2");
require(numberOfTokens > 0, "Must mint at least one token");
if (tokenId == 1) {
require(!pauseTokenOne, "Token One sale is not active");
require(TOKEN_ONE_PRICE * numberOfTokens == msg.value, "Incorrect Price");
}
_mint(msg.sender, tokenId, numberOfTokens, "");
}
/**
* @notice Override ERC1155 such that zero amount token transfers are disallowed to prevent arbitrary creation of new tokens in the collection.
*/
function safeTransferFrom(
address from,
address to,
uint256 id,
uint256 amount,
bytes memory data
) public override {
require(amount > 0, "Amount cant be zero");
return super.safeTransferFrom(from, to, id, amount, data);
}
/**
* @notice When the contract is paused, all token transfers are prevented in case of emergency.
*/
function _beforeTokenTransfer(address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)
internal
override
{
super._beforeTokenTransfer(operator, from, to, ids, amounts, data);
}
function withdraw() external onlyOwner {
require(address(this).balance > 0, "Balance is zero");
payable(DonationAddress).transfer(address(this).balance);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"uriBase","type":"string"},{"internalType":"string","name":"uriTokenOne","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[],"name":"DonationAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_ID_ONE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_ONE_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfTokens","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseTokenOne","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bool","name":"_pause","type":"bool"}],"name":"setPauseStateOne","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newTokenURI","type":"string"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"setURI","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":"","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040526040518060400160405280600c81526020017f46756e6434556b7261696e650000000000000000000000000000000000000000815250600590805190602001906200005192919062000293565b506040518060400160405280600481526020017f4634554100000000000000000000000000000000000000000000000000000000815250600690805190602001906200009f92919062000293565b506000600760006101000a81548160ff02191690831515021790555073165cd37b4c644c2921454429e7f9358d18a45e14600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200011d57600080fd5b50604051620042ae380380620042ae8339818101604052810190620001439190620003c1565b816200015581620001a960201b60201c565b50620001766200016a620001c560201b60201c565b620001cd60201b60201c565b8060086000600181526020019081526020016000209080519060200190620001a092919062000293565b505050620005ca565b8060029080519060200190620001c192919062000293565b5050565b600033905090565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002a190620004db565b90600052602060002090601f016020900481019282620002c5576000855562000311565b82601f10620002e057805160ff191683800117855562000311565b8280016001018555821562000311579182015b8281111562000310578251825591602001919060010190620002f3565b5b50905062000320919062000324565b5090565b5b808211156200033f57600081600090555060010162000325565b5090565b60006200035a62000354846200046f565b62000446565b905082815260208101848484011115620003795762000378620005aa565b5b62000386848285620004a5565b509392505050565b600082601f830112620003a657620003a5620005a5565b5b8151620003b884826020860162000343565b91505092915050565b60008060408385031215620003db57620003da620005b4565b5b600083015167ffffffffffffffff811115620003fc57620003fb620005af565b5b6200040a858286016200038e565b925050602083015167ffffffffffffffff8111156200042e576200042d620005af565b5b6200043c858286016200038e565b9150509250929050565b60006200045262000465565b905062000460828262000511565b919050565b6000604051905090565b600067ffffffffffffffff8211156200048d576200048c62000576565b5b6200049882620005b9565b9050602081019050919050565b60005b83811015620004c5578082015181840152602081019050620004a8565b83811115620004d5576000848401525b50505050565b60006002820490506001821680620004f457607f821691505b602082108114156200050b576200050a62000547565b5b50919050565b6200051c82620005b9565b810181811067ffffffffffffffff821117156200053e576200053d62000576565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b613cd480620005da6000396000f3fe60806040526004361061014a5760003560e01c806378455d69116100b6578063c7a170851161006f578063c7a1708514610484578063c87b56dd146104af578063e985e9c5146104ec578063f170ba4e14610529578063f242432a14610552578063f2fde38b1461057b5761014a565b806378455d691461037257806387a160781461039d5780638da5cb5b146103c857806395d89b41146103f3578063a22cb4651461041e578063bd85b039146104475761014a565b80633ccfd60b116101085780633ccfd60b146102765780634e1273f41461028d5780634f558e79146102ca57806367db3b8f146103075780636964664c14610330578063715018a61461035b5761014a565b8062fdd58e1461014f57806301ffc9a71461018c57806306fdde03146101c95780630e89341c146101f45780631b2ef1ca146102315780632eb2c2d61461024d575b600080fd5b34801561015b57600080fd5b506101766004803603810190610171919061281a565b6105a4565b60405161018391906131f5565b60405180910390f35b34801561019857600080fd5b506101b360048036038101906101ae91906128ff565b61066d565b6040516101c09190612f38565b60405180910390f35b3480156101d557600080fd5b506101de61074f565b6040516101eb9190612f53565b60405180910390f35b34801561020057600080fd5b5061021b600480360381019061021691906129b5565b6107dd565b6040516102289190612f53565b60405180910390f35b61024b600480360381019061024691906129e2565b6108bb565b005b34801561025957600080fd5b50610274600480360381019061026f9190612674565b610a51565b005b34801561028257600080fd5b5061028b610af2565b005b34801561029957600080fd5b506102b460048036038101906102af919061285a565b610c1c565b6040516102c19190612edf565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec91906129b5565b610d35565b6040516102fe9190612f38565b60405180910390f35b34801561031357600080fd5b5061032e60048036038101906103299190612959565b610d49565b005b34801561033c57600080fd5b50610345610df1565b6040516103529190612f38565b60405180910390f35b34801561036757600080fd5b50610370610e04565b005b34801561037e57600080fd5b50610387610e8c565b60405161039491906131f5565b60405180910390f35b3480156103a957600080fd5b506103b2610e91565b6040516103bf9190612e02565b60405180910390f35b3480156103d457600080fd5b506103dd610eb7565b6040516103ea9190612e02565b60405180910390f35b3480156103ff57600080fd5b50610408610ee1565b6040516104159190612f53565b60405180910390f35b34801561042a57600080fd5b50610445600480360381019061044091906127da565b610f6f565b005b34801561045357600080fd5b5061046e600480360381019061046991906129b5565b610f85565b60405161047b91906131f5565b60405180910390f35b34801561049057600080fd5b50610499610fa2565b6040516104a691906131f5565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d191906129b5565b610fad565b6040516104e39190612f53565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e9190612634565b61104d565b6040516105209190612f38565b60405180910390f35b34801561053557600080fd5b50610550600480360381019061054b91906128d2565b6110e1565b005b34801561055e57600080fd5b5061057960048036038101906105749190612743565b61117a565b005b34801561058757600080fd5b506105a2600480360381019061059d9190612607565b6111d1565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060c90612fb5565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061073857507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107485750610747826112c9565b5b9050919050565b6005805461075c906134ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610788906134ef565b80156107d55780601f106107aa576101008083540402835291602001916107d5565b820191906000526020600020905b8154815290600101906020018083116107b857829003601f168201915b505050505081565b606060006008600084815260200190815260200160002080546107ff906134ef565b905014156108175761081082611333565b90506108b6565b600860008381526020019081526020016000208054610835906134ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610861906134ef565b80156108ae5780601f10610883576101008083540402835291602001916108ae565b820191906000526020600020905b81548152906001019060200180831161089157829003601f168201915b505050505090505b919050565b600081116108fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f590613015565b60405180910390fd5b60028110610941576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610938906131d5565b60405180910390fd5b60008211610984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097b906130d5565b60405180910390fd5b6001811415610a3257600760009054906101000a900460ff16156109dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d490613155565b60405180910390fd5b348266b1a2bc2ec500006109f191906133df565b14610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2890613075565b60405180910390fd5b5b610a4d338284604051806020016040528060008152506113c7565b5050565b610a59611403565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610a9f5750610a9e85610a99611403565b61104d565b5b610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad590613055565b60405180910390fd5b610aeb858585858561140b565b5050505050565b610afa611403565b73ffffffffffffffffffffffffffffffffffffffff16610b18610eb7565b73ffffffffffffffffffffffffffffffffffffffff1614610b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b65906130b5565b60405180910390fd5b60004711610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba8906131b5565b60405180910390fd5b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610c19573d6000803e3d6000fd5b50565b60608151835114610c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5990613135565b60405180910390fd5b6000835167ffffffffffffffff811115610c7f57610c7e613628565b5b604051908082528060200260200182016040528015610cad5781602001602082028036833780820191505090505b50905060005b8451811015610d2a57610cfa858281518110610cd257610cd16135f9565b5b6020026020010151858381518110610ced57610cec6135f9565b5b60200260200101516105a4565b828281518110610d0d57610d0c6135f9565b5b60200260200101818152505080610d2390613552565b9050610cb3565b508091505092915050565b600080610d4183610f85565b119050919050565b610d51611403565b73ffffffffffffffffffffffffffffffffffffffff16610d6f610eb7565b73ffffffffffffffffffffffffffffffffffffffff1614610dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbc906130b5565b60405180910390fd5b81600860008381526020019081526020016000209080519060200190610dec9291906122df565b505050565b600760009054906101000a900460ff1681565b610e0c611403565b73ffffffffffffffffffffffffffffffffffffffff16610e2a610eb7565b73ffffffffffffffffffffffffffffffffffffffff1614610e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e77906130b5565b60405180910390fd5b610e8a600061172d565b565b600181565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60068054610eee906134ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1a906134ef565b8015610f675780601f10610f3c57610100808354040283529160200191610f67565b820191906000526020600020905b815481529060010190602001808311610f4a57829003601f168201915b505050505081565b610f81610f7a611403565b83836117f3565b5050565b600060036000838152602001908152602001600020549050919050565b66b1a2bc2ec5000081565b60086020528060005260406000206000915090508054610fcc906134ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff8906134ef565b80156110455780601f1061101a57610100808354040283529160200191611045565b820191906000526020600020905b81548152906001019060200180831161102857829003601f168201915b505050505081565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6110e9611403565b73ffffffffffffffffffffffffffffffffffffffff16611107610eb7565b73ffffffffffffffffffffffffffffffffffffffff161461115d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611154906130b5565b60405180910390fd5b80600760006101000a81548160ff02191690831515021790555050565b600082116111bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b4906130f5565b60405180910390fd5b6111ca8585858585611960565b5050505050565b6111d9611403565b73ffffffffffffffffffffffffffffffffffffffff166111f7610eb7565b73ffffffffffffffffffffffffffffffffffffffff161461124d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611244906130b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b490612fd5565b60405180910390fd5b6112c68161172d565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b606060028054611342906134ef565b80601f016020809104026020016040519081016040528092919081815260200182805461136e906134ef565b80156113bb5780601f10611390576101008083540402835291602001916113bb565b820191906000526020600020905b81548152906001019060200180831161139e57829003601f168201915b50505050509050919050565b6113d384848484611a01565b816003600085815260200190815260200160002060008282546113f69190613389565b9250508190555050505050565b600033905090565b815183511461144f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144690613175565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156114bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b690613035565b60405180910390fd5b60006114c9611403565b90506114d9818787878787611bb2565b60005b845181101561168a5760008582815181106114fa576114f96135f9565b5b602002602001015190506000858381518110611519576115186135f9565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b190613095565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461166f9190613389565b925050819055505050508061168390613552565b90506114dc565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611701929190612f01565b60405180910390a4611717818787878787611bc8565b611725818787878787611bd0565b505050505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185990613115565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119539190612f38565b60405180910390a3505050565b611968611403565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806119ae57506119ad856119a8611403565b61104d565b5b6119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490612ff5565b60405180910390fd5b6119fa8585858585611db7565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6890613195565b60405180910390fd5b6000611a7b611403565b90506000611a8885612053565b90506000611a9585612053565b9050611aa683600089858589611bb2565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b059190613389565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628989604051611b83929190613210565b60405180910390a4611b9a83600089858589611bc8565b611ba9836000898989896120cd565b50505050505050565b611bc08686868686866122b4565b505050505050565b505050505050565b611bef8473ffffffffffffffffffffffffffffffffffffffff166122bc565b15611daf578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611c35959493929190612e1d565b602060405180830381600087803b158015611c4f57600080fd5b505af1925050508015611c8057506040513d601f19601f82011682018060405250810190611c7d919061292c565b60015b611d2657611c8c613657565b806308c379a01415611ce95750611ca1613bac565b80611cac5750611ceb565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce09190612f53565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1d90612f75565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da490612f95565b60405180910390fd5b505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1e90613035565b60405180910390fd5b6000611e31611403565b90506000611e3e85612053565b90506000611e4b85612053565b9050611e5b838989858589611bb2565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905085811015611ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee990613095565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fa79190613389565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051612024929190613210565b60405180910390a461203a848a8a86868a611bc8565b612048848a8a8a8a8a6120cd565b505050505050505050565b60606000600167ffffffffffffffff81111561207257612071613628565b5b6040519080825280602002602001820160405280156120a05781602001602082028036833780820191505090505b50905082816000815181106120b8576120b76135f9565b5b60200260200101818152505080915050919050565b6120ec8473ffffffffffffffffffffffffffffffffffffffff166122bc565b156122ac578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612132959493929190612e85565b602060405180830381600087803b15801561214c57600080fd5b505af192505050801561217d57506040513d601f19601f8201168201806040525081019061217a919061292c565b60015b61222357612189613657565b806308c379a014156121e6575061219e613bac565b806121a957506121e8565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121dd9190612f53565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221a90612f75565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146122aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a190612f95565b60405180910390fd5b505b505050505050565b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546122eb906134ef565b90600052602060002090601f01602090048101928261230d5760008555612354565b82601f1061232657805160ff1916838001178555612354565b82800160010185558215612354579182015b82811115612353578251825591602001919060010190612338565b5b5090506123619190612365565b5090565b5b8082111561237e576000816000905550600101612366565b5090565b60006123956123908461325e565b613239565b905080838252602082019050828560208602820111156123b8576123b761367e565b5b60005b858110156123e857816123ce88826124e6565b8452602084019350602083019250506001810190506123bb565b5050509392505050565b60006124056124008461328a565b613239565b905080838252602082019050828560208602820111156124285761242761367e565b5b60005b85811015612458578161243e88826125f2565b84526020840193506020830192505060018101905061242b565b5050509392505050565b6000612475612470846132b6565b613239565b90508281526020810184848401111561249157612490613683565b5b61249c8482856134ad565b509392505050565b60006124b76124b2846132e7565b613239565b9050828152602081018484840111156124d3576124d2613683565b5b6124de8482856134ad565b509392505050565b6000813590506124f581613c42565b92915050565b600082601f8301126125105761250f613679565b5b8135612520848260208601612382565b91505092915050565b600082601f83011261253e5761253d613679565b5b813561254e8482602086016123f2565b91505092915050565b60008135905061256681613c59565b92915050565b60008135905061257b81613c70565b92915050565b60008151905061259081613c70565b92915050565b600082601f8301126125ab576125aa613679565b5b81356125bb848260208601612462565b91505092915050565b600082601f8301126125d9576125d8613679565b5b81356125e98482602086016124a4565b91505092915050565b60008135905061260181613c87565b92915050565b60006020828403121561261d5761261c61368d565b5b600061262b848285016124e6565b91505092915050565b6000806040838503121561264b5761264a61368d565b5b6000612659858286016124e6565b925050602061266a858286016124e6565b9150509250929050565b600080600080600060a086880312156126905761268f61368d565b5b600061269e888289016124e6565b95505060206126af888289016124e6565b945050604086013567ffffffffffffffff8111156126d0576126cf613688565b5b6126dc88828901612529565b935050606086013567ffffffffffffffff8111156126fd576126fc613688565b5b61270988828901612529565b925050608086013567ffffffffffffffff81111561272a57612729613688565b5b61273688828901612596565b9150509295509295909350565b600080600080600060a0868803121561275f5761275e61368d565b5b600061276d888289016124e6565b955050602061277e888289016124e6565b945050604061278f888289016125f2565b93505060606127a0888289016125f2565b925050608086013567ffffffffffffffff8111156127c1576127c0613688565b5b6127cd88828901612596565b9150509295509295909350565b600080604083850312156127f1576127f061368d565b5b60006127ff858286016124e6565b925050602061281085828601612557565b9150509250929050565b600080604083850312156128315761283061368d565b5b600061283f858286016124e6565b9250506020612850858286016125f2565b9150509250929050565b600080604083850312156128715761287061368d565b5b600083013567ffffffffffffffff81111561288f5761288e613688565b5b61289b858286016124fb565b925050602083013567ffffffffffffffff8111156128bc576128bb613688565b5b6128c885828601612529565b9150509250929050565b6000602082840312156128e8576128e761368d565b5b60006128f684828501612557565b91505092915050565b6000602082840312156129155761291461368d565b5b60006129238482850161256c565b91505092915050565b6000602082840312156129425761294161368d565b5b600061295084828501612581565b91505092915050565b600080604083850312156129705761296f61368d565b5b600083013567ffffffffffffffff81111561298e5761298d613688565b5b61299a858286016125c4565b92505060206129ab858286016125f2565b9150509250929050565b6000602082840312156129cb576129ca61368d565b5b60006129d9848285016125f2565b91505092915050565b600080604083850312156129f9576129f861368d565b5b6000612a07858286016125f2565b9250506020612a18858286016125f2565b9150509250929050565b6000612a2e8383612de4565b60208301905092915050565b612a4381613439565b82525050565b6000612a5482613328565b612a5e8185613356565b9350612a6983613318565b8060005b83811015612a9a578151612a818882612a22565b9750612a8c83613349565b925050600181019050612a6d565b5085935050505092915050565b612ab08161344b565b82525050565b6000612ac182613333565b612acb8185613367565b9350612adb8185602086016134bc565b612ae481613692565b840191505092915050565b6000612afa8261333e565b612b048185613378565b9350612b148185602086016134bc565b612b1d81613692565b840191505092915050565b6000612b35603483613378565b9150612b40826136b0565b604082019050919050565b6000612b58602883613378565b9150612b63826136ff565b604082019050919050565b6000612b7b602b83613378565b9150612b868261374e565b604082019050919050565b6000612b9e602683613378565b9150612ba98261379d565b604082019050919050565b6000612bc1602983613378565b9150612bcc826137ec565b604082019050919050565b6000612be4601e83613378565b9150612bef8261383b565b602082019050919050565b6000612c07602583613378565b9150612c1282613864565b604082019050919050565b6000612c2a603283613378565b9150612c35826138b3565b604082019050919050565b6000612c4d600f83613378565b9150612c5882613902565b602082019050919050565b6000612c70602a83613378565b9150612c7b8261392b565b604082019050919050565b6000612c93602083613378565b9150612c9e8261397a565b602082019050919050565b6000612cb6601c83613378565b9150612cc1826139a3565b602082019050919050565b6000612cd9601383613378565b9150612ce4826139cc565b602082019050919050565b6000612cfc602983613378565b9150612d07826139f5565b604082019050919050565b6000612d1f602983613378565b9150612d2a82613a44565b604082019050919050565b6000612d42601c83613378565b9150612d4d82613a93565b602082019050919050565b6000612d65602883613378565b9150612d7082613abc565b604082019050919050565b6000612d88602183613378565b9150612d9382613b0b565b604082019050919050565b6000612dab600f83613378565b9150612db682613b5a565b602082019050919050565b6000612dce601b83613378565b9150612dd982613b83565b602082019050919050565b612ded816134a3565b82525050565b612dfc816134a3565b82525050565b6000602082019050612e176000830184612a3a565b92915050565b600060a082019050612e326000830188612a3a565b612e3f6020830187612a3a565b8181036040830152612e518186612a49565b90508181036060830152612e658185612a49565b90508181036080830152612e798184612ab6565b90509695505050505050565b600060a082019050612e9a6000830188612a3a565b612ea76020830187612a3a565b612eb46040830186612df3565b612ec16060830185612df3565b8181036080830152612ed38184612ab6565b90509695505050505050565b60006020820190508181036000830152612ef98184612a49565b905092915050565b60006040820190508181036000830152612f1b8185612a49565b90508181036020830152612f2f8184612a49565b90509392505050565b6000602082019050612f4d6000830184612aa7565b92915050565b60006020820190508181036000830152612f6d8184612aef565b905092915050565b60006020820190508181036000830152612f8e81612b28565b9050919050565b60006020820190508181036000830152612fae81612b4b565b9050919050565b60006020820190508181036000830152612fce81612b6e565b9050919050565b60006020820190508181036000830152612fee81612b91565b9050919050565b6000602082019050818103600083015261300e81612bb4565b9050919050565b6000602082019050818103600083015261302e81612bd7565b9050919050565b6000602082019050818103600083015261304e81612bfa565b9050919050565b6000602082019050818103600083015261306e81612c1d565b9050919050565b6000602082019050818103600083015261308e81612c40565b9050919050565b600060208201905081810360008301526130ae81612c63565b9050919050565b600060208201905081810360008301526130ce81612c86565b9050919050565b600060208201905081810360008301526130ee81612ca9565b9050919050565b6000602082019050818103600083015261310e81612ccc565b9050919050565b6000602082019050818103600083015261312e81612cef565b9050919050565b6000602082019050818103600083015261314e81612d12565b9050919050565b6000602082019050818103600083015261316e81612d35565b9050919050565b6000602082019050818103600083015261318e81612d58565b9050919050565b600060208201905081810360008301526131ae81612d7b565b9050919050565b600060208201905081810360008301526131ce81612d9e565b9050919050565b600060208201905081810360008301526131ee81612dc1565b9050919050565b600060208201905061320a6000830184612df3565b92915050565b60006040820190506132256000830185612df3565b6132326020830184612df3565b9392505050565b6000613243613254565b905061324f8282613521565b919050565b6000604051905090565b600067ffffffffffffffff82111561327957613278613628565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156132a5576132a4613628565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156132d1576132d0613628565b5b6132da82613692565b9050602081019050919050565b600067ffffffffffffffff82111561330257613301613628565b5b61330b82613692565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613394826134a3565b915061339f836134a3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133d4576133d361359b565b5b828201905092915050565b60006133ea826134a3565b91506133f5836134a3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561342e5761342d61359b565b5b828202905092915050565b600061344482613483565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156134da5780820151818401526020810190506134bf565b838111156134e9576000848401525b50505050565b6000600282049050600182168061350757607f821691505b6020821081141561351b5761351a6135ca565b5b50919050565b61352a82613692565b810181811067ffffffffffffffff8211171561354957613548613628565b5b80604052505050565b600061355d826134a3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156135905761358f61359b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156136765760046000803e6136736000516136a3565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f546f6b656e4964206d757374206265206d6f7265207468616e207a65726f0000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f496e636f72726563742050726963650000000000000000000000000000000000600082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d757374206d696e74206174206c65617374206f6e6520746f6b656e00000000600082015250565b7f416d6f756e742063616e74206265207a65726f00000000000000000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f546f6b656e204f6e652073616c65206973206e6f742061637469766500000000600082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f42616c616e6365206973207a65726f0000000000000000000000000000000000600082015250565b7f546f6b656e4964206d757374206265206c657373207468616e20320000000000600082015250565b600060443d1015613bbc57613c3f565b613bc4613254565b60043d036004823e80513d602482011167ffffffffffffffff82111715613bec575050613c3f565b808201805167ffffffffffffffff811115613c0a5750505050613c3f565b80602083010160043d038501811115613c27575050505050613c3f565b613c3682602001850186613521565b82955050505050505b90565b613c4b81613439565b8114613c5657600080fd5b50565b613c628161344b565b8114613c6d57600080fd5b50565b613c7981613457565b8114613c8457600080fd5b50565b613c90816134a3565b8114613c9b57600080fd5b5056fea26469706673582212204f164f74b614549221003e436cbddf12ecbe5cde3bdf22a3fe36489a81e0259c64736f6c63430008070033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003c697066733a2f2f516d59614e6868586468424270764b4c3532473969384351326b726b52656d703471366d5a6734637661383856542f312e6a736f6e00000000000000000000000000000000000000000000000000000000000000000000003c697066733a2f2f516d59614e6868586468424270764b4c3532473969384351326b726b52656d703471366d5a6734637661383856542f312e6a736f6e00000000
Deployed Bytecode
0x60806040526004361061014a5760003560e01c806378455d69116100b6578063c7a170851161006f578063c7a1708514610484578063c87b56dd146104af578063e985e9c5146104ec578063f170ba4e14610529578063f242432a14610552578063f2fde38b1461057b5761014a565b806378455d691461037257806387a160781461039d5780638da5cb5b146103c857806395d89b41146103f3578063a22cb4651461041e578063bd85b039146104475761014a565b80633ccfd60b116101085780633ccfd60b146102765780634e1273f41461028d5780634f558e79146102ca57806367db3b8f146103075780636964664c14610330578063715018a61461035b5761014a565b8062fdd58e1461014f57806301ffc9a71461018c57806306fdde03146101c95780630e89341c146101f45780631b2ef1ca146102315780632eb2c2d61461024d575b600080fd5b34801561015b57600080fd5b506101766004803603810190610171919061281a565b6105a4565b60405161018391906131f5565b60405180910390f35b34801561019857600080fd5b506101b360048036038101906101ae91906128ff565b61066d565b6040516101c09190612f38565b60405180910390f35b3480156101d557600080fd5b506101de61074f565b6040516101eb9190612f53565b60405180910390f35b34801561020057600080fd5b5061021b600480360381019061021691906129b5565b6107dd565b6040516102289190612f53565b60405180910390f35b61024b600480360381019061024691906129e2565b6108bb565b005b34801561025957600080fd5b50610274600480360381019061026f9190612674565b610a51565b005b34801561028257600080fd5b5061028b610af2565b005b34801561029957600080fd5b506102b460048036038101906102af919061285a565b610c1c565b6040516102c19190612edf565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec91906129b5565b610d35565b6040516102fe9190612f38565b60405180910390f35b34801561031357600080fd5b5061032e60048036038101906103299190612959565b610d49565b005b34801561033c57600080fd5b50610345610df1565b6040516103529190612f38565b60405180910390f35b34801561036757600080fd5b50610370610e04565b005b34801561037e57600080fd5b50610387610e8c565b60405161039491906131f5565b60405180910390f35b3480156103a957600080fd5b506103b2610e91565b6040516103bf9190612e02565b60405180910390f35b3480156103d457600080fd5b506103dd610eb7565b6040516103ea9190612e02565b60405180910390f35b3480156103ff57600080fd5b50610408610ee1565b6040516104159190612f53565b60405180910390f35b34801561042a57600080fd5b50610445600480360381019061044091906127da565b610f6f565b005b34801561045357600080fd5b5061046e600480360381019061046991906129b5565b610f85565b60405161047b91906131f5565b60405180910390f35b34801561049057600080fd5b50610499610fa2565b6040516104a691906131f5565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d191906129b5565b610fad565b6040516104e39190612f53565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e9190612634565b61104d565b6040516105209190612f38565b60405180910390f35b34801561053557600080fd5b50610550600480360381019061054b91906128d2565b6110e1565b005b34801561055e57600080fd5b5061057960048036038101906105749190612743565b61117a565b005b34801561058757600080fd5b506105a2600480360381019061059d9190612607565b6111d1565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060c90612fb5565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061073857507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107485750610747826112c9565b5b9050919050565b6005805461075c906134ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610788906134ef565b80156107d55780601f106107aa576101008083540402835291602001916107d5565b820191906000526020600020905b8154815290600101906020018083116107b857829003601f168201915b505050505081565b606060006008600084815260200190815260200160002080546107ff906134ef565b905014156108175761081082611333565b90506108b6565b600860008381526020019081526020016000208054610835906134ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610861906134ef565b80156108ae5780601f10610883576101008083540402835291602001916108ae565b820191906000526020600020905b81548152906001019060200180831161089157829003601f168201915b505050505090505b919050565b600081116108fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f590613015565b60405180910390fd5b60028110610941576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610938906131d5565b60405180910390fd5b60008211610984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097b906130d5565b60405180910390fd5b6001811415610a3257600760009054906101000a900460ff16156109dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d490613155565b60405180910390fd5b348266b1a2bc2ec500006109f191906133df565b14610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2890613075565b60405180910390fd5b5b610a4d338284604051806020016040528060008152506113c7565b5050565b610a59611403565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610a9f5750610a9e85610a99611403565b61104d565b5b610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad590613055565b60405180910390fd5b610aeb858585858561140b565b5050505050565b610afa611403565b73ffffffffffffffffffffffffffffffffffffffff16610b18610eb7565b73ffffffffffffffffffffffffffffffffffffffff1614610b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b65906130b5565b60405180910390fd5b60004711610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba8906131b5565b60405180910390fd5b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610c19573d6000803e3d6000fd5b50565b60608151835114610c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5990613135565b60405180910390fd5b6000835167ffffffffffffffff811115610c7f57610c7e613628565b5b604051908082528060200260200182016040528015610cad5781602001602082028036833780820191505090505b50905060005b8451811015610d2a57610cfa858281518110610cd257610cd16135f9565b5b6020026020010151858381518110610ced57610cec6135f9565b5b60200260200101516105a4565b828281518110610d0d57610d0c6135f9565b5b60200260200101818152505080610d2390613552565b9050610cb3565b508091505092915050565b600080610d4183610f85565b119050919050565b610d51611403565b73ffffffffffffffffffffffffffffffffffffffff16610d6f610eb7565b73ffffffffffffffffffffffffffffffffffffffff1614610dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbc906130b5565b60405180910390fd5b81600860008381526020019081526020016000209080519060200190610dec9291906122df565b505050565b600760009054906101000a900460ff1681565b610e0c611403565b73ffffffffffffffffffffffffffffffffffffffff16610e2a610eb7565b73ffffffffffffffffffffffffffffffffffffffff1614610e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e77906130b5565b60405180910390fd5b610e8a600061172d565b565b600181565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60068054610eee906134ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1a906134ef565b8015610f675780601f10610f3c57610100808354040283529160200191610f67565b820191906000526020600020905b815481529060010190602001808311610f4a57829003601f168201915b505050505081565b610f81610f7a611403565b83836117f3565b5050565b600060036000838152602001908152602001600020549050919050565b66b1a2bc2ec5000081565b60086020528060005260406000206000915090508054610fcc906134ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff8906134ef565b80156110455780601f1061101a57610100808354040283529160200191611045565b820191906000526020600020905b81548152906001019060200180831161102857829003601f168201915b505050505081565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6110e9611403565b73ffffffffffffffffffffffffffffffffffffffff16611107610eb7565b73ffffffffffffffffffffffffffffffffffffffff161461115d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611154906130b5565b60405180910390fd5b80600760006101000a81548160ff02191690831515021790555050565b600082116111bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b4906130f5565b60405180910390fd5b6111ca8585858585611960565b5050505050565b6111d9611403565b73ffffffffffffffffffffffffffffffffffffffff166111f7610eb7565b73ffffffffffffffffffffffffffffffffffffffff161461124d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611244906130b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b490612fd5565b60405180910390fd5b6112c68161172d565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b606060028054611342906134ef565b80601f016020809104026020016040519081016040528092919081815260200182805461136e906134ef565b80156113bb5780601f10611390576101008083540402835291602001916113bb565b820191906000526020600020905b81548152906001019060200180831161139e57829003601f168201915b50505050509050919050565b6113d384848484611a01565b816003600085815260200190815260200160002060008282546113f69190613389565b9250508190555050505050565b600033905090565b815183511461144f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144690613175565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156114bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b690613035565b60405180910390fd5b60006114c9611403565b90506114d9818787878787611bb2565b60005b845181101561168a5760008582815181106114fa576114f96135f9565b5b602002602001015190506000858381518110611519576115186135f9565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b190613095565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461166f9190613389565b925050819055505050508061168390613552565b90506114dc565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611701929190612f01565b60405180910390a4611717818787878787611bc8565b611725818787878787611bd0565b505050505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185990613115565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119539190612f38565b60405180910390a3505050565b611968611403565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806119ae57506119ad856119a8611403565b61104d565b5b6119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490612ff5565b60405180910390fd5b6119fa8585858585611db7565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6890613195565b60405180910390fd5b6000611a7b611403565b90506000611a8885612053565b90506000611a9585612053565b9050611aa683600089858589611bb2565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b059190613389565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628989604051611b83929190613210565b60405180910390a4611b9a83600089858589611bc8565b611ba9836000898989896120cd565b50505050505050565b611bc08686868686866122b4565b505050505050565b505050505050565b611bef8473ffffffffffffffffffffffffffffffffffffffff166122bc565b15611daf578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611c35959493929190612e1d565b602060405180830381600087803b158015611c4f57600080fd5b505af1925050508015611c8057506040513d601f19601f82011682018060405250810190611c7d919061292c565b60015b611d2657611c8c613657565b806308c379a01415611ce95750611ca1613bac565b80611cac5750611ceb565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce09190612f53565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1d90612f75565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da490612f95565b60405180910390fd5b505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1e90613035565b60405180910390fd5b6000611e31611403565b90506000611e3e85612053565b90506000611e4b85612053565b9050611e5b838989858589611bb2565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905085811015611ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee990613095565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fa79190613389565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051612024929190613210565b60405180910390a461203a848a8a86868a611bc8565b612048848a8a8a8a8a6120cd565b505050505050505050565b60606000600167ffffffffffffffff81111561207257612071613628565b5b6040519080825280602002602001820160405280156120a05781602001602082028036833780820191505090505b50905082816000815181106120b8576120b76135f9565b5b60200260200101818152505080915050919050565b6120ec8473ffffffffffffffffffffffffffffffffffffffff166122bc565b156122ac578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612132959493929190612e85565b602060405180830381600087803b15801561214c57600080fd5b505af192505050801561217d57506040513d601f19601f8201168201806040525081019061217a919061292c565b60015b61222357612189613657565b806308c379a014156121e6575061219e613bac565b806121a957506121e8565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121dd9190612f53565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221a90612f75565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146122aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a190612f95565b60405180910390fd5b505b505050505050565b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546122eb906134ef565b90600052602060002090601f01602090048101928261230d5760008555612354565b82601f1061232657805160ff1916838001178555612354565b82800160010185558215612354579182015b82811115612353578251825591602001919060010190612338565b5b5090506123619190612365565b5090565b5b8082111561237e576000816000905550600101612366565b5090565b60006123956123908461325e565b613239565b905080838252602082019050828560208602820111156123b8576123b761367e565b5b60005b858110156123e857816123ce88826124e6565b8452602084019350602083019250506001810190506123bb565b5050509392505050565b60006124056124008461328a565b613239565b905080838252602082019050828560208602820111156124285761242761367e565b5b60005b85811015612458578161243e88826125f2565b84526020840193506020830192505060018101905061242b565b5050509392505050565b6000612475612470846132b6565b613239565b90508281526020810184848401111561249157612490613683565b5b61249c8482856134ad565b509392505050565b60006124b76124b2846132e7565b613239565b9050828152602081018484840111156124d3576124d2613683565b5b6124de8482856134ad565b509392505050565b6000813590506124f581613c42565b92915050565b600082601f8301126125105761250f613679565b5b8135612520848260208601612382565b91505092915050565b600082601f83011261253e5761253d613679565b5b813561254e8482602086016123f2565b91505092915050565b60008135905061256681613c59565b92915050565b60008135905061257b81613c70565b92915050565b60008151905061259081613c70565b92915050565b600082601f8301126125ab576125aa613679565b5b81356125bb848260208601612462565b91505092915050565b600082601f8301126125d9576125d8613679565b5b81356125e98482602086016124a4565b91505092915050565b60008135905061260181613c87565b92915050565b60006020828403121561261d5761261c61368d565b5b600061262b848285016124e6565b91505092915050565b6000806040838503121561264b5761264a61368d565b5b6000612659858286016124e6565b925050602061266a858286016124e6565b9150509250929050565b600080600080600060a086880312156126905761268f61368d565b5b600061269e888289016124e6565b95505060206126af888289016124e6565b945050604086013567ffffffffffffffff8111156126d0576126cf613688565b5b6126dc88828901612529565b935050606086013567ffffffffffffffff8111156126fd576126fc613688565b5b61270988828901612529565b925050608086013567ffffffffffffffff81111561272a57612729613688565b5b61273688828901612596565b9150509295509295909350565b600080600080600060a0868803121561275f5761275e61368d565b5b600061276d888289016124e6565b955050602061277e888289016124e6565b945050604061278f888289016125f2565b93505060606127a0888289016125f2565b925050608086013567ffffffffffffffff8111156127c1576127c0613688565b5b6127cd88828901612596565b9150509295509295909350565b600080604083850312156127f1576127f061368d565b5b60006127ff858286016124e6565b925050602061281085828601612557565b9150509250929050565b600080604083850312156128315761283061368d565b5b600061283f858286016124e6565b9250506020612850858286016125f2565b9150509250929050565b600080604083850312156128715761287061368d565b5b600083013567ffffffffffffffff81111561288f5761288e613688565b5b61289b858286016124fb565b925050602083013567ffffffffffffffff8111156128bc576128bb613688565b5b6128c885828601612529565b9150509250929050565b6000602082840312156128e8576128e761368d565b5b60006128f684828501612557565b91505092915050565b6000602082840312156129155761291461368d565b5b60006129238482850161256c565b91505092915050565b6000602082840312156129425761294161368d565b5b600061295084828501612581565b91505092915050565b600080604083850312156129705761296f61368d565b5b600083013567ffffffffffffffff81111561298e5761298d613688565b5b61299a858286016125c4565b92505060206129ab858286016125f2565b9150509250929050565b6000602082840312156129cb576129ca61368d565b5b60006129d9848285016125f2565b91505092915050565b600080604083850312156129f9576129f861368d565b5b6000612a07858286016125f2565b9250506020612a18858286016125f2565b9150509250929050565b6000612a2e8383612de4565b60208301905092915050565b612a4381613439565b82525050565b6000612a5482613328565b612a5e8185613356565b9350612a6983613318565b8060005b83811015612a9a578151612a818882612a22565b9750612a8c83613349565b925050600181019050612a6d565b5085935050505092915050565b612ab08161344b565b82525050565b6000612ac182613333565b612acb8185613367565b9350612adb8185602086016134bc565b612ae481613692565b840191505092915050565b6000612afa8261333e565b612b048185613378565b9350612b148185602086016134bc565b612b1d81613692565b840191505092915050565b6000612b35603483613378565b9150612b40826136b0565b604082019050919050565b6000612b58602883613378565b9150612b63826136ff565b604082019050919050565b6000612b7b602b83613378565b9150612b868261374e565b604082019050919050565b6000612b9e602683613378565b9150612ba98261379d565b604082019050919050565b6000612bc1602983613378565b9150612bcc826137ec565b604082019050919050565b6000612be4601e83613378565b9150612bef8261383b565b602082019050919050565b6000612c07602583613378565b9150612c1282613864565b604082019050919050565b6000612c2a603283613378565b9150612c35826138b3565b604082019050919050565b6000612c4d600f83613378565b9150612c5882613902565b602082019050919050565b6000612c70602a83613378565b9150612c7b8261392b565b604082019050919050565b6000612c93602083613378565b9150612c9e8261397a565b602082019050919050565b6000612cb6601c83613378565b9150612cc1826139a3565b602082019050919050565b6000612cd9601383613378565b9150612ce4826139cc565b602082019050919050565b6000612cfc602983613378565b9150612d07826139f5565b604082019050919050565b6000612d1f602983613378565b9150612d2a82613a44565b604082019050919050565b6000612d42601c83613378565b9150612d4d82613a93565b602082019050919050565b6000612d65602883613378565b9150612d7082613abc565b604082019050919050565b6000612d88602183613378565b9150612d9382613b0b565b604082019050919050565b6000612dab600f83613378565b9150612db682613b5a565b602082019050919050565b6000612dce601b83613378565b9150612dd982613b83565b602082019050919050565b612ded816134a3565b82525050565b612dfc816134a3565b82525050565b6000602082019050612e176000830184612a3a565b92915050565b600060a082019050612e326000830188612a3a565b612e3f6020830187612a3a565b8181036040830152612e518186612a49565b90508181036060830152612e658185612a49565b90508181036080830152612e798184612ab6565b90509695505050505050565b600060a082019050612e9a6000830188612a3a565b612ea76020830187612a3a565b612eb46040830186612df3565b612ec16060830185612df3565b8181036080830152612ed38184612ab6565b90509695505050505050565b60006020820190508181036000830152612ef98184612a49565b905092915050565b60006040820190508181036000830152612f1b8185612a49565b90508181036020830152612f2f8184612a49565b90509392505050565b6000602082019050612f4d6000830184612aa7565b92915050565b60006020820190508181036000830152612f6d8184612aef565b905092915050565b60006020820190508181036000830152612f8e81612b28565b9050919050565b60006020820190508181036000830152612fae81612b4b565b9050919050565b60006020820190508181036000830152612fce81612b6e565b9050919050565b60006020820190508181036000830152612fee81612b91565b9050919050565b6000602082019050818103600083015261300e81612bb4565b9050919050565b6000602082019050818103600083015261302e81612bd7565b9050919050565b6000602082019050818103600083015261304e81612bfa565b9050919050565b6000602082019050818103600083015261306e81612c1d565b9050919050565b6000602082019050818103600083015261308e81612c40565b9050919050565b600060208201905081810360008301526130ae81612c63565b9050919050565b600060208201905081810360008301526130ce81612c86565b9050919050565b600060208201905081810360008301526130ee81612ca9565b9050919050565b6000602082019050818103600083015261310e81612ccc565b9050919050565b6000602082019050818103600083015261312e81612cef565b9050919050565b6000602082019050818103600083015261314e81612d12565b9050919050565b6000602082019050818103600083015261316e81612d35565b9050919050565b6000602082019050818103600083015261318e81612d58565b9050919050565b600060208201905081810360008301526131ae81612d7b565b9050919050565b600060208201905081810360008301526131ce81612d9e565b9050919050565b600060208201905081810360008301526131ee81612dc1565b9050919050565b600060208201905061320a6000830184612df3565b92915050565b60006040820190506132256000830185612df3565b6132326020830184612df3565b9392505050565b6000613243613254565b905061324f8282613521565b919050565b6000604051905090565b600067ffffffffffffffff82111561327957613278613628565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156132a5576132a4613628565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156132d1576132d0613628565b5b6132da82613692565b9050602081019050919050565b600067ffffffffffffffff82111561330257613301613628565b5b61330b82613692565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613394826134a3565b915061339f836134a3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133d4576133d361359b565b5b828201905092915050565b60006133ea826134a3565b91506133f5836134a3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561342e5761342d61359b565b5b828202905092915050565b600061344482613483565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156134da5780820151818401526020810190506134bf565b838111156134e9576000848401525b50505050565b6000600282049050600182168061350757607f821691505b6020821081141561351b5761351a6135ca565b5b50919050565b61352a82613692565b810181811067ffffffffffffffff8211171561354957613548613628565b5b80604052505050565b600061355d826134a3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156135905761358f61359b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156136765760046000803e6136736000516136a3565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f546f6b656e4964206d757374206265206d6f7265207468616e207a65726f0000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f496e636f72726563742050726963650000000000000000000000000000000000600082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d757374206d696e74206174206c65617374206f6e6520746f6b656e00000000600082015250565b7f416d6f756e742063616e74206265207a65726f00000000000000000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f546f6b656e204f6e652073616c65206973206e6f742061637469766500000000600082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f42616c616e6365206973207a65726f0000000000000000000000000000000000600082015250565b7f546f6b656e4964206d757374206265206c657373207468616e20320000000000600082015250565b600060443d1015613bbc57613c3f565b613bc4613254565b60043d036004823e80513d602482011167ffffffffffffffff82111715613bec575050613c3f565b808201805167ffffffffffffffff811115613c0a5750505050613c3f565b80602083010160043d038501811115613c27575050505050613c3f565b613c3682602001850186613521565b82955050505050505b90565b613c4b81613439565b8114613c5657600080fd5b50565b613c628161344b565b8114613c6d57600080fd5b50565b613c7981613457565b8114613c8457600080fd5b50565b613c90816134a3565b8114613c9b57600080fd5b5056fea26469706673582212204f164f74b614549221003e436cbddf12ecbe5cde3bdf22a3fe36489a81e0259c64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003c697066733a2f2f516d59614e6868586468424270764b4c3532473969384351326b726b52656d703471366d5a6734637661383856542f312e6a736f6e00000000000000000000000000000000000000000000000000000000000000000000003c697066733a2f2f516d59614e6868586468424270764b4c3532473969384351326b726b52656d703471366d5a6734637661383856542f312e6a736f6e00000000
-----Decoded View---------------
Arg [0] : uriBase (string): ipfs://QmYaNhhXdhBBpvKL52G9i8CQ2krkRemp4q6mZg4cva88VT/1.json
Arg [1] : uriTokenOne (string): ipfs://QmYaNhhXdhBBpvKL52G9i8CQ2krkRemp4q6mZg4cva88VT/1.json
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 000000000000000000000000000000000000000000000000000000000000003c
Arg [3] : 697066733a2f2f516d59614e6868586468424270764b4c353247396938435132
Arg [4] : 6b726b52656d703471366d5a6734637661383856542f312e6a736f6e00000000
Arg [5] : 000000000000000000000000000000000000000000000000000000000000003c
Arg [6] : 697066733a2f2f516d59614e6868586468424270764b4c353247396938435132
Arg [7] : 6b726b52656d703471366d5a6734637661383856542f312e6a736f6e00000000
Deployed Bytecode Sourcemap
49798:3073:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30308:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29331:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49907:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50651:320;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51283:532;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32247:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52690:178;;;;;;;;;;;;;:::i;:::-;;30705:524;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46433:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51041:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50011:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48981:103;;;;;;;;;;;;;:::i;:::-;;50051:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50157:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48330:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49973:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31302:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46222:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50098:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50321:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31529:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51178:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51990:296;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49239:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30308:231;30394:7;30441:1;30422:21;;:7;:21;;;;30414:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;30509:9;:13;30519:2;30509:13;;;;;;;;;;;:22;30523:7;30509:22;;;;;;;;;;;;;;;;30502:29;;30308:231;;;;:::o;29331:310::-;29433:4;29485:26;29470:41;;;:11;:41;;;;:110;;;;29543:37;29528:52;;;:11;:52;;;;29470:110;:163;;;;29597:36;29621:11;29597:23;:36::i;:::-;29470:163;29450:183;;29331:310;;;:::o;49907:35::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;50651:320::-;50711:13;50874:1;50845:8;:17;50854:7;50845:17;;;;;;;;;;;50839:31;;;;;:::i;:::-;;;:36;50835:94;;;50899:18;50909:7;50899:9;:18::i;:::-;50892:25;;;;50835:94;50946:8;:17;50955:7;50946:17;;;;;;;;;;;50939:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50651:320;;;;:::o;51283:532::-;51384:1;51374:7;:11;51366:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;51449:1;51439:7;:11;51431:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;51518:1;51501:14;:18;51493:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;51578:1;51567:7;:12;51563:188;;;51605:13;;;;;;;;;;;51604:14;51596:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;51710:9;51692:14;50140:10;51674:32;;;;:::i;:::-;:45;51666:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;51563:188;51761:46;51767:10;51779:7;51788:14;51761:46;;;;;;;;;;;;:5;:46::i;:::-;51283:532;;:::o;32247:442::-;32488:12;:10;:12::i;:::-;32480:20;;:4;:20;;;:60;;;;32504:36;32521:4;32527:12;:10;:12::i;:::-;32504:16;:36::i;:::-;32480:60;32458:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;32629:52;32652:4;32658:2;32662:3;32667:7;32676:4;32629:22;:52::i;:::-;32247:442;;;;;:::o;52690:178::-;48561:12;:10;:12::i;:::-;48550:23;;:7;:5;:7::i;:::-;:23;;;48542:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52772:1:::1;52748:21;:25;52740:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;52812:15;;;;;;;;;;;52804:33;;:56;52838:21;52804:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;52690:178::o:0;30705:524::-;30861:16;30922:3;:10;30903:8;:15;:29;30895:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;30991:30;31038:8;:15;31024:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30991:63;;31072:9;31067:122;31091:8;:15;31087:1;:19;31067:122;;;31147:30;31157:8;31166:1;31157:11;;;;;;;;:::i;:::-;;;;;;;;31170:3;31174:1;31170:6;;;;;;;;:::i;:::-;;;;;;;;31147:9;:30::i;:::-;31128:13;31142:1;31128:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;31108:3;;;;:::i;:::-;;;31067:122;;;;31208:13;31201:20;;;30705:524;;;;:::o;46433:122::-;46490:4;46546:1;46514:29;46540:2;46514:25;:29::i;:::-;:33;46507:40;;46433:122;;;:::o;51041:129::-;48561:12;:10;:12::i;:::-;48550:23;;:7;:5;:7::i;:::-;:23;;;48542:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51150:12:::1;51130:8;:17;51139:7;51130:17;;;;;;;;;;;:32;;;;;;;;;;;;:::i;:::-;;51041:129:::0;;:::o;50011:33::-;;;;;;;;;;;;;:::o;48981:103::-;48561:12;:10;:12::i;:::-;48550:23;;:7;:5;:7::i;:::-;:23;;;48542:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49046:30:::1;49073:1;49046:18;:30::i;:::-;48981:103::o:0;50051:40::-;50090:1;50051:40;:::o;50157:75::-;;;;;;;;;;;;;:::o;48330:87::-;48376:7;48403:6;;;;;;;;;;;48396:13;;48330:87;:::o;49973:29::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;31302:155::-;31397:52;31416:12;:10;:12::i;:::-;31430:8;31440;31397:18;:52::i;:::-;31302:155;;:::o;46222:113::-;46284:7;46311:12;:16;46324:2;46311:16;;;;;;;;;;;;46304:23;;46222:113;;;:::o;50098:52::-;50140:10;50098:52;:::o;50321:43::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;31529:168::-;31628:4;31652:18;:27;31671:7;31652:27;;;;;;;;;;;;;;;:37;31680:8;31652:37;;;;;;;;;;;;;;;;;;;;;;;;;31645:44;;31529:168;;;;:::o;51178:97::-;48561:12;:10;:12::i;:::-;48550:23;;:7;:5;:7::i;:::-;:23;;;48542:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51261:6:::1;51245:13;;:22;;;;;;;;;;;;;;;;;;51178:97:::0;:::o;51990:296::-;52185:1;52176:6;:10;52168:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;52228:50;52251:4;52257:2;52261;52265:6;52273:4;52228:22;:50::i;:::-;51990:296;;;;;:::o;49239:201::-;48561:12;:10;:12::i;:::-;48550:23;;:7;:5;:7::i;:::-;:23;;;48542:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49348:1:::1;49328:22;;:8;:22;;;;49320:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;49404:28;49423:8;49404:18;:28::i;:::-;49239:201:::0;:::o;21361:157::-;21446:4;21485:25;21470:40;;;:11;:40;;;;21463:47;;21361:157;;;:::o;30052:105::-;30112:13;30145:4;30138:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30052:105;;;:::o;46615:242::-;46774:38;46786:7;46795:2;46799:6;46807:4;46774:11;:38::i;:::-;46843:6;46823:12;:16;46836:2;46823:16;;;;;;;;;;;;:26;;;;;;;:::i;:::-;;;;;;;;46615:242;;;;:::o;600:98::-;653:7;680:10;673:17;;600:98;:::o;34485:1146::-;34712:7;:14;34698:3;:10;:28;34690:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;34804:1;34790:16;;:2;:16;;;;34782:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;34861:16;34880:12;:10;:12::i;:::-;34861:31;;34905:60;34926:8;34936:4;34942:2;34946:3;34951:7;34960:4;34905:20;:60::i;:::-;34983:9;34978:421;35002:3;:10;34998:1;:14;34978:421;;;35034:10;35047:3;35051:1;35047:6;;;;;;;;:::i;:::-;;;;;;;;35034:19;;35068:14;35085:7;35093:1;35085:10;;;;;;;;:::i;:::-;;;;;;;;35068:27;;35112:19;35134:9;:13;35144:2;35134:13;;;;;;;;;;;:19;35148:4;35134:19;;;;;;;;;;;;;;;;35112:41;;35191:6;35176:11;:21;;35168:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;35324:6;35310:11;:20;35288:9;:13;35298:2;35288:13;;;;;;;;;;;:19;35302:4;35288:19;;;;;;;;;;;;;;;:42;;;;35381:6;35360:9;:13;35370:2;35360:13;;;;;;;;;;;:17;35374:2;35360:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;35019:380;;;35014:3;;;;:::i;:::-;;;34978:421;;;;35446:2;35416:47;;35440:4;35416:47;;35430:8;35416:47;;;35450:3;35455:7;35416:47;;;;;;;:::i;:::-;;;;;;;;35476:59;35496:8;35506:4;35512:2;35516:3;35521:7;35530:4;35476:19;:59::i;:::-;35548:75;35584:8;35594:4;35600:2;35604:3;35609:7;35618:4;35548:35;:75::i;:::-;34679:952;34485:1146;;;;;:::o;49600:191::-;49674:16;49693:6;;;;;;;;;;;49674:25;;49719:8;49710:6;;:17;;;;;;;;;;;;;;;;;;49774:8;49743:40;;49764:8;49743:40;;;;;;;;;;;;49663:128;49600:191;:::o;41219:331::-;41374:8;41365:17;;:5;:17;;;;41357:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;41477:8;41439:18;:25;41458:5;41439:25;;;;;;;;;;;;;;;:35;41465:8;41439:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;41523:8;41501:41;;41516:5;41501:41;;;41533:8;41501:41;;;;;;:::i;:::-;;;;;;;;41219:331;;;:::o;31769:401::-;31985:12;:10;:12::i;:::-;31977:20;;:4;:20;;;:60;;;;32001:36;32018:4;32024:12;:10;:12::i;:::-;32001:16;:36::i;:::-;31977:60;31955:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;32117:45;32135:4;32141:2;32145;32149:6;32157:4;32117:17;:45::i;:::-;31769:401;;;;;:::o;36949:729::-;37116:1;37102:16;;:2;:16;;;;37094:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;37169:16;37188:12;:10;:12::i;:::-;37169:31;;37211:20;37234:21;37252:2;37234:17;:21::i;:::-;37211:44;;37266:24;37293:25;37311:6;37293:17;:25::i;:::-;37266:52;;37331:66;37352:8;37370:1;37374:2;37378:3;37383:7;37392:4;37331:20;:66::i;:::-;37431:6;37410:9;:13;37420:2;37410:13;;;;;;;;;;;:17;37424:2;37410:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;37490:2;37453:52;;37486:1;37453:52;;37468:8;37453:52;;;37494:2;37498:6;37453:52;;;;;;;:::i;:::-;;;;;;;;37518:65;37538:8;37556:1;37560:2;37564:3;37569:7;37578:4;37518:19;:65::i;:::-;37596:74;37627:8;37645:1;37649:2;37653;37657:6;37665:4;37596:30;:74::i;:::-;37083:595;;;36949:729;;;;:::o;52415:267::-;52608:66;52635:8;52645:4;52651:2;52655:3;52660:7;52669:4;52608:26;:66::i;:::-;52415:267;;;;;;:::o;43682:220::-;;;;;;;:::o;44662:813::-;44902:15;:2;:13;;;:15::i;:::-;44898:570;;;44955:2;44938:43;;;44982:8;44992:4;44998:3;45003:7;45012:4;44938:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;44934:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;45330:6;45323:14;;;;;;;;;;;:::i;:::-;;;;;;;;44934:523;;;45379:62;;;;;;;;;;:::i;:::-;;;;;;;;44934:523;45111:48;;;45099:60;;;:8;:60;;;;45095:159;;45184:50;;;;;;;;;;:::i;:::-;;;;;;;;45095:159;45018:251;44898:570;44662:813;;;;;;:::o;33153:974::-;33355:1;33341:16;;:2;:16;;;;33333:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;33412:16;33431:12;:10;:12::i;:::-;33412:31;;33454:20;33477:21;33495:2;33477:17;:21::i;:::-;33454:44;;33509:24;33536:25;33554:6;33536:17;:25::i;:::-;33509:52;;33574:60;33595:8;33605:4;33611:2;33615:3;33620:7;33629:4;33574:20;:60::i;:::-;33647:19;33669:9;:13;33679:2;33669:13;;;;;;;;;;;:19;33683:4;33669:19;;;;;;;;;;;;;;;;33647:41;;33722:6;33707:11;:21;;33699:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;33847:6;33833:11;:20;33811:9;:13;33821:2;33811:13;;;;;;;;;;;:19;33825:4;33811:19;;;;;;;;;;;;;;;:42;;;;33896:6;33875:9;:13;33885:2;33875:13;;;;;;;;;;;:17;33889:2;33875:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;33951:2;33920:46;;33945:4;33920:46;;33935:8;33920:46;;;33955:2;33959:6;33920:46;;;;;;;:::i;:::-;;;;;;;;33979:59;33999:8;34009:4;34015:2;34019:3;34024:7;34033:4;33979:19;:59::i;:::-;34051:68;34082:8;34092:4;34098:2;34102;34106:6;34114:4;34051:30;:68::i;:::-;33322:805;;;;33153:974;;;;;:::o;45483:198::-;45549:16;45578:22;45617:1;45603:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45578:41;;45641:7;45630:5;45636:1;45630:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;45668:5;45661:12;;;45483:198;;;:::o;43910:744::-;44125:15;:2;:13;;;:15::i;:::-;44121:526;;;44178:2;44161:38;;;44200:8;44210:4;44216:2;44220:6;44228:4;44161:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;44157:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;44509:6;44502:14;;;;;;;;;;;:::i;:::-;;;;;;;;44157:479;;;44558:62;;;;;;;;;;:::i;:::-;;;;;;;;44157:479;44295:43;;;44283:55;;;:8;:55;;;;44279:154;;44363:50;;;;;;;;;;:::i;:::-;;;;;;;;44279:154;44234:214;44121:526;43910:744;;;;;;:::o;42506:221::-;;;;;;;:::o;13234:326::-;13294:4;13551:1;13529:7;:19;;;:23;13522:30;;13234:326;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:112;;;1770:79;;:::i;:::-;1739:112;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;1497:410;;;;;:::o;1913:412::-;1991:5;2016:66;2032:49;2074:6;2032:49;:::i;:::-;2016:66;:::i;:::-;2007:75;;2105:6;2098:5;2091:21;2143:4;2136:5;2132:16;2181:3;2172:6;2167:3;2163:16;2160:25;2157:112;;;2188:79;;:::i;:::-;2157:112;2278:41;2312:6;2307:3;2302;2278:41;:::i;:::-;1997:328;1913:412;;;;;:::o;2331:139::-;2377:5;2415:6;2402:20;2393:29;;2431:33;2458:5;2431:33;:::i;:::-;2331:139;;;;:::o;2493:370::-;2564:5;2613:3;2606:4;2598:6;2594:17;2590:27;2580:122;;2621:79;;:::i;:::-;2580:122;2738:6;2725:20;2763:94;2853:3;2845:6;2838:4;2830:6;2826:17;2763:94;:::i;:::-;2754:103;;2570:293;2493:370;;;;:::o;2886:::-;2957:5;3006:3;2999:4;2991:6;2987:17;2983:27;2973:122;;3014:79;;:::i;:::-;2973:122;3131:6;3118:20;3156:94;3246:3;3238:6;3231:4;3223:6;3219:17;3156:94;:::i;:::-;3147:103;;2963:293;2886:370;;;;:::o;3262:133::-;3305:5;3343:6;3330:20;3321:29;;3359:30;3383:5;3359:30;:::i;:::-;3262:133;;;;:::o;3401:137::-;3446:5;3484:6;3471:20;3462:29;;3500:32;3526:5;3500:32;:::i;:::-;3401:137;;;;:::o;3544:141::-;3600:5;3631:6;3625:13;3616:22;;3647:32;3673:5;3647:32;:::i;:::-;3544:141;;;;:::o;3704:338::-;3759:5;3808:3;3801:4;3793:6;3789:17;3785:27;3775:122;;3816:79;;:::i;:::-;3775:122;3933:6;3920:20;3958:78;4032:3;4024:6;4017:4;4009:6;4005:17;3958:78;:::i;:::-;3949:87;;3765:277;3704:338;;;;:::o;4062:340::-;4118:5;4167:3;4160:4;4152:6;4148:17;4144:27;4134:122;;4175:79;;:::i;:::-;4134:122;4292:6;4279:20;4317:79;4392:3;4384:6;4377:4;4369:6;4365:17;4317:79;:::i;:::-;4308:88;;4124:278;4062:340;;;;:::o;4408:139::-;4454:5;4492:6;4479:20;4470:29;;4508:33;4535:5;4508:33;:::i;:::-;4408:139;;;;:::o;4553:329::-;4612:6;4661:2;4649:9;4640:7;4636:23;4632:32;4629:119;;;4667:79;;:::i;:::-;4629:119;4787:1;4812:53;4857:7;4848:6;4837:9;4833:22;4812:53;:::i;:::-;4802:63;;4758:117;4553:329;;;;:::o;4888:474::-;4956:6;4964;5013:2;5001:9;4992:7;4988:23;4984:32;4981:119;;;5019:79;;:::i;:::-;4981:119;5139:1;5164:53;5209:7;5200:6;5189:9;5185:22;5164:53;:::i;:::-;5154:63;;5110:117;5266:2;5292:53;5337:7;5328:6;5317:9;5313:22;5292:53;:::i;:::-;5282:63;;5237:118;4888:474;;;;;:::o;5368:1509::-;5522:6;5530;5538;5546;5554;5603:3;5591:9;5582:7;5578:23;5574:33;5571:120;;;5610:79;;:::i;:::-;5571:120;5730:1;5755:53;5800:7;5791:6;5780:9;5776:22;5755:53;:::i;:::-;5745:63;;5701:117;5857:2;5883:53;5928:7;5919:6;5908:9;5904:22;5883:53;:::i;:::-;5873:63;;5828:118;6013:2;6002:9;5998:18;5985:32;6044:18;6036:6;6033:30;6030:117;;;6066:79;;:::i;:::-;6030:117;6171:78;6241:7;6232:6;6221:9;6217:22;6171:78;:::i;:::-;6161:88;;5956:303;6326:2;6315:9;6311:18;6298:32;6357:18;6349:6;6346:30;6343:117;;;6379:79;;:::i;:::-;6343:117;6484:78;6554:7;6545:6;6534:9;6530:22;6484:78;:::i;:::-;6474:88;;6269:303;6639:3;6628:9;6624:19;6611:33;6671:18;6663:6;6660:30;6657:117;;;6693:79;;:::i;:::-;6657:117;6798:62;6852:7;6843:6;6832:9;6828:22;6798:62;:::i;:::-;6788:72;;6582:288;5368:1509;;;;;;;;:::o;6883:1089::-;6987:6;6995;7003;7011;7019;7068:3;7056:9;7047:7;7043:23;7039:33;7036:120;;;7075:79;;:::i;:::-;7036:120;7195:1;7220:53;7265:7;7256:6;7245:9;7241:22;7220:53;:::i;:::-;7210:63;;7166:117;7322:2;7348:53;7393:7;7384:6;7373:9;7369:22;7348:53;:::i;:::-;7338:63;;7293:118;7450:2;7476:53;7521:7;7512:6;7501:9;7497:22;7476:53;:::i;:::-;7466:63;;7421:118;7578:2;7604:53;7649:7;7640:6;7629:9;7625:22;7604:53;:::i;:::-;7594:63;;7549:118;7734:3;7723:9;7719:19;7706:33;7766:18;7758:6;7755:30;7752:117;;;7788:79;;:::i;:::-;7752:117;7893:62;7947:7;7938:6;7927:9;7923:22;7893:62;:::i;:::-;7883:72;;7677:288;6883:1089;;;;;;;;:::o;7978:468::-;8043:6;8051;8100:2;8088:9;8079:7;8075:23;8071:32;8068:119;;;8106:79;;:::i;:::-;8068:119;8226:1;8251:53;8296:7;8287:6;8276:9;8272:22;8251:53;:::i;:::-;8241:63;;8197:117;8353:2;8379:50;8421:7;8412:6;8401:9;8397:22;8379:50;:::i;:::-;8369:60;;8324:115;7978:468;;;;;:::o;8452:474::-;8520:6;8528;8577:2;8565:9;8556:7;8552:23;8548:32;8545:119;;;8583:79;;:::i;:::-;8545:119;8703:1;8728:53;8773:7;8764:6;8753:9;8749:22;8728:53;:::i;:::-;8718:63;;8674:117;8830:2;8856:53;8901:7;8892:6;8881:9;8877:22;8856:53;:::i;:::-;8846:63;;8801:118;8452:474;;;;;:::o;8932:894::-;9050:6;9058;9107:2;9095:9;9086:7;9082:23;9078:32;9075:119;;;9113:79;;:::i;:::-;9075:119;9261:1;9250:9;9246:17;9233:31;9291:18;9283:6;9280:30;9277:117;;;9313:79;;:::i;:::-;9277:117;9418:78;9488:7;9479:6;9468:9;9464:22;9418:78;:::i;:::-;9408:88;;9204:302;9573:2;9562:9;9558:18;9545:32;9604:18;9596:6;9593:30;9590:117;;;9626:79;;:::i;:::-;9590:117;9731:78;9801:7;9792:6;9781:9;9777:22;9731:78;:::i;:::-;9721:88;;9516:303;8932:894;;;;;:::o;9832:323::-;9888:6;9937:2;9925:9;9916:7;9912:23;9908:32;9905:119;;;9943:79;;:::i;:::-;9905:119;10063:1;10088:50;10130:7;10121:6;10110:9;10106:22;10088:50;:::i;:::-;10078:60;;10034:114;9832:323;;;;:::o;10161:327::-;10219:6;10268:2;10256:9;10247:7;10243:23;10239:32;10236:119;;;10274:79;;:::i;:::-;10236:119;10394:1;10419:52;10463:7;10454:6;10443:9;10439:22;10419:52;:::i;:::-;10409:62;;10365:116;10161:327;;;;:::o;10494:349::-;10563:6;10612:2;10600:9;10591:7;10587:23;10583:32;10580:119;;;10618:79;;:::i;:::-;10580:119;10738:1;10763:63;10818:7;10809:6;10798:9;10794:22;10763:63;:::i;:::-;10753:73;;10709:127;10494:349;;;;:::o;10849:654::-;10927:6;10935;10984:2;10972:9;10963:7;10959:23;10955:32;10952:119;;;10990:79;;:::i;:::-;10952:119;11138:1;11127:9;11123:17;11110:31;11168:18;11160:6;11157:30;11154:117;;;11190:79;;:::i;:::-;11154:117;11295:63;11350:7;11341:6;11330:9;11326:22;11295:63;:::i;:::-;11285:73;;11081:287;11407:2;11433:53;11478:7;11469:6;11458:9;11454:22;11433:53;:::i;:::-;11423:63;;11378:118;10849:654;;;;;:::o;11509:329::-;11568:6;11617:2;11605:9;11596:7;11592:23;11588:32;11585:119;;;11623:79;;:::i;:::-;11585:119;11743:1;11768:53;11813:7;11804:6;11793:9;11789:22;11768:53;:::i;:::-;11758:63;;11714:117;11509:329;;;;:::o;11844:474::-;11912:6;11920;11969:2;11957:9;11948:7;11944:23;11940:32;11937:119;;;11975:79;;:::i;:::-;11937:119;12095:1;12120:53;12165:7;12156:6;12145:9;12141:22;12120:53;:::i;:::-;12110:63;;12066:117;12222:2;12248:53;12293:7;12284:6;12273:9;12269:22;12248:53;:::i;:::-;12238:63;;12193:118;11844:474;;;;;:::o;12324:179::-;12393:10;12414:46;12456:3;12448:6;12414:46;:::i;:::-;12492:4;12487:3;12483:14;12469:28;;12324:179;;;;:::o;12509:118::-;12596:24;12614:5;12596:24;:::i;:::-;12591:3;12584:37;12509:118;;:::o;12663:732::-;12782:3;12811:54;12859:5;12811:54;:::i;:::-;12881:86;12960:6;12955:3;12881:86;:::i;:::-;12874:93;;12991:56;13041:5;12991:56;:::i;:::-;13070:7;13101:1;13086:284;13111:6;13108:1;13105:13;13086:284;;;13187:6;13181:13;13214:63;13273:3;13258:13;13214:63;:::i;:::-;13207:70;;13300:60;13353:6;13300:60;:::i;:::-;13290:70;;13146:224;13133:1;13130;13126:9;13121:14;;13086:284;;;13090:14;13386:3;13379:10;;12787:608;;;12663:732;;;;:::o;13401:109::-;13482:21;13497:5;13482:21;:::i;:::-;13477:3;13470:34;13401:109;;:::o;13516:360::-;13602:3;13630:38;13662:5;13630:38;:::i;:::-;13684:70;13747:6;13742:3;13684:70;:::i;:::-;13677:77;;13763:52;13808:6;13803:3;13796:4;13789:5;13785:16;13763:52;:::i;:::-;13840:29;13862:6;13840:29;:::i;:::-;13835:3;13831:39;13824:46;;13606:270;13516:360;;;;:::o;13882:364::-;13970:3;13998:39;14031:5;13998:39;:::i;:::-;14053:71;14117:6;14112:3;14053:71;:::i;:::-;14046:78;;14133:52;14178:6;14173:3;14166:4;14159:5;14155:16;14133:52;:::i;:::-;14210:29;14232:6;14210:29;:::i;:::-;14205:3;14201:39;14194:46;;13974:272;13882:364;;;;:::o;14252:366::-;14394:3;14415:67;14479:2;14474:3;14415:67;:::i;:::-;14408:74;;14491:93;14580:3;14491:93;:::i;:::-;14609:2;14604:3;14600:12;14593:19;;14252:366;;;:::o;14624:::-;14766:3;14787:67;14851:2;14846:3;14787:67;:::i;:::-;14780:74;;14863:93;14952:3;14863:93;:::i;:::-;14981:2;14976:3;14972:12;14965:19;;14624:366;;;:::o;14996:::-;15138:3;15159:67;15223:2;15218:3;15159:67;:::i;:::-;15152:74;;15235:93;15324:3;15235:93;:::i;:::-;15353:2;15348:3;15344:12;15337:19;;14996:366;;;:::o;15368:::-;15510:3;15531:67;15595:2;15590:3;15531:67;:::i;:::-;15524:74;;15607:93;15696:3;15607:93;:::i;:::-;15725:2;15720:3;15716:12;15709:19;;15368:366;;;:::o;15740:::-;15882:3;15903:67;15967:2;15962:3;15903:67;:::i;:::-;15896:74;;15979:93;16068:3;15979:93;:::i;:::-;16097:2;16092:3;16088:12;16081:19;;15740:366;;;:::o;16112:::-;16254:3;16275:67;16339:2;16334:3;16275:67;:::i;:::-;16268:74;;16351:93;16440:3;16351:93;:::i;:::-;16469:2;16464:3;16460:12;16453:19;;16112:366;;;:::o;16484:::-;16626:3;16647:67;16711:2;16706:3;16647:67;:::i;:::-;16640:74;;16723:93;16812:3;16723:93;:::i;:::-;16841:2;16836:3;16832:12;16825:19;;16484:366;;;:::o;16856:::-;16998:3;17019:67;17083:2;17078:3;17019:67;:::i;:::-;17012:74;;17095:93;17184:3;17095:93;:::i;:::-;17213:2;17208:3;17204:12;17197:19;;16856:366;;;:::o;17228:::-;17370:3;17391:67;17455:2;17450:3;17391:67;:::i;:::-;17384:74;;17467:93;17556:3;17467:93;:::i;:::-;17585:2;17580:3;17576:12;17569:19;;17228:366;;;:::o;17600:::-;17742:3;17763:67;17827:2;17822:3;17763:67;:::i;:::-;17756:74;;17839:93;17928:3;17839:93;:::i;:::-;17957:2;17952:3;17948:12;17941:19;;17600:366;;;:::o;17972:::-;18114:3;18135:67;18199:2;18194:3;18135:67;:::i;:::-;18128:74;;18211:93;18300:3;18211:93;:::i;:::-;18329:2;18324:3;18320:12;18313:19;;17972:366;;;:::o;18344:::-;18486:3;18507:67;18571:2;18566:3;18507:67;:::i;:::-;18500:74;;18583:93;18672:3;18583:93;:::i;:::-;18701:2;18696:3;18692:12;18685:19;;18344:366;;;:::o;18716:::-;18858:3;18879:67;18943:2;18938:3;18879:67;:::i;:::-;18872:74;;18955:93;19044:3;18955:93;:::i;:::-;19073:2;19068:3;19064:12;19057:19;;18716:366;;;:::o;19088:::-;19230:3;19251:67;19315:2;19310:3;19251:67;:::i;:::-;19244:74;;19327:93;19416:3;19327:93;:::i;:::-;19445:2;19440:3;19436:12;19429:19;;19088:366;;;:::o;19460:::-;19602:3;19623:67;19687:2;19682:3;19623:67;:::i;:::-;19616:74;;19699:93;19788:3;19699:93;:::i;:::-;19817:2;19812:3;19808:12;19801:19;;19460:366;;;:::o;19832:::-;19974:3;19995:67;20059:2;20054:3;19995:67;:::i;:::-;19988:74;;20071:93;20160:3;20071:93;:::i;:::-;20189:2;20184:3;20180:12;20173:19;;19832:366;;;:::o;20204:::-;20346:3;20367:67;20431:2;20426:3;20367:67;:::i;:::-;20360:74;;20443:93;20532:3;20443:93;:::i;:::-;20561:2;20556:3;20552:12;20545:19;;20204:366;;;:::o;20576:::-;20718:3;20739:67;20803:2;20798:3;20739:67;:::i;:::-;20732:74;;20815:93;20904:3;20815:93;:::i;:::-;20933:2;20928:3;20924:12;20917:19;;20576:366;;;:::o;20948:::-;21090:3;21111:67;21175:2;21170:3;21111:67;:::i;:::-;21104:74;;21187:93;21276:3;21187:93;:::i;:::-;21305:2;21300:3;21296:12;21289:19;;20948:366;;;:::o;21320:::-;21462:3;21483:67;21547:2;21542:3;21483:67;:::i;:::-;21476:74;;21559:93;21648:3;21559:93;:::i;:::-;21677:2;21672:3;21668:12;21661:19;;21320:366;;;:::o;21692:108::-;21769:24;21787:5;21769:24;:::i;:::-;21764:3;21757:37;21692:108;;:::o;21806:118::-;21893:24;21911:5;21893:24;:::i;:::-;21888:3;21881:37;21806:118;;:::o;21930:222::-;22023:4;22061:2;22050:9;22046:18;22038:26;;22074:71;22142:1;22131:9;22127:17;22118:6;22074:71;:::i;:::-;21930:222;;;;:::o;22158:1053::-;22481:4;22519:3;22508:9;22504:19;22496:27;;22533:71;22601:1;22590:9;22586:17;22577:6;22533:71;:::i;:::-;22614:72;22682:2;22671:9;22667:18;22658:6;22614:72;:::i;:::-;22733:9;22727:4;22723:20;22718:2;22707:9;22703:18;22696:48;22761:108;22864:4;22855:6;22761:108;:::i;:::-;22753:116;;22916:9;22910:4;22906:20;22901:2;22890:9;22886:18;22879:48;22944:108;23047:4;23038:6;22944:108;:::i;:::-;22936:116;;23100:9;23094:4;23090:20;23084:3;23073:9;23069:19;23062:49;23128:76;23199:4;23190:6;23128:76;:::i;:::-;23120:84;;22158:1053;;;;;;;;:::o;23217:751::-;23440:4;23478:3;23467:9;23463:19;23455:27;;23492:71;23560:1;23549:9;23545:17;23536:6;23492:71;:::i;:::-;23573:72;23641:2;23630:9;23626:18;23617:6;23573:72;:::i;:::-;23655;23723:2;23712:9;23708:18;23699:6;23655:72;:::i;:::-;23737;23805:2;23794:9;23790:18;23781:6;23737:72;:::i;:::-;23857:9;23851:4;23847:20;23841:3;23830:9;23826:19;23819:49;23885:76;23956:4;23947:6;23885:76;:::i;:::-;23877:84;;23217:751;;;;;;;;:::o;23974:373::-;24117:4;24155:2;24144:9;24140:18;24132:26;;24204:9;24198:4;24194:20;24190:1;24179:9;24175:17;24168:47;24232:108;24335:4;24326:6;24232:108;:::i;:::-;24224:116;;23974:373;;;;:::o;24353:634::-;24574:4;24612:2;24601:9;24597:18;24589:26;;24661:9;24655:4;24651:20;24647:1;24636:9;24632:17;24625:47;24689:108;24792:4;24783:6;24689:108;:::i;:::-;24681:116;;24844:9;24838:4;24834:20;24829:2;24818:9;24814:18;24807:48;24872:108;24975:4;24966:6;24872:108;:::i;:::-;24864:116;;24353:634;;;;;:::o;24993:210::-;25080:4;25118:2;25107:9;25103:18;25095:26;;25131:65;25193:1;25182:9;25178:17;25169:6;25131:65;:::i;:::-;24993:210;;;;:::o;25209:313::-;25322:4;25360:2;25349:9;25345:18;25337:26;;25409:9;25403:4;25399:20;25395:1;25384:9;25380:17;25373:47;25437:78;25510:4;25501:6;25437:78;:::i;:::-;25429:86;;25209:313;;;;:::o;25528:419::-;25694:4;25732:2;25721:9;25717:18;25709:26;;25781:9;25775:4;25771:20;25767:1;25756:9;25752:17;25745:47;25809:131;25935:4;25809:131;:::i;:::-;25801:139;;25528:419;;;:::o;25953:::-;26119:4;26157:2;26146:9;26142:18;26134:26;;26206:9;26200:4;26196:20;26192:1;26181:9;26177:17;26170:47;26234:131;26360:4;26234:131;:::i;:::-;26226:139;;25953:419;;;:::o;26378:::-;26544:4;26582:2;26571:9;26567:18;26559:26;;26631:9;26625:4;26621:20;26617:1;26606:9;26602:17;26595:47;26659:131;26785:4;26659:131;:::i;:::-;26651:139;;26378:419;;;:::o;26803:::-;26969:4;27007:2;26996:9;26992:18;26984:26;;27056:9;27050:4;27046:20;27042:1;27031:9;27027:17;27020:47;27084:131;27210:4;27084:131;:::i;:::-;27076:139;;26803:419;;;:::o;27228:::-;27394:4;27432:2;27421:9;27417:18;27409:26;;27481:9;27475:4;27471:20;27467:1;27456:9;27452:17;27445:47;27509:131;27635:4;27509:131;:::i;:::-;27501:139;;27228:419;;;:::o;27653:::-;27819:4;27857:2;27846:9;27842:18;27834:26;;27906:9;27900:4;27896:20;27892:1;27881:9;27877:17;27870:47;27934:131;28060:4;27934:131;:::i;:::-;27926:139;;27653:419;;;:::o;28078:::-;28244:4;28282:2;28271:9;28267:18;28259:26;;28331:9;28325:4;28321:20;28317:1;28306:9;28302:17;28295:47;28359:131;28485:4;28359:131;:::i;:::-;28351:139;;28078:419;;;:::o;28503:::-;28669:4;28707:2;28696:9;28692:18;28684:26;;28756:9;28750:4;28746:20;28742:1;28731:9;28727:17;28720:47;28784:131;28910:4;28784:131;:::i;:::-;28776:139;;28503:419;;;:::o;28928:::-;29094:4;29132:2;29121:9;29117:18;29109:26;;29181:9;29175:4;29171:20;29167:1;29156:9;29152:17;29145:47;29209:131;29335:4;29209:131;:::i;:::-;29201:139;;28928:419;;;:::o;29353:::-;29519:4;29557:2;29546:9;29542:18;29534:26;;29606:9;29600:4;29596:20;29592:1;29581:9;29577:17;29570:47;29634:131;29760:4;29634:131;:::i;:::-;29626:139;;29353:419;;;:::o;29778:::-;29944:4;29982:2;29971:9;29967:18;29959:26;;30031:9;30025:4;30021:20;30017:1;30006:9;30002:17;29995:47;30059:131;30185:4;30059:131;:::i;:::-;30051:139;;29778:419;;;:::o;30203:::-;30369:4;30407:2;30396:9;30392:18;30384:26;;30456:9;30450:4;30446:20;30442:1;30431:9;30427:17;30420:47;30484:131;30610:4;30484:131;:::i;:::-;30476:139;;30203:419;;;:::o;30628:::-;30794:4;30832:2;30821:9;30817:18;30809:26;;30881:9;30875:4;30871:20;30867:1;30856:9;30852:17;30845:47;30909:131;31035:4;30909:131;:::i;:::-;30901:139;;30628:419;;;:::o;31053:::-;31219:4;31257:2;31246:9;31242:18;31234:26;;31306:9;31300:4;31296:20;31292:1;31281:9;31277:17;31270:47;31334:131;31460:4;31334:131;:::i;:::-;31326:139;;31053:419;;;:::o;31478:::-;31644:4;31682:2;31671:9;31667:18;31659:26;;31731:9;31725:4;31721:20;31717:1;31706:9;31702:17;31695:47;31759:131;31885:4;31759:131;:::i;:::-;31751:139;;31478:419;;;:::o;31903:::-;32069:4;32107:2;32096:9;32092:18;32084:26;;32156:9;32150:4;32146:20;32142:1;32131:9;32127:17;32120:47;32184:131;32310:4;32184:131;:::i;:::-;32176:139;;31903:419;;;:::o;32328:::-;32494:4;32532:2;32521:9;32517:18;32509:26;;32581:9;32575:4;32571:20;32567:1;32556:9;32552:17;32545:47;32609:131;32735:4;32609:131;:::i;:::-;32601:139;;32328:419;;;:::o;32753:::-;32919:4;32957:2;32946:9;32942:18;32934:26;;33006:9;33000:4;32996:20;32992:1;32981:9;32977:17;32970:47;33034:131;33160:4;33034:131;:::i;:::-;33026:139;;32753:419;;;:::o;33178:::-;33344:4;33382:2;33371:9;33367:18;33359:26;;33431:9;33425:4;33421:20;33417:1;33406:9;33402:17;33395:47;33459:131;33585:4;33459:131;:::i;:::-;33451:139;;33178:419;;;:::o;33603:::-;33769:4;33807:2;33796:9;33792:18;33784:26;;33856:9;33850:4;33846:20;33842:1;33831:9;33827:17;33820:47;33884:131;34010:4;33884:131;:::i;:::-;33876:139;;33603:419;;;:::o;34028:222::-;34121:4;34159:2;34148:9;34144:18;34136:26;;34172:71;34240:1;34229:9;34225:17;34216:6;34172:71;:::i;:::-;34028:222;;;;:::o;34256:332::-;34377:4;34415:2;34404:9;34400:18;34392:26;;34428:71;34496:1;34485:9;34481:17;34472:6;34428:71;:::i;:::-;34509:72;34577:2;34566:9;34562:18;34553:6;34509:72;:::i;:::-;34256:332;;;;;:::o;34594:129::-;34628:6;34655:20;;:::i;:::-;34645:30;;34684:33;34712:4;34704:6;34684:33;:::i;:::-;34594:129;;;:::o;34729:75::-;34762:6;34795:2;34789:9;34779:19;;34729:75;:::o;34810:311::-;34887:4;34977:18;34969:6;34966:30;34963:56;;;34999:18;;:::i;:::-;34963:56;35049:4;35041:6;35037:17;35029:25;;35109:4;35103;35099:15;35091:23;;34810:311;;;:::o;35127:::-;35204:4;35294:18;35286:6;35283:30;35280:56;;;35316:18;;:::i;:::-;35280:56;35366:4;35358:6;35354:17;35346:25;;35426:4;35420;35416:15;35408:23;;35127:311;;;:::o;35444:307::-;35505:4;35595:18;35587:6;35584:30;35581:56;;;35617:18;;:::i;:::-;35581:56;35655:29;35677:6;35655:29;:::i;:::-;35647:37;;35739:4;35733;35729:15;35721:23;;35444:307;;;:::o;35757:308::-;35819:4;35909:18;35901:6;35898:30;35895:56;;;35931:18;;:::i;:::-;35895:56;35969:29;35991:6;35969:29;:::i;:::-;35961:37;;36053:4;36047;36043:15;36035:23;;35757:308;;;:::o;36071:132::-;36138:4;36161:3;36153:11;;36191:4;36186:3;36182:14;36174:22;;36071:132;;;:::o;36209:114::-;36276:6;36310:5;36304:12;36294:22;;36209:114;;;:::o;36329:98::-;36380:6;36414:5;36408:12;36398:22;;36329:98;;;:::o;36433:99::-;36485:6;36519:5;36513:12;36503:22;;36433:99;;;:::o;36538:113::-;36608:4;36640;36635:3;36631:14;36623:22;;36538:113;;;:::o;36657:184::-;36756:11;36790:6;36785:3;36778:19;36830:4;36825:3;36821:14;36806:29;;36657:184;;;;:::o;36847:168::-;36930:11;36964:6;36959:3;36952:19;37004:4;36999:3;36995:14;36980:29;;36847:168;;;;:::o;37021:169::-;37105:11;37139:6;37134:3;37127:19;37179:4;37174:3;37170:14;37155:29;;37021:169;;;;:::o;37196:305::-;37236:3;37255:20;37273:1;37255:20;:::i;:::-;37250:25;;37289:20;37307:1;37289:20;:::i;:::-;37284:25;;37443:1;37375:66;37371:74;37368:1;37365:81;37362:107;;;37449:18;;:::i;:::-;37362:107;37493:1;37490;37486:9;37479:16;;37196:305;;;;:::o;37507:348::-;37547:7;37570:20;37588:1;37570:20;:::i;:::-;37565:25;;37604:20;37622:1;37604:20;:::i;:::-;37599:25;;37792:1;37724:66;37720:74;37717:1;37714:81;37709:1;37702:9;37695:17;37691:105;37688:131;;;37799:18;;:::i;:::-;37688:131;37847:1;37844;37840:9;37829:20;;37507:348;;;;:::o;37861:96::-;37898:7;37927:24;37945:5;37927:24;:::i;:::-;37916:35;;37861:96;;;:::o;37963:90::-;37997:7;38040:5;38033:13;38026:21;38015:32;;37963:90;;;:::o;38059:149::-;38095:7;38135:66;38128:5;38124:78;38113:89;;38059:149;;;:::o;38214:126::-;38251:7;38291:42;38284:5;38280:54;38269:65;;38214:126;;;:::o;38346:77::-;38383:7;38412:5;38401:16;;38346:77;;;:::o;38429:154::-;38513:6;38508:3;38503;38490:30;38575:1;38566:6;38561:3;38557:16;38550:27;38429:154;;;:::o;38589:307::-;38657:1;38667:113;38681:6;38678:1;38675:13;38667:113;;;38766:1;38761:3;38757:11;38751:18;38747:1;38742:3;38738:11;38731:39;38703:2;38700:1;38696:10;38691:15;;38667:113;;;38798:6;38795:1;38792:13;38789:101;;;38878:1;38869:6;38864:3;38860:16;38853:27;38789:101;38638:258;38589:307;;;:::o;38902:320::-;38946:6;38983:1;38977:4;38973:12;38963:22;;39030:1;39024:4;39020:12;39051:18;39041:81;;39107:4;39099:6;39095:17;39085:27;;39041:81;39169:2;39161:6;39158:14;39138:18;39135:38;39132:84;;;39188:18;;:::i;:::-;39132:84;38953:269;38902:320;;;:::o;39228:281::-;39311:27;39333:4;39311:27;:::i;:::-;39303:6;39299:40;39441:6;39429:10;39426:22;39405:18;39393:10;39390:34;39387:62;39384:88;;;39452:18;;:::i;:::-;39384:88;39492:10;39488:2;39481:22;39271:238;39228:281;;:::o;39515:233::-;39554:3;39577:24;39595:5;39577:24;:::i;:::-;39568:33;;39623:66;39616:5;39613:77;39610:103;;;39693:18;;:::i;:::-;39610:103;39740:1;39733:5;39729:13;39722:20;;39515:233;;;:::o;39754:180::-;39802:77;39799:1;39792:88;39899:4;39896:1;39889:15;39923:4;39920:1;39913:15;39940:180;39988:77;39985:1;39978:88;40085:4;40082:1;40075:15;40109:4;40106:1;40099:15;40126:180;40174:77;40171:1;40164:88;40271:4;40268:1;40261:15;40295:4;40292:1;40285:15;40312:180;40360:77;40357:1;40350:88;40457:4;40454:1;40447:15;40481:4;40478:1;40471:15;40498:183;40533:3;40571:1;40553:16;40550:23;40547:128;;;40609:1;40606;40603;40588:23;40631:34;40662:1;40656:8;40631:34;:::i;:::-;40624:41;;40547:128;40498:183;:::o;40687:117::-;40796:1;40793;40786:12;40810:117;40919:1;40916;40909:12;40933:117;41042:1;41039;41032:12;41056:117;41165:1;41162;41155:12;41179:117;41288:1;41285;41278:12;41302:102;41343:6;41394:2;41390:7;41385:2;41378:5;41374:14;41370:28;41360:38;;41302:102;;;:::o;41410:106::-;41454:8;41503:5;41498:3;41494:15;41473:36;;41410:106;;;:::o;41522:239::-;41662:34;41658:1;41650:6;41646:14;41639:58;41731:22;41726:2;41718:6;41714:15;41707:47;41522:239;:::o;41767:227::-;41907:34;41903:1;41895:6;41891:14;41884:58;41976:10;41971:2;41963:6;41959:15;41952:35;41767:227;:::o;42000:230::-;42140:34;42136:1;42128:6;42124:14;42117:58;42209:13;42204:2;42196:6;42192:15;42185:38;42000:230;:::o;42236:225::-;42376:34;42372:1;42364:6;42360:14;42353:58;42445:8;42440:2;42432:6;42428:15;42421:33;42236:225;:::o;42467:228::-;42607:34;42603:1;42595:6;42591:14;42584:58;42676:11;42671:2;42663:6;42659:15;42652:36;42467:228;:::o;42701:180::-;42841:32;42837:1;42829:6;42825:14;42818:56;42701:180;:::o;42887:224::-;43027:34;43023:1;43015:6;43011:14;43004:58;43096:7;43091:2;43083:6;43079:15;43072:32;42887:224;:::o;43117:237::-;43257:34;43253:1;43245:6;43241:14;43234:58;43326:20;43321:2;43313:6;43309:15;43302:45;43117:237;:::o;43360:165::-;43500:17;43496:1;43488:6;43484:14;43477:41;43360:165;:::o;43531:229::-;43671:34;43667:1;43659:6;43655:14;43648:58;43740:12;43735:2;43727:6;43723:15;43716:37;43531:229;:::o;43766:182::-;43906:34;43902:1;43894:6;43890:14;43883:58;43766:182;:::o;43954:178::-;44094:30;44090:1;44082:6;44078:14;44071:54;43954:178;:::o;44138:169::-;44278:21;44274:1;44266:6;44262:14;44255:45;44138:169;:::o;44313:228::-;44453:34;44449:1;44441:6;44437:14;44430:58;44522:11;44517:2;44509:6;44505:15;44498:36;44313:228;:::o;44547:::-;44687:34;44683:1;44675:6;44671:14;44664:58;44756:11;44751:2;44743:6;44739:15;44732:36;44547:228;:::o;44781:178::-;44921:30;44917:1;44909:6;44905:14;44898:54;44781:178;:::o;44965:227::-;45105:34;45101:1;45093:6;45089:14;45082:58;45174:10;45169:2;45161:6;45157:15;45150:35;44965:227;:::o;45198:220::-;45338:34;45334:1;45326:6;45322:14;45315:58;45407:3;45402:2;45394:6;45390:15;45383:28;45198:220;:::o;45424:165::-;45564:17;45560:1;45552:6;45548:14;45541:41;45424:165;:::o;45595:177::-;45735:29;45731:1;45723:6;45719:14;45712:53;45595:177;:::o;45778:711::-;45817:3;45855:4;45837:16;45834:26;45831:39;;;45863:5;;45831:39;45892:20;;:::i;:::-;45967:1;45949:16;45945:24;45942:1;45936:4;45921:49;46000:4;45994:11;46099:16;46092:4;46084:6;46080:17;46077:39;46044:18;46036:6;46033:30;46017:113;46014:146;;;46145:5;;;;46014:146;46191:6;46185:4;46181:17;46227:3;46221:10;46254:18;46246:6;46243:30;46240:43;;;46276:5;;;;;;46240:43;46324:6;46317:4;46312:3;46308:14;46304:27;46383:1;46365:16;46361:24;46355:4;46351:35;46346:3;46343:44;46340:57;;;46390:5;;;;;;;46340:57;46407;46455:6;46449:4;46445:17;46437:6;46433:30;46427:4;46407:57;:::i;:::-;46480:3;46473:10;;45821:668;;;;;45778:711;;:::o;46495:122::-;46568:24;46586:5;46568:24;:::i;:::-;46561:5;46558:35;46548:63;;46607:1;46604;46597:12;46548:63;46495:122;:::o;46623:116::-;46693:21;46708:5;46693:21;:::i;:::-;46686:5;46683:32;46673:60;;46729:1;46726;46719:12;46673:60;46623:116;:::o;46745:120::-;46817:23;46834:5;46817:23;:::i;:::-;46810:5;46807:34;46797:62;;46855:1;46852;46845:12;46797:62;46745:120;:::o;46871:122::-;46944:24;46962:5;46944:24;:::i;:::-;46937:5;46934:35;46924:63;;46983:1;46980;46973:12;46924:63;46871:122;:::o
Swarm Source
ipfs://4f164f74b614549221003e436cbddf12ecbe5cde3bdf22a3fe36489a81e0259c
Loading...
Loading
Loading...
Loading
Net Worth in USD
$320.10
Net Worth in ETH
0.149612
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,134.02 | 0.15 | $320.1 |
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.