Contract 0xdd37e255f664BCabd3e6CB450E84b609B992d6e5

 
 
Txn Hash
Method
Block
From
To
Value
0x633cb4af9cd0a5d00446a55b204e4e8796e3d1c11db044c6bbb055d693dd4b62Set Approval For...157198042022-10-10 19:31:4754 days 17 hrs agoENS Name alexdee.eth IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.00177739 38.13658404
0x316938dcabd71e3df20a2e75950754b48a81897dd46193c97337e613425a3bd7Set Cost155156412022-09-11 15:42:2683 days 21 hrs agoENS Name xramnftart.eth IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.00035282 12.20142365
0x94e858bbefc161838dd243532f0bc4974bb2eaf68a8148bc35912c3a2380f984Set Approval For...154620312022-09-02 23:30:4792 days 13 hrs ago0x867654b39b88a256f29245dbd18bc9e72215b558 IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.00030286 6.51023286
0xb2448b21469609409a49d1d904332cba82f85ae6152259927f41ec2b5a46c8c0Set Approval For...154325142022-08-29 6:20:0197 days 7 hrs agoENS Name xramnftart.eth IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.00017898 3.8472415
0x44a397f814085c55faedb58d7a7eb23d660968a00eb410cf3dc487ff90b34ab2Owner_mint154325092022-08-29 6:19:0397 days 7 hrs agoENS Name xramnftart.eth IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.00236545 3.49348646
0x6ee04e9c7d38b7186e429ccfb50daa772eeb5c709bb28b14950d02c7cf6bf4e6Withdraw154169422022-08-26 18:34:2899 days 18 hrs agoENS Name xramnftart.eth IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.00098674 23.18798927
0x73644a86d6faeb6c734f2425d96cfcf5c4b2048f7387153c2acabc1c3011c02dSet Cost154064162022-08-25 1:59:11101 days 11 hrs agoENS Name xramnftart.eth IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.00027617 9.57034495
0x49b2f82bc462f669e040959234441117c52f67694e82131382500b2935dbb58fSafe Transfer Fr...154011372022-08-24 5:43:47102 days 7 hrs ago0x6f15ed6d58eb03417921b0682112db8452f57e9b IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.00044964 7.44314624
0xbd15c7ad6397229e08e2650e430ff523735c72d05830ac4b42c5505a5a316ff0Mint154011202022-08-24 5:39:42102 days 7 hrs ago0x6f15ed6d58eb03417921b0682112db8452f57e9b IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50.05 Ether0.00070087 8.44149552
0x3c0ce5d8464374f3039ae8380565622ccab046302f7a484baa22c3fc5454e202Mint153949692022-08-23 6:14:15103 days 7 hrs ago0x9fe3f0fedfcb7f9263da6871e6ba26f6012b4c22 IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50.05 Ether0.00056562 6.81248623
0x6148255f3d94301617a7d7f817be5b41ffc18734873932a5a340f9e7ddd44659Set Approval For...153652372022-08-18 13:21:59108 days 3 mins agoENS Name hollalincoln.eth IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.000574 12.33845292
0x92ffa83634208d496e7ec77f5814e657f1637a62990aa97182eaf17ca6ce71a4Set Approval For...153084922022-08-09 14:21:43116 days 23 hrs ago0xb79f9a2d5027c6d37d6ec15c6096edc995104a79 IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.0014595 31.37233779
0xdf31fc1d66c724ca7754e55fc877002dc91626135f11527127b86d2283665177Transfer From152531272022-07-31 23:13:10125 days 14 hrs agoENS Name xramnftart.eth IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.00048113 7.71897989
0x959ad8fb23561129007f5d350b0374488dba4e7c320c9a386f7e2babebdb7d7bTransfer From152521042022-07-31 19:19:22125 days 18 hrs agoENS Name xramnftart.eth IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.00041459 6.65156914
0x0d9f8ff3f7f97ff0836c5fbfdac1c49207d6673bdbc52d7e45bf504a65b79590Transfer From152401882022-07-29 22:56:59127 days 14 hrs agoENS Name xramnftart.eth IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.0006218 9.9759082
0x9f44c04dec89a7b7bc7da3b89f87bbc3d0b36b242c7e7fca515cf163a8631845Transfer From152401612022-07-29 22:49:48127 days 14 hrs agoENS Name xramnftart.eth IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.00059797 9.59358321
0xcbe36fe7fcf84158b59a7c272ae8938afcc35b7962d3949c76d5d97247571327Transfer From152396632022-07-29 20:54:14127 days 16 hrs agoENS Name xramnftart.eth IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.00068413 10.97579268
0x705ba2eb19a865f33ade0a386ff00f5010681f6e6d2fd662e30bfbfcfd55c28eSet Approval For...152335052022-07-28 21:51:53128 days 15 hrs agoENS Name askmearse.eth IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.00084572 18.17906488
0x883ff38894edf06fed3759512fbd69fbdca07ee15c2c4dba357576aa8f61d35cMint152199972022-07-26 19:36:42130 days 17 hrs ago0x20a15454931586330173e09899be5199bbf78d54 IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50.05 Ether0.0011559 17.53317035
0x4cea20c9e2a41c883258e491607c3793e724b8d757050804fabf4cfc6823a8c8Transfer From152170592022-07-26 8:25:39131 days 4 hrs agoENS Name askmearse.eth IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.00067039 10.75539806
0x69e883712ca0da7e63d601ea3970c898f29576af881b2d46f757b0a3b6d9feacTransfer From152083892022-07-24 23:54:57132 days 13 hrs agoENS Name xramnftart.eth IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.00047703 7.65324726
0xc8ad2f004fdfd6dd116ccbf02d6008bd4a01a2c2c20c5778475edd3d469dc5fbMint152059962022-07-24 15:04:31132 days 22 hrs ago0x8284ae5e3ac7d1a06911d3c1c8d4808065f4654b IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50.05 Ether0.00153048 18.43355895
0x848f31f241d2ef8972abb7aec6421b81b42e4ecc8eb10176e4785cb35de58ad6Set Approval For...151991612022-07-23 13:22:22134 days 3 mins agoENS Name bomberbot.eth IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.00029914 6.41866808
0xba944b250badbb1cfaa63e20ac824b38fceb68bfd24787e913f41608bed3a060Transfer From151924692022-07-22 12:52:59135 days 32 mins ago0xfb22eed8b27238bcfeb8adaa1351cbdb25087750 IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.00059836 10.40077416
0x780ac59680dc2aaac5aa069a53592c5d9a2843a763024844759d55fe22cdc30cTransfer From151923802022-07-22 12:32:17135 days 53 mins ago0xfb22eed8b27238bcfeb8adaa1351cbdb25087750 IN  0xdd37e255f664bcabd3e6cb450e84b609b992d6e50 Ether0.00101838 16.33836703
[ Download CSV Export 
Latest 4 internal transactions
Parent Txn Hash Block From To Value
0x6ee04e9c7d38b7186e429ccfb50daa772eeb5c709bb28b14950d02c7cf6bf4e6154169422022-08-26 18:34:2899 days 18 hrs ago 0xdd37e255f664bcabd3e6cb450e84b609b992d6e5ENS Name chippchipperson.eth0.15 Ether
0x6ee04e9c7d38b7186e429ccfb50daa772eeb5c709bb28b14950d02c7cf6bf4e6154169422022-08-26 18:34:2899 days 18 hrs ago 0xdd37e255f664bcabd3e6cb450e84b609b992d6e50x750b5a2d2890f97cf86329a23574d0e2d6e47b050.15 Ether
0xc5cdfdd0cc756eca3735c0a9e18cfda313567679f4823953b252bbe8933f3d64151832302022-07-21 2:22:36136 days 11 hrs ago 0xdd37e255f664bcabd3e6cb450e84b609b992d6e5ENS Name chippchipperson.eth0.175 Ether
0xc5cdfdd0cc756eca3735c0a9e18cfda313567679f4823953b252bbe8933f3d64151832302022-07-21 2:22:36136 days 11 hrs ago 0xdd37e255f664bcabd3e6cb450e84b609b992d6e50x750b5a2d2890f97cf86329a23574d0e2d6e47b050.175 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RAINDROP_by_HRG

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 1 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-15
*/

// SPDX-License-Identifier: MIT



/*             ###########          #####       #######       ######            ######      ###  ###########################          
               #############       ######       ########     #######            #######     ###  ###########################
               #############       #######      ########     #######            ########    ###  ###########################
               #####   ######     ########      #########   ########            ########    ###  #####            #####     
               #####    #####     ### ####      #### ####   ### ####            #########   ###  #####            #####
               #####     ####     ### ####      #### ####   ### ####            #### ####   ###  #####            #####    
 #####   ###   #####    #####    ####  ####     ####  ###   ### ####            ####  ###   ###  #####            #####       #####
  ####  ###    #####    #####    ###   ####     ####  ###  ###  ####            ####  ####  ###  #####            #####     ########
   ### ####    #############     ###   ####     ####  #### ###  ####            ####   ###  ###  ###########      #####    ####  ####
   #######     ############     ####   ####     ####   #######  ####            ####   #### ###  ###########      #####    ####   ###
    #####      ###########      ####   #####    ####   #######  ####            ####   #### ###  ###########      #####    #####      
    ####       #####  ####      ###     ####    ####   ######   ####            ####    #######  #####            #####     #######
    #####      #####   ####    #############    ####   ######   ####            ####    #######  #####            #####      ####### 
   #######     #####   #####   ##############   ####    #####   ####            ####     ######  #####            #####       #######
   #######     #####    ####  ###############   ####    #####   ####            ####     ######  #####            #####         ######
  #### ####    #####    ##### ####       ####   ####    #####   ####            ####      #####  #####            #####    ###    ####
 ####  ####    #####    ##### ####       ####   ####    ####    ####            ####      #####  #####            #####    ####  ####
 ###    ####   #####     #### ###         ####  ####    ####    ####            ####       ####  #####            #####     ########
####    #####  #####     ########         ####  ####     ###    ####            ####       ####  #####            #####      ######   */



pragma solidity = 0.8.7;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _owner= msg.sender;
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


library Counters {
    struct Counter {
        uint256 _value; // default: 0
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
        unchecked {
            counter._value += 1;
        }
    }

    function decrement(Counter storage counter) internal {
        uint256 value = counter._value;
        require(value > 0, "Counter: decrement overflow");
        unchecked {
            counter._value = value - 1;
        }
    }

    function reset(Counter storage counter) internal {
        counter._value = 0;
    }
}

interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}


