Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 52 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw | 14988581 | 1364 days ago | IN | 0 ETH | 0.00091156 | ||||
| Mint GLFX01 | 14988573 | 1364 days ago | IN | 0.05 ETH | 0.00470243 | ||||
| Withdraw | 14952597 | 1370 days ago | IN | 0 ETH | 0.00111956 | ||||
| Mint GLFX01 | 14952052 | 1370 days ago | IN | 0.05 ETH | 0.00375494 | ||||
| Withdraw | 14951849 | 1370 days ago | IN | 0 ETH | 0.0007486 | ||||
| Mint GLFX01 | 14941590 | 1372 days ago | IN | 0.05 ETH | 0.00602206 | ||||
| Withdraw | 14766843 | 1401 days ago | IN | 0 ETH | 0.001773 | ||||
| Mint GLFX01 | 14751403 | 1403 days ago | IN | 0.05 ETH | 0.00818042 | ||||
| Mint GLFX01 | 14748025 | 1404 days ago | IN | 0.05 ETH | 0.00644429 | ||||
| Withdraw | 14740422 | 1405 days ago | IN | 0 ETH | 0.00076207 | ||||
| Set Token URI Pr... | 14740225 | 1405 days ago | IN | 0 ETH | 0.00100724 | ||||
| Set Token URI Pr... | 14740222 | 1405 days ago | IN | 0 ETH | 0.00102645 | ||||
| Set Token URI Pr... | 14740221 | 1405 days ago | IN | 0 ETH | 0.00103968 | ||||
| Set Token URI Pr... | 14740220 | 1405 days ago | IN | 0 ETH | 0.00112165 | ||||
| Set Token URI Pr... | 14740219 | 1405 days ago | IN | 0 ETH | 0.0010019 | ||||
| Set Token URI Pr... | 14740214 | 1405 days ago | IN | 0 ETH | 0.0011946 | ||||
| Set Token URI Pr... | 14740084 | 1405 days ago | IN | 0 ETH | 0.0008948 | ||||
| Mint GLFX01 | 14682469 | 1414 days ago | IN | 0.05 ETH | 0.00462472 | ||||
| Mint GLFX01 | 14680914 | 1414 days ago | IN | 0.05 ETH | 0.01518253 | ||||
| Mint GLFX01 | 14680910 | 1414 days ago | IN | 0.05 ETH | 0.0111462 | ||||
| Mint GLFX01 | 14680907 | 1414 days ago | IN | 0.05 ETH | 0.01689661 | ||||
| Withdraw | 14631061 | 1422 days ago | IN | 0 ETH | 0.00141397 | ||||
| Mint GLFX01 | 14611322 | 1425 days ago | IN | 0.05 ETH | 0.0067988 | ||||
| Mint GLFX01 | 14603717 | 1427 days ago | IN | 0.05 ETH | 0.00307175 | ||||
| Withdraw | 14598989 | 1427 days ago | IN | 0 ETH | 0.000985 |
Latest 13 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 14988581 | 1364 days ago | 0.05 ETH | ||||
| - | 14952597 | 1370 days ago | 0.05 ETH | ||||
| - | 14951849 | 1370 days ago | 0.05 ETH | ||||
| - | 14766843 | 1401 days ago | 0.1 ETH | ||||
| - | 14740422 | 1405 days ago | 0.2 ETH | ||||
| - | 14631061 | 1422 days ago | 0.1 ETH | ||||
| - | 14598989 | 1427 days ago | 0.05 ETH | ||||
| - | 14598894 | 1427 days ago | 0.1 ETH | ||||
| - | 14598882 | 1427 days ago | 0.1 ETH | ||||
| - | 14598763 | 1427 days ago | 0.1 ETH | ||||
| - | 14597032 | 1428 days ago | 0.05 ETH | ||||
| - | 14587049 | 1429 days ago | 0.15 ETH | ||||
| - | 14540741 | 1436 days ago | 0.05 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
glfxMinter01
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-04-07
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
// File: @openzeppelin/contracts/utils/Context.sol
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
// File: @openzeppelin/contracts/security/Pausable.sol
// OpenZeppelin Contracts v4.4.1 (security/Pausable.sol)
/**
* @dev Contract module which allows children to implement an emergency stop
* mechanism that can be triggered by an authorized account.
*
* This module is used through inheritance. It will make available the
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
* the functions of your contract. Note that they will not be pausable by
* simply including this module, only once the modifiers are put in place.
*/
abstract contract Pausable is Context {
/**
* @dev Emitted when the pause is triggered by `account`.
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by `account`.
*/
event Unpaused(address account);
bool private _paused;
/**
* @dev Initializes the contract in paused state.
*/
constructor() {
_paused = true;
}
/**
* @dev Returns true if the contract is paused, and false otherwise.
*/
function paused() public view virtual returns (bool) {
return _paused;
}
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*
* Requirements:
*
* - The contract must not be paused.
*/
modifier whenNotPaused() {
require(!paused(), "Pausable: paused");
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*
* Requirements:
*
* - The contract must be paused.
*/
modifier whenPaused() {
require(paused(), "Pausable: not paused");
_;
}
/**
* @dev Triggers stopped state.
*
* Requirements:
*
* - The contract must not be paused.
*/
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
/**
* @dev Returns to normal state.
*
* Requirements:
*
* - The contract must be paused.
*/
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}
// File: @openzeppelin/contracts/utils/Strings.sol
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)
/**
* @dev String operations.
*/
library Strings {
bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
/**
* @dev Converts a `uint256` to its ASCII `string` decimal representation.
*/
function toString(uint256 value) internal pure returns (string memory) {
// Inspired by OraclizeAPI's implementation - MIT licence
// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol
if (value == 0) {
return "0";
}
uint256 temp = value;
uint256 digits;
while (temp != 0) {
digits++;
temp /= 10;
}
bytes memory buffer = new bytes(digits);
while (value != 0) {
digits -= 1;
buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
value /= 10;
}
return string(buffer);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
*/
function toHexString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return "0x00";
}
uint256 temp = value;
uint256 length = 0;
while (temp != 0) {
length++;
temp >>= 8;
}
return toHexString(value, length);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
*/
function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
bytes memory buffer = new bytes(2 * length + 2);
buffer[0] = "0";
buffer[1] = "x";
for (uint256 i = 2 * length + 1; i > 1; --i) {
buffer[i] = _HEX_SYMBOLS[value & 0xf];
value >>= 4;
}
require(value == 0, "Strings: hex length insufficient");
return string(buffer);
}
}
// File: @openzeppelin/contracts/security/ReentrancyGuard.sol
// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
}
// File: IManifoldERC721Edition.sol
/// @author: manifold.xyz
/**
* Manifold ERC721 Edition Controller interface
*/
interface IManifoldERC721Edition {
event SeriesCreated(address caller, address creator, uint256 series, uint256 maxSupply);
/**
* @dev Create a new series. Returns the series id.
*/
function createSeries(address creator, uint256 maxSupply, string calldata prefix) external returns(uint256);
/**
* @dev Get the latest series created.
*/
function latestSeries(address creator) external view returns(uint256);
/**
* @dev Set the token uri prefix
*/
function setTokenURIPrefix(address creator, uint256 series, string calldata prefix) external;
/**
* @dev Mint NFTs to a single recipient
*/
function mintGLFX01(address creator, uint256 series1, uint256 series2, uint256 series3, uint256 series4, uint256 series5, uint256 series6, uint256 series7, address recipient) external payable;
/**
* @dev Total supply of editions
*/
function totalSupply(address creator, uint256 series) external view returns(uint256);
/**
* @dev Max supply of editions
*/
function maxSupply(address creator, uint256 series) external view returns(uint256);
}
// File: @openzeppelin/contracts/utils/introspection/IERC165.sol
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
// File: @manifoldxyz/creator-core-solidity/contracts/extensions/ICreatorExtensionTokenURI.sol
/// @author: manifold.xyz
/**
* @dev Implement this if you want your extension to have overloadable URI's
*/
interface ICreatorExtensionTokenURI is IERC165 {
/**
* Get the uri for a given creator/tokenId
*/
function tokenURI(address creator, uint256 tokenId) external view returns (string memory);
}
// File: @openzeppelin/contracts/utils/introspection/ERC165.sol
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)
/**
* @dev Implementation of the {IERC165} interface.
*
* Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
* for the additional interface id that will be supported. For example:
*
* ```solidity
* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
* }
* ```
*
* Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
*/
abstract contract ERC165 is IERC165 {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
// File: @manifoldxyz/creator-core-solidity/contracts/extensions/CreatorExtension.sol
/// @author: manifold.xyz
/**
* @dev Base creator extension variables
*/
abstract contract CreatorExtension is ERC165 {
/**
* @dev Legacy extension interface identifiers
*
* {IERC165-supportsInterface} needs to return 'true' for this interface
* in order backwards compatible with older creator contracts
*/
bytes4 constant internal LEGACY_EXTENSION_INTERFACE = 0x7005caad;
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165) returns (bool) {
return interfaceId == LEGACY_EXTENSION_INTERFACE
|| super.supportsInterface(interfaceId);
}
}
// File: @manifoldxyz/creator-core-solidity/contracts/core/ICreatorCore.sol
/// @author: manifold.xyz
/**
* @dev Core creator interface
*/
interface ICreatorCore is IERC165 {
event ExtensionRegistered(address indexed extension, address indexed sender);
event ExtensionUnregistered(address indexed extension, address indexed sender);
event ExtensionBlacklisted(address indexed extension, address indexed sender);
event MintPermissionsUpdated(address indexed extension, address indexed permissions, address indexed sender);
event RoyaltiesUpdated(uint256 indexed tokenId, address payable[] receivers, uint256[] basisPoints);
event DefaultRoyaltiesUpdated(address payable[] receivers, uint256[] basisPoints);
event ExtensionRoyaltiesUpdated(address indexed extension, address payable[] receivers, uint256[] basisPoints);
event ExtensionApproveTransferUpdated(address indexed extension, bool enabled);
/**
* @dev gets address of all extensions
*/
function getExtensions() external view returns (address[] memory);
/**
* @dev add an extension. Can only be called by contract owner or admin.
* extension address must point to a contract implementing ICreatorExtension.
* Returns True if newly added, False if already added.
*/
function registerExtension(address extension, string calldata baseURI) external;
/**
* @dev add an extension. Can only be called by contract owner or admin.
* extension address must point to a contract implementing ICreatorExtension.
* Returns True if newly added, False if already added.
*/
function registerExtension(address extension, string calldata baseURI, bool baseURIIdentical) external;
/**
* @dev add an extension. Can only be called by contract owner or admin.
* Returns True if removed, False if already removed.
*/
function unregisterExtension(address extension) external;
/**
* @dev blacklist an extension. Can only be called by contract owner or admin.
* This function will destroy all ability to reference the metadata of any tokens created
* by the specified extension. It will also unregister the extension if needed.
* Returns True if removed, False if already removed.
*/
function blacklistExtension(address extension) external;
/**
* @dev set the baseTokenURI of an extension. Can only be called by extension.
*/
function setBaseTokenURIExtension(string calldata uri) external;
/**
* @dev set the baseTokenURI of an extension. Can only be called by extension.
* For tokens with no uri configured, tokenURI will return "uri+tokenId"
*/
function setBaseTokenURIExtension(string calldata uri, bool identical) external;
/**
* @dev set the common prefix of an extension. Can only be called by extension.
* If configured, and a token has a uri set, tokenURI will return "prefixURI+tokenURI"
* Useful if you want to use ipfs/arweave
*/
function setTokenURIPrefixExtension(string calldata prefix) external;
/**
* @dev set the tokenURI of a token extension. Can only be called by extension that minted token.
*/
function setTokenURIExtension(uint256 tokenId, string calldata uri) external;
/**
* @dev set the tokenURI of a token extension for multiple tokens. Can only be called by extension that minted token.
*/
function setTokenURIExtension(uint256[] memory tokenId, string[] calldata uri) external;
/**
* @dev set the baseTokenURI for tokens with no extension. Can only be called by owner/admin.
* For tokens with no uri configured, tokenURI will return "uri+tokenId"
*/
function setBaseTokenURI(string calldata uri) external;
/**
* @dev set the common prefix for tokens with no extension. Can only be called by owner/admin.
* If configured, and a token has a uri set, tokenURI will return "prefixURI+tokenURI"
* Useful if you want to use ipfs/arweave
*/
function setTokenURIPrefix(string calldata prefix) external;
/**
* @dev set the tokenURI of a token with no extension. Can only be called by owner/admin.
*/
function setTokenURI(uint256 tokenId, string calldata uri) external;
/**
* @dev set the tokenURI of multiple tokens with no extension. Can only be called by owner/admin.
*/
function setTokenURI(uint256[] memory tokenIds, string[] calldata uris) external;
/**
* @dev set a permissions contract for an extension. Used to control minting.
*/
function setMintPermissions(address extension, address permissions) external;
/**
* @dev Configure so transfers of tokens created by the caller (must be extension) gets approval
* from the extension before transferring
*/
function setApproveTransferExtension(bool enabled) external;
/**
* @dev get the extension of a given token
*/
function tokenExtension(uint256 tokenId) external view returns (address);
/**
* @dev Set default royalties
*/
function setRoyalties(address payable[] calldata receivers, uint256[] calldata basisPoints) external;
/**
* @dev Set royalties of a token
*/
function setRoyalties(uint256 tokenId, address payable[] calldata receivers, uint256[] calldata basisPoints) external;
/**
* @dev Set royalties of an extension
*/
function setRoyaltiesExtension(address extension, address payable[] calldata receivers, uint256[] calldata basisPoints) external;
/**
* @dev Get royalites of a token. Returns list of receivers and basisPoints
*/
function getRoyalties(uint256 tokenId) external view returns (address payable[] memory, uint256[] memory);
// Royalty support for various other standards
function getFeeRecipients(uint256 tokenId) external view returns (address payable[] memory);
function getFeeBps(uint256 tokenId) external view returns (uint[] memory);
function getFees(uint256 tokenId) external view returns (address payable[] memory, uint256[] memory);
function royaltyInfo(uint256 tokenId, uint256 value) external view returns (address, uint256);
}
// File: @manifoldxyz/creator-core-solidity/contracts/core/IERC721CreatorCore.sol
/// @author: manifold.xyz
/**
* @dev Core ERC721 creator interface
*/
interface IERC721CreatorCore is ICreatorCore {
/**
* @dev mint a token with no extension. Can only be called by an admin.
* Returns tokenId minted
*/
function mintBase(address to) external returns (uint256);
/**
* @dev mint a token with no extension. Can only be called by an admin.
* Returns tokenId minted
*/
function mintBase(address to, string calldata uri) external returns (uint256);
/**
* @dev batch mint a token with no extension. Can only be called by an admin.
* Returns tokenId minted
*/
function mintBaseBatch(address to, uint16 count) external returns (uint256[] memory);
/**
* @dev batch mint a token with no extension. Can only be called by an admin.
* Returns tokenId minted
*/
function mintBaseBatch(address to, string[] calldata uris) external returns (uint256[] memory);
/**
* @dev mint a token. Can only be called by a registered extension.
* Returns tokenId minted
*/
function mintExtension(address to) external returns (uint256);
/**
* @dev mint a token. Can only be called by a registered extension.
* Returns tokenId minted
*/
function mintExtension(address to, string calldata uri) external returns (uint256);
/**
* @dev batch mint a token. Can only be called by a registered extension.
* Returns tokenIds minted
*/
function mintExtensionBatch(address to, uint16 count) external returns (uint256[] memory);
/**
* @dev batch mint a token. Can only be called by a registered extension.
* Returns tokenId minted
*/
function mintExtensionBatch(address to, string[] calldata uris) external returns (uint256[] memory);
/**
* @dev burn a token. Can only be called by token owner or approved address.
* On burn, calls back to the registered extension's onBurn method
*/
function burn(uint256 tokenId) external;
}
// File: @manifoldxyz/libraries-solidity/contracts/access/IAdminControl.sol
/// @author: manifold.xyz
/**
* @dev Interface for admin control
*/
interface IAdminControl is IERC165 {
event AdminApproved(address indexed account, address indexed sender);
event AdminRevoked(address indexed account, address indexed sender);
/**
* @dev gets address of all admins
*/
function getAdmins() external view returns (address[] memory);
/**
* @dev add an admin. Can only be called by contract owner.
*/
function approveAdmin(address admin) external;
/**
* @dev remove an admin. Can only be called by contract owner.
*/
function revokeAdmin(address admin) external;
/**
* @dev checks whether or not given address is an admin
* Returns True if they are
*/
function isAdmin(address admin) external view returns (bool);
}
// File: glfxMinter01.sol
////////////////////////////////////////////////
// //
// ░▒█▀▀█░█░░█░░█░▄▀▀▄░█░░░░░▀░░█▀▄░█▀▀ //
// ░▒█░▄▄░█░░█▄▄█░█▄▄█░█▀▀█░░█▀░█░░░▀▀▄ //
// ░▒█▄▄▀░▀▀░▄▄▄▀░█░░░░▀░░▀░▀▀▀░▀▀▀░▀▀▀ //
// Generation 1 //
// by rDan @ Glyphics.eth //
////////////////////////////////////////////////
contract glfxMinter01 is CreatorExtension, ICreatorExtensionTokenURI, IManifoldERC721Edition, Pausable, ReentrancyGuard {
using Strings for uint256;
struct IndexRange {
uint256 startIndex;
uint256 count;
}
uint256 public mintRate = 0.05 ether;
mapping(address => mapping(uint256 => string)) _tokenPrefix;
mapping(address => mapping(uint256 => uint256)) _maxSupply;
mapping(address => mapping(uint256 => uint256)) _totalSupply;
mapping(address => mapping(uint256 => IndexRange[])) _indexRanges;
mapping(address => uint256) _currentSeries;
/**
* @dev Only allows approved admins to call the specified function
*/
modifier creatorAdminRequired(address creator) {
require(creator == 0x50a874E9333B8Bd0aE30aDBC2c91d10dDcc57B17,"Contract not authorized.");
require(IAdminControl(creator).isAdmin(msg.sender), "Must be owner or admin of creator contract.");
_;
}
function supportsInterface(bytes4 interfaceId) public view virtual override(CreatorExtension, IERC165) returns (bool) {
return interfaceId == type(ICreatorExtensionTokenURI).interfaceId || interfaceId == type(IManifoldERC721Edition).interfaceId ||
CreatorExtension.supportsInterface(interfaceId);
}
/**
* @dev See {IManifoldERC721Edition-totalSupply}.
*/
function totalSupply(address creator, uint256 series) external view override returns(uint256) {
return _totalSupply[creator][series];
}
/**
* @dev See {IManifoldERC721Edition-maxSupply}.
*/
function maxSupply(address creator, uint256 series) external view override returns(uint256) {
return _maxSupply[creator][series];
}
/**
* @dev See {IManifoldERC721Edition-createSeries}.
*/
function createSeries(address creator, uint256 maxSupply_, string calldata prefix) external override creatorAdminRequired(creator) returns(uint256) {
_currentSeries[creator] += 1;
uint256 series = _currentSeries[creator];
_maxSupply[creator][series] = maxSupply_;
_tokenPrefix[creator][series] = prefix;
emit SeriesCreated(msg.sender, creator, series, maxSupply_);
return series;
}
function pause(address creator) public creatorAdminRequired(creator) {
_pause();
}
function pause() internal {
_pause();
}
function unpause(address creator) public creatorAdminRequired(creator) {
_unpause();
}
function unpause() internal {
_unpause();
}
/**
* @dev See {IManifoldERC721Edition-latestSeries}.
*/
function latestSeries(address creator) external view override returns(uint256) {
return _currentSeries[creator];
}
/**
* See {IManifoldERC721Edition-setTokenURIPrefix}.
*/
function setTokenURIPrefix(address creator, uint256 series, string calldata prefix) external override creatorAdminRequired(creator) {
require(series > 0 && series <= 7, "Invalid series");
_tokenPrefix[creator][series] = prefix;
}
/**
* @dev See {ICreatorExtensionTokenURI-tokenURI}.
*/
function tokenURI(address creator, uint256 tokenId) external view override returns (string memory) {
(uint256 series, uint256 index) = _tokenSeriesAndIndex(creator, tokenId);
return string(abi.encodePacked(_tokenPrefix[creator][series], (index+1).toString(), ".json"));
}
/**
* @dev See {IManifoldERC721Edition-mint}.
*/
function mintGLFX01(address creator, uint256 series1, uint256 series2, uint256 series3, uint256 series4, uint256 series5, uint256 series6, uint256 series7, address recipient) external whenNotPaused payable override nonReentrant {
require(msg.value >= mintRate, "Sorry, not enough ether.");
uint256 statusCheck = 0;
uint256 selectedSeries = 0;
for (uint i = 1; i < 8; i++) { statusCheck = statusCheck + _totalSupply[creator][i]; }
require(statusCheck < 1024, "Fully minted");
selectedSeries = tokenCheck(series1, series2, series3, series4, series5, series6, series7);
if(selectedSeries == 0){selectedSeries = tokenCheck2(series1, series2, series3, series4, series5, series6, series7);}
if(selectedSeries == 0){selectedSeries = 7;}
uint256[] memory tokenIds = IERC721CreatorCore(creator).mintExtensionBatch(recipient, 1);
_updateIndexRanges(creator, selectedSeries, tokenIds[0], 1);
}
function tokenCheck(uint256 series1, uint256 series2, uint256 series3, uint256 series4, uint256 series5, uint256 series6, uint256 series7) internal view returns (uint256){
uint256 series = 0;
uint256 randomSeed = random();
if(series1 == 1 && randomSeed < 3){series = 1;}
if(series2 == 1 && (randomSeed <= 8 && randomSeed >= 3)){series = 2;}
if(series3 == 1 && (randomSeed <= 16 && randomSeed > 8)){series = 3;}
if(series4 == 1 && (randomSeed <= 24 && randomSeed > 16)){series = 4;}
if(series5 == 1 && (randomSeed <= 32 && randomSeed > 24)){series = 5;}
if(series6 == 1 && (randomSeed <= 72 && randomSeed > 32)){series = 6;}
if(series7 == 1 && randomSeed > 72){series = 7;}
return (series);
}
function tokenCheck2(uint256 series1, uint256 series2, uint256 series3, uint256 series4, uint256 series5, uint256 series6, uint256 series7) internal view returns (uint256){
uint256 series = 0;
uint256 randomSeed = random();
if(series1 == 1 && randomSeed < 2){series = 1;}
if(series2 == 1 && (randomSeed <= 4 && randomSeed >= 2)){series = 2;}
if(series3 == 1 && (randomSeed <= 8 && randomSeed > 4)){series = 3;}
if(series4 == 1 && (randomSeed <= 16 && randomSeed > 8)){series = 4;}
if(series5 == 1 && (randomSeed <= 32 && randomSeed > 16)){series = 5;}
if(series6 == 1 && (randomSeed <= 64 && randomSeed > 32)){series = 6;}
if(series7 == 1 && randomSeed > 64){series = 7;}
return (series);
}
function random() internal view returns (uint256){
uint256 tough = block.difficulty*block.timestamp;
uint256 time = block.timestamp*block.difficulty;
uint256 randomSeed = uint256(keccak256(abi.encodePacked(tough+1, time+1, msg.sender))) % 128;
return (randomSeed);
}
/**
* @dev Update the index ranges, which is used to figure out the index from a tokenId
*/
function _updateIndexRanges(address creator, uint256 series, uint256 startIndex, uint256 count) internal {
IndexRange[] storage indexRanges = _indexRanges[creator][series];
if (indexRanges.length == 0) {
indexRanges.push(IndexRange(startIndex, count));
} else {
IndexRange storage lastIndexRange = indexRanges[indexRanges.length-1];
if ((lastIndexRange.startIndex + lastIndexRange.count) == startIndex) {
lastIndexRange.count += count;
} else {
indexRanges.push(IndexRange(startIndex, count));
}
}
_totalSupply[creator][series] += count;
}
/**
* @dev Index from tokenId
*/
function _tokenSeriesAndIndex(address creator, uint256 tokenId) internal view returns(uint256, uint256) {
require(_currentSeries[creator] > 0, "Invalid token");
for (uint series=1; series <= _currentSeries[creator]; series++) {
IndexRange[] memory indexRanges = _indexRanges[creator][series];
uint256 offset;
for (uint i = 0; i < indexRanges.length; i++) {
IndexRange memory currentIndex = indexRanges[i];
if (tokenId < currentIndex.startIndex) break;
if (tokenId >= currentIndex.startIndex && tokenId < currentIndex.startIndex + currentIndex.count) {
return (series, tokenId - currentIndex.startIndex + offset);
}
offset += currentIndex.count;
}
}
revert("Invalid token");
}
function withdraw(address creator) public creatorAdminRequired(creator){
require(address(this).balance > 0, "Balance is 0");
payable(msg.sender).transfer(address(this).balance);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint256","name":"series","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxSupply","type":"uint256"}],"name":"SeriesCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"maxSupply_","type":"uint256"},{"internalType":"string","name":"prefix","type":"string"}],"name":"createSeries","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"}],"name":"latestSeries","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"series","type":"uint256"}],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"series1","type":"uint256"},{"internalType":"uint256","name":"series2","type":"uint256"},{"internalType":"uint256","name":"series3","type":"uint256"},{"internalType":"uint256","name":"series4","type":"uint256"},{"internalType":"uint256","name":"series5","type":"uint256"},{"internalType":"uint256","name":"series6","type":"uint256"},{"internalType":"uint256","name":"series7","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"mintGLFX01","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"series","type":"uint256"},{"internalType":"string","name":"prefix","type":"string"}],"name":"setTokenURIPrefix","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":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"series","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"}],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405266b1a2bc2ec5000060025534801561001b57600080fd5b506000805460ff191660019081179091558055611a588061003d6000396000f3fe6080604052600436106100c25760003560e01c80635c975abb1161007f57806377e4486e1161005957806377e4486e1461023d5780637e4e3d6f14610250578063ca0dcf1614610293578063e9dc6375146102a957600080fd5b80635c975abb146101e5578063654fb5bd146101fd57806376a67a511461021d57600080fd5b806301ffc9a7146100c7578063151c6f41146100fc578063346e6c0e1461012a5780633580e71b1461016d57806351cff8d9146101a357806357b001f9146101c5575b600080fd5b3480156100d357600080fd5b506100e76100e2366004611718565b6102d6565b60405190151581526020015b60405180910390f35b34801561010857600080fd5b5061011c610117366004611540565b61031c565b6040519081526020016100f3565b34801561013657600080fd5b5061011c610145366004611516565b6001600160a01b03919091166000908152600560209081526040808320938352929052205490565b34801561017957600080fd5b5061011c6101883660046114f4565b6001600160a01b031660009081526007602052604090205490565b3480156101af57600080fd5b506101c36101be3660046114f4565b6104cb565b005b3480156101d157600080fd5b506101c36101e03660046114f4565b61060b565b3480156101f157600080fd5b5060005460ff166100e7565b34801561020957600080fd5b506101c3610218366004611540565b6106e7565b34801561022957600080fd5b506101c36102383660046114f4565b61083b565b6101c361024b3660046115c7565b610913565b34801561025c57600080fd5b5061011c61026b366004611516565b6001600160a01b03919091166000908152600460209081526040808320938352929052205490565b34801561029f57600080fd5b5061011c60025481565b3480156102b557600080fd5b506102c96102c4366004611516565b610b8b565b6040516100f39190611819565b60006001600160e01b0319821663e9dc637560e01b148061030757506001600160e01b03198216630f02e49d60e31b145b80610316575061031682610bff565b92915050565b6000847350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146103645760405162461bcd60e51b815260040161035b9061184c565b60405180910390fd5b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b1580156103a357600080fd5b505afa1580156103b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103db91906116f6565b6103f75760405162461bcd60e51b815260040161035b90611883565b6001600160a01b03861660009081526007602052604081208054600192906104209084906118ce565b90915550506001600160a01b0386166000818152600760209081526040808320546004835281842081855283528184208a905593835260038252808320848452909152902061047090868661143f565b50604080513381526001600160a01b0389166020820152908101829052606081018790527f739bed52023d4028ee60025b96a4024aacf5aff3162e8c9711084c74d6b8c6139060800160405180910390a19695505050505050565b807350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146105085760405162461bcd60e51b815260040161035b9061184c565b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b15801561054757600080fd5b505afa15801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f91906116f6565b61059b5760405162461bcd60e51b815260040161035b90611883565b600047116105da5760405162461bcd60e51b815260206004820152600c60248201526b042616c616e636520697320360a41b604482015260640161035b565b60405133904780156108fc02916000818181858888f19350505050158015610606573d6000803e3d6000fd5b505050565b807350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146106485760405162461bcd60e51b815260040161035b9061184c565b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b15801561068757600080fd5b505afa15801561069b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bf91906116f6565b6106db5760405162461bcd60e51b815260040161035b90611883565b6106e3610c34565b5050565b837350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146107245760405162461bcd60e51b815260040161035b9061184c565b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b15801561076357600080fd5b505afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b91906116f6565b6107b75760405162461bcd60e51b815260040161035b90611883565b6000841180156107c8575060078411155b6108055760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642073657269657360901b604482015260640161035b565b6001600160a01b0385166000908152600360209081526040808320878452909152902061083390848461143f565b505050505050565b807350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146108785760405162461bcd60e51b815260040161035b9061184c565b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b1580156108b757600080fd5b505afa1580156108cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ef91906116f6565b61090b5760405162461bcd60e51b815260040161035b90611883565b6106e3610cc7565b60005460ff16156109595760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161035b565b600260015414156109ac5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161035b565b6002600181905554341015610a035760405162461bcd60e51b815260206004820152601860248201527f536f7272792c206e6f7420656e6f7567682065746865722e0000000000000000604482015260640161035b565b60008060015b6008811015610a54576001600160a01b038c166000908152600560209081526040808320848452909152902054610a4090846118ce565b925080610a4c8161199b565b915050610a09565b506104008210610a955760405162461bcd60e51b815260206004820152600c60248201526b119d5b1b1e481b5a5b9d195960a21b604482015260640161035b565b610aa48a8a8a8a8a8a8a610d42565b905080610abd57610aba8a8a8a8a8a8a8a610e50565b90505b80610ac6575060075b60405163e00aab4b60e01b81526001600160a01b03848116600483015260016024830152600091908d169063e00aab4b90604401600060405180830381600087803b158015610b1457600080fd5b505af1158015610b28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b50919081019061163e565b9050610b798c8383600081518110610b6a57610b6a6119f6565b60200260200101516001610f5b565b50506001805550505050505050505050565b6060600080610b9a85856110a8565b6001600160a01b038716600090815260036020908152604080832085845290915290209193509150610bd5610bd08360016118ce565b6112b4565b604051602001610be692919061175e565b6040516020818303038152906040529250505092915050565b60006001600160e01b03198216637005caad60e01b148061031657506301ffc9a760e01b6001600160e01b0319831614610316565b60005460ff16610c7d5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161035b565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60005460ff1615610d0d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161035b565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610caa3390565b60008080610d4e6113ba565b9050896001148015610d605750600381105b15610d6a57600191505b886001148015610d87575060088111158015610d87575060038110155b15610d9157600291505b876001148015610dad575060108111158015610dad5750600881115b15610db757600391505b866001148015610dd3575060188111158015610dd35750601081115b15610ddd57600491505b856001148015610df9575060208111158015610df95750601881115b15610e0357600591505b846001148015610e1f575060488111158015610e1f5750602081115b15610e2957600691505b836001148015610e395750604881115b15610e4357600791505b5098975050505050505050565b60008080610e5c6113ba565b9050896001148015610e6e5750600281105b15610e7857600191505b886001148015610e95575060048111158015610e95575060028110155b15610e9f57600291505b876001148015610ebb575060088111158015610ebb5750600481115b15610ec557600391505b866001148015610ee1575060108111158015610ee15750600881115b15610eeb57600491505b856001148015610f07575060208111158015610f075750601081115b15610f1157600591505b846001148015610f2d575060408111158015610f2d5750602081115b15610f3757600691505b836001148015610e3957506040811115610e43575060079998505050505050505050565b6001600160a01b038416600090815260066020908152604080832086845290915290208054610fc1576040805180820190915283815260208082018481528354600181810186556000868152939093209351600290910290930192835551910155611069565b80546000908290610fd490600190611919565b81548110610fe457610fe46119f6565b90600052602060002090600202019050838160010154826000015461100991906118ce565b141561102e578281600101600082825461102391906118ce565b909155506110679050565b60408051808201909152848152602080820185815284546001818101875560008781529390932093516002909102909301928355519101555b505b6001600160a01b03851660009081526005602090815260408083208784529091528120805484929061109c9084906118ce565b90915550505050505050565b6001600160a01b03821660009081526007602052604081205481906110ff5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015260640161035b565b60015b6001600160a01b0385166000908152600760205260409020548111611274576001600160a01b0385166000908152600660209081526040808320848452825280832080548251818502810185019093528083529192909190849084015b828210156111a55783829060005260206000209060020201604051806040016040529081600082015481526020016001820154815250508152602001906001019061115f565b505050509050600080600090505b825181101561125e5760008382815181106111d0576111d06119f6565b6020026020010151905080600001518810156111ec575061125e565b8051881080159061120c57506020810151815161120991906118ce565b88105b1561123957805185908490611221908b611919565b61122b91906118ce565b9650965050505050506112ad565b602081015161124890846118ce565b92505080806112569061199b565b9150506111b3565b505050808061126c9061199b565b915050611102565b5060405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015260640161035b565b9250929050565b6060816112d85750506040805180820190915260018152600360fc1b602082015290565b8160005b811561130257806112ec8161199b565b91506112fb9050600a836118e6565b91506112dc565b60008167ffffffffffffffff81111561131d5761131d611a0c565b6040519080825280601f01601f191660200182016040528015611347576020820181803683370190505b5090505b84156113b25761135c600183611919565b9150611369600a866119b6565b6113749060306118ce565b60f81b818381518110611389576113896119f6565b60200101906001600160f81b031916908160001a9053506113ab600a866118e6565b945061134b565b949350505050565b6000806113c742446118fa565b905060006113d544426118fa565b9050600060806113e68460016118ce565b6113f18460016118ce565b60408051602081019390935282015233606090811b6bffffffffffffffffffffffff1916908201526074016040516020818303038152906040528051906020012060001c6113b291906119b6565b82805461144b90611960565b90600052602060002090601f01602090048101928261146d57600085556114b3565b82601f106114865782800160ff198235161785556114b3565b828001600101855582156114b3579182015b828111156114b3578235825591602001919060010190611498565b506114bf9291506114c3565b5090565b5b808211156114bf57600081556001016114c4565b80356001600160a01b03811681146114ef57600080fd5b919050565b60006020828403121561150657600080fd5b61150f826114d8565b9392505050565b6000806040838503121561152957600080fd5b611532836114d8565b946020939093013593505050565b6000806000806060858703121561155657600080fd5b61155f856114d8565b935060208501359250604085013567ffffffffffffffff8082111561158357600080fd5b818701915087601f83011261159757600080fd5b8135818111156115a657600080fd5b8860208285010111156115b857600080fd5b95989497505060200194505050565b60008060008060008060008060006101208a8c0312156115e657600080fd5b6115ef8a6114d8565b985060208a0135975060408a0135965060608a0135955060808a0135945060a08a0135935060c08a0135925060e08a0135915061162f6101008b016114d8565b90509295985092959850929598565b6000602080838503121561165157600080fd5b825167ffffffffffffffff8082111561166957600080fd5b818501915085601f83011261167d57600080fd5b81518181111561168f5761168f611a0c565b8060051b604051601f19603f830116810181811085821117156116b4576116b4611a0c565b604052828152858101935084860182860187018a10156116d357600080fd5b600095505b83861015610e435780518552600195909501949386019386016116d8565b60006020828403121561170857600080fd5b8151801515811461150f57600080fd5b60006020828403121561172a57600080fd5b81356001600160e01b03198116811461150f57600080fd5b60008151611754818560208601611930565b9290920192915050565b600080845481600182811c91508083168061177a57607f831692505b602080841082141561179a57634e487b7160e01b86526022600452602486fd5b8180156117ae57600181146117bf576117ec565b60ff198616895284890196506117ec565b60008b81526020902060005b868110156117e45781548b8201529085019083016117cb565b505084890196505b5050505050506118106117ff8286611742565b64173539b7b760d91b815260050190565b95945050505050565b6020815260008251806020840152611838816040850160208701611930565b601f01601f19169190910160400192915050565b60208082526018908201527f436f6e7472616374206e6f7420617574686f72697a65642e0000000000000000604082015260600190565b6020808252602b908201527f4d757374206265206f776e6572206f722061646d696e206f662063726561746f60408201526a391031b7b73a3930b1ba1760a91b606082015260800190565b600082198211156118e1576118e16119ca565b500190565b6000826118f5576118f56119e0565b500490565b6000816000190483118215151615611914576119146119ca565b500290565b60008282101561192b5761192b6119ca565b500390565b60005b8381101561194b578181015183820152602001611933565b8381111561195a576000848401525b50505050565b600181811c9082168061197457607f821691505b6020821081141561199557634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156119af576119af6119ca565b5060010190565b6000826119c5576119c56119e0565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea264697066735822122013b10742664fe55de6733a56455813eaf289bce7e51bbcc7c1e7078b023ece4d64736f6c63430008070033
Deployed Bytecode
0x6080604052600436106100c25760003560e01c80635c975abb1161007f57806377e4486e1161005957806377e4486e1461023d5780637e4e3d6f14610250578063ca0dcf1614610293578063e9dc6375146102a957600080fd5b80635c975abb146101e5578063654fb5bd146101fd57806376a67a511461021d57600080fd5b806301ffc9a7146100c7578063151c6f41146100fc578063346e6c0e1461012a5780633580e71b1461016d57806351cff8d9146101a357806357b001f9146101c5575b600080fd5b3480156100d357600080fd5b506100e76100e2366004611718565b6102d6565b60405190151581526020015b60405180910390f35b34801561010857600080fd5b5061011c610117366004611540565b61031c565b6040519081526020016100f3565b34801561013657600080fd5b5061011c610145366004611516565b6001600160a01b03919091166000908152600560209081526040808320938352929052205490565b34801561017957600080fd5b5061011c6101883660046114f4565b6001600160a01b031660009081526007602052604090205490565b3480156101af57600080fd5b506101c36101be3660046114f4565b6104cb565b005b3480156101d157600080fd5b506101c36101e03660046114f4565b61060b565b3480156101f157600080fd5b5060005460ff166100e7565b34801561020957600080fd5b506101c3610218366004611540565b6106e7565b34801561022957600080fd5b506101c36102383660046114f4565b61083b565b6101c361024b3660046115c7565b610913565b34801561025c57600080fd5b5061011c61026b366004611516565b6001600160a01b03919091166000908152600460209081526040808320938352929052205490565b34801561029f57600080fd5b5061011c60025481565b3480156102b557600080fd5b506102c96102c4366004611516565b610b8b565b6040516100f39190611819565b60006001600160e01b0319821663e9dc637560e01b148061030757506001600160e01b03198216630f02e49d60e31b145b80610316575061031682610bff565b92915050565b6000847350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146103645760405162461bcd60e51b815260040161035b9061184c565b60405180910390fd5b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b1580156103a357600080fd5b505afa1580156103b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103db91906116f6565b6103f75760405162461bcd60e51b815260040161035b90611883565b6001600160a01b03861660009081526007602052604081208054600192906104209084906118ce565b90915550506001600160a01b0386166000818152600760209081526040808320546004835281842081855283528184208a905593835260038252808320848452909152902061047090868661143f565b50604080513381526001600160a01b0389166020820152908101829052606081018790527f739bed52023d4028ee60025b96a4024aacf5aff3162e8c9711084c74d6b8c6139060800160405180910390a19695505050505050565b807350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146105085760405162461bcd60e51b815260040161035b9061184c565b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b15801561054757600080fd5b505afa15801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f91906116f6565b61059b5760405162461bcd60e51b815260040161035b90611883565b600047116105da5760405162461bcd60e51b815260206004820152600c60248201526b042616c616e636520697320360a41b604482015260640161035b565b60405133904780156108fc02916000818181858888f19350505050158015610606573d6000803e3d6000fd5b505050565b807350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146106485760405162461bcd60e51b815260040161035b9061184c565b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b15801561068757600080fd5b505afa15801561069b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bf91906116f6565b6106db5760405162461bcd60e51b815260040161035b90611883565b6106e3610c34565b5050565b837350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146107245760405162461bcd60e51b815260040161035b9061184c565b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b15801561076357600080fd5b505afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b91906116f6565b6107b75760405162461bcd60e51b815260040161035b90611883565b6000841180156107c8575060078411155b6108055760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642073657269657360901b604482015260640161035b565b6001600160a01b0385166000908152600360209081526040808320878452909152902061083390848461143f565b505050505050565b807350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146108785760405162461bcd60e51b815260040161035b9061184c565b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b1580156108b757600080fd5b505afa1580156108cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ef91906116f6565b61090b5760405162461bcd60e51b815260040161035b90611883565b6106e3610cc7565b60005460ff16156109595760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161035b565b600260015414156109ac5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161035b565b6002600181905554341015610a035760405162461bcd60e51b815260206004820152601860248201527f536f7272792c206e6f7420656e6f7567682065746865722e0000000000000000604482015260640161035b565b60008060015b6008811015610a54576001600160a01b038c166000908152600560209081526040808320848452909152902054610a4090846118ce565b925080610a4c8161199b565b915050610a09565b506104008210610a955760405162461bcd60e51b815260206004820152600c60248201526b119d5b1b1e481b5a5b9d195960a21b604482015260640161035b565b610aa48a8a8a8a8a8a8a610d42565b905080610abd57610aba8a8a8a8a8a8a8a610e50565b90505b80610ac6575060075b60405163e00aab4b60e01b81526001600160a01b03848116600483015260016024830152600091908d169063e00aab4b90604401600060405180830381600087803b158015610b1457600080fd5b505af1158015610b28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b50919081019061163e565b9050610b798c8383600081518110610b6a57610b6a6119f6565b60200260200101516001610f5b565b50506001805550505050505050505050565b6060600080610b9a85856110a8565b6001600160a01b038716600090815260036020908152604080832085845290915290209193509150610bd5610bd08360016118ce565b6112b4565b604051602001610be692919061175e565b6040516020818303038152906040529250505092915050565b60006001600160e01b03198216637005caad60e01b148061031657506301ffc9a760e01b6001600160e01b0319831614610316565b60005460ff16610c7d5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161035b565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60005460ff1615610d0d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161035b565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610caa3390565b60008080610d4e6113ba565b9050896001148015610d605750600381105b15610d6a57600191505b886001148015610d87575060088111158015610d87575060038110155b15610d9157600291505b876001148015610dad575060108111158015610dad5750600881115b15610db757600391505b866001148015610dd3575060188111158015610dd35750601081115b15610ddd57600491505b856001148015610df9575060208111158015610df95750601881115b15610e0357600591505b846001148015610e1f575060488111158015610e1f5750602081115b15610e2957600691505b836001148015610e395750604881115b15610e4357600791505b5098975050505050505050565b60008080610e5c6113ba565b9050896001148015610e6e5750600281105b15610e7857600191505b886001148015610e95575060048111158015610e95575060028110155b15610e9f57600291505b876001148015610ebb575060088111158015610ebb5750600481115b15610ec557600391505b866001148015610ee1575060108111158015610ee15750600881115b15610eeb57600491505b856001148015610f07575060208111158015610f075750601081115b15610f1157600591505b846001148015610f2d575060408111158015610f2d5750602081115b15610f3757600691505b836001148015610e3957506040811115610e43575060079998505050505050505050565b6001600160a01b038416600090815260066020908152604080832086845290915290208054610fc1576040805180820190915283815260208082018481528354600181810186556000868152939093209351600290910290930192835551910155611069565b80546000908290610fd490600190611919565b81548110610fe457610fe46119f6565b90600052602060002090600202019050838160010154826000015461100991906118ce565b141561102e578281600101600082825461102391906118ce565b909155506110679050565b60408051808201909152848152602080820185815284546001818101875560008781529390932093516002909102909301928355519101555b505b6001600160a01b03851660009081526005602090815260408083208784529091528120805484929061109c9084906118ce565b90915550505050505050565b6001600160a01b03821660009081526007602052604081205481906110ff5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015260640161035b565b60015b6001600160a01b0385166000908152600760205260409020548111611274576001600160a01b0385166000908152600660209081526040808320848452825280832080548251818502810185019093528083529192909190849084015b828210156111a55783829060005260206000209060020201604051806040016040529081600082015481526020016001820154815250508152602001906001019061115f565b505050509050600080600090505b825181101561125e5760008382815181106111d0576111d06119f6565b6020026020010151905080600001518810156111ec575061125e565b8051881080159061120c57506020810151815161120991906118ce565b88105b1561123957805185908490611221908b611919565b61122b91906118ce565b9650965050505050506112ad565b602081015161124890846118ce565b92505080806112569061199b565b9150506111b3565b505050808061126c9061199b565b915050611102565b5060405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015260640161035b565b9250929050565b6060816112d85750506040805180820190915260018152600360fc1b602082015290565b8160005b811561130257806112ec8161199b565b91506112fb9050600a836118e6565b91506112dc565b60008167ffffffffffffffff81111561131d5761131d611a0c565b6040519080825280601f01601f191660200182016040528015611347576020820181803683370190505b5090505b84156113b25761135c600183611919565b9150611369600a866119b6565b6113749060306118ce565b60f81b818381518110611389576113896119f6565b60200101906001600160f81b031916908160001a9053506113ab600a866118e6565b945061134b565b949350505050565b6000806113c742446118fa565b905060006113d544426118fa565b9050600060806113e68460016118ce565b6113f18460016118ce565b60408051602081019390935282015233606090811b6bffffffffffffffffffffffff1916908201526074016040516020818303038152906040528051906020012060001c6113b291906119b6565b82805461144b90611960565b90600052602060002090601f01602090048101928261146d57600085556114b3565b82601f106114865782800160ff198235161785556114b3565b828001600101855582156114b3579182015b828111156114b3578235825591602001919060010190611498565b506114bf9291506114c3565b5090565b5b808211156114bf57600081556001016114c4565b80356001600160a01b03811681146114ef57600080fd5b919050565b60006020828403121561150657600080fd5b61150f826114d8565b9392505050565b6000806040838503121561152957600080fd5b611532836114d8565b946020939093013593505050565b6000806000806060858703121561155657600080fd5b61155f856114d8565b935060208501359250604085013567ffffffffffffffff8082111561158357600080fd5b818701915087601f83011261159757600080fd5b8135818111156115a657600080fd5b8860208285010111156115b857600080fd5b95989497505060200194505050565b60008060008060008060008060006101208a8c0312156115e657600080fd5b6115ef8a6114d8565b985060208a0135975060408a0135965060608a0135955060808a0135945060a08a0135935060c08a0135925060e08a0135915061162f6101008b016114d8565b90509295985092959850929598565b6000602080838503121561165157600080fd5b825167ffffffffffffffff8082111561166957600080fd5b818501915085601f83011261167d57600080fd5b81518181111561168f5761168f611a0c565b8060051b604051601f19603f830116810181811085821117156116b4576116b4611a0c565b604052828152858101935084860182860187018a10156116d357600080fd5b600095505b83861015610e435780518552600195909501949386019386016116d8565b60006020828403121561170857600080fd5b8151801515811461150f57600080fd5b60006020828403121561172a57600080fd5b81356001600160e01b03198116811461150f57600080fd5b60008151611754818560208601611930565b9290920192915050565b600080845481600182811c91508083168061177a57607f831692505b602080841082141561179a57634e487b7160e01b86526022600452602486fd5b8180156117ae57600181146117bf576117ec565b60ff198616895284890196506117ec565b60008b81526020902060005b868110156117e45781548b8201529085019083016117cb565b505084890196505b5050505050506118106117ff8286611742565b64173539b7b760d91b815260050190565b95945050505050565b6020815260008251806020840152611838816040850160208701611930565b601f01601f19169190910160400192915050565b60208082526018908201527f436f6e7472616374206e6f7420617574686f72697a65642e0000000000000000604082015260600190565b6020808252602b908201527f4d757374206265206f776e6572206f722061646d696e206f662063726561746f60408201526a391031b7b73a3930b1ba1760a91b606082015260800190565b600082198211156118e1576118e16119ca565b500190565b6000826118f5576118f56119e0565b500490565b6000816000190483118215151615611914576119146119ca565b500290565b60008282101561192b5761192b6119ca565b500390565b60005b8381101561194b578181015183820152602001611933565b8381111561195a576000848401525b50505050565b600181811c9082168061197457607f821691505b6020821081141561199557634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156119af576119af6119ca565b5060010190565b6000826119c5576119c56119e0565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea264697066735822122013b10742664fe55de6733a56455813eaf289bce7e51bbcc7c1e7078b023ece4d64736f6c63430008070033
Deployed Bytecode Sourcemap
22558:8463:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23554:328;;;;;;;;;;-1:-1:-1;23554:328:0;;;;;:::i;:::-;;:::i;:::-;;;6924:14:1;;6917:22;6899:41;;6887:2;6872:18;23554:328:0;;;;;;;;24418:440;;;;;;;;;;-1:-1:-1;24418:440:0;;;;;:::i;:::-;;:::i;:::-;;;11024:25:1;;;11012:2;10997:18;24418:440:0;10878:177:1;23963:149:0;;;;;;;;;;-1:-1:-1;23963:149:0;;;;;:::i;:::-;-1:-1:-1;;;;;24075:21:0;;;;24048:7;24075:21;;;:12;:21;;;;;;;;:29;;;;;;;;;23963:149;25274:128;;;;;;;;;;-1:-1:-1;25274:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;25371:23:0;25344:7;25371:23;;;:14;:23;;;;;;;25274:128;30816:202;;;;;;;;;;-1:-1:-1;30816:202:0;;;;;:::i;:::-;;:::i;:::-;;25029:100;;;;;;;;;;-1:-1:-1;25029:100:0;;;;;:::i;:::-;;:::i;2018:86::-;;;;;;;;;;-1:-1:-1;2065:4:0;2089:7;;;2018:86;;25484:252;;;;;;;;;;-1:-1:-1;25484:252:0;;;;;:::i;:::-;;:::i;24866:96::-;;;;;;;;;;-1:-1:-1;24866:96:0;;;;;:::i;:::-;;:::i;26193:977::-;;;;;;:::i;:::-;;:::i;24191:145::-;;;;;;;;;;-1:-1:-1;24191:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;24301:19:0;;;;24274:7;24301:19;;;:10;:19;;;;;;;;:27;;;;;;;;;24191:145;22806:36;;;;;;;;;;;;;;;;25821:294;;;;;;;;;;-1:-1:-1;25821:294:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23554:328::-;23666:4;-1:-1:-1;;;;;;23690:58:0;;-1:-1:-1;;;23690:58:0;;:117;;-1:-1:-1;;;;;;;23752:55:0;;-1:-1:-1;;;23752:55:0;23690:117;:184;;;;23827:47;23862:11;23827:34;:47::i;:::-;23683:191;23554:328;-1:-1:-1;;23554:328:0:o;24418:440::-;24557:7;24540;23343:42;-1:-1:-1;;;;;23332:53:0;;;23324:89;;;;-1:-1:-1;;;23324:89:0;;;;;;;:::i;:::-;;;;;;;;;23432:42;;-1:-1:-1;;;23432:42:0;;23463:10;23432:42;;;5946:51:1;-1:-1:-1;;;;;23432:30:0;;;;;5919:18:1;;23432:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23424:98;;;;-1:-1:-1;;;23424:98:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24577:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;:28;;24604:1:::1;::::0;24577:23;:28:::1;::::0;24604:1;;24577:28:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;24633:23:0;::::1;24616:14;24633:23:::0;;;:14:::1;:23;::::0;;;;;;;;24667:10:::1;:19:::0;;;;;:27;;;;;;;;:40;;;24718:21;;;:12:::1;:21:::0;;;;;:29;;;;;;;;:38:::1;::::0;24750:6;;24718:38:::1;:::i;:::-;-1:-1:-1::0;24772:54:0::1;::::0;;24786:10:::1;6277:34:1::0;;-1:-1:-1;;;;;6347:15:1;;6342:2;6327:18;;6320:43;6379:18;;;6372:34;;;6437:2;6422:18;;6415:34;;;24772:54:0::1;::::0;6226:3:1;6211:19;24772:54:0::1;;;;;;;24844:6:::0;24418:440;-1:-1:-1;;;;;;24418:440:0:o;30816:202::-;30879:7;23343:42;-1:-1:-1;;;;;23332:53:0;;;23324:89;;;;-1:-1:-1;;;23324:89:0;;;;;;;:::i;:::-;23432:42;;-1:-1:-1;;;23432:42:0;;23463:10;23432:42;;;5946:51:1;-1:-1:-1;;;;;23432:30:0;;;;;5919:18:1;;23432:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23424:98;;;;-1:-1:-1;;;23424:98:0;;;;;;;:::i;:::-;30930:1:::1;30906:21;:25;30898:50;;;::::0;-1:-1:-1;;;30898:50:0;;9261:2:1;30898:50:0::1;::::0;::::1;9243:21:1::0;9300:2;9280:18;;;9273:30;-1:-1:-1;;;9319:18:1;;;9312:42;9371:18;;30898:50:0::1;9059:336:1::0;30898:50:0::1;30959:51;::::0;30967:10:::1;::::0;30988:21:::1;30959:51:::0;::::1;;;::::0;::::1;::::0;;;30988:21;30967:10;30959:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;30816:202:::0;;:::o;25029:100::-;25091:7;23343:42;-1:-1:-1;;;;;23332:53:0;;;23324:89;;;;-1:-1:-1;;;23324:89:0;;;;;;;:::i;:::-;23432:42;;-1:-1:-1;;;23432:42:0;;23463:10;23432:42;;;5946:51:1;-1:-1:-1;;;;;23432:30:0;;;;;5919:18:1;;23432:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23424:98;;;;-1:-1:-1;;;23424:98:0;;;;;;;:::i;:::-;25111:10:::1;:8;:10::i;:::-;25029:100:::0;;:::o;25484:252::-;25607:7;23343:42;-1:-1:-1;;;;;23332:53:0;;;23324:89;;;;-1:-1:-1;;;23324:89:0;;;;;;;:::i;:::-;23432:42;;-1:-1:-1;;;23432:42:0;;23463:10;23432:42;;;5946:51:1;-1:-1:-1;;;;;23432:30:0;;;;;5919:18:1;;23432:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23424:98;;;;-1:-1:-1;;;23424:98:0;;;;;;;:::i;:::-;25644:1:::1;25635:6;:10;:25;;;;;25659:1;25649:6;:11;;25635:25;25627:52;;;::::0;-1:-1:-1;;;25627:52:0;;8918:2:1;25627:52:0::1;::::0;::::1;8900:21:1::0;8957:2;8937:18;;;8930:30;-1:-1:-1;;;8976:18:1;;;8969:44;9030:18;;25627:52:0::1;8716:338:1::0;25627:52:0::1;-1:-1:-1::0;;;;;25690:21:0;::::1;;::::0;;;:12:::1;:21;::::0;;;;;;;:29;;;;;;;;:38:::1;::::0;25722:6;;25690:38:::1;:::i;:::-;;25484:252:::0;;;;;:::o;24866:96::-;24926:7;23343:42;-1:-1:-1;;;;;23332:53:0;;;23324:89;;;;-1:-1:-1;;;23324:89:0;;;;;;;:::i;:::-;23432:42;;-1:-1:-1;;;23432:42:0;;23463:10;23432:42;;;5946:51:1;-1:-1:-1;;;;;23432:30:0;;;;;5919:18:1;;23432:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23424:98;;;;-1:-1:-1;;;23424:98:0;;;;;;;:::i;:::-;24946:8:::1;:6;:8::i;26193:977::-:0;2065:4;2089:7;;;2343:9;2335:38;;;;-1:-1:-1;;;2335:38:0;;8573:2:1;2335:38:0;;;8555:21:1;8612:2;8592:18;;;8585:30;-1:-1:-1;;;8631:18:1;;;8624:46;8687:18;;2335:38:0;8371:340:1;2335:38:0;7074:1:::1;7672:7;;:19;;7664:63;;;::::0;-1:-1:-1;;;7664:63:0;;10720:2:1;7664:63:0::1;::::0;::::1;10702:21:1::0;10759:2;10739:18;;;10732:30;10798:33;10778:18;;;10771:61;10849:18;;7664:63:0::1;10518:355:1::0;7664:63:0::1;7074:1;7805:7;:18:::0;;;26453:8;26440:9:::2;:21;;26432:58;;;::::0;-1:-1:-1;;;26432:58:0;;10367:2:1;26432:58:0::2;::::0;::::2;10349:21:1::0;10406:2;10386:18;;;10379:30;10445:26;10425:18;;;10418:54;10489:18;;26432:58:0::2;10165:348:1::0;26432:58:0::2;26501:19;::::0;26586:1:::2;26572:86;26593:1;26589;:5;26572:86;;;-1:-1:-1::0;;;;;26631:21:0;::::2;;::::0;;;:12:::2;:21;::::0;;;;;;;:24;;;;;;;;;26617:38:::2;::::0;:11;:38:::2;:::i;:::-;26603:52:::0;-1:-1:-1;26596:3:0;::::2;::::0;::::2;:::i;:::-;;;;26572:86;;;;26690:4;26676:11;:18;26668:43;;;::::0;-1:-1:-1;;;26668:43:0;;7890:2:1;26668:43:0::2;::::0;::::2;7872:21:1::0;7929:2;7909:18;;;7902:30;-1:-1:-1;;;7948:18:1;;;7941:42;8000:18;;26668:43:0::2;7688:336:1::0;26668:43:0::2;26739:73;26750:7;26759;26768;26777;26786;26795;26804;26739:10;:73::i;:::-;26722:90:::0;-1:-1:-1;26826:19:0;26823:117:::2;;26864:74;26876:7;26885;26894;26903;26912;26921;26930;26864:11;:74::i;:::-;26847:91;;26823:117;26953:19:::0;26950:44:::2;;-1:-1:-1::0;26991:1:0::2;26950:44;27032:60;::::0;-1:-1:-1;;;27032:60:0;;-1:-1:-1;;;;;6659:32:1;;;27032:60:0::2;::::0;::::2;6641:51:1::0;27090:1:0::2;6708:18:1::0;;;6701:47;27004:25:0::2;::::0;27032:46;;::::2;::::0;::::2;::::0;6614:18:1;;27032:60:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;-1:-1:-1::0;;27032:60:0::2;::::0;::::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;:::i;:::-;27004:88;;27103:59;27122:7;27131:14;27147:8;27156:1;27147:11;;;;;;;;:::i;:::-;;;;;;;27160:1;27103:18;:59::i;:::-;-1:-1:-1::0;;7030:1:0::1;7984:22:::0;;-1:-1:-1;;;;;;;;;;26193:977:0:o;25821:294::-;25905:13;25932:14;25948:13;25965:38;25986:7;25995;25965:20;:38::i;:::-;-1:-1:-1;;;;;26045:21:0;;;;;;:12;:21;;;;;;;;:29;;;;;;;;25931:72;;-1:-1:-1;25931:72:0;-1:-1:-1;26076:20:0;26077:7;25931:72;26083:1;26077:7;:::i;:::-;26076:18;:20::i;:::-;26028:78;;;;;;;;;:::i;:::-;;;;;;;;;;;;;26014:93;;;;25821:294;;;;:::o;12221:219::-;12314:4;-1:-1:-1;;;;;;12338:41:0;;-1:-1:-1;;;12338:41:0;;:94;;-1:-1:-1;;;;;;;;;;11586:40:0;;;12396:36;11477:157;3077:120;2065:4;2089:7;;;2613:41;;;;-1:-1:-1;;;2613:41:0;;7541:2:1;2613:41:0;;;7523:21:1;7580:2;7560:18;;;7553:30;-1:-1:-1;;;7599:18:1;;;7592:50;7659:18;;2613:41:0;7339:344:1;2613:41:0;3146:5:::1;3136:15:::0;;-1:-1:-1;;3136:15:0::1;::::0;;3167:22:::1;788:10:::0;3176:12:::1;3167:22;::::0;-1:-1:-1;;;;;5964:32:1;;;5946:51;;5934:2;5919:18;3167:22:0::1;;;;;;;3077:120::o:0;2818:118::-;2065:4;2089:7;;;2343:9;2335:38;;;;-1:-1:-1;;;2335:38:0;;8573:2:1;2335:38:0;;;8555:21:1;8612:2;8592:18;;;8585:30;-1:-1:-1;;;8631:18:1;;;8624:46;8687:18;;2335:38:0;8371:340:1;2335:38:0;2878:7:::1;:14:::0;;-1:-1:-1;;2878:14:0::1;2888:4;2878:14;::::0;;2908:20:::1;2915:12;788:10:::0;;708:98;27178:790;27340:7;;;27413:8;:6;:8::i;:::-;27392:29;;27435:7;27446:1;27435:12;:30;;;;;27464:1;27451:10;:14;27435:30;27432:47;;;27476:1;27467:10;;27432:47;27492:7;27503:1;27492:12;:52;;;;;27523:1;27509:10;:15;;:34;;;;;27542:1;27528:10;:15;;27509:34;27489:69;;;27555:1;27546:10;;27489:69;27571:7;27582:1;27571:12;:52;;;;;27602:2;27588:10;:16;;:34;;;;;27621:1;27608:10;:14;27588:34;27568:69;;;27634:1;27625:10;;27568:69;27650:7;27661:1;27650:12;:53;;;;;27681:2;27667:10;:16;;:35;;;;;27700:2;27687:10;:15;27667:35;27647:70;;;27714:1;27705:10;;27647:70;27730:7;27741:1;27730:12;:53;;;;;27761:2;27747:10;:16;;:35;;;;;27780:2;27767:10;:15;27747:35;27727:70;;;27794:1;27785:10;;27727:70;27810:7;27821:1;27810:12;:53;;;;;27841:2;27827:10;:16;;:35;;;;;27860:2;27847:10;:15;27827:35;27807:70;;;27874:1;27865:10;;27807:70;27890:7;27901:1;27890:12;:31;;;;;27919:2;27906:10;:15;27890:31;27887:48;;;27932:1;27923:10;;27887:48;-1:-1:-1;27953:6:0;27178:790;-1:-1:-1;;;;;;;;27178:790:0:o;27976:789::-;28139:7;;;28212:8;:6;:8::i;:::-;28191:29;;28234:7;28245:1;28234:12;:30;;;;;28263:1;28250:10;:14;28234:30;28231:47;;;28275:1;28266:10;;28231:47;28291:7;28302:1;28291:12;:52;;;;;28322:1;28308:10;:15;;:34;;;;;28341:1;28327:10;:15;;28308:34;28288:69;;;28354:1;28345:10;;28288:69;28370:7;28381:1;28370:12;:51;;;;;28401:1;28387:10;:15;;:33;;;;;28419:1;28406:10;:14;28387:33;28367:68;;;28432:1;28423:10;;28367:68;28448:7;28459:1;28448:12;:52;;;;;28479:2;28465:10;:16;;:34;;;;;28498:1;28485:10;:14;28465:34;28445:69;;;28511:1;28502:10;;28445:69;28527:7;28538:1;28527:12;:53;;;;;28558:2;28544:10;:16;;:35;;;;;28577:2;28564:10;:15;28544:35;28524:70;;;28591:1;28582:10;;28524:70;28607:7;28618:1;28607:12;:53;;;;;28638:2;28624:10;:16;;:35;;;;;28657:2;28644:10;:15;28624:35;28604:70;;;28671:1;28662:10;;28604:70;28687:7;28698:1;28687:12;:31;;;;;28716:2;28703:10;:15;28684:48;;;-1:-1:-1;28729:1:0;;27976:789;-1:-1:-1;;;;;;;;;27976:789:0:o;29201:672::-;-1:-1:-1;;;;;29352:21:0;;29317:32;29352:21;;;:12;:21;;;;;;;;:29;;;;;;;;29396:18;;29392:425;;29452:29;;;;;;;;;;;;;;;;;;;29435:47;;;;;;;;-1:-1:-1;29435:47:0;;;;;;;;;;;;;;;;;;;;;;;29392:425;;;29561:18;;29513:33;;29549:11;;29561:20;;29580:1;;29561:20;:::i;:::-;29549:33;;;;;;;;:::i;:::-;;;;;;;;;;;29513:69;;29653:10;29628:14;:20;;;29600:14;:25;;;:48;;;;:::i;:::-;29599:64;29595:211;;;29705:5;29681:14;:20;;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;29595:211:0;;-1:-1:-1;29595:211:0;;29762:29;;;;;;;;;;;;;;;;;;;29745:47;;;;;;;;-1:-1:-1;29745:47:0;;;;;;;;;;;;;;;;;;;;;;;29595:211;29500:317;29392:425;-1:-1:-1;;;;;29827:21:0;;;;;;:12;:21;;;;;;;;:29;;;;;;;;:38;;29860:5;;29827:21;:38;;29860:5;;29827:38;:::i;:::-;;;;-1:-1:-1;;;;;;;29201:672:0:o;29931:873::-;-1:-1:-1;;;;;30054:23:0;;30017:7;30054:23;;;:14;:23;;;;;;30017:7;;30046:53;;;;-1:-1:-1;;;30046:53:0;;8231:2:1;30046:53:0;;;8213:21:1;8270:2;8250:18;;;8243:30;-1:-1:-1;;;8289:18:1;;;8282:43;8342:18;;30046:53:0;8029:337:1;30046:53:0;30127:1;30110:653;-1:-1:-1;;;;;30140:23:0;;;;;;:14;:23;;;;;;30130:33;;30110:653;;-1:-1:-1;;;;;30224:21:0;;30190:31;30224:21;;;:12;:21;;;;;;;;:29;;;;;;;;30190:63;;;;;;;;;;;;;;;;;;;30224:29;;30190:63;:31;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30268:14;30302:6;30311:1;30302:10;;30297:455;30318:11;:18;30314:1;:22;30297:455;;;30362:30;30395:11;30407:1;30395:14;;;;;;;;:::i;:::-;;;;;;;30362:47;;30442:12;:23;;;30432:7;:33;30428:44;;;30467:5;;;30428:44;30506:23;;30495:34;;;;;:92;;-1:-1:-1;30569:18:0;;;;30543:23;;:44;;30569:18;30543:44;:::i;:::-;30533:7;:54;30495:92;30491:199;;;30637:23;;30619:6;;30663;;30627:33;;:7;:33;:::i;:::-;:42;;;;:::i;:::-;30611:59;;;;;;;;;;;30491:199;30718:18;;;;30708:28;;;;:::i;:::-;;;30343:409;30338:3;;;;;:::i;:::-;;;;30297:455;;;;30175:588;;30165:8;;;;;:::i;:::-;;;;30110:653;;;-1:-1:-1;30773:23:0;;-1:-1:-1;;;30773:23:0;;8231:2:1;30773:23:0;;;8213:21:1;8270:2;8250:18;;;8243:30;-1:-1:-1;;;8289:18:1;;;8282:43;8342:18;;30773:23:0;8029:337:1;29931:873:0;;;;;;:::o;3536:723::-;3592:13;3813:10;3809:53;;-1:-1:-1;;3840:10:0;;;;;;;;;;;;-1:-1:-1;;;3840:10:0;;;;;3536:723::o;3809:53::-;3887:5;3872:12;3928:78;3935:9;;3928:78;;3961:8;;;;:::i;:::-;;-1:-1:-1;3984:10:0;;-1:-1:-1;3992:2:0;3984:10;;:::i;:::-;;;3928:78;;;4016:19;4048:6;4038:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4038:17:0;;4016:39;;4066:154;4073:10;;4066:154;;4100:11;4110:1;4100:11;;:::i;:::-;;-1:-1:-1;4169:10:0;4177:2;4169:5;:10;:::i;:::-;4156:24;;:2;:24;:::i;:::-;4143:39;;4126:6;4133;4126:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;4126:56:0;;;;;;;;-1:-1:-1;4197:11:0;4206:2;4197:11;;:::i;:::-;;;4066:154;;;4244:6;3536:723;-1:-1:-1;;;;3536:723:0:o;28777:307::-;28818:7;;28853:32;28870:15;28853:16;:32;:::i;:::-;28837:48;-1:-1:-1;28896:12:0;28911:32;28927:16;28911:15;:32;:::i;:::-;28896:47;-1:-1:-1;28954:18:0;29043:3;29010:7;:5;29016:1;29010:7;:::i;:::-;29019:6;:4;29024:1;29019:6;:::i;:::-;28993:45;;;;;;5621:19:1;;;;5656:12;;5649:28;29027:10:0;5715:2:1;5711:15;;;-1:-1:-1;;5707:53:1;5693:12;;;5686:75;5777:12;;28993:45:0;;;;;;;;;;;;28983:56;;;;;;28975:65;;:71;;;;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:173:1;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:1:o;383:254::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;627:2;612:18;;;;599:32;;-1:-1:-1;;;383:254:1:o;642:734::-;731:6;739;747;755;808:2;796:9;787:7;783:23;779:32;776:52;;;824:1;821;814:12;776:52;847:29;866:9;847:29;:::i;:::-;837:39;;923:2;912:9;908:18;895:32;885:42;;978:2;967:9;963:18;950:32;1001:18;1042:2;1034:6;1031:14;1028:34;;;1058:1;1055;1048:12;1028:34;1096:6;1085:9;1081:22;1071:32;;1141:7;1134:4;1130:2;1126:13;1122:27;1112:55;;1163:1;1160;1153:12;1112:55;1203:2;1190:16;1229:2;1221:6;1218:14;1215:34;;;1245:1;1242;1235:12;1215:34;1290:7;1285:2;1276:6;1272:2;1268:15;1264:24;1261:37;1258:57;;;1311:1;1308;1301:12;1258:57;642:734;;;;-1:-1:-1;;1342:2:1;1334:11;;-1:-1:-1;;;642:734:1:o;1381:742::-;1512:6;1520;1528;1536;1544;1552;1560;1568;1576;1629:3;1617:9;1608:7;1604:23;1600:33;1597:53;;;1646:1;1643;1636:12;1597:53;1669:29;1688:9;1669:29;:::i;:::-;1659:39;;1745:2;1734:9;1730:18;1717:32;1707:42;;1796:2;1785:9;1781:18;1768:32;1758:42;;1847:2;1836:9;1832:18;1819:32;1809:42;;1898:3;1887:9;1883:19;1870:33;1860:43;;1950:3;1939:9;1935:19;1922:33;1912:43;;2002:3;1991:9;1987:19;1974:33;1964:43;;2054:3;2043:9;2039:19;2026:33;2016:43;;2078:39;2112:3;2101:9;2097:19;2078:39;:::i;:::-;2068:49;;1381:742;;;;;;;;;;;:::o;2128:1116::-;2223:6;2254:2;2297;2285:9;2276:7;2272:23;2268:32;2265:52;;;2313:1;2310;2303:12;2265:52;2346:9;2340:16;2375:18;2416:2;2408:6;2405:14;2402:34;;;2432:1;2429;2422:12;2402:34;2470:6;2459:9;2455:22;2445:32;;2515:7;2508:4;2504:2;2500:13;2496:27;2486:55;;2537:1;2534;2527:12;2486:55;2566:2;2560:9;2588:2;2584;2581:10;2578:36;;;2594:18;;:::i;:::-;2640:2;2637:1;2633:10;2672:2;2666:9;2735:2;2731:7;2726:2;2722;2718:11;2714:25;2706:6;2702:38;2790:6;2778:10;2775:22;2770:2;2758:10;2755:18;2752:46;2749:72;;;2801:18;;:::i;:::-;2837:2;2830:22;2887:18;;;2921:15;;;;-1:-1:-1;2956:11:1;;;2986;;;2982:20;;2979:33;-1:-1:-1;2976:53:1;;;3025:1;3022;3015:12;2976:53;3047:1;3038:10;;3057:156;3071:2;3068:1;3065:9;3057:156;;;3128:10;;3116:23;;3089:1;3082:9;;;;;3159:12;;;;3191;;3057:156;;3249:277;3316:6;3369:2;3357:9;3348:7;3344:23;3340:32;3337:52;;;3385:1;3382;3375:12;3337:52;3417:9;3411:16;3470:5;3463:13;3456:21;3449:5;3446:32;3436:60;;3492:1;3489;3482:12;3531:286;3589:6;3642:2;3630:9;3621:7;3617:23;3613:32;3610:52;;;3658:1;3655;3648:12;3610:52;3684:23;;-1:-1:-1;;;;;;3736:32:1;;3726:43;;3716:71;;3783:1;3780;3773:12;3822:185;3864:3;3902:5;3896:12;3917:52;3962:6;3957:3;3950:4;3943:5;3939:16;3917:52;:::i;:::-;3985:16;;;;;3822:185;-1:-1:-1;;3822:185:1:o;4130:1301::-;4407:3;4436:1;4469:6;4463:13;4499:3;4521:1;4549:9;4545:2;4541:18;4531:28;;4609:2;4598:9;4594:18;4631;4621:61;;4675:4;4667:6;4663:17;4653:27;;4621:61;4701:2;4749;4741:6;4738:14;4718:18;4715:38;4712:165;;;-1:-1:-1;;;4776:33:1;;4832:4;4829:1;4822:15;4862:4;4783:3;4850:17;4712:165;4893:18;4920:104;;;;5038:1;5033:320;;;;4886:467;;4920:104;-1:-1:-1;;4953:24:1;;4941:37;;4998:16;;;;-1:-1:-1;4920:104:1;;5033:320;11133:1;11126:14;;;11170:4;11157:18;;5128:1;5142:165;5156:6;5153:1;5150:13;5142:165;;;5234:14;;5221:11;;;5214:35;5277:16;;;;5171:10;;5142:165;;;5146:3;;5336:6;5331:3;5327:16;5320:23;;4886:467;;;;;;;5369:56;5394:30;5420:3;5412:6;5394:30;:::i;:::-;-1:-1:-1;;;4072:20:1;;4117:1;4108:11;;4012:113;5369:56;5362:63;4130:1301;-1:-1:-1;;;;;4130:1301:1:o;6951:383::-;7100:2;7089:9;7082:21;7063:4;7132:6;7126:13;7175:6;7170:2;7159:9;7155:18;7148:34;7191:66;7250:6;7245:2;7234:9;7230:18;7225:2;7217:6;7213:15;7191:66;:::i;:::-;7318:2;7297:15;-1:-1:-1;;7293:29:1;7278:45;;;;7325:2;7274:54;;6951:383;-1:-1:-1;;6951:383:1:o;9400:348::-;9602:2;9584:21;;;9641:2;9621:18;;;9614:30;9680:26;9675:2;9660:18;;9653:54;9739:2;9724:18;;9400:348::o;9753:407::-;9955:2;9937:21;;;9994:2;9974:18;;;9967:30;10033:34;10028:2;10013:18;;10006:62;-1:-1:-1;;;10099:2:1;10084:18;;10077:41;10150:3;10135:19;;9753:407::o;11186:128::-;11226:3;11257:1;11253:6;11250:1;11247:13;11244:39;;;11263:18;;:::i;:::-;-1:-1:-1;11299:9:1;;11186:128::o;11319:120::-;11359:1;11385;11375:35;;11390:18;;:::i;:::-;-1:-1:-1;11424:9:1;;11319:120::o;11444:168::-;11484:7;11550:1;11546;11542:6;11538:14;11535:1;11532:21;11527:1;11520:9;11513:17;11509:45;11506:71;;;11557:18;;:::i;:::-;-1:-1:-1;11597:9:1;;11444:168::o;11617:125::-;11657:4;11685:1;11682;11679:8;11676:34;;;11690:18;;:::i;:::-;-1:-1:-1;11727:9:1;;11617:125::o;11747:258::-;11819:1;11829:113;11843:6;11840:1;11837:13;11829:113;;;11919:11;;;11913:18;11900:11;;;11893:39;11865:2;11858:10;11829:113;;;11960:6;11957:1;11954:13;11951:48;;;11995:1;11986:6;11981:3;11977:16;11970:27;11951:48;;11747:258;;;:::o;12010:380::-;12089:1;12085:12;;;;12132;;;12153:61;;12207:4;12199:6;12195:17;12185:27;;12153:61;12260:2;12252:6;12249:14;12229:18;12226:38;12223:161;;;12306:10;12301:3;12297:20;12294:1;12287:31;12341:4;12338:1;12331:15;12369:4;12366:1;12359:15;12223:161;;12010:380;;;:::o;12395:135::-;12434:3;-1:-1:-1;;12455:17:1;;12452:43;;;12475:18;;:::i;:::-;-1:-1:-1;12522:1:1;12511:13;;12395:135::o;12535:112::-;12567:1;12593;12583:35;;12598:18;;:::i;:::-;-1:-1:-1;12632:9:1;;12535:112::o;12652:127::-;12713:10;12708:3;12704:20;12701:1;12694:31;12744:4;12741:1;12734:15;12768:4;12765:1;12758:15;12784:127;12845:10;12840:3;12836:20;12833:1;12826:31;12876:4;12873:1;12866:15;12900:4;12897:1;12890:15;12916:127;12977:10;12972:3;12968:20;12965:1;12958:31;13008:4;13005:1;12998:15;13032:4;13029:1;13022:15;13048:127;13109:10;13104:3;13100:20;13097:1;13090:31;13140:4;13137:1;13130:15;13164:4;13161:1;13154:15
Swarm Source
ipfs://13b10742664fe55de6733a56455813eaf289bce7e51bbcc7c1e7078b023ece4d
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.