ETH Price: $3,281.33 (+0.51%)

Contract

0x026234c69cdFa4dc0c7f01806Df6B9d63E238B80
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim Raiders215484942025-01-04 3:41:357 days ago1735962095IN
0x026234c6...63E238B80
0 ETH0.000876196.07677078
Claim Raiders215433982025-01-03 10:36:238 days ago1735900583IN
0x026234c6...63E238B80
0 ETH0.000903479.91401191
Claim Raiders215356722025-01-02 8:44:359 days ago1735807475IN
0x026234c6...63E238B80
0 ETH0.0011839410.9390346
Safe Transfer Fr...215096912024-12-29 17:42:2313 days ago1735494143IN
0x026234c6...63E238B80
0 ETH0.000197594.91077044
Safe Transfer Fr...215096842024-12-29 17:40:5913 days ago1735494059IN
0x026234c6...63E238B80
0 ETH0.000216364.80420974
Safe Transfer Fr...215096642024-12-29 17:36:5913 days ago1735493819IN
0x026234c6...63E238B80
0 ETH0.000211964.70638325
Safe Transfer Fr...215096602024-12-29 17:36:1113 days ago1735493771IN
0x026234c6...63E238B80
0 ETH0.000231865.1483583
Safe Transfer Fr...215096292024-12-29 17:29:5913 days ago1735493399IN
0x026234c6...63E238B80
0 ETH0.000228165.06627255
Claim Raiders215096072024-12-29 17:25:3513 days ago1735493135IN
0x026234c6...63E238B80
0 ETH0.000785925.45076303
Set Approval For...215030052024-12-28 19:18:5914 days ago1735413539IN
0x026234c6...63E238B80
0 ETH0.000249325.15182884
Claim Raiders214830522024-12-26 0:25:5917 days ago1735172759IN
0x026234c6...63E238B80
0 ETH0.000557276.11505424
Set Approval For...214726582024-12-24 13:34:4718 days ago1735047287IN
0x026234c6...63E238B80
0 ETH0.000419398.65109177
Set Approval For...214596362024-12-22 17:49:5920 days ago1734889799IN
0x026234c6...63E238B80
0 ETH0.000336016.9431022
Set Approval For...214519642024-12-21 16:05:1121 days ago1734797111IN
0x026234c6...63E238B80
0 ETH0.000436299.0153581
Set Approval For...214473962024-12-21 0:44:3522 days ago1734741875IN
0x026234c6...63E238B80
0 ETH0.000438979.07061972
Set Approval For...214473272024-12-21 0:30:4722 days ago1734741047IN
0x026234c6...63E238B80
0 ETH0.000427458.83258135
Set Approval For...214418192024-12-20 6:03:3522 days ago1734674615IN
0x026234c6...63E238B80
0 ETH0.0005812112.00985519
Claim Raiders214414932024-12-20 4:57:5922 days ago1734670679IN
0x026234c6...63E238B80
0 ETH0.000772358.47523812
Set Approval For...214394012024-12-19 21:58:1123 days ago1734645491IN
0x026234c6...63E238B80
0 ETH0.0008429417.41812155
Set Approval For...214341422024-12-19 4:20:2323 days ago1734582023IN
0x026234c6...63E238B80
0 ETH0.0005339411.03295939
Claim Raiders214337182024-12-19 2:55:1123 days ago1734576911IN
0x026234c6...63E238B80
0 ETH0.0016163117.73620978
Claim Raiders214118682024-12-16 1:42:4726 days ago1734313367IN
0x026234c6...63E238B80
0 ETH0.0012854214.1052784
Claim Raiders214118512024-12-16 1:39:2326 days ago1734313163IN
0x026234c6...63E238B80
0 ETH0.0014608613.49767891
Claim Raiders214051222024-12-15 3:05:3527 days ago1734231935IN
0x026234c6...63E238B80
0 ETH0.001090577.56358824
Claim Raiders213025742024-11-30 19:27:1142 days ago1732994831IN
0x026234c6...63E238B80
0 ETH0.0030076215.2483469
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MadMaraudersOfTheAccidentalApocalypse

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 12 : MadMaraudersOfTheAccidentalApocalypse.sol
import "Guardable/ERC721Guardable.sol";
import "solmate/auth/Owned.sol";
import "./lib/MarauderErrors.sol";
import "./lib/MarauderStructs.sol";
import "./interfaces/INuclearNerds.sol";
import "./interfaces/IWarm.sol";
import "./interfaces/IDelegateCash.sol";

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.18;