abstract contract ERC165 is IERC165 {
    
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    uint8 private constant _ADDRESS_LENGTH = 20;

    function toString(uint256 value) internal pure returns (string memory) {
       

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }

    function toHexString(address addr) internal pure returns (string memory) {
        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
    }
}




library Address {
   
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
interface IERC721 is IERC165 {
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    function balanceOf(address owner) external view returns (uint256 balance);
    function ownerOf(uint256 tokenId) external view returns (address owner);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function approve(address to, uint256 tokenId) external;
    function setApprovalForAll(address operator, bool _approved) external;
    function getApproved(uint256 tokenId) external view returns (address operator);
    function isApprovedForAll(address owner, address operator) external view returns (bool);
}

interface IERC721Metadata is IERC721 {
    
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

interface IERC721Receiver {

    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}


contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    string private _name;
    string private _symbol;
    mapping(uint256 => address) _owners;
    mapping(address => uint256)  _balances;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    constructor() {
    
    }

    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: address zero is not a valid owner");
        return _balances[owner];
    }

    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: invalid token ID");
        return owner;
    }

    

    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        _requireMinted(tokenId);

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
    }

    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not token owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        _requireMinted(tokenId);

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_msgSender(), operator, approved);
    }

    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner nor approved");

        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory data
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner nor approved");
        _safeTransfer(from, to, tokenId, data);
    }

    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);
    }

    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);

        _afterTokenTransfer(address(0), to, tokenId);
    }

    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);

        // Clear approvals
        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[tokenId];

        emit Transfer(owner, address(0), tokenId);

        _afterTokenTransfer(owner, address(0), tokenId);
    }

    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);
        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);

        _afterTokenTransfer(from, to, tokenId);
    }

    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "ERC721: approve to caller");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    function _requireMinted(uint256 tokenId) internal view virtual {
        require(_exists(tokenId), "ERC721: invalid token ID");
    }

    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}


// main contract start fom here

contract RAINDROP_by_HRG is ERC721, Ownable {
  using Strings for uint256;
  using Counters for Counters.Counter;
 
  Counters.Counter private supply;

  uint256 public cost = 0.05 ether;
  uint256 public maxSupply = 555;
  uint256 public maxMintAmountPerTx = 4;
  bool public paused = false;
  string private NAME = "RAINDROPS";
  string private SYMBOL = "RAIN";
  string public BASE_URI = "ipfs://bafybeif6mj2xp5wtyvavqjxikogjrv532nlv7o7cndrp436r3jboqluhte/";
  
 
  
  constructor()  {

  }
   
   event Received(address, uint);
    receive() external payable {
        emit Received(msg.sender, msg.value);
    }

  modifier mintCompliance(uint256 _mintAmount) {
    require(_mintAmount > 0 && _mintAmount <= maxMintAmountPerTx, "Invalid mint amount!");
    require(supply.current() + _mintAmount <= maxSupply, "Max supply exceeded!");
    _;
  }
  
  function name() public view returns (string memory) {
        return NAME;
    }

    function symbol() public view  returns (string memory) {
        return SYMBOL;
    }

   modifier mintCompliance_ownerMint(uint256 _mintAmount) {
    require(_mintAmount > 0, "Invalid mint amount!");
    require(supply.current() + _mintAmount <= maxSupply, "Max supply exceeded!");
    _;
  }

  function totalSupply() public view returns (uint256) {
    return supply.current();
  }

  function mint(uint256 _mintAmount) public payable mintCompliance(_mintAmount) {
      require(!paused, "The contract is paused!");
      require(msg.value >= cost * _mintAmount, "Insufficient funds!");

    _mintLoop(msg.sender, _mintAmount);
  }
  
  function owner_mint(uint256 _mintAmount) public onlyOwner mintCompliance_ownerMint(_mintAmount){
     _mintLoop(msg.sender, _mintAmount); 
  }

  function walletOfOwner(address _owner)
    public
    view
    returns (uint256[] memory)
  {
    uint256 ownerTokenCount = balanceOf(_owner);
    uint256[] memory ownedTokenIds = new uint256[](ownerTokenCount);
    uint256 currentTokenId = 1;
    uint256 ownedTokenIndex = 0;

    while (ownedTokenIndex < ownerTokenCount && currentTokenId <= maxSupply) {
      address currentTokenOwner = ownerOf(currentTokenId);

      if (currentTokenOwner == _owner) {
        ownedTokenIds[ownedTokenIndex] = currentTokenId;

        ownedTokenIndex++;
      }

      currentTokenId++;
    }

    return ownedTokenIds;
  }

  function tokenURI(uint256 _tokenId)
    public
    view
    virtual
    override
    returns (string memory)
  {
    require(
      _exists(_tokenId),
      "ERC721Metadata: URI query for nonexistent token"
    );

    
    string memory currentBaseURI = _baseURI();
    return bytes(currentBaseURI).length > 0
        ? string(abi.encodePacked(currentBaseURI, _tokenId.toString()))
        : "";
  }

 function setPaused(bool _state) public onlyOwner {
    paused = _state;
  }


  function _mintLoop(address _receiver, uint256 _mintAmount) internal {
    for (uint256 i = 0; i < _mintAmount; i++) {
      supply.increment();
      _safeMint(_receiver, supply.current());
    }
  }
 
  function setCost(uint256 _cost) public onlyOwner {
    cost = _cost;
  }

  function setMaxMintAmountPerTx(uint256 _maxMintAmountPerTx) public onlyOwner {
    maxMintAmountPerTx = _maxMintAmountPerTx;
  }

  function withdraw() public onlyOwner {
    (bool hs, ) = payable(0x750b5a2d2890F97cf86329a23574d0E2D6E47b05).call{value: address(this).balance * 50 / 100}("");
    require(hs);
    (bool os, ) = payable(0x874F02Eaf9Dc6a9b97c67a312A9df489307A14DC).call{value: address(this).balance}("");
    require(os);
  
  }
  function _baseURI() internal view virtual override returns (string memory) {
    return BASE_URI;
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"Received","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BASE_URI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmountPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","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":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"owner_mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxMintAmountPerTx","type":"uint256"}],"name":"setMaxMintAmountPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setPaused","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":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

