ETH Price: $1,944.53 (-3.51%)
 

Overview

ETH Balance

0.14 ETH

Eth Value

$272.23 (@ $1,944.53/ETH)

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Approval For...243370692026-01-29 0:56:5913 days ago1769648219IN
Office Hours: OfficeHrs Token
0 ETH0.000001340.05579149
Set Approval For...243370682026-01-29 0:56:4713 days ago1769648207IN
Office Hours: OfficeHrs Token
0 ETH0.000001360.05619529
Set Approval For...243370672026-01-29 0:56:3513 days ago1769648195IN
Office Hours: OfficeHrs Token
0 ETH0.000001310.05460365
Set Approval For...243370652026-01-29 0:56:1113 days ago1769648171IN
Office Hours: OfficeHrs Token
0 ETH0.00000130.05378958
Set Approval For...242158382026-01-12 3:05:5930 days ago1768187159IN
Office Hours: OfficeHrs Token
0 ETH0.0000010.04157499
Set Approval For...241351662025-12-31 21:01:5941 days ago1767214919IN
Office Hours: OfficeHrs Token
0 ETH0.000094322.04785696
Set Approval For...241336422025-12-31 15:55:5941 days ago1767196559IN
Office Hours: OfficeHrs Token
0 ETH0.000032010.69517727
Set Approval For...240829992025-12-24 14:12:5948 days ago1766585579IN
Office Hours: OfficeHrs Token
0 ETH0.000001140.04732103
Set Approval For...240687252025-12-22 14:23:4750 days ago1766413427IN
Office Hours: OfficeHrs Token
0 ETH0.000005520.22910214
Approve239279352025-12-02 19:43:2370 days ago1764704603IN
Office Hours: OfficeHrs Token
0 ETH0.000004040.15
Set Approval For...237178422025-11-03 9:15:59100 days ago1762161359IN
Office Hours: OfficeHrs Token
0 ETH0.000061262.52968237
Set Approval For...237178412025-11-03 9:15:47100 days ago1762161347IN
Office Hours: OfficeHrs Token
0 ETH0.000061712.55691594
Set Approval For...236147142025-10-19 22:39:11114 days ago1760913551IN
Office Hours: OfficeHrs Token
0 ETH0.000038531.59513971
Set Approval For...235136902025-10-05 19:34:47128 days ago1759692887IN
Office Hours: OfficeHrs Token
0 ETH0.000005950.12938691
Set Approval For...234830322025-10-01 12:44:47132 days ago1759322687IN
Office Hours: OfficeHrs Token
0 ETH0.000041111.70372235
Set Approval For...234691612025-09-29 14:11:35134 days ago1759155095IN
Office Hours: OfficeHrs Token
0 ETH0.000272311.28270797
Set Approval For...234077162025-09-21 0:01:11143 days ago1758412871IN
Office Hours: OfficeHrs Token
0 ETH0.00005221.13170865
Set Approval For...232248362025-08-26 10:57:23168 days ago1756205843IN
Office Hours: OfficeHrs Token
0 ETH0.000016110.35
Set Approval For...232239732025-08-26 8:04:23169 days ago1756195463IN
Office Hours: OfficeHrs Token
0 ETH0.000023660.51400444
Set Approval For...231682232025-08-18 13:25:11176 days ago1755523511IN
Office Hours: OfficeHrs Token
0 ETH0.000053812.2273531
Set Approval For...231477922025-08-15 17:00:35179 days ago1755277235IN
Office Hours: OfficeHrs Token
0 ETH0.000050451.09571039
Set Approval For...231298582025-08-13 4:52:11182 days ago1755060731IN
Office Hours: OfficeHrs Token
0 ETH0.00003050.66252023
Set Approval For...230798572025-08-06 5:12:23189 days ago1754457143IN
Office Hours: OfficeHrs Token
0 ETH0.000010150.42076682
Set Approval For...228030892025-06-28 12:58:47227 days ago1751115527IN
Office Hours: OfficeHrs Token
0 ETH0.000055122.2842233
Set Approval For...226521002025-06-07 10:25:11248 days ago1749291911IN
Office Hours: OfficeHrs Token
0 ETH0.000069611.51189864
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OfficeHours

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;