contract MadMaraudersOfTheAccidentalApocalypse is ERC721Guardable, Owned {
    address public immutable BOX_O_BAD_GUYS_CONTRACT_ADDRESS;
    address public immutable NERDS_CONTRACT_ADDRESS;

    bool claimOpen;

    IWarm public immutable warm;
    IDelegateCash public immutable delegateCash;
    INuclearNerds private immutable nerds;

    mapping(uint256 => bool) public nerdHasClaimed;
    mapping(uint256 => bool) public berserkersEligibleForClaim;

    // max supply 7843 (1:1 nerds + bonus for berserkers - 900 enforcers - 300 warlords)
    ClaimableTokenDetails public raiderTokenDetails;

    /**
     * @notice max supply 5907 (enforced by MadMarauderBoxOBadGuys contract)
     * ------------------------
     * box supply = 2 * 969
     * a la carte supply = 3069
     * claimable supply = 900
     * ------------------------
     * 2 * 969 + 2069 + 900 = 5907
     * ------------------------
     */
    MintableTokenDetails public enforcerTokenDetails;

    /**
     * @notice max supply 3338 (enforced by MadMarauderBoxOBadGuys contract)
     * ------------------------
     * box supply = 969
     * a la carte supply = 2069
     * claimable supply = 300
     * ------------------------
     * 969 + 3069 + 300 = 3338
     * ------------------------
     */
    MintableTokenDetails public warlordTokenDetails;

    constructor(
      address _mintPassContractAddress,
      address _nerdsContractAddress,
      address _warmWalletContractAddress,
      address _delegateCashContract,
      uint256[43] memory berserkerTokenIds,
      string memory _uri
    ) ERC721Guardable("Marauders Of The Accidental Apocalypse", "MARAUDERS") Owned(msg.sender) {
      BOX_O_BAD_GUYS_CONTRACT_ADDRESS = _mintPassContractAddress;
      NERDS_CONTRACT_ADDRESS = _nerdsContractAddress;
      warm = IWarm(_warmWalletContractAddress);
      delegateCash = IDelegateCash(_delegateCashContract);
      nerds = INuclearNerds(NERDS_CONTRACT_ADDRESS);

      enforcerTokenDetails.startTokenId = enforcerTokenDetails.currentTokenId = 9043;
      warlordTokenDetails.startTokenId = warlordTokenDetails.currentTokenId = 14050;

      raiderTokenDetails.currentBonusTokenId = 9000;
      raiderTokenDetails.maxBonusTokenId = 9042;

      for (uint256 i = 0; i < berserkerTokenIds.length;) {
        berserkersEligibleForClaim[berserkerTokenIds[i]] = true;
        unchecked {++i;}
      }

      baseUri = _uri;
    }

    /**
     * @notice function to claim a raider for each nerd you own
     * @param _tokenIds Nerd IDs to claim for. Must own each nerd token, supports delegation through delegate.cash and warm.xyz
     */
    function claimRaiders(uint256[] calldata _tokenIds) external {
      if (!claimOpen) revert ClaimNotStarted();

      for (uint256 i = 0; i < _tokenIds.length;) {
        uint256 tokenId = _tokenIds[i];
        if (!ownerOrDelegateOf(tokenId)) revert MustOwnMatchingNerd();
        if (nerdHasClaimed[tokenId]) revert AlreadyClaimed();
        nerdHasClaimed[tokenId] = true;
        _mint(msg.sender, tokenId);

        if (berserkersEligibleForClaim[tokenId]) {
          if (raiderTokenDetails.currentBonusTokenId > raiderTokenDetails.maxBonusTokenId) revert AllBerserkersMinted();
          _mint(msg.sender, raiderTokenDetails.currentBonusTokenId);
          unchecked { 
            ++raiderTokenDetails.currentBonusTokenId;
            ++raiderTokenDetails.totalSupply;
          }
        }

        unchecked { 
          ++i;
          ++raiderTokenDetails.totalSupply;
        }
      }
    }

    function tokenURI(uint256 id) public view virtual override returns (string memory) {
      return string(abi.encodePacked(baseUri, _toString(id)));
    }

    /**
     * @notice The total number of minted raiders
     */
    function totalRaiderSupply() public view returns (uint256) {
      return raiderTokenDetails.totalSupply;
    }

    /**
     * @notice The total number of minted enforcers
     */
    function totalEnforcerSupply() public view returns (uint256) {
      return enforcerTokenDetails.currentTokenId - enforcerTokenDetails.startTokenId;
    }

    /**
     * @notice The total number of minted warlords
     */
    function totalWarlordSupply() public view returns (uint256) {
      return warlordTokenDetails.currentTokenId - warlordTokenDetails.startTokenId;
    }

    /**
     * @notice The total number of all minted tokens combined: raiders, enforcers, and warlords.
     */
    function totalSupply() public view returns (uint256) {
      return totalRaiderSupply() + totalEnforcerSupply() + totalWarlordSupply();
    }

    /**
     * @notice Token burn callable by token owner or approved address
     */
    function burn(uint256[] calldata tokenIds) external {
      for (uint256 i = 0; i < tokenIds.length;) {
        address from = ownerOf(tokenIds[i]);

        if (msg.sender != from && !isApprovedForAll[from][msg.sender] && msg.sender != getApproved[tokenIds[i]]) {
          revert InvalidCaller();
        }

        _burn(tokenIds[i]);
        unchecked { ++i; }
      }
    }

    /**
     * @dev Checks for ownership or delegated ownership of a given token. Supports Warm and Delegate.cash
     */
    function ownerOrDelegateOf(uint256 tokenId) internal view returns (bool) {
      return
        msg.sender == nerds.ownerOf(tokenId) ||
        delegateCash.checkDelegateForToken(msg.sender, nerds.ownerOf(tokenId), NERDS_CONTRACT_ADDRESS, tokenId) ||
        msg.sender == warm.ownerOf(NERDS_CONTRACT_ADDRESS, tokenId);
    }

    /* BOX FUNCTIONS (callable from Box Of Bad Guys contract) */

    function mintFromBox(address recipient, uint256 amount) external onlyBox {
      _mint(enforcerTokenDetails, amount * 2, recipient);
      _mint(warlordTokenDetails, amount, recipient);
    }

    function mintEnforcer(address recipient, uint256 amount) external onlyBox {
      _mint(enforcerTokenDetails, amount, recipient);
    }

    function mintWarlord(address recipient, uint256 amount) external onlyBox {
      _mint(warlordTokenDetails, amount, recipient);
    }

    modifier onlyBox {
      if (msg.sender != BOX_O_BAD_GUYS_CONTRACT_ADDRESS) revert InvalidCaller();
      _;
    }

    /* ADMIN FUNCTIONS */

    function setBaseURI(string memory _uri) external onlyOwner {
      baseUri = _uri;
    }

    function setClaimStatus(bool status) external onlyOwner {
      claimOpen = status;
    }

    /* INTERNAL HELPERS */

    function _mint(MintableTokenDetails storage tokenDetails, uint256 amount, address recipient) internal {
      for (uint256 i = 0; i < amount;) {
        _mint(recipient, tokenDetails.currentTokenId);
        unchecked { 
          ++tokenDetails.currentTokenId;
          ++i; 
        }
      }
    }
}

File 2 of 12 : Guardable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

import "./IGuardable.sol";

/**
* Abstract contract to be used with ERC1155 or ERC721 or their extensions.
* See ERC721Guardable or ERC1155Guardable for examples of how to overwrite
* setApprovalForAll and approve to be Guardable. Overwriting other functions
* is possible but not recommended.
*/
abstract contract Guardable is IGuardable {
  mapping(address => address) internal locks;

  function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
    return interfaceId == type(IGuardable).interfaceId;
  }

  function setGuardian(address guardian) public {
    if (msg.sender == guardian || guardian == address(0)) {
      revert InvalidGuardian();
    }

    locks[msg.sender] = guardian;
    emit GuardianAdded(msg.sender, guardian);
  }

  function guardianOf(address tokenOwner) public view returns (address) {
    return locks[tokenOwner];
  }

  function removeGuardianOf(address tokenOwner) external {
    if (msg.sender != guardianOf(tokenOwner)) {
      revert CallerGuardianMismatch(msg.sender, guardianOf(tokenOwner));
    }
    delete locks[tokenOwner];
    emit GuardianRemoved(tokenOwner);
  }

  function _lockToSelf() internal virtual {
    locks[msg.sender] = msg.sender;
    emit GuardianAdded(msg.sender, msg.sender);
  }
}

File 3 of 12 : IGuardable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.13;

import "openzeppelin/contracts/utils/introspection/IERC165.sol";

interface IGuardable is IERC165 {
  // Interface ID 0x126f5523

  error TokenIsLocked();
  error CallerGuardianMismatch(address caller, address guardian);
  error InvalidGuardian();

  event GuardianAdded(address indexed addressGuarded, address indexed guardian);
  event GuardianRemoved(address indexed addressGuarded);

  function setGuardian(address guardian) external;

  function removeGuardianOf(address tokenOwner) external;

  function guardianOf(address tokenOwner) external view returns (address);
}

File 4 of 12 : ERC721Guardable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

import "solmate/tokens/ERC721.sol";
import "../Guardable.sol";

/**
 * @dev Contract module which provides added security functionality, where
 * where an account can assign a guardian to protect their NFTs. While a guardian
 * is assigned, setApprovalForAll and approve are both locked. New approvals cannot be set. There can
 * only ever be one guardian per account, and setting a new guardian will overwrite
 * any existing one.
 *
 * Existing approvals can still be leveraged as normal, and it is expected that this
 * functionality be used after a user has set the approvals they want to set. Approvals
 * can still be removed while a guardian is set.
 * 
 * Setting a guardian has no effect on transfers, so users can move assets to a new wallet
 * to effectively "clear" guardians if a guardian is maliciously set, or keys to a guardian
 * are lost.
 *
 * It is not recommended to use _lockToSelf, as removing this lock would be easily added to
 * a malicious workflow, whereas removing a traditional lock from a guardian account would
 * be sufficiently prohibitive.
 */

contract ERC721Guardable is ERC721, Guardable {
  string internal baseUri;

  constructor(string memory name_, string memory symbol_) ERC721(name_, symbol_) {}

  function supportsInterface(bytes4 interfaceId) public view virtual override(Guardable, ERC721) returns (bool) {
    return Guardable.supportsInterface(interfaceId) || ERC721.supportsInterface(interfaceId);
  }

  function approve(address to, uint256 tokenId) public override {
    if (locks[msg.sender] != address(0)) {
      revert TokenIsLocked();
    }

    super.approve(to, tokenId);
  }

  function setApprovalForAll(address operator, bool approved) public override {
    if (locks[msg.sender] != address(0) && approved) {
      revert TokenIsLocked();
    }

    super.setApprovalForAll(operator, approved);
  }

  function tokenURI(uint256 id) public view virtual override returns (string memory) {
    return string(abi.encodePacked(baseUri, _toString(id)));
  }

  // From ERC721A
  /**
    * @dev Converts a uint256 to its ASCII string decimal representation.
  */
  function _toString(uint256 value) internal pure virtual returns (string memory str) {
      assembly {
          // The maximum value of a uint256 contains 78 digits (1 byte per digit), but
          // we allocate 0xa0 bytes to keep the free memory pointer 32-byte word aligned.
          // We will need 1 word for the trailing zeros padding, 1 word for the length,
          // and 3 words for a maximum of 78 digits. Total: 5 * 0x20 = 0xa0.
          let m := add(mload(0x40), 0xa0)
          // Update the free memory pointer to allocate.
          mstore(0x40, m)
          // Assign the `str` to the end.
          str := sub(m, 0x20)
          // Zeroize the slot after the string.
          mstore(str, 0)

          // Cache the end of the memory to calculate the length later.
          let end := str

          // We write the string from rightmost digit to leftmost digit.
          // The following is essentially a do-while loop that also handles the zero case.
          // prettier-ignore
          for { let temp := value } 1 {} {
              str := sub(str, 1)
              // Write the character to the pointer.
              // The ASCII index of the '0' character is 48.
              mstore8(str, add(48, mod(temp, 10)))
              // Keep dividing `temp` until zero.
              temp := div(temp, 10)
              // prettier-ignore
              if iszero(temp) { break }
          }

          let length := sub(end, str)
          // Move the pointer 32 bytes leftwards to make room for the length.
          str := sub(str, 0x20)
          // Store the length.
          mstore(str, length)
      }
  }
}