66b1a2bc2ec5000060085561022b60099081556004600a55600b805460ff1916905560c06040526080819052685241494e44524f505360b81b60a09081526200004c91600c9190620000d2565b50604080518082019091526004808252632920a4a760e11b60209092019182526200007a91600d91620000d2565b5060405180608001604052806043815260200162001e34604391398051620000ab91600e91602090910190620000d2565b50348015620000b957600080fd5b50600680546001600160a01b03191633179055620001b5565b828054620000e09062000178565b90600052602060002090601f0160209004810192826200010457600085556200014f565b82601f106200011f57805160ff19168380011785556200014f565b828001600101855582156200014f579182015b828111156200014f57825182559160200191906001019062000132565b506200015d92915062000161565b5090565b5b808211156200015d576000815560010162000162565b600181811c908216806200018d57607f821691505b60208210811415620001af57634e487b7160e01b600052602260045260246000fd5b50919050565b611c6f80620001c56000396000f3fe6080604052600436106101565760003560e01c806301ffc9a71461019a57806306fdde03146101cf578063081812fc146101f1578063095ea7b31461022957806313faede61461024b57806316c38b3c1461026f57806318160ddd1461028f57806323b872dd146102a45780633ccfd60b146102c457806342842e0e146102d9578063438b6300146102f957806344a0d68a146103265780635c975abb146103465780636352211e1461036057806370a0823114610380578063715018a6146103a05780638da5cb5b146103b557806394354fd0146103ca57806395d89b41146103e0578063a0712d68146103f5578063a22cb46514610408578063b071401b14610428578063b88d4fde14610448578063c87b56dd14610468578063ca0b2f5a14610488578063d5abeb01146104a8578063dbddb26a146104be578063e985e9c5146104d3578063f2fde38b146104f357600080fd5b3661019557604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b3480156101a657600080fd5b506101ba6101b5366004611843565b610513565b60405190151581526020015b60405180910390f35b3480156101db57600080fd5b506101e4610565565b6040516101c69190611972565b3480156101fd57600080fd5b5061021161020c36600461187d565b6105f7565b6040516001600160a01b0390911681526020016101c6565b34801561023557600080fd5b506102496102443660046117fe565b61061e565b005b34801561025757600080fd5b5061026160085481565b6040519081526020016101c6565b34801561027b57600080fd5b5061024961028a366004611828565b610739565b34801561029b57600080fd5b50610261610754565b3480156102b057600080fd5b506102496102bf3660046116bd565b610764565b3480156102d057600080fd5b50610249610795565b3480156102e557600080fd5b506102496102f43660046116bd565b610887565b34801561030557600080fd5b5061031961031436600461166f565b6108a2565b6040516101c6919061192e565b34801561033257600080fd5b5061024961034136600461187d565b610982565b34801561035257600080fd5b50600b546101ba9060ff1681565b34801561036c57600080fd5b5061021161037b36600461187d565b61098f565b34801561038c57600080fd5b5061026161039b36600461166f565b6109c4565b3480156103ac57600080fd5b50610249610a4a565b3480156103c157600080fd5b50610211610a5e565b3480156103d657600080fd5b50610261600a5481565b3480156103ec57600080fd5b506101e4610a6d565b61024961040336600461187d565b610a7c565b34801561041457600080fd5b506102496104233660046117d4565b610b8a565b34801561043457600080fd5b5061024961044336600461187d565b610b95565b34801561045457600080fd5b506102496104633660046116f9565b610ba2565b34801561047457600080fd5b506101e461048336600461187d565b610bda565b34801561049457600080fd5b506102496104a336600461187d565b610ca5565b3480156104b457600080fd5b5061026160095481565b3480156104ca57600080fd5b506101e4610d03565b3480156104df57600080fd5b506101ba6104ee36600461168a565b610d91565b3480156104ff57600080fd5b5061024961050e36600461166f565b610dbf565b60006001600160e01b031982166380ac58cd60e01b148061054457506001600160e01b0319821663c87b56dd60e01b145b8061055f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600c805461057490611b41565b80601f01602080910402602001604051908101604052809291908181526020018280546105a090611b41565b80156105ed5780601f106105c2576101008083540402835291602001916105ed565b820191906000526020600020905b8154815290600101906020018083116105d057829003601f168201915b5050505050905090565b600061060282610e38565b506000908152600460205260409020546001600160a01b031690565b60006106298261098f565b9050806001600160a01b0316836001600160a01b0316141561069c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806106b857506106b88133610d91565b61072a5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610693565b6107348383610e5d565b505050565b610741610ecb565b600b805460ff1916911515919091179055565b600061075f60075490565b905090565b61076e3382610f2a565b61078a5760405162461bcd60e51b815260040161069390611a65565b610734838383610f89565b61079d610ecb565b600073750b5a2d2890f97cf86329a23574d0e2d6e47b0560646107c1476032611adf565b6107cb9190611acb565b604051600081818185875af1925050503d8060008114610807576040519150601f19603f3d011682016040523d82523d6000602084013e61080c565b606091505b505090508061081a57600080fd5b60405160009073874f02eaf9dc6a9b97c67a312a9df489307a14dc9047908381818185875af1925050503d8060008114610870576040519150601f19603f3d011682016040523d82523d6000602084013e610875565b606091505b505090508061088357600080fd5b5050565b61073483838360405180602001604052806000815250610ba2565b606060006108af836109c4565b90506000816001600160401b038111156108cb576108cb611bed565b6040519080825280602002602001820160405280156108f4578160200160208202803683370190505b509050600160005b838110801561090d57506009548211155b1561097857600061091d8361098f565b9050866001600160a01b0316816001600160a01b03161415610965578284838151811061094c5761094c611bd7565b60209081029190910101528161096181611b7c565b9250505b8261096f81611b7c565b935050506108fc565b5090949350505050565b61098a610ecb565b600855565b6000818152600260205260408120546001600160a01b03168061055f5760405162461bcd60e51b815260040161069390611a05565b60006001600160a01b038216610a2e5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610693565b506001600160a01b031660009081526003602052604090205490565b610a52610ecb565b610a5c6000611113565b565b6006546001600160a01b031690565b6060600d805461057490611b41565b80600081118015610a8f5750600a548111155b610aab5760405162461bcd60e51b8152600401610693906119d7565b60095481610ab860075490565b610ac29190611ab3565b1115610ae05760405162461bcd60e51b815260040161069390611a37565b600b5460ff1615610b2d5760405162461bcd60e51b815260206004820152601760248201527654686520636f6e7472616374206973207061757365642160481b6044820152606401610693565b81600854610b3b9190611adf565b341015610b805760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b6044820152606401610693565b6108833383611165565b6108833383836111a2565b610b9d610ecb565b600a55565b610bac3383610f2a565b610bc85760405162461bcd60e51b815260040161069390611a65565b610bd48484848461126d565b50505050565b6060610be5826112a0565b610c495760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610693565b6000610c536112bd565b90506000815111610c735760405180602001604052806000815250610c9e565b80610c7d846112cc565b604051602001610c8e9291906118c2565b6040516020818303038152906040525b9392505050565b610cad610ecb565b8060008111610cce5760405162461bcd60e51b8152600401610693906119d7565b60095481610cdb60075490565b610ce59190611ab3565b1115610b805760405162461bcd60e51b815260040161069390611a37565b600e8054610d1090611b41565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3c90611b41565b8015610d895780601f10610d5e57610100808354040283529160200191610d89565b820191906000526020600020905b815481529060010190602001808311610d6c57829003601f168201915b505050505081565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610dc7610ecb565b6001600160a01b038116610e2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610693565b610e3581611113565b50565b610e41816112a0565b610e355760405162461bcd60e51b815260040161069390611a05565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610e928261098f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b33610ed4610a5e565b6001600160a01b031614610a5c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610693565b600080610f368361098f565b9050806001600160a01b0316846001600160a01b03161480610f5d5750610f5d8185610d91565b80610f815750836001600160a01b0316610f76846105f7565b6001600160a01b0316145b949350505050565b826001600160a01b0316610f9c8261098f565b6001600160a01b0316146110005760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610693565b6001600160a01b0382166110625760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610693565b61106d600082610e5d565b6001600160a01b0383166000908152600360205260408120805460019290611096908490611afe565b90915550506001600160a01b03821660009081526003602052604081208054600192906110c4908490611ab3565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b038681169182179092559151849391871691600080516020611c1a83398151915291a4505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60005b818110156107345761117e600780546001019055565b6111908361118b60075490565b6113c9565b8061119a81611b7c565b915050611168565b816001600160a01b0316836001600160a01b031614156112005760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610693565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611278848484610f89565b611284848484846113e3565b610bd45760405162461bcd60e51b815260040161069390611985565b6000908152600260205260409020546001600160a01b0316151590565b6060600e805461057490611b41565b6060816112f05750506040805180820190915260018152600360fc1b602082015290565b8160005b811561131a578061130481611b7c565b91506113139050600a83611acb565b91506112f4565b6000816001600160401b0381111561133457611334611bed565b6040519080825280601f01601f19166020018201604052801561135e576020820181803683370190505b5090505b8415610f8157611373600183611afe565b9150611380600a86611b97565b61138b906030611ab3565b60f81b8183815181106113a0576113a0611bd7565b60200101906001600160f81b031916908160001a9053506113c2600a86611acb565b9450611362565b6108838282604051806020016040528060008152506114f0565b60006001600160a01b0384163b156114e557604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906114279033908990889088906004016118f1565b602060405180830381600087803b15801561144157600080fd5b505af1925050508015611471575060408051601f3d908101601f1916820190925261146e91810190611860565b60015b6114cb573d80801561149f576040519150601f19603f3d011682016040523d82523d6000602084013e6114a4565b606091505b5080516114c35760405162461bcd60e51b815260040161069390611985565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610f81565b506001949350505050565b6114fa8383611523565b61150760008484846113e3565b6107345760405162461bcd60e51b815260040161069390611985565b6001600160a01b0382166115795760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610693565b611582816112a0565b156115ce5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606401610693565b6001600160a01b03821660009081526003602052604081208054600192906115f7908490611ab3565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386169081179091559051839290600080516020611c1a833981519152908290a45050565b80356001600160a01b038116811461165a57600080fd5b919050565b8035801515811461165a57600080fd5b60006020828403121561168157600080fd5b610c9e82611643565b6000806040838503121561169d57600080fd5b6116a683611643565b91506116b460208401611643565b90509250929050565b6000806000606084860312156116d257600080fd5b6116db84611643565b92506116e960208501611643565b9150604084013590509250925092565b6000806000806080858703121561170f57600080fd5b61171885611643565b935061172660208601611643565b92506040850135915060608501356001600160401b038082111561174957600080fd5b818701915087601f83011261175d57600080fd5b81358181111561176f5761176f611bed565b604051601f8201601f19908116603f0116810190838211818310171561179757611797611bed565b816040528281528a60208487010111156117b057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156117e757600080fd5b6117f083611643565b91506116b46020840161165f565b6000806040838503121561181157600080fd5b61181a83611643565b946020939093013593505050565b60006020828403121561183a57600080fd5b610c9e8261165f565b60006020828403121561185557600080fd5b8135610c9e81611c03565b60006020828403121561187257600080fd5b8151610c9e81611c03565b60006020828403121561188f57600080fd5b5035919050565b600081518084526118ae816020860160208601611b15565b601f01601f19169290920160200192915050565b600083516118d4818460208801611b15565b8351908301906118e8818360208801611b15565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061192490830184611896565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156119665783518352928401929184019160010161194a565b50909695505050505050565b602081526000610c9e6020830184611896565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b602080825260149082015273496e76616c6964206d696e7420616d6f756e742160601b604082015260600190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b6020808252601490820152734d617820737570706c792065786365656465642160601b604082015260600190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008219821115611ac657611ac6611bab565b500190565b600082611ada57611ada611bc1565b500490565b6000816000190483118215151615611af957611af9611bab565b500290565b600082821015611b1057611b10611bab565b500390565b60005b83811015611b30578181015183820152602001611b18565b83811115610bd45750506000910152565b600181811c90821680611b5557607f821691505b60208210811415611b7657634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611b9057611b90611bab565b5060010190565b600082611ba657611ba6611bc1565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610e3557600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220057b8a971518e485a28c56572c4cac743d15ebe009977481d8d5b254d08b680664736f6c63430008070033697066733a2f2f6261667962656966366d6a32787035777479766176716a78696b6f676a72763533326e6c76376f37636e64727034333672336a626f716c756874652f