/// @notice Modern, minimalist, and gas efficient ERC-721 implementation.
/// @author 0xBasset | Taken from Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)
contract OfficeHours {

    bytes32 constant public SALT = 0x30eaf58a3f477568e3a7924cf0a948bb5f3b8066d23d3667392501f4a858e012;

    uint256 constant ONE_PERCENT  = type(uint256).max / 100;
    uint256 constant MAX_PER_USER = 2;
    
    /*//////////////////////////////////////////////////////////////
                                 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   = "Office Hours";
    string public symbol = "OfficeHrs";

    /*//////////////////////////////////////////////////////////////
                      STORAGE
    //////////////////////////////////////////////////////////////*/

    address public owner;
    address public calendar;
    address public renderer;

    uint256 public maxSupply = 3000;
    uint256 public totalSupply;

    mapping(uint256 => Data)        internal _tokenData;
    mapping(address => AddressData) internal _balanceOf;

    mapping(uint256 => address) public getApproved;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

    struct Data { address owner; Details details; }

    struct AddressData {
        uint128 balance;
        uint128 minted;
    }

    struct Details {
        uint8 profession;     // The profession gives work structure
        uint8 timezone;       // The timezone where the worker is
        uint40 overtimeUntil; // The timestamp up until this token is on overtime
        uint40 hourlyRate;    // How much it costs to pay for overtime
    }

    /*//////////////////////////////////////////////////////////////
                              CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor() { owner = msg.sender; }

    /*//////////////////////////////////////////////////////////////
                              OFFICE HOURS LOGIC
    //////////////////////////////////////////////////////////////*/

    /* 
        -------- HOW TO MINT -----------
        
        To keep bots away, I'm using a special function to generate a specific salt for each address.
        If you wish to mint, you need to perform a series of hashing functions to correctly get the salt.

        To do that, head to: https://emn178.github.io/online-tools/keccak_256.html

        You will need to paste your wallet address into the input field and, in a new line, paste the SALT stored in this contract.
        In the output box, a new hash will be generated. Copy this hash and and replace the SALT in the input box.

        You need to do that 5 times and the resulting hash is the one used on this function.

        IMPORTANT: Your wallet address needs to be checksummed! To do that, head to: https://ethsum.netlify.app/

        Let's go over one example:
        The wallet address is: 0xcA75e8851A68B0350fF5f1A3Ea488aEE37806e91
        The SALT is:  0x30eaf58a3f477568e3a7924cf0a948bb5f3b8066d23d3667392501f4a858e012

        The first resulting hash is: 006c3df3e6c09af250806f3d4e0404a09014cebb82797b2d847768b038efb64a
        then we past that with the address (without the 0x prefix). It'll look like this in the input box:

        ------
        0xcA75e8851A68B0350fF5f1A3Ea488aEE37806e91
        006c3df3e6c09af250806f3d4e0404a09014cebb82797b2d847768b038efb64a
        ------

        2nd hash: 0b3b215f050f734065c82dedffcb8f40e4e174e7cf75544ddf6a820cc8befcaf

        3rd hash: 84093493c9ee89335ebcdb9301dc7e8aad05880820d23a8c87faed9fb2687d5b

        4th hash: 851ecca06644e3e0182c78214ae714a926fa397574a0a7d7804ce13ac7d34ae4

        5th hash: d4cfd9ef869cbb015fc9d53e3157f5fcdf3239efc6566d922a977ded118f9fe5.

        The 5th hash will be the input used to mint!
    */
    function mint(uint256 amount, bytes32 salt) external {
        require(msg.sender == tx.origin,                                "not allowed");
        require(totalSupply + amount <= maxSupply,                      "max supply reached");
        require(_balanceOf[msg.sender].minted + amount <= MAX_PER_USER, "already minted");

        // Verifying salt
        bytes32 currentHash = SALT;
        for (uint256 i = 0; i < 5; i++) {
            currentHash = keccak256(abi.encode(msg.sender, "/n", currentHash));
        }

        require(salt != bytes32(0), "invalid salt");

        // Mint the token
        _safeMint(msg.sender);
    }

    function zMint(uint256 amount, address to) external {
        require(msg.sender == owner, "not allowed");
        for (uint256 i = 0; i < amount; i++) {
            _mint(to);
        }
    } 

    function payOvertime(uint256 tokenId_) external payable { 
        uint256 hourlyRate = uint256(_tokenData[tokenId_].details.hourlyRate) * 1e16;
        require(msg.value >= hourlyRate, "Less than 1 hour");
        require(hourlyRate > 0,           "Free worker");

        uint256 overtime = msg.value / (hourlyRate / 1 hours);
        _tokenData[tokenId_].details.overtimeUntil += uint40(overtime);
    } 

    /*//////////////////////////////////////////////////////////////
                              ADMIN FUNCTIONS
    //////////////////////////////////////////////////////////////*/

    function setRenderer(address rend_) external {
        require(msg.sender == owner, "not owner");
        renderer = rend_;
    }

    function setCalendar(address cal_) external {
        require(msg.sender == owner, "not owner");
        calendar = cal_;
    }

    function withdraw(address recipient) external {
        require(msg.sender == owner, "not owner");
        (bool succ, ) = payable(recipient).call{value: address(this).balance }("");
        require(succ, "withdraw failed");
    }

    /*//////////////////////////////////////////////////////////////
                              ERC721 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 id) public virtual {
        address owner_ = _tokenData[id].owner;

        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);
    }

    // Being sneaky to try stopping bots.
    function mintOdd(uint256 amount, uint256 verification) external {
        require(msg.sender == tx.origin,                                "not allowed");
        require(verification == uint16(uint160(msg.sender)),            "wrong verification");
        require(verification % 2 == 1,                                  "wrong function");
        require(totalSupply + amount <= maxSupply,                      "max supply reached");
        require(_balanceOf[msg.sender].minted + amount <= MAX_PER_USER, "already minted");

        for (uint256 i = 0; i < amount; i++) {
            _mint(msg.sender);
        }
    } 

    function mintEven(uint256 amount, uint256 verification) external {
        require(msg.sender == tx.origin,                                "not allowed");
        require(verification == uint16(uint160(msg.sender)),            "wrong verification");
        require(verification % 2 == 0,                                  "wrong function");
        require(totalSupply + amount <= maxSupply,                      "max supply reached");
        require(_balanceOf[msg.sender].minted + amount <= MAX_PER_USER, "already minted");

        for (uint256 i = 0; i < amount; i++) {
            _mint(msg.sender);
        }
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        _balanceOf[msg.sender].balance -= uint128(amount);

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            _balanceOf[to].balance += uint128(amount);
        }

        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        require(from == _tokenData[id].owner, "WRONG_FROM");

        require(to != address(0), "INVALID_RECIPIENT");

        require(
            msg.sender == from || isApprovedForAll[from][msg.sender] || msg.sender == getApproved[id],
            "NOT_AUTHORIZED"
        );

        Details memory details = _tokenData[id].details;
        require(CalendarLike(calendar).canTransfer(details.profession, details.timezone, details.overtimeUntil), "NOT_ON_DUTY");

        // 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].balance--;

            _balanceOf[to].balance++;
        }

        _tokenData[id].owner = 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 calldata 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"
        );
    }

    uint256 public peopleTryingToBot;

    function _safeMint(address ) internal {
        peopleTryingToBot++;
    }

    /*//////////////////////////////////////////////////////////////
                              VIEW FUNCTIONS
    //////////////////////////////////////////////////////////////*/

    function tokenURI(uint256 id) public view returns (string memory) {
        Details memory details = _tokenData[id].details;
        return RendererLike(renderer).getURI(id, details.profession, details.timezone, details.hourlyRate);
    }

    function ownerOf(uint256 id) public view virtual returns (address owner_) {
        Details memory details = _tokenData[id].details;
        require(CalendarLike(calendar).canTransfer(details.profession, details.timezone, details.overtimeUntil), "NOT_ON_DUTY");

        require((owner_ = _tokenData[id].owner) != address(0), "NOT_MINTED");
    }

    function actualOwnerOf(uint256 id) public view virtual returns (address owner_) {
        require((owner_ = _tokenData[id].owner) != address(0), "NOT_MINTED");
    }

    function balanceOf(address owner_) public view virtual returns (uint256) {
        require(owner_ != address(0), "ZERO_ADDRESS");

        return _balanceOf[owner_].balance;
    }

    function minted(address owner_) public view virtual returns (uint256) {
        require(owner_ != address(0), "ZERO_ADDRESS");

        return _balanceOf[owner_].minted;
    }

    function getDatails(uint256 id_) public view returns (uint256 profession_, uint256 location_, uint256 rate_, uint256 overtime_) {
        Details memory details = _tokenData[id_].details;

        profession_ = details.profession;
        location_   = details.timezone;
        rate_       = details.hourlyRate;
        overtime_   = details.overtimeUntil;
    }

    function canTransfer(uint256 id_) public view returns (bool) {
        Details memory details = _tokenData[id_].details;
        return CalendarLike(calendar).canTransfer(details.profession, details.timezone, details.overtimeUntil);
    }

    /*//////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public view 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 account) internal {
        // Generate token
        uint256 id = ++totalSupply;

        // Not the strongest entropy, but good enough for a mint
        uint256 entropy = uint256(keccak256(abi.encode(account, block.coinbase, id, "entropy")));

        // Generate traits
        uint8 timezone = uint8(uint256(keccak256(abi.encode(entropy, "TIMEZONE"))) % 25) + 1;

        uint256 profEntropy =  uint256(uint256(keccak256(abi.encode(entropy, "PROF"))));

        uint8 profession = uint8(
            // If entropy smaller than 50%
            profEntropy <= 70 * ONE_PERCENT ? (profEntropy % 15) + 1 : 
            // If entropy between 50% and 85%
            profEntropy <= 93 * ONE_PERCENT ? (profEntropy % 10) + 16 :
            // If entropy between 85% and 98%
            profEntropy <= (99 * ONE_PERCENT ) + (ONE_PERCENT / 2) ? (profEntropy % 6) + 26 :
            // Else, select one of the rares
            profEntropy % 6 + 32);

        (uint8 start, uint8 end) = CalendarLike(calendar).rates(profession);

        uint8 rate = (uint8(entropy) % (end - start)) + start;
        
        _tokenData[id].details.timezone      = timezone;
        _tokenData[id].details.profession    = profession;
        _tokenData[id].details.hourlyRate    = rate;
        _tokenData[id].details.overtimeUntil = uint40(block.timestamp + 4 hours);

        _mint(account, id);
    }

    function _mint(address to, uint256 id) internal virtual {
        require(to != address(0), "INVALID_RECIPIENT");

        require(_tokenData[id].owner == address(0), "ALREADY_MINTED");

        // Counter overflow is incredibly unrealistic.
        unchecked {
            _balanceOf[to].balance++;
            _balanceOf[to].minted++;
        }

        _tokenData[id].owner = to;

        emit Transfer(address(0), to, id);
    }

    function _burn(uint256 id) internal virtual {
        address owner_ = _tokenData[id].owner;

        require(owner_ != address(0), "NOT_MINTED");

        // Ownership check above ensures no underflow.
        unchecked {
            _balanceOf[owner_].balance--;
        }

        delete _tokenData[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)
abstract contract ERC721TokenReceiver {
    function onERC721Received(
        address,
        address,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC721TokenReceiver.onERC721Received.selector;
    }
}

interface CalendarLike {
    function canTransfer(uint256 profession, uint256 timezone, uint256 overtimeUntil) external view returns(bool);
    function rates(uint256 profId) external pure returns(uint8 start, uint8 end);
}

interface RendererLike {
    function getURI(uint256 id, uint256 profession, uint256 timezone, uint256 hourlyRate) external pure returns(string memory uri);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":"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":"SALT","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"actualOwnerOf","outputs":[{"internalType":"address","name":"owner_","type":"address"}],"stateMutability":"view","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":"owner_","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calendar","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id_","type":"uint256"}],"name":"canTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id_","type":"uint256"}],"name":"getDatails","outputs":[{"internalType":"uint256","name":"profession_","type":"uint256"},{"internalType":"uint256","name":"location_","type":"uint256"},{"internalType":"uint256","name":"rate_","type":"uint256"},{"internalType":"uint256","name":"overtime_","type":"uint256"}],"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":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"verification","type":"uint256"}],"name":"mintEven","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"verification","type":"uint256"}],"name":"mintOdd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"payOvertime","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"peopleTryingToBot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renderer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"address","name":"cal_","type":"address"}],"name":"setCalendar","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rend_","type":"address"}],"name":"setRenderer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"recipient","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"zMint","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c0604052600c60808190526b4f666669636520486f75727360a01b60a09081526200002f91600091906200008f565b50604080518082019091526009808252684f666669636548727360b81b602090920191825262000062916001916200008f565b50610bb86005553480156200007657600080fd5b50600280546001600160a01b0319163317905562000172565b8280546200009d9062000135565b90600052602060002090601f016020900481019282620000c157600085556200010c565b82601f10620000dc57805160ff19168380011785556200010c565b828001600101855582156200010c579182015b828111156200010c578251825591602001919060010190620000ef565b506200011a9291506200011e565b5090565b5b808211156200011a57600081556001016200011f565b600181811c908216806200014a57607f821691505b602082108114156200016c57634e487b7160e01b600052602260045260246000fd5b50919050565b61256f80620001826000396000f3fe6080604052600436106101ee5760003560e01c80636bb2d3bd1161010d578063a22cb465116100a0578063bd18ab1a1161006f578063bd18ab1a146105b0578063c87b56dd146105d0578063d5abeb01146105f0578063e60f8bed14610606578063e985e9c5146106a557600080fd5b8063a22cb4651461051c578063a9059cbb1461053c578063b88d4fde1461055c578063ba9a91a51461057c57600080fd5b80638ada6b0f116100dc5780638ada6b0f146104a75780638da5cb5b146104c75780638e4cd432146104e757806395d89b411461050757600080fd5b80636bb2d3bd146104315780636db021ee1461044757806370a0823114610467578063766fa34d1461048757600080fd5b806323b872dd1161018557806356d3163d1161015457806356d3163d146103b15780635942dd61146103d15780636352211e146103f157806368a38e3f1461041157600080fd5b806323b872dd1461033157806342842e0e146103515780634d4f6ea91461037157806351cff8d91461039157600080fd5b80631801fbe5116101c15780631801fbe5146102ba57806318160ddd146102da5780631e7269c5146102fe578063216651cd1461031e57600080fd5b806301ffc9a7146101f357806306fdde0314610228578063081812fc1461024a578063095ea7b314610298575b600080fd5b3480156101ff57600080fd5b5061021361020e3660046120a4565b6106e0565b60405190151581526020015b60405180910390f35b34801561023457600080fd5b5061023d610732565b60405161021f9190612267565b34801561025657600080fd5b5061028061026536600461218b565b6009602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161021f565b3480156102a457600080fd5b506102b86102b336600461205d565b6107c0565b005b3480156102c657600080fd5b506102b86102d53660046121c7565b6108a7565b3480156102e657600080fd5b506102f060065481565b60405190815260200161021f565b34801561030a57600080fd5b506102f0610319366004611f01565b610a11565b6102b861032c36600461218b565b610a84565b34801561033d57600080fd5b506102b861034c366004611f4f565b610ba8565b34801561035d57600080fd5b506102b861036c366004611f4f565b610eb2565b34801561037d57600080fd5b5061021361038c36600461218b565b610fb4565b34801561039d57600080fd5b506102b86103ac366004611f01565b61109c565b3480156103bd57600080fd5b506102b86103cc366004611f01565b61115f565b3480156103dd57600080fd5b506102b86103ec366004611f01565b6111ab565b3480156103fd57600080fd5b5061028061040c36600461218b565b6111f7565b34801561041d57600080fd5b506102b861042c3660046121c7565b61136c565b34801561043d57600080fd5b506102f0600b5481565b34801561045357600080fd5b5061028061046236600461218b565b6114bd565b34801561047357600080fd5b506102f0610482366004611f01565b611514565b34801561049357600080fd5b506102b86104a23660046121c7565b611580565b3480156104b357600080fd5b50600454610280906001600160a01b031681565b3480156104d357600080fd5b50600254610280906001600160a01b031681565b3480156104f357600080fd5b506102b86105023660046121a4565b6116d3565b34801561051357600080fd5b5061023d611723565b34801561052857600080fd5b506102b8610537366004612026565b611730565b34801561054857600080fd5b5061021361055736600461205d565b61179c565b34801561056857600080fd5b506102b8610577366004611f8b565b611851565b34801561058857600080fd5b506102f07f30eaf58a3f477568e3a7924cf0a948bb5f3b8066d23d3667392501f4a858e01281565b3480156105bc57600080fd5b50600354610280906001600160a01b031681565b3480156105dc57600080fd5b5061023d6105eb36600461218b565b611948565b3480156105fc57600080fd5b506102f060055481565b34801561061257600080fd5b5061068561062136600461218b565b600090815260076020908152604091829020825160808101845260019091015460ff808216808452610100830490911693830184905264ffffffffff6201000083048116958401869052600160381b90920490911660609092018290529391929091565b60408051948552602085019390935291830152606082015260800161021f565b3480156106b157600080fd5b506102136106c0366004611f1c565b600a60209081526000928352604080842090915290825290205460ff1681565b60006301ffc9a760e01b6001600160e01b03198316148061071157506380ac58cd60e01b6001600160e01b03198316145b8061072c5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000805461073f9061244a565b80601f016020809104026020016040519081016040528092919081815260200182805461076b9061244a565b80156107b85780601f1061078d576101008083540402835291602001916107b8565b820191906000526020600020905b81548152906001019060200180831161079b57829003601f168201915b505050505081565b6000818152600760205260409020546001600160a01b03163381148061080957506001600160a01b0381166000908152600a6020908152604080832033845290915290205460ff165b61084b5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526009602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b3332146108c65760405162461bcd60e51b81526004016108429061229a565b600554826006546108d79190612336565b11156108f55760405162461bcd60e51b8152600401610842906122bf565b33600090815260086020526040902054600290610923908490600160801b90046001600160801b0316612336565b11156109415760405162461bcd60e51b81526004016108429061230e565b7f30eaf58a3f477568e3a7924cf0a948bb5f3b8066d23d3667392501f4a858e01260005b60058110156109c657604080513360208201526060918101829052600260808201526117b760f11b60a082015290810183905260c00160405160208183030381529060405280519060200120915080806109be9061247f565b915050610965565b5081610a035760405162461bcd60e51b815260206004820152600c60248201526b1a5b9d985b1a59081cd85b1d60a21b6044820152606401610842565b610a0c33611a3b565b505050565b60006001600160a01b038216610a585760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610842565b506001600160a01b0316600090815260086020526040902054600160801b90046001600160801b031690565b600081815260076020526040812060010154610ab590600160381b900464ffffffffff16662386f26fc100006123b0565b905080341015610afa5760405162461bcd60e51b815260206004820152601060248201526f2632b9b9903a3430b71018903437bab960811b6044820152606401610842565b60008111610b385760405162461bcd60e51b815260206004820152600b60248201526a233932b2903bb7b935b2b960a91b6044820152606401610842565b6000610b46610e108361239c565b610b50903461239c565b600084815260076020526040902060010180549192508291600290610b8390849062010000900464ffffffffff1661234e565b92506101000a81548164ffffffffff021916908364ffffffffff160217905550505050565b6000818152600760205260409020546001600160a01b03848116911614610bfe5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610842565b6001600160a01b038216610c485760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610842565b336001600160a01b0384161480610c8257506001600160a01b0383166000908152600a6020908152604080832033845290915290205460ff165b80610ca357506000818152600960205260409020546001600160a01b031633145b610ce05760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610842565b600081815260076020908152604091829020825160808101845260019091015460ff808216808452610100830490911693830184905264ffffffffff6201000083048116848701819052600160381b909304166060840152600354945163038189dd60e01b8152600481019190915260248101939093526044830152916001600160a01b03169063038189dd9060640160206040518083038186803b158015610d8857600080fd5b505afa158015610d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc09190612087565b610dfa5760405162461bcd60e51b815260206004820152600b60248201526a4e4f545f4f4e5f4455545960a81b6044820152606401610842565b6001600160a01b03848116600081815260086020908152604080832080546001600160801b03198082166001600160801b03928316600019018316179092559589168085528285208054928316928816600101909716919091179095558683526007825280832080546001600160a01b031990811687179091556009909252808320805490921690915551859392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a450505050565b610ebd838383610ba8565b6001600160a01b0382163b1580610f755750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a401602060405180830381600087803b158015610f3157600080fd5b505af1158015610f45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6991906120c1565b6001600160e01b031916145b610a0c5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610842565b6000818152600760209081526040808320815160808101835260019091015460ff808216808452610100830490911694830185905264ffffffffff6201000083048116848601819052600160381b909304166060840152600354935163038189dd60e01b8152600481019190915260248101949094526044840152916001600160a01b039091169063038189dd9060640160206040518083038186803b15801561105d57600080fd5b505afa158015611071573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110959190612087565b9392505050565b6002546001600160a01b031633146110c65760405162461bcd60e51b8152600401610842906122eb565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114611113576040519150601f19603f3d011682016040523d82523d6000602084013e611118565b606091505b505090508061115b5760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b6044820152606401610842565b5050565b6002546001600160a01b031633146111895760405162461bcd60e51b8152600401610842906122eb565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031633146111d55760405162461bcd60e51b8152600401610842906122eb565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600760209081526040808320815160808101835260019091015460ff808216808452610100830490911694830185905264ffffffffff6201000083048116848601819052600160381b909304166060840152600354935163038189dd60e01b8152600481019190915260248101949094526044840152916001600160a01b039091169063038189dd9060640160206040518083038186803b1580156112a057600080fd5b505afa1580156112b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d89190612087565b6113125760405162461bcd60e51b815260206004820152600b60248201526a4e4f545f4f4e5f4455545960a81b6044820152606401610842565b6000838152600760205260409020546001600160a01b03169150816113665760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610842565b50919050565b33321461138b5760405162461bcd60e51b81526004016108429061229a565b3361ffff1681146113d35760405162461bcd60e51b81526020600482015260126024820152713bb937b733903b32b934b334b1b0ba34b7b760711b6044820152606401610842565b6113de60028261249a565b1561141c5760405162461bcd60e51b815260206004820152600e60248201526d3bb937b73390333ab731ba34b7b760911b6044820152606401610842565b6005548260065461142d9190612336565b111561144b5760405162461bcd60e51b8152600401610842906122bf565b33600090815260086020526040902054600290611479908490600160801b90046001600160801b0316612336565b11156114975760405162461bcd60e51b81526004016108429061230e565b60005b82811015610a0c576114ab33611a53565b806114b58161247f565b91505061149a565b6000818152600760205260409020546001600160a01b03168061150f5760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610842565b919050565b60006001600160a01b03821661155b5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610842565b506001600160a01b03166000908152600860205260409020546001600160801b031690565b33321461159f5760405162461bcd60e51b81526004016108429061229a565b3361ffff1681146115e75760405162461bcd60e51b81526020600482015260126024820152713bb937b733903b32b934b334b1b0ba34b7b760711b6044820152606401610842565b6115f260028261249a565b6001146116325760405162461bcd60e51b815260206004820152600e60248201526d3bb937b73390333ab731ba34b7b760911b6044820152606401610842565b600554826006546116439190612336565b11156116615760405162461bcd60e51b8152600401610842906122bf565b3360009081526008602052604090205460029061168f908490600160801b90046001600160801b0316612336565b11156116ad5760405162461bcd60e51b81526004016108429061230e565b60005b82811015610a0c576116c133611a53565b806116cb8161247f565b9150506116b0565b6002546001600160a01b031633146116fd5760405162461bcd60e51b81526004016108429061229a565b60005b82811015610a0c5761171182611a53565b8061171b8161247f565b915050611700565b6001805461073f9061244a565b336000818152600a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b336000908152600860205260408120805483919083906117c69084906001600160801b03166123cf565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b03851660008181526008602052604080822080546001600160801b031981169086168901909516949094179093559151859350909133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a450600192915050565b61185c858585610ba8565b6001600160a01b0384163b15806119025750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a02906118a49033908a90899089908990600401612213565b602060405180830381600087803b1580156118be57600080fd5b505af11580156118d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f691906120c1565b6001600160e01b031916145b6119415760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610842565b5050505050565b600081815260076020908152604091829020825160808101845260019091015460ff808216808452610100830490911693830184905264ffffffffff620100008304811684870152600160381b9092049091166060808401829052600480549651631cff68af60e01b8152908101889052602481019390935260448301949094526064820152919290916001600160a01b0390911690631cff68af9060840160006040518083038186803b1580156119ff57600080fd5b505afa158015611a13573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261109591908101906120de565b600b8054906000611a4b8361247f565b919050555050565b6000600660008154611a649061247f565b9182905550604080516001600160a01b0385166020820152419181019190915260608101829052608080820152600760a082015266656e74726f707960c81b60c082015290915060009060e00160408051601f19818403018152828252805160209182012090830181905282820191909152600860608301526754494d455a4f4e4560c01b6080830152915060009060199060a0016040516020818303038152906040528051906020012060001c611b1c919061249a565b611b27906001612377565b9050600082604051602001611b5a91815260406020820181905260049082015263282927a360e11b606082015260800190565b60408051601f19818403018152919052805160209091012090506000611b83606460001961239c565b611b8e9060466123b0565b821115611c3d57611ba2606460001961239c565b611bad90605d6123b0565b821115611c27576002611bc3606460001961239c565b611bcd919061239c565b611bda606460001961239c565b611be59060636123b0565b611bef9190612336565b821115611c1157611c0160068361249a565b611c0c906020612336565b611c53565b611c1c60068361249a565b611c0c90601a612336565b611c32600a8361249a565b611c0c906010612336565b611c48600f8361249a565b611c53906001612336565b600354604051636ea0c57160e11b815260ff8316600482015291925060009182916001600160a01b03169063dd418ae290602401604080518083038186803b158015611c9e57600080fd5b505afa158015611cb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd691906121e9565b9092509050600082611ce881846123f7565b611cf290896124ae565b611cfc9190612377565b6000898152600760205260409020600101805460ff8781166bffffffffff0000000000ffff199092166101008b8316026bffffffffff000000000000ff19161791909117908316600160381b021790559050611d5a42613840612336565b6000898152600760205260409020600101805464ffffffffff92909216620100000266ffffffffff000019909216919091179055611d988989611da3565b505050505050505050565b6001600160a01b038216611ded5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610842565b6000818152600760205260409020546001600160a01b031615611e435760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b6044820152606401610842565b6001600160a01b03821660008181526008602090815260408083208054600160801b6001600160801b03808316600190810182166001600160801b031990941684178390048216011602179055848352600790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b80356001600160a01b038116811461150f57600080fd5b805160ff8116811461150f57600080fd5b600060208284031215611f1357600080fd5b61109582611ed9565b60008060408385031215611f2f57600080fd5b611f3883611ed9565b9150611f4660208401611ed9565b90509250929050565b600080600060608486031215611f6457600080fd5b611f6d84611ed9565b9250611f7b60208501611ed9565b9150604084013590509250925092565b600080600080600060808688031215611fa357600080fd5b611fac86611ed9565b9450611fba60208701611ed9565b935060408601359250606086013567ffffffffffffffff80821115611fde57600080fd5b818801915088601f830112611ff257600080fd5b81358181111561200157600080fd5b89602082850101111561201357600080fd5b9699959850939650602001949392505050565b6000806040838503121561203957600080fd5b61204283611ed9565b9150602083013561205281612512565b809150509250929050565b6000806040838503121561207057600080fd5b61207983611ed9565b946020939093013593505050565b60006020828403121561209957600080fd5b815161109581612512565b6000602082840312156120b657600080fd5b813561109581612523565b6000602082840312156120d357600080fd5b815161109581612523565b6000602082840312156120f057600080fd5b815167ffffffffffffffff8082111561210857600080fd5b818401915084601f83011261211c57600080fd5b81518181111561212e5761212e6124fc565b604051601f8201601f19908116603f01168101908382118183101715612156576121566124fc565b8160405282815287602084870101111561216f57600080fd5b61218083602083016020880161241a565b979650505050505050565b60006020828403121561219d57600080fd5b5035919050565b600080604083850312156121b757600080fd5b82359150611f4660208401611ed9565b600080604083850312156121da57600080fd5b50508035926020909101359150565b600080604083850312156121fc57600080fd5b61220583611ef0565b9150611f4660208401611ef0565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b602081526000825180602084015261228681604085016020870161241a565b601f01601f19169190910160400192915050565b6020808252600b908201526a1b9bdd08185b1b1bddd95960aa1b604082015260600190565b6020808252601290820152711b585e081cdd5c1c1b1e481c995858da195960721b604082015260600190565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b6020808252600e908201526d185b1c9958591e481b5a5b9d195960921b604082015260600190565b60008219821115612349576123496124d0565b500190565b600064ffffffffff80831681851680830382111561236e5761236e6124d0565b01949350505050565b600060ff821660ff84168060ff03821115612394576123946124d0565b019392505050565b6000826123ab576123ab6124e6565b500490565b60008160001904831182151516156123ca576123ca6124d0565b500290565b60006001600160801b03838116908316818110156123ef576123ef6124d0565b039392505050565b600060ff821660ff841680821015612411576124116124d0565b90039392505050565b60005b8381101561243557818101518382015260200161241d565b83811115612444576000848401525b50505050565b600181811c9082168061245e57607f821691505b6020821081141561136657634e487b7160e01b600052602260045260246000fd5b6000600019821415612493576124936124d0565b5060010190565b6000826124a9576124a96124e6565b500690565b600060ff8316806124c1576124c16124e6565b8060ff84160691505092915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b801515811461252057600080fd5b50565b6001600160e01b03198116811461252057600080fdfea2646970667358221220e96b9368fef09fd0b91d6a31c18e51e7d4c21fc70c1de865886cb4ebef5df02164736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101ee5760003560e01c80636bb2d3bd1161010d578063a22cb465116100a0578063bd18ab1a1161006f578063bd18ab1a146105b0578063c87b56dd146105d0578063d5abeb01146105f0578063e60f8bed14610606578063e985e9c5146106a557600080fd5b8063a22cb4651461051c578063a9059cbb1461053c578063b88d4fde1461055c578063ba9a91a51461057c57600080fd5b80638ada6b0f116100dc5780638ada6b0f146104a75780638da5cb5b146104c75780638e4cd432146104e757806395d89b411461050757600080fd5b80636bb2d3bd146104315780636db021ee1461044757806370a0823114610467578063766fa34d1461048757600080fd5b806323b872dd1161018557806356d3163d1161015457806356d3163d146103b15780635942dd61146103d15780636352211e146103f157806368a38e3f1461041157600080fd5b806323b872dd1461033157806342842e0e146103515780634d4f6ea91461037157806351cff8d91461039157600080fd5b80631801fbe5116101c15780631801fbe5146102ba57806318160ddd146102da5780631e7269c5146102fe578063216651cd1461031e57600080fd5b806301ffc9a7146101f357806306fdde0314610228578063081812fc1461024a578063095ea7b314610298575b600080fd5b3480156101ff57600080fd5b5061021361020e3660046120a4565b6106e0565b60405190151581526020015b60405180910390f35b34801561023457600080fd5b5061023d610732565b60405161021f9190612267565b34801561025657600080fd5b5061028061026536600461218b565b6009602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161021f565b3480156102a457600080fd5b506102b86102b336600461205d565b6107c0565b005b3480156102c657600080fd5b506102b86102d53660046121c7565b6108a7565b3480156102e657600080fd5b506102f060065481565b60405190815260200161021f565b34801561030a57600080fd5b506102f0610319366004611f01565b610a11565b6102b861032c36600461218b565b610a84565b34801561033d57600080fd5b506102b861034c366004611f4f565b610ba8565b34801561035d57600080fd5b506102b861036c366004611f4f565b610eb2565b34801561037d57600080fd5b5061021361038c36600461218b565b610fb4565b34801561039d57600080fd5b506102b86103ac366004611f01565b61109c565b3480156103bd57600080fd5b506102b86103cc366004611f01565b61115f565b3480156103dd57600080fd5b506102b86103ec366004611f01565b6111ab565b3480156103fd57600080fd5b5061028061040c36600461218b565b6111f7565b34801561041d57600080fd5b506102b861042c3660046121c7565b61136c565b34801561043d57600080fd5b506102f0600b5481565b34801561045357600080fd5b5061028061046236600461218b565b6114bd565b34801561047357600080fd5b506102f0610482366004611f01565b611514565b34801561049357600080fd5b506102b86104a23660046121c7565b611580565b3480156104b357600080fd5b50600454610280906001600160a01b031681565b3480156104d357600080fd5b50600254610280906001600160a01b031681565b3480156104f357600080fd5b506102b86105023660046121a4565b6116d3565b34801561051357600080fd5b5061023d611723565b34801561052857600080fd5b506102b8610537366004612026565b611730565b34801561054857600080fd5b5061021361055736600461205d565b61179c565b34801561056857600080fd5b506102b8610577366004611f8b565b611851565b34801561058857600080fd5b506102f07f30eaf58a3f477568e3a7924cf0a948bb5f3b8066d23d3667392501f4a858e01281565b3480156105bc57600080fd5b50600354610280906001600160a01b031681565b3480156105dc57600080fd5b5061023d6105eb36600461218b565b611948565b3480156105fc57600080fd5b506102f060055481565b34801561061257600080fd5b5061068561062136600461218b565b600090815260076020908152604091829020825160808101845260019091015460ff808216808452610100830490911693830184905264ffffffffff6201000083048116958401869052600160381b90920490911660609092018290529391929091565b60408051948552602085019390935291830152606082015260800161021f565b3480156106b157600080fd5b506102136106c0366004611f1c565b600a60209081526000928352604080842090915290825290205460ff1681565b60006301ffc9a760e01b6001600160e01b03198316148061071157506380ac58cd60e01b6001600160e01b03198316145b8061072c5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000805461073f9061244a565b80601f016020809104026020016040519081016040528092919081815260200182805461076b9061244a565b80156107b85780601f1061078d576101008083540402835291602001916107b8565b820191906000526020600020905b81548152906001019060200180831161079b57829003601f168201915b505050505081565b6000818152600760205260409020546001600160a01b03163381148061080957506001600160a01b0381166000908152600a6020908152604080832033845290915290205460ff165b61084b5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526009602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b3332146108c65760405162461bcd60e51b81526004016108429061229a565b600554826006546108d79190612336565b11156108f55760405162461bcd60e51b8152600401610842906122bf565b33600090815260086020526040902054600290610923908490600160801b90046001600160801b0316612336565b11156109415760405162461bcd60e51b81526004016108429061230e565b7f30eaf58a3f477568e3a7924cf0a948bb5f3b8066d23d3667392501f4a858e01260005b60058110156109c657604080513360208201526060918101829052600260808201526117b760f11b60a082015290810183905260c00160405160208183030381529060405280519060200120915080806109be9061247f565b915050610965565b5081610a035760405162461bcd60e51b815260206004820152600c60248201526b1a5b9d985b1a59081cd85b1d60a21b6044820152606401610842565b610a0c33611a3b565b505050565b60006001600160a01b038216610a585760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610842565b506001600160a01b0316600090815260086020526040902054600160801b90046001600160801b031690565b600081815260076020526040812060010154610ab590600160381b900464ffffffffff16662386f26fc100006123b0565b905080341015610afa5760405162461bcd60e51b815260206004820152601060248201526f2632b9b9903a3430b71018903437bab960811b6044820152606401610842565b60008111610b385760405162461bcd60e51b815260206004820152600b60248201526a233932b2903bb7b935b2b960a91b6044820152606401610842565b6000610b46610e108361239c565b610b50903461239c565b600084815260076020526040902060010180549192508291600290610b8390849062010000900464ffffffffff1661234e565b92506101000a81548164ffffffffff021916908364ffffffffff160217905550505050565b6000818152600760205260409020546001600160a01b03848116911614610bfe5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610842565b6001600160a01b038216610c485760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610842565b336001600160a01b0384161480610c8257506001600160a01b0383166000908152600a6020908152604080832033845290915290205460ff165b80610ca357506000818152600960205260409020546001600160a01b031633145b610ce05760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610842565b600081815260076020908152604091829020825160808101845260019091015460ff808216808452610100830490911693830184905264ffffffffff6201000083048116848701819052600160381b909304166060840152600354945163038189dd60e01b8152600481019190915260248101939093526044830152916001600160a01b03169063038189dd9060640160206040518083038186803b158015610d8857600080fd5b505afa158015610d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc09190612087565b610dfa5760405162461bcd60e51b815260206004820152600b60248201526a4e4f545f4f4e5f4455545960a81b6044820152606401610842565b6001600160a01b03848116600081815260086020908152604080832080546001600160801b03198082166001600160801b03928316600019018316179092559589168085528285208054928316928816600101909716919091179095558683526007825280832080546001600160a01b031990811687179091556009909252808320805490921690915551859392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a450505050565b610ebd838383610ba8565b6001600160a01b0382163b1580610f755750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a401602060405180830381600087803b158015610f3157600080fd5b505af1158015610f45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6991906120c1565b6001600160e01b031916145b610a0c5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610842565b6000818152600760209081526040808320815160808101835260019091015460ff808216808452610100830490911694830185905264ffffffffff6201000083048116848601819052600160381b909304166060840152600354935163038189dd60e01b8152600481019190915260248101949094526044840152916001600160a01b039091169063038189dd9060640160206040518083038186803b15801561105d57600080fd5b505afa158015611071573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110959190612087565b9392505050565b6002546001600160a01b031633146110c65760405162461bcd60e51b8152600401610842906122eb565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114611113576040519150601f19603f3d011682016040523d82523d6000602084013e611118565b606091505b505090508061115b5760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b6044820152606401610842565b5050565b6002546001600160a01b031633146111895760405162461bcd60e51b8152600401610842906122eb565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031633146111d55760405162461bcd60e51b8152600401610842906122eb565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600760209081526040808320815160808101835260019091015460ff808216808452610100830490911694830185905264ffffffffff6201000083048116848601819052600160381b909304166060840152600354935163038189dd60e01b8152600481019190915260248101949094526044840152916001600160a01b039091169063038189dd9060640160206040518083038186803b1580156112a057600080fd5b505afa1580156112b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d89190612087565b6113125760405162461bcd60e51b815260206004820152600b60248201526a4e4f545f4f4e5f4455545960a81b6044820152606401610842565b6000838152600760205260409020546001600160a01b03169150816113665760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610842565b50919050565b33321461138b5760405162461bcd60e51b81526004016108429061229a565b3361ffff1681146113d35760405162461bcd60e51b81526020600482015260126024820152713bb937b733903b32b934b334b1b0ba34b7b760711b6044820152606401610842565b6113de60028261249a565b1561141c5760405162461bcd60e51b815260206004820152600e60248201526d3bb937b73390333ab731ba34b7b760911b6044820152606401610842565b6005548260065461142d9190612336565b111561144b5760405162461bcd60e51b8152600401610842906122bf565b33600090815260086020526040902054600290611479908490600160801b90046001600160801b0316612336565b11156114975760405162461bcd60e51b81526004016108429061230e565b60005b82811015610a0c576114ab33611a53565b806114b58161247f565b91505061149a565b6000818152600760205260409020546001600160a01b03168061150f5760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610842565b919050565b60006001600160a01b03821661155b5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610842565b506001600160a01b03166000908152600860205260409020546001600160801b031690565b33321461159f5760405162461bcd60e51b81526004016108429061229a565b3361ffff1681146115e75760405162461bcd60e51b81526020600482015260126024820152713bb937b733903b32b934b334b1b0ba34b7b760711b6044820152606401610842565b6115f260028261249a565b6001146116325760405162461bcd60e51b815260206004820152600e60248201526d3bb937b73390333ab731ba34b7b760911b6044820152606401610842565b600554826006546116439190612336565b11156116615760405162461bcd60e51b8152600401610842906122bf565b3360009081526008602052604090205460029061168f908490600160801b90046001600160801b0316612336565b11156116ad5760405162461bcd60e51b81526004016108429061230e565b60005b82811015610a0c576116c133611a53565b806116cb8161247f565b9150506116b0565b6002546001600160a01b031633146116fd5760405162461bcd60e51b81526004016108429061229a565b60005b82811015610a0c5761171182611a53565b8061171b8161247f565b915050611700565b6001805461073f9061244a565b336000818152600a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b336000908152600860205260408120805483919083906117c69084906001600160801b03166123cf565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b03851660008181526008602052604080822080546001600160801b031981169086168901909516949094179093559151859350909133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a450600192915050565b61185c858585610ba8565b6001600160a01b0384163b15806119025750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a02906118a49033908a90899089908990600401612213565b602060405180830381600087803b1580156118be57600080fd5b505af11580156118d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f691906120c1565b6001600160e01b031916145b6119415760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610842565b5050505050565b600081815260076020908152604091829020825160808101845260019091015460ff808216808452610100830490911693830184905264ffffffffff620100008304811684870152600160381b9092049091166060808401829052600480549651631cff68af60e01b8152908101889052602481019390935260448301949094526064820152919290916001600160a01b0390911690631cff68af9060840160006040518083038186803b1580156119ff57600080fd5b505afa158015611a13573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261109591908101906120de565b600b8054906000611a4b8361247f565b919050555050565b6000600660008154611a649061247f565b9182905550604080516001600160a01b0385166020820152419181019190915260608101829052608080820152600760a082015266656e74726f707960c81b60c082015290915060009060e00160408051601f19818403018152828252805160209182012090830181905282820191909152600860608301526754494d455a4f4e4560c01b6080830152915060009060199060a0016040516020818303038152906040528051906020012060001c611b1c919061249a565b611b27906001612377565b9050600082604051602001611b5a91815260406020820181905260049082015263282927a360e11b606082015260800190565b60408051601f19818403018152919052805160209091012090506000611b83606460001961239c565b611b8e9060466123b0565b821115611c3d57611ba2606460001961239c565b611bad90605d6123b0565b821115611c27576002611bc3606460001961239c565b611bcd919061239c565b611bda606460001961239c565b611be59060636123b0565b611bef9190612336565b821115611c1157611c0160068361249a565b611c0c906020612336565b611c53565b611c1c60068361249a565b611c0c90601a612336565b611c32600a8361249a565b611c0c906010612336565b611c48600f8361249a565b611c53906001612336565b600354604051636ea0c57160e11b815260ff8316600482015291925060009182916001600160a01b03169063dd418ae290602401604080518083038186803b158015611c9e57600080fd5b505afa158015611cb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd691906121e9565b9092509050600082611ce881846123f7565b611cf290896124ae565b611cfc9190612377565b6000898152600760205260409020600101805460ff8781166bffffffffff0000000000ffff199092166101008b8316026bffffffffff000000000000ff19161791909117908316600160381b021790559050611d5a42613840612336565b6000898152600760205260409020600101805464ffffffffff92909216620100000266ffffffffff000019909216919091179055611d988989611da3565b505050505050505050565b6001600160a01b038216611ded5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610842565b6000818152600760205260409020546001600160a01b031615611e435760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b6044820152606401610842565b6001600160a01b03821660008181526008602090815260408083208054600160801b6001600160801b03808316600190810182166001600160801b031990941684178390048216011602179055848352600790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b80356001600160a01b038116811461150f57600080fd5b805160ff8116811461150f57600080fd5b600060208284031215611f1357600080fd5b61109582611ed9565b60008060408385031215611f2f57600080fd5b611f3883611ed9565b9150611f4660208401611ed9565b90509250929050565b600080600060608486031215611f6457600080fd5b611f6d84611ed9565b9250611f7b60208501611ed9565b9150604084013590509250925092565b600080600080600060808688031215611fa357600080fd5b611fac86611ed9565b9450611fba60208701611ed9565b935060408601359250606086013567ffffffffffffffff80821115611fde57600080fd5b818801915088601f830112611ff257600080fd5b81358181111561200157600080fd5b89602082850101111561201357600080fd5b9699959850939650602001949392505050565b6000806040838503121561203957600080fd5b61204283611ed9565b9150602083013561205281612512565b809150509250929050565b6000806040838503121561207057600080fd5b61207983611ed9565b946020939093013593505050565b60006020828403121561209957600080fd5b815161109581612512565b6000602082840312156120b657600080fd5b813561109581612523565b6000602082840312156120d357600080fd5b815161109581612523565b6000602082840312156120f057600080fd5b815167ffffffffffffffff8082111561210857600080fd5b818401915084601f83011261211c57600080fd5b81518181111561212e5761212e6124fc565b604051601f8201601f19908116603f01168101908382118183101715612156576121566124fc565b8160405282815287602084870101111561216f57600080fd5b61218083602083016020880161241a565b979650505050505050565b60006020828403121561219d57600080fd5b5035919050565b600080604083850312156121b757600080fd5b82359150611f4660208401611ed9565b600080604083850312156121da57600080fd5b50508035926020909101359150565b600080604083850312156121fc57600080fd5b61220583611ef0565b9150611f4660208401611ef0565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b602081526000825180602084015261228681604085016020870161241a565b601f01601f19169190910160400192915050565b6020808252600b908201526a1b9bdd08185b1b1bddd95960aa1b604082015260600190565b6020808252601290820152711b585e081cdd5c1c1b1e481c995858da195960721b604082015260600190565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b6020808252600e908201526d185b1c9958591e481b5a5b9d195960921b604082015260600190565b60008219821115612349576123496124d0565b500190565b600064ffffffffff80831681851680830382111561236e5761236e6124d0565b01949350505050565b600060ff821660ff84168060ff03821115612394576123946124d0565b019392505050565b6000826123ab576123ab6124e6565b500490565b60008160001904831182151516156123ca576123ca6124d0565b500290565b60006001600160801b03838116908316818110156123ef576123ef6124d0565b039392505050565b600060ff821660ff841680821015612411576124116124d0565b90039392505050565b60005b8381101561243557818101518382015260200161241d565b83811115612444576000848401525b50505050565b600181811c9082168061245e57607f821691505b6020821081141561136657634e487b7160e01b600052602260045260246000fd5b6000600019821415612493576124936124d0565b5060010190565b6000826124a9576124a96124e6565b500690565b600060ff8316806124c1576124c16124e6565b8060ff84160691505092915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b801515811461252057600080fd5b50565b6001600160e01b03198116811461252057600080fdfea2646970667358221220e96b9368fef09fd0b91d6a31c18e51e7d4c21fc70c1de865886cb4ebef5df02164736f6c63430008070033

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Each NFT of the collection will be a different profession in a different timezone around the world. Additionally, each token also has it's own work schedule and hourly rate.⚠️ PLEASE BE AWARE OF THE MECHANICS OF THIS PROJECT BEFORE PURCHASING ⚠️

Loading...
Loading
[ 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.