Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,380 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Claim Doges | 19002219 | 173 days ago | IN | 0 ETH | 0.00051841 | ||||
Claim Doges | 15111434 | 726 days ago | IN | 0 ETH | 0.00123809 | ||||
Claim Doges | 15111431 | 726 days ago | IN | 0 ETH | 0.00462733 | ||||
Claim Doges | 14404575 | 841 days ago | IN | 0 ETH | 0.00847096 | ||||
Claim Doges | 14401761 | 841 days ago | IN | 0 ETH | 0.00385854 | ||||
Claim Doges | 14401142 | 841 days ago | IN | 0 ETH | 0.0046533 | ||||
Buy Open | 14399836 | 841 days ago | IN | 0.1 ETH | 0.0010979 | ||||
Buy Open | 14399836 | 841 days ago | IN | 0.1 ETH | 0.00111186 | ||||
Buy Open | 14399836 | 841 days ago | IN | 0.1 ETH | 0.0011122 | ||||
Buy Open | 14399836 | 841 days ago | IN | 0.1 ETH | 0.00111186 | ||||
Buy Open | 14399836 | 841 days ago | IN | 0.1 ETH | 0.00111186 | ||||
Buy Open | 14399836 | 841 days ago | IN | 0.1 ETH | 0.00111186 | ||||
Buy Open | 14399836 | 841 days ago | IN | 0.1 ETH | 0.00111186 | ||||
Buy Open | 14399836 | 841 days ago | IN | 0.1 ETH | 0.00111186 | ||||
Buy Open | 14399836 | 841 days ago | IN | 0.1 ETH | 0.0011122 | ||||
Buy Open | 14399811 | 841 days ago | IN | 0.1 ETH | 0.00132985 | ||||
Claim Doges | 14391203 | 843 days ago | IN | 0 ETH | 0.00315995 | ||||
Claim Doges | 14390954 | 843 days ago | IN | 0 ETH | 0.00144012 | ||||
Claim Doges | 14390084 | 843 days ago | IN | 0 ETH | 0.00184469 | ||||
Claim Doges | 14385620 | 843 days ago | IN | 0 ETH | 0.00354488 | ||||
Claim Doges | 14377116 | 845 days ago | IN | 0 ETH | 0.00171681 | ||||
Claim Doges | 14372568 | 846 days ago | IN | 0 ETH | 0.00304692 | ||||
Claim Doges | 14370765 | 846 days ago | IN | 0 ETH | 0.00150985 | ||||
Claim Doges | 14365891 | 847 days ago | IN | 0 ETH | 0.00286523 | ||||
Claim Doges | 14365492 | 847 days ago | IN | 0 ETH | 0.00221461 |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
BoredDogeClubSaleContract
Compiler Version
v0.8.12+commit.f00d7308
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.12; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import { MerkleProof } from "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; /** * @notice Represents NFT Smart Contract */ contract IBoredDogeClubERC721 { /** * @dev ERC-721 INTERFACE */ function ownerOf(uint256 tokenId) public view virtual returns (address) {} /** * @dev CUSTOM INTERFACE */ function mintTo(uint256 amount, address _to) external {} function getNextTokenId() external view returns(uint256) {} function exists(uint256 tokenId) external view returns(bool) {} } /** * @title BoredDogeClubSaleContract. * * @notice This Smart Contract can be used to sell a fixed amount of NFTs where some of them are * sold to permissioned wallets and the others are sold to the general public. * * @dev The primary mode of verifying permissioned actions is through Merkle Proofs * which are generated off-chain. */ contract BoredDogeClubSaleContract is Ownable { /** * @notice The Smart Contract of the NFT being sold * @dev ERC-721 Smart Contract */ IBoredDogeClubERC721 public immutable boredDoge; /** * @dev Mutant Doge Address */ address public MutantDoge; /** * @dev MINT DATA */ uint256 public totalSupply = 5000; uint256 public maxSupplyPermissioned = 5000; uint256 public mintedPermissioned = 0; uint256 public mintedOpen = 0; uint256 public limitOpen = 5; uint256 public pricePermissioned = 0.1 ether; uint256 public priceOpen = 0.1 ether; uint256 public startPermissioned = 1645632000; uint256 public durationPermissioned = 365 days; bool public isStartedOpen; mapping(address => mapping(uint256 => uint256)) public addressToMints; /** * @dev MERKLE ROOTS * * @dev Initial value is randomly generated from https://www.random.org/ */ bytes32 public merkleRoot = ""; /** * @dev DEVELOPER */ address public immutable devAddress; uint256 public immutable devShare; /** * @dev Claiming */ uint256 public claimStart = 1645804800; mapping(uint256 => uint256) public hasDogeClaimed; // 0 = false | 1 = true mapping(uint256 => uint256) public dogeToTransferMethod; // 0 = none | 1 = minted | 2 = claimed /** * @dev Events */ event ReceivedEther(address indexed sender, uint256 indexed amount); event Purchase(address indexed buyer, uint256 indexed amount, bool indexed permissioned); event setTotalSupplyEvent(uint256 indexed maxSupply); event setMaxSupplyPermissionedEvent(uint256 indexed maxSupply); event setLimitOpenEvent(uint256 indexed limit); event setPricePermissionedEvent(uint256 indexed price); event setPriceOpenEvent(uint256 indexed price); event setStartTimePermissionedEvent(uint256 indexed startTime); event setDurationPermissionedEvent(uint256 indexed duration); event setIsStartedOpenEvent(bool indexed isStarted); event setMerkleRootEvent(bytes32 indexed merkleRoot); event WithdrawAllEvent(address indexed to, uint256 amount); event Claim(address indexed claimer, uint256 indexed amount); event setClaimStartEvent(uint256 indexed time); event setMutantDogeAddressEvent(address indexed mutant); constructor( address _boredDogeAddress ) Ownable() { boredDoge = IBoredDogeClubERC721(_boredDogeAddress); devAddress = 0x841d534CAa0993c677f21abd8D96F5d7A584ad81; devShare = 1; } /** * @dev SALE */ /** * @dev Returns the leftovers from raffle mint * regarding the total supply. */ function maxSupplyOpen() public view returns(uint256) { return totalSupply - mintedPermissioned; } /** * @notice Function to buy one or more NFTs. * @dev First the Merkle Proof is verified. * Then the mint is verified with the data embedded in the Merkle Proof. * Finally the NFTs are minted to the user's wallet. * * @param amount. The amount of NFTs to buy. * @param mintMaxAmount. The max amount the user can mint. * @param proof. The Merkle Proof of the user. */ function buyPermissioned(uint256 amount, uint256 mintMaxAmount, bytes32[] calldata proof) external payable { /// @dev Verifies Merkle Proof submitted by user. /// @dev All mint data is embedded in the merkle proof. bytes32 leaf = keccak256(abi.encodePacked(msg.sender, mintMaxAmount)); require(MerkleProof.verify(proof, merkleRoot, leaf), "INVALID PROOF"); /// @dev Verifies that user can perform permissioned mint based on the provided parameters. require(address(boredDoge) != address(0), "NFT SMART CONTRACT NOT SET"); require(merkleRoot != "" && !isStartedOpen, "PERMISSIONED SALE CLOSED"); require(amount > 0, "HAVE TO BUY AT LEAST 1"); require(addressToMints[msg.sender][1] + amount <= mintMaxAmount, "MINT AMOUNT EXCEEDS MAX FOR USER"); require(mintedPermissioned + amount <= maxSupplyPermissioned, "MINT AMOUNT GOES OVER MAX SUPPLY"); require(msg.value >= pricePermissioned * amount, "ETHER SENT NOT CORRECT"); require(block.timestamp < startPermissioned + durationPermissioned, "PERMISSIONED SALE IS CLOSED"); require(block.timestamp >= startPermissioned, "PERMISSIONED SALE HASN'T STARTED YET"); /// @dev Updates contract variables and mints `amount` NFTs to users wallet mintedPermissioned += amount; addressToMints[msg.sender][1] += amount; /// @dev Register that these Doges were minted dogeToTransferMethod[boredDoge.getNextTokenId()] = 1; boredDoge.mintTo(amount, msg.sender); emit Purchase(msg.sender, amount, true); } /** * @notice Function to buy one or more NFTs. * * @param amount. The amount of NFTs to buy. */ function buyOpen(uint256 amount) external payable { /// @dev Verifies that user can perform open mint based on the provided parameters. require(address(boredDoge) != address(0), "NFT SMART CONTRACT NOT SET"); require(isStartedOpen, "OPEN SALE CLOSED"); require(amount > 0, "HAVE TO BUY AT LEAST 1"); require(addressToMints[msg.sender][2] + amount <= limitOpen, "MINT AMOUNT EXCEEDS MAX FOR USER"); require(mintedOpen + amount <= maxSupplyOpen(), "MINT AMOUNT GOES OVER MAX SUPPLY"); require(msg.value >= priceOpen * amount, "ETHER SENT NOT CORRECT"); /// @dev Updates contract variables and mints `amount` NFTs to users wallet mintedOpen += amount; addressToMints[msg.sender][2] += amount; /// @dev Register that these Doges were minted dogeToTransferMethod[boredDoge.getNextTokenId()] = 1; boredDoge.mintTo(amount, msg.sender); emit Purchase(msg.sender, amount, false); } /** * @dev CLAIMING */ /** * @dev Method to check if a doge was minted or claimed. * Method starts at dogeId and traverses lastDogeTransferStatus * mapping until it finds a non zero status. If the status is 1 * the doge was minted. Otherwise it was claimed. A value will always * be found as each mint or claim updates the mapping. * * @param dogeId. The id of the doge to query */ function wasDogeMinted(uint256 dogeId) internal view returns(bool) { if (!boredDoge.exists(dogeId)) return false; uint lastDogeTransferStatus; for (uint i = dogeId; i >= 0; i--) { if (dogeToTransferMethod[i] != 0) { lastDogeTransferStatus = dogeToTransferMethod[i]; break; } } return lastDogeTransferStatus == 1; } /** * @notice Claim Bored Doge by providing your Bored Doge Ids * @dev Mints amount of Bored Doges to sender as valid Bored Doge bought * provided. Validity depends on ownership, not having claimed yet and * whether the doges were minted. * * @param doges. The tokenIds of the doges. */ function claimDoges(uint256[] calldata doges) external { require(address(boredDoge) != address(0), "DOGES NFT NOT SET"); require(doges.length > 0, "NO IDS SUPPLIED"); require(block.timestamp >= claimStart, "CANNOT CLAIM YET"); /// @dev Check if sender is owner of all DOGEs and that they haven't claimed yet /// @dev Update claim status of each DOGE for (uint256 i = 0; i < doges.length; i++) { uint256 DOGEId = doges[i]; require(IERC721( address(boredDoge) ).ownerOf(DOGEId) == msg.sender, "NOT OWNER OF DOGE"); require(hasDogeClaimed[DOGEId] == 0, "DOGE HAS ALREADY CLAIMED DOGE"); require(wasDogeMinted(DOGEId), "DOGE WAS NOT MINTED"); hasDogeClaimed[DOGEId] = 1; } /// @dev Register that these Doges were claimed dogeToTransferMethod[boredDoge.getNextTokenId()] = 2; boredDoge.mintTo(doges.length, msg.sender); emit Claim(msg.sender, doges.length); } /** * @notice View which of your Bored Doges can still their Bored Doges * @dev Given an array of Bored Doges ids returns a subset of ids that * can still claim a Bored Doge. Used off chain to provide input of Bored Doges method. * * @param doges. The tokenIds of the doges. */ function getStillClaimableDogesFromIds(uint256[] calldata doges) external view returns (uint256[] memory) { require(doges.length > 0, "NO IDS SUPPLIED"); uint256 length = doges.length; uint256[] memory notClaimedDoges = new uint256[](length); uint256 counter; /// @dev Check if sender is owner of all doges and that they haven't claimed yet /// @dev Update claim status of each doge for (uint256 i = 0; i < doges.length; i++) { uint256 dogeId = doges[i]; if (hasDogeClaimed[dogeId] == 0 && wasDogeMinted(dogeId)) { notClaimedDoges[counter] = dogeId; counter++; } } return notClaimedDoges; } /** * @dev OWNER ONLY */ /** * @notice Change the maximum supply of NFTs that are for sale in permissioned sale. * * @param newMaxSupply. The new max supply. */ function setMaxSupplyPermissioned(uint256 newMaxSupply) external onlyOwner { maxSupplyPermissioned = newMaxSupply; emit setMaxSupplyPermissionedEvent(newMaxSupply); } /** * @notice Change the total supply of NFTs that are for sale. * * @param newTotalSupply. The new total supply. */ function setTotalSupply(uint256 newTotalSupply) external onlyOwner { totalSupply = newTotalSupply; emit setTotalSupplyEvent(newTotalSupply); } /** * @notice Change the limit of NFTs per wallet in open sale. * * @param newLimitOpen. The new max supply. */ function setLimitOpen(uint256 newLimitOpen) external onlyOwner { limitOpen = newLimitOpen; emit setLimitOpenEvent(newLimitOpen); } /** * @notice Change the price of NFTs that are for sale in open sale. * * @param newPricePermissioned. The new max supply. */ function setPricePermissioned(uint256 newPricePermissioned) external onlyOwner { pricePermissioned = newPricePermissioned; emit setPriceOpenEvent(newPricePermissioned); } /** * @notice Change the price of NFTs that are for sale in open sale. * * @param newPriceOpen. The new max supply. */ function setPriceOpen(uint256 newPriceOpen) external onlyOwner { priceOpen = newPriceOpen; emit setPriceOpenEvent(newPriceOpen); } /** * @notice Change the startTime of the permissioned sale. * * @param startTime. The new start time. */ function setStartTimePermissioned(uint256 startTime) external onlyOwner { startPermissioned = startTime; emit setStartTimePermissionedEvent(startTime); } /** * @notice Change the duration of the permissioned sale. * * @param duration. The new duration. */ function setDurationPermissioned(uint256 duration) external onlyOwner { durationPermissioned = duration; emit setDurationPermissionedEvent(duration); } /** * @notice Change the startTime of the open sale. * * @param newIsStarted. The new public sale status. */ function setIsStartedOpen(bool newIsStarted) external onlyOwner { isStartedOpen = newIsStarted; emit setIsStartedOpenEvent(newIsStarted); } /** * @notice Change the merkleRoot of the sale. * * @param newRoot. The new merkleRoot. */ function setMerkleRoot(bytes32 newRoot) external onlyOwner { merkleRoot = newRoot; emit setMerkleRootEvent(newRoot); } /** * @dev Set's the new start time for claiming * * @param newClaimStart. The new claim start time. */ function setClaimStart(uint256 newClaimStart) external onlyOwner { claimStart = newClaimStart; emit setClaimStartEvent(newClaimStart); } /** * @dev Set's the address for the future mutant doge collection * * @param _mutant. The address of mutant doge */ function setMutantDogeAddress(address _mutant) external onlyOwner { MutantDoge = _mutant; emit setMutantDogeAddressEvent(_mutant); } /** * @dev FINANCE */ /** * @notice Allows owner to withdraw funds generated from sale. * * @param _to. The address to send the funds to. */ function withdrawAll(address _to) external onlyOwner { require(_to != address(0), "CANNOT WITHDRAW TO ZERO ADDRESS"); uint256 contractBalance = address(this).balance; require(contractBalance > 0, "NO ETHER TO WITHDRAW"); uint256 developerCut = contractBalance * devShare / 100; uint remaining = contractBalance - developerCut; payable(devAddress).transfer(developerCut); payable(_to).transfer(remaining); emit WithdrawAllEvent(_to, remaining); } /** * @dev Fallback function for receiving Ether */ receive() external payable { emit ReceivedEther(msg.sender, msg.value); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/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() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../utils/introspection/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 // OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Trees proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. * * _Available since v4.4._ */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = _efficientHash(computedHash, proofElement); } else { // Hash(current element of the proof + current computed hash) computedHash = _efficientHash(proofElement, computedHash); } } return computedHash; } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ 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); }
{ "optimizer": { "enabled": true, "runs": 1000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_boredDogeAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"claimer","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"bool","name":"permissioned","type":"bool"}],"name":"Purchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReceivedEther","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawAllEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"time","type":"uint256"}],"name":"setClaimStartEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"duration","type":"uint256"}],"name":"setDurationPermissionedEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"isStarted","type":"bool"}],"name":"setIsStartedOpenEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"limit","type":"uint256"}],"name":"setLimitOpenEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxSupply","type":"uint256"}],"name":"setMaxSupplyPermissionedEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"merkleRoot","type":"bytes32"}],"name":"setMerkleRootEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"mutant","type":"address"}],"name":"setMutantDogeAddressEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"price","type":"uint256"}],"name":"setPriceOpenEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"price","type":"uint256"}],"name":"setPricePermissionedEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"startTime","type":"uint256"}],"name":"setStartTimePermissionedEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxSupply","type":"uint256"}],"name":"setTotalSupplyEvent","type":"event"},{"inputs":[],"name":"MutantDoge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"addressToMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"boredDoge","outputs":[{"internalType":"contract IBoredDogeClubERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyOpen","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"mintMaxAmount","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"buyPermissioned","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"doges","type":"uint256[]"}],"name":"claimDoges","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dogeToTransferMethod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"durationPermissioned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"doges","type":"uint256[]"}],"name":"getStillClaimableDogesFromIds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"hasDogeClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isStartedOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitOpen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyOpen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyPermissioned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintedOpen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintedPermissioned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceOpen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pricePermissioned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newClaimStart","type":"uint256"}],"name":"setClaimStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"setDurationPermissioned","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newIsStarted","type":"bool"}],"name":"setIsStartedOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimitOpen","type":"uint256"}],"name":"setLimitOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxSupply","type":"uint256"}],"name":"setMaxSupplyPermissioned","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"newRoot","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_mutant","type":"address"}],"name":"setMutantDogeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPriceOpen","type":"uint256"}],"name":"setPriceOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPricePermissioned","type":"uint256"}],"name":"setPricePermissioned","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"startTime","type":"uint256"}],"name":"setStartTimePermissioned","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTotalSupply","type":"uint256"}],"name":"setTotalSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startPermissioned","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e060405261138860025561138860035560006004556000600555600560065567016345785d8a000060075567016345785d8a00006008556362165a006009556301e13380600a556000600d55636218fd00600e553480156200006157600080fd5b506040516200269e3803806200269e83398101604081905262000084916200010e565b6200008f33620000be565b6001600160a01b031660805273841d534caa0993c677f21abd8d96f5d7a584ad8160a052600160c05262000140565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200012157600080fd5b81516001600160a01b03811681146200013957600080fd5b9392505050565b60805160a05160c0516124d3620001cb6000396000818161061e0152611e7f0152600081816103d20152611ecc0152600081816106df015281816108a301528181610c2001528181610cd801528181610e0c015281816110ac01528181611164015281816116fc0152818161184301528181611a0401528181611ab4015261203b01526124d36000f3fe6080604052600436106102a45760003560e01c8063807300471161016e578063b565f9fb116100cb578063f2fde38b1161007f578063f7ea7a3d11610064578063f7ea7a3d14610757578063fa09e63014610777578063fbb3290a1461079757600080fd5b8063f2fde38b14610717578063f33d44f41461073757600080fd5b8063c827f688116100b0578063c827f688146106a3578063d0ae29d0146106cd578063f04d688f1461070157600080fd5b8063b565f9fb14610660578063c3366b671461068d57600080fd5b806393cf0a9511610122578063a727ed8d11610107578063a727ed8d146105ec578063aed04fae1461060c578063b0aa1e041461064057600080fd5b806393cf0a95146105a9578063a51fd382146105bf57600080fd5b806389f7e5c21161015357806389f7e5c2146105555780638da5cb5b1461056b578063925af4151461058957600080fd5b80638073004714610515578063820fee561461053557600080fd5b80633dc3e3d31161021c5780635d761844116101d05780636a08e189116101b55780636a08e189146104c0578063715018a6146104e05780637cb64759146104f557600080fd5b80635d7618441461048a578063621fe75c146104a057600080fd5b8063495ef6c311610201578063495ef6c31461043f57806350654ca71461045f5780635670f57c1461047557600080fd5b80633dc3e3d31461040c57806343a6291b1461041f57600080fd5b80631eb5e97c116102735780632eb4a7ab116102585780632eb4a7ab146103945780632ec4154a146103aa5780633ad10ef6146103c057600080fd5b80631eb5e97c1461035e5780631fc4f74a1461037457600080fd5b806308a50a87146102dd57806313740a7c14610306578063143c44661461031b57806318160ddd1461034857600080fd5b366102d857604051349033907fa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf190600090a3005b600080fd5b3480156102e957600080fd5b506102f360065481565b6040519081526020015b60405180910390f35b6103196103143660046121c4565b6107cf565b005b34801561032757600080fd5b506102f3610336366004612217565b600f6020526000908152604090205481565b34801561035457600080fd5b506102f360025481565b34801561036a57600080fd5b506102f3600a5481565b34801561038057600080fd5b5061031961038f366004612245565b610d6b565b3480156103a057600080fd5b506102f3600d5481565b3480156103b657600080fd5b506102f360075481565b3480156103cc57600080fd5b506103f47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102fd565b61031961041a366004612217565b610e0a565b34801561042b57600080fd5b506001546103f4906001600160a01b031681565b34801561044b57600080fd5b5061031961045a366004612277565b6111f2565b34801561046b57600080fd5b506102f360045481565b34801561048157600080fd5b506102f3611277565b34801561049657600080fd5b506102f360095481565b3480156104ac57600080fd5b506103196104bb366004612217565b61128e565b3480156104cc57600080fd5b506103196104db366004612217565b611309565b3480156104ec57600080fd5b50610319611384565b34801561050157600080fd5b50610319610510366004612217565b6113d8565b34801561052157600080fd5b50610319610530366004612217565b611453565b34801561054157600080fd5b50610319610550366004612217565b6114ce565b34801561056157600080fd5b506102f360035481565b34801561057757600080fd5b506000546001600160a01b03166103f4565b34801561059557600080fd5b506103196105a4366004612217565b611549565b3480156105b557600080fd5b506102f360055481565b3480156105cb57600080fd5b506105df6105da366004612294565b6115c4565b6040516102fd91906122d6565b3480156105f857600080fd5b50610319610607366004612294565b6116fa565b34801561061857600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b34801561064c57600080fd5b5061031961065b366004612217565b611b49565b34801561066c57600080fd5b506102f361067b366004612217565b60106020526000908152604090205481565b34801561069957600080fd5b506102f360085481565b3480156106af57600080fd5b50600b546106bd9060ff1681565b60405190151581526020016102fd565b3480156106d957600080fd5b506103f47f000000000000000000000000000000000000000000000000000000000000000081565b34801561070d57600080fd5b506102f3600e5481565b34801561072357600080fd5b50610319610732366004612245565b611bc4565b34801561074357600080fd5b50610319610752366004612217565b611c94565b34801561076357600080fd5b50610319610772366004612217565b611d0f565b34801561078357600080fd5b50610319610792366004612245565b611d8a565b3480156107a357600080fd5b506102f36107b236600461231a565b600c60209081526000928352604080842090915290825290205481565b6040516bffffffffffffffffffffffff193360601b1660208201526034810184905260009060540160405160208183030381529060405280519060200120905061085083838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600d549150849050611f96565b6108a15760405162461bcd60e51b815260206004820152600d60248201527f494e56414c49442050524f4f460000000000000000000000000000000000000060448201526064015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109175760405162461bcd60e51b815260206004820152601a60248201527f4e465420534d41525420434f4e5452414354204e4f54205345540000000000006044820152606401610898565b600d541580159061092b5750600b5460ff16155b6109775760405162461bcd60e51b815260206004820152601860248201527f5045524d495353494f4e45442053414c4520434c4f53454400000000000000006044820152606401610898565b600085116109c75760405162461bcd60e51b815260206004820152601660248201527f4841564520544f20425559204154204c454153542031000000000000000000006044820152606401610898565b336000908152600c602090815260408083206001845290915290205484906109f090879061235c565b1115610a3e5760405162461bcd60e51b815260206004820181905260248201527f4d494e5420414d4f554e542045584345454453204d415820464f5220555345526044820152606401610898565b60035485600454610a4f919061235c565b1115610a9d5760405162461bcd60e51b815260206004820181905260248201527f4d494e5420414d4f554e5420474f4553204f564552204d415820535550504c596044820152606401610898565b84600754610aab9190612374565b341015610afa5760405162461bcd60e51b815260206004820152601660248201527f45544845522053454e54204e4f5420434f5252454354000000000000000000006044820152606401610898565b600a54600954610b0a919061235c565b4210610b585760405162461bcd60e51b815260206004820152601b60248201527f5045524d495353494f4e45442053414c4520495320434c4f53454400000000006044820152606401610898565b600954421015610bcf5760405162461bcd60e51b8152602060048201526024808201527f5045524d495353494f4e45442053414c45204841534e2754205354415254454460448201527f20594554000000000000000000000000000000000000000000000000000000006064820152608401610898565b8460046000828254610be1919061235c565b9091555050336000908152600c602090815260408083206001845290915281208054879290610c1190849061235c565b925050819055506001601060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663caa0f92a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca09190612393565b8152602081019190915260409081016000209190915551635b91d9a760e11b8152600481018690523360248201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b723b34e90604401600060405180830381600087803b158015610d1c57600080fd5b505af1158015610d30573d6000803e3d6000fd5b50506040516001925087915033907f1d61142c2c6c7bca70470912f4bb5e385638b745dd1da048b6f9bb4c3ee3500590600090a45050505050565b6000546001600160a01b03163314610db35760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f6f7105366ad4e196ea8eda20c4f3555e6df847504de2b7081bcd5180b09162d390600090a250565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e805760405162461bcd60e51b815260206004820152601a60248201527f4e465420534d41525420434f4e5452414354204e4f54205345540000000000006044820152606401610898565b600b5460ff16610ed25760405162461bcd60e51b815260206004820152601060248201527f4f50454e2053414c4520434c4f534544000000000000000000000000000000006044820152606401610898565b60008111610f225760405162461bcd60e51b815260206004820152601660248201527f4841564520544f20425559204154204c454153542031000000000000000000006044820152606401610898565b600654336000908152600c6020908152604080832060028452909152902054610f4c90839061235c565b1115610f9a5760405162461bcd60e51b815260206004820181905260248201527f4d494e5420414d4f554e542045584345454453204d415820464f5220555345526044820152606401610898565b610fa2611277565b81600554610fb0919061235c565b1115610ffe5760405162461bcd60e51b815260206004820181905260248201527f4d494e5420414d4f554e5420474f4553204f564552204d415820535550504c596044820152606401610898565b8060085461100c9190612374565b34101561105b5760405162461bcd60e51b815260206004820152601660248201527f45544845522053454e54204e4f5420434f5252454354000000000000000000006044820152606401610898565b806005600082825461106d919061235c565b9091555050336000908152600c60209081526040808320600284529091528120805483929061109d90849061235c565b925050819055506001601060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663caa0f92a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112c9190612393565b8152602081019190915260409081016000209190915551635b91d9a760e11b8152600481018290523360248201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b723b34e90604401600060405180830381600087803b1580156111a857600080fd5b505af11580156111bc573d6000803e3d6000fd5b50506040516000925083915033907f1d61142c2c6c7bca70470912f4bb5e385638b745dd1da048b6f9bb4c3ee35005908490a450565b6000546001600160a01b0316331461123a5760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600b805460ff19168215159081179091556040517f958b75fd199da50653b8845d7641b75a4bc389a4a81b504e0fd4ebd1efa66b0190600090a250565b600060045460025461128991906123ac565b905090565b6000546001600160a01b031633146112d65760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600881905560405181907f1531ce8145d3c9595a0bfbdfe3457c8f072a34a2e1be798af28b00aeb8133d2a90600090a250565b6000546001600160a01b031633146113515760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600981905560405181907fae74bd9531ba7b561608cb1f901b7dd78990dcc05ffecea49426de21d2ffb1f190600090a250565b6000546001600160a01b031633146113cc5760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b6113d66000611fac565b565b6000546001600160a01b031633146114205760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600d81905560405181907f514d2649f6bc26024ef36a98d0bf2bd3b1212d7fceaf99f6086e9690d0032fc790600090a250565b6000546001600160a01b0316331461149b5760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600681905560405181907f0beaf7e887b86a012601a93e03439c8476fb8b145114a1136cace44e0dcf097a90600090a250565b6000546001600160a01b031633146115165760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600a81905560405181907fc2635786fd6466c598615fb1e1efe75244f970b10dbe327763618d623e92a6be90600090a250565b6000546001600160a01b031633146115915760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600781905560405181907f1531ce8145d3c9595a0bfbdfe3457c8f072a34a2e1be798af28b00aeb8133d2a90600090a250565b6060816116135760405162461bcd60e51b815260206004820152600f60248201527f4e4f2049445320535550504c49454400000000000000000000000000000000006044820152606401610898565b8160008167ffffffffffffffff81111561162f5761162f6123c3565b604051908082528060200260200182016040528015611658578160200160208202803683370190505b5090506000805b858110156116ef57600087878381811061167b5761167b6123d9565b905060200201359050600f60008281526020019081526020016000205460001480156116ab57506116ab81612009565b156116dc57808484815181106116c3576116c36123d9565b6020908102919091010152826116d8816123ef565b9350505b50806116e7816123ef565b91505061165f565b509095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117705760405162461bcd60e51b815260206004820152601160248201527f444f474553204e4654204e4f54205345540000000000000000000000000000006044820152606401610898565b806117bd5760405162461bcd60e51b815260206004820152600f60248201527f4e4f2049445320535550504c49454400000000000000000000000000000000006044820152606401610898565b600e5442101561180f5760405162461bcd60e51b815260206004820152601060248201527f43414e4e4f5420434c41494d20594554000000000000000000000000000000006044820152606401610898565b60005b818110156119fb57600083838381811061182e5761182e6123d9565b905060200201359050336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b815260040161188f91815260200190565b602060405180830381865afa1580156118ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d0919061240a565b6001600160a01b0316146119265760405162461bcd60e51b815260206004820152601160248201527f4e4f54204f574e4552204f4620444f47450000000000000000000000000000006044820152606401610898565b6000818152600f6020526040902054156119825760405162461bcd60e51b815260206004820152601d60248201527f444f47452048415320414c524541445920434c41494d454420444f47450000006044820152606401610898565b61198b81612009565b6119d75760405162461bcd60e51b815260206004820152601360248201527f444f474520574153204e4f54204d494e544544000000000000000000000000006044820152606401610898565b6000908152600f6020526040902060019055806119f3816123ef565b915050611812565b506002601060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663caa0f92a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a849190612393565b8152602081019190915260409081016000209190915551635b91d9a760e11b8152600481018290523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b723b34e90604401600060405180830381600087803b158015611b0057600080fd5b505af1158015611b14573d6000803e3d6000fd5b50506040518392503391507f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d490600090a35050565b6000546001600160a01b03163314611b915760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600e81905560405181907f0f70f1a1bad8a14a7cf22daf26172ddb72a044c301b0917d3b8ea5f944a882a490600090a250565b6000546001600160a01b03163314611c0c5760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b6001600160a01b038116611c885760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610898565b611c9181611fac565b50565b6000546001600160a01b03163314611cdc5760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600381905560405181907f1465344273e35ceadae241543fa6da3339c4b1b6cb0047b6aea165b83dfb794a90600090a250565b6000546001600160a01b03163314611d575760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600281905560405181907fae420023c4b60f64cbe0d108ab203bb213f939adbf58387b4ddeeccefb2a944490600090a250565b6000546001600160a01b03163314611dd25760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b6001600160a01b038116611e285760405162461bcd60e51b815260206004820152601f60248201527f43414e4e4f5420574954484452415720544f205a45524f2041444452455353006044820152606401610898565b4780611e765760405162461bcd60e51b815260206004820152601460248201527f4e4f20455448455220544f2057495448445241570000000000000000000000006044820152606401610898565b60006064611ea47f000000000000000000000000000000000000000000000000000000000000000084612374565b611eae9190612427565b90506000611ebc82846123ac565b6040519091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169083156108fc029084906000818181858888f19350505050158015611f15573d6000803e3d6000fd5b506040516001600160a01b0385169082156108fc029083906000818181858888f19350505050158015611f4c573d6000803e3d6000fd5b50836001600160a01b03167f2bd20150a637d72a74539599f66637c3ec4f6d3807458bf9e002061053ae167c82604051611f8891815260200190565b60405180910390a250505050565b600082611fa38584612104565b14949350505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040517f4f558e79000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634f558e7990602401602060405180830381865afa15801561208a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ae9190612449565b6120ba57506000919050565b6000825b600081815260106020526040902054156120e85760008181526010602052604090205491506120fa565b806120f281612466565b9150506120be565b5060011492915050565b600081815b8451811015612170576000858281518110612126576121266123d9565b6020026020010151905080831161214c576000838152602082905260409020925061215d565b600081815260208490526040902092505b5080612168816123ef565b915050612109565b509392505050565b60008083601f84011261218a57600080fd5b50813567ffffffffffffffff8111156121a257600080fd5b6020830191508360208260051b85010111156121bd57600080fd5b9250929050565b600080600080606085870312156121da57600080fd5b8435935060208501359250604085013567ffffffffffffffff8111156121ff57600080fd5b61220b87828801612178565b95989497509550505050565b60006020828403121561222957600080fd5b5035919050565b6001600160a01b0381168114611c9157600080fd5b60006020828403121561225757600080fd5b813561226281612230565b9392505050565b8015158114611c9157600080fd5b60006020828403121561228957600080fd5b813561226281612269565b600080602083850312156122a757600080fd5b823567ffffffffffffffff8111156122be57600080fd5b6122ca85828601612178565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b8181101561230e578351835292840192918401916001016122f2565b50909695505050505050565b6000806040838503121561232d57600080fd5b823561233881612230565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561236f5761236f612346565b500190565b600081600019048311821515161561238e5761238e612346565b500290565b6000602082840312156123a557600080fd5b5051919050565b6000828210156123be576123be612346565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060001982141561240357612403612346565b5060010190565b60006020828403121561241c57600080fd5b815161226281612230565b60008261244457634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561245b57600080fd5b815161226281612269565b60008161247557612475612346565b50600019019056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212205ec72abc7548a79405cdedf1c5f70844f04aafd64487f707449b270d6eaedcf264736f6c634300080c003300000000000000000000000004a4ac9c153c9deb8d98d4203c7d7756cdbefee1
Deployed Bytecode
0x6080604052600436106102a45760003560e01c8063807300471161016e578063b565f9fb116100cb578063f2fde38b1161007f578063f7ea7a3d11610064578063f7ea7a3d14610757578063fa09e63014610777578063fbb3290a1461079757600080fd5b8063f2fde38b14610717578063f33d44f41461073757600080fd5b8063c827f688116100b0578063c827f688146106a3578063d0ae29d0146106cd578063f04d688f1461070157600080fd5b8063b565f9fb14610660578063c3366b671461068d57600080fd5b806393cf0a9511610122578063a727ed8d11610107578063a727ed8d146105ec578063aed04fae1461060c578063b0aa1e041461064057600080fd5b806393cf0a95146105a9578063a51fd382146105bf57600080fd5b806389f7e5c21161015357806389f7e5c2146105555780638da5cb5b1461056b578063925af4151461058957600080fd5b80638073004714610515578063820fee561461053557600080fd5b80633dc3e3d31161021c5780635d761844116101d05780636a08e189116101b55780636a08e189146104c0578063715018a6146104e05780637cb64759146104f557600080fd5b80635d7618441461048a578063621fe75c146104a057600080fd5b8063495ef6c311610201578063495ef6c31461043f57806350654ca71461045f5780635670f57c1461047557600080fd5b80633dc3e3d31461040c57806343a6291b1461041f57600080fd5b80631eb5e97c116102735780632eb4a7ab116102585780632eb4a7ab146103945780632ec4154a146103aa5780633ad10ef6146103c057600080fd5b80631eb5e97c1461035e5780631fc4f74a1461037457600080fd5b806308a50a87146102dd57806313740a7c14610306578063143c44661461031b57806318160ddd1461034857600080fd5b366102d857604051349033907fa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf190600090a3005b600080fd5b3480156102e957600080fd5b506102f360065481565b6040519081526020015b60405180910390f35b6103196103143660046121c4565b6107cf565b005b34801561032757600080fd5b506102f3610336366004612217565b600f6020526000908152604090205481565b34801561035457600080fd5b506102f360025481565b34801561036a57600080fd5b506102f3600a5481565b34801561038057600080fd5b5061031961038f366004612245565b610d6b565b3480156103a057600080fd5b506102f3600d5481565b3480156103b657600080fd5b506102f360075481565b3480156103cc57600080fd5b506103f47f000000000000000000000000841d534caa0993c677f21abd8d96f5d7a584ad8181565b6040516001600160a01b0390911681526020016102fd565b61031961041a366004612217565b610e0a565b34801561042b57600080fd5b506001546103f4906001600160a01b031681565b34801561044b57600080fd5b5061031961045a366004612277565b6111f2565b34801561046b57600080fd5b506102f360045481565b34801561048157600080fd5b506102f3611277565b34801561049657600080fd5b506102f360095481565b3480156104ac57600080fd5b506103196104bb366004612217565b61128e565b3480156104cc57600080fd5b506103196104db366004612217565b611309565b3480156104ec57600080fd5b50610319611384565b34801561050157600080fd5b50610319610510366004612217565b6113d8565b34801561052157600080fd5b50610319610530366004612217565b611453565b34801561054157600080fd5b50610319610550366004612217565b6114ce565b34801561056157600080fd5b506102f360035481565b34801561057757600080fd5b506000546001600160a01b03166103f4565b34801561059557600080fd5b506103196105a4366004612217565b611549565b3480156105b557600080fd5b506102f360055481565b3480156105cb57600080fd5b506105df6105da366004612294565b6115c4565b6040516102fd91906122d6565b3480156105f857600080fd5b50610319610607366004612294565b6116fa565b34801561061857600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000181565b34801561064c57600080fd5b5061031961065b366004612217565b611b49565b34801561066c57600080fd5b506102f361067b366004612217565b60106020526000908152604090205481565b34801561069957600080fd5b506102f360085481565b3480156106af57600080fd5b50600b546106bd9060ff1681565b60405190151581526020016102fd565b3480156106d957600080fd5b506103f47f00000000000000000000000004a4ac9c153c9deb8d98d4203c7d7756cdbefee181565b34801561070d57600080fd5b506102f3600e5481565b34801561072357600080fd5b50610319610732366004612245565b611bc4565b34801561074357600080fd5b50610319610752366004612217565b611c94565b34801561076357600080fd5b50610319610772366004612217565b611d0f565b34801561078357600080fd5b50610319610792366004612245565b611d8a565b3480156107a357600080fd5b506102f36107b236600461231a565b600c60209081526000928352604080842090915290825290205481565b6040516bffffffffffffffffffffffff193360601b1660208201526034810184905260009060540160405160208183030381529060405280519060200120905061085083838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600d549150849050611f96565b6108a15760405162461bcd60e51b815260206004820152600d60248201527f494e56414c49442050524f4f460000000000000000000000000000000000000060448201526064015b60405180910390fd5b7f00000000000000000000000004a4ac9c153c9deb8d98d4203c7d7756cdbefee16001600160a01b03166109175760405162461bcd60e51b815260206004820152601a60248201527f4e465420534d41525420434f4e5452414354204e4f54205345540000000000006044820152606401610898565b600d541580159061092b5750600b5460ff16155b6109775760405162461bcd60e51b815260206004820152601860248201527f5045524d495353494f4e45442053414c4520434c4f53454400000000000000006044820152606401610898565b600085116109c75760405162461bcd60e51b815260206004820152601660248201527f4841564520544f20425559204154204c454153542031000000000000000000006044820152606401610898565b336000908152600c602090815260408083206001845290915290205484906109f090879061235c565b1115610a3e5760405162461bcd60e51b815260206004820181905260248201527f4d494e5420414d4f554e542045584345454453204d415820464f5220555345526044820152606401610898565b60035485600454610a4f919061235c565b1115610a9d5760405162461bcd60e51b815260206004820181905260248201527f4d494e5420414d4f554e5420474f4553204f564552204d415820535550504c596044820152606401610898565b84600754610aab9190612374565b341015610afa5760405162461bcd60e51b815260206004820152601660248201527f45544845522053454e54204e4f5420434f5252454354000000000000000000006044820152606401610898565b600a54600954610b0a919061235c565b4210610b585760405162461bcd60e51b815260206004820152601b60248201527f5045524d495353494f4e45442053414c4520495320434c4f53454400000000006044820152606401610898565b600954421015610bcf5760405162461bcd60e51b8152602060048201526024808201527f5045524d495353494f4e45442053414c45204841534e2754205354415254454460448201527f20594554000000000000000000000000000000000000000000000000000000006064820152608401610898565b8460046000828254610be1919061235c565b9091555050336000908152600c602090815260408083206001845290915281208054879290610c1190849061235c565b925050819055506001601060007f00000000000000000000000004a4ac9c153c9deb8d98d4203c7d7756cdbefee16001600160a01b031663caa0f92a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca09190612393565b8152602081019190915260409081016000209190915551635b91d9a760e11b8152600481018690523360248201526001600160a01b037f00000000000000000000000004a4ac9c153c9deb8d98d4203c7d7756cdbefee1169063b723b34e90604401600060405180830381600087803b158015610d1c57600080fd5b505af1158015610d30573d6000803e3d6000fd5b50506040516001925087915033907f1d61142c2c6c7bca70470912f4bb5e385638b745dd1da048b6f9bb4c3ee3500590600090a45050505050565b6000546001600160a01b03163314610db35760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f6f7105366ad4e196ea8eda20c4f3555e6df847504de2b7081bcd5180b09162d390600090a250565b7f00000000000000000000000004a4ac9c153c9deb8d98d4203c7d7756cdbefee16001600160a01b0316610e805760405162461bcd60e51b815260206004820152601a60248201527f4e465420534d41525420434f4e5452414354204e4f54205345540000000000006044820152606401610898565b600b5460ff16610ed25760405162461bcd60e51b815260206004820152601060248201527f4f50454e2053414c4520434c4f534544000000000000000000000000000000006044820152606401610898565b60008111610f225760405162461bcd60e51b815260206004820152601660248201527f4841564520544f20425559204154204c454153542031000000000000000000006044820152606401610898565b600654336000908152600c6020908152604080832060028452909152902054610f4c90839061235c565b1115610f9a5760405162461bcd60e51b815260206004820181905260248201527f4d494e5420414d4f554e542045584345454453204d415820464f5220555345526044820152606401610898565b610fa2611277565b81600554610fb0919061235c565b1115610ffe5760405162461bcd60e51b815260206004820181905260248201527f4d494e5420414d4f554e5420474f4553204f564552204d415820535550504c596044820152606401610898565b8060085461100c9190612374565b34101561105b5760405162461bcd60e51b815260206004820152601660248201527f45544845522053454e54204e4f5420434f5252454354000000000000000000006044820152606401610898565b806005600082825461106d919061235c565b9091555050336000908152600c60209081526040808320600284529091528120805483929061109d90849061235c565b925050819055506001601060007f00000000000000000000000004a4ac9c153c9deb8d98d4203c7d7756cdbefee16001600160a01b031663caa0f92a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112c9190612393565b8152602081019190915260409081016000209190915551635b91d9a760e11b8152600481018290523360248201526001600160a01b037f00000000000000000000000004a4ac9c153c9deb8d98d4203c7d7756cdbefee1169063b723b34e90604401600060405180830381600087803b1580156111a857600080fd5b505af11580156111bc573d6000803e3d6000fd5b50506040516000925083915033907f1d61142c2c6c7bca70470912f4bb5e385638b745dd1da048b6f9bb4c3ee35005908490a450565b6000546001600160a01b0316331461123a5760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600b805460ff19168215159081179091556040517f958b75fd199da50653b8845d7641b75a4bc389a4a81b504e0fd4ebd1efa66b0190600090a250565b600060045460025461128991906123ac565b905090565b6000546001600160a01b031633146112d65760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600881905560405181907f1531ce8145d3c9595a0bfbdfe3457c8f072a34a2e1be798af28b00aeb8133d2a90600090a250565b6000546001600160a01b031633146113515760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600981905560405181907fae74bd9531ba7b561608cb1f901b7dd78990dcc05ffecea49426de21d2ffb1f190600090a250565b6000546001600160a01b031633146113cc5760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b6113d66000611fac565b565b6000546001600160a01b031633146114205760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600d81905560405181907f514d2649f6bc26024ef36a98d0bf2bd3b1212d7fceaf99f6086e9690d0032fc790600090a250565b6000546001600160a01b0316331461149b5760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600681905560405181907f0beaf7e887b86a012601a93e03439c8476fb8b145114a1136cace44e0dcf097a90600090a250565b6000546001600160a01b031633146115165760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600a81905560405181907fc2635786fd6466c598615fb1e1efe75244f970b10dbe327763618d623e92a6be90600090a250565b6000546001600160a01b031633146115915760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600781905560405181907f1531ce8145d3c9595a0bfbdfe3457c8f072a34a2e1be798af28b00aeb8133d2a90600090a250565b6060816116135760405162461bcd60e51b815260206004820152600f60248201527f4e4f2049445320535550504c49454400000000000000000000000000000000006044820152606401610898565b8160008167ffffffffffffffff81111561162f5761162f6123c3565b604051908082528060200260200182016040528015611658578160200160208202803683370190505b5090506000805b858110156116ef57600087878381811061167b5761167b6123d9565b905060200201359050600f60008281526020019081526020016000205460001480156116ab57506116ab81612009565b156116dc57808484815181106116c3576116c36123d9565b6020908102919091010152826116d8816123ef565b9350505b50806116e7816123ef565b91505061165f565b509095945050505050565b7f00000000000000000000000004a4ac9c153c9deb8d98d4203c7d7756cdbefee16001600160a01b03166117705760405162461bcd60e51b815260206004820152601160248201527f444f474553204e4654204e4f54205345540000000000000000000000000000006044820152606401610898565b806117bd5760405162461bcd60e51b815260206004820152600f60248201527f4e4f2049445320535550504c49454400000000000000000000000000000000006044820152606401610898565b600e5442101561180f5760405162461bcd60e51b815260206004820152601060248201527f43414e4e4f5420434c41494d20594554000000000000000000000000000000006044820152606401610898565b60005b818110156119fb57600083838381811061182e5761182e6123d9565b905060200201359050336001600160a01b03167f00000000000000000000000004a4ac9c153c9deb8d98d4203c7d7756cdbefee16001600160a01b0316636352211e836040518263ffffffff1660e01b815260040161188f91815260200190565b602060405180830381865afa1580156118ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d0919061240a565b6001600160a01b0316146119265760405162461bcd60e51b815260206004820152601160248201527f4e4f54204f574e4552204f4620444f47450000000000000000000000000000006044820152606401610898565b6000818152600f6020526040902054156119825760405162461bcd60e51b815260206004820152601d60248201527f444f47452048415320414c524541445920434c41494d454420444f47450000006044820152606401610898565b61198b81612009565b6119d75760405162461bcd60e51b815260206004820152601360248201527f444f474520574153204e4f54204d494e544544000000000000000000000000006044820152606401610898565b6000908152600f6020526040902060019055806119f3816123ef565b915050611812565b506002601060007f00000000000000000000000004a4ac9c153c9deb8d98d4203c7d7756cdbefee16001600160a01b031663caa0f92a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a849190612393565b8152602081019190915260409081016000209190915551635b91d9a760e11b8152600481018290523360248201527f00000000000000000000000004a4ac9c153c9deb8d98d4203c7d7756cdbefee16001600160a01b03169063b723b34e90604401600060405180830381600087803b158015611b0057600080fd5b505af1158015611b14573d6000803e3d6000fd5b50506040518392503391507f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d490600090a35050565b6000546001600160a01b03163314611b915760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600e81905560405181907f0f70f1a1bad8a14a7cf22daf26172ddb72a044c301b0917d3b8ea5f944a882a490600090a250565b6000546001600160a01b03163314611c0c5760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b6001600160a01b038116611c885760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610898565b611c9181611fac565b50565b6000546001600160a01b03163314611cdc5760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600381905560405181907f1465344273e35ceadae241543fa6da3339c4b1b6cb0047b6aea165b83dfb794a90600090a250565b6000546001600160a01b03163314611d575760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b600281905560405181907fae420023c4b60f64cbe0d108ab203bb213f939adbf58387b4ddeeccefb2a944490600090a250565b6000546001600160a01b03163314611dd25760405162461bcd60e51b8152602060048201819052602482015260008051602061247e8339815191526044820152606401610898565b6001600160a01b038116611e285760405162461bcd60e51b815260206004820152601f60248201527f43414e4e4f5420574954484452415720544f205a45524f2041444452455353006044820152606401610898565b4780611e765760405162461bcd60e51b815260206004820152601460248201527f4e4f20455448455220544f2057495448445241570000000000000000000000006044820152606401610898565b60006064611ea47f000000000000000000000000000000000000000000000000000000000000000184612374565b611eae9190612427565b90506000611ebc82846123ac565b6040519091506001600160a01b037f000000000000000000000000841d534caa0993c677f21abd8d96f5d7a584ad81169083156108fc029084906000818181858888f19350505050158015611f15573d6000803e3d6000fd5b506040516001600160a01b0385169082156108fc029083906000818181858888f19350505050158015611f4c573d6000803e3d6000fd5b50836001600160a01b03167f2bd20150a637d72a74539599f66637c3ec4f6d3807458bf9e002061053ae167c82604051611f8891815260200190565b60405180910390a250505050565b600082611fa38584612104565b14949350505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040517f4f558e79000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000004a4ac9c153c9deb8d98d4203c7d7756cdbefee16001600160a01b031690634f558e7990602401602060405180830381865afa15801561208a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ae9190612449565b6120ba57506000919050565b6000825b600081815260106020526040902054156120e85760008181526010602052604090205491506120fa565b806120f281612466565b9150506120be565b5060011492915050565b600081815b8451811015612170576000858281518110612126576121266123d9565b6020026020010151905080831161214c576000838152602082905260409020925061215d565b600081815260208490526040902092505b5080612168816123ef565b915050612109565b509392505050565b60008083601f84011261218a57600080fd5b50813567ffffffffffffffff8111156121a257600080fd5b6020830191508360208260051b85010111156121bd57600080fd5b9250929050565b600080600080606085870312156121da57600080fd5b8435935060208501359250604085013567ffffffffffffffff8111156121ff57600080fd5b61220b87828801612178565b95989497509550505050565b60006020828403121561222957600080fd5b5035919050565b6001600160a01b0381168114611c9157600080fd5b60006020828403121561225757600080fd5b813561226281612230565b9392505050565b8015158114611c9157600080fd5b60006020828403121561228957600080fd5b813561226281612269565b600080602083850312156122a757600080fd5b823567ffffffffffffffff8111156122be57600080fd5b6122ca85828601612178565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b8181101561230e578351835292840192918401916001016122f2565b50909695505050505050565b6000806040838503121561232d57600080fd5b823561233881612230565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561236f5761236f612346565b500190565b600081600019048311821515161561238e5761238e612346565b500290565b6000602082840312156123a557600080fd5b5051919050565b6000828210156123be576123be612346565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060001982141561240357612403612346565b5060010190565b60006020828403121561241c57600080fd5b815161226281612230565b60008261244457634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561245b57600080fd5b815161226281612269565b60008161247557612475612346565b50600019019056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212205ec72abc7548a79405cdedf1c5f70844f04aafd64487f707449b270d6eaedcf264736f6c634300080c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000004a4ac9c153c9deb8d98d4203c7d7756cdbefee1
-----Decoded View---------------
Arg [0] : _boredDogeAddress (address): 0x04a4ac9C153c9Deb8d98d4203c7D7756CDBEfeE1
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000004a4ac9c153c9deb8d98d4203c7d7756cdbefee1
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.