Deployed ByteCode Sourcemap

19334:3789:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19934:31;;;19943:10;5503:51:1;;19955:9:0;5585:2:1;5570:18;;5563:34;19934:31:0;;5476:18:1;19934:31:0;;;;;;;19334:3789;;;;;11987:305;;;;;;;;;;-1:-1:-1;11987:305:0;;;;;:::i;:::-;;:::i;:::-;;;6410:14:1;;6403:22;6385:41;;6373:2;6358:18;11987:305:0;;;;;;;;20221:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;13569:171::-;;;;;;;;;;-1:-1:-1;13569:171:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;4792:32:1;;;4774:51;;4762:2;4747:18;13569:171:0;4628:203:1;13144:417:0;;;;;;;;;;-1:-1:-1;13144:417:0;;;;;:::i;:::-;;:::i;:::-;;19494:32;;;;;;;;;;;;;;;;;;;13702:25:1;;;13690:2;13675:18;19494:32:0;13556:177:1;22185:77:0;;;;;;;;;;-1:-1:-1;22185:77:0;;;;;:::i;:::-;;:::i;20618:89::-;;;;;;;;;;;;;:::i;14083:336::-;;;;;;;;;;-1:-1:-1;14083:336:0;;;;;:::i;:::-;;:::i;22697:316::-;;;;;;;;;;;;;:::i;14427:185::-;;;;;;;;;;-1:-1:-1;14427:185:0;;;;;:::i;:::-;;:::i;21122:635::-;;;;;;;;;;-1:-1:-1;21122:635:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;22481:74::-;;;;;;;;;;-1:-1:-1;22481:74:0;;;;;:::i;:::-;;:::i;19608:26::-;;;;;;;;;;-1:-1:-1;19608:26:0;;;;;;;;12515:222;;;;;;;;;;-1:-1:-1;12515:222:0;;;;;:::i;:::-;;:::i;12300:207::-;;;;;;;;;;-1:-1:-1;12300:207:0;;;;;:::i;:::-;;:::i;3371:103::-;;;;;;;;;;;;;:::i;3136:87::-;;;;;;;;;;;;;:::i;19566:37::-;;;;;;;;;;;;;;;;20311:87;;;;;;;;;;;;;:::i;20713:251::-;;;;;;:::i;:::-;;:::i;13748:155::-;;;;;;;;;;-1:-1:-1;13748:155:0;;;;;:::i;:::-;;:::i;22561:130::-;;;;;;;;;;-1:-1:-1;22561:130:0;;;;;:::i;:::-;;:::i;14620:323::-;;;;;;;;;;-1:-1:-1;14620:323:0;;;;;:::i;:::-;;:::i;21763:417::-;;;;;;;;;;-1:-1:-1;21763:417:0;;;;;:::i;:::-;;:::i;20972:144::-;;;;;;;;;;-1:-1:-1;20972:144:0;;;;;:::i;:::-;;:::i;19531:30::-;;;;;;;;;;;;;;;;19712:94;;;;;;;;;;;;;:::i;13911:164::-;;;;;;;;;;-1:-1:-1;13911:164:0;;;;;:::i;:::-;;:::i;3482:201::-;;;;;;;;;;-1:-1:-1;3482:201:0;;;;;:::i;:::-;;:::i;11987:305::-;12089:4;-1:-1:-1;;;;;;12126:40:0;;-1:-1:-1;;;12126:40:0;;:105;;-1:-1:-1;;;;;;;12183:48:0;;-1:-1:-1;;;12183:48:0;12126:105;:158;;;-1:-1:-1;;;;;;;;;;4846:40:0;;;12248:36;12106:178;11987:305;-1:-1:-1;;11987:305:0:o;20221:82::-;20258:13;20291:4;20284:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20221:82;:::o;13569:171::-;13645:7;13665:23;13680:7;13665:14;:23::i;:::-;-1:-1:-1;13708:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;13708:24:0;;13569:171::o;13144:417::-;13225:13;13241:23;13256:7;13241:14;:23::i;:::-;13225:39;;13289:5;-1:-1:-1;;;;;13283:11:0;:2;-1:-1:-1;;;;;13283:11:0;;;13275:57;;;;-1:-1:-1;;;13275:57:0;;12244:2:1;13275:57:0;;;12226:21:1;12283:2;12263:18;;;12256:30;12322:34;12302:18;;;12295:62;-1:-1:-1;;;12373:18:1;;;12366:31;12414:19;;13275:57:0;;;;;;;;;2701:10;-1:-1:-1;;;;;13367:21:0;;;;:62;;-1:-1:-1;13392:37:0;13409:5;2701:10;13911:164;:::i;13392:37::-;13345:174;;;;-1:-1:-1;;;13345:174:0;;9970:2:1;13345:174:0;;;9952:21:1;10009:2;9989:18;;;9982:30;10048:34;10028:18;;;10021:62;10119:32;10099:18;;;10092:60;10169:19;;13345:174:0;9768:426:1;13345:174:0;13532:21;13541:2;13545:7;13532:8;:21::i;:::-;13214:347;13144:417;;:::o;22185:77::-;3095:13;:11;:13::i;:::-;22241:6:::1;:15:::0;;-1:-1:-1;;22241:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22185:77::o;20618:89::-;20662:7;20685:16;:6;4077:14;;3985:114;20685:16;20678:23;;20618:89;:::o;14083:336::-;14278:41;2701:10;14311:7;14278:18;:41::i;:::-;14270:100;;;;-1:-1:-1;;;14270:100:0;;;;;;;:::i;:::-;14383:28;14393:4;14399:2;14403:7;14383:9;:28::i;22697:316::-;3095:13;:11;:13::i;:::-;22742:7:::1;22763:42;22848:3;22819:26;:21;22843:2;22819:26;:::i;:::-;:32;;;;:::i;:::-;22755:101;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22741:115;;;22871:2;22863:11;;;::::0;::::1;;22895:90;::::0;22882:7:::1;::::0;22903:42:::1;::::0;22959:21:::1;::::0;22882:7;22895:90;22882:7;22895:90;22959:21;22903:42;22895:90:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22881:104;;;23000:2;22992:11;;;::::0;::::1;;22734:279;;22697:316::o:0;14427:185::-;14565:39;14582:4;14588:2;14592:7;14565:39;;;;;;;;;;;;:16;:39::i;21122:635::-;21197:16;21225:23;21251:17;21261:6;21251:9;:17::i;:::-;21225:43;;21275:30;21322:15;-1:-1:-1;;;;;21308:30:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21308:30:0;-1:-1:-1;21275:63:0;-1:-1:-1;21370:1:0;21345:22;21414:309;21439:15;21421;:33;:64;;;;;21476:9;;21458:14;:27;;21421:64;21414:309;;;21496:25;21524:23;21532:14;21524:7;:23::i;:::-;21496:51;;21583:6;-1:-1:-1;;;;;21562:27:0;:17;-1:-1:-1;;;;;21562:27:0;;21558:131;;;21635:14;21602:13;21616:15;21602:30;;;;;;;;:::i;:::-;;;;;;;;;;:47;21662:17;;;;:::i;:::-;;;;21558:131;21699:16;;;;:::i;:::-;;;;21487:236;21414:309;;;-1:-1:-1;21738:13:0;;21122:635;-1:-1:-1;;;;21122:635:0:o;22481:74::-;3095:13;:11;:13::i;:::-;22537:4:::1;:12:::0;22481:74::o;12515:222::-;12587:7;12623:16;;;:7;:16;;;;;;-1:-1:-1;;;;;12623:16:0;12658:19;12650:56;;;;-1:-1:-1;;;12650:56:0;;;;;;;:::i;12300:207::-;12372:7;-1:-1:-1;;;;;12400:19:0;;12392:73;;;;-1:-1:-1;;;12392:73:0;;9560:2:1;12392:73:0;;;9542:21:1;9599:2;9579:18;;;9572:30;9638:34;9618:18;;;9611:62;-1:-1:-1;;;9689:18:1;;;9682:39;9738:19;;12392:73:0;9358:405:1;12392:73:0;-1:-1:-1;;;;;;12483:16:0;;;;;:9;:16;;;;;;;12300:207::o;3371:103::-;3095:13;:11;:13::i;:::-;3436:30:::1;3463:1;3436:18;:30::i;:::-;3371:103::o:0;3136:87::-;3209:6;;-1:-1:-1;;;;;3209:6:0;;3136:87::o;20311:::-;20351:13;20384:6;20377:13;;;;;:::i;20713:251::-;20778:11;20053:1;20039:11;:15;:52;;;;;20073:18;;20058:11;:33;;20039:52;20031:85;;;;-1:-1:-1;;;20031:85:0;;;;;;;:::i;:::-;20165:9;;20150:11;20131:16;:6;4077:14;;3985:114;20131:16;:30;;;;:::i;:::-;:43;;20123:76;;;;-1:-1:-1;;;20123:76:0;;;;;;;:::i;:::-;20809:6:::1;::::0;::::1;;20808:7;20800:43;;;::::0;-1:-1:-1;;;20800:43:0;;11123:2:1;20800:43:0::1;::::0;::::1;11105:21:1::0;11162:2;11142:18;;;11135:30;-1:-1:-1;;;11181:18:1;;;11174:53;11244:18;;20800:43:0::1;10921:347:1::0;20800:43:0::1;20880:11;20873:4;;:18;;;;:::i;:::-;20860:9;:31;;20852:63;;;::::0;-1:-1:-1;;;20852:63:0;;13410:2:1;20852:63:0::1;::::0;::::1;13392:21:1::0;13449:2;13429:18;;;13422:30;-1:-1:-1;;;13468:18:1;;;13461:49;13527:18;;20852:63:0::1;13208:343:1::0;20852:63:0::1;20924:34;20934:10;20946:11;20924:9;:34::i;13748:155::-:0;13843:52;2701:10;13876:8;13886;13843:18;:52::i;22561:130::-;3095:13;:11;:13::i;:::-;22645:18:::1;:40:::0;22561:130::o;14620:323::-;14794:41;2701:10;14827:7;14794:18;:41::i;:::-;14786:100;;;;-1:-1:-1;;;14786:100:0;;;;;;;:::i;:::-;14897:38;14911:4;14917:2;14921:7;14930:4;14897:13;:38::i;:::-;14620:323;;;;:::o;21763:417::-;21862:13;21903:17;21911:8;21903:7;:17::i;:::-;21887:98;;;;-1:-1:-1;;;21887:98:0;;11475:2:1;21887:98:0;;;11457:21:1;11514:2;11494:18;;;11487:30;11553:34;11533:18;;;11526:62;-1:-1:-1;;;11604:18:1;;;11597:45;11659:19;;21887:98:0;11273:411:1;21887:98:0;22000:28;22031:10;:8;:10::i;:::-;22000:41;;22086:1;22061:14;22055:28;:32;:119;;;;;;;;;;;;;;;;;22123:14;22139:19;:8;:17;:19::i;:::-;22106:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22055:119;22048:126;21763:417;-1:-1:-1;;;21763:417:0:o;20972:144::-;3095:13;:11;:13::i;:::-;21055:11:::1;20489:1;20475:11;:15;20467:48;;;;-1:-1:-1::0;;;20467:48:0::1;;;;;;;:::i;:::-;20564:9;;20549:11;20530:16;:6;4077:14:::0;;3985:114;20530:16:::1;:30;;;;:::i;:::-;:43;;20522:76;;;;-1:-1:-1::0;;;20522:76:0::1;;;;;;;:::i;19712:94::-:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13911:164::-;-1:-1:-1;;;;;14032:25:0;;;14008:4;14032:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;13911:164::o;3482:201::-;3095:13;:11;:13::i;:::-;-1:-1:-1;;;;;3571:22:0;::::1;3563:73;;;::::0;-1:-1:-1;;;3563:73:0;;7282:2:1;3563:73:0::1;::::0;::::1;7264:21:1::0;7321:2;7301:18;;;7294:30;7360:34;7340:18;;;7333:62;-1:-1:-1;;;7411:18:1;;;7404:36;7457:19;;3563:73:0::1;7080:402:1::0;3563:73:0::1;3647:28;3666:8;3647:18;:28::i;:::-;3482:201:::0;:::o;18083:135::-;18165:16;18173:7;18165;:16::i;:::-;18157:53;;;;-1:-1:-1;;;18157:53:0;;;;;;;:::i;17578:174::-;17653:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;17653:29:0;-1:-1:-1;;;;;17653:29:0;;;;;;;;:24;;17707:23;17653:24;17707:14;:23::i;:::-;-1:-1:-1;;;;;17698:46:0;;;;;;;;;;;17578:174;;:::o;3231:132::-;2701:10;3295:7;:5;:7::i;:::-;-1:-1:-1;;;;;3295:23:0;;3287:68;;;;-1:-1:-1;;;3287:68:0;;10762:2:1;3287:68:0;;;10744:21:1;;;10781:18;;;10774:30;10840:34;10820:18;;;10813:62;10892:18;;3287:68:0;10560:356:1;15407:264:0;15500:4;15517:13;15533:23;15548:7;15533:14;:23::i;:::-;15517:39;;15586:5;-1:-1:-1;;;;;15575:16:0;:7;-1:-1:-1;;;;;15575:16:0;;:52;;;;15595:32;15612:5;15619:7;15595:16;:32::i;:::-;15575:87;;;;15655:7;-1:-1:-1;;;;;15631:31:0;:20;15643:7;15631:11;:20::i;:::-;-1:-1:-1;;;;;15631:31:0;;15575:87;15567:96;15407:264;-1:-1:-1;;;;15407:264:0:o;16999:571::-;17158:4;-1:-1:-1;;;;;17131:31:0;:23;17146:7;17131:14;:23::i;:::-;-1:-1:-1;;;;;17131:31:0;;17123:81;;;;-1:-1:-1;;;17123:81:0;;7689:2:1;17123:81:0;;;7671:21:1;7728:2;7708:18;;;7701:30;7767:34;7747:18;;;7740:62;-1:-1:-1;;;7818:18:1;;;7811:35;7863:19;;17123:81:0;7487:401:1;17123:81:0;-1:-1:-1;;;;;17223:16:0;;17215:65;;;;-1:-1:-1;;;17215:65:0;;8801:2:1;17215:65:0;;;8783:21:1;8840:2;8820:18;;;8813:30;8879:34;8859:18;;;8852:62;-1:-1:-1;;;8930:18:1;;;8923:34;8974:19;;17215:65:0;8599:400:1;17215:65:0;17343:29;17360:1;17364:7;17343:8;:29::i;:::-;-1:-1:-1;;;;;17385:15:0;;;;;;:9;:15;;;;;:20;;17404:1;;17385:15;:20;;17404:1;;17385:20;:::i;:::-;;;;-1:-1:-1;;;;;;;17416:13:0;;;;;;:9;:13;;;;;:18;;17433:1;;17416:13;:18;;17433:1;;17416:18;:::i;:::-;;;;-1:-1:-1;;17445:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;17445:21:0;-1:-1:-1;;;;;17445:21:0;;;;;;;;;17484:27;;17445:16;;17484:27;;;;-1:-1:-1;;;;;;;;;;;17484:27:0;;13214:347;13144:417;;:::o;3691:191::-;3784:6;;;-1:-1:-1;;;;;3801:17:0;;;-1:-1:-1;;;;;;3801:17:0;;;;;;;3834:40;;3784:6;;;3801:17;3784:6;;3834:40;;3765:16;;3834:40;3754:128;3691:191;:::o;22270:204::-;22350:9;22345:124;22369:11;22365:1;:15;22345:124;;;22396:18;:6;4196:19;;4214:1;4196:19;;;4107:127;22396:18;22423:38;22433:9;22444:16;:6;4077:14;;3985:114;22444:16;22423:9;:38::i;:::-;22382:3;;;;:::i;:::-;;;;22345:124;;17760:315;17915:8;-1:-1:-1;;;;;17906:17:0;:5;-1:-1:-1;;;;;17906:17:0;;;17898:55;;;;-1:-1:-1;;;17898:55:0;;9206:2:1;17898:55:0;;;9188:21:1;9245:2;9225:18;;;9218:30;-1:-1:-1;;;9264:18:1;;;9257:55;9329:18;;17898:55:0;9004:349:1;17898:55:0;-1:-1:-1;;;;;17964:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;17964:46:0;;;;;;;;;;18026:41;;6385::1;;;18026::0;;6358:18:1;18026:41:0;;;;;;;17760:315;;;:::o;14951:313::-;15107:28;15117:4;15123:2;15127:7;15107:9;:28::i;:::-;15154:47;15177:4;15183:2;15187:7;15196:4;15154:22;:47::i;:::-;15146:110;;;;-1:-1:-1;;;15146:110:0;;;;;;;:::i;15272:127::-;15337:4;15361:16;;;:7;:16;;;;;;-1:-1:-1;;;;;15361:16:0;:30;;;15272:127::o;23017:103::-;23077:13;23106:8;23099:15;;;;;:::i;5041:543::-;5097:13;5138:10;5134:53;;-1:-1:-1;;5165:10:0;;;;;;;;;;;;-1:-1:-1;;;5165:10:0;;;;;5041:543::o;5134:53::-;5212:5;5197:12;5253:78;5260:9;;5253:78;;5286:8;;;;:::i;:::-;;-1:-1:-1;5309:10:0;;-1:-1:-1;5317:2:0;5309:10;;:::i;:::-;;;5253:78;;;5341:19;5373:6;-1:-1:-1;;;;;5363:17:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5363:17:0;;5341:39;;5391:154;5398:10;;5391:154;;5425:11;5435:1;5425:11;;:::i;:::-;;-1:-1:-1;5494:10:0;5502:2;5494:5;:10;:::i;:::-;5481:24;;:2;:24;:::i;:::-;5468:39;;5451:6;5458;5451:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;5451:56:0;;;;;;;;-1:-1:-1;5522:11:0;5531:2;5522:11;;:::i;:::-;;;5391:154;;15679:110;15755:26;15765:2;15769:7;15755:26;;;;;;;;;;;;:9;:26::i;18226:797::-;18380:4;-1:-1:-1;;;;;18401:13:0;;6675:19;:23;18397:619;;18437:71;;-1:-1:-1;;;18437:71:0;;-1:-1:-1;;;;;18437:36:0;;;;;:71;;2701:10;;18488:4;;18494:7;;18503:4;;18437:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18437:71:0;;;;;;;;-1:-1:-1;;18437:71:0;;;;;;;;;;;;:::i;:::-;;;18433:528;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18678:13:0;;18674:272;;18721:60;;-1:-1:-1;;;18721:60:0;;;;;;;:::i;18674:272::-;18896:6;18890:13;18881:6;18877:2;18873:15;18866:38;18433:528;-1:-1:-1;;;;;;18559:51:0;-1:-1:-1;;;18559:51:0;;-1:-1:-1;18552:58:0;;18397:619;-1:-1:-1;19000:4:0;18226:797;;;;;;:::o;15797:319::-;15926:18;15932:2;15936:7;15926:5;:18::i;:::-;15977:53;16008:1;16012:2;16016:7;16025:4;15977:22;:53::i;:::-;15955:153;;;;-1:-1:-1;;;15955:153:0;;;;;;;:::i;16124:439::-;-1:-1:-1;;;;;16204:16:0;;16196:61;;;;-1:-1:-1;;;16196:61:0;;10401:2:1;16196:61:0;;;10383:21:1;;;10420:18;;;10413:30;10479:34;10459:18;;;10452:62;10531:18;;16196:61:0;10199:356:1;16196:61:0;16277:16;16285:7;16277;:16::i;:::-;16276:17;16268:58;;;;-1:-1:-1;;;16268:58:0;;8095:2:1;16268:58:0;;;8077:21:1;8134:2;8114:18;;;8107:30;-1:-1:-1;;;8153:18:1;;;8146:58;8221:18;;16268:58:0;7893:352:1;16268:58:0;-1:-1:-1;;;;;16397:13:0;;;;;;:9;:13;;;;;:18;;16414:1;;16397:13;:18;;16414:1;;16397:18;:::i;:::-;;;;-1:-1:-1;;16426:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;16426:21:0;-1:-1:-1;;;;;16426:21:0;;;;;;;;16465:33;;16426:16;;;-1:-1:-1;;;;;;;;;;;16465:33:0;16426:16;;16465:33;22734:279:::1;;22697:316::o:0;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:160::-;257:20;;313:13;;306:21;296:32;;286:60;;342:1;339;332:12;357:186;416:6;469:2;457:9;448:7;444:23;440:32;437:52;;;485:1;482;475:12;437:52;508:29;527:9;508:29;:::i;548:260::-;616:6;624;677:2;665:9;656:7;652:23;648:32;645:52;;;693:1;690;683:12;645:52;716:29;735:9;716:29;:::i;:::-;706:39;;764:38;798:2;787:9;783:18;764:38;:::i;:::-;754:48;;548:260;;;;;:::o;813:328::-;890:6;898;906;959:2;947:9;938:7;934:23;930:32;927:52;;;975:1;972;965:12;927:52;998:29;1017:9;998:29;:::i;:::-;988:39;;1046:38;1080:2;1069:9;1065:18;1046:38;:::i;:::-;1036:48;;1131:2;1120:9;1116:18;1103:32;1093:42;;813:328;;;;;:::o;1146:1138::-;1241:6;1249;1257;1265;1318:3;1306:9;1297:7;1293:23;1289:33;1286:53;;;1335:1;1332;1325:12;1286:53;1358:29;1377:9;1358:29;:::i;:::-;1348:39;;1406:38;1440:2;1429:9;1425:18;1406:38;:::i;:::-;1396:48;-1:-1:-1;1491:2:1;1476:18;;1463:32;;-1:-1:-1;1546:2:1;1531:18;;1518:32;-1:-1:-1;;;;;1599:14:1;;;1596:34;;;1626:1;1623;1616:12;1596:34;1664:6;1653:9;1649:22;1639:32;;1709:7;1702:4;1698:2;1694:13;1690:27;1680:55;;1731:1;1728;1721:12;1680:55;1767:2;1754:16;1789:2;1785;1782:10;1779:36;;;1795:18;;:::i;:::-;1870:2;1864:9;1838:2;1924:13;;-1:-1:-1;;1920:22:1;;;1944:2;1916:31;1912:40;1900:53;;;1968:18;;;1988:22;;;1965:46;1962:72;;;2014:18;;:::i;:::-;2054:10;2050:2;2043:22;2089:2;2081:6;2074:18;2129:7;2124:2;2119;2115;2111:11;2107:20;2104:33;2101:53;;;2150:1;2147;2140:12;2101:53;2206:2;2201;2197;2193:11;2188:2;2180:6;2176:15;2163:46;2251:1;2246:2;2241;2233:6;2229:15;2225:24;2218:35;2272:6;2262:16;;;;;;;1146:1138;;;;;;;:::o;2289:254::-;2354:6;2362;2415:2;2403:9;2394:7;2390:23;2386:32;2383:52;;;2431:1;2428;2421:12;2383:52;2454:29;2473:9;2454:29;:::i;:::-;2444:39;;2502:35;2533:2;2522:9;2518:18;2502:35;:::i;2548:254::-;2616:6;2624;2677:2;2665:9;2656:7;2652:23;2648:32;2645:52;;;2693:1;2690;2683:12;2645:52;2716:29;2735:9;2716:29;:::i;:::-;2706:39;2792:2;2777:18;;;;2764:32;;-1:-1:-1;;;2548:254:1:o;2807:180::-;2863:6;2916:2;2904:9;2895:7;2891:23;2887:32;2884:52;;;2932:1;2929;2922:12;2884:52;2955:26;2971:9;2955:26;:::i;2992:245::-;3050:6;3103:2;3091:9;3082:7;3078:23;3074:32;3071:52;;;3119:1;3116;3109:12;3071:52;3158:9;3145:23;3177:30;3201:5;3177:30;:::i;3242:249::-;3311:6;3364:2;3352:9;3343:7;3339:23;3335:32;3332:52;;;3380:1;3377;3370:12;3332:52;3412:9;3406:16;3431:30;3455:5;3431:30;:::i;3496:180::-;3555:6;3608:2;3596:9;3587:7;3583:23;3579:32;3576:52;;;3624:1;3621;3614:12;3576:52;-1:-1:-1;3647:23:1;;3496:180;-1:-1:-1;3496:180:1:o;3681:257::-;3722:3;3760:5;3754:12;3787:6;3782:3;3775:19;3803:63;3859:6;3852:4;3847:3;3843:14;3836:4;3829:5;3825:16;3803:63;:::i;:::-;3920:2;3899:15;-1:-1:-1;;3895:29:1;3886:39;;;;3927:4;3882:50;;3681:257;-1:-1:-1;;3681:257:1:o;3943:470::-;4122:3;4160:6;4154:13;4176:53;4222:6;4217:3;4210:4;4202:6;4198:17;4176:53;:::i;:::-;4292:13;;4251:16;;;;4314:57;4292:13;4251:16;4348:4;4336:17;;4314:57;:::i;:::-;4387:20;;3943:470;-1:-1:-1;;;;3943:470:1:o;4836:488::-;-1:-1:-1;;;;;5105:15:1;;;5087:34;;5157:15;;5152:2;5137:18;;5130:43;5204:2;5189:18;;5182:34;;;5252:3;5247:2;5232:18;;5225:31;;;5030:4;;5273:45;;5298:19;;5290:6;5273:45;:::i;:::-;5265:53;4836:488;-1:-1:-1;;;;;;4836:488:1:o;5608:632::-;5779:2;5831:21;;;5901:13;;5804:18;;;5923:22;;;5750:4;;5779:2;6002:15;;;;5976:2;5961:18;;;5750:4;6045:169;6059:6;6056:1;6053:13;6045:169;;;6120:13;;6108:26;;6189:15;;;;6154:12;;;;6081:1;6074:9;6045:169;;;-1:-1:-1;6231:3:1;;5608:632;-1:-1:-1;;;;;;5608:632:1:o;6437:219::-;6586:2;6575:9;6568:21;6549:4;6606:44;6646:2;6635:9;6631:18;6623:6;6606:44;:::i;6661:414::-;6863:2;6845:21;;;6902:2;6882:18;;;6875:30;6941:34;6936:2;6921:18;;6914:62;-1:-1:-1;;;7007:2:1;6992:18;;6985:48;7065:3;7050:19;;6661:414::o;8250:344::-;8452:2;8434:21;;;8491:2;8471:18;;;8464:30;-1:-1:-1;;;8525:2:1;8510:18;;8503:50;8585:2;8570:18;;8250:344::o;11689:348::-;11891:2;11873:21;;;11930:2;11910:18;;;11903:30;-1:-1:-1;;;11964:2:1;11949:18;;11942:54;12028:2;12013:18;;11689:348::o;12444:344::-;12646:2;12628:21;;;12685:2;12665:18;;;12658:30;-1:-1:-1;;;12719:2:1;12704:18;;12697:50;12779:2;12764:18;;12444:344::o;12793:410::-;12995:2;12977:21;;;13034:2;13014:18;;;13007:30;13073:34;13068:2;13053:18;;13046:62;-1:-1:-1;;;13139:2:1;13124:18;;13117:44;13193:3;13178:19;;12793:410::o;13738:128::-;13778:3;13809:1;13805:6;13802:1;13799:13;13796:39;;;13815:18;;:::i;:::-;-1:-1:-1;13851:9:1;;13738:128::o;13871:120::-;13911:1;13937;13927:35;;13942:18;;:::i;:::-;-1:-1:-1;13976:9:1;;13871:120::o;13996:168::-;14036:7;14102:1;14098;14094:6;14090:14;14087:1;14084:21;14079:1;14072:9;14065:17;14061:45;14058:71;;;14109:18;;:::i;:::-;-1:-1:-1;14149:9:1;;13996:168::o;14169:125::-;14209:4;14237:1;14234;14231:8;14228:34;;;14242:18;;:::i;:::-;-1:-1:-1;14279:9:1;;14169:125::o;14299:258::-;14371:1;14381:113;14395:6;14392:1;14389:13;14381:113;;;14471:11;;;14465:18;14452:11;;;14445:39;14417:2;14410:10;14381:113;;;14512:6;14509:1;14506:13;14503:48;;;-1:-1:-1;;14547:1:1;14529:16;;14522:27;14299:258::o;14562:380::-;14641:1;14637:12;;;;14684;;;14705:61;;14759:4;14751:6;14747:17;14737:27;;14705:61;14812:2;14804:6;14801:14;14781:18;14778:38;14775:161;;;14858:10;14853:3;14849:20;14846:1;14839:31;14893:4;14890:1;14883:15;14921:4;14918:1;14911:15;14775:161;;14562:380;;;:::o;14947:135::-;14986:3;-1:-1:-1;;15007:17:1;;15004:43;;;15027:18;;:::i;:::-;-1:-1:-1;15074:1:1;15063:13;;14947:135::o;15087:112::-;15119:1;15145;15135:35;;15150:18;;:::i;:::-;-1:-1:-1;15184:9:1;;15087:112::o;15204:127::-;15265:10;15260:3;15256:20;15253:1;15246:31;15296:4;15293:1;15286:15;15320:4;15317:1;15310:15;15336:127;15397:10;15392:3;15388:20;15385:1;15378:31;15428:4;15425:1;15418:15;15452:4;15449:1;15442:15;15468:127;15529:10;15524:3;15520:20;15517:1;15510:31;15560:4;15557:1;15550:15;15584:4;15581:1;15574:15;15600:127;15661:10;15656:3;15652:20;15649:1;15642:31;15692:4;15689:1;15682:15;15716:4;15713:1;15706:15;15732:131;-1:-1:-1;;;;;;15806:32:1;;15796:43;;15786:71;;15853:1;15850;15843:12

Swarm Source

ipfs://057b8a971518e485a28c56572c4cac743d15ebe009977481d8d5b254d08b6806
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

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.