Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
1,118 EGGS
Holders
399
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 EGGSLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
EGGTOMATONS
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.10; abstract contract MINTPASS { function ownerOf(uint256 tokenId) public virtual view returns (address); function tokenOfOwnerByIndex(address owner, uint256 index) public virtual view returns (uint256); function balanceOf(address owner) external virtual view returns (uint256 balance); } import './ERC721Enumerable.sol'; import './Ownable.sol'; import './Strings.sol'; import './Payment.sol'; import './Guard.sol'; contract EGGTOMATONS is ERC721Enumerable, Ownable, Payment, Guard { using Strings for uint256; string public baseURI; MINTPASS private mintpass; //settings uint256 public maxSupply = 7007; uint256 public mintPassReserve = 500; bool public mintpassStatus = false; bool public whitelistStatus = false; bool public publicStatus = false; mapping(address => uint256) public onWhitelist; uint256[] storeClaim; //prices uint256 private priceMP = 0.04 ether; uint256 private priceWL = 0.04 ether; uint256 private priceP1 = 0.05 ether; uint256 private priceP2 = 0.045 ether; uint256 private priceP3 = 0.04 ether; //maxmint uint256 public maxMP = 10; uint256 public maxWL = 10; uint256 public maxP = 10; //shares address[] private addressList = [ 0xa66FdBCf132c504705aaaE75B117445424563D9d, 0xf7CE172267d241fC58d8594bc54Ff0D4b6c9fd43, 0x8D921f72dB4e3ddA7F1B231a42b7E83da7938f58, 0x10210fBa0f2d584F764C230006FA56FbB94beb31, 0xEcc03efB7C0A7BD09A5cC7e954Ac42E8f949A0B5 ]; uint[] private shareList = [20,20,20,35,5]; //token constructor( string memory _name, string memory _symbol, string memory _initBaseURI, address mintpassContractAddress ) ERC721(_name, _symbol) Payment(addressList, shareList){ setURI(_initBaseURI); mintpass = MINTPASS(mintpassContractAddress); } // public minting function mintPublic(uint256 _tokenAmount) public payable { uint256 s = totalSupply(); uint256 wl = onWhitelist[msg.sender]; uint b = mintpass.balanceOf(msg.sender); // MINTPASS balance require(publicStatus, "Public sale is not active" ); require(_tokenAmount > 0, "Mint more than 0" ); require(_tokenAmount <= maxP, "Mint less"); require( s + _tokenAmount <= maxSupply - mintPassReserve, "Mint less"); //mint pass or whitelist if (b>0) { require(msg.value >= priceMP * _tokenAmount, "ETH input is wrong"); } else if (wl>0){ require(msg.value >= priceWL * _tokenAmount, "ETH input is wrong"); } //public else{ if (_tokenAmount < 5){ require(msg.value >= priceP1 * _tokenAmount, "ETH input is wrong"); } if (_tokenAmount > 4 && _tokenAmount < 10){ require(msg.value >= priceP2 * _tokenAmount, "ETH input is wrong"); } if (_tokenAmount == 10){ require(msg.value >= priceP3 * _tokenAmount, "ETH input is wrong"); } } for (uint256 i = 0; i < _tokenAmount; ++i) { _safeMint(msg.sender, s + i, ""); } delete s; delete b; } // mintpass minting function mintMintPass(uint256 _tokenAmount) public payable { uint b = mintpass.balanceOf(msg.sender); // MINTPASS balance uint256 s = totalSupply(); require(mintpassStatus, "Mint pass is not active" ); require(b > 0, "You need a mint pass"); require( _tokenAmount <= maxMP, "Mint less"); require( s + _tokenAmount <= maxSupply - mintPassReserve, "Mint less"); require(msg.value >= priceMP * _tokenAmount, "ETH input is wrong"); delete b; for (uint256 i = 0; i < _tokenAmount ; ++i) { _safeMint(msg.sender, s + i, ""); } delete s; } //check if claim function checktheclaim(uint256 n) public view returns (bool) { for (uint256 i = 0; i < storeClaim.length; i++) { if (storeClaim[i] == n) { return true; } } return false; } // mintpass free claim function freeclaim(uint256 tokenID) public { uint256 s = totalSupply(); require(mintpassStatus, "Mint pass is not active" ); require( s <= maxSupply, "Mint less"); require( mintpass.ownerOf(tokenID) == msg.sender, "You don't own this token"); //must be owner require(checktheclaim(tokenID) == false); //must not be claimed already //mint _safeMint(msg.sender, s, ""); storeClaim.push(tokenID); delete s; } // whitelist minting function mintWhitelist(uint256 _tokenAmount) public payable { uint256 s = totalSupply(); uint256 wl = onWhitelist[msg.sender]; require(whitelistStatus, "Whitelist is not active" ); require(_tokenAmount > 0, "Mint more than 0" ); require(_tokenAmount <= maxWL, "Mint less"); require( s + _tokenAmount <= maxSupply - mintPassReserve, "Mint less"); require(msg.value >= priceWL * _tokenAmount, "ETH input is wrong"); require(wl > 0); delete wl; for (uint256 i = 0; i < _tokenAmount; ++i) { _safeMint(msg.sender, s + i, ""); } delete s; } // admin minting function gift(uint[] calldata gifts, address[] calldata recipient) external onlyOwner{ require(gifts.length == recipient.length); uint g = 0; uint256 s = totalSupply(); for(uint i = 0; i < gifts.length; ++i){ g += gifts[i]; } require( s + g <= maxSupply, "Too many" ); delete g; for(uint i = 0; i < recipient.length; ++i){ for(uint j = 0; j < gifts[i]; ++j){ _safeMint( recipient[i], s++, "" ); } } delete s; } // admin functionality function whitelistSet(address[] calldata _addresses) public onlyOwner { for(uint256 i; i < _addresses.length; i++){ onWhitelist[_addresses[i]] = maxWL; } } //read metadata function _baseURI() internal view virtual returns (string memory) { return baseURI; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(tokenId <= maxSupply); string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, tokenId.toString())) : ""; } //price switch function setPriceMP(uint256 _newPrice) public onlyOwner { priceMP = _newPrice; } function setPriceWL(uint256 _newPrice) public onlyOwner { priceWL = _newPrice; } function setPriceP1(uint256 _newPrice) public onlyOwner { priceP1 = _newPrice; } function setPriceP2(uint256 _newPrice) public onlyOwner { priceP2 = _newPrice; } function setPriceP3(uint256 _newPrice) public onlyOwner { priceP3 = _newPrice; } //max switch function setMaxMP(uint256 _newMaxMintAmount) public onlyOwner { maxMP = _newMaxMintAmount; } function setMaxWL(uint256 _newMaxMintAmount) public onlyOwner { maxWL = _newMaxMintAmount; } function setMaxP(uint256 _newMaxMintAmount) public onlyOwner { maxP = _newMaxMintAmount; } function changeReserve(uint256 _newReserveAmount) public onlyOwner { mintPassReserve = _newReserveAmount; } //write metadata function setURI(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } //onoff switch function setMP(bool _mpstatus) public onlyOwner { mintpassStatus = _mpstatus; } function setWL(bool _wlstatus) public onlyOwner { whitelistStatus = _wlstatus; } function setP(bool _pstatus) public onlyOwner { publicStatus = _pstatus; } function withdraw() public payable onlyOwner { (bool success, ) = payable(msg.sender).call{value: address(this).balance}(""); require(success); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC165.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; } }
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.10; import "./IERC721.sol"; import "./IERC721Receiver.sol"; import "./IERC721Metadata.sol"; import "./Address.sol"; import "./Context.sol"; import "./ERC165.sol"; abstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; string private _name; string private _symbol; address[] internal _owners; mapping(uint256 => address) private _tokenApprovals; mapping(address => mapping(address => bool)) private _operatorApprovals; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); uint count = 0; uint length = _owners.length; for( uint i = 0; i < length; ++i ){ if( owner == _owners[i] ){ ++count; } } delete length; return count; } function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } 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 owner nor approved for all" ); _approve(to, tokenId); } function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } 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"); } function _exists(uint256 tokenId) internal view virtual returns (bool) { return tokenId < _owners.length && _owners[tokenId] != address(0); } function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } 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" ); } 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); _owners.push(to); emit Transfer(address(0), to, tokenId); } function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _owners[tokenId] = address(0); emit Transfer(owner, address(0), tokenId); } function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _owners[tokenId] = to; emit Transfer(from, to, tokenId); } function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } 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 { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} }
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.10; import "./ERC721.sol"; import "./IERC721Enumerable.sol"; abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256 tokenId) { require(index < ERC721.balanceOf(owner), "ERC721Enum: owner ioob"); uint count; for( uint i; i < _owners.length; ++i ){ if( owner == _owners[i] ){ if( count == index ) return i; else ++count; } } require(false, "ERC721Enum: owner ioob"); } function tokensOfOwner(address owner) public view returns (uint256[] memory) { require(0 < ERC721.balanceOf(owner), "ERC721Enum: owner ioob"); uint256 tokenCount = balanceOf(owner); uint256[] memory tokenIds = new uint256[](tokenCount); for (uint256 i = 0; i < tokenCount; i++) { tokenIds[i] = tokenOfOwnerByIndex(owner, i); } return tokenIds; } function totalSupply() public view virtual override returns (uint256) { return _owners.length; } function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enum: global ioob"); return index; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @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 Guard { // 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 make it call a * `private` function that does the actual work. */ modifier noRentry() { // 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; } }
// SPDX-License-Identifier: MIT 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); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); }
// SPDX-License-Identifier: MIT 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 `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./Address.sol"; import "./Context.sol"; import "./SafeMath.sol"; /** * @title PaymentSplitter * @dev This contract allows to split Ether payments among a group of accounts. The sender does not need to be aware * that the Ether will be split in this way, since it is handled transparently by the contract. * * The split can be in equal parts or in any other arbitrary proportion. The way this is specified is by assigning each * account to a number of shares. Of all the Ether that this contract receives, each account will then be able to claim * an amount proportional to the percentage of total shares they were assigned. * * `PaymentSplitter` follows a _pull payment_ model. This means that payments are not automatically forwarded to the * accounts but kept in this contract, and the actual transfer is triggered as a separate step by calling the {release} * function. */ contract Payment is Context { event PayeeAdded(address account, uint256 shares); event PaymentReleased(address to, uint256 amount); event PaymentReceived(address from, uint256 amount); uint256 private _totalShares; uint256 private _totalReleased; mapping(address => uint256) private _shares; mapping(address => uint256) private _released; address[] private _payees; /** * @dev Creates an instance of `PaymentSplitter` where each account in `payees` is assigned the number of shares at * the matching position in the `shares` array. * * All addresses in `payees` must be non-zero. Both arrays must have the same non-zero length, and there must be no * duplicates in `payees`. */ constructor(address[] memory payees, uint256[] memory shares_) payable { require(payees.length == shares_.length, "PaymentSplitter: payees and shares length mismatch"); require(payees.length > 0, "PaymentSplitter: no payees"); for (uint256 i = 0; i < payees.length; i++) { _addPayee(payees[i], shares_[i]); } } /** * @dev The Ether received will be logged with {PaymentReceived} events. Note that these events are not fully * reliable: it's possible for a contract to receive Ether without triggering this function. This only affects the * reliability of the events, and not the actual splitting of Ether. * * To learn more about this see the Solidity documentation for * https://solidity.readthedocs.io/en/latest/contracts.html#fallback-function[fallback * functions]. */ receive() external payable virtual { emit PaymentReceived(_msgSender(), msg.value); } /** * @dev Getter for the total shares held by payees. */ function totalShares() public view returns (uint256) { return _totalShares; } /** * @dev Getter for the total amount of Ether already released. */ function totalReleased() public view returns (uint256) { return _totalReleased; } /** * @dev Getter for the amount of shares held by an account. */ function shares(address account) public view returns (uint256) { return _shares[account]; } /** * @dev Getter for the amount of Ether already released to a payee. */ function released(address account) public view returns (uint256) { return _released[account]; } /** * @dev Getter for the address of the payee number `index`. */ function payee(uint256 index) public view returns (address) { return _payees[index]; } /** * @dev Triggers a transfer to `account` of the amount of Ether they are owed, according to their percentage of the * total shares and their previous withdrawals. */ function release(address payable account) public virtual { require(_shares[account] > 0, "PaymentSplitter: account has no shares"); uint256 totalReceived = address(this).balance + _totalReleased; uint256 payment = (totalReceived * _shares[account]) / _totalShares - _released[account]; require(payment != 0, "PaymentSplitter: account is not due payment"); _released[account] = _released[account] + payment; _totalReleased = _totalReleased + payment; Address.sendValue(account, payment); emit PaymentReleased(account, payment); } /** * @dev Add a new payee to the contract. * @param account The address of the payee to add. * @param shares_ The number of shares owned by the payee. */ function _addPayee(address account, uint256 shares_) private { require(account != address(0), "PaymentSplitter: account is the zero address"); require(shares_ > 0, "PaymentSplitter: shares are 0"); require(_shares[account] == 0, "PaymentSplitter: account already has shares"); _payees.push(account); _shares[account] = shares_; _totalShares = _totalShares + shares_; emit PayeeAdded(account, shares_); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @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); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"},{"internalType":"address","name":"mintpassContractAddress","type":"address"}],"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":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"PayeeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReleased","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":[{"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":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newReserveAmount","type":"uint256"}],"name":"changeReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"}],"name":"checktheclaim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"freeclaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"gifts","type":"uint256[]"},{"internalType":"address[]","name":"recipient","type":"address[]"}],"name":"gift","outputs":[],"stateMutability":"nonpayable","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":"maxMP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"mintMintPass","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPassReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"mintPublic","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"mintWhitelist","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintpassStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"onWhitelist","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"payee","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_mpstatus","type":"bool"}],"name":"setMP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxMintAmount","type":"uint256"}],"name":"setMaxMP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxMintAmount","type":"uint256"}],"name":"setMaxP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxMintAmount","type":"uint256"}],"name":"setMaxWL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_pstatus","type":"bool"}],"name":"setP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPriceMP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPriceP1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPriceP2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPriceP3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPriceWL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_wlstatus","type":"bool"}],"name":"setWL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"whitelistSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
611b5f600e556101f4600f556010805462ffffff19169055668e1bc9bf0400006013819055601481905566b1a2bc2ec50000601555669fdf42f6e48000601655601755600a60188190556019819055601a5561012060405273a66fdbcf132c504705aaae75b117445424563d9d608090815273f7ce172267d241fc58d8594bc54ff0d4b6c9fd4360a052738d921f72db4e3dda7f1b231a42b7e83da7938f5860c0527310210fba0f2d584f764c230006fa56fbb94beb3160e05273ecc03efb7c0a7bd09a5cc7e954ac42e8f949a0b561010052620000e290601b90600562000672565b506040805160a08101825260148082526020820181905291810191909152602360608201526005608082018190526200011e91601c91620006dc565b503480156200012c57600080fd5b5060405162004c1b38038062004c1b8339810160408190526200014f9162000880565b601b805480602002602001604051908101604052809291908181526020018280548015620001a757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000188575b5050505050601c805480602002602001604051908101604052809291908181526020018280548015620001fa57602002820191906000526020600020905b815481526020019060010190808311620001e5575b5050885189935088925062000218915060009060208501906200071f565b5080516200022e9060019060208401906200071f565b5050506200024b62000245620003b960201b60201c565b620003bd565b8051825114620002bd5760405162461bcd60e51b815260206004820152603260248201527f5061796d656e7453706c69747465723a2070617965657320616e6420736861726044820152710cae640d8cadccee8d040dad2e6dac2e8c6d60731b60648201526084015b60405180910390fd5b6000825111620003105760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e7453706c69747465723a206e6f207061796565730000000000006044820152606401620002b4565b60005b82518110156200037c576200036783828151811062000336576200033662000933565b602002602001015183838151811062000353576200035362000933565b60200260200101516200040f60201b60201c565b8062000373816200095f565b91505062000313565b50506001600b55506200038f82620005fd565b600d80546001600160a01b0319166001600160a01b039290921691909117905550620009d5915050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166200047c5760405162461bcd60e51b815260206004820152602c60248201527f5061796d656e7453706c69747465723a206163636f756e74206973207468652060448201526b7a65726f206164647265737360a01b6064820152608401620002b4565b60008111620004ce5760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e7453706c69747465723a207368617265732061726520300000006044820152606401620002b4565b6001600160a01b038216600090815260086020526040902054156200054a5760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e7420616c726561647960448201526a206861732073686172657360a81b6064820152608401620002b4565b600a8054600181019091557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b0384169081179091556000908152600860205260409020819055600654620005b49082906200097d565b600655604080516001600160a01b0384168152602081018390527f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac910160405180910390a15050565b6005546001600160a01b03163314620006595760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620002b4565b80516200066e90600c9060208401906200071f565b5050565b828054828255906000526020600020908101928215620006ca579160200282015b82811115620006ca57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000693565b50620006d89291506200079c565b5090565b828054828255906000526020600020908101928215620006ca579160200282015b82811115620006ca578251829060ff16905591602001919060010190620006fd565b8280546200072d9062000998565b90600052602060002090601f016020900481019282620007515760008555620006ca565b82601f106200076c57805160ff1916838001178555620006ca565b82800160010185558215620006ca579182015b82811115620006ca5782518255916020019190600101906200077f565b5b80821115620006d857600081556001016200079d565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620007db57600080fd5b81516001600160401b0380821115620007f857620007f8620007b3565b604051601f8301601f19908116603f01168101908282118183101715620008235762000823620007b3565b816040528381526020925086838588010111156200084057600080fd5b600091505b8382101562000864578582018301518183018401529082019062000845565b83821115620008765760008385830101525b9695505050505050565b600080600080608085870312156200089757600080fd5b84516001600160401b0380821115620008af57600080fd5b620008bd88838901620007c9565b95506020870151915080821115620008d457600080fd5b620008e288838901620007c9565b94506040870151915080821115620008f957600080fd5b506200090887828801620007c9565b606087015190935090506001600160a01b03811681146200092857600080fd5b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141562000976576200097662000949565b5060010190565b6000821982111562000993576200099362000949565b500190565b600181811c90821680620009ad57607f821691505b60208210811415620009cf57634e487b7160e01b600052602260045260246000fd5b50919050565b61423680620009e56000396000f3fe60806040526004361061037a5760003560e01c806384a303d6116101d1578063bd986a2c11610102578063e33b7de3116100a0578063f3dac1ca1161006f578063f3dac1ca14610abb578063f457783614610ad1578063f7c7bb0114610af1578063f91798b114610b0457600080fd5b8063e33b7de314610a1d578063e985e9c514610a32578063efd0cbf914610a88578063f2fde38b14610a9b57600080fd5b8063ce7c2ac2116100dc578063ce7c2ac21461098e578063d5abeb01146109d1578063d6671a4f146109e7578063e00cd181146109fd57600080fd5b8063bd986a2c14610938578063c87b56dd14610958578063cc2f10d41461097857600080fd5b806396ea3a471161016f5780639f2dee15116101495780639f2dee15146108be578063a22cb465146108d8578063b5b062bf146108f8578063b88d4fde1461091857600080fd5b806396ea3a471461083c5780639852595c1461085c5780639ddf7ad31461089f57600080fd5b80638b83209b116101ab5780638b83209b146107bc5780638da5cb5b146107dc57806392787b7a1461080757806395d89b411461082757600080fd5b806384a303d61461075c578063863bbf951461077c5780638825adb71461079c57600080fd5b806342842e0e116102ab5780636352211e11610249578063715018a611610223578063715018a6146106e45780637fcff5b6146106f957806381d8488f1461070f5780638462151c1461072f57600080fd5b80636352211e1461068f5780636c0360eb146106af57806370a08231146106c457600080fd5b80634f6ccce7116102855780634f6ccce71461060f57806351e8ce8f1461062f5780635841a0301461064f578063609452d61461066f57600080fd5b806342842e0e146105bc5780634618163e146105dc5780634e4a63dd146105ef57600080fd5b806318160ddd1161031857806323b872dd116102f257806323b872dd1461055f5780632f745c591461057f5780633a98ef391461059f5780633ccfd60b146105b457600080fd5b806318160ddd146104f357806319165587146105125780631d6086591461053257600080fd5b8063081812fc11610354578063081812fc1461044e578063095ea7b3146104935780630f4464a3146104b357806317db12bf146104d357600080fd5b806301ffc9a7146103d557806302fe53051461040a57806306fdde031461042c57600080fd5b366103d0577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be770336040805173ffffffffffffffffffffffffffffffffffffffff90921682523460208301520160405180910390a1005b600080fd5b3480156103e157600080fd5b506103f56103f0366004613ab4565b610b24565b60405190151581526020015b60405180910390f35b34801561041657600080fd5b5061042a610425366004613b94565b610b80565b005b34801561043857600080fd5b50610441610c03565b6040516104019190613c53565b34801561045a57600080fd5b5061046e610469366004613c66565b610c95565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610401565b34801561049f57600080fd5b5061042a6104ae366004613ca1565b610d3b565b3480156104bf57600080fd5b5061042a6104ce366004613c66565b610e94565b3480156104df57600080fd5b5061042a6104ee366004613c66565b610f00565b3480156104ff57600080fd5b506002545b604051908152602001610401565b34801561051e57600080fd5b5061042a61052d366004613ccd565b61110b565b34801561053e57600080fd5b5061050461054d366004613ccd565b60116020526000908152604090205481565b34801561056b57600080fd5b5061042a61057a366004613cea565b611346565b34801561058b57600080fd5b5061050461059a366004613ca1565b6113cd565b3480156105ab57600080fd5b50600654610504565b61042a6114e9565b3480156105c857600080fd5b5061042a6105d7366004613cea565b6115a8565b61042a6105ea366004613c66565b6115c3565b3480156105fb57600080fd5b5061042a61060a366004613c66565b6117f3565b34801561061b57600080fd5b5061050461062a366004613c66565b61185f565b34801561063b57600080fd5b5061042a61064a366004613c66565b6118bc565b34801561065b57600080fd5b5061042a61066a366004613c66565b611928565b34801561067b57600080fd5b5061042a61068a366004613c66565b611994565b34801561069b57600080fd5b5061046e6106aa366004613c66565b611a00565b3480156106bb57600080fd5b50610441611aad565b3480156106d057600080fd5b506105046106df366004613ccd565b611b3b565b3480156106f057600080fd5b5061042a611c3a565b34801561070557600080fd5b50610504600f5481565b34801561071b57600080fd5b5061042a61072a366004613c66565b611cad565b34801561073b57600080fd5b5061074f61074a366004613ccd565b611d19565b6040516104019190613d2b565b34801561076857600080fd5b5061042a610777366004613d84565b611e13565b34801561078857600080fd5b5061042a610797366004613d84565b611eb2565b3480156107a857600080fd5b506103f56107b7366004613c66565b611f4a565b3480156107c857600080fd5b5061046e6107d7366004613c66565b611fa1565b3480156107e857600080fd5b5060055473ffffffffffffffffffffffffffffffffffffffff1661046e565b34801561081357600080fd5b5061042a610822366004613c66565b611fde565b34801561083357600080fd5b5061044161204a565b34801561084857600080fd5b5061042a610857366004613deb565b612059565b34801561086857600080fd5b50610504610877366004613ccd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526009602052604090205490565b3480156108ab57600080fd5b506010546103f590610100900460ff1681565b3480156108ca57600080fd5b506010546103f59060ff1681565b3480156108e457600080fd5b5061042a6108f3366004613e57565b61221e565b34801561090457600080fd5b5061042a610913366004613c66565b61231b565b34801561092457600080fd5b5061042a610933366004613e8c565b612387565b34801561094457600080fd5b5061042a610953366004613d84565b61240f565b34801561096457600080fd5b50610441610973366004613c66565b6124ad565b34801561098457600080fd5b5061050460195481565b34801561099a57600080fd5b506105046109a9366004613ccd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526008602052604090205490565b3480156109dd57600080fd5b50610504600e5481565b3480156109f357600080fd5b5061050460185481565b348015610a0957600080fd5b5061042a610a18366004613f0c565b61251a565b348015610a2957600080fd5b50600754610504565b348015610a3e57600080fd5b506103f5610a4d366004613f4e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205460ff1690565b61042a610a96366004613c66565b6125f3565b348015610aa757600080fd5b5061042a610ab6366004613ccd565b6129f6565b348015610ac757600080fd5b50610504601a5481565b348015610add57600080fd5b5061042a610aec366004613c66565b612aef565b61042a610aff366004613c66565b612b5b565b348015610b1057600080fd5b506010546103f59062010000900460ff1681565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610b7a5750610b7a82612de4565b92915050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610bec5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b8051610bff90600c9060208401906139f6565b5050565b606060008054610c1290613f87565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3e90613f87565b8015610c8b5780601f10610c6057610100808354040283529160200191610c8b565b820191906000526020600020905b815481529060010190602001808311610c6e57829003601f168201915b5050505050905090565b6000610ca082612ec7565b610d125760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610be3565b5060009081526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610d4682611a00565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610dea5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610be3565b3373ffffffffffffffffffffffffffffffffffffffff82161480610e135750610e138133610a4d565b610e855760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610be3565b610e8f8383612f2b565b505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610efb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b601a55565b6000610f0b60025490565b60105490915060ff16610f605760405162461bcd60e51b815260206004820152601760248201527f4d696e742070617373206973206e6f74206163746976650000000000000000006044820152606401610be3565b600e54811115610fb25760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610be3565b600d546040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101849052339173ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015611021573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110459190613fdb565b73ffffffffffffffffffffffffffffffffffffffff16146110a85760405162461bcd60e51b815260206004820152601860248201527f596f7520646f6e2774206f776e207468697320746f6b656e00000000000000006044820152606401610be3565b6110b182611f4a565b156110bb57600080fd5b6110d5338260405180602001604052806000815250612fcb565b50601280546001810182556000919091527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440155565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600860205260409020546111a35760405162461bcd60e51b815260206004820152602660248201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060448201527f73686172657300000000000000000000000000000000000000000000000000006064820152608401610be3565b6000600754476111b39190614027565b73ffffffffffffffffffffffffffffffffffffffff831660009081526009602090815260408083205460065460089093529083205493945091926111f7908561403f565b61120191906140ab565b61120b91906140bf565b9050806112805760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060448201527f647565207061796d656e740000000000000000000000000000000000000000006064820152608401610be3565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600960205260409020546112b1908290614027565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600960205260409020556007546112e5908290614027565b6007556112f28382613054565b6040805173ffffffffffffffffffffffffffffffffffffffff85168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a1505050565b611350338261317a565b6113c25760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610be3565b610e8f8383836132b6565b60006113d883611b3b565b82106114265760405162461bcd60e51b815260206004820152601660248201527f455243373231456e756d3a206f776e657220696f6f62000000000000000000006044820152606401610be3565b6000805b6002548110156114a05760028181548110611447576114476140d6565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff868116911614156114905783821415611484579150610b7a9050565b61148d82614105565b91505b61149981614105565b905061142a565b5060405162461bcd60e51b815260206004820152601660248201527f455243373231456e756d3a206f776e657220696f6f62000000000000000000006044820152606401610be3565b60055473ffffffffffffffffffffffffffffffffffffffff1633146115505760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b604051600090339047908381818185875af1925050503d8060008114611592576040519150601f19603f3d011682016040523d82523d6000602084013e611597565b606091505b50509050806115a557600080fd5b50565b610e8f83838360405180602001604052806000815250612387565b60006115ce60025490565b3360009081526011602052604090205460105491925090610100900460ff166116395760405162461bcd60e51b815260206004820152601760248201527f57686974656c697374206973206e6f74206163746976650000000000000000006044820152606401610be3565b600083116116895760405162461bcd60e51b815260206004820152601060248201527f4d696e74206d6f7265207468616e2030000000000000000000000000000000006044820152606401610be3565b6019548311156116db5760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610be3565b600f54600e546116eb91906140bf565b6116f58484614027565b11156117435760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610be3565b82601454611751919061403f565b3410156117a05760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610be3565b600081116117ad57600080fd5b506000805b838110156117ed576117dd336117c88386614027565b60405180602001604052806000815250612fcb565b6117e681614105565b90506117b2565b50505050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461185a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b601855565b600061186a60025490565b82106118b85760405162461bcd60e51b815260206004820152601760248201527f455243373231456e756d3a20676c6f62616c20696f6f620000000000000000006044820152606401610be3565b5090565b60055473ffffffffffffffffffffffffffffffffffffffff1633146119235760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b601355565b60055473ffffffffffffffffffffffffffffffffffffffff16331461198f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b601955565b60055473ffffffffffffffffffffffffffffffffffffffff1633146119fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b600f55565b60008060028381548110611a1657611a166140d6565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905080610b7a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610be3565b600c8054611aba90613f87565b80601f0160208091040260200160405190810160405280929190818152602001828054611ae690613f87565b8015611b335780601f10611b0857610100808354040283529160200191611b33565b820191906000526020600020905b815481529060010190602001808311611b1657829003601f168201915b505050505081565b600073ffffffffffffffffffffffffffffffffffffffff8216611bc65760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610be3565b600254600090815b81811015611c315760028181548110611be957611be96140d6565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff86811691161415611c2157611c1e83614105565b92505b611c2a81614105565b9050611bce565b50909392505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611ca15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b611cab6000613485565b565b60055473ffffffffffffffffffffffffffffffffffffffff163314611d145760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b601455565b6060611d2482611b3b565b600010611d735760405162461bcd60e51b815260206004820152601660248201527f455243373231456e756d3a206f776e657220696f6f62000000000000000000006044820152606401610be3565b6000611d7e83611b3b565b905060008167ffffffffffffffff811115611d9b57611d9b613ad1565b604051908082528060200260200182016040528015611dc4578160200160208202803683370190505b50905060005b82811015611e0b57611ddc85826113cd565b828281518110611dee57611dee6140d6565b602090810291909101015280611e0381614105565b915050611dca565b509392505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611e7a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b6010805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314611f195760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6000805b601254811015611f98578260128281548110611f6c57611f6c6140d6565b90600052602060002001541415611f865750600192915050565b80611f9081614105565b915050611f4e565b50600092915050565b6000600a8281548110611fb657611fb66140d6565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1692915050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146120455760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b601555565b606060018054610c1290613f87565b60055473ffffffffffffffffffffffffffffffffffffffff1633146120c05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b8281146120cc57600080fd5b6000806120d860025490565b905060005b8581101561211b578686828181106120f7576120f76140d6565b90506020020135836121099190614027565b925061211481614105565b90506120dd565b50600e546121298383614027565b11156121775760405162461bcd60e51b815260206004820152600860248201527f546f6f206d616e790000000000000000000000000000000000000000000000006044820152606401610be3565b6000915060005b838110156122155760005b87878381811061219b5761219b6140d6565b90506020020135811015612204576121f48686848181106121be576121be6140d6565b90506020020160208101906121d39190613ccd565b846121dd81614105565b955060405180602001604052806000815250612fcb565b6121fd81614105565b9050612189565b5061220e81614105565b905061217e565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff82163314156122845760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610be3565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146123825760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b601755565b612391338361317a565b6124035760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610be3565b6117ed848484846134fc565b60055473ffffffffffffffffffffffffffffffffffffffff1633146124765760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b60108054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b6060600e548211156124be57600080fd5b60006124c8613585565b905060008151116124e85760405180602001604052806000815250612513565b806124f284613594565b60405160200161250392919061413e565b6040516020818303038152906040525b9392505050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146125815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b60005b81811015610e8f57601954601160008585858181106125a5576125a56140d6565b90506020020160208101906125ba9190613ccd565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002055806125eb81614105565b915050612584565b60006125fe60025490565b3360008181526011602052604080822054600d5491517f70a082310000000000000000000000000000000000000000000000000000000081526004810194909452939450909173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a7919061416d565b60105490915062010000900460ff166127025760405162461bcd60e51b815260206004820152601960248201527f5075626c69632073616c65206973206e6f7420616374697665000000000000006044820152606401610be3565b600084116127525760405162461bcd60e51b815260206004820152601060248201527f4d696e74206d6f7265207468616e2030000000000000000000000000000000006044820152606401610be3565b601a548411156127a45760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610be3565b600f54600e546127b491906140bf565b6127be8585614027565b111561280c5760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610be3565b80156128745783601354612820919061403f565b34101561286f5760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610be3565b6129c6565b81156128885783601454612820919061403f565b60058410156128ee578360155461289f919061403f565b3410156128ee5760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610be3565b6004841180156128fe5750600a84105b156129605783601654612911919061403f565b3410156129605760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610be3565b83600a14156129c65783601754612977919061403f565b3410156129c65760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610be3565b60005b848110156129ef576129df336117c88387614027565b6129e881614105565b90506129c9565b5050505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314612a5d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b73ffffffffffffffffffffffffffffffffffffffff8116612ae65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610be3565b6115a581613485565b60055473ffffffffffffffffffffffffffffffffffffffff163314612b565760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b601655565b600d546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bee919061416d565b90506000612bfb60025490565b60105490915060ff16612c505760405162461bcd60e51b815260206004820152601760248201527f4d696e742070617373206973206e6f74206163746976650000000000000000006044820152606401610be3565b60008211612ca05760405162461bcd60e51b815260206004820152601460248201527f596f75206e6565642061206d696e7420706173730000000000000000000000006044820152606401610be3565b601854831115612cf25760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610be3565b600f54600e54612d0291906140bf565b612d0c8483614027565b1115612d5a5760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610be3565b82601354612d68919061403f565b341015612db75760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610be3565b6000915060005b838110156117ed57612dd4336117c88385614027565b612ddd81614105565b9050612dbe565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480612e7757507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610b7a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610b7a565b60025460009082108015610b7a5750600073ffffffffffffffffffffffffffffffffffffffff1660028381548110612f0157612f016140d6565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141592915050565b600081815260036020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190612f8582611a00565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b612fd583836136c6565b612fe26000848484613820565b610e8f5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610be3565b804710156130a45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610be3565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146130fe576040519150601f19603f3d011682016040523d82523d6000602084013e613103565b606091505b5050905080610e8f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610be3565b600061318582612ec7565b6131f75760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610be3565b600061320283611a00565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061327157508373ffffffffffffffffffffffffffffffffffffffff1661325984610c95565b73ffffffffffffffffffffffffffffffffffffffff16145b806132ae575073ffffffffffffffffffffffffffffffffffffffff80821660009081526004602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff166132d682611a00565b73ffffffffffffffffffffffffffffffffffffffff161461335f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e00000000000000000000000000000000000000000000006064820152608401610be3565b73ffffffffffffffffffffffffffffffffffffffff82166133e75760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610be3565b6133f2600082612f2b565b8160028281548110613406576134066140d6565b6000918252602082200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff938416179055604051839285811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a4505050565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6135078484846132b6565b61351384848484613820565b6117ed5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610be3565b6060600c8054610c1290613f87565b6060816135d457505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156135fe57806135e881614105565b91506135f79050600a836140ab565b91506135d8565b60008167ffffffffffffffff81111561361957613619613ad1565b6040519080825280601f01601f191660200182016040528015613643576020820181803683370190505b5090505b84156132ae576136586001836140bf565b9150613665600a86614186565b613670906030614027565b60f81b818381518110613685576136856140d6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506136bf600a866140ab565b9450613647565b73ffffffffffffffffffffffffffffffffffffffff82166137295760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610be3565b61373281612ec7565b1561377f5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610be3565b6002805460018101825560009182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091556040518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600073ffffffffffffffffffffffffffffffffffffffff84163b156139eb576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061389790339089908890889060040161419a565b6020604051808303816000875af19250505080156138f0575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526138ed918101906141e3565b60015b6139a0573d80801561391e576040519150601f19603f3d011682016040523d82523d6000602084013e613923565b606091505b5080516139985760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610be3565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506132ae565b506001949350505050565b828054613a0290613f87565b90600052602060002090601f016020900481019282613a245760008555613a6a565b82601f10613a3d57805160ff1916838001178555613a6a565b82800160010185558215613a6a579182015b82811115613a6a578251825591602001919060010190613a4f565b506118b89291505b808211156118b85760008155600101613a72565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146115a557600080fd5b600060208284031215613ac657600080fd5b813561251381613a86565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115613b1b57613b1b613ad1565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715613b6157613b61613ad1565b81604052809350858152868686011115613b7a57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215613ba657600080fd5b813567ffffffffffffffff811115613bbd57600080fd5b8201601f81018413613bce57600080fd5b6132ae84823560208401613b00565b60005b83811015613bf8578181015183820152602001613be0565b838111156117ed5750506000910152565b60008151808452613c21816020860160208601613bdd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006125136020830184613c09565b600060208284031215613c7857600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146115a557600080fd5b60008060408385031215613cb457600080fd5b8235613cbf81613c7f565b946020939093013593505050565b600060208284031215613cdf57600080fd5b813561251381613c7f565b600080600060608486031215613cff57600080fd5b8335613d0a81613c7f565b92506020840135613d1a81613c7f565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b81811015613d6357835183529284019291840191600101613d47565b50909695505050505050565b80358015158114613d7f57600080fd5b919050565b600060208284031215613d9657600080fd5b61251382613d6f565b60008083601f840112613db157600080fd5b50813567ffffffffffffffff811115613dc957600080fd5b6020830191508360208260051b8501011115613de457600080fd5b9250929050565b60008060008060408587031215613e0157600080fd5b843567ffffffffffffffff80821115613e1957600080fd5b613e2588838901613d9f565b90965094506020870135915080821115613e3e57600080fd5b50613e4b87828801613d9f565b95989497509550505050565b60008060408385031215613e6a57600080fd5b8235613e7581613c7f565b9150613e8360208401613d6f565b90509250929050565b60008060008060808587031215613ea257600080fd5b8435613ead81613c7f565b93506020850135613ebd81613c7f565b925060408501359150606085013567ffffffffffffffff811115613ee057600080fd5b8501601f81018713613ef157600080fd5b613f0087823560208401613b00565b91505092959194509250565b60008060208385031215613f1f57600080fd5b823567ffffffffffffffff811115613f3657600080fd5b613f4285828601613d9f565b90969095509350505050565b60008060408385031215613f6157600080fd5b8235613f6c81613c7f565b91506020830135613f7c81613c7f565b809150509250929050565b600181811c90821680613f9b57607f821691505b60208210811415613fd5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215613fed57600080fd5b815161251381613c7f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561403a5761403a613ff8565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561407757614077613ff8565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826140ba576140ba61407c565b500490565b6000828210156140d1576140d1613ff8565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561413757614137613ff8565b5060010190565b60008351614150818460208801613bdd565b835190830190614164818360208801613bdd565b01949350505050565b60006020828403121561417f57600080fd5b5051919050565b6000826141955761419561407c565b500690565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526141d96080830184613c09565b9695505050505050565b6000602082840312156141f557600080fd5b815161251381613a8656fea26469706673582212205cfa6f0d03a4f792c44f626121e022a3a8b233484a079b80e2037ea4ea2af46764736f6c634300080a0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000e90b0ed5687770659ca1ca76026bdd9cb3863589000000000000000000000000000000000000000000000000000000000000000b454747544f4d41544f4e5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044547475300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004468747470733a2f2f697066732e696f2f697066732f516d6658766a61585671593572374342687459375278684a46474b6f5a5165456368487148326f483441636d5a322f00000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061037a5760003560e01c806384a303d6116101d1578063bd986a2c11610102578063e33b7de3116100a0578063f3dac1ca1161006f578063f3dac1ca14610abb578063f457783614610ad1578063f7c7bb0114610af1578063f91798b114610b0457600080fd5b8063e33b7de314610a1d578063e985e9c514610a32578063efd0cbf914610a88578063f2fde38b14610a9b57600080fd5b8063ce7c2ac2116100dc578063ce7c2ac21461098e578063d5abeb01146109d1578063d6671a4f146109e7578063e00cd181146109fd57600080fd5b8063bd986a2c14610938578063c87b56dd14610958578063cc2f10d41461097857600080fd5b806396ea3a471161016f5780639f2dee15116101495780639f2dee15146108be578063a22cb465146108d8578063b5b062bf146108f8578063b88d4fde1461091857600080fd5b806396ea3a471461083c5780639852595c1461085c5780639ddf7ad31461089f57600080fd5b80638b83209b116101ab5780638b83209b146107bc5780638da5cb5b146107dc57806392787b7a1461080757806395d89b411461082757600080fd5b806384a303d61461075c578063863bbf951461077c5780638825adb71461079c57600080fd5b806342842e0e116102ab5780636352211e11610249578063715018a611610223578063715018a6146106e45780637fcff5b6146106f957806381d8488f1461070f5780638462151c1461072f57600080fd5b80636352211e1461068f5780636c0360eb146106af57806370a08231146106c457600080fd5b80634f6ccce7116102855780634f6ccce71461060f57806351e8ce8f1461062f5780635841a0301461064f578063609452d61461066f57600080fd5b806342842e0e146105bc5780634618163e146105dc5780634e4a63dd146105ef57600080fd5b806318160ddd1161031857806323b872dd116102f257806323b872dd1461055f5780632f745c591461057f5780633a98ef391461059f5780633ccfd60b146105b457600080fd5b806318160ddd146104f357806319165587146105125780631d6086591461053257600080fd5b8063081812fc11610354578063081812fc1461044e578063095ea7b3146104935780630f4464a3146104b357806317db12bf146104d357600080fd5b806301ffc9a7146103d557806302fe53051461040a57806306fdde031461042c57600080fd5b366103d0577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be770336040805173ffffffffffffffffffffffffffffffffffffffff90921682523460208301520160405180910390a1005b600080fd5b3480156103e157600080fd5b506103f56103f0366004613ab4565b610b24565b60405190151581526020015b60405180910390f35b34801561041657600080fd5b5061042a610425366004613b94565b610b80565b005b34801561043857600080fd5b50610441610c03565b6040516104019190613c53565b34801561045a57600080fd5b5061046e610469366004613c66565b610c95565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610401565b34801561049f57600080fd5b5061042a6104ae366004613ca1565b610d3b565b3480156104bf57600080fd5b5061042a6104ce366004613c66565b610e94565b3480156104df57600080fd5b5061042a6104ee366004613c66565b610f00565b3480156104ff57600080fd5b506002545b604051908152602001610401565b34801561051e57600080fd5b5061042a61052d366004613ccd565b61110b565b34801561053e57600080fd5b5061050461054d366004613ccd565b60116020526000908152604090205481565b34801561056b57600080fd5b5061042a61057a366004613cea565b611346565b34801561058b57600080fd5b5061050461059a366004613ca1565b6113cd565b3480156105ab57600080fd5b50600654610504565b61042a6114e9565b3480156105c857600080fd5b5061042a6105d7366004613cea565b6115a8565b61042a6105ea366004613c66565b6115c3565b3480156105fb57600080fd5b5061042a61060a366004613c66565b6117f3565b34801561061b57600080fd5b5061050461062a366004613c66565b61185f565b34801561063b57600080fd5b5061042a61064a366004613c66565b6118bc565b34801561065b57600080fd5b5061042a61066a366004613c66565b611928565b34801561067b57600080fd5b5061042a61068a366004613c66565b611994565b34801561069b57600080fd5b5061046e6106aa366004613c66565b611a00565b3480156106bb57600080fd5b50610441611aad565b3480156106d057600080fd5b506105046106df366004613ccd565b611b3b565b3480156106f057600080fd5b5061042a611c3a565b34801561070557600080fd5b50610504600f5481565b34801561071b57600080fd5b5061042a61072a366004613c66565b611cad565b34801561073b57600080fd5b5061074f61074a366004613ccd565b611d19565b6040516104019190613d2b565b34801561076857600080fd5b5061042a610777366004613d84565b611e13565b34801561078857600080fd5b5061042a610797366004613d84565b611eb2565b3480156107a857600080fd5b506103f56107b7366004613c66565b611f4a565b3480156107c857600080fd5b5061046e6107d7366004613c66565b611fa1565b3480156107e857600080fd5b5060055473ffffffffffffffffffffffffffffffffffffffff1661046e565b34801561081357600080fd5b5061042a610822366004613c66565b611fde565b34801561083357600080fd5b5061044161204a565b34801561084857600080fd5b5061042a610857366004613deb565b612059565b34801561086857600080fd5b50610504610877366004613ccd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526009602052604090205490565b3480156108ab57600080fd5b506010546103f590610100900460ff1681565b3480156108ca57600080fd5b506010546103f59060ff1681565b3480156108e457600080fd5b5061042a6108f3366004613e57565b61221e565b34801561090457600080fd5b5061042a610913366004613c66565b61231b565b34801561092457600080fd5b5061042a610933366004613e8c565b612387565b34801561094457600080fd5b5061042a610953366004613d84565b61240f565b34801561096457600080fd5b50610441610973366004613c66565b6124ad565b34801561098457600080fd5b5061050460195481565b34801561099a57600080fd5b506105046109a9366004613ccd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526008602052604090205490565b3480156109dd57600080fd5b50610504600e5481565b3480156109f357600080fd5b5061050460185481565b348015610a0957600080fd5b5061042a610a18366004613f0c565b61251a565b348015610a2957600080fd5b50600754610504565b348015610a3e57600080fd5b506103f5610a4d366004613f4e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205460ff1690565b61042a610a96366004613c66565b6125f3565b348015610aa757600080fd5b5061042a610ab6366004613ccd565b6129f6565b348015610ac757600080fd5b50610504601a5481565b348015610add57600080fd5b5061042a610aec366004613c66565b612aef565b61042a610aff366004613c66565b612b5b565b348015610b1057600080fd5b506010546103f59062010000900460ff1681565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610b7a5750610b7a82612de4565b92915050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610bec5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b8051610bff90600c9060208401906139f6565b5050565b606060008054610c1290613f87565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3e90613f87565b8015610c8b5780601f10610c6057610100808354040283529160200191610c8b565b820191906000526020600020905b815481529060010190602001808311610c6e57829003601f168201915b5050505050905090565b6000610ca082612ec7565b610d125760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610be3565b5060009081526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610d4682611a00565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610dea5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610be3565b3373ffffffffffffffffffffffffffffffffffffffff82161480610e135750610e138133610a4d565b610e855760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610be3565b610e8f8383612f2b565b505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610efb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b601a55565b6000610f0b60025490565b60105490915060ff16610f605760405162461bcd60e51b815260206004820152601760248201527f4d696e742070617373206973206e6f74206163746976650000000000000000006044820152606401610be3565b600e54811115610fb25760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610be3565b600d546040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101849052339173ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015611021573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110459190613fdb565b73ffffffffffffffffffffffffffffffffffffffff16146110a85760405162461bcd60e51b815260206004820152601860248201527f596f7520646f6e2774206f776e207468697320746f6b656e00000000000000006044820152606401610be3565b6110b182611f4a565b156110bb57600080fd5b6110d5338260405180602001604052806000815250612fcb565b50601280546001810182556000919091527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440155565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600860205260409020546111a35760405162461bcd60e51b815260206004820152602660248201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060448201527f73686172657300000000000000000000000000000000000000000000000000006064820152608401610be3565b6000600754476111b39190614027565b73ffffffffffffffffffffffffffffffffffffffff831660009081526009602090815260408083205460065460089093529083205493945091926111f7908561403f565b61120191906140ab565b61120b91906140bf565b9050806112805760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060448201527f647565207061796d656e740000000000000000000000000000000000000000006064820152608401610be3565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600960205260409020546112b1908290614027565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600960205260409020556007546112e5908290614027565b6007556112f28382613054565b6040805173ffffffffffffffffffffffffffffffffffffffff85168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a1505050565b611350338261317a565b6113c25760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610be3565b610e8f8383836132b6565b60006113d883611b3b565b82106114265760405162461bcd60e51b815260206004820152601660248201527f455243373231456e756d3a206f776e657220696f6f62000000000000000000006044820152606401610be3565b6000805b6002548110156114a05760028181548110611447576114476140d6565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff868116911614156114905783821415611484579150610b7a9050565b61148d82614105565b91505b61149981614105565b905061142a565b5060405162461bcd60e51b815260206004820152601660248201527f455243373231456e756d3a206f776e657220696f6f62000000000000000000006044820152606401610be3565b60055473ffffffffffffffffffffffffffffffffffffffff1633146115505760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b604051600090339047908381818185875af1925050503d8060008114611592576040519150601f19603f3d011682016040523d82523d6000602084013e611597565b606091505b50509050806115a557600080fd5b50565b610e8f83838360405180602001604052806000815250612387565b60006115ce60025490565b3360009081526011602052604090205460105491925090610100900460ff166116395760405162461bcd60e51b815260206004820152601760248201527f57686974656c697374206973206e6f74206163746976650000000000000000006044820152606401610be3565b600083116116895760405162461bcd60e51b815260206004820152601060248201527f4d696e74206d6f7265207468616e2030000000000000000000000000000000006044820152606401610be3565b6019548311156116db5760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610be3565b600f54600e546116eb91906140bf565b6116f58484614027565b11156117435760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610be3565b82601454611751919061403f565b3410156117a05760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610be3565b600081116117ad57600080fd5b506000805b838110156117ed576117dd336117c88386614027565b60405180602001604052806000815250612fcb565b6117e681614105565b90506117b2565b50505050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461185a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b601855565b600061186a60025490565b82106118b85760405162461bcd60e51b815260206004820152601760248201527f455243373231456e756d3a20676c6f62616c20696f6f620000000000000000006044820152606401610be3565b5090565b60055473ffffffffffffffffffffffffffffffffffffffff1633146119235760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b601355565b60055473ffffffffffffffffffffffffffffffffffffffff16331461198f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b601955565b60055473ffffffffffffffffffffffffffffffffffffffff1633146119fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b600f55565b60008060028381548110611a1657611a166140d6565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905080610b7a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610be3565b600c8054611aba90613f87565b80601f0160208091040260200160405190810160405280929190818152602001828054611ae690613f87565b8015611b335780601f10611b0857610100808354040283529160200191611b33565b820191906000526020600020905b815481529060010190602001808311611b1657829003601f168201915b505050505081565b600073ffffffffffffffffffffffffffffffffffffffff8216611bc65760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610be3565b600254600090815b81811015611c315760028181548110611be957611be96140d6565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff86811691161415611c2157611c1e83614105565b92505b611c2a81614105565b9050611bce565b50909392505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611ca15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b611cab6000613485565b565b60055473ffffffffffffffffffffffffffffffffffffffff163314611d145760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b601455565b6060611d2482611b3b565b600010611d735760405162461bcd60e51b815260206004820152601660248201527f455243373231456e756d3a206f776e657220696f6f62000000000000000000006044820152606401610be3565b6000611d7e83611b3b565b905060008167ffffffffffffffff811115611d9b57611d9b613ad1565b604051908082528060200260200182016040528015611dc4578160200160208202803683370190505b50905060005b82811015611e0b57611ddc85826113cd565b828281518110611dee57611dee6140d6565b602090810291909101015280611e0381614105565b915050611dca565b509392505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611e7a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b6010805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314611f195760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6000805b601254811015611f98578260128281548110611f6c57611f6c6140d6565b90600052602060002001541415611f865750600192915050565b80611f9081614105565b915050611f4e565b50600092915050565b6000600a8281548110611fb657611fb66140d6565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1692915050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146120455760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b601555565b606060018054610c1290613f87565b60055473ffffffffffffffffffffffffffffffffffffffff1633146120c05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b8281146120cc57600080fd5b6000806120d860025490565b905060005b8581101561211b578686828181106120f7576120f76140d6565b90506020020135836121099190614027565b925061211481614105565b90506120dd565b50600e546121298383614027565b11156121775760405162461bcd60e51b815260206004820152600860248201527f546f6f206d616e790000000000000000000000000000000000000000000000006044820152606401610be3565b6000915060005b838110156122155760005b87878381811061219b5761219b6140d6565b90506020020135811015612204576121f48686848181106121be576121be6140d6565b90506020020160208101906121d39190613ccd565b846121dd81614105565b955060405180602001604052806000815250612fcb565b6121fd81614105565b9050612189565b5061220e81614105565b905061217e565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff82163314156122845760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610be3565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146123825760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b601755565b612391338361317a565b6124035760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610be3565b6117ed848484846134fc565b60055473ffffffffffffffffffffffffffffffffffffffff1633146124765760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b60108054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b6060600e548211156124be57600080fd5b60006124c8613585565b905060008151116124e85760405180602001604052806000815250612513565b806124f284613594565b60405160200161250392919061413e565b6040516020818303038152906040525b9392505050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146125815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b60005b81811015610e8f57601954601160008585858181106125a5576125a56140d6565b90506020020160208101906125ba9190613ccd565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002055806125eb81614105565b915050612584565b60006125fe60025490565b3360008181526011602052604080822054600d5491517f70a082310000000000000000000000000000000000000000000000000000000081526004810194909452939450909173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a7919061416d565b60105490915062010000900460ff166127025760405162461bcd60e51b815260206004820152601960248201527f5075626c69632073616c65206973206e6f7420616374697665000000000000006044820152606401610be3565b600084116127525760405162461bcd60e51b815260206004820152601060248201527f4d696e74206d6f7265207468616e2030000000000000000000000000000000006044820152606401610be3565b601a548411156127a45760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610be3565b600f54600e546127b491906140bf565b6127be8585614027565b111561280c5760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610be3565b80156128745783601354612820919061403f565b34101561286f5760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610be3565b6129c6565b81156128885783601454612820919061403f565b60058410156128ee578360155461289f919061403f565b3410156128ee5760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610be3565b6004841180156128fe5750600a84105b156129605783601654612911919061403f565b3410156129605760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610be3565b83600a14156129c65783601754612977919061403f565b3410156129c65760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610be3565b60005b848110156129ef576129df336117c88387614027565b6129e881614105565b90506129c9565b5050505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314612a5d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b73ffffffffffffffffffffffffffffffffffffffff8116612ae65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610be3565b6115a581613485565b60055473ffffffffffffffffffffffffffffffffffffffff163314612b565760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be3565b601655565b600d546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bee919061416d565b90506000612bfb60025490565b60105490915060ff16612c505760405162461bcd60e51b815260206004820152601760248201527f4d696e742070617373206973206e6f74206163746976650000000000000000006044820152606401610be3565b60008211612ca05760405162461bcd60e51b815260206004820152601460248201527f596f75206e6565642061206d696e7420706173730000000000000000000000006044820152606401610be3565b601854831115612cf25760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610be3565b600f54600e54612d0291906140bf565b612d0c8483614027565b1115612d5a5760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610be3565b82601354612d68919061403f565b341015612db75760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610be3565b6000915060005b838110156117ed57612dd4336117c88385614027565b612ddd81614105565b9050612dbe565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480612e7757507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610b7a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610b7a565b60025460009082108015610b7a5750600073ffffffffffffffffffffffffffffffffffffffff1660028381548110612f0157612f016140d6565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141592915050565b600081815260036020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190612f8582611a00565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b612fd583836136c6565b612fe26000848484613820565b610e8f5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610be3565b804710156130a45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610be3565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146130fe576040519150601f19603f3d011682016040523d82523d6000602084013e613103565b606091505b5050905080610e8f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610be3565b600061318582612ec7565b6131f75760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610be3565b600061320283611a00565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061327157508373ffffffffffffffffffffffffffffffffffffffff1661325984610c95565b73ffffffffffffffffffffffffffffffffffffffff16145b806132ae575073ffffffffffffffffffffffffffffffffffffffff80821660009081526004602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff166132d682611a00565b73ffffffffffffffffffffffffffffffffffffffff161461335f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e00000000000000000000000000000000000000000000006064820152608401610be3565b73ffffffffffffffffffffffffffffffffffffffff82166133e75760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610be3565b6133f2600082612f2b565b8160028281548110613406576134066140d6565b6000918252602082200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff938416179055604051839285811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a4505050565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6135078484846132b6565b61351384848484613820565b6117ed5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610be3565b6060600c8054610c1290613f87565b6060816135d457505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156135fe57806135e881614105565b91506135f79050600a836140ab565b91506135d8565b60008167ffffffffffffffff81111561361957613619613ad1565b6040519080825280601f01601f191660200182016040528015613643576020820181803683370190505b5090505b84156132ae576136586001836140bf565b9150613665600a86614186565b613670906030614027565b60f81b818381518110613685576136856140d6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506136bf600a866140ab565b9450613647565b73ffffffffffffffffffffffffffffffffffffffff82166137295760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610be3565b61373281612ec7565b1561377f5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610be3565b6002805460018101825560009182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091556040518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600073ffffffffffffffffffffffffffffffffffffffff84163b156139eb576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061389790339089908890889060040161419a565b6020604051808303816000875af19250505080156138f0575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526138ed918101906141e3565b60015b6139a0573d80801561391e576040519150601f19603f3d011682016040523d82523d6000602084013e613923565b606091505b5080516139985760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610be3565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506132ae565b506001949350505050565b828054613a0290613f87565b90600052602060002090601f016020900481019282613a245760008555613a6a565b82601f10613a3d57805160ff1916838001178555613a6a565b82800160010185558215613a6a579182015b82811115613a6a578251825591602001919060010190613a4f565b506118b89291505b808211156118b85760008155600101613a72565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146115a557600080fd5b600060208284031215613ac657600080fd5b813561251381613a86565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115613b1b57613b1b613ad1565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715613b6157613b61613ad1565b81604052809350858152868686011115613b7a57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215613ba657600080fd5b813567ffffffffffffffff811115613bbd57600080fd5b8201601f81018413613bce57600080fd5b6132ae84823560208401613b00565b60005b83811015613bf8578181015183820152602001613be0565b838111156117ed5750506000910152565b60008151808452613c21816020860160208601613bdd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006125136020830184613c09565b600060208284031215613c7857600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146115a557600080fd5b60008060408385031215613cb457600080fd5b8235613cbf81613c7f565b946020939093013593505050565b600060208284031215613cdf57600080fd5b813561251381613c7f565b600080600060608486031215613cff57600080fd5b8335613d0a81613c7f565b92506020840135613d1a81613c7f565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b81811015613d6357835183529284019291840191600101613d47565b50909695505050505050565b80358015158114613d7f57600080fd5b919050565b600060208284031215613d9657600080fd5b61251382613d6f565b60008083601f840112613db157600080fd5b50813567ffffffffffffffff811115613dc957600080fd5b6020830191508360208260051b8501011115613de457600080fd5b9250929050565b60008060008060408587031215613e0157600080fd5b843567ffffffffffffffff80821115613e1957600080fd5b613e2588838901613d9f565b90965094506020870135915080821115613e3e57600080fd5b50613e4b87828801613d9f565b95989497509550505050565b60008060408385031215613e6a57600080fd5b8235613e7581613c7f565b9150613e8360208401613d6f565b90509250929050565b60008060008060808587031215613ea257600080fd5b8435613ead81613c7f565b93506020850135613ebd81613c7f565b925060408501359150606085013567ffffffffffffffff811115613ee057600080fd5b8501601f81018713613ef157600080fd5b613f0087823560208401613b00565b91505092959194509250565b60008060208385031215613f1f57600080fd5b823567ffffffffffffffff811115613f3657600080fd5b613f4285828601613d9f565b90969095509350505050565b60008060408385031215613f6157600080fd5b8235613f6c81613c7f565b91506020830135613f7c81613c7f565b809150509250929050565b600181811c90821680613f9b57607f821691505b60208210811415613fd5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215613fed57600080fd5b815161251381613c7f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561403a5761403a613ff8565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561407757614077613ff8565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826140ba576140ba61407c565b500490565b6000828210156140d1576140d1613ff8565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561413757614137613ff8565b5060010190565b60008351614150818460208801613bdd565b835190830190614164818360208801613bdd565b01949350505050565b60006020828403121561417f57600080fd5b5051919050565b6000826141955761419561407c565b500690565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526141d96080830184613c09565b9695505050505050565b6000602082840312156141f557600080fd5b815161251381613a8656fea26469706673582212205cfa6f0d03a4f792c44f626121e022a3a8b233484a079b80e2037ea4ea2af46764736f6c634300080a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000e90b0ed5687770659ca1ca76026bdd9cb3863589000000000000000000000000000000000000000000000000000000000000000b454747544f4d41544f4e5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044547475300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004468747470733a2f2f697066732e696f2f697066732f516d6658766a61585671593572374342687459375278684a46474b6f5a5165456368487148326f483441636d5a322f00000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): EGGTOMATONS
Arg [1] : _symbol (string): EGGS
Arg [2] : _initBaseURI (string): https://ipfs.io/ipfs/QmfXvjaXVqY5r7CBhtY7RxhJFGKoZQeEchHqH2oH4AcmZ2/
Arg [3] : mintpassContractAddress (address): 0xe90B0Ed5687770659ca1CA76026BDD9cB3863589
-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 000000000000000000000000e90b0ed5687770659ca1ca76026bdd9cb3863589
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [5] : 454747544f4d41544f4e53000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 4547475300000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000044
Arg [9] : 68747470733a2f2f697066732e696f2f697066732f516d6658766a6158567159
Arg [10] : 3572374342687459375278684a46474b6f5a5165456368487148326f48344163
Arg [11] : 6d5a322f00000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
482:6633:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2627:40:13;682:10:1;2627:40:13;;;218:42:16;206:55;;;188:74;;2657:9:13;293:2:16;278:18;;271:34;161:18;2627:40:13;;;;;;;482:6633:2;;;;;193:224:5;;;;;;;;;;-1:-1:-1;193:224:5;;;;;:::i;:::-;;:::i;:::-;;;913:14:16;;906:22;888:41;;876:2;861:18;193:224:5;;;;;;;;6610:88:2;;;;;;;;;;-1:-1:-1;6610:88:2;;;;;:::i;:::-;;:::i;:::-;;1672:100:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2305:221::-;;;;;;;;;;-1:-1:-1;2305:221:4;;;;;:::i;:::-;;:::i;:::-;;;3452:42:16;3440:55;;;3422:74;;3410:2;3395:18;2305:221:4;3276:226:16;1888:411:4;;;;;;;;;;-1:-1:-1;1888:411:4;;;;;:::i;:::-;;:::i;6385:92:2:-;;;;;;;;;;-1:-1:-1;6385:92:2;;;;;:::i;:::-;;:::i;3715:418::-;;;;;;;;;;-1:-1:-1;3715:418:2;;;;;:::i;:::-;;:::i;1351:110:5:-;;;;;;;;;;-1:-1:-1;1439:7:5;:14;1351:110;;;4132:25:16;;;4120:2;4105:18;1351:110:5;3986:177:16;3791:600:13;;;;;;;;;;-1:-1:-1;3791:600:13;;;;;:::i;:::-;;:::i;842:46:2:-;;;;;;;;;;-1:-1:-1;842:46:2;;;;;:::i;:::-;;;;;;;;;;;;;;3003:339:4;;;;;;;;;;-1:-1:-1;3003:339:4;;;;;:::i;:::-;;:::i;423:499:5:-;;;;;;;;;;-1:-1:-1;423:499:5;;;;;:::i;:::-;;:::i;2752:89:13:-;;;;;;;;;;-1:-1:-1;2822:12:13;;2752:89;;6965:148:2;;;:::i;3348:185:4:-;;;;;;;;;;-1:-1:-1;3348:185:4;;;;;:::i;:::-;;:::i;4158:555:2:-;;;;;;:::i;:::-;;:::i;6193:94::-;;;;;;;;;;-1:-1:-1;6193:94:2;;;;;:::i;:::-;;:::i;1467:200:5:-;;;;;;;;;;-1:-1:-1;1467:200:5;;;;;:::i;:::-;;:::i;5758:82:2:-;;;;;;;;;;-1:-1:-1;5758:82:2;;;;;:::i;:::-;;:::i;6289:94::-;;;;;;;;;;-1:-1:-1;6289:94:2;;;;;:::i;:::-;;:::i;6479:109::-;;;;;;;;;;-1:-1:-1;6479:109:2;;;;;:::i;:::-;;:::i;1427:239:4:-;;;;;;;;;;-1:-1:-1;1427:239:4;;;;;:::i;:::-;;:::i;585:21:2:-;;;;;;;;;;;;;:::i;1007:414:4:-;;;;;;;;;;-1:-1:-1;1007:414:4;;;;;:::i;:::-;;:::i;1650:94:12:-;;;;;;;;;;;;;:::i;691:36:2:-;;;;;;;;;;;;;;;;5842:82;;;;;;;;;;-1:-1:-1;5842:82:2;;;;;:::i;:::-;;:::i;928:417:5:-;;;;;;;;;;-1:-1:-1;928:417:5;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6886:76:2:-;;;;;;;;;;-1:-1:-1;6886:76:2;;;;;:::i;:::-;;:::i;6717:81::-;;;;;;;;;;-1:-1:-1;6717:81:2;;;;;:::i;:::-;;:::i;3480:208::-;;;;;;;;;;-1:-1:-1;3480:208:2;;;;;:::i;:::-;;:::i;3499:98:13:-;;;;;;;;;;-1:-1:-1;3499:98:13;;;;;:::i;:::-;;:::i;999:87:12:-;;;;;;;;;;-1:-1:-1;1072:6:12;;;;999:87;;5926:82:2;;;;;;;;;;-1:-1:-1;5926:82:2;;;;;:::i;:::-;;:::i;1778:104:4:-;;;;;;;;;;;;;:::i;4734:426:2:-;;;;;;;;;;-1:-1:-1;4734:426:2;;;;;:::i;:::-;;:::i;3306:107:13:-;;;;;;;;;;-1:-1:-1;3306:107:13;;;;;:::i;:::-;3388:18;;3362:7;3388:18;;;:9;:18;;;;;;;3306:107;769:35:2;;;;;;;;;;-1:-1:-1;769:35:2;;;;;;;;;;;732:34;;;;;;;;;;-1:-1:-1;732:34:2;;;;;;;;2532:295:4;;;;;;;;;;-1:-1:-1;2532:295:4;;;;;:::i;:::-;;:::i;6094:82:2:-;;;;;;;;;;-1:-1:-1;6094:82:2;;;;;:::i;:::-;;:::i;3539:328:4:-;;;;;;;;;;-1:-1:-1;3539:328:4;;;;;:::i;:::-;;:::i;6801:82:2:-;;;;;;;;;;-1:-1:-1;6801:82:2;;;;;:::i;:::-;;:::i;5461:278::-;;;;;;;;;;-1:-1:-1;5461:278:2;;;;;:::i;:::-;;:::i;1164:25::-;;;;;;;;;;;;;;;;3109:103:13;;;;;;;;;;-1:-1:-1;3109:103:13;;;;;:::i;:::-;3189:16;;3163:7;3189:16;;;:7;:16;;;;;;;3109:103;655:31:2;;;;;;;;;;;;;;;;1136:25;;;;;;;;;;;;;;;;5192:159;;;;;;;;;;-1:-1:-1;5192:159:2;;;;;:::i;:::-;;:::i;2930:93:13:-;;;;;;;;;;-1:-1:-1;3002:14:13;;2930:93;;2833:164:4;;;;;;;;;;-1:-1:-1;2833:164:4;;;;;:::i;:::-;2954:25;;;;2930:4;2954:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;2833:164;1840:1048:2;;;;;;:::i;:::-;;:::i;1899:192:12:-;;;;;;;;;;-1:-1:-1;1899:192:12;;;;;:::i;:::-;;:::i;1192:24:2:-;;;;;;;;;;;;;;;;6010:82;;;;;;;;;;-1:-1:-1;6010:82:2;;;;;:::i;:::-;;:::i;2912:547::-;;;;;;:::i;:::-;;:::i;807:32::-;;;;;;;;;;-1:-1:-1;807:32:2;;;;;;;;;;;193:224:5;295:4;319:50;;;334:35;319:50;;:90;;;373:36;397:11;373:23;:36::i;:::-;312:97;193:224;-1:-1:-1;;193:224:5:o;6610:88:2:-;1072:6:12;;1219:23;1072:6;682:10:1;1219:23:12;1211:68;;;;-1:-1:-1;;;1211:68:12;;9435:2:16;1211:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1211:68:12;;;;;;;;;6673:21:2;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;:::-;;6610:88:::0;:::o;1672:100:4:-;1726:13;1759:5;1752:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1672:100;:::o;2305:221::-;2381:7;2409:16;2417:7;2409;:16::i;:::-;2401:73;;;;-1:-1:-1;;;2401:73:4;;10238:2:16;2401:73:4;;;10220:21:16;10277:2;10257:18;;;10250:30;10316:34;10296:18;;;10289:62;10387:14;10367:18;;;10360:42;10419:19;;2401:73:4;10036:408:16;2401:73:4;-1:-1:-1;2494:24:4;;;;:15;:24;;;;;;;;;2305:221::o;1888:411::-;1969:13;1985:23;2000:7;1985:14;:23::i;:::-;1969:39;;2033:5;2027:11;;:2;:11;;;;2019:57;;;;-1:-1:-1;;;2019:57:4;;10651:2:16;2019:57:4;;;10633:21:16;10690:2;10670:18;;;10663:30;10729:34;10709:18;;;10702:62;10800:3;10780:18;;;10773:31;10821:19;;2019:57:4;10449:397:16;2019:57:4;682:10:1;2111:21:4;;;;;:62;;-1:-1:-1;2136:37:4;2153:5;682:10:1;2833:164:4;:::i;2136:37::-;2089:168;;;;-1:-1:-1;;;2089:168:4;;11053:2:16;2089:168:4;;;11035:21:16;11092:2;11072:18;;;11065:30;11131:34;11111:18;;;11104:62;11202:26;11182:18;;;11175:54;11246:19;;2089:168:4;10851:420:16;2089:168:4;2270:21;2279:2;2283:7;2270:8;:21::i;:::-;1958:341;1888:411;;:::o;6385:92:2:-;1072:6:12;;1219:23;1072:6;682:10:1;1219:23:12;1211:68;;;;-1:-1:-1;;;1211:68:12;;9435:2:16;1211:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1211:68:12;9233:356:16;1211:68:12;6449:4:2::1;:24:::0;6385:92::o;3715:418::-;3761:9;3773:13;1439:7:5;:14;;1351:110;3773:13:2;3797:14;;3761:25;;-1:-1:-1;3797:14:2;;3789:51;;;;-1:-1:-1;;;3789:51:2;;11478:2:16;3789:51:2;;;11460:21:16;11517:2;11497:18;;;11490:30;11556:25;11536:18;;;11529:53;11599:18;;3789:51:2;11276:347:16;3789:51:2;3857:9;;3852:1;:14;;3843:37;;;;-1:-1:-1;;;3843:37:2;;11830:2:16;3843:37:2;;;11812:21:16;11869:1;11849:18;;;11842:29;11907:11;11887:18;;;11880:39;11936:18;;3843:37:2;11628:332:16;3843:37:2;3892:8;;:25;;;;;;;;4132::16;;;3921:10:2;;3892:39;:8;;:16;;4105:18:16;;3892:25:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:39;;;3883:77;;;;-1:-1:-1;;;3883:77:2;;12423:2:16;3883:77:2;;;12405:21:16;12462:2;12442:18;;;12435:30;12501:26;12481:18;;;12474:54;12545:18;;3883:77:2;12221:348:16;3883:77:2;3987:22;4001:7;3987:13;:22::i;:::-;:31;3979:40;;;;;;4060:28;4070:10;4082:1;4060:28;;;;;;;;;;;;:9;:28::i;:::-;-1:-1:-1;4091:10:2;:24;;;;;;;-1:-1:-1;4091:24:2;;;;;;;3715:418::o;3791:600:13:-;3866:16;;;3885:1;3866:16;;;:7;:16;;;;;;3858:71;;;;-1:-1:-1;;;3858:71:13;;12776:2:16;3858:71:13;;;12758:21:16;12815:2;12795:18;;;12788:30;12854:34;12834:18;;;12827:62;12925:8;12905:18;;;12898:36;12951:19;;3858:71:13;12574:402:16;3858:71:13;3940:21;3988:14;;3964:21;:38;;;;:::i;:::-;4082:18;;;4012:15;4082:18;;;:9;:18;;;;;;;;;4067:12;;4047:7;:16;;;;;;;3940:62;;-1:-1:-1;4012:15:13;;4031:32;;3940:62;4031:32;:::i;:::-;4030:49;;;;:::i;:::-;:70;;;;:::i;:::-;4012:88;-1:-1:-1;4119:12:13;4111:68;;;;-1:-1:-1;;;4111:68:13;;14182:2:16;4111:68:13;;;14164:21:16;14221:2;14201:18;;;14194:30;14260:34;14240:18;;;14233:62;14331:13;14311:18;;;14304:41;14362:19;;4111:68:13;13980:407:16;4111:68:13;4211:18;;;;;;;:9;:18;;;;;;:28;;4232:7;;4211:28;:::i;:::-;4190:18;;;;;;;:9;:18;;;;;:49;4266:14;;:24;;4283:7;;4266:24;:::i;:::-;4249:14;:41;4301:35;4319:7;4328;4301:17;:35::i;:::-;4351:33;;;218:42:16;206:55;;188:74;;293:2;278:18;;271:34;;;4351:33:13;;161:18:16;4351:33:13;;;;;;;3848:543;;3791:600;:::o;3003:339:4:-;3198:41;682:10:1;3231:7:4;3198:18;:41::i;:::-;3190:103;;;;-1:-1:-1;;;3190:103:4;;14904:2:16;3190:103:4;;;14886:21:16;14943:2;14923:18;;;14916:30;14982:34;14962:18;;;14955:62;15053:19;15033:18;;;15026:47;15090:19;;3190:103:4;14702:413:16;3190:103:4;3306:28;3316:4;3322:2;3326:7;3306:9;:28::i;423:499:5:-;512:15;556:23;573:5;556:16;:23::i;:::-;548:5;:31;540:66;;;;-1:-1:-1;;;540:66:5;;15322:2:16;540:66:5;;;15304:21:16;15361:2;15341:18;;;15334:30;15400:24;15380:18;;;15373:52;15442:18;;540:66:5;15120:346:16;540:66:5;617:10;643:6;638:226;655:7;:14;651:18;;638:226;;;704:7;712:1;704:10;;;;;;;;:::i;:::-;;;;;;;;;;;;695:19;;;704:10;;695:19;691:162;;;748:5;739;:14;735:102;;;784:1;-1:-1:-1;777:8:5;;-1:-1:-1;777:8:5;735:102;830:7;;;:::i;:::-;;;735:102;671:3;;;:::i;:::-;;;638:226;;;-1:-1:-1;874:40:5;;-1:-1:-1;;;874:40:5;;15322:2:16;874:40:5;;;15304:21:16;15361:2;15341:18;;;15334:30;15400:24;15380:18;;;15373:52;15442:18;;874:40:5;15120:346:16;6965:148:2;1072:6:12;;1219:23;1072:6;682:10:1;1219:23:12;1211:68;;;;-1:-1:-1;;;1211:68:12;;9435:2:16;1211:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1211:68:12;9233:356:16;1211:68:12;7032:58:2::1;::::0;7014:12:::1;::::0;7040:10:::1;::::0;7064:21:::1;::::0;7014:12;7032:58;7014:12;7032:58;7064:21;7040:10;7032:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7013:77;;;7101:7;7093:16;;;::::0;::::1;;7010:103;6965:148::o:0;3348:185:4:-;3486:39;3503:4;3509:2;3513:7;3486:39;;;;;;;;;;;;:16;:39::i;4158:555:2:-;4221:9;4233:13;1439:7:5;:14;;1351:110;4233:13:2;4276:10;4251;4264:23;;;:11;:23;;;;;;4299:15;;4221:25;;-1:-1:-1;4264:23:2;4299:15;;;;;4291:52;;;;-1:-1:-1;;;4291:52:2;;16272:2:16;4291:52:2;;;16254:21:16;16311:2;16291:18;;;16284:30;16350:25;16330:18;;;16323:53;16393:18;;4291:52:2;16070:347:16;4291:52:2;4369:1;4354:12;:16;4346:46;;;;-1:-1:-1;;;4346:46:2;;16624:2:16;4346:46:2;;;16606:21:16;16663:2;16643:18;;;16636:30;16702:18;16682;;;16675:46;16738:18;;4346:46:2;16422:340:16;4346:46:2;4419:5;;4403:12;:21;;4395:43;;;;-1:-1:-1;;;4395:43:2;;11830:2:16;4395:43:2;;;11812:21:16;11869:1;11849:18;;;11842:29;11907:11;11887:18;;;11880:39;11936:18;;4395:43:2;11628:332:16;4395:43:2;4482:15;;4470:9;;:27;;;;:::i;:::-;4450:16;4454:12;4450:1;:16;:::i;:::-;:47;;4441:70;;;;-1:-1:-1;;;4441:70:2;;11830:2:16;4441:70:2;;;11812:21:16;11869:1;11849:18;;;11842:29;11907:11;11887:18;;;11880:39;11936:18;;4441:70:2;11628:332:16;4441:70:2;4545:12;4535:7;;:22;;;;:::i;:::-;4522:9;:35;;4514:66;;;;-1:-1:-1;;;4514:66:2;;16969:2:16;4514:66:2;;;16951:21:16;17008:2;16988:18;;;16981:30;17047:20;17027:18;;;17020:48;17085:18;;4514:66:2;16767:342:16;4514:66:2;4598:1;4593:2;:6;4585:15;;;;;;-1:-1:-1;4605:9:2;;4617:82;4641:12;4637:1;:16;4617:82;;;4663:32;4673:10;4685:5;4689:1;4685;:5;:::i;:::-;4663:32;;;;;;;;;;;;:9;:32::i;:::-;4655:3;;;:::i;:::-;;;4617:82;;;-1:-1:-1;;;;4158:555:2:o;6193:94::-;1072:6:12;;1219:23;1072:6;682:10:1;1219:23:12;1211:68;;;;-1:-1:-1;;;1211:68:12;;9435:2:16;1211:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1211:68:12;9233:356:16;1211:68:12;6258:5:2::1;:25:::0;6193:94::o;1467:200:5:-;1542:7;1578:30;1439:7;:14;;1351:110;1578:30;1570:5;:38;1562:74;;;;-1:-1:-1;;;1562:74:5;;17316:2:16;1562:74:5;;;17298:21:16;17355:2;17335:18;;;17328:30;17394:25;17374:18;;;17367:53;17437:18;;1562:74:5;17114:347:16;1562:74:5;-1:-1:-1;1654:5:5;1467:200::o;5758:82:2:-;1072:6:12;;1219:23;1072:6;682:10:1;1219:23:12;1211:68;;;;-1:-1:-1;;;1211:68:12;;9435:2:16;1211:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1211:68:12;9233:356:16;1211:68:12;5817:7:2::1;:19:::0;5758:82::o;6289:94::-;1072:6:12;;1219:23;1072:6;682:10:1;1219:23:12;1211:68;;;;-1:-1:-1;;;1211:68:12;;9435:2:16;1211:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1211:68:12;9233:356:16;1211:68:12;6354:5:2::1;:25:::0;6289:94::o;6479:109::-;1072:6:12;;1219:23;1072:6;682:10:1;1219:23:12;1211:68;;;;-1:-1:-1;;;1211:68:12;;9435:2:16;1211:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1211:68:12;9233:356:16;1211:68:12;6549:15:2::1;:35:::0;6479:109::o;1427:239:4:-;1499:7;1519:13;1535:7;1543;1535:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;1570:19:4;1562:73;;;;-1:-1:-1;;;1562:73:4;;17668:2:16;1562:73:4;;;17650:21:16;17707:2;17687:18;;;17680:30;17746:34;17726:18;;;17719:62;17817:11;17797:18;;;17790:39;17846:19;;1562:73:4;17466:405:16;585:21:2;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1007:414:4:-;1079:7;1107:19;;;1099:74;;;;-1:-1:-1;;;1099:74:4;;18078:2:16;1099:74:4;;;18060:21:16;18117:2;18097:18;;;18090:30;18156:34;18136:18;;;18129:62;18227:12;18207:18;;;18200:40;18257:19;;1099:74:4;17876:406:16;1099:74:4;1223:7;:14;1184:10;;;1248:119;1269:6;1265:1;:10;1248:119;;;1308:7;1316:1;1308:10;;;;;;;;:::i;:::-;;;;;;;;;;;;1299:19;;;1308:10;;1299:19;1295:61;;;1335:7;;;:::i;:::-;;;1295:61;1277:3;;;:::i;:::-;;;1248:119;;;-1:-1:-1;1408:5:4;;1007:414;-1:-1:-1;;;1007:414:4:o;1650:94:12:-;1072:6;;1219:23;1072:6;682:10:1;1219:23:12;1211:68;;;;-1:-1:-1;;;1211:68:12;;9435:2:16;1211:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1211:68:12;9233:356:16;1211:68:12;1715:21:::1;1733:1;1715:9;:21::i;:::-;1650:94::o:0;5842:82:2:-;1072:6:12;;1219:23;1072:6;682:10:1;1219:23:12;1211:68;;;;-1:-1:-1;;;1211:68:12;;9435:2:16;1211:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1211:68:12;9233:356:16;1211:68:12;5901:7:2::1;:19:::0;5842:82::o;928:417:5:-;987:16;1028:23;1045:5;1028:16;:23::i;:::-;1024:1;:27;1016:62;;;;-1:-1:-1;;;1016:62:5;;15322:2:16;1016:62:5;;;15304:21:16;15361:2;15341:18;;;15334:30;15400:24;15380:18;;;15373:52;15442:18;;1016:62:5;15120:346:16;1016:62:5;1089:18;1110:16;1120:5;1110:9;:16::i;:::-;1089:37;;1137:25;1179:10;1165:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1165:25:5;;1137:53;;1206:9;1201:111;1225:10;1221:1;:14;1201:111;;;1271:29;1291:5;1298:1;1271:19;:29::i;:::-;1257:8;1266:1;1257:11;;;;;;;;:::i;:::-;;;;;;;;;;:43;1237:3;;;;:::i;:::-;;;;1201:111;;;-1:-1:-1;1329:8:5;928:417;-1:-1:-1;;;928:417:5:o;6886:76:2:-;1072:6:12;;1219:23;1072:6;682:10:1;1219:23:12;1211:68;;;;-1:-1:-1;;;1211:68:12;;9435:2:16;1211:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1211:68:12;9233:356:16;1211:68:12;6935:12:2::1;:23:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;6886:76::o;6717:81::-;1072:6:12;;1219:23;1072:6;682:10:1;1219:23:12;1211:68;;;;-1:-1:-1;;;1211:68:12;;9435:2:16;1211:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1211:68:12;9233:356:16;1211:68:12;6768:14:2::1;:26:::0;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;6717:81::o;3480:208::-;3535:4;;3547:120;3571:10;:17;3567:21;;3547:120;;;3626:1;3609:10;3620:1;3609:13;;;;;;;;:::i;:::-;;;;;;;;;:18;3605:56;;;-1:-1:-1;3650:4:2;;3480:208;-1:-1:-1;;3480:208:2:o;3605:56::-;3590:3;;;;:::i;:::-;;;;3547:120;;;-1:-1:-1;3679:5:2;;3480:208;-1:-1:-1;;3480:208:2:o;3499:98:13:-;3550:7;3576;3584:5;3576:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;3499:98;-1:-1:-1;;3499:98:13:o;5926:82:2:-;1072:6:12;;1219:23;1072:6;682:10:1;1219:23:12;1211:68;;;;-1:-1:-1;;;1211:68:12;;9435:2:16;1211:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1211:68:12;9233:356:16;1211:68:12;5985:7:2::1;:19:::0;5926:82::o;1778:104:4:-;1834:13;1867:7;1860:14;;;;;:::i;4734:426:2:-;1072:6:12;;1219:23;1072:6;682:10:1;1219:23:12;1211:68;;;;-1:-1:-1;;;1211:68:12;;9435:2:16;1211:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1211:68:12;9233:356:16;1211:68:12;4830:32:2;;::::1;4822:41;;;::::0;::::1;;4866:6;4879:9:::0;4891:13:::1;1439:7:5::0;:14;;1351:110;4891:13:2::1;4879:25;;4911:6;4907:58;4923:16:::0;;::::1;4907:58;;;4953:5;;4959:1;4953:8;;;;;;;:::i;:::-;;;;;;;4948:13;;;;;:::i;:::-;::::0;-1:-1:-1;4941:3:2::1;::::0;::::1;:::i;:::-;;;4907:58;;;-1:-1:-1::0;4985:9:2::1;::::0;4976:5:::1;4980:1:::0;4976;:5:::1;:::i;:::-;:18;;4967:41;;;::::0;-1:-1:-1;;;4967:41:2;;18489:2:16;4967:41:2::1;::::0;::::1;18471:21:16::0;18528:1;18508:18;;;18501:29;18566:10;18546:18;;;18539:38;18594:18;;4967:41:2::1;18287:331:16::0;4967:41:2::1;5011:8;;;5026:6;5022:123;5038:20:::0;;::::1;5022:123;;;5071:6;5067:75;5087:5;;5093:1;5087:8;;;;;;;:::i;:::-;;;;;;;5083:1;:12;5067:75;;;5104:34;5115:9;;5125:1;5115:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;5129:3:::0;::::1;::::0;::::1;:::i;:::-;;;5104:34;;;;;;;;;;;::::0;:9:::1;:34::i;:::-;5097:3;::::0;::::1;:::i;:::-;;;5067:75;;;-1:-1:-1::0;5060:3:2::1;::::0;::::1;:::i;:::-;;;5022:123;;;-1:-1:-1::0;;;;;;;4734:426:2:o;2532:295:4:-;2635:24;;;682:10:1;2635:24:4;;2627:62;;;;-1:-1:-1;;;2627:62:4;;18825:2:16;2627:62:4;;;18807:21:16;18864:2;18844:18;;;18837:30;18903:27;18883:18;;;18876:55;18948:18;;2627:62:4;18623:349:16;2627:62:4;682:10:1;2702:32:4;;;;:18;:32;;;;;;;;;:42;;;;;;;;;;;;:53;;;;;;;;;;;;;2771:48;;888:41:16;;;2702:42:4;;682:10:1;2771:48:4;;861:18:16;2771:48:4;;;;;;;2532:295;;:::o;6094:82:2:-;1072:6:12;;1219:23;1072:6;682:10:1;1219:23:12;1211:68;;;;-1:-1:-1;;;1211:68:12;;9435:2:16;1211:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1211:68:12;9233:356:16;1211:68:12;6153:7:2::1;:19:::0;6094:82::o;3539:328:4:-;3714:41;682:10:1;3747:7:4;3714:18;:41::i;:::-;3706:103;;;;-1:-1:-1;;;3706:103:4;;14904:2:16;3706:103:4;;;14886:21:16;14943:2;14923:18;;;14916:30;14982:34;14962:18;;;14955:62;15053:19;15033:18;;;15026:47;15090:19;;3706:103:4;14702:413:16;3706:103:4;3820:39;3834:4;3840:2;3844:7;3853:5;3820:13;:39::i;6801:82:2:-;1072:6:12;;1219:23;1072:6;682:10:1;1219:23:12;1211:68;;;;-1:-1:-1;;;1211:68:12;;9435:2:16;1211:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1211:68:12;9233:356:16;1211:68:12;6852:15:2::1;:27:::0;;;::::1;;;;::::0;;;::::1;::::0;;;::::1;::::0;;6801:82::o;5461:278::-;5534:13;5571:9;;5560:7;:20;;5552:29;;;;;;5584:28;5615:10;:8;:10::i;:::-;5584:41;;5666:1;5641:14;5635:28;:32;:100;;;;;;;;;;;;;;;;;5694:14;5710:18;:7;:16;:18::i;:::-;5677:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5635:100;5628:107;5461:278;-1:-1:-1;;;5461:278:2:o;5192:159::-;1072:6:12;;1219:23;1072:6;682:10:1;1219:23:12;1211:68;;;;-1:-1:-1;;;1211:68:12;;9435:2:16;1211:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1211:68:12;9233:356:16;1211:68:12;5269:9:2::1;5265:83;5280:21:::0;;::::1;5265:83;;;5339:5;;5310:11;:26;5322:10;;5333:1;5322:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;5310:26;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;5310:26:2;:34;5303:3;::::1;::::0;::::1;:::i;:::-;;;;5265:83;;1840:1048:::0;1900:9;1912:13;1439:7:5;:14;;1351:110;1912:13:2;1953:10;1928;1941:23;;;:11;:23;;;;;;;1976:8;;:30;;;;;;;;3422:74:16;;;;1900:25:2;;-1:-1:-1;1928:10:2;;1941:23;1976:8;;;;:18;;3395::16;;1976:30:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2038:12;;1967:39;;-1:-1:-1;2038:12:2;;;;;2030:51;;;;-1:-1:-1;;;2030:51:2;;19843:2:16;2030:51:2;;;19825:21:16;19882:2;19862:18;;;19855:30;19921:27;19901:18;;;19894:55;19966:18;;2030:51:2;19641:349:16;2030:51:2;2107:1;2092:12;:16;2084:46;;;;-1:-1:-1;;;2084:46:2;;16624:2:16;2084:46:2;;;16606:21:16;16663:2;16643:18;;;16636:30;16702:18;16682;;;16675:46;16738:18;;2084:46:2;16422:340:16;2084:46:2;2157:4;;2141:12;:20;;2133:42;;;;-1:-1:-1;;;2133:42:2;;11830:2:16;2133:42:2;;;11812:21:16;11869:1;11849:18;;;11842:29;11907:11;11887:18;;;11880:39;11936:18;;2133:42:2;11628:332:16;2133:42:2;2219:15;;2207:9;;:27;;;;:::i;:::-;2187:16;2191:12;2187:1;:16;:::i;:::-;:47;;2178:70;;;;-1:-1:-1;;;2178:70:2;;11830:2:16;2178:70:2;;;11812:21:16;11869:1;11849:18;;;11842:29;11907:11;11887:18;;;11880:39;11936:18;;2178:70:2;11628:332:16;2178:70:2;2281:3;;2277:502;;2320:12;2310:7;;:22;;;;:::i;:::-;2297:9;:35;;2289:66;;;;-1:-1:-1;;;2289:66:2;;16969:2:16;2289:66:2;;;16951:21:16;17008:2;16988:18;;;16981:30;17047:20;17027:18;;;17020:48;17085:18;;2289:66:2;16767:342:16;2289:66:2;2277:502;;;2370:4;;2366:413;;2409:12;2399:7;;:22;;;;:::i;2366:413::-;2486:1;2471:12;:16;2467:94;;;2522:12;2512:7;;:22;;;;:::i;:::-;2499:9;:35;;2491:66;;;;-1:-1:-1;;;2491:66:2;;16969:2:16;2491:66:2;;;16951:21:16;17008:2;16988:18;;;16981:30;17047:20;17027:18;;;17020:48;17085:18;;2491:66:2;16767:342:16;2491:66:2;2582:1;2567:12;:16;:37;;;;;2602:2;2587:12;:17;2567:37;2563:115;;;2639:12;2629:7;;:22;;;;:::i;:::-;2616:9;:35;;2608:66;;;;-1:-1:-1;;;2608:66:2;;16969:2:16;2608:66:2;;;16951:21:16;17008:2;16988:18;;;16981:30;17047:20;17027:18;;;17020:48;17085:18;;2608:66:2;16767:342:16;2608:66:2;2684:12;2700:2;2684:18;2680:96;;;2737:12;2727:7;;:22;;;;:::i;:::-;2714:9;:35;;2706:66;;;;-1:-1:-1;;;2706:66:2;;16969:2:16;2706:66:2;;;16951:21:16;17008:2;16988:18;;;16981:30;17047:20;17027:18;;;17020:48;17085:18;;2706:66:2;16767:342:16;2706:66:2;2786:9;2781:82;2805:12;2801:1;:16;2781:82;;;2827:32;2837:10;2849:5;2853:1;2849;:5;:::i;2827:32::-;2819:3;;;:::i;:::-;;;2781:82;;;-1:-1:-1;;;;;1840:1048:2:o;1899:192:12:-;1072:6;;1219:23;1072:6;682:10:1;1219:23:12;1211:68;;;;-1:-1:-1;;;1211:68:12;;9435:2:16;1211:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1211:68:12;9233:356:16;1211:68:12;1988:22:::1;::::0;::::1;1980:73;;;::::0;-1:-1:-1;;;1980:73:12;;20197:2:16;1980:73:12::1;::::0;::::1;20179:21:16::0;20236:2;20216:18;;;20209:30;20275:34;20255:18;;;20248:62;20346:8;20326:18;;;20319:36;20372:19;;1980:73:12::1;19995:402:16::0;1980:73:12::1;2064:19;2074:8;2064:9;:19::i;6010:82:2:-:0;1072:6:12;;1219:23;1072:6;682:10:1;1219:23:12;1211:68;;;;-1:-1:-1;;;1211:68:12;;9435:2:16;1211:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1211:68:12;9233:356:16;1211:68:12;6069:7:2::1;:19:::0;6010:82::o;2912:547::-;2983:8;;:30;;;;;3002:10;2983:30;;;3422:74:16;2974:6:2;;2983:8;;;:18;;3395::16;;2983:30:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2974:39;;3036:9;3048:13;1439:7:5;:14;;1351:110;3048:13:2;3072:14;;3036:25;;-1:-1:-1;3072:14:2;;3064:51;;;;-1:-1:-1;;;3064:51:2;;11478:2:16;3064:51:2;;;11460:21:16;11517:2;11497:18;;;11490:30;11556:25;11536:18;;;11529:53;11599:18;;3064:51:2;11276:347:16;3064:51:2;3130:1;3126;:5;3118:38;;;;-1:-1:-1;;;3118:38:2;;20604:2:16;3118:38:2;;;20586:21:16;20643:2;20623:18;;;20616:30;20682:22;20662:18;;;20655:50;20722:18;;3118:38:2;20402:344:16;3118:38:2;3184:5;;3168:12;:21;;3159:44;;;;-1:-1:-1;;;3159:44:2;;11830:2:16;3159:44:2;;;11812:21:16;11869:1;11849:18;;;11842:29;11907:11;11887:18;;;11880:39;11936:18;;3159:44:2;11628:332:16;3159:44:2;3247:15;;3235:9;;:27;;;;:::i;:::-;3215:16;3219:12;3215:1;:16;:::i;:::-;:47;;3206:70;;;;-1:-1:-1;;;3206:70:2;;11830:2:16;3206:70:2;;;11812:21:16;11869:1;11849:18;;;11842:29;11907:11;11887:18;;;11880:39;11936:18;;3206:70:2;11628:332:16;3206:70:2;3310:12;3300:7;;:22;;;;:::i;:::-;3287:9;:35;;3279:66;;;;-1:-1:-1;;;3279:66:2;;16969:2:16;3279:66:2;;;16951:21:16;17008:2;16988:18;;;16981:30;17047:20;17027:18;;;17020:48;17085:18;;3279:66:2;16767:342:16;3279:66:2;3348:8;;;3364:9;3359:83;3383:12;3379:1;:16;3359:83;;;3406:32;3416:10;3428:5;3432:1;3428;:5;:::i;3406:32::-;3398:3;;;:::i;:::-;;;3359:83;;696:305:4;798:4;835:40;;;850:25;835:40;;:105;;-1:-1:-1;892:48:4;;;907:33;892:48;835:105;:158;;;-1:-1:-1;911:25:3;896:40;;;;957:36:4;787:157:3;4196:155:4;4295:7;:14;4261:4;;4285:24;;:58;;;;;4341:1;4313:30;;:7;4321;4313:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;:30;;4278:65;4196:155;-1:-1:-1;;4196:155:4:o;6345:174::-;6420:24;;;;:15;:24;;;;;:29;;;;;;;;;;;;;:24;;6474:23;6420:24;6474:14;:23::i;:::-;6465:46;;;;;;;;;;;;6345:174;;:::o;4818:321::-;4948:18;4954:2;4958:7;4948:5;:18::i;:::-;4999:54;5030:1;5034:2;5038:7;5047:5;4999:22;:54::i;:::-;4977:154;;;;-1:-1:-1;;;4977:154:4;;20953:2:16;4977:154:4;;;20935:21:16;20992:2;20972:18;;;20965:30;21031:34;21011:18;;;21004:62;21102:20;21082:18;;;21075:48;21140:19;;4977:154:4;20751:414:16;2065:317:0;2180:6;2155:21;:31;;2147:73;;;;-1:-1:-1;;;2147:73:0;;21372:2:16;2147:73:0;;;21354:21:16;21411:2;21391:18;;;21384:30;21450:31;21430:18;;;21423:59;21499:18;;2147:73:0;21170:353:16;2147:73:0;2234:12;2252:9;:14;;2274:6;2252:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2233:52;;;2304:7;2296:78;;;;-1:-1:-1;;;2296:78:0;;21730:2:16;2296:78:0;;;21712:21:16;21769:2;21749:18;;;21742:30;21808:34;21788:18;;;21781:62;21879:28;21859:18;;;21852:56;21925:19;;2296:78:0;21528:422:16;4354:348:4;4447:4;4472:16;4480:7;4472;:16::i;:::-;4464:73;;;;-1:-1:-1;;;4464:73:4;;22157:2:16;4464:73:4;;;22139:21:16;22196:2;22176:18;;;22169:30;22235:34;22215:18;;;22208:62;22306:14;22286:18;;;22279:42;22338:19;;4464:73:4;21955:408:16;4464:73:4;4548:13;4564:23;4579:7;4564:14;:23::i;:::-;4548:39;;4617:5;4606:16;;:7;:16;;;:51;;;;4650:7;4626:31;;:20;4638:7;4626:11;:20::i;:::-;:31;;;4606:51;:87;;;-1:-1:-1;2954:25:4;;;;2930:4;2954:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;4661:32;4598:96;4354:348;-1:-1:-1;;;;4354:348:4:o;5826:516::-;5985:4;5958:31;;:23;5973:7;5958:14;:23::i;:::-;:31;;;5950:85;;;;-1:-1:-1;;;5950:85:4;;22570:2:16;5950:85:4;;;22552:21:16;22609:2;22589:18;;;22582:30;22648:34;22628:18;;;22621:62;22719:11;22699:18;;;22692:39;22748:19;;5950:85:4;22368:405:16;5950:85:4;6054:16;;;6046:65;;;;-1:-1:-1;;;6046:65:4;;22980:2:16;6046:65:4;;;22962:21:16;23019:2;22999:18;;;22992:30;23058:34;23038:18;;;23031:62;23129:6;23109:18;;;23102:34;23153:19;;6046:65:4;22778:400:16;6046:65:4;6228:29;6245:1;6249:7;6228:8;:29::i;:::-;6287:2;6268:7;6276;6268:16;;;;;;;;:::i;:::-;;;;;;;;;:21;;;;;;;;;;;6307:27;;6326:7;;6307:27;;;;;;;;;;6268:16;6307:27;5826:516;;;:::o;2099:173:12:-;2174:6;;;;2191:17;;;;;;;;;;;2224:40;;2174:6;;;2191:17;2174:6;;2224:40;;2155:16;;2224:40;2144:128;2099:173;:::o;3878:315:4:-;4035:28;4045:4;4051:2;4055:7;4035:9;:28::i;:::-;4082:48;4105:4;4111:2;4115:7;4124:5;4082:22;:48::i;:::-;4074:111;;;;-1:-1:-1;;;4074:111:4;;20953:2:16;4074:111:4;;;20935:21:16;20992:2;20972:18;;;20965:30;21031:34;21011:18;;;21004:62;21102:20;21082:18;;;21075:48;21140:19;;4074:111:4;20751:414:16;5371:87:2;5422:13;5447:7;5440:14;;;;;:::i;288:723:15:-;344:13;565:10;561:53;;-1:-1:-1;;592:10:15;;;;;;;;;;;;;;;;;;288:723::o;561:53::-;639:5;624:12;680:78;687:9;;680:78;;713:8;;;;:::i;:::-;;-1:-1:-1;736:10:15;;-1:-1:-1;744:2:15;736:10;;:::i;:::-;;;680:78;;;768:19;800:6;790:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;790:17:15;;768:39;;818:154;825:10;;818:154;;852:11;862:1;852:11;;:::i;:::-;;-1:-1:-1;921:10:15;929:2;921:5;:10;:::i;:::-;908:24;;:2;:24;:::i;:::-;895:39;;878:6;885;878:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;949:11:15;958:2;949:11;;:::i;:::-;;;818:154;;5142:346:4;5222:16;;;5214:61;;;;-1:-1:-1;;;5214:61:4;;23502:2:16;5214:61:4;;;23484:21:16;;;23521:18;;;23514:30;23580:34;23560:18;;;23553:62;23632:18;;5214:61:4;23300:356:16;5214:61:4;5295:16;5303:7;5295;:16::i;:::-;5294:17;5286:58;;;;-1:-1:-1;;;5286:58:4;;23863:2:16;5286:58:4;;;23845:21:16;23902:2;23882:18;;;23875:30;23941;23921:18;;;23914:58;23989:18;;5286:58:4;23661:352:16;5286:58:4;5413:7;:16;;;;;;;-1:-1:-1;5413:16:4;;;;;;;;;;;;;;;;;;5447:33;;5472:7;;-1:-1:-1;5447:33:4;;-1:-1:-1;;5447:33:4;5142:346;;:::o;6522:799::-;6677:4;6698:13;;;1066:20:0;1114:8;6694:620:4;;6734:72;;;;;:36;;;;;;:72;;682:10:1;;6785:4:4;;6791:7;;6800:5;;6734:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6734:72:4;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;6730:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6976:13:4;;6972:272;;7019:60;;-1:-1:-1;;;7019:60:4;;20953:2:16;7019:60:4;;;20935:21:16;20992:2;20972:18;;;20965:30;21031:34;21011:18;;;21004:62;21102:20;21082:18;;;21075:48;21140:19;;7019:60:4;20751:414:16;6972:272:4;7194:6;7188:13;7179:6;7175:2;7171:15;7164:38;6730:529;6857:51;;6867:41;6857:51;;-1:-1:-1;6850:58:4;;6694:620;-1:-1:-1;7298:4:4;6522:799;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;316:177:16;401:66;394:5;390:78;383:5;380:89;370:117;;483:1;480;473:12;498:245;556:6;609:2;597:9;588:7;584:23;580:32;577:52;;;625:1;622;615:12;577:52;664:9;651:23;683:30;707:5;683:30;:::i;940:184::-;992:77;989:1;982:88;1089:4;1086:1;1079:15;1113:4;1110:1;1103:15;1129:691;1194:5;1224:18;1265:2;1257:6;1254:14;1251:40;;;1271:18;;:::i;:::-;1405:2;1399:9;1471:2;1459:15;;1310:66;1455:24;;;1481:2;1451:33;1447:42;1435:55;;;1505:18;;;1525:22;;;1502:46;1499:72;;;1551:18;;:::i;:::-;1591:10;1587:2;1580:22;1620:6;1611:15;;1650:6;1642;1635:22;1690:3;1681:6;1676:3;1672:16;1669:25;1666:45;;;1707:1;1704;1697:12;1666:45;1757:6;1752:3;1745:4;1737:6;1733:17;1720:44;1812:1;1805:4;1796:6;1788;1784:19;1780:30;1773:41;;;;1129:691;;;;;:::o;1825:451::-;1894:6;1947:2;1935:9;1926:7;1922:23;1918:32;1915:52;;;1963:1;1960;1953:12;1915:52;2003:9;1990:23;2036:18;2028:6;2025:30;2022:50;;;2068:1;2065;2058:12;2022:50;2091:22;;2144:4;2136:13;;2132:27;-1:-1:-1;2122:55:16;;2173:1;2170;2163:12;2122:55;2196:74;2262:7;2257:2;2244:16;2239:2;2235;2231:11;2196:74;:::i;2281:258::-;2353:1;2363:113;2377:6;2374:1;2371:13;2363:113;;;2453:11;;;2447:18;2434:11;;;2427:39;2399:2;2392:10;2363:113;;;2494:6;2491:1;2488:13;2485:48;;;-1:-1:-1;;2529:1:16;2511:16;;2504:27;2281:258::o;2544:317::-;2586:3;2624:5;2618:12;2651:6;2646:3;2639:19;2667:63;2723:6;2716:4;2711:3;2707:14;2700:4;2693:5;2689:16;2667:63;:::i;:::-;2775:2;2763:15;2780:66;2759:88;2750:98;;;;2850:4;2746:109;;2544:317;-1:-1:-1;;2544:317:16:o;2866:220::-;3015:2;3004:9;2997:21;2978:4;3035:45;3076:2;3065:9;3061:18;3053:6;3035:45;:::i;3091:180::-;3150:6;3203:2;3191:9;3182:7;3178:23;3174:32;3171:52;;;3219:1;3216;3209:12;3171:52;-1:-1:-1;3242:23:16;;3091:180;-1:-1:-1;3091:180:16:o;3507:154::-;3593:42;3586:5;3582:54;3575:5;3572:65;3562:93;;3651:1;3648;3641:12;3666:315;3734:6;3742;3795:2;3783:9;3774:7;3770:23;3766:32;3763:52;;;3811:1;3808;3801:12;3763:52;3850:9;3837:23;3869:31;3894:5;3869:31;:::i;:::-;3919:5;3971:2;3956:18;;;;3943:32;;-1:-1:-1;;;3666:315:16:o;4168:255::-;4235:6;4288:2;4276:9;4267:7;4263:23;4259:32;4256:52;;;4304:1;4301;4294:12;4256:52;4343:9;4330:23;4362:31;4387:5;4362:31;:::i;4680:456::-;4757:6;4765;4773;4826:2;4814:9;4805:7;4801:23;4797:32;4794:52;;;4842:1;4839;4832:12;4794:52;4881:9;4868:23;4900:31;4925:5;4900:31;:::i;:::-;4950:5;-1:-1:-1;5007:2:16;4992:18;;4979:32;5020:33;4979:32;5020:33;:::i;:::-;4680:456;;5072:7;;-1:-1:-1;;;5126:2:16;5111:18;;;;5098:32;;4680:456::o;5141:632::-;5312:2;5364:21;;;5434:13;;5337:18;;;5456:22;;;5283:4;;5312:2;5535:15;;;;5509:2;5494:18;;;5283:4;5578:169;5592:6;5589:1;5586:13;5578:169;;;5653:13;;5641:26;;5722:15;;;;5687:12;;;;5614:1;5607:9;5578:169;;;-1:-1:-1;5764:3:16;;5141:632;-1:-1:-1;;;;;;5141:632:16:o;5778:160::-;5843:20;;5899:13;;5892:21;5882:32;;5872:60;;5928:1;5925;5918:12;5872:60;5778:160;;;:::o;5943:180::-;5999:6;6052:2;6040:9;6031:7;6027:23;6023:32;6020:52;;;6068:1;6065;6058:12;6020:52;6091:26;6107:9;6091:26;:::i;6128:367::-;6191:8;6201:6;6255:3;6248:4;6240:6;6236:17;6232:27;6222:55;;6273:1;6270;6263:12;6222:55;-1:-1:-1;6296:20:16;;6339:18;6328:30;;6325:50;;;6371:1;6368;6361:12;6325:50;6408:4;6400:6;6396:17;6384:29;;6468:3;6461:4;6451:6;6448:1;6444:14;6436:6;6432:27;6428:38;6425:47;6422:67;;;6485:1;6482;6475:12;6422:67;6128:367;;;;;:::o;6500:773::-;6622:6;6630;6638;6646;6699:2;6687:9;6678:7;6674:23;6670:32;6667:52;;;6715:1;6712;6705:12;6667:52;6755:9;6742:23;6784:18;6825:2;6817:6;6814:14;6811:34;;;6841:1;6838;6831:12;6811:34;6880:70;6942:7;6933:6;6922:9;6918:22;6880:70;:::i;:::-;6969:8;;-1:-1:-1;6854:96:16;-1:-1:-1;7057:2:16;7042:18;;7029:32;;-1:-1:-1;7073:16:16;;;7070:36;;;7102:1;7099;7092:12;7070:36;;7141:72;7205:7;7194:8;7183:9;7179:24;7141:72;:::i;:::-;6500:773;;;;-1:-1:-1;7232:8:16;-1:-1:-1;;;;6500:773:16:o;7278:315::-;7343:6;7351;7404:2;7392:9;7383:7;7379:23;7375:32;7372:52;;;7420:1;7417;7410:12;7372:52;7459:9;7446:23;7478:31;7503:5;7478:31;:::i;:::-;7528:5;-1:-1:-1;7552:35:16;7583:2;7568:18;;7552:35;:::i;:::-;7542:45;;7278:315;;;;;:::o;7598:795::-;7693:6;7701;7709;7717;7770:3;7758:9;7749:7;7745:23;7741:33;7738:53;;;7787:1;7784;7777:12;7738:53;7826:9;7813:23;7845:31;7870:5;7845:31;:::i;:::-;7895:5;-1:-1:-1;7952:2:16;7937:18;;7924:32;7965:33;7924:32;7965:33;:::i;:::-;8017:7;-1:-1:-1;8071:2:16;8056:18;;8043:32;;-1:-1:-1;8126:2:16;8111:18;;8098:32;8153:18;8142:30;;8139:50;;;8185:1;8182;8175:12;8139:50;8208:22;;8261:4;8253:13;;8249:27;-1:-1:-1;8239:55:16;;8290:1;8287;8280:12;8239:55;8313:74;8379:7;8374:2;8361:16;8356:2;8352;8348:11;8313:74;:::i;:::-;8303:84;;;7598:795;;;;;;;:::o;8398:437::-;8484:6;8492;8545:2;8533:9;8524:7;8520:23;8516:32;8513:52;;;8561:1;8558;8551:12;8513:52;8601:9;8588:23;8634:18;8626:6;8623:30;8620:50;;;8666:1;8663;8656:12;8620:50;8705:70;8767:7;8758:6;8747:9;8743:22;8705:70;:::i;:::-;8794:8;;8679:96;;-1:-1:-1;8398:437:16;-1:-1:-1;;;;8398:437:16:o;8840:388::-;8908:6;8916;8969:2;8957:9;8948:7;8944:23;8940:32;8937:52;;;8985:1;8982;8975:12;8937:52;9024:9;9011:23;9043:31;9068:5;9043:31;:::i;:::-;9093:5;-1:-1:-1;9150:2:16;9135:18;;9122:32;9163:33;9122:32;9163:33;:::i;:::-;9215:7;9205:17;;;8840:388;;;;;:::o;9594:437::-;9673:1;9669:12;;;;9716;;;9737:61;;9791:4;9783:6;9779:17;9769:27;;9737:61;9844:2;9836:6;9833:14;9813:18;9810:38;9807:218;;;9881:77;9878:1;9871:88;9982:4;9979:1;9972:15;10010:4;10007:1;10000:15;9807:218;;9594:437;;;:::o;11965:251::-;12035:6;12088:2;12076:9;12067:7;12063:23;12059:32;12056:52;;;12104:1;12101;12094:12;12056:52;12136:9;12130:16;12155:31;12180:5;12155:31;:::i;12981:184::-;13033:77;13030:1;13023:88;13130:4;13127:1;13120:15;13154:4;13151:1;13144:15;13170:128;13210:3;13241:1;13237:6;13234:1;13231:13;13228:39;;;13247:18;;:::i;:::-;-1:-1:-1;13283:9:16;;13170:128::o;13303:228::-;13343:7;13469:1;13401:66;13397:74;13394:1;13391:81;13386:1;13379:9;13372:17;13368:105;13365:131;;;13476:18;;:::i;:::-;-1:-1:-1;13516:9:16;;13303:228::o;13536:184::-;13588:77;13585:1;13578:88;13685:4;13682:1;13675:15;13709:4;13706:1;13699:15;13725:120;13765:1;13791;13781:35;;13796:18;;:::i;:::-;-1:-1:-1;13830:9:16;;13725:120::o;13850:125::-;13890:4;13918:1;13915;13912:8;13909:34;;;13923:18;;:::i;:::-;-1:-1:-1;13960:9:16;;13850:125::o;15471:184::-;15523:77;15520:1;15513:88;15620:4;15617:1;15610:15;15644:4;15641:1;15634:15;15660:195;15699:3;15730:66;15723:5;15720:77;15717:103;;;15800:18;;:::i;:::-;-1:-1:-1;15847:1:16;15836:13;;15660:195::o;18977:470::-;19156:3;19194:6;19188:13;19210:53;19256:6;19251:3;19244:4;19236:6;19232:17;19210:53;:::i;:::-;19326:13;;19285:16;;;;19348:57;19326:13;19285:16;19382:4;19370:17;;19348:57;:::i;:::-;19421:20;;18977:470;-1:-1:-1;;;;18977:470:16:o;19452:184::-;19522:6;19575:2;19563:9;19554:7;19550:23;19546:32;19543:52;;;19591:1;19588;19581:12;19543:52;-1:-1:-1;19614:16:16;;19452:184;-1:-1:-1;19452:184:16:o;23183:112::-;23215:1;23241;23231:35;;23246:18;;:::i;:::-;-1:-1:-1;23280:9:16;;23183:112::o;24018:512::-;24212:4;24241:42;24322:2;24314:6;24310:15;24299:9;24292:34;24374:2;24366:6;24362:15;24357:2;24346:9;24342:18;24335:43;;24414:6;24409:2;24398:9;24394:18;24387:34;24457:3;24452:2;24441:9;24437:18;24430:31;24478:46;24519:3;24508:9;24504:19;24496:6;24478:46;:::i;:::-;24470:54;24018:512;-1:-1:-1;;;;;;24018:512:16:o;24535:249::-;24604:6;24657:2;24645:9;24636:7;24632:23;24628:32;24625:52;;;24673:1;24670;24663:12;24625:52;24705:9;24699:16;24724:30;24748:5;24724:30;:::i
Swarm Source
ipfs://5cfa6f0d03a4f792c44f626121e022a3a8b233484a079b80e2037ea4ea2af467
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.