File 5 of 12 : IERC165.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

File 6 of 12 : Owned.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Simple single owner authorization mixin.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Owned.sol)
abstract contract Owned {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event OwnershipTransferred(address indexed user, address indexed newOwner);

    /*//////////////////////////////////////////////////////////////
                            OWNERSHIP STORAGE
    //////////////////////////////////////////////////////////////*/

    address public owner;

    modifier onlyOwner() virtual {
        require(msg.sender == owner, "UNAUTHORIZED");

        _;
    }

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

    constructor(address _owner) {
        owner = _owner;

        emit OwnershipTransferred(address(0), _owner);
    }

    /*//////////////////////////////////////////////////////////////
                             OWNERSHIP LOGIC
    //////////////////////////////////////////////////////////////*/

    function transferOwnership(address newOwner) public virtual onlyOwner {
        owner = newOwner;

        emit OwnershipTransferred(msg.sender, newOwner);
    }
}

File 7 of 12 : ERC721.sol
// 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/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)
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 BALANCE/OWNER STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(uint256 => address) internal _ownerOf;

    mapping(address => uint256) internal _balanceOf;

    function ownerOf(uint256 id) public view virtual returns (address owner) {
        require((owner = _ownerOf[id]) != address(0), "NOT_MINTED");
    }

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

        return _balanceOf[owner];
    }

    /*//////////////////////////////////////////////////////////////
                         ERC721 APPROVAL STORAGE
    //////////////////////////////////////////////////////////////*/

    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 || isApprovedForAll[from][msg.sender] || msg.sender == getApproved[id],
            "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 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"
        );
    }

    /*//////////////////////////////////////////////////////////////
                              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 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(owner != 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/transmissions11/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;
    }
}

File 8 of 12 : IDelegateCash.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;

interface IDelegateCash {
    function checkDelegateForToken(
        address delegate,
        address vault,
        address contract_,
        uint256 tokenId
    ) external view returns (bool);
}

File 9 of 12 : INuclearNerds.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;

interface INuclearNerds {
  function isOwnerOf(address account, uint256[] calldata _tokenIds) external view returns (bool);
  function ownerOf(uint256 tokenid) external view returns (address);
}

File 10 of 12 : IWarm.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;

interface IWarm {
    function ownerOf(
        address contractAddress,
        uint256 tokenId
    ) external view returns (address);
}

File 11 of 12 : MarauderErrors.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.18;

error InvalidProof();
error WrongValueSent();
error ExceedMaxSupply();
error InvalidCaller();
error TokenTypeSoldOut();
error MustOwnMatchingNerd();
error AllBerserkersMinted();
error AlreadyClaimed();
error ConsumerAlreadySet();
error SaleNotActive();
error ArrayLengthMismatch();
error ExceedMaxPerWallet();
error SmashingNotActive();
error FailedToMint();
error ClaimNotStarted();
error MintZeroAmount();

File 12 of 12 : MarauderStructs.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;

struct MintableTokenDetails {
  uint16 startTokenId;
  uint16 currentTokenId;
}

struct ClaimableTokenDetails {
  uint16 totalSupply;
  uint16 currentBonusTokenId;
  uint16 maxBonusTokenId;
}

struct PhaseDetails {
  bytes32 root;
  uint64 startTime;
}

struct ItemDetails {
  bytes4 mintFunctionSelector;
  uint16 numUnitsSold;
  uint16 maxUnitsAllowed;
  uint16 maxNerdPhaseUnitsAllowedPerWallet;
  address mintContractAddress;
  uint64 price;
  uint64 discountedPrice;
}

struct MintTracker {
  uint32 numBoxesMinted;
  uint32 numEnforcersMinted;
  uint32 numWarlordsMinted;
  uint32 numSerumsMinted;
}

Settings
{
  "remappings": [
    "@openzeppelin/=lib/Guardable/lib/openzeppelin-contracts/",
    "ERC721A/=lib/ERC721A/contracts/",
    "Guardable/=lib/Guardable/src/tokens/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "openzeppelin/=lib/openzeppelin-contracts/",
    "solmate/=lib/solmate/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_mintPassContractAddress","type":"address"},{"internalType":"address","name":"_nerdsContractAddress","type":"address"},{"internalType":"address","name":"_warmWalletContractAddress","type":"address"},{"internalType":"address","name":"_delegateCashContract","type":"address"},{"internalType":"uint256[43]","name":"berserkerTokenIds","type":"uint256[43]"},{"internalType":"string","name":"_uri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AllBerserkersMinted","type":"error"},{"inputs":[],"name":"AlreadyClaimed","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"guardian","type":"address"}],"name":"CallerGuardianMismatch","type":"error"},{"inputs":[],"name":"ClaimNotStarted","type":"error"},{"inputs":[],"name":"InvalidCaller","type":"error"},{"inputs":[],"name":"InvalidGuardian","type":"error"},{"inputs":[],"name":"MustOwnMatchingNerd","type":"error"},{"inputs":[],"name":"TokenIsLocked","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":"addressGuarded","type":"address"},{"indexed":true,"internalType":"address","name":"guardian","type":"address"}],"name":"GuardianAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addressGuarded","type":"address"}],"name":"GuardianRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","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":"BOX_O_BAD_GUYS_CONTRACT_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NERDS_CONTRACT_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"berserkersEligibleForClaim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"claimRaiders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delegateCash","outputs":[{"internalType":"contract IDelegateCash","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enforcerTokenDetails","outputs":[{"internalType":"uint16","name":"startTokenId","type":"uint16"},{"internalType":"uint16","name":"currentTokenId","type":"uint16"}],"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":"tokenOwner","type":"address"}],"name":"guardianOf","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintEnforcer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintFromBox","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintWarlord","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"nerdHasClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"raiderTokenDetails","outputs":[{"internalType":"uint16","name":"totalSupply","type":"uint16"},{"internalType":"uint16","name":"currentBonusTokenId","type":"uint16"},{"internalType":"uint16","name":"maxBonusTokenId","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"removeGuardianOf","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":"string","name":"_uri","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setClaimStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"guardian","type":"address"}],"name":"setGuardian","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":"totalEnforcerSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRaiderSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalWarlordSupply","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":"warlordTokenDetails","outputs":[{"internalType":"uint16","name":"startTokenId","type":"uint16"},{"internalType":"uint16","name":"currentTokenId","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"warm","outputs":[{"internalType":"contract IWarm","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

6101206040523480156200001257600080fd5b5060405162002601380380620026018339810160408190526200003591620002d5565b33604051806060016040528060268152602001620025db602691396040805180820190915260098152684d415241554445525360b81b60208201528181600062000080838262000441565b5060016200008f828262000441565b5050600880546001600160a01b0319166001600160a01b038616908117909155604051909350600092507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091508290a3506001600160a01b0386811660805285811660a081905285821660c05290841660e05261010052600c805463ffffffff19908116632353235317909155600d80549091166336e236e2179055600b805465ffffffff000019166523522328000017905560005b602b8110156200019a576001600a60008584602b81106200016a576200016a6200050d565b602090810291909101518252810191909152604001600020805460ff191691151591909117905560010162000145565b506007620001a9828262000441565b5050505050505062000523565b80516001600160a01b0381168114620001ce57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60405161056081016001600160401b03811182821017156200020f576200020f620001d3565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620002405762000240620001d3565b604052919050565b600082601f8301126200025a57600080fd5b81516001600160401b03811115620002765762000276620001d3565b60206200028c601f8301601f1916820162000215565b8281528582848701011115620002a157600080fd5b60005b83811015620002c1578581018301518282018401528201620002a4565b506000928101909101919091529392505050565b6000806000806000806106008789031215620002f057600080fd5b620002fb87620001b6565b955060206200030c818901620001b6565b95506200031c60408901620001b6565b94506200032c60608901620001b6565b935088609f8901126200033e57600080fd5b62000348620001e9565b806105e08a018b8111156200035c57600080fd5b60808b015b818110156200037a578051845292840192840162000361565b50519094509150506001600160401b038111156200039757600080fd5b620003a589828a0162000248565b9150509295509295509295565b600181811c90821680620003c757607f821691505b602082108103620003e857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200043c57600081815260208120601f850160051c81016020861015620004175750805b601f850160051c820191505b81811015620004385782815560010162000423565b5050505b505050565b81516001600160401b038111156200045d576200045d620001d3565b62000475816200046e8454620003b2565b84620003ee565b602080601f831160018114620004ad5760008415620004945750858301515b600019600386901b1c1916600185901b17855562000438565b600085815260208120601f198616915b82811015620004de57888601518255948401946001909101908401620004bd565b5085821015620004fd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b60805160a05160c05160e0516101005161203b620005a06000396000818161156c015261162b0152600081816104c301526115fb01526000818161053b01526117a40152600081816103a4015281816116e6015261177501526000818161035701528181610bab01528181610d1c0152610d7b015261203b6000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c80638ddabcf511610130578063a840a7e7116100b8578063d1e4c6661161007c578063d1e4c666146105c2578063df88e8f7146105d5578063e985e9c5146105e1578063f2fde38b1461060f578063fa2816ca1461062257600080fd5b8063a840a7e714610536578063acd52e8d1461055d578063b80f55c914610589578063b88d4fde1461059c578063c87b56dd146105af57600080fd5b806394856295116100ff57806394856295146104be578063956fd85b146104e557806395d89b41146104f85780639c33ecb214610500578063a22cb4651461052357600080fd5b80638ddabcf5146104685780638e29adec146104805780638f37c6201461048857806391ff7e01146104ab57600080fd5b80636352211e116101be578063725bf99911610182578063725bf9991461039f578063855d67bc146103c657806389db52b2146103f95780638a0dac4a146104425780638da5cb5b1461045557600080fd5b80636352211e1461032c578063654f97a31461033f578063664dbc6b14610352578063680b50931461037957806370a082311461038c57600080fd5b806318160ddd1161020557806318160ddd146102ca57806323b872dd146102e057806334b7d7e4146102f357806342842e0e1461030657806355f804b31461031957600080fd5b806301ffc9a71461023757806306fdde031461025f578063081812fc14610274578063095ea7b3146102b5575b600080fd5b61024a61024536600461194d565b61062a565b60405190151581526020015b60405180910390f35b610267610655565b6040516102569190611995565b61029d6102823660046119c8565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610256565b6102c86102c33660046119f6565b6106e3565b005b6102d2610728565b604051908152602001610256565b6102c86102ee366004611a22565b61075a565b6102c8610301366004611a63565b610926565b6102c8610314366004611a22565b6109d3565b6102c8610327366004611a96565b610acb565b61029d61033a3660046119c8565b610b01565b6102c861034d366004611b55565b610b58565b61029d7f000000000000000000000000000000000000000000000000000000000000000081565b6102c86103873660046119f6565b610ba0565b6102d261039a366004611a63565b610bf5565b61029d7f000000000000000000000000000000000000000000000000000000000000000081565b600c546103de9061ffff808216916201000090041682565b6040805161ffff938416815292909116602083015201610256565b600b5461041d9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610256565b6102c8610450366004611a63565b610c58565b60085461029d906001600160a01b031681565b600d546103de9061ffff808216916201000090041682565b6102d2610ceb565b61024a6104963660046119c8565b60096020526000908152604090205460ff1681565b6102c86104b93660046119f6565b610d11565b61029d7f000000000000000000000000000000000000000000000000000000000000000081565b6102c86104f33660046119f6565b610d70565b610267610dc5565b61024a61050e3660046119c8565b600a6020526000908152604090205460ff1681565b6102c8610531366004611b72565b610dd2565b61029d7f000000000000000000000000000000000000000000000000000000000000000081565b61029d61056b366004611a63565b6001600160a01b039081166000908152600660205260409020541690565b6102c8610597366004611bab565b610e1e565b6102c86105aa366004611c20565b610f17565b6102676105bd3660046119c8565b610fff565b6102c86105d0366004611bab565b611033565b600b5461ffff166102d2565b61024a6105ef366004611cbf565b600560209081526000928352604080842090915290825290205460ff1681565b6102c861061d366004611a63565b6111c0565b6102d2611236565b600063126f552360e01b6001600160e01b03198316148061064f575061064f82611253565b92915050565b6000805461066290611ced565b80601f016020809104026020016040519081016040528092919081815260200182805461068e90611ced565b80156106db5780601f106106b0576101008083540402835291602001916106db565b820191906000526020600020905b8154815290600101906020018083116106be57829003601f168201915b505050505081565b336000908152600660205260409020546001600160a01b03161561071a5760405163c066bae760e01b815260040160405180910390fd5b61072482826112a1565b5050565b6000610732611236565b61073a610ceb565b600b5461ffff1661074b9190611d3d565b6107559190611d3d565b905090565b6000818152600260205260409020546001600160a01b038481169116146107b55760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b60448201526064015b60405180910390fd5b6001600160a01b0382166107ff5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b60448201526064016107ac565b336001600160a01b038416148061083957506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b8061085a57506000818152600460205260409020546001600160a01b031633145b6108975760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064016107ac565b6001600160a01b0380841660008181526003602090815260408083208054600019019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b03818116600090815260066020526040902054163314610984576001600160a01b038181166000908152600660205260409081902054905163731b25c760e11b8152336004820152911660248201526044016107ac565b6001600160a01b03811660008181526006602052604080822080546001600160a01b0319169055517fb8107d0c6b40be480ce3172ee66ba6d64b71f6b1685a851340036e6e2e3e3c529190a250565b6109de83838361075a565b6001600160a01b0382163b1580610a875750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610a57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7b9190611d50565b6001600160e01b031916145b610ac65760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016107ac565b505050565b6008546001600160a01b03163314610af55760405162461bcd60e51b81526004016107ac90611d6d565b60076107248282611de1565b6000818152600260205260409020546001600160a01b031680610b535760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b60448201526064016107ac565b919050565b6008546001600160a01b03163314610b825760405162461bcd60e51b81526004016107ac90611d6d565b60088054911515600160a01b0260ff60a01b19909216919091179055565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610be9576040516348f5c3ed60e01b815260040160405180910390fd5b610724600d8284611383565b60006001600160a01b038216610c3c5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064016107ac565b506001600160a01b031660009081526003602052604090205490565b336001600160a01b0382161480610c7657506001600160a01b038116155b15610c945760405163a6c1146b60e01b815260040160405180910390fd5b3360008181526006602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917fbc3292102fa77e083913064b282926717cdfaede4d35f553d66366c0a3da755a91a350565b600c54600090610d089061ffff8082169162010000900416611ea1565b61ffff16905090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d5a576040516348f5c3ed60e01b815260040160405180910390fd5b610be9600c610d6a836002611ec3565b84611383565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610db9576040516348f5c3ed60e01b815260040160405180910390fd5b610724600c8284611383565b6001805461066290611ced565b336000908152600660205260409020546001600160a01b031615801590610df65750805b15610e145760405163c066bae760e01b815260040160405180910390fd5b61072482826113d6565b60005b81811015610ac6576000610e4c848484818110610e4057610e40611eda565b90506020020135610b01565b9050336001600160a01b03821614801590610e8b57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff16155b8015610ecf575060046000858585818110610ea857610ea8611eda565b60209081029290920135835250810191909152604001600020546001600160a01b03163314155b15610eed576040516348f5c3ed60e01b815260040160405180910390fd5b610f0e848484818110610f0257610f02611eda565b90506020020135611442565b50600101610e21565b610f2285858561075a565b6001600160a01b0384163b1580610fb95750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a0290610f6a9033908a90899089908990600401611ef0565b6020604051808303816000875af1158015610f89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fad9190611d50565b6001600160e01b031916145b610ff85760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016107ac565b5050505050565b6060600761100c8361150f565b60405160200161101d929190611f44565b6040516020818303038152906040529050919050565b600854600160a01b900460ff1661105d57604051635874e70f60e11b815260040160405180910390fd5b60005b81811015610ac657600083838381811061107c5761107c611eda565b90506020020135905061108e81611553565b6110ab5760405163b23a568360e01b815260040160405180910390fd5b60008181526009602052604090205460ff16156110db57604051630c8d9eab60e31b815260040160405180910390fd5b6000818152600960205260409020805460ff191660011790556110fe3382611829565b6000818152600a602052604090205460ff161561119e57600b5461ffff640100000000820481166201000090920416111561114c576040516317a6c99160e31b815260040160405180910390fd5b600b5461116490339062010000900461ffff16611829565b600b8054600161ffff6201000080840482168301821602808216828516179092011661ffff1990911663ffffffff19909216919091171790555b50600b805461ffff198116600161ffff92831681019092161790915501611060565b6008546001600160a01b031633146111ea5760405162461bcd60e51b81526004016107ac90611d6d565b600880546001600160a01b0319166001600160a01b03831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b600d54600090610d089061ffff8082169162010000900416611ea1565b60006301ffc9a760e01b6001600160e01b03198316148061128457506380ac58cd60e01b6001600160e01b03198316145b8061064f5750506001600160e01b031916635b5e139f60e01b1490565b6000818152600260205260409020546001600160a01b0316338114806112ea57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6113275760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064016107ac565b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60005b828110156113d05783546113a590839062010000900461ffff16611829565b8354600161ffff62010000808404821683019091160263ffff00001990921691909117855501611386565b50505050565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000818152600260205260409020546001600160a01b0316806114945760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b60448201526064016107ac565b6001600160a01b038116600081815260036020908152604080832080546000190190558583526002825280832080546001600160a01b031990811690915560049092528083208054909216909155518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a9004806115295750819003601f19909101908152919050565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156115bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115df9190611fcb565b6001600160a01b0316336001600160a01b0316148061175857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aba69cf8337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e866040518263ffffffff1660e01b815260040161167791815260200190565b602060405180830381865afa158015611694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b89190611fcb565b60405160e084901b6001600160e01b03191681526001600160a01b03928316600482015290821660248201527f0000000000000000000000000000000000000000000000000000000000000000909116604482015260648101859052608401602060405180830381865afa158015611734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117589190611fe8565b8061064f57506040516307ca74b760e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490527f00000000000000000000000000000000000000000000000000000000000000001690631f29d2dc90604401602060405180830381865afa1580156117eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180f9190611fcb565b6001600160a01b0316336001600160a01b03161492915050565b6001600160a01b0382166118735760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b60448201526064016107ac565b6000818152600260205260409020546001600160a01b0316156118c95760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b60448201526064016107ac565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b03198116811461194a57600080fd5b50565b60006020828403121561195f57600080fd5b813561196a81611934565b9392505050565b60005b8381101561198c578181015183820152602001611974565b50506000910152565b60208152600082518060208401526119b4816040850160208701611971565b601f01601f19169190910160400192915050565b6000602082840312156119da57600080fd5b5035919050565b6001600160a01b038116811461194a57600080fd5b60008060408385031215611a0957600080fd5b8235611a14816119e1565b946020939093013593505050565b600080600060608486031215611a3757600080fd5b8335611a42816119e1565b92506020840135611a52816119e1565b929592945050506040919091013590565b600060208284031215611a7557600080fd5b813561196a816119e1565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611aa857600080fd5b813567ffffffffffffffff80821115611ac057600080fd5b818401915084601f830112611ad457600080fd5b813581811115611ae657611ae6611a80565b604051601f8201601f19908116603f01168101908382118183101715611b0e57611b0e611a80565b81604052828152876020848701011115611b2757600080fd5b826020860160208301376000928101602001929092525095945050505050565b801515811461194a57600080fd5b600060208284031215611b6757600080fd5b813561196a81611b47565b60008060408385031215611b8557600080fd5b8235611b90816119e1565b91506020830135611ba081611b47565b809150509250929050565b60008060208385031215611bbe57600080fd5b823567ffffffffffffffff80821115611bd657600080fd5b818501915085601f830112611bea57600080fd5b813581811115611bf957600080fd5b8660208260051b8501011115611c0e57600080fd5b60209290920196919550909350505050565b600080600080600060808688031215611c3857600080fd5b8535611c43816119e1565b94506020860135611c53816119e1565b935060408601359250606086013567ffffffffffffffff80821115611c7757600080fd5b818801915088601f830112611c8b57600080fd5b813581811115611c9a57600080fd5b896020828501011115611cac57600080fd5b9699959850939650602001949392505050565b60008060408385031215611cd257600080fd5b8235611cdd816119e1565b91506020830135611ba0816119e1565b600181811c90821680611d0157607f821691505b602082108103611d2157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561064f5761064f611d27565b600060208284031215611d6257600080fd5b815161196a81611934565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b601f821115610ac657600081815260208120601f850160051c81016020861015611dba5750805b601f850160051c820191505b81811015611dd957828155600101611dc6565b505050505050565b815167ffffffffffffffff811115611dfb57611dfb611a80565b611e0f81611e098454611ced565b84611d93565b602080601f831160018114611e445760008415611e2c5750858301515b600019600386901b1c1916600185901b178555611dd9565b600085815260208120601f198616915b82811015611e7357888601518255948401946001909101908401611e54565b5085821015611e915787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61ffff828116828216039080821115611ebc57611ebc611d27565b5092915050565b808202811582820484141761064f5761064f611d27565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000808454611f5281611ced565b60018281168015611f6a5760018114611f7f57611fae565b60ff1984168752821515830287019450611fae565b8860005260208060002060005b85811015611fa55781548a820152908401908201611f8c565b50505082870194505b505050508351611fc2818360208801611971565b01949350505050565b600060208284031215611fdd57600080fd5b815161196a816119e1565b600060208284031215611ffa57600080fd5b815161196a81611b4756fea2646970667358221220adb6875fc7588043d384fd387f224adff1a194db083415573c4e4a7b90955b2b64736f6c634300081200334d6172617564657273204f6620546865204163636964656e74616c2041706f63616c79707365000000000000000000000000120305aace78052a967182b277f6392670ee98730000000000000000000000000f78c6eee3c89ff37fd9ef96bd685830993636f2000000000000000000000000c3aa9bc72bd623168860a1e5c6a4530d3d80456c00000000000000000000000000000000000076a84fef008cdabe6409d2fe638b000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000096000000000000000000000000000000000000000000000000000000000000013700000000000000000000000000000000000000000000000000000000000003cf00000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000004640000000000000000000000000000000000000000000000000000000000000479000000000000000000000000000000000000000000000000000000000000051e000000000000000000000000000000000000000000000000000000000000056d0000000000000000000000000000000000000000000000000000000000000b730000000000000000000000000000000000000000000000000000000000000bfa0000000000000000000000000000000000000000000000000000000000000c670000000000000000000000000000000000000000000000000000000000000c9a0000000000000000000000000000000000000000000000000000000000000cbe0000000000000000000000000000000000000000000000000000000000000cd90000000000000000000000000000000000000000000000000000000000000df90000000000000000000000000000000000000000000000000000000000000fa70000000000000000000000000000000000000000000000000000000000000fbe0000000000000000000000000000000000000000000000000000000000001094000000000000000000000000000000000000000000000000000000000000115f00000000000000000000000000000000000000000000000000000000000011ad000000000000000000000000000000000000000000000000000000000000127b00000000000000000000000000000000000000000000000000000000000012cd00000000000000000000000000000000000000000000000000000000000012f500000000000000000000000000000000000000000000000000000000000014df00000000000000000000000000000000000000000000000000000000000016d4000000000000000000000000000000000000000000000000000000000000191e000000000000000000000000000000000000000000000000000000000000196900000000000000000000000000000000000000000000000000000000000019fc0000000000000000000000000000000000000000000000000000000000001a350000000000000000000000000000000000000000000000000000000000001c040000000000000000000000000000000000000000000000000000000000001d210000000000000000000000000000000000000000000000000000000000001e720000000000000000000000000000000000000000000000000000000000001e7c0000000000000000000000000000000000000000000000000000000000001ee80000000000000000000000000000000000000000000000000000000000001fb3000000000000000000000000000000000000000000000000000000000000205100000000000000000000000000000000000000000000000000000000000020c500000000000000000000000000000000000000000000000000000000000021c0000000000000000000000000000000000000000000000000000000000000228c0000000000000000000000000000000000000000000000000000000000002293000000000000000000000000000000000000000000000000000000000000229c0000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005768747470733a2f2f6e75636c6561726e6572642e6d7970696e6174612e636c6f75642f697066732f516d564b567769795252353933525274577955793448754b593436706f4555594c796862544c78464c42524361772f000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102325760003560e01c80638ddabcf511610130578063a840a7e7116100b8578063d1e4c6661161007c578063d1e4c666146105c2578063df88e8f7146105d5578063e985e9c5146105e1578063f2fde38b1461060f578063fa2816ca1461062257600080fd5b8063a840a7e714610536578063acd52e8d1461055d578063b80f55c914610589578063b88d4fde1461059c578063c87b56dd146105af57600080fd5b806394856295116100ff57806394856295146104be578063956fd85b146104e557806395d89b41146104f85780639c33ecb214610500578063a22cb4651461052357600080fd5b80638ddabcf5146104685780638e29adec146104805780638f37c6201461048857806391ff7e01146104ab57600080fd5b80636352211e116101be578063725bf99911610182578063725bf9991461039f578063855d67bc146103c657806389db52b2146103f95780638a0dac4a146104425780638da5cb5b1461045557600080fd5b80636352211e1461032c578063654f97a31461033f578063664dbc6b14610352578063680b50931461037957806370a082311461038c57600080fd5b806318160ddd1161020557806318160ddd146102ca57806323b872dd146102e057806334b7d7e4146102f357806342842e0e1461030657806355f804b31461031957600080fd5b806301ffc9a71461023757806306fdde031461025f578063081812fc14610274578063095ea7b3146102b5575b600080fd5b61024a61024536600461194d565b61062a565b60405190151581526020015b60405180910390f35b610267610655565b6040516102569190611995565b61029d6102823660046119c8565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610256565b6102c86102c33660046119f6565b6106e3565b005b6102d2610728565b604051908152602001610256565b6102c86102ee366004611a22565b61075a565b6102c8610301366004611a63565b610926565b6102c8610314366004611a22565b6109d3565b6102c8610327366004611a96565b610acb565b61029d61033a3660046119c8565b610b01565b6102c861034d366004611b55565b610b58565b61029d7f000000000000000000000000120305aace78052a967182b277f6392670ee987381565b6102c86103873660046119f6565b610ba0565b6102d261039a366004611a63565b610bf5565b61029d7f0000000000000000000000000f78c6eee3c89ff37fd9ef96bd685830993636f281565b600c546103de9061ffff808216916201000090041682565b6040805161ffff938416815292909116602083015201610256565b600b5461041d9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610256565b6102c8610450366004611a63565b610c58565b60085461029d906001600160a01b031681565b600d546103de9061ffff808216916201000090041682565b6102d2610ceb565b61024a6104963660046119c8565b60096020526000908152604090205460ff1681565b6102c86104b93660046119f6565b610d11565b61029d7f00000000000000000000000000000000000076a84fef008cdabe6409d2fe638b81565b6102c86104f33660046119f6565b610d70565b610267610dc5565b61024a61050e3660046119c8565b600a6020526000908152604090205460ff1681565b6102c8610531366004611b72565b610dd2565b61029d7f000000000000000000000000c3aa9bc72bd623168860a1e5c6a4530d3d80456c81565b61029d61056b366004611a63565b6001600160a01b039081166000908152600660205260409020541690565b6102c8610597366004611bab565b610e1e565b6102c86105aa366004611c20565b610f17565b6102676105bd3660046119c8565b610fff565b6102c86105d0366004611bab565b611033565b600b5461ffff166102d2565b61024a6105ef366004611cbf565b600560209081526000928352604080842090915290825290205460ff1681565b6102c861061d366004611a63565b6111c0565b6102d2611236565b600063126f552360e01b6001600160e01b03198316148061064f575061064f82611253565b92915050565b6000805461066290611ced565b80601f016020809104026020016040519081016040528092919081815260200182805461068e90611ced565b80156106db5780601f106106b0576101008083540402835291602001916106db565b820191906000526020600020905b8154815290600101906020018083116106be57829003601f168201915b505050505081565b336000908152600660205260409020546001600160a01b03161561071a5760405163c066bae760e01b815260040160405180910390fd5b61072482826112a1565b5050565b6000610732611236565b61073a610ceb565b600b5461ffff1661074b9190611d3d565b6107559190611d3d565b905090565b6000818152600260205260409020546001600160a01b038481169116146107b55760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b60448201526064015b60405180910390fd5b6001600160a01b0382166107ff5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b60448201526064016107ac565b336001600160a01b038416148061083957506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b8061085a57506000818152600460205260409020546001600160a01b031633145b6108975760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064016107ac565b6001600160a01b0380841660008181526003602090815260408083208054600019019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b03818116600090815260066020526040902054163314610984576001600160a01b038181166000908152600660205260409081902054905163731b25c760e11b8152336004820152911660248201526044016107ac565b6001600160a01b03811660008181526006602052604080822080546001600160a01b0319169055517fb8107d0c6b40be480ce3172ee66ba6d64b71f6b1685a851340036e6e2e3e3c529190a250565b6109de83838361075a565b6001600160a01b0382163b1580610a875750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610a57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7b9190611d50565b6001600160e01b031916145b610ac65760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016107ac565b505050565b6008546001600160a01b03163314610af55760405162461bcd60e51b81526004016107ac90611d6d565b60076107248282611de1565b6000818152600260205260409020546001600160a01b031680610b535760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b60448201526064016107ac565b919050565b6008546001600160a01b03163314610b825760405162461bcd60e51b81526004016107ac90611d6d565b60088054911515600160a01b0260ff60a01b19909216919091179055565b336001600160a01b037f000000000000000000000000120305aace78052a967182b277f6392670ee98731614610be9576040516348f5c3ed60e01b815260040160405180910390fd5b610724600d8284611383565b60006001600160a01b038216610c3c5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064016107ac565b506001600160a01b031660009081526003602052604090205490565b336001600160a01b0382161480610c7657506001600160a01b038116155b15610c945760405163a6c1146b60e01b815260040160405180910390fd5b3360008181526006602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917fbc3292102fa77e083913064b282926717cdfaede4d35f553d66366c0a3da755a91a350565b600c54600090610d089061ffff8082169162010000900416611ea1565b61ffff16905090565b336001600160a01b037f000000000000000000000000120305aace78052a967182b277f6392670ee98731614610d5a576040516348f5c3ed60e01b815260040160405180910390fd5b610be9600c610d6a836002611ec3565b84611383565b336001600160a01b037f000000000000000000000000120305aace78052a967182b277f6392670ee98731614610db9576040516348f5c3ed60e01b815260040160405180910390fd5b610724600c8284611383565b6001805461066290611ced565b336000908152600660205260409020546001600160a01b031615801590610df65750805b15610e145760405163c066bae760e01b815260040160405180910390fd5b61072482826113d6565b60005b81811015610ac6576000610e4c848484818110610e4057610e40611eda565b90506020020135610b01565b9050336001600160a01b03821614801590610e8b57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff16155b8015610ecf575060046000858585818110610ea857610ea8611eda565b60209081029290920135835250810191909152604001600020546001600160a01b03163314155b15610eed576040516348f5c3ed60e01b815260040160405180910390fd5b610f0e848484818110610f0257610f02611eda565b90506020020135611442565b50600101610e21565b610f2285858561075a565b6001600160a01b0384163b1580610fb95750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a0290610f6a9033908a90899089908990600401611ef0565b6020604051808303816000875af1158015610f89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fad9190611d50565b6001600160e01b031916145b610ff85760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016107ac565b5050505050565b6060600761100c8361150f565b60405160200161101d929190611f44565b6040516020818303038152906040529050919050565b600854600160a01b900460ff1661105d57604051635874e70f60e11b815260040160405180910390fd5b60005b81811015610ac657600083838381811061107c5761107c611eda565b90506020020135905061108e81611553565b6110ab5760405163b23a568360e01b815260040160405180910390fd5b60008181526009602052604090205460ff16156110db57604051630c8d9eab60e31b815260040160405180910390fd5b6000818152600960205260409020805460ff191660011790556110fe3382611829565b6000818152600a602052604090205460ff161561119e57600b5461ffff640100000000820481166201000090920416111561114c576040516317a6c99160e31b815260040160405180910390fd5b600b5461116490339062010000900461ffff16611829565b600b8054600161ffff6201000080840482168301821602808216828516179092011661ffff1990911663ffffffff19909216919091171790555b50600b805461ffff198116600161ffff92831681019092161790915501611060565b6008546001600160a01b031633146111ea5760405162461bcd60e51b81526004016107ac90611d6d565b600880546001600160a01b0319166001600160a01b03831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b600d54600090610d089061ffff8082169162010000900416611ea1565b60006301ffc9a760e01b6001600160e01b03198316148061128457506380ac58cd60e01b6001600160e01b03198316145b8061064f5750506001600160e01b031916635b5e139f60e01b1490565b6000818152600260205260409020546001600160a01b0316338114806112ea57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6113275760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064016107ac565b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60005b828110156113d05783546113a590839062010000900461ffff16611829565b8354600161ffff62010000808404821683019091160263ffff00001990921691909117855501611386565b50505050565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000818152600260205260409020546001600160a01b0316806114945760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b60448201526064016107ac565b6001600160a01b038116600081815260036020908152604080832080546000190190558583526002825280832080546001600160a01b031990811690915560049092528083208054909216909155518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a9004806115295750819003601f19909101908152919050565b6040516331a9108f60e11b8152600481018290526000907f0000000000000000000000000f78c6eee3c89ff37fd9ef96bd685830993636f26001600160a01b031690636352211e90602401602060405180830381865afa1580156115bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115df9190611fcb565b6001600160a01b0316336001600160a01b0316148061175857507f00000000000000000000000000000000000076a84fef008cdabe6409d2fe638b6001600160a01b031663aba69cf8337f0000000000000000000000000f78c6eee3c89ff37fd9ef96bd685830993636f26001600160a01b0316636352211e866040518263ffffffff1660e01b815260040161167791815260200190565b602060405180830381865afa158015611694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b89190611fcb565b60405160e084901b6001600160e01b03191681526001600160a01b03928316600482015290821660248201527f0000000000000000000000000f78c6eee3c89ff37fd9ef96bd685830993636f2909116604482015260648101859052608401602060405180830381865afa158015611734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117589190611fe8565b8061064f57506040516307ca74b760e21b81526001600160a01b037f0000000000000000000000000f78c6eee3c89ff37fd9ef96bd685830993636f281166004830152602482018490527f000000000000000000000000c3aa9bc72bd623168860a1e5c6a4530d3d80456c1690631f29d2dc90604401602060405180830381865afa1580156117eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180f9190611fcb565b6001600160a01b0316336001600160a01b03161492915050565b6001600160a01b0382166118735760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b60448201526064016107ac565b6000818152600260205260409020546001600160a01b0316156118c95760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b60448201526064016107ac565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b03198116811461194a57600080fd5b50565b60006020828403121561195f57600080fd5b813561196a81611934565b9392505050565b60005b8381101561198c578181015183820152602001611974565b50506000910152565b60208152600082518060208401526119b4816040850160208701611971565b601f01601f19169190910160400192915050565b6000602082840312156119da57600080fd5b5035919050565b6001600160a01b038116811461194a57600080fd5b60008060408385031215611a0957600080fd5b8235611a14816119e1565b946020939093013593505050565b600080600060608486031215611a3757600080fd5b8335611a42816119e1565b92506020840135611a52816119e1565b929592945050506040919091013590565b600060208284031215611a7557600080fd5b813561196a816119e1565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611aa857600080fd5b813567ffffffffffffffff80821115611ac057600080fd5b818401915084601f830112611ad457600080fd5b813581811115611ae657611ae6611a80565b604051601f8201601f19908116603f01168101908382118183101715611b0e57611b0e611a80565b81604052828152876020848701011115611b2757600080fd5b826020860160208301376000928101602001929092525095945050505050565b801515811461194a57600080fd5b600060208284031215611b6757600080fd5b813561196a81611b47565b60008060408385031215611b8557600080fd5b8235611b90816119e1565b91506020830135611ba081611b47565b809150509250929050565b60008060208385031215611bbe57600080fd5b823567ffffffffffffffff80821115611bd657600080fd5b818501915085601f830112611bea57600080fd5b813581811115611bf957600080fd5b8660208260051b8501011115611c0e57600080fd5b60209290920196919550909350505050565b600080600080600060808688031215611c3857600080fd5b8535611c43816119e1565b94506020860135611c53816119e1565b935060408601359250606086013567ffffffffffffffff80821115611c7757600080fd5b818801915088601f830112611c8b57600080fd5b813581811115611c9a57600080fd5b896020828501011115611cac57600080fd5b9699959850939650602001949392505050565b60008060408385031215611cd257600080fd5b8235611cdd816119e1565b91506020830135611ba0816119e1565b600181811c90821680611d0157607f821691505b602082108103611d2157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561064f5761064f611d27565b600060208284031215611d6257600080fd5b815161196a81611934565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b601f821115610ac657600081815260208120601f850160051c81016020861015611dba5750805b601f850160051c820191505b81811015611dd957828155600101611dc6565b505050505050565b815167ffffffffffffffff811115611dfb57611dfb611a80565b611e0f81611e098454611ced565b84611d93565b602080601f831160018114611e445760008415611e2c5750858301515b600019600386901b1c1916600185901b178555611dd9565b600085815260208120601f198616915b82811015611e7357888601518255948401946001909101908401611e54565b5085821015611e915787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61ffff828116828216039080821115611ebc57611ebc611d27565b5092915050565b808202811582820484141761064f5761064f611d27565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000808454611f5281611ced565b60018281168015611f6a5760018114611f7f57611fae565b60ff1984168752821515830287019450611fae565b8860005260208060002060005b85811015611fa55781548a820152908401908201611f8c565b50505082870194505b505050508351611fc2818360208801611971565b01949350505050565b600060208284031215611fdd57600080fd5b815161196a816119e1565b600060208284031215611ffa57600080fd5b815161196a81611b4756fea2646970667358221220adb6875fc7588043d384fd387f224adff1a194db083415573c4e4a7b90955b2b64736f6c63430008120033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000120305aace78052a967182b277f6392670ee98730000000000000000000000000f78c6eee3c89ff37fd9ef96bd685830993636f2000000000000000000000000c3aa9bc72bd623168860a1e5c6a4530d3d80456c00000000000000000000000000000000000076a84fef008cdabe6409d2fe638b000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000096000000000000000000000000000000000000000000000000000000000000013700000000000000000000000000000000000000000000000000000000000003cf00000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000004640000000000000000000000000000000000000000000000000000000000000479000000000000000000000000000000000000000000000000000000000000051e000000000000000000000000000000000000000000000000000000000000056d0000000000000000000000000000000000000000000000000000000000000b730000000000000000000000000000000000000000000000000000000000000bfa0000000000000000000000000000000000000000000000000000000000000c670000000000000000000000000000000000000000000000000000000000000c9a0000000000000000000000000000000000000000000000000000000000000cbe0000000000000000000000000000000000000000000000000000000000000cd90000000000000000000000000000000000000000000000000000000000000df90000000000000000000000000000000000000000000000000000000000000fa70000000000000000000000000000000000000000000000000000000000000fbe0000000000000000000000000000000000000000000000000000000000001094000000000000000000000000000000000000000000000000000000000000115f00000000000000000000000000000000000000000000000000000000000011ad000000000000000000000000000000000000000000000000000000000000127b00000000000000000000000000000000000000000000000000000000000012cd00000000000000000000000000000000000000000000000000000000000012f500000000000000000000000000000000000000000000000000000000000014df00000000000000000000000000000000000000000000000000000000000016d4000000000000000000000000000000000000000000000000000000000000191e000000000000000000000000000000000000000000000000000000000000196900000000000000000000000000000000000000000000000000000000000019fc0000000000000000000000000000000000000000000000000000000000001a350000000000000000000000000000000000000000000000000000000000001c040000000000000000000000000000000000000000000000000000000000001d210000000000000000000000000000000000000000000000000000000000001e720000000000000000000000000000000000000000000000000000000000001e7c0000000000000000000000000000000000000000000000000000000000001ee80000000000000000000000000000000000000000000000000000000000001fb3000000000000000000000000000000000000000000000000000000000000205100000000000000000000000000000000000000000000000000000000000020c500000000000000000000000000000000000000000000000000000000000021c0000000000000000000000000000000000000000000000000000000000000228c0000000000000000000000000000000000000000000000000000000000002293000000000000000000000000000000000000000000000000000000000000229c0000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005768747470733a2f2f6e75636c6561726e6572642e6d7970696e6174612e636c6f75642f697066732f516d564b567769795252353933525274577955793448754b593436706f4555594c796862544c78464c42524361772f000000000000000000

-----Decoded View---------------
Arg [0] : _mintPassContractAddress (address): 0x120305aAce78052a967182B277F6392670eE9873
Arg [1] : _nerdsContractAddress (address): 0x0F78C6eEE3C89Ff37fD9ef96bD685830993636F2
Arg [2] : _warmWalletContractAddress (address): 0xC3AA9bc72Bd623168860a1e5c6a4530d3D80456c
Arg [3] : _delegateCashContract (address): 0x00000000000076A84feF008CDAbe6409d2FE638B
Arg [4] : berserkerTokenIds (uint256[43]): 10,58,150,311,975,992,1124,1145,1310,1389,2931,3066,3175,3226,3262,3289,3577,4007,4030,4244,4447,4525,4731,4813,4853,5343,5844,6430,6505,6652,6709,7172,7457,7794,7804,7912,8115,8273,8389,8640,8844,8851,8860
Arg [5] : _uri (string): https://nuclearnerd.mypinata.cloud/ipfs/QmVKVwiyRR593RRtWyUy4HuKY46poEUYLyhbTLxFLBRCaw/

-----Encoded View---------------
52 Constructor Arguments found :
Arg [0] : 000000000000000000000000120305aace78052a967182b277f6392670ee9873
Arg [1] : 0000000000000000000000000f78c6eee3c89ff37fd9ef96bd685830993636f2
Arg [2] : 000000000000000000000000c3aa9bc72bd623168860a1e5c6a4530d3d80456c
Arg [3] : 00000000000000000000000000000000000076a84fef008cdabe6409d2fe638b
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [5] : 000000000000000000000000000000000000000000000000000000000000003a
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000096
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000137
Arg [8] : 00000000000000000000000000000000000000000000000000000000000003cf
Arg [9] : 00000000000000000000000000000000000000000000000000000000000003e0
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000464
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000479
Arg [12] : 000000000000000000000000000000000000000000000000000000000000051e
Arg [13] : 000000000000000000000000000000000000000000000000000000000000056d
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000b73
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000bfa
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000c67
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000c9a
Arg [18] : 0000000000000000000000000000000000000000000000000000000000000cbe
Arg [19] : 0000000000000000000000000000000000000000000000000000000000000cd9
Arg [20] : 0000000000000000000000000000000000000000000000000000000000000df9
Arg [21] : 0000000000000000000000000000000000000000000000000000000000000fa7
Arg [22] : 0000000000000000000000000000000000000000000000000000000000000fbe
Arg [23] : 0000000000000000000000000000000000000000000000000000000000001094
Arg [24] : 000000000000000000000000000000000000000000000000000000000000115f
Arg [25] : 00000000000000000000000000000000000000000000000000000000000011ad
Arg [26] : 000000000000000000000000000000000000000000000000000000000000127b
Arg [27] : 00000000000000000000000000000000000000000000000000000000000012cd
Arg [28] : 00000000000000000000000000000000000000000000000000000000000012f5
Arg [29] : 00000000000000000000000000000000000000000000000000000000000014df
Arg [30] : 00000000000000000000000000000000000000000000000000000000000016d4
Arg [31] : 000000000000000000000000000000000000000000000000000000000000191e
Arg [32] : 0000000000000000000000000000000000000000000000000000000000001969
Arg [33] : 00000000000000000000000000000000000000000000000000000000000019fc
Arg [34] : 0000000000000000000000000000000000000000000000000000000000001a35
Arg [35] : 0000000000000000000000000000000000000000000000000000000000001c04
Arg [36] : 0000000000000000000000000000000000000000000000000000000000001d21
Arg [37] : 0000000000000000000000000000000000000000000000000000000000001e72
Arg [38] : 0000000000000000000000000000000000000000000000000000000000001e7c
Arg [39] : 0000000000000000000000000000000000000000000000000000000000001ee8
Arg [40] : 0000000000000000000000000000000000000000000000000000000000001fb3
Arg [41] : 0000000000000000000000000000000000000000000000000000000000002051
Arg [42] : 00000000000000000000000000000000000000000000000000000000000020c5
Arg [43] : 00000000000000000000000000000000000000000000000000000000000021c0
Arg [44] : 000000000000000000000000000000000000000000000000000000000000228c
Arg [45] : 0000000000000000000000000000000000000000000000000000000000002293
Arg [46] : 000000000000000000000000000000000000000000000000000000000000229c
Arg [47] : 0000000000000000000000000000000000000000000000000000000000000600
Arg [48] : 0000000000000000000000000000000000000000000000000000000000000057
Arg [49] : 68747470733a2f2f6e75636c6561726e6572642e6d7970696e6174612e636c6f
Arg [50] : 75642f697066732f516d564b567769795252353933525274577955793448754b
Arg [51] : 593436706f4555594c796862544c78464c42524361772f000000000000000000


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.