Contract Overview
Balance:
150 FTM
FTM Value:
$67.98 (@ $0.45/FTM)
[ Download CSV Export ]
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0x28d1ebe60fd95e43c1aed84001f65664e835e7ffa721872c7d2dc652984d77c7 | 53973424 | 70 days 20 hrs ago | 0x1231c467621a3e6c4d179b7ecece57711aba24ad | Contract Creation | 0 FTM |
[ Download CSV Export ]
Contract Name:
BeyondWormz
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at FtmScan.com on 2023-01-18 */ // SPDX-License-Identifier: MIT // File: @openzeppelin/contracts/utils/Counters.sol // OpenZeppelin Contracts v4.4.1 (utils/Counters.sol) pragma solidity ^0.8.0; /** * @title Counters * @author Matt Condon (@shrugs) * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number * of elements in a mapping, issuing ERC721 ids, or counting request ids. * * Include with `using Counters for Counters.Counter;` */ library Counters { struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } } // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; uint8 private constant _ADDRESS_LENGTH = 20; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } /** * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation. */ function toHexString(address addr) internal pure returns (string memory) { return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH); } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return 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 /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: address zero is not a valid owner"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: invalid token ID"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { _requireMinted(tokenId); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overridden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not token owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { _requireMinted(tokenId); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner nor approved"); _safeTransfer(from, to, tokenId, data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { address owner = ERC721.ownerOf(tokenId); return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); _afterTokenTransfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); _afterTokenTransfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); _afterTokenTransfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits an {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits an {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Reverts if the `tokenId` has not been minted yet. */ function _requireMinted(uint256 tokenId) internal view virtual { require(_exists(tokenId), "ERC721: invalid token ID"); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { /// @solidity memory-safe-assembly assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: contracts/BeyondWormz.sol pragma solidity >=0.7.0 <0.9.0; contract BeyondWormz is ERC721, Ownable { using Strings for uint256; using Counters for Counters.Counter; Counters.Counter private supply; string public uriPrefix = "ipfs://bafybeif5tcwpaxi46dfchh37xnnhgeotrkbe3uh3jokuvqgzet6sl3fehe/"; string public uriSuffix = ".json"; uint256 public maxSupply = 500; uint256 public maxMintAmountPerTx = 1; bool public paused = true; bool public revealed = true; address public CryptoWormzAddress; address public WormzHDAddress; constructor() ERC721("BeyondWormz", "BW") { setCryptoWormsAddress(0x74D3736377fd0251c19b2b77288Cea6D3Ad87578); setWormzHDAddress(0x610CA70b7a61F405D080C1D618382a81FeD1C878); } modifier mintCompliance(uint256 _mintAmount) { require(_mintAmount > 0 && _mintAmount <= maxMintAmountPerTx, "Invalid mint amount!"); require(supply.current() + _mintAmount <= maxSupply, "Max supply exceeded!"); _; } function totalSupply() public view returns (uint256) { return supply.current(); } function mint(uint256 _mintAmount) public payable mintCompliance(_mintAmount) { require(!paused, "The contract is paused!"); require(balanceOf(msg.sender) == 0, "Max Mint per wallet reached"); IERC721 token = IERC721(CryptoWormzAddress); uint256 WormzAmount = token.balanceOf(msg.sender); require (WormzAmount >= 2, "You don't own any CryptoWormz"); IERC721 token2 = IERC721(WormzHDAddress); uint256 WormzHDAmount = token2.balanceOf(msg.sender); require (WormzHDAmount >= 2, "You don't own any CryptoWormz HD"); _mintLoop(msg.sender, _mintAmount); } function mintForAddress(uint256 _mintAmount, address _receiver) public mintCompliance(_mintAmount) onlyOwner { _mintLoop(_receiver, _mintAmount); } function walletOfOwner(address _owner) public view returns (uint256[] memory) { uint256 ownerTokenCount = balanceOf(_owner); uint256[] memory ownedTokenIds = new uint256[](ownerTokenCount); uint256 currentTokenId = 1; uint256 ownedTokenIndex = 0; while (ownedTokenIndex < ownerTokenCount && currentTokenId <= maxSupply) { address currentTokenOwner = ownerOf(currentTokenId); if (currentTokenOwner == _owner) { ownedTokenIds[ownedTokenIndex] = currentTokenId; ownedTokenIndex++; } currentTokenId++; } return ownedTokenIds; } function tokenURI(uint256 _tokenId) public view virtual override returns (string memory) { require( _exists(_tokenId), "ERC721Metadata: URI query for nonexistent token" ); string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, _tokenId.toString(), uriSuffix)) : ""; } function setCryptoWormsAddress(address _NewAddress) public onlyOwner { CryptoWormzAddress = _NewAddress; } function setWormzHDAddress(address _NewAddress2) public onlyOwner { WormzHDAddress = _NewAddress2; } function setRevealed(bool _state) public onlyOwner { revealed = _state; } function setMaxMintAmountPerTx(uint256 _maxMintAmountPerTx) public onlyOwner { maxMintAmountPerTx = _maxMintAmountPerTx; } function setUriPrefix(string memory _uriPrefix) public onlyOwner { uriPrefix = _uriPrefix; } function setUriSuffix(string memory _uriSuffix) public onlyOwner { uriSuffix = _uriSuffix; } function setPaused(bool _state) public onlyOwner { paused = _state; } function withdraw() public onlyOwner { // This will transfer the remaining contract balance to the owner. // Do not remove this otherwise you will not be able to withdraw the funds. // ============================================================================= (bool os, ) = payable(owner()).call{value: address(this).balance}(""); require(os); // ============================================================================= } function _mintLoop(address _receiver, uint256 _mintAmount) internal { for (uint256 i = 0; i < _mintAmount; i++) { supply.increment(); _safeMint(_receiver, supply.current()); } } function _baseURI() internal view virtual override returns (string memory) { return uriPrefix; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"CryptoWormzAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WormzHDAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmountPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"mintForAddress","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_NewAddress","type":"address"}],"name":"setCryptoWormsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxMintAmountPerTx","type":"uint256"}],"name":"setMaxMintAmountPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setRevealed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uriPrefix","type":"string"}],"name":"setUriPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uriSuffix","type":"string"}],"name":"setUriSuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_NewAddress2","type":"address"}],"name":"setWormzHDAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uriPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uriSuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
61010060405260436080818152906200256e60a03980516200002a916008916020909101906200025d565b5060408051808201909152600580825264173539b7b760d91b602090920191825262000059916009916200025d565b506101f4600a556001600b55600c805461ffff19166101011790553480156200008157600080fd5b50604080518082018252600b81526a2132bcb7b7322bb7b936bd60a91b602080830191825283518085019094526002845261425760f01b908401528151919291620000cf916000916200025d565b508051620000e59060019060208401906200025d565b50505062000102620000fc6200014660201b60201c565b6200014a565b620001217374d3736377fd0251c19b2b77288cea6d3ad875786200019c565b6200014073610ca70b7a61f405d080c1d618382a81fed1c878620001d0565b62000340565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620001a6620001fc565b600c80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b620001da620001fc565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031633146200025b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b8280546200026b9062000303565b90600052602060002090601f0160209004810192826200028f5760008555620002da565b82601f10620002aa57805160ff1916838001178555620002da565b82800160010185558215620002da579182015b82811115620002da578251825591602001919060010190620002bd565b50620002e8929150620002ec565b5090565b5b80821115620002e85760008155600101620002ed565b600181811c908216806200031857607f821691505b602082108114156200033a57634e487b7160e01b600052602260045260246000fd5b50919050565b61221e80620003506000396000f3fe60806040526004361061020f5760003560e01c80636352211e11610118578063b071401b116100a0578063e0a808531161006f578063e0a80853146105da578063e6ed4f9a146105fa578063e985e9c51461061a578063efbd73f414610663578063f2fde38b1461068357600080fd5b8063b071401b14610564578063b88d4fde14610584578063c87b56dd146105a4578063d5abeb01146105c457600080fd5b80638da5cb5b116100e75780638da5cb5b146104e857806394354fd01461050657806395d89b411461051c578063a0712d6814610531578063a22cb4651461054457600080fd5b80636352211e1461047357806370a0823114610493578063715018a6146104b35780637ec4a659146104c857600080fd5b806320dce8971161019b578063438b63001161016a578063438b6300146103e357806351830227146104105780635503a0e81461042f5780635c975abb1461044457806362b99ad41461045e57600080fd5b806320dce8971461036e57806323b872dd1461038e5780633ccfd60b146103ae57806342842e0e146103c357600080fd5b806314484058116101e257806314484058146102c557806316ba10e0146102eb57806316c38b3c1461030b57806318160ddd1461032b5780631c2fc56f1461034e57600080fd5b806301ffc9a71461021457806306fdde0314610249578063081812fc1461026b578063095ea7b3146102a3575b600080fd5b34801561022057600080fd5b5061023461022f366004611da5565b6106a3565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b5061025e6106f5565b6040516102409190611fee565b34801561027757600080fd5b5061028b610286366004611e28565b610787565b6040516001600160a01b039091168152602001610240565b3480156102af57600080fd5b506102c36102be366004611d60565b6107ae565b005b3480156102d157600080fd5b50600c5461028b906201000090046001600160a01b031681565b3480156102f757600080fd5b506102c3610306366004611ddf565b6108c9565b34801561031757600080fd5b506102c3610326366004611d8a565b6108e8565b34801561033757600080fd5b50610340610903565b604051908152602001610240565b34801561035a57600080fd5b50600d5461028b906001600160a01b031681565b34801561037a57600080fd5b506102c3610389366004611c30565b610913565b34801561039a57600080fd5b506102c36103a9366004611c7e565b610945565b3480156103ba57600080fd5b506102c3610976565b3480156103cf57600080fd5b506102c36103de366004611c7e565b6109f2565b3480156103ef57600080fd5b506104036103fe366004611c30565b610a0d565b6040516102409190611faa565b34801561041c57600080fd5b50600c5461023490610100900460ff1681565b34801561043b57600080fd5b5061025e610aee565b34801561045057600080fd5b50600c546102349060ff1681565b34801561046a57600080fd5b5061025e610b7c565b34801561047f57600080fd5b5061028b61048e366004611e28565b610b89565b34801561049f57600080fd5b506103406104ae366004611c30565b610be9565b3480156104bf57600080fd5b506102c3610c6f565b3480156104d457600080fd5b506102c36104e3366004611ddf565b610c83565b3480156104f457600080fd5b506006546001600160a01b031661028b565b34801561051257600080fd5b50610340600b5481565b34801561052857600080fd5b5061025e610c9e565b6102c361053f366004611e28565b610cad565b34801561055057600080fd5b506102c361055f366004611d36565b610fc5565b34801561057057600080fd5b506102c361057f366004611e28565b610fd0565b34801561059057600080fd5b506102c361059f366004611cba565b610fdd565b3480156105b057600080fd5b5061025e6105bf366004611e28565b611015565b3480156105d057600080fd5b50610340600a5481565b3480156105e657600080fd5b506102c36105f5366004611d8a565b6110f3565b34801561060657600080fd5b506102c3610615366004611c30565b611115565b34801561062657600080fd5b50610234610635366004611c4b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561066f57600080fd5b506102c361067e366004611e5a565b61113f565b34801561068f57600080fd5b506102c361069e366004611c30565b611203565b60006001600160e01b031982166380ac58cd60e01b14806106d457506001600160e01b03198216635b5e139f60e01b145b806106ef57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461070490612110565b80601f016020809104026020016040519081016040528092919081815260200182805461073090612110565b801561077d5780601f106107525761010080835404028352916020019161077d565b820191906000526020600020905b81548152906001019060200180831161076057829003601f168201915b5050505050905090565b600061079282611279565b506000908152600460205260409020546001600160a01b031690565b60006107b982610b89565b9050806001600160a01b0316836001600160a01b0316141561082c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061084857506108488133610635565b6108ba5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610823565b6108c483836112d8565b505050565b6108d1611346565b80516108e4906009906020840190611af5565b5050565b6108f0611346565b600c805460ff1916911515919091179055565b600061090e60075490565b905090565b61091b611346565b600c80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b61094f33826113a0565b61096b5760405162461bcd60e51b815260040161082390612053565b6108c483838361141f565b61097e611346565b60006109926006546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d80600081146109dc576040519150601f19603f3d011682016040523d82523d6000602084013e6109e1565b606091505b50509050806109ef57600080fd5b50565b6108c483838360405180602001604052806000815250610fdd565b60606000610a1a83610be9565b905060008167ffffffffffffffff811115610a3757610a376121bc565b604051908082528060200260200182016040528015610a60578160200160208202803683370190505b509050600160005b8381108015610a795750600a548211155b15610ae4576000610a8983610b89565b9050866001600160a01b0316816001600160a01b03161415610ad15782848381518110610ab857610ab86121a6565b602090810291909101015281610acd8161214b565b9250505b82610adb8161214b565b93505050610a68565b5090949350505050565b60098054610afb90612110565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2790612110565b8015610b745780601f10610b4957610100808354040283529160200191610b74565b820191906000526020600020905b815481529060010190602001808311610b5757829003601f168201915b505050505081565b60088054610afb90612110565b6000818152600260205260408120546001600160a01b0316806106ef5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610823565b60006001600160a01b038216610c535760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610823565b506001600160a01b031660009081526003602052604090205490565b610c77611346565b610c8160006115bb565b565b610c8b611346565b80516108e4906008906020840190611af5565b60606001805461070490612110565b80600081118015610cc05750600b548111155b610d035760405162461bcd60e51b8152602060048201526014602482015273496e76616c6964206d696e7420616d6f756e742160601b6044820152606401610823565b600a5481610d1060075490565b610d1a91906120a1565b1115610d5f5760405162461bcd60e51b81526020600482015260146024820152734d617820737570706c792065786365656465642160601b6044820152606401610823565b600c5460ff1615610db25760405162461bcd60e51b815260206004820152601760248201527f54686520636f6e747261637420697320706175736564210000000000000000006044820152606401610823565b610dbb33610be9565b15610e085760405162461bcd60e51b815260206004820152601b60248201527f4d6178204d696e74207065722077616c6c6574207265616368656400000000006044820152606401610823565b600c546040516370a0823160e01b8152336004820152620100009091046001600160a01b03169060009082906370a082319060240160206040518083038186803b158015610e5557600080fd5b505afa158015610e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8d9190611e41565b90506002811015610ee05760405162461bcd60e51b815260206004820152601d60248201527f596f7520646f6e2774206f776e20616e792043727970746f576f726d7a0000006044820152606401610823565b600d546040516370a0823160e01b81523360048201526001600160a01b039091169060009082906370a082319060240160206040518083038186803b158015610f2857600080fd5b505afa158015610f3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f609190611e41565b90506002811015610fb35760405162461bcd60e51b815260206004820181905260248201527f596f7520646f6e2774206f776e20616e792043727970746f576f726d7a2048446044820152606401610823565b610fbd338761160d565b505050505050565b6108e433838361164a565b610fd8611346565b600b55565b610fe733836113a0565b6110035760405162461bcd60e51b815260040161082390612053565b61100f84848484611719565b50505050565b6000818152600260205260409020546060906001600160a01b03166110945760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610823565b600061109e61174c565b905060008151116110be57604051806020016040528060008152506110ec565b806110c88461175b565b60096040516020016110dc93929190611ea9565b6040516020818303038152906040525b9392505050565b6110fb611346565b600c80549115156101000261ff0019909216919091179055565b61111d611346565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b816000811180156111525750600b548111155b6111955760405162461bcd60e51b8152602060048201526014602482015273496e76616c6964206d696e7420616d6f756e742160601b6044820152606401610823565b600a54816111a260075490565b6111ac91906120a1565b11156111f15760405162461bcd60e51b81526020600482015260146024820152734d617820737570706c792065786365656465642160601b6044820152606401610823565b6111f9611346565b6108c4828461160d565b61120b611346565b6001600160a01b0381166112705760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610823565b6109ef816115bb565b6000818152600260205260409020546001600160a01b03166109ef5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610823565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061130d82610b89565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6006546001600160a01b03163314610c815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610823565b6000806113ac83610b89565b9050806001600160a01b0316846001600160a01b031614806113f357506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806114175750836001600160a01b031661140c84610787565b6001600160a01b0316145b949350505050565b826001600160a01b031661143282610b89565b6001600160a01b0316146114965760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610823565b6001600160a01b0382166114f85760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610823565b6115036000826112d8565b6001600160a01b038316600090815260036020526040812080546001929061152c9084906120cd565b90915550506001600160a01b038216600090815260036020526040812080546001929061155a9084906120a1565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60005b818110156108c457611626600780546001019055565b6116388361163360075490565b611859565b806116428161214b565b915050611610565b816001600160a01b0316836001600160a01b031614156116ac5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610823565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61172484848461141f565b61173084848484611873565b61100f5760405162461bcd60e51b815260040161082390612001565b60606008805461070490612110565b60608161177f5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156117a957806117938161214b565b91506117a29050600a836120b9565b9150611783565b60008167ffffffffffffffff8111156117c4576117c46121bc565b6040519080825280601f01601f1916602001820160405280156117ee576020820181803683370190505b5090505b8415611417576118036001836120cd565b9150611810600a86612166565b61181b9060306120a1565b60f81b818381518110611830576118306121a6565b60200101906001600160f81b031916908160001a905350611852600a866120b9565b94506117f2565b6108e4828260405180602001604052806000815250611980565b60006001600160a01b0384163b1561197557604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906118b7903390899088908890600401611f6d565b602060405180830381600087803b1580156118d157600080fd5b505af1925050508015611901575060408051601f3d908101601f191682019092526118fe91810190611dc2565b60015b61195b573d80801561192f576040519150601f19603f3d011682016040523d82523d6000602084013e611934565b606091505b5080516119535760405162461bcd60e51b815260040161082390612001565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611417565b506001949350505050565b61198a83836119b3565b6119976000848484611873565b6108c45760405162461bcd60e51b815260040161082390612001565b6001600160a01b038216611a095760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610823565b6000818152600260205260409020546001600160a01b031615611a6e5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610823565b6001600160a01b0382166000908152600360205260408120805460019290611a979084906120a1565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611b0190612110565b90600052602060002090601f016020900481019282611b235760008555611b69565b82601f10611b3c57805160ff1916838001178555611b69565b82800160010185558215611b69579182015b82811115611b69578251825591602001919060010190611b4e565b50611b75929150611b79565b5090565b5b80821115611b755760008155600101611b7a565b600067ffffffffffffffff80841115611ba957611ba96121bc565b604051601f8501601f19908116603f01168101908282118183101715611bd157611bd16121bc565b81604052809350858152868686011115611bea57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114611c1b57600080fd5b919050565b80358015158114611c1b57600080fd5b600060208284031215611c4257600080fd5b6110ec82611c04565b60008060408385031215611c5e57600080fd5b611c6783611c04565b9150611c7560208401611c04565b90509250929050565b600080600060608486031215611c9357600080fd5b611c9c84611c04565b9250611caa60208501611c04565b9150604084013590509250925092565b60008060008060808587031215611cd057600080fd5b611cd985611c04565b9350611ce760208601611c04565b925060408501359150606085013567ffffffffffffffff811115611d0a57600080fd5b8501601f81018713611d1b57600080fd5b611d2a87823560208401611b8e565b91505092959194509250565b60008060408385031215611d4957600080fd5b611d5283611c04565b9150611c7560208401611c20565b60008060408385031215611d7357600080fd5b611d7c83611c04565b946020939093013593505050565b600060208284031215611d9c57600080fd5b6110ec82611c20565b600060208284031215611db757600080fd5b81356110ec816121d2565b600060208284031215611dd457600080fd5b81516110ec816121d2565b600060208284031215611df157600080fd5b813567ffffffffffffffff811115611e0857600080fd5b8201601f81018413611e1957600080fd5b61141784823560208401611b8e565b600060208284031215611e3a57600080fd5b5035919050565b600060208284031215611e5357600080fd5b5051919050565b60008060408385031215611e6d57600080fd5b82359150611c7560208401611c04565b60008151808452611e958160208601602086016120e4565b601f01601f19169290920160200192915050565b600084516020611ebc8285838a016120e4565b855191840191611ecf8184848a016120e4565b8554920191600090600181811c9080831680611eec57607f831692505b858310811415611f0a57634e487b7160e01b85526022600452602485fd5b808015611f1e5760018114611f2f57611f5c565b60ff19851688528388019550611f5c565b60008b81526020902060005b85811015611f545781548a820152908401908801611f3b565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611fa090830184611e7d565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611fe257835183529284019291840191600101611fc6565b50909695505050505050565b6020815260006110ec6020830184611e7d565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600082198211156120b4576120b461217a565b500190565b6000826120c8576120c8612190565b500490565b6000828210156120df576120df61217a565b500390565b60005b838110156120ff5781810151838201526020016120e7565b8381111561100f5750506000910152565b600181811c9082168061212457607f821691505b6020821081141561214557634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561215f5761215f61217a565b5060010190565b60008261217557612175612190565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146109ef57600080fdfea26469706673582212208383ec9344a528c9a14fd2696141c4594ac1ff579a814125982122b09e6f17b064736f6c63430008070033697066733a2f2f62616679626569663574637770617869343664666368683337786e6e6867656f74726b6265337568336a6f6b757671677a657436736c33666568652f
Deployed ByteCode Sourcemap
39502:4421:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26237:305;;;;;;;;;;-1:-1:-1;26237:305:0;;;;;:::i;:::-;;:::i;:::-;;;8255:14:1;;8248:22;8230:41;;8218:2;8203:18;26237:305:0;;;;;;;;27164:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;28677:171::-;;;;;;;;;;-1:-1:-1;28677:171:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;6916:32:1;;;6898:51;;6886:2;6871:18;28677:171:0;6752:203:1;28194:417:0;;;;;;;;;;-1:-1:-1;28194:417:0;;;;;:::i;:::-;;:::i;:::-;;39942:33;;;;;;;;;;-1:-1:-1;39942:33:0;;;;;;;-1:-1:-1;;;;;39942:33:0;;;42949:100;;;;;;;;;;-1:-1:-1;42949:100:0;;;;;:::i;:::-;;:::i;43055:77::-;;;;;;;;;;-1:-1:-1;43055:77:0;;;;;:::i;:::-;;:::i;40450:89::-;;;;;;;;;;;;;:::i;:::-;;;16274:25:1;;;16262:2;16247:18;40450:89:0;16128:177:1;39980:29:0;;;;;;;;;;-1:-1:-1;39980:29:0;;;;-1:-1:-1;;;;;39980:29:0;;;42386:114;;;;;;;;;;-1:-1:-1;42386:114:0;;;;;:::i;:::-;;:::i;29377:336::-;;;;;;;;;;-1:-1:-1;29377:336:0;;;;;:::i;:::-;;:::i;43138:462::-;;;;;;;;;;;;;:::i;29784:185::-;;;;;;;;;;-1:-1:-1;29784:185:0;;;;;:::i;:::-;;:::i;41317:635::-;;;;;;;;;;-1:-1:-1;41317:635:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;39908:27::-;;;;;;;;;;-1:-1:-1;39908:27:0;;;;;;;;;;;39757:33;;;;;;;;;;;;;:::i;39878:25::-;;;;;;;;;;-1:-1:-1;39878:25:0;;;;;;;;39657:95;;;;;;;;;;;;;:::i;26875:222::-;;;;;;;;;;-1:-1:-1;26875:222:0;;;;;:::i;:::-;;:::i;26606:207::-;;;;;;;;;;-1:-1:-1;26606:207:0;;;;;:::i;:::-;;:::i;6773:103::-;;;;;;;;;;;;;:::i;42843:100::-;;;;;;;;;;-1:-1:-1;42843:100:0;;;;;:::i;:::-;;:::i;6125:87::-;;;;;;;;;;-1:-1:-1;6198:6:0;;-1:-1:-1;;;;;6198:6:0;6125:87;;39834:37;;;;;;;;;;;;;;;;27333:104;;;;;;;;;;;;;:::i;40545:603::-;;;;;;:::i;:::-;;:::i;28920:155::-;;;;;;;;;;-1:-1:-1;28920:155:0;;;;;:::i;:::-;;:::i;42707:130::-;;;;;;;;;;-1:-1:-1;42707:130:0;;;;;:::i;:::-;;:::i;30040:323::-;;;;;;;;;;-1:-1:-1;30040:323:0;;;;;:::i;:::-;;:::i;41958:422::-;;;;;;;;;;-1:-1:-1;41958:422:0;;;;;:::i;:::-;;:::i;39799:30::-;;;;;;;;;;;;;;;;42620:81;;;;;;;;;;-1:-1:-1;42620:81:0;;;;;:::i;:::-;;:::i;42506:108::-;;;;;;;;;;-1:-1:-1;42506:108:0;;;;;:::i;:::-;;:::i;29146:164::-;;;;;;;;;;-1:-1:-1;29146:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;29267:25:0;;;29243:4;29267:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;29146:164;41156:155;;;;;;;;;;-1:-1:-1;41156:155:0;;;;;:::i;:::-;;:::i;7031:201::-;;;;;;;;;;-1:-1:-1;7031:201:0;;;;;:::i;:::-;;:::i;26237:305::-;26339:4;-1:-1:-1;;;;;;26376:40:0;;-1:-1:-1;;;26376:40:0;;:105;;-1:-1:-1;;;;;;;26433:48:0;;-1:-1:-1;;;26433:48:0;26376:105;:158;;;-1:-1:-1;;;;;;;;;;19088:40:0;;;26498:36;26356:178;26237:305;-1:-1:-1;;26237:305:0:o;27164:100::-;27218:13;27251:5;27244:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27164:100;:::o;28677:171::-;28753:7;28773:23;28788:7;28773:14;:23::i;:::-;-1:-1:-1;28816:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;28816:24:0;;28677:171::o;28194:417::-;28275:13;28291:23;28306:7;28291:14;:23::i;:::-;28275:39;;28339:5;-1:-1:-1;;;;;28333:11:0;:2;-1:-1:-1;;;;;28333:11:0;;;28325:57;;;;-1:-1:-1;;;28325:57:0;;14808:2:1;28325:57:0;;;14790:21:1;14847:2;14827:18;;;14820:30;14886:34;14866:18;;;14859:62;-1:-1:-1;;;14937:18:1;;;14930:31;14978:19;;28325:57:0;;;;;;;;;4756:10;-1:-1:-1;;;;;28417:21:0;;;;:62;;-1:-1:-1;28442:37:0;28459:5;4756:10;29146:164;:::i;28442:37::-;28395:174;;;;-1:-1:-1;;;28395:174:0;;12534:2:1;28395:174:0;;;12516:21:1;12573:2;12553:18;;;12546:30;12612:34;12592:18;;;12585:62;12683:32;12663:18;;;12656:60;12733:19;;28395:174:0;12332:426:1;28395:174:0;28582:21;28591:2;28595:7;28582:8;:21::i;:::-;28264:347;28194:417;;:::o;42949:100::-;6011:13;:11;:13::i;:::-;43021:22;;::::1;::::0;:9:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;:::-;;42949:100:::0;:::o;43055:77::-;6011:13;:11;:13::i;:::-;43111:6:::1;:15:::0;;-1:-1:-1;;43111:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;43055:77::o;40450:89::-;40494:7;40517:16;:6;999:14;;907:114;40517:16;40510:23;;40450:89;:::o;42386:114::-;6011:13;:11;:13::i;:::-;42462:18:::1;:32:::0;;-1:-1:-1;;;;;42462:32:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;42462:32:0;;::::1;::::0;;;::::1;::::0;;42386:114::o;29377:336::-;29572:41;4756:10;29605:7;29572:18;:41::i;:::-;29564:100;;;;-1:-1:-1;;;29564:100:0;;;;;;;:::i;:::-;29677:28;29687:4;29693:2;29697:7;29677:9;:28::i;43138:462::-;6011:13;:11;:13::i;:::-;43422:7:::1;43443;6198:6:::0;;-1:-1:-1;;;;;6198:6:0;;6125:87;43443:7:::1;-1:-1:-1::0;;;;;43435:21:0::1;43464;43435:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43421:69;;;43505:2;43497:11;;;::::0;::::1;;43175:425;43138:462::o:0;29784:185::-;29922:39;29939:4;29945:2;29949:7;29922:39;;;;;;;;;;;;:16;:39::i;41317:635::-;41392:16;41420:23;41446:17;41456:6;41446:9;:17::i;:::-;41420:43;;41470:30;41517:15;41503:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41503:30:0;-1:-1:-1;41470:63:0;-1:-1:-1;41565:1:0;41540:22;41609:309;41634:15;41616;:33;:64;;;;;41671:9;;41653:14;:27;;41616:64;41609:309;;;41691:25;41719:23;41727:14;41719:7;:23::i;:::-;41691:51;;41778:6;-1:-1:-1;;;;;41757:27:0;:17;-1:-1:-1;;;;;41757:27:0;;41753:131;;;41830:14;41797:13;41811:15;41797:30;;;;;;;;:::i;:::-;;;;;;;;;;:47;41857:17;;;;:::i;:::-;;;;41753:131;41894:16;;;;:::i;:::-;;;;41682:236;41609:309;;;-1:-1:-1;41933:13:0;;41317:635;-1:-1:-1;;;;41317:635:0:o;39757:33::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;39657:95::-;;;;;;;:::i;26875:222::-;26947:7;26983:16;;;:7;:16;;;;;;-1:-1:-1;;;;;26983:16:0;27018:19;27010:56;;;;-1:-1:-1;;;27010:56:0;;14455:2:1;27010:56:0;;;14437:21:1;14494:2;14474:18;;;14467:30;-1:-1:-1;;;14513:18:1;;;14506:54;14577:18;;27010:56:0;14253:348:1;26606:207:0;26678:7;-1:-1:-1;;;;;26706:19:0;;26698:73;;;;-1:-1:-1;;;26698:73:0;;11766:2:1;26698:73:0;;;11748:21:1;11805:2;11785:18;;;11778:30;11844:34;11824:18;;;11817:62;-1:-1:-1;;;11895:18:1;;;11888:39;11944:19;;26698:73:0;11564:405:1;26698:73:0;-1:-1:-1;;;;;;26789:16:0;;;;;:9;:16;;;;;;;26606:207::o;6773:103::-;6011:13;:11;:13::i;:::-;6838:30:::1;6865:1;6838:18;:30::i;:::-;6773:103::o:0;42843:100::-;6011:13;:11;:13::i;:::-;42915:22;;::::1;::::0;:9:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;27333:104::-:0;27389:13;27422:7;27415:14;;;;;:::i;40545:603::-;40610:11;40284:1;40270:11;:15;:52;;;;;40304:18;;40289:11;:33;;40270:52;40262:85;;;;-1:-1:-1;;;40262:85:0;;10658:2:1;40262:85:0;;;10640:21:1;10697:2;10677:18;;;10670:30;-1:-1:-1;;;10716:18:1;;;10709:50;10776:18;;40262:85:0;10456:344:1;40262:85:0;40396:9;;40381:11;40362:16;:6;999:14;;907:114;40362:16;:30;;;;:::i;:::-;:43;;40354:76;;;;-1:-1:-1;;;40354:76:0;;15210:2:1;40354:76:0;;;15192:21:1;15249:2;15229:18;;;15222:30;-1:-1:-1;;;15268:18:1;;;15261:50;15328:18;;40354:76:0;15008:344:1;40354:76:0;40639:6:::1;::::0;::::1;;40638:7;40630:43;;;::::0;-1:-1:-1;;;40630:43:0;;13687:2:1;40630:43:0::1;::::0;::::1;13669:21:1::0;13726:2;13706:18;;;13699:30;13765:25;13745:18;;;13738:53;13808:18;;40630:43:0::1;13485:347:1::0;40630:43:0::1;40688:21;40698:10;40688:9;:21::i;:::-;:26:::0;40680:66:::1;;;::::0;-1:-1:-1;;;40680:66:0;;15559:2:1;40680:66:0::1;::::0;::::1;15541:21:1::0;15598:2;15578:18;;;15571:30;15637:29;15617:18;;;15610:57;15684:18;;40680:66:0::1;15357:351:1::0;40680:66:0::1;40777:18;::::0;40825:27:::1;::::0;-1:-1:-1;;;40825:27:0;;40841:10:::1;40825:27;::::0;::::1;6898:51:1::0;40777:18:0;;;::::1;-1:-1:-1::0;;;;;40777:18:0::1;::::0;40753:13:::1;::::0;40777:18;;40825:15:::1;::::0;6871:18:1;;40825:27:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40803:49;;40883:1;40868:11;:16;;40859:59;;;::::0;-1:-1:-1;;;40859:59:0;;12176:2:1;40859:59:0::1;::::0;::::1;12158:21:1::0;12215:2;12195:18;;;12188:30;12254:31;12234:18;;;12227:59;12303:18;;40859:59:0::1;11974:353:1::0;40859:59:0::1;40950:14;::::0;40996:28:::1;::::0;-1:-1:-1;;;40996:28:0;;41013:10:::1;40996:28;::::0;::::1;6898:51:1::0;-1:-1:-1;;;;;40950:14:0;;::::1;::::0;40925::::1;::::0;40950;;40996:16:::1;::::0;6871:18:1;;40996:28:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40972:52;;41057:1;41040:13;:18;;41031:64;;;::::0;-1:-1:-1;;;41031:64:0;;8708:2:1;41031:64:0::1;::::0;::::1;8690:21:1::0;;;8727:18;;;8720:30;8786:34;8766:18;;;8759:62;8838:18;;41031:64:0::1;8506:356:1::0;41031:64:0::1;41108:34;41118:10;41130:11;41108:9;:34::i;:::-;40623:525;;;;40545:603:::0;;:::o;28920:155::-;29015:52;4756:10;29048:8;29058;29015:18;:52::i;42707:130::-;6011:13;:11;:13::i;:::-;42791:18:::1;:40:::0;42707:130::o;30040:323::-;30214:41;4756:10;30247:7;30214:18;:41::i;:::-;30206:100;;;;-1:-1:-1;;;30206:100:0;;;;;;;:::i;:::-;30317:38;30331:4;30337:2;30341:7;30350:4;30317:13;:38::i;:::-;30040:323;;;;:::o;41958:422::-;31935:4;31959:16;;;:7;:16;;;;;;42057:13;;-1:-1:-1;;;;;31959:16:0;42082:98;;;;-1:-1:-1;;;42082:98:0;;14039:2:1;42082:98:0;;;14021:21:1;14078:2;14058:18;;;14051:30;14117:34;14097:18;;;14090:62;-1:-1:-1;;;14168:18:1;;;14161:45;14223:19;;42082:98:0;13837:411:1;42082:98:0;42189:28;42220:10;:8;:10::i;:::-;42189:41;;42275:1;42250:14;42244:28;:32;:130;;;;;;;;;;;;;;;;;42312:14;42328:19;:8;:17;:19::i;:::-;42349:9;42295:64;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;42244:130;42237:137;41958:422;-1:-1:-1;;;41958:422:0:o;42620:81::-;6011:13;:11;:13::i;:::-;42678:8:::1;:17:::0;;;::::1;;;;-1:-1:-1::0;;42678:17:0;;::::1;::::0;;;::::1;::::0;;42620:81::o;42506:108::-;6011:13;:11;:13::i;:::-;42579:14:::1;:29:::0;;-1:-1:-1;;;;;;42579:29:0::1;-1:-1:-1::0;;;;;42579:29:0;;;::::1;::::0;;;::::1;::::0;;42506:108::o;41156:155::-;41242:11;40284:1;40270:11;:15;:52;;;;;40304:18;;40289:11;:33;;40270:52;40262:85;;;;-1:-1:-1;;;40262:85:0;;10658:2:1;40262:85:0;;;10640:21:1;10697:2;10677:18;;;10670:30;-1:-1:-1;;;10716:18:1;;;10709:50;10776:18;;40262:85:0;10456:344:1;40262:85:0;40396:9;;40381:11;40362:16;:6;999:14;;907:114;40362:16;:30;;;;:::i;:::-;:43;;40354:76;;;;-1:-1:-1;;;40354:76:0;;15210:2:1;40354:76:0;;;15192:21:1;15249:2;15229:18;;;15222:30;-1:-1:-1;;;15268:18:1;;;15261:50;15328:18;;40354:76:0;15008:344:1;40354:76:0;6011:13:::1;:11;:13::i;:::-;41272:33:::2;41282:9;41293:11;41272:9;:33::i;7031:201::-:0;6011:13;:11;:13::i;:::-;-1:-1:-1;;;;;7120:22:0;::::1;7112:73;;;::::0;-1:-1:-1;;;7112:73:0;;9488:2:1;7112:73:0::1;::::0;::::1;9470:21:1::0;9527:2;9507:18;;;9500:30;9566:34;9546:18;;;9539:62;-1:-1:-1;;;9617:18:1;;;9610:36;9663:19;;7112:73:0::1;9286:402:1::0;7112:73:0::1;7196:28;7215:8;7196:18;:28::i;36652:135::-:0;31935:4;31959:16;;;:7;:16;;;;;;-1:-1:-1;;;;;31959:16:0;36726:53;;;;-1:-1:-1;;;36726:53:0;;14455:2:1;36726:53:0;;;14437:21:1;14494:2;14474:18;;;14467:30;-1:-1:-1;;;14513:18:1;;;14506:54;14577:18;;36726:53:0;14253:348:1;35931:174:0;36006:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;36006:29:0;-1:-1:-1;;;;;36006:29:0;;;;;;;;:24;;36060:23;36006:24;36060:14;:23::i;:::-;-1:-1:-1;;;;;36051:46:0;;;;;;;;;;;35931:174;;:::o;6290:132::-;6198:6;;-1:-1:-1;;;;;6198:6:0;4756:10;6354:23;6346:68;;;;-1:-1:-1;;;6346:68:0;;13326:2:1;6346:68:0;;;13308:21:1;;;13345:18;;;13338:30;13404:34;13384:18;;;13377:62;13456:18;;6346:68:0;13124:356:1;32164:264:0;32257:4;32274:13;32290:23;32305:7;32290:14;:23::i;:::-;32274:39;;32343:5;-1:-1:-1;;;;;32332:16:0;:7;-1:-1:-1;;;;;32332:16:0;;:52;;;-1:-1:-1;;;;;;29267:25:0;;;29243:4;29267:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;32352:32;32332:87;;;;32412:7;-1:-1:-1;;;;;32388:31:0;:20;32400:7;32388:11;:20::i;:::-;-1:-1:-1;;;;;32388:31:0;;32332:87;32324:96;32164:264;-1:-1:-1;;;;32164:264:0:o;35187:625::-;35346:4;-1:-1:-1;;;;;35319:31:0;:23;35334:7;35319:14;:23::i;:::-;-1:-1:-1;;;;;35319:31:0;;35311:81;;;;-1:-1:-1;;;35311:81:0;;9895:2:1;35311:81:0;;;9877:21:1;9934:2;9914:18;;;9907:30;9973:34;9953:18;;;9946:62;-1:-1:-1;;;10024:18:1;;;10017:35;10069:19;;35311:81:0;9693:401:1;35311:81:0;-1:-1:-1;;;;;35411:16:0;;35403:65;;;;-1:-1:-1;;;35403:65:0;;11007:2:1;35403:65:0;;;10989:21:1;11046:2;11026:18;;;11019:30;11085:34;11065:18;;;11058:62;-1:-1:-1;;;11136:18:1;;;11129:34;11180:19;;35403:65:0;10805:400:1;35403:65:0;35585:29;35602:1;35606:7;35585:8;:29::i;:::-;-1:-1:-1;;;;;35627:15:0;;;;;;:9;:15;;;;;:20;;35646:1;;35627:15;:20;;35646:1;;35627:20;:::i;:::-;;;;-1:-1:-1;;;;;;;35658:13:0;;;;;;:9;:13;;;;;:18;;35675:1;;35658:13;:18;;35675:1;;35658:18;:::i;:::-;;;;-1:-1:-1;;35687:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;35687:21:0;-1:-1:-1;;;;;35687:21:0;;;;;;;;;35726:27;;35687:16;;35726:27;;;;;;;28264:347;28194:417;;:::o;7392:191::-;7485:6;;;-1:-1:-1;;;;;7502:17:0;;;-1:-1:-1;;;;;;7502:17:0;;;;;;;7535:40;;7485:6;;;7502:17;7485:6;;7535:40;;7466:16;;7535:40;7455:128;7392:191;:::o;43606:204::-;43686:9;43681:124;43705:11;43701:1;:15;43681:124;;;43732:18;:6;1118:19;;1136:1;1118:19;;;1029:127;43732:18;43759:38;43769:9;43780:16;:6;999:14;;907:114;43780:16;43759:9;:38::i;:::-;43718:3;;;;:::i;:::-;;;;43681:124;;36248:315;36403:8;-1:-1:-1;;;;;36394:17:0;:5;-1:-1:-1;;;;;36394:17:0;;;36386:55;;;;-1:-1:-1;;;36386:55:0;;11412:2:1;36386:55:0;;;11394:21:1;11451:2;11431:18;;;11424:30;11490:27;11470:18;;;11463:55;11535:18;;36386:55:0;11210:349:1;36386:55:0;-1:-1:-1;;;;;36452:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;36452:46:0;;;;;;;;;;36514:41;;8230::1;;;36514::0;;8203:18:1;36514:41:0;;;;;;;36248:315;;;:::o;31244:313::-;31400:28;31410:4;31416:2;31420:7;31400:9;:28::i;:::-;31447:47;31470:4;31476:2;31480:7;31489:4;31447:22;:47::i;:::-;31439:110;;;;-1:-1:-1;;;31439:110:0;;;;;;;:::i;43816:104::-;43876:13;43905:9;43898:16;;;;;:::i;1930:723::-;1986:13;2207:10;2203:53;;-1:-1:-1;;2234:10:0;;;;;;;;;;;;-1:-1:-1;;;2234:10:0;;;;;1930:723::o;2203:53::-;2281:5;2266:12;2322:78;2329:9;;2322:78;;2355:8;;;;:::i;:::-;;-1:-1:-1;2378:10:0;;-1:-1:-1;2386:2:0;2378:10;;:::i;:::-;;;2322:78;;;2410:19;2442:6;2432:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2432:17:0;;2410:39;;2460:154;2467:10;;2460:154;;2494:11;2504:1;2494:11;;:::i;:::-;;-1:-1:-1;2563:10:0;2571:2;2563:5;:10;:::i;:::-;2550:24;;:2;:24;:::i;:::-;2537:39;;2520:6;2527;2520:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;2520:56:0;;;;;;;;-1:-1:-1;2591:11:0;2600:2;2591:11;;:::i;:::-;;;2460:154;;32770:110;32846:26;32856:2;32860:7;32846:26;;;;;;;;;;;;:9;:26::i;37351:853::-;37505:4;-1:-1:-1;;;;;37526:13:0;;9118:19;:23;37522:675;;37562:71;;-1:-1:-1;;;37562:71:0;;-1:-1:-1;;;;;37562:36:0;;;;;:71;;4756:10;;37613:4;;37619:7;;37628:4;;37562:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37562:71:0;;;;;;;;-1:-1:-1;;37562:71:0;;;;;;;;;;;;:::i;:::-;;;37558:584;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37803:13:0;;37799:328;;37846:60;;-1:-1:-1;;;37846:60:0;;;;;;;:::i;37799:328::-;38077:6;38071:13;38062:6;38058:2;38054:15;38047:38;37558:584;-1:-1:-1;;;;;;37684:51:0;-1:-1:-1;;;37684:51:0;;-1:-1:-1;37677:58:0;;37522:675;-1:-1:-1;38181:4:0;37351:853;;;;;;:::o;33107:319::-;33236:18;33242:2;33246:7;33236:5;:18::i;:::-;33287:53;33318:1;33322:2;33326:7;33335:4;33287:22;:53::i;:::-;33265:153;;;;-1:-1:-1;;;33265:153:0;;;;;;;:::i;33762:439::-;-1:-1:-1;;;;;33842:16:0;;33834:61;;;;-1:-1:-1;;;33834:61:0;;12965:2:1;33834:61:0;;;12947:21:1;;;12984:18;;;12977:30;13043:34;13023:18;;;13016:62;13095:18;;33834:61:0;12763:356:1;33834:61:0;31935:4;31959:16;;;:7;:16;;;;;;-1:-1:-1;;;;;31959:16:0;:30;33906:58;;;;-1:-1:-1;;;33906:58:0;;10301:2:1;33906:58:0;;;10283:21:1;10340:2;10320:18;;;10313:30;10379;10359:18;;;10352:58;10427:18;;33906:58:0;10099:352:1;33906:58:0;-1:-1:-1;;;;;34035:13:0;;;;;;:9;:13;;;;;:18;;34052:1;;34035:13;:18;;34052:1;;34035:18;:::i;:::-;;;;-1:-1:-1;;34064:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;34064:21:0;-1:-1:-1;;;;;34064:21:0;;;;;;;;34103:33;;34064:16;;;34103:33;;34064:16;;34103:33;43021:22:::1;42949:100:::0;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:70;;813:1;810;803:12;747:70;650:173;;;:::o;828:160::-;893:20;;949:13;;942:21;932:32;;922:60;;978:1;975;968:12;993:186;1052:6;1105:2;1093:9;1084:7;1080:23;1076:32;1073:52;;;1121:1;1118;1111:12;1073:52;1144:29;1163:9;1144:29;:::i;1184:260::-;1252:6;1260;1313:2;1301:9;1292:7;1288:23;1284:32;1281:52;;;1329:1;1326;1319:12;1281:52;1352:29;1371:9;1352:29;:::i;:::-;1342:39;;1400:38;1434:2;1423:9;1419:18;1400:38;:::i;:::-;1390:48;;1184:260;;;;;:::o;1449:328::-;1526:6;1534;1542;1595:2;1583:9;1574:7;1570:23;1566:32;1563:52;;;1611:1;1608;1601:12;1563:52;1634:29;1653:9;1634:29;:::i;:::-;1624:39;;1682:38;1716:2;1705:9;1701:18;1682:38;:::i;:::-;1672:48;;1767:2;1756:9;1752:18;1739:32;1729:42;;1449:328;;;;;:::o;1782:666::-;1877:6;1885;1893;1901;1954:3;1942:9;1933:7;1929:23;1925:33;1922:53;;;1971:1;1968;1961:12;1922:53;1994:29;2013:9;1994:29;:::i;:::-;1984:39;;2042:38;2076:2;2065:9;2061:18;2042:38;:::i;:::-;2032:48;;2127:2;2116:9;2112:18;2099:32;2089:42;;2182:2;2171:9;2167:18;2154:32;2209:18;2201:6;2198:30;2195:50;;;2241:1;2238;2231:12;2195:50;2264:22;;2317:4;2309:13;;2305:27;-1:-1:-1;2295:55:1;;2346:1;2343;2336:12;2295:55;2369:73;2434:7;2429:2;2416:16;2411:2;2407;2403:11;2369:73;:::i;:::-;2359:83;;;1782:666;;;;;;;:::o;2453:254::-;2518:6;2526;2579:2;2567:9;2558:7;2554:23;2550:32;2547:52;;;2595:1;2592;2585:12;2547:52;2618:29;2637:9;2618:29;:::i;:::-;2608:39;;2666:35;2697:2;2686:9;2682:18;2666:35;:::i;2712:254::-;2780:6;2788;2841:2;2829:9;2820:7;2816:23;2812:32;2809:52;;;2857:1;2854;2847:12;2809:52;2880:29;2899:9;2880:29;:::i;:::-;2870:39;2956:2;2941:18;;;;2928:32;;-1:-1:-1;;;2712:254:1:o;2971:180::-;3027:6;3080:2;3068:9;3059:7;3055:23;3051:32;3048:52;;;3096:1;3093;3086:12;3048:52;3119:26;3135:9;3119:26;:::i;3156:245::-;3214:6;3267:2;3255:9;3246:7;3242:23;3238:32;3235:52;;;3283:1;3280;3273:12;3235:52;3322:9;3309:23;3341:30;3365:5;3341:30;:::i;3406:249::-;3475:6;3528:2;3516:9;3507:7;3503:23;3499:32;3496:52;;;3544:1;3541;3534:12;3496:52;3576:9;3570:16;3595:30;3619:5;3595:30;:::i;3660:450::-;3729:6;3782:2;3770:9;3761:7;3757:23;3753:32;3750:52;;;3798:1;3795;3788:12;3750:52;3838:9;3825:23;3871:18;3863:6;3860:30;3857:50;;;3903:1;3900;3893:12;3857:50;3926:22;;3979:4;3971:13;;3967:27;-1:-1:-1;3957:55:1;;4008:1;4005;3998:12;3957:55;4031:73;4096:7;4091:2;4078:16;4073:2;4069;4065:11;4031:73;:::i;4115:180::-;4174:6;4227:2;4215:9;4206:7;4202:23;4198:32;4195:52;;;4243:1;4240;4233:12;4195:52;-1:-1:-1;4266:23:1;;4115:180;-1:-1:-1;4115:180:1:o;4300:184::-;4370:6;4423:2;4411:9;4402:7;4398:23;4394:32;4391:52;;;4439:1;4436;4429:12;4391:52;-1:-1:-1;4462:16:1;;4300:184;-1:-1:-1;4300:184:1:o;4489:254::-;4557:6;4565;4618:2;4606:9;4597:7;4593:23;4589:32;4586:52;;;4634:1;4631;4624:12;4586:52;4670:9;4657:23;4647:33;;4699:38;4733:2;4722:9;4718:18;4699:38;:::i;4748:257::-;4789:3;4827:5;4821:12;4854:6;4849:3;4842:19;4870:63;4926:6;4919:4;4914:3;4910:14;4903:4;4896:5;4892:16;4870:63;:::i;:::-;4987:2;4966:15;-1:-1:-1;;4962:29:1;4953:39;;;;4994:4;4949:50;;4748:257;-1:-1:-1;;4748:257:1:o;5010:1527::-;5234:3;5272:6;5266:13;5298:4;5311:51;5355:6;5350:3;5345:2;5337:6;5333:15;5311:51;:::i;:::-;5425:13;;5384:16;;;;5447:55;5425:13;5384:16;5469:15;;;5447:55;:::i;:::-;5591:13;;5524:20;;;5564:1;;5651;5673:18;;;;5726;;;;5753:93;;5831:4;5821:8;5817:19;5805:31;;5753:93;5894:2;5884:8;5881:16;5861:18;5858:40;5855:167;;;-1:-1:-1;;;5921:33:1;;5977:4;5974:1;5967:15;6007:4;5928:3;5995:17;5855:167;6038:18;6065:110;;;;6189:1;6184:328;;;;6031:481;;6065:110;-1:-1:-1;;6100:24:1;;6086:39;;6145:20;;;;-1:-1:-1;6065:110:1;;6184:328;16383:1;16376:14;;;16420:4;16407:18;;6279:1;6293:169;6307:8;6304:1;6301:15;6293:169;;;6389:14;;6374:13;;;6367:37;6432:16;;;;6324:10;;6293:169;;;6297:3;;6493:8;6486:5;6482:20;6475:27;;6031:481;-1:-1:-1;6528:3:1;;5010:1527;-1:-1:-1;;;;;;;;;;;5010:1527:1:o;6960:488::-;-1:-1:-1;;;;;7229:15:1;;;7211:34;;7281:15;;7276:2;7261:18;;7254:43;7328:2;7313:18;;7306:34;;;7376:3;7371:2;7356:18;;7349:31;;;7154:4;;7397:45;;7422:19;;7414:6;7397:45;:::i;:::-;7389:53;6960:488;-1:-1:-1;;;;;;6960:488:1:o;7453:632::-;7624:2;7676:21;;;7746:13;;7649:18;;;7768:22;;;7595:4;;7624:2;7847:15;;;;7821:2;7806:18;;;7595:4;7890:169;7904:6;7901:1;7898:13;7890:169;;;7965:13;;7953:26;;8034:15;;;;7999:12;;;;7926:1;7919:9;7890:169;;;-1:-1:-1;8076:3:1;;7453:632;-1:-1:-1;;;;;;7453:632:1:o;8282:219::-;8431:2;8420:9;8413:21;8394:4;8451:44;8491:2;8480:9;8476:18;8468:6;8451:44;:::i;8867:414::-;9069:2;9051:21;;;9108:2;9088:18;;;9081:30;9147:34;9142:2;9127:18;;9120:62;-1:-1:-1;;;9213:2:1;9198:18;;9191:48;9271:3;9256:19;;8867:414::o;15713:410::-;15915:2;15897:21;;;15954:2;15934:18;;;15927:30;15993:34;15988:2;15973:18;;15966:62;-1:-1:-1;;;16059:2:1;16044:18;;16037:44;16113:3;16098:19;;15713:410::o;16436:128::-;16476:3;16507:1;16503:6;16500:1;16497:13;16494:39;;;16513:18;;:::i;:::-;-1:-1:-1;16549:9:1;;16436:128::o;16569:120::-;16609:1;16635;16625:35;;16640:18;;:::i;:::-;-1:-1:-1;16674:9:1;;16569:120::o;16694:125::-;16734:4;16762:1;16759;16756:8;16753:34;;;16767:18;;:::i;:::-;-1:-1:-1;16804:9:1;;16694:125::o;16824:258::-;16896:1;16906:113;16920:6;16917:1;16914:13;16906:113;;;16996:11;;;16990:18;16977:11;;;16970:39;16942:2;16935:10;16906:113;;;17037:6;17034:1;17031:13;17028:48;;;-1:-1:-1;;17072:1:1;17054:16;;17047:27;16824:258::o;17087:380::-;17166:1;17162:12;;;;17209;;;17230:61;;17284:4;17276:6;17272:17;17262:27;;17230:61;17337:2;17329:6;17326:14;17306:18;17303:38;17300:161;;;17383:10;17378:3;17374:20;17371:1;17364:31;17418:4;17415:1;17408:15;17446:4;17443:1;17436:15;17300:161;;17087:380;;;:::o;17472:135::-;17511:3;-1:-1:-1;;17532:17:1;;17529:43;;;17552:18;;:::i;:::-;-1:-1:-1;17599:1:1;17588:13;;17472:135::o;17612:112::-;17644:1;17670;17660:35;;17675:18;;:::i;:::-;-1:-1:-1;17709:9:1;;17612:112::o;17729:127::-;17790:10;17785:3;17781:20;17778:1;17771:31;17821:4;17818:1;17811:15;17845:4;17842:1;17835:15;17861:127;17922:10;17917:3;17913:20;17910:1;17903:31;17953:4;17950:1;17943:15;17977:4;17974:1;17967:15;17993:127;18054:10;18049:3;18045:20;18042:1;18035:31;18085:4;18082:1;18075:15;18109:4;18106:1;18099:15;18125:127;18186:10;18181:3;18177:20;18174:1;18167:31;18217:4;18214:1;18207:15;18241:4;18238:1;18231:15;18257:131;-1:-1:-1;;;;;;18331:32:1;;18321:43;;18311:71;;18378:1;18375;18368:12
Swarm Source
ipfs://8383ec9344a528c9a14fd2696141c4594ac1ff579a814125982122b09e6f17b0
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Validator ID :
0 FTM
Amount Staked
0
Amount Delegated
0
Staking Total
0
Staking Start Epoch
0
Staking Start Time
0
Proof of Importance
0
Origination Score
0
Validation Score
0
Active
0
Online
0
Downtime
0 s
Address | Amount | claimed Rewards | Created On Epoch | Created On |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.