ERC-721
Overview
Max Total Supply
2,000 SMFER
Holders
698
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
3 SMFERLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SketchyMfers
Compiler Version
v0.8.10+commit.fc410830
Optimization Enabled:
Yes with 500 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: CC0-1.0 pragma solidity ^0.8.10; // ___ _ _ ____ ____ ___ _ _ _ _ __ __ ____ ____ ____ ___ // / __)( )/ )( ___)(_ _)/ __)( )_( )( \/ ) ( \/ )( ___)( ___)( _ \/ __) // \__ \ ) ( )__) )( ( (__ ) _ ( \ / ) ( )__) )__) ) /\__ \ // (___/(_)\_)(____) (__) \___)(_) (_) (__) (_/\/\_)(__) (____)(_)\_)(___/ // author: zhoug.eth import "@rari-capital/solmate/src/tokens/ERC721.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/utils/Strings.sol"; contract SketchyMfers is ERC721, Ownable { using Strings for uint256; // ---------------------------------------------------------------------------------- state address public withdrawAddress; uint256 public constant MAX_SUPPLY = 2000; uint256 public totalSupply; uint256 public maxMintPerTx = 10; uint256 public cost = 0.0420 ether; string public uriPrefix; string public uriSuffix = ".json"; string public hiddenURI = "HIDDEN"; string public provenanceHash; bool public mintIsActive = false; bool public collectionIsHidden = true; // ---------------------------------------------------------------------------------- constructor constructor() ERC721("sketchy mfers", "SMFER") { setWithdrawAddress(msg.sender); } // ---------------------------------------------------------------------------------- error handling error Unauthorized(); error NoTokenExists(); error MintNotActive(); error InvalidAmount(); error InvalidPayment(); error InvalidReveal(); error InsufficientBalance(); modifier validMintInput(uint256 _amount) { if (_amount == 0) revert InvalidAmount(); if (totalSupply + _amount > MAX_SUPPLY) revert InvalidAmount(); _; } // ---------------------------------------------------------------------------------- views function tokenURI(uint256 _id) public view override returns (string memory) { if (collectionIsHidden) { return hiddenURI; } if (ownerOf[_id] == address(0)) revert NoTokenExists(); return bytes(uriPrefix).length > 0 ? string(abi.encodePacked(uriPrefix, _id.toString(), uriSuffix)) : ""; } function getTokenIdsByAddress(address _address) public view returns (uint256[] memory ownedIds) { uint256 balance = balanceOf[_address]; uint256 idCounter = 1; uint256 ownedCounter = 0; ownedIds = new uint256[](balance); while (ownedCounter < balance && idCounter < MAX_SUPPLY + 1) { address ownerAddress = ownerOf[idCounter]; if (ownerAddress == _address) { ownedIds[ownedCounter] = idCounter; unchecked { ++ownedCounter; } } unchecked { ++idCounter; } } } // ---------------------------------------------------------------------------------- mint function batchMint(address _recipient, uint256 _amount) private { unchecked { for (uint256 i = 1; i < _amount + 1; ++i) { _safeMint(_recipient, totalSupply + i); } totalSupply += _amount; } } function adminMint(address _address, uint256 _amount) external onlyOwner validMintInput(_amount) { batchMint(_address, _amount); } function mint(uint256 _amount) external payable validMintInput(_amount) { if (!mintIsActive) revert MintNotActive(); if (_amount > maxMintPerTx) revert InvalidAmount(); if (msg.value != cost * _amount) revert InvalidPayment(); batchMint(msg.sender, _amount); } // ---------------------------------------------------------------------------------- admin function withdraw() external payable { if (msg.sender != withdrawAddress) revert Unauthorized(); if (address(this).balance == 0) revert InsufficientBalance(); (bool os, ) = payable(withdrawAddress).call{ value: address(this).balance }(""); require(os); } function setWithdrawAddress(address _withdrawAddress) public onlyOwner { withdrawAddress = _withdrawAddress; } function setMaxMintPerTx(uint256 _newMax) public onlyOwner { maxMintPerTx = _newMax; } function setCost(uint256 _newCost) public onlyOwner { cost = _newCost; } function setURIPrefix(string calldata _uriPrefix) public onlyOwner { if (collectionIsHidden) revert InvalidReveal(); uriPrefix = _uriPrefix; } function setURISuffix(string calldata _uriSuffix) public onlyOwner { uriSuffix = _uriSuffix; } function setHiddenURI(string calldata _hiddenURI) public onlyOwner { hiddenURI = _hiddenURI; } function setProvenanceHash(string calldata _newHash) public onlyOwner { provenanceHash = _newHash; } function setMintIsActive(bool _state) public onlyOwner { mintIsActive = _state; } // One-way function that reveals the collection and sets the content URI function revealCollection(string calldata _uriPrefix) external onlyOwner { if (!collectionIsHidden || mintIsActive) revert InvalidReveal(); collectionIsHidden = false; setURIPrefix(_uriPrefix); } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Modern, minimalist, and gas efficient ERC-721 implementation. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol) /// @dev Note that balanceOf does not revert if passed the zero address, in defiance of the ERC. abstract contract ERC721 { /*/////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event Transfer(address indexed from, address indexed to, uint256 indexed id); event Approval(address indexed owner, address indexed spender, uint256 indexed id); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /*/////////////////////////////////////////////////////////////// METADATA STORAGE/LOGIC //////////////////////////////////////////////////////////////*/ string public name; string public symbol; function tokenURI(uint256 id) public view virtual returns (string memory); /*/////////////////////////////////////////////////////////////// ERC721 STORAGE //////////////////////////////////////////////////////////////*/ mapping(address => uint256) public balanceOf; mapping(uint256 => address) public ownerOf; mapping(uint256 => address) public getApproved; mapping(address => mapping(address => bool)) public isApprovedForAll; /*/////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor(string memory _name, string memory _symbol) { name = _name; symbol = _symbol; } /*/////////////////////////////////////////////////////////////// ERC721 LOGIC //////////////////////////////////////////////////////////////*/ function approve(address spender, uint256 id) public virtual { address owner = ownerOf[id]; require(msg.sender == owner || isApprovedForAll[owner][msg.sender], "NOT_AUTHORIZED"); getApproved[id] = spender; emit Approval(owner, spender, id); } function setApprovalForAll(address operator, bool approved) public virtual { isApprovedForAll[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved); } function transferFrom( address from, address to, uint256 id ) public virtual { require(from == ownerOf[id], "WRONG_FROM"); require(to != address(0), "INVALID_RECIPIENT"); require( msg.sender == from || msg.sender == getApproved[id] || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED" ); // Underflow of the sender's balance is impossible because we check for // ownership above and the recipient's balance can't realistically overflow. unchecked { balanceOf[from]--; balanceOf[to]++; } ownerOf[id] = to; delete getApproved[id]; emit Transfer(from, to, id); } function safeTransferFrom( address from, address to, uint256 id ) public virtual { transferFrom(from, to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, "") == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } function safeTransferFrom( address from, address to, uint256 id, bytes memory data ) public virtual { transferFrom(from, to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } /*/////////////////////////////////////////////////////////////// ERC165 LOGIC //////////////////////////////////////////////////////////////*/ function supportsInterface(bytes4 interfaceId) public pure virtual returns (bool) { return interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165 interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721 interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata } /*/////////////////////////////////////////////////////////////// INTERNAL MINT/BURN LOGIC //////////////////////////////////////////////////////////////*/ function _mint(address to, uint256 id) internal virtual { require(to != address(0), "INVALID_RECIPIENT"); require(ownerOf[id] == address(0), "ALREADY_MINTED"); // Counter overflow is incredibly unrealistic. unchecked { balanceOf[to]++; } ownerOf[id] = to; emit Transfer(address(0), to, id); } function _burn(uint256 id) internal virtual { address owner = ownerOf[id]; require(ownerOf[id] != address(0), "NOT_MINTED"); // Ownership check above ensures no underflow. unchecked { balanceOf[owner]--; } delete ownerOf[id]; delete getApproved[id]; emit Transfer(owner, address(0), id); } /*/////////////////////////////////////////////////////////////// INTERNAL SAFE MINT LOGIC //////////////////////////////////////////////////////////////*/ function _safeMint(address to, uint256 id) internal virtual { _mint(to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, "") == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } function _safeMint( address to, uint256 id, bytes memory data ) internal virtual { _mint(to, id); require( to.code.length == 0 || ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) == ERC721TokenReceiver.onERC721Received.selector, "UNSAFE_RECIPIENT" ); } } /// @notice A generic interface for a contract which properly accepts ERC721 tokens. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol) interface ERC721TokenReceiver { function onERC721Received( address operator, address from, uint256 id, bytes calldata data ) external returns (bytes4); }
// 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 (utils/Strings.sol) 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); } }
// 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; } }
{ "optimizer": { "enabled": true, "runs": 500 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InsufficientBalance","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidPayment","type":"error"},{"inputs":[],"name":"InvalidReveal","type":"error"},{"inputs":[],"name":"MintNotActive","type":"error"},{"inputs":[],"name":"NoTokenExists","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"adminMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collectionIsHidden","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getTokenIdsByAddress","outputs":[{"internalType":"uint256[]","name":"ownedIds","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hiddenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"provenanceHash","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uriPrefix","type":"string"}],"name":"revealCollection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","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":"id","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":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_hiddenURI","type":"string"}],"name":"setHiddenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMax","type":"uint256"}],"name":"setMaxMintPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setMintIsActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newHash","type":"string"}],"name":"setProvenanceHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uriPrefix","type":"string"}],"name":"setURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uriSuffix","type":"string"}],"name":"setURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawAddress","type":"address"}],"name":"setWithdrawAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uriPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uriSuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"withdrawAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
600a6009819055669536c708910000905560c06040526005608081905264173539b7b760d91b60a09081526200003991600c9190620001f4565b50604080518082019091526006808252652424a22222a760d11b60209092019182526200006991600d91620001f4565b50600f805461ffff19166101001790553480156200008657600080fd5b50604080518082018252600d81526c736b6574636879206d6665727360981b60208083019182528351808501909452600584526429a6a322a960d91b908401528151919291620000d991600091620001f4565b508051620000ef906001906020840190620001f4565b5050506200010c620001066200011d60201b60201c565b62000121565b620001173362000173565b620002d7565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6006546001600160a01b03163314620001d25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b82805462000202906200029a565b90600052602060002090601f01602090048101928262000226576000855562000271565b82601f106200024157805160ff191683800117855562000271565b8280016001018555821562000271579182015b828111156200027157825182559160200191906001019062000254565b506200027f92915062000283565b5090565b5b808211156200027f576000815560010162000284565b600181811c90821680620002af57607f821691505b60208210811415620002d157634e487b7160e01b600052602260045260246000fd5b50919050565b61206180620002e76000396000f3fe60806040526004361061023b5760003560e01c80636bff2c241161012e578063b88d4fde116100ab578063d19653fb1161006f578063d19653fb14610697578063de7fcb1d146106b7578063e58306f9146106cd578063e985e9c5146106ed578063f2fde38b1461072857600080fd5b8063b88d4fde14610603578063bbaac02f14610623578063c2d4cccd14610643578063c6ab67a314610662578063c87b56dd1461067757600080fd5b80638cc54e7f116100f25780638cc54e7f146105885780638da5cb5b1461059d57806395d89b41146105bb578063a0712d68146105d0578063a22cb465146105e357600080fd5b80636bff2c24146104d957806370a08231146104f9578063715018a61461052657806381b3e5751461053b57806389d5feee1461055b57600080fd5b80633ab1a494116101bc57806350179bae1161018057806350179bae146104395780635503a0e814610459578063616cdb1e1461046e57806362b99ad41461048e5780636352211e146104a357600080fd5b80633ab1a494146103b75780633ccfd60b146103d757806342842e0e146103df57806344a0d68a146103ff578063471a42941461041f57600080fd5b806313faede61161020357806313faede6146103275780631581b6001461034b57806318160ddd1461036b57806323b872dd1461038157806332cb6b0c146103a157600080fd5b806301ffc9a71461024057806306fdde0314610275578063081812fc14610297578063095ea7b3146102e55780631096952314610307575b600080fd5b34801561024c57600080fd5b5061026061025b366004611a62565b610748565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b5061028a61079a565b60405161026c9190611ade565b3480156102a357600080fd5b506102cd6102b2366004611af1565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161026c565b3480156102f157600080fd5b50610305610300366004611b26565b610828565b005b34801561031357600080fd5b50610305610322366004611b50565b61090f565b34801561033357600080fd5b5061033d600a5481565b60405190815260200161026c565b34801561035757600080fd5b506007546102cd906001600160a01b031681565b34801561037757600080fd5b5061033d60085481565b34801561038d57600080fd5b5061030561039c366004611bc2565b610968565b3480156103ad57600080fd5b5061033d6107d081565b3480156103c357600080fd5b506103056103d2366004611bfe565b610b2f565b610305610b99565b3480156103eb57600080fd5b506103056103fa366004611bc2565b610c44565b34801561040b57600080fd5b5061030561041a366004611af1565b610d37565b34801561042b57600080fd5b50600f546102609060ff1681565b34801561044557600080fd5b50610305610454366004611b50565b610d84565b34801561046557600080fd5b5061028a610e1c565b34801561047a57600080fd5b50610305610489366004611af1565b610e29565b34801561049a57600080fd5b5061028a610e76565b3480156104af57600080fd5b506102cd6104be366004611af1565b6003602052600090815260409020546001600160a01b031681565b3480156104e557600080fd5b506103056104f4366004611b50565b610e83565b34801561050557600080fd5b5061033d610514366004611bfe565b60026020526000908152604090205481565b34801561053257600080fd5b50610305610f00565b34801561054757600080fd5b50610305610556366004611b50565b610f54565b34801561056757600080fd5b5061057b610576366004611bfe565b610fa8565b60405161026c9190611c19565b34801561059457600080fd5b5061028a61108a565b3480156105a957600080fd5b506006546001600160a01b03166102cd565b3480156105c757600080fd5b5061028a611097565b6103056105de366004611af1565b6110a4565b3480156105ef57600080fd5b506103056105fe366004611c6d565b611170565b34801561060f57600080fd5b5061030561061e366004611cb6565b6111dc565b34801561062f57600080fd5b5061030561063e366004611b50565b6112c1565b34801561064f57600080fd5b50600f5461026090610100900460ff1681565b34801561066e57600080fd5b5061028a611315565b34801561068357600080fd5b5061028a610692366004611af1565b611322565b3480156106a357600080fd5b506103056106b2366004611d92565b61145b565b3480156106c357600080fd5b5061033d60095481565b3480156106d957600080fd5b506103056106e8366004611b26565b6114b6565b3480156106f957600080fd5b50610260610708366004611dad565b600560209081526000928352604080842090915290825290205460ff1681565b34801561073457600080fd5b50610305610743366004611bfe565b611557565b60006301ffc9a760e01b6001600160e01b03198316148061077957506380ac58cd60e01b6001600160e01b03198316145b806107945750635b5e139f60e01b6001600160e01b03198316145b92915050565b600080546107a790611dd7565b80601f01602080910402602001604051908101604052809291908181526020018280546107d390611dd7565b80156108205780601f106107f557610100808354040283529160200191610820565b820191906000526020600020905b81548152906001019060200180831161080357829003601f168201915b505050505081565b6000818152600360205260409020546001600160a01b03163381148061087157506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6108b35760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6006546001600160a01b031633146109575760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b610963600e83836119b3565b505050565b6000818152600360205260409020546001600160a01b038481169116146109be5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b60448201526064016108aa565b6001600160a01b038216610a085760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b60448201526064016108aa565b336001600160a01b0384161480610a3557506000818152600460205260409020546001600160a01b031633145b80610a6357506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b610aa05760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064016108aa565b6001600160a01b0380841660008181526002602090815260408083208054600019019055938616808352848320805460010190558583526003825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6006546001600160a01b03163314610b775760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6007546001600160a01b03163314610bc3576040516282b42960e81b815260040160405180910390fd5b47610be157604051631e9acf1760e31b815260040160405180910390fd5b6007546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610c2e576040519150601f19603f3d011682016040523d82523d6000602084013e610c33565b606091505b5050905080610c4157600080fd5b50565b610c4f838383610968565b6001600160a01b0382163b1580610cf85750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec9190611e12565b6001600160e01b031916145b6109635760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016108aa565b6006546001600160a01b03163314610d7f5760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b600a55565b6006546001600160a01b03163314610dcc5760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b600f54610100900460ff161580610de55750600f5460ff165b15610e0357604051639ea6d12760e01b815260040160405180910390fd5b600f805461ff0019169055610e188282610e83565b5050565b600c80546107a790611dd7565b6006546001600160a01b03163314610e715760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b600955565b600b80546107a790611dd7565b6006546001600160a01b03163314610ecb5760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b600f54610100900460ff1615610ef457604051639ea6d12760e01b815260040160405180910390fd5b610963600b83836119b3565b6006546001600160a01b03163314610f485760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b610f526000611609565b565b6006546001600160a01b03163314610f9c5760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b610963600c83836119b3565b6001600160a01b0381166000908152600260205260408120546060916001908267ffffffffffffffff811115610fe057610fe0611ca0565b604051908082528060200260200182016040528015611009578160200160208202803683370190505b5093505b828110801561102757506110246107d06001611e45565b82105b15611082576000828152600360205260409020546001600160a01b03908116908616811415611076578285838151811061106357611063611e5d565b6020026020010181815250508160010191505b8260010192505061100d565b505050919050565b600d80546107a790611dd7565b600180546107a790611dd7565b80806110c35760405163162908e360e11b815260040160405180910390fd5b6107d0816008546110d49190611e45565b11156110f35760405163162908e360e11b815260040160405180910390fd5b600f5460ff166111165760405163914edb0f60e01b815260040160405180910390fd5b6009548211156111395760405163162908e360e11b815260040160405180910390fd5b81600a546111479190611e73565b34146111665760405163078d696560e31b815260040160405180910390fd5b610e18338361165b565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6111e7848484610968565b6001600160a01b0383163b158061127c5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a029061122d903390899088908890600401611e92565b6020604051808303816000875af115801561124c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112709190611e12565b6001600160e01b031916145b6112bb5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016108aa565b50505050565b6006546001600160a01b031633146113095760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b610963600d83836119b3565b600e80546107a790611dd7565b600f54606090610100900460ff16156113c757600d805461134290611dd7565b80601f016020809104026020016040519081016040528092919081815260200182805461136e90611dd7565b80156113bb5780601f10611390576101008083540402835291602001916113bb565b820191906000526020600020905b81548152906001019060200180831161139e57829003601f168201915b50505050509050919050565b6000828152600360205260409020546001600160a01b03166113fc576040516336d71d6960e11b815260040160405180910390fd5b6000600b805461140b90611dd7565b9050116114275760405180602001604052806000815250610794565b600b6114328361168c565b600c60405160200161144693929190611f68565b60405160208183030381529060405292915050565b6006546001600160a01b031633146114a35760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b600f805460ff1916911515919091179055565b6006546001600160a01b031633146114fe5760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b808061151d5760405163162908e360e11b815260040160405180910390fd5b6107d08160085461152e9190611e45565b111561154d5760405163162908e360e11b815260040160405180910390fd5b610963838361165b565b6006546001600160a01b0316331461159f5760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b6001600160a01b0381166116045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108aa565b610c41815b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60015b8160010181101561167f576116778382600854016117aa565b60010161165e565b5060088054909101905550565b6060816116b05750506040805180820190915260018152600360fc1b602082015290565b8160005b81156116da57806116c481611f9b565b91506116d39050600a83611fcc565b91506116b4565b60008167ffffffffffffffff8111156116f5576116f5611ca0565b6040519080825280601f01601f19166020018201604052801561171f576020820181803683370190505b5090505b84156117a257611734600183611fe0565b9150611741600a86611ff7565b61174c906030611e45565b60f81b81838151811061176157611761611e5d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061179b600a86611fcc565b9450611723565b949350505050565b6117b48282611899565b6001600160a01b0382163b158061185a5750604051630a85bd0160e11b80825233600483015260006024830181905260448301849052608060648401526084830152906001600160a01b0384169063150b7a029060a4016020604051808303816000875af115801561182a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184e9190611e12565b6001600160e01b031916145b610e185760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016108aa565b6001600160a01b0382166118e35760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b60448201526064016108aa565b6000818152600360205260409020546001600160a01b0316156119485760405162461bcd60e51b815260206004820152600e60248201527f414c52454144595f4d494e54454400000000000000000000000000000000000060448201526064016108aa565b6001600160a01b038216600081815260026020908152604080832080546001019055848352600390915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546119bf90611dd7565b90600052602060002090601f0160209004810192826119e15760008555611a27565b82601f106119fa5782800160ff19823516178555611a27565b82800160010185558215611a27579182015b82811115611a27578235825591602001919060010190611a0c565b50611a33929150611a37565b5090565b5b80821115611a335760008155600101611a38565b6001600160e01b031981168114610c4157600080fd5b600060208284031215611a7457600080fd5b8135611a7f81611a4c565b9392505050565b60005b83811015611aa1578181015183820152602001611a89565b838111156112bb5750506000910152565b60008151808452611aca816020860160208601611a86565b601f01601f19169290920160200192915050565b602081526000611a7f6020830184611ab2565b600060208284031215611b0357600080fd5b5035919050565b80356001600160a01b0381168114611b2157600080fd5b919050565b60008060408385031215611b3957600080fd5b611b4283611b0a565b946020939093013593505050565b60008060208385031215611b6357600080fd5b823567ffffffffffffffff80821115611b7b57600080fd5b818501915085601f830112611b8f57600080fd5b813581811115611b9e57600080fd5b866020828501011115611bb057600080fd5b60209290920196919550909350505050565b600080600060608486031215611bd757600080fd5b611be084611b0a565b9250611bee60208501611b0a565b9150604084013590509250925092565b600060208284031215611c1057600080fd5b611a7f82611b0a565b6020808252825182820181905260009190848201906040850190845b81811015611c5157835183529284019291840191600101611c35565b50909695505050505050565b80358015158114611b2157600080fd5b60008060408385031215611c8057600080fd5b611c8983611b0a565b9150611c9760208401611c5d565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611ccc57600080fd5b611cd585611b0a565b9350611ce360208601611b0a565b925060408501359150606085013567ffffffffffffffff80821115611d0757600080fd5b818701915087601f830112611d1b57600080fd5b813581811115611d2d57611d2d611ca0565b604051601f8201601f19908116603f01168101908382118183101715611d5557611d55611ca0565b816040528281528a6020848701011115611d6e57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600060208284031215611da457600080fd5b611a7f82611c5d565b60008060408385031215611dc057600080fd5b611dc983611b0a565b9150611c9760208401611b0a565b600181811c90821680611deb57607f821691505b60208210811415611e0c57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611e2457600080fd5b8151611a7f81611a4c565b634e487b7160e01b600052601160045260246000fd5b60008219821115611e5857611e58611e2f565b500190565b634e487b7160e01b600052603260045260246000fd5b6000816000190483118215151615611e8d57611e8d611e2f565b500290565b60006001600160a01b03808716835280861660208401525083604083015260806060830152611ec46080830184611ab2565b9695505050505050565b8054600090600181811c9080831680611ee857607f831692505b6020808410821415611f0a57634e487b7160e01b600052602260045260246000fd5b818015611f1e5760018114611f2f57611f5c565b60ff19861689528489019650611f5c565b60008881526020902060005b86811015611f545781548b820152908501908301611f3b565b505084890196505b50505050505092915050565b6000611f748286611ece565b8451611f84818360208901611a86565b611f9081830186611ece565b979650505050505050565b6000600019821415611faf57611faf611e2f565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611fdb57611fdb611fb6565b500490565b600082821015611ff257611ff2611e2f565b500390565b60008261200657612006611fb6565b50069056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212204fe8dfe2c9f46c3fcefd45bd013c904e790aeedcd35adf46aafcd845786b122764736f6c634300080a0033
Deployed Bytecode
0x60806040526004361061023b5760003560e01c80636bff2c241161012e578063b88d4fde116100ab578063d19653fb1161006f578063d19653fb14610697578063de7fcb1d146106b7578063e58306f9146106cd578063e985e9c5146106ed578063f2fde38b1461072857600080fd5b8063b88d4fde14610603578063bbaac02f14610623578063c2d4cccd14610643578063c6ab67a314610662578063c87b56dd1461067757600080fd5b80638cc54e7f116100f25780638cc54e7f146105885780638da5cb5b1461059d57806395d89b41146105bb578063a0712d68146105d0578063a22cb465146105e357600080fd5b80636bff2c24146104d957806370a08231146104f9578063715018a61461052657806381b3e5751461053b57806389d5feee1461055b57600080fd5b80633ab1a494116101bc57806350179bae1161018057806350179bae146104395780635503a0e814610459578063616cdb1e1461046e57806362b99ad41461048e5780636352211e146104a357600080fd5b80633ab1a494146103b75780633ccfd60b146103d757806342842e0e146103df57806344a0d68a146103ff578063471a42941461041f57600080fd5b806313faede61161020357806313faede6146103275780631581b6001461034b57806318160ddd1461036b57806323b872dd1461038157806332cb6b0c146103a157600080fd5b806301ffc9a71461024057806306fdde0314610275578063081812fc14610297578063095ea7b3146102e55780631096952314610307575b600080fd5b34801561024c57600080fd5b5061026061025b366004611a62565b610748565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b5061028a61079a565b60405161026c9190611ade565b3480156102a357600080fd5b506102cd6102b2366004611af1565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161026c565b3480156102f157600080fd5b50610305610300366004611b26565b610828565b005b34801561031357600080fd5b50610305610322366004611b50565b61090f565b34801561033357600080fd5b5061033d600a5481565b60405190815260200161026c565b34801561035757600080fd5b506007546102cd906001600160a01b031681565b34801561037757600080fd5b5061033d60085481565b34801561038d57600080fd5b5061030561039c366004611bc2565b610968565b3480156103ad57600080fd5b5061033d6107d081565b3480156103c357600080fd5b506103056103d2366004611bfe565b610b2f565b610305610b99565b3480156103eb57600080fd5b506103056103fa366004611bc2565b610c44565b34801561040b57600080fd5b5061030561041a366004611af1565b610d37565b34801561042b57600080fd5b50600f546102609060ff1681565b34801561044557600080fd5b50610305610454366004611b50565b610d84565b34801561046557600080fd5b5061028a610e1c565b34801561047a57600080fd5b50610305610489366004611af1565b610e29565b34801561049a57600080fd5b5061028a610e76565b3480156104af57600080fd5b506102cd6104be366004611af1565b6003602052600090815260409020546001600160a01b031681565b3480156104e557600080fd5b506103056104f4366004611b50565b610e83565b34801561050557600080fd5b5061033d610514366004611bfe565b60026020526000908152604090205481565b34801561053257600080fd5b50610305610f00565b34801561054757600080fd5b50610305610556366004611b50565b610f54565b34801561056757600080fd5b5061057b610576366004611bfe565b610fa8565b60405161026c9190611c19565b34801561059457600080fd5b5061028a61108a565b3480156105a957600080fd5b506006546001600160a01b03166102cd565b3480156105c757600080fd5b5061028a611097565b6103056105de366004611af1565b6110a4565b3480156105ef57600080fd5b506103056105fe366004611c6d565b611170565b34801561060f57600080fd5b5061030561061e366004611cb6565b6111dc565b34801561062f57600080fd5b5061030561063e366004611b50565b6112c1565b34801561064f57600080fd5b50600f5461026090610100900460ff1681565b34801561066e57600080fd5b5061028a611315565b34801561068357600080fd5b5061028a610692366004611af1565b611322565b3480156106a357600080fd5b506103056106b2366004611d92565b61145b565b3480156106c357600080fd5b5061033d60095481565b3480156106d957600080fd5b506103056106e8366004611b26565b6114b6565b3480156106f957600080fd5b50610260610708366004611dad565b600560209081526000928352604080842090915290825290205460ff1681565b34801561073457600080fd5b50610305610743366004611bfe565b611557565b60006301ffc9a760e01b6001600160e01b03198316148061077957506380ac58cd60e01b6001600160e01b03198316145b806107945750635b5e139f60e01b6001600160e01b03198316145b92915050565b600080546107a790611dd7565b80601f01602080910402602001604051908101604052809291908181526020018280546107d390611dd7565b80156108205780601f106107f557610100808354040283529160200191610820565b820191906000526020600020905b81548152906001019060200180831161080357829003601f168201915b505050505081565b6000818152600360205260409020546001600160a01b03163381148061087157506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6108b35760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6006546001600160a01b031633146109575760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b610963600e83836119b3565b505050565b6000818152600360205260409020546001600160a01b038481169116146109be5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b60448201526064016108aa565b6001600160a01b038216610a085760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b60448201526064016108aa565b336001600160a01b0384161480610a3557506000818152600460205260409020546001600160a01b031633145b80610a6357506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b610aa05760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064016108aa565b6001600160a01b0380841660008181526002602090815260408083208054600019019055938616808352848320805460010190558583526003825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6006546001600160a01b03163314610b775760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6007546001600160a01b03163314610bc3576040516282b42960e81b815260040160405180910390fd5b47610be157604051631e9acf1760e31b815260040160405180910390fd5b6007546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610c2e576040519150601f19603f3d011682016040523d82523d6000602084013e610c33565b606091505b5050905080610c4157600080fd5b50565b610c4f838383610968565b6001600160a01b0382163b1580610cf85750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec9190611e12565b6001600160e01b031916145b6109635760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016108aa565b6006546001600160a01b03163314610d7f5760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b600a55565b6006546001600160a01b03163314610dcc5760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b600f54610100900460ff161580610de55750600f5460ff165b15610e0357604051639ea6d12760e01b815260040160405180910390fd5b600f805461ff0019169055610e188282610e83565b5050565b600c80546107a790611dd7565b6006546001600160a01b03163314610e715760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b600955565b600b80546107a790611dd7565b6006546001600160a01b03163314610ecb5760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b600f54610100900460ff1615610ef457604051639ea6d12760e01b815260040160405180910390fd5b610963600b83836119b3565b6006546001600160a01b03163314610f485760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b610f526000611609565b565b6006546001600160a01b03163314610f9c5760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b610963600c83836119b3565b6001600160a01b0381166000908152600260205260408120546060916001908267ffffffffffffffff811115610fe057610fe0611ca0565b604051908082528060200260200182016040528015611009578160200160208202803683370190505b5093505b828110801561102757506110246107d06001611e45565b82105b15611082576000828152600360205260409020546001600160a01b03908116908616811415611076578285838151811061106357611063611e5d565b6020026020010181815250508160010191505b8260010192505061100d565b505050919050565b600d80546107a790611dd7565b600180546107a790611dd7565b80806110c35760405163162908e360e11b815260040160405180910390fd5b6107d0816008546110d49190611e45565b11156110f35760405163162908e360e11b815260040160405180910390fd5b600f5460ff166111165760405163914edb0f60e01b815260040160405180910390fd5b6009548211156111395760405163162908e360e11b815260040160405180910390fd5b81600a546111479190611e73565b34146111665760405163078d696560e31b815260040160405180910390fd5b610e18338361165b565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6111e7848484610968565b6001600160a01b0383163b158061127c5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a029061122d903390899088908890600401611e92565b6020604051808303816000875af115801561124c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112709190611e12565b6001600160e01b031916145b6112bb5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016108aa565b50505050565b6006546001600160a01b031633146113095760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b610963600d83836119b3565b600e80546107a790611dd7565b600f54606090610100900460ff16156113c757600d805461134290611dd7565b80601f016020809104026020016040519081016040528092919081815260200182805461136e90611dd7565b80156113bb5780601f10611390576101008083540402835291602001916113bb565b820191906000526020600020905b81548152906001019060200180831161139e57829003601f168201915b50505050509050919050565b6000828152600360205260409020546001600160a01b03166113fc576040516336d71d6960e11b815260040160405180910390fd5b6000600b805461140b90611dd7565b9050116114275760405180602001604052806000815250610794565b600b6114328361168c565b600c60405160200161144693929190611f68565b60405160208183030381529060405292915050565b6006546001600160a01b031633146114a35760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b600f805460ff1916911515919091179055565b6006546001600160a01b031633146114fe5760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b808061151d5760405163162908e360e11b815260040160405180910390fd5b6107d08160085461152e9190611e45565b111561154d5760405163162908e360e11b815260040160405180910390fd5b610963838361165b565b6006546001600160a01b0316331461159f5760405162461bcd60e51b8152602060048201819052602482015260008051602061200c83398151915260448201526064016108aa565b6001600160a01b0381166116045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108aa565b610c41815b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60015b8160010181101561167f576116778382600854016117aa565b60010161165e565b5060088054909101905550565b6060816116b05750506040805180820190915260018152600360fc1b602082015290565b8160005b81156116da57806116c481611f9b565b91506116d39050600a83611fcc565b91506116b4565b60008167ffffffffffffffff8111156116f5576116f5611ca0565b6040519080825280601f01601f19166020018201604052801561171f576020820181803683370190505b5090505b84156117a257611734600183611fe0565b9150611741600a86611ff7565b61174c906030611e45565b60f81b81838151811061176157611761611e5d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061179b600a86611fcc565b9450611723565b949350505050565b6117b48282611899565b6001600160a01b0382163b158061185a5750604051630a85bd0160e11b80825233600483015260006024830181905260448301849052608060648401526084830152906001600160a01b0384169063150b7a029060a4016020604051808303816000875af115801561182a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184e9190611e12565b6001600160e01b031916145b610e185760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016108aa565b6001600160a01b0382166118e35760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b60448201526064016108aa565b6000818152600360205260409020546001600160a01b0316156119485760405162461bcd60e51b815260206004820152600e60248201527f414c52454144595f4d494e54454400000000000000000000000000000000000060448201526064016108aa565b6001600160a01b038216600081815260026020908152604080832080546001019055848352600390915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546119bf90611dd7565b90600052602060002090601f0160209004810192826119e15760008555611a27565b82601f106119fa5782800160ff19823516178555611a27565b82800160010185558215611a27579182015b82811115611a27578235825591602001919060010190611a0c565b50611a33929150611a37565b5090565b5b80821115611a335760008155600101611a38565b6001600160e01b031981168114610c4157600080fd5b600060208284031215611a7457600080fd5b8135611a7f81611a4c565b9392505050565b60005b83811015611aa1578181015183820152602001611a89565b838111156112bb5750506000910152565b60008151808452611aca816020860160208601611a86565b601f01601f19169290920160200192915050565b602081526000611a7f6020830184611ab2565b600060208284031215611b0357600080fd5b5035919050565b80356001600160a01b0381168114611b2157600080fd5b919050565b60008060408385031215611b3957600080fd5b611b4283611b0a565b946020939093013593505050565b60008060208385031215611b6357600080fd5b823567ffffffffffffffff80821115611b7b57600080fd5b818501915085601f830112611b8f57600080fd5b813581811115611b9e57600080fd5b866020828501011115611bb057600080fd5b60209290920196919550909350505050565b600080600060608486031215611bd757600080fd5b611be084611b0a565b9250611bee60208501611b0a565b9150604084013590509250925092565b600060208284031215611c1057600080fd5b611a7f82611b0a565b6020808252825182820181905260009190848201906040850190845b81811015611c5157835183529284019291840191600101611c35565b50909695505050505050565b80358015158114611b2157600080fd5b60008060408385031215611c8057600080fd5b611c8983611b0a565b9150611c9760208401611c5d565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611ccc57600080fd5b611cd585611b0a565b9350611ce360208601611b0a565b925060408501359150606085013567ffffffffffffffff80821115611d0757600080fd5b818701915087601f830112611d1b57600080fd5b813581811115611d2d57611d2d611ca0565b604051601f8201601f19908116603f01168101908382118183101715611d5557611d55611ca0565b816040528281528a6020848701011115611d6e57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600060208284031215611da457600080fd5b611a7f82611c5d565b60008060408385031215611dc057600080fd5b611dc983611b0a565b9150611c9760208401611b0a565b600181811c90821680611deb57607f821691505b60208210811415611e0c57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611e2457600080fd5b8151611a7f81611a4c565b634e487b7160e01b600052601160045260246000fd5b60008219821115611e5857611e58611e2f565b500190565b634e487b7160e01b600052603260045260246000fd5b6000816000190483118215151615611e8d57611e8d611e2f565b500290565b60006001600160a01b03808716835280861660208401525083604083015260806060830152611ec46080830184611ab2565b9695505050505050565b8054600090600181811c9080831680611ee857607f831692505b6020808410821415611f0a57634e487b7160e01b600052602260045260246000fd5b818015611f1e5760018114611f2f57611f5c565b60ff19861689528489019650611f5c565b60008881526020902060005b86811015611f545781548b820152908501908301611f3b565b505084890196505b50505050505092915050565b6000611f748286611ece565b8451611f84818360208901611a86565b611f9081830186611ece565b979650505050505050565b6000600019821415611faf57611faf611e2f565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611fdb57611fdb611fb6565b500490565b600082821015611ff257611ff2611e2f565b500390565b60008261200657612006611fb6565b50069056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212204fe8dfe2c9f46c3fcefd45bd013c904e790aeedcd35adf46aafcd845786b122764736f6c634300080a0033
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.