Spells of Genesis Askian Card
            
            
         
        
            
                
            
    
        
            Stats
            
                Public Functions
                23
            
            
                Event Types
                4
            
            
                Code Size
                55,128 bytes
            
         
     
 
         
            
                
    
        Events (4)
        keyboard_arrow_up
    
    
        
            
                
                    
                        
                            Approval
                                Event
                            
                            
                                Parameters
            
                        
                            help
                            
                                                        Event parameters list the data that an event contains.
            
                            
                        
                                    
                            
                                
                                    
                                        | owner | 
                            address help
                            
                                The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                    
                                        | approved | 
                            address help
                            
                                The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                    
                                        | tokenId | 
                            uint256 help
                            
                                The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                                
                            
                         
                     
                 
                
                    
                        
                            ApprovalForAll
                                Event
                            
                            
                                Parameters
            
                        
                            help
                            
                                                        Event parameters list the data that an event contains.
            
                            
                        
                                    
                            
                                
                                    
                                        | owner | 
                            address help
                            
                                The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                    
                                        | operator | 
                            address help
                            
                                The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                    
                                        | approved | 
                            bool help
                            
                                The type of this value is other. | 
                                
                            
                         
                     
                 
                
                    
                        
                            OwnershipTransferred
                                Event
                            
                            
                                Parameters
            
                        
                            help
                            
                                                        Event parameters list the data that an event contains.
            
                            
                        
                                    
                            
                                
                                    
                                        | previousOwner | 
                            address help
                            
                                The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                    
                                        | newOwner | 
                            address help
                            
                                The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                            
                         
                     
                 
                
                    
                        
                            Transfer
                                Event
                            
                            
                                Parameters
            
                        
                            help
                            
                                                        Event parameters list the data that an event contains.
            
                            
                        
                                    
                            
                                
                                    
                                        | from | 
                            address help
                            
                                The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                    
                                        | to | 
                            address help
                            
                                The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                    
                                        | tokenId | 
                            uint256 help
                            
                                The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                                
                            
                         
                     
                 
         
     
 
             
            
                
    
        Constants (5)
        keyboard_arrow_up
    
    
        
                
                    
                        
                            _ERC721_RECEIVED
                                Constant
                            
                            
                                
                        
                            bytes4 
help
                            
                                The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data.
                            
                         
                            
                                0x150b7a02
                            
                         
                     
                 
                
                    
                        
                            _INTERFACE_ID_ERC721
                                Constant
                            
                            
                                
                        
                            bytes4 
help
                            
                                The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data.
                            
                         
                            
                                0x80ac58cd
                            
                         
                     
                 
                
                    
                        
                            _INTERFACE_ID_ERC165
                                Constant
                            
                            
                                
                        
                            bytes4 
help
                            
                                The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data.
                            
                         
                            
                                0x01ffc9a7
                            
                         
                     
                 
                
                    
                        
                            _INTERFACE_ID_ERC721_ENUMERABLE
                                Constant
                            
                            
                                
                        
                            bytes4 
help
                            
                                The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data.
                            
                         
                            
                                0x780e9d63
                            
                         
                     
                 
                
                    
                        
                            _INTERFACE_ID_ERC721_METADATA
                                Constant
                            
                            
                                
                        
                            bytes4 
help
                            
                                The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data.
                            
                         
                            
                                0x5b5e139f
                            
                         
                     
                 
         
     
 
             
            
                
    
        State Variables (16)
        keyboard_arrow_up
    
    
        
            
                
                    
                        
                            proxyRegistryAddress
                                Variable
                            
                            
                                
                        
                            address 
help
                            
                                The type of this value is address, which means it stores an Ethereum address, such as a wallet address.
                            
                         
                            
                         
                     
                 
                
                    
                        
                            _currentTokenId
                                Variable
                            
                            
                                
                        
                            uint256 
help
                            
                                The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number.
                            
                         
                            
                         
                     
                 
                
                    
                        
                            _tokenOwner
                                Variable
                            
                            
                                
                        
                            mapping(uint256 => address) 
help
                            
                                The type of this value is other.
                            
                         
                            
                         
                     
                 
                
                    
                        
                            _tokenApprovals
                                Variable
                            
                            
                                
                        
                            mapping(uint256 => address) 
help
                            
                                The type of this value is other.
                            
                         
                            
                         
                     
                 
                
                    
                        
                            _ownedTokensCount
                                Variable
                            
                            
                                
                        
                            mapping(address => Counters.Counter) 
help
                            
                                The type of this value is other.
                            
                         
                            
                         
                     
                 
                
                    
                        
                            _operatorApprovals
                                Variable
                            
                            
                                
                        
                            mapping(address => mapping(address => bool)) 
help
                            
                                The type of this value is other.
                            
                         
                            
                         
                     
                 
                
                    
                        
                            _supportedInterfaces
                                Variable
                            
                            
                                
                        
                            mapping(bytes4 => bool) 
help
                            
                                The type of this value is other.
                            
                         
                            
                         
                     
                 
                
                    
                        
                            _ownedTokens
                                Variable
                            
                            
                                
                        
                            mapping(address => uint256[]) 
help
                            
                                The type of this value is other.
                            
                         
                            
                         
                     
                 
                
                    
                        
                            _ownedTokensIndex
                                Variable
                            
                            
                                
                        
                            mapping(uint256 => uint256) 
help
                            
                                The type of this value is other.
                            
                         
                            
                         
                     
                 
                
                    
                        
                            _allTokens
                                Variable
                            
                            
                                
                        
                            uint256[] 
help
                            
                                The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. Because the type ends with '[]', that means it is an array. An array is just a list of values, rather than a single value.
                            
                         
                            
                         
                     
                 
                
                    
                        
                            _allTokensIndex
                                Variable
                            
                            
                                
                        
                            mapping(uint256 => uint256) 
help
                            
                                The type of this value is other.
                            
                         
                            
                         
                     
                 
                
                    
                        
                            _name
                                Variable
                            
                            
                                
                        
                            string 
help
                            
                                The type of this value is string, which is basically just plain text. It's called a string because it is a 'string' of letters.
                            
                         
                            
                         
                     
                 
                
                    
                        
                            _symbol
                                Variable
                            
                            
                                
                        
                            string 
help
                            
                                The type of this value is string, which is basically just plain text. It's called a string because it is a 'string' of letters.
                            
                         
                            
                         
                     
                 
                
                    
                        
                            _baseURI
                                Variable
                            
                            
                                
                        
                            string 
help
                            
                                The type of this value is string, which is basically just plain text. It's called a string because it is a 'string' of letters.
                            
                         
                            
                         
                     
                 
                
                    
                        
                            _tokenURIs
                                Variable
                            
                            
                                
                        
                            mapping(uint256 => string) 
help
                            
                                The type of this value is other.
                            
                         
                            
                         
                     
                 
                
                    
                        
                            _owner
                                Variable
                            
                            
                                
                        
                            address 
help
                            
                                The type of this value is address, which means it stores an Ethereum address, such as a wallet address.
                            
                         
                            
                         
                     
                 
         
     
 
             
        
        
                
    
        owner
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function owner() public view returns (address) {
  return _owner;
}
                 
         
     
 
                
    
        isOwner
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function isOwner() public view returns (bool) {
  return _msgSender() == _owner;
}
                 
         
     
 
                
    
        renounceOwnership
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Modifiers
            
                help
                
                                                Modifiers are additions to a function that typically make various checks before
                            the function is run.
                
            
                            
                    
                            
                                onlyOwner
                                    checks for the following:
                                
                                
                             
                     
                 
                Source Code
                
                    function renounceOwnership() public onlyOwner {
  emit OwnershipTransferred(_owner, address(0));
  _owner = address(0);
}
                 
         
     
 
                
    
        transferOwnership
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | newOwner | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Modifiers
            
                help
                
                                                Modifiers are additions to a function that typically make various checks before
                            the function is run.
                
            
                            
                    
                            
                                onlyOwner
                                    checks for the following:
                                
                                
                             
                     
                 
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function transferOwnership(address newOwner) public onlyOwner {
  _transferOwnership(newOwner);
}
                 
         
     
 
                
    
        balanceOf
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | owner | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function balanceOf(address owner) public view returns (uint256) {
  require(owner != address(0), "ERC721: balance query for the zero address");
  return _ownedTokensCount[owner].current();
}
                 
         
     
 
                
    
        ownerOf
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function ownerOf(uint256 tokenId) public view returns (address) {
  address owner = _tokenOwner[tokenId];
  require(owner != address(0), "ERC721: owner query for nonexistent token");
  return owner;
}
                 
         
     
 
                
    
        safeTransferFrom
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | from | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function safeTransferFrom(
  address from,
  address to,
  uint256 tokenId
) public {
  safeTransferFrom(from, to, tokenId, "");
}
                 
         
     
 
                
    
        transferFrom
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | from | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function transferFrom(
  address from,
  address to,
  uint256 tokenId
) public {
  //solhint-disable-next-line max-line-length
  require(
    _isApprovedOrOwner(_msgSender(), tokenId),
    "ERC721: transfer caller is not owner nor approved"
  );
  _transferFrom(from, to, tokenId);
}
                 
         
     
 
                
    
        approve
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function approve(address to, uint256 tokenId) public {
  address owner = ownerOf(tokenId);
  require(to != owner, "ERC721: approval to current owner");
  require(
    _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
    "ERC721: approve caller is not owner nor approved for all"
  );
  _tokenApprovals[tokenId] = to;
  emit Approval(owner, to, tokenId);
}
                 
         
     
 
                
    
        getApproved
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function getApproved(uint256 tokenId) public view returns (address) {
  require(_exists(tokenId), "ERC721: approved query for nonexistent token");
  return _tokenApprovals[tokenId];
}
                 
         
     
 
                
    
        setApprovalForAll
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | approved | 
                bool help
                
                    The type of this value is other. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function setApprovalForAll(address to, bool approved) public {
  require(to != _msgSender(), "ERC721: approve to caller");
  _operatorApprovals[_msgSender()][to] = approved;
  emit ApprovalForAll(_msgSender(), to, approved);
}
                 
         
     
 
                
    
        isApprovedForAll
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | owner | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | operator | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function isApprovedForAll(address owner, address operator)
  public
  view
  returns (bool)
{
  // Whitelist OpenSea proxy contract for easy trading.
  ProxyRegistry proxyRegistry = ProxyRegistry(proxyRegistryAddress);
  if (address(proxyRegistry.proxies(owner)) == operator) {
    return true;
  }
  return super.isApprovedForAll(owner, operator);
}
                 
         
     
 
                
    
        safeTransferFrom
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | from | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                                
                                    | _data | 
                bytes help
                
                    The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function safeTransferFrom(
  address from,
  address to,
  uint256 tokenId,
  bytes memory _data
) public {
  require(
    _isApprovedOrOwner(_msgSender(), tokenId),
    "ERC721: transfer caller is not owner nor approved"
  );
  _safeTransferFrom(from, to, tokenId, _data);
}
                 
         
     
 
                
    
        name
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                
                
                    function name() external view returns (string memory) {
  return _name;
}
                 
         
     
 
                
    
        symbol
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                
                
                    function symbol() external view returns (string memory) {
  return _symbol;
}
                 
         
     
 
                
    
        tokenURI
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | _tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function tokenURI(uint256 _tokenId) external view returns (string memory) {
  return Strings.strConcat(baseTokenURI(), Strings.uint2str(_tokenId));
}
                 
         
     
 
                
    
        supportsInterface
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | interfaceId | 
                bytes4 help
                
                    The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function supportsInterface(bytes4 interfaceId) external view returns (bool) {
  return _supportedInterfaces[interfaceId];
}
                 
         
     
 
                
    
        baseURI
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                
                
                    function baseURI() external view returns (string memory) {
  return _baseURI;
}
                 
         
     
 
                
    
        totalSupply
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function totalSupply() public view returns (uint256) {
  return _allTokens.length;
}
                 
         
     
 
                
    
        tokenOfOwnerByIndex
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | owner | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | index | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function tokenOfOwnerByIndex(address owner, uint256 index)
  public
  view
  returns (uint256)
{
  require(
    index < balanceOf(owner),
    "ERC721Enumerable: owner index out of bounds"
  );
  return _ownedTokens[owner][index];
}
                 
         
     
 
                
    
        tokenByIndex
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | index | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function tokenByIndex(uint256 index) public view returns (uint256) {
  require(
    index < totalSupply(),
    "ERC721Enumerable: global index out of bounds"
  );
  return _allTokens[index];
}
                 
         
     
 
                
    
        mintTo
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | _to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Modifiers
            
                help
                
                                                Modifiers are additions to a function that typically make various checks before
                            the function is run.
                
            
                            
                    
                            
                                onlyOwner
                                    checks for the following:
                                
                                
                             
                     
                 
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function mintTo(address _to) public onlyOwner {
  uint256 newTokenId = _getNextTokenId();
  _mint(_to, newTokenId);
  _incrementTokenId();
}
                 
         
     
 
                
    
        baseTokenURI
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        public
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function baseTokenURI() public view returns (string memory) {
  return "https://metadata.spellsofgenesis.com/sog-eth-askian/";
}
                 
         
     
 
         
        
        
            Internal functions are parts of the contract that can't be used directly, but instead are used by
            the public functions listed above.
        
        
                
    
        internal TradeableERC721Token._getNextTokenId
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        private
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function _getNextTokenId() private view returns (uint256) {
  return _currentTokenId.add(1);
}
                 
         
     
 
                
    
        internal TradeableERC721Token._incrementTokenId
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        private
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                Source Code
                
                    function _incrementTokenId() private {
  _currentTokenId++;
}
                 
         
     
 
                
    
        internal ERC721._safeTransferFrom
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | from | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                                
                                    | _data | 
                bytes help
                
                    The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _safeTransferFrom(
  address from,
  address to,
  uint256 tokenId,
  bytes memory _data
) internal {
  _transferFrom(from, to, tokenId);
  require(
    _checkOnERC721Received(from, to, tokenId, _data),
    "ERC721: transfer to non ERC721Receiver implementer"
  );
}
                 
         
     
 
                
    
        internal ERC721._exists
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function _exists(uint256 tokenId) internal view returns (bool) {
  address owner = _tokenOwner[tokenId];
  return owner != address(0);
}
                 
         
     
 
                
    
        internal ERC721._isApprovedOrOwner
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | spender | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _isApprovedOrOwner(address spender, uint256 tokenId)
  internal
  view
  returns (bool)
{
  require(_exists(tokenId), "ERC721: operator query for nonexistent token");
  address owner = ownerOf(tokenId);
  return (spender == owner ||
    getApproved(tokenId) == spender ||
    isApprovedForAll(owner, spender));
}
                 
         
     
 
                
    
        internal ERC721._safeMint
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _safeMint(address to, uint256 tokenId) internal {
  _safeMint(to, tokenId, "");
}
                 
         
     
 
                
    
        internal ERC721._safeMint
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                                
                                    | _data | 
                bytes help
                
                    The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _safeMint(
  address to,
  uint256 tokenId,
  bytes memory _data
) internal {
  _mint(to, tokenId);
  require(
    _checkOnERC721Received(address(0), to, tokenId, _data),
    "ERC721: transfer to non ERC721Receiver implementer"
  );
}
                 
         
     
 
                
    
        internal ERC721._mint
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _mint(address to, uint256 tokenId) internal {
  require(to != address(0), "ERC721: mint to the zero address");
  require(!_exists(tokenId), "ERC721: token already minted");
  _tokenOwner[tokenId] = to;
  _ownedTokensCount[to].increment();
  emit Transfer(address(0), to, tokenId);
}
                 
         
     
 
                
    
        internal ERC721._burn
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | owner | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _burn(address owner, uint256 tokenId) internal {
  require(ownerOf(tokenId) == owner, "ERC721: burn of token that is not own");
  _clearApproval(tokenId);
  _ownedTokensCount[owner].decrement();
  _tokenOwner[tokenId] = address(0);
  emit Transfer(owner, address(0), tokenId);
}
                 
         
     
 
                
    
        internal ERC721._burn
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _burn(uint256 tokenId) internal {
  _burn(ownerOf(tokenId), tokenId);
}
                 
         
     
 
                
    
        internal ERC721._transferFrom
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | from | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _transferFrom(
  address from,
  address to,
  uint256 tokenId
) internal {
  require(
    ownerOf(tokenId) == from,
    "ERC721: transfer of token that is not own"
  );
  require(to != address(0), "ERC721: transfer to the zero address");
  _clearApproval(tokenId);
  _ownedTokensCount[from].decrement();
  _ownedTokensCount[to].increment();
  _tokenOwner[tokenId] = to;
  emit Transfer(from, to, tokenId);
}
                 
         
     
 
                
    
        internal ERC721._checkOnERC721Received
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | from | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                                
                                    | _data | 
                bytes help
                
                    The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                Source Code
                
                    function _checkOnERC721Received(
  address from,
  address to,
  uint256 tokenId,
  bytes memory _data
) internal returns (bool) {
  if (!to.isContract()) {
    return true;
  }
  // solhint-disable-next-line avoid-low-level-calls
  (bool success, bytes memory returndata) = to.call(
    abi.encodeWithSelector(
      IERC721Receiver(to).onERC721Received.selector,
      _msgSender(),
      from,
      tokenId,
      _data
    )
  );
  if (!success) {
    if (returndata.length > 0) {
      // solhint-disable-next-line no-inline-assembly
      assembly {
        let returndata_size := mload(returndata)
        revert(add(32, returndata), returndata_size)
      }
    } else {
      revert("ERC721: transfer to non ERC721Receiver implementer");
    }
  } else {
    bytes4 retval = abi.decode(returndata, (bytes4));
    return (retval == _ERC721_RECEIVED);
  }
}
                 
         
     
 
                
    
        internal ERC721._clearApproval
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        private
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                Source Code
                
                    function _clearApproval(uint256 tokenId) private {
  if (_tokenApprovals[tokenId] != address(0)) {
    _tokenApprovals[tokenId] = address(0);
  }
}
                 
         
     
 
                
    
        internal Context.constructor
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                Source Code
                
                    constructor() internal {}
                 
         
     
 
                
    
        internal Context._msgSender
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function _msgSender() internal view returns (address payable) {
  return msg.sender;
}
                 
         
     
 
                
    
        internal Context._msgData
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function _msgData() internal view returns (bytes memory) {
  this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
  return msg.data;
}
                 
         
     
 
                
    
        internal ERC165.constructor
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    constructor() internal {
  // Derived contracts need only register support for their own interfaces,
  // we register support for ERC165 itself here
  _registerInterface(_INTERFACE_ID_ERC165);
}
                 
         
     
 
                
    
        internal ERC165._registerInterface
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | interfaceId | 
                bytes4 help
                
                    The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _registerInterface(bytes4 interfaceId) internal {
  require(interfaceId != 0xffffffff, "ERC165: invalid interface id");
  _supportedInterfaces[interfaceId] = true;
}
                 
         
     
 
                
    
        internal ERC721Enumerable._transferFrom
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | from | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _transferFrom(
  address from,
  address to,
  uint256 tokenId
) internal {
  super._transferFrom(from, to, tokenId);
  _removeTokenFromOwnerEnumeration(from, tokenId);
  _addTokenToOwnerEnumeration(to, tokenId);
}
                 
         
     
 
                
    
        internal ERC721Enumerable._mint
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _mint(address to, uint256 tokenId) internal {
  super._mint(to, tokenId);
  _addTokenToOwnerEnumeration(to, tokenId);
  _addTokenToAllTokensEnumeration(tokenId);
}
                 
         
     
 
                
    
        internal ERC721Enumerable._burn
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | owner | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _burn(address owner, uint256 tokenId) internal {
  super._burn(owner, tokenId);
  _removeTokenFromOwnerEnumeration(owner, tokenId);
  // Since tokenId will be deleted, we can clear its slot in _ownedTokensIndex to trigger a gas refund
  _ownedTokensIndex[tokenId] = 0;
  _removeTokenFromAllTokensEnumeration(tokenId);
}
                 
         
     
 
                
    
        internal ERC721Enumerable._tokensOfOwner
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | owner | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function _tokensOfOwner(address owner)
  internal
  view
  returns (uint256[] storage)
{
  return _ownedTokens[owner];
}
                 
         
     
 
                
    
        internal ERC721Enumerable._addTokenToOwnerEnumeration
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        private
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                Source Code
                
                    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
  _ownedTokensIndex[tokenId] = _ownedTokens[to].length;
  _ownedTokens[to].push(tokenId);
}
                 
         
     
 
                
    
        internal ERC721Enumerable._addTokenToAllTokensEnumeration
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        private
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                Source Code
                
                    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
  _allTokensIndex[tokenId] = _allTokens.length;
  _allTokens.push(tokenId);
}
                 
         
     
 
                
    
        internal ERC721Enumerable._removeTokenFromOwnerEnumeration
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | from | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        private
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                Source Code
                
                    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId)
  private
{
  // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
  // then delete the last slot (swap and pop).
  uint256 lastTokenIndex = _ownedTokens[from].length.sub(1);
  uint256 tokenIndex = _ownedTokensIndex[tokenId];
  // When the token to delete is the last token, the swap operation is unnecessary
  if (tokenIndex != lastTokenIndex) {
    uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];
    _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
    _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
  }
  // This also deletes the contents at the last position of the array
  _ownedTokens[from].length--;
  // Note that _ownedTokensIndex[tokenId] hasn't been cleared: it still points to the old slot (now occupied by
  // lastTokenId, or just over the end of the array if the token was the last one).
}
                 
         
     
 
                
    
        internal ERC721Enumerable._removeTokenFromAllTokensEnumeration
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        private
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                Source Code
                
                    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
  // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and
  // then delete the last slot (swap and pop).
  uint256 lastTokenIndex = _allTokens.length.sub(1);
  uint256 tokenIndex = _allTokensIndex[tokenId];
  // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so
  // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding
  // an 'if' statement (like in _removeTokenFromOwnerEnumeration)
  uint256 lastTokenId = _allTokens[lastTokenIndex];
  _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
  _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
  // This also deletes the contents at the last position of the array
  _allTokens.length--;
  _allTokensIndex[tokenId] = 0;
}
                 
         
     
 
                
    
        internal Context.constructor
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                Source Code
                
                    constructor() internal {}
                 
         
     
 
                
    
        internal Context._msgSender
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function _msgSender() internal view returns (address payable) {
  return msg.sender;
}
                 
         
     
 
                
    
        internal Context._msgData
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function _msgData() internal view returns (bytes memory) {
  this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
  return msg.data;
}
                 
         
     
 
                
    
        internal ERC165.constructor
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    constructor() internal {
  // Derived contracts need only register support for their own interfaces,
  // we register support for ERC165 itself here
  _registerInterface(_INTERFACE_ID_ERC165);
}
                 
         
     
 
                
    
        internal ERC165._registerInterface
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | interfaceId | 
                bytes4 help
                
                    The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _registerInterface(bytes4 interfaceId) internal {
  require(interfaceId != 0xffffffff, "ERC165: invalid interface id");
  _supportedInterfaces[interfaceId] = true;
}
                 
         
     
 
                
    
        internal ERC721._safeTransferFrom
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | from | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                                
                                    | _data | 
                bytes help
                
                    The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _safeTransferFrom(
  address from,
  address to,
  uint256 tokenId,
  bytes memory _data
) internal {
  _transferFrom(from, to, tokenId);
  require(
    _checkOnERC721Received(from, to, tokenId, _data),
    "ERC721: transfer to non ERC721Receiver implementer"
  );
}
                 
         
     
 
                
    
        internal ERC721._exists
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function _exists(uint256 tokenId) internal view returns (bool) {
  address owner = _tokenOwner[tokenId];
  return owner != address(0);
}
                 
         
     
 
                
    
        internal ERC721._isApprovedOrOwner
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | spender | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _isApprovedOrOwner(address spender, uint256 tokenId)
  internal
  view
  returns (bool)
{
  require(_exists(tokenId), "ERC721: operator query for nonexistent token");
  address owner = ownerOf(tokenId);
  return (spender == owner ||
    getApproved(tokenId) == spender ||
    isApprovedForAll(owner, spender));
}
                 
         
     
 
                
    
        internal ERC721._safeMint
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _safeMint(address to, uint256 tokenId) internal {
  _safeMint(to, tokenId, "");
}
                 
         
     
 
                
    
        internal ERC721._safeMint
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                                
                                    | _data | 
                bytes help
                
                    The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _safeMint(
  address to,
  uint256 tokenId,
  bytes memory _data
) internal {
  _mint(to, tokenId);
  require(
    _checkOnERC721Received(address(0), to, tokenId, _data),
    "ERC721: transfer to non ERC721Receiver implementer"
  );
}
                 
         
     
 
                
    
        internal ERC721._mint
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _mint(address to, uint256 tokenId) internal {
  require(to != address(0), "ERC721: mint to the zero address");
  require(!_exists(tokenId), "ERC721: token already minted");
  _tokenOwner[tokenId] = to;
  _ownedTokensCount[to].increment();
  emit Transfer(address(0), to, tokenId);
}
                 
         
     
 
                
    
        internal ERC721._burn
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | owner | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _burn(address owner, uint256 tokenId) internal {
  require(ownerOf(tokenId) == owner, "ERC721: burn of token that is not own");
  _clearApproval(tokenId);
  _ownedTokensCount[owner].decrement();
  _tokenOwner[tokenId] = address(0);
  emit Transfer(owner, address(0), tokenId);
}
                 
         
     
 
                
    
        internal ERC721._burn
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _burn(uint256 tokenId) internal {
  _burn(ownerOf(tokenId), tokenId);
}
                 
         
     
 
                
    
        internal ERC721._transferFrom
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | from | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _transferFrom(
  address from,
  address to,
  uint256 tokenId
) internal {
  require(
    ownerOf(tokenId) == from,
    "ERC721: transfer of token that is not own"
  );
  require(to != address(0), "ERC721: transfer to the zero address");
  _clearApproval(tokenId);
  _ownedTokensCount[from].decrement();
  _ownedTokensCount[to].increment();
  _tokenOwner[tokenId] = to;
  emit Transfer(from, to, tokenId);
}
                 
         
     
 
                
    
        internal ERC721._checkOnERC721Received
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | from | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                                
                                    | _data | 
                bytes help
                
                    The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                Source Code
                
                    function _checkOnERC721Received(
  address from,
  address to,
  uint256 tokenId,
  bytes memory _data
) internal returns (bool) {
  if (!to.isContract()) {
    return true;
  }
  // solhint-disable-next-line avoid-low-level-calls
  (bool success, bytes memory returndata) = to.call(
    abi.encodeWithSelector(
      IERC721Receiver(to).onERC721Received.selector,
      _msgSender(),
      from,
      tokenId,
      _data
    )
  );
  if (!success) {
    if (returndata.length > 0) {
      // solhint-disable-next-line no-inline-assembly
      assembly {
        let returndata_size := mload(returndata)
        revert(add(32, returndata), returndata_size)
      }
    } else {
      revert("ERC721: transfer to non ERC721Receiver implementer");
    }
  } else {
    bytes4 retval = abi.decode(returndata, (bytes4));
    return (retval == _ERC721_RECEIVED);
  }
}
                 
         
     
 
                
    
        internal ERC721._clearApproval
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        private
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                Source Code
                
                    function _clearApproval(uint256 tokenId) private {
  if (_tokenApprovals[tokenId] != address(0)) {
    _tokenApprovals[tokenId] = address(0);
  }
}
                 
         
     
 
                
    
        internal Context.constructor
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                Source Code
                
                    constructor() internal {}
                 
         
     
 
                
    
        internal Context._msgSender
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function _msgSender() internal view returns (address payable) {
  return msg.sender;
}
                 
         
     
 
                
    
        internal Context._msgData
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function _msgData() internal view returns (bytes memory) {
  this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
  return msg.data;
}
                 
         
     
 
                
    
        internal ERC165.constructor
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    constructor() internal {
  // Derived contracts need only register support for their own interfaces,
  // we register support for ERC165 itself here
  _registerInterface(_INTERFACE_ID_ERC165);
}
                 
         
     
 
                
    
        internal ERC165._registerInterface
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | interfaceId | 
                bytes4 help
                
                    The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _registerInterface(bytes4 interfaceId) internal {
  require(interfaceId != 0xffffffff, "ERC165: invalid interface id");
  _supportedInterfaces[interfaceId] = true;
}
                 
         
     
 
                
    
        internal ERC721Metadata._setTokenURI
        
        keyboard_arrow_up
    
    
 
                
    
        internal ERC721Metadata._setBaseURI
        
        keyboard_arrow_up
    
    
 
                
    
        internal ERC721Metadata._burn
        
        keyboard_arrow_up
    
    
 
                
    
        internal Context.constructor
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                Source Code
                
                    constructor() internal {}
                 
         
     
 
                
    
        internal Context._msgSender
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function _msgSender() internal view returns (address payable) {
  return msg.sender;
}
                 
         
     
 
                
    
        internal Context._msgData
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function _msgData() internal view returns (bytes memory) {
  this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
  return msg.data;
}
                 
         
     
 
                
    
        internal ERC165.constructor
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    constructor() internal {
  // Derived contracts need only register support for their own interfaces,
  // we register support for ERC165 itself here
  _registerInterface(_INTERFACE_ID_ERC165);
}
                 
         
     
 
                
    
        internal ERC165._registerInterface
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | interfaceId | 
                bytes4 help
                
                    The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _registerInterface(bytes4 interfaceId) internal {
  require(interfaceId != 0xffffffff, "ERC165: invalid interface id");
  _supportedInterfaces[interfaceId] = true;
}
                 
         
     
 
                
    
        internal ERC721._safeTransferFrom
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | from | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                                
                                    | _data | 
                bytes help
                
                    The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _safeTransferFrom(
  address from,
  address to,
  uint256 tokenId,
  bytes memory _data
) internal {
  _transferFrom(from, to, tokenId);
  require(
    _checkOnERC721Received(from, to, tokenId, _data),
    "ERC721: transfer to non ERC721Receiver implementer"
  );
}
                 
         
     
 
                
    
        internal ERC721._exists
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function _exists(uint256 tokenId) internal view returns (bool) {
  address owner = _tokenOwner[tokenId];
  return owner != address(0);
}
                 
         
     
 
                
    
        internal ERC721._isApprovedOrOwner
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | spender | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _isApprovedOrOwner(address spender, uint256 tokenId)
  internal
  view
  returns (bool)
{
  require(_exists(tokenId), "ERC721: operator query for nonexistent token");
  address owner = ownerOf(tokenId);
  return (spender == owner ||
    getApproved(tokenId) == spender ||
    isApprovedForAll(owner, spender));
}
                 
         
     
 
                
    
        internal ERC721._safeMint
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _safeMint(address to, uint256 tokenId) internal {
  _safeMint(to, tokenId, "");
}
                 
         
     
 
                
    
        internal ERC721._safeMint
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                                
                                    | _data | 
                bytes help
                
                    The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _safeMint(
  address to,
  uint256 tokenId,
  bytes memory _data
) internal {
  _mint(to, tokenId);
  require(
    _checkOnERC721Received(address(0), to, tokenId, _data),
    "ERC721: transfer to non ERC721Receiver implementer"
  );
}
                 
         
     
 
                
    
        internal ERC721._mint
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _mint(address to, uint256 tokenId) internal {
  require(to != address(0), "ERC721: mint to the zero address");
  require(!_exists(tokenId), "ERC721: token already minted");
  _tokenOwner[tokenId] = to;
  _ownedTokensCount[to].increment();
  emit Transfer(address(0), to, tokenId);
}
                 
         
     
 
                
    
        internal ERC721._burn
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | owner | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _burn(address owner, uint256 tokenId) internal {
  require(ownerOf(tokenId) == owner, "ERC721: burn of token that is not own");
  _clearApproval(tokenId);
  _ownedTokensCount[owner].decrement();
  _tokenOwner[tokenId] = address(0);
  emit Transfer(owner, address(0), tokenId);
}
                 
         
     
 
                
    
        internal ERC721._burn
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _burn(uint256 tokenId) internal {
  _burn(ownerOf(tokenId), tokenId);
}
                 
         
     
 
                
    
        internal ERC721._transferFrom
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | from | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _transferFrom(
  address from,
  address to,
  uint256 tokenId
) internal {
  require(
    ownerOf(tokenId) == from,
    "ERC721: transfer of token that is not own"
  );
  require(to != address(0), "ERC721: transfer to the zero address");
  _clearApproval(tokenId);
  _ownedTokensCount[from].decrement();
  _ownedTokensCount[to].increment();
  _tokenOwner[tokenId] = to;
  emit Transfer(from, to, tokenId);
}
                 
         
     
 
                
    
        internal ERC721._checkOnERC721Received
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | from | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | to | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                                
                                    | _data | 
                bytes help
                
                    The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                Source Code
                
                    function _checkOnERC721Received(
  address from,
  address to,
  uint256 tokenId,
  bytes memory _data
) internal returns (bool) {
  if (!to.isContract()) {
    return true;
  }
  // solhint-disable-next-line avoid-low-level-calls
  (bool success, bytes memory returndata) = to.call(
    abi.encodeWithSelector(
      IERC721Receiver(to).onERC721Received.selector,
      _msgSender(),
      from,
      tokenId,
      _data
    )
  );
  if (!success) {
    if (returndata.length > 0) {
      // solhint-disable-next-line no-inline-assembly
      assembly {
        let returndata_size := mload(returndata)
        revert(add(32, returndata), returndata_size)
      }
    } else {
      revert("ERC721: transfer to non ERC721Receiver implementer");
    }
  } else {
    bytes4 retval = abi.decode(returndata, (bytes4));
    return (retval == _ERC721_RECEIVED);
  }
}
                 
         
     
 
                
    
        internal ERC721._clearApproval
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | tokenId | 
                uint256 help
                
                    The type of this value is uint, which stands for unsigned integer. Integer means it's a whole number (such as 1, 12, 52) without fractions or decimals. Unsigned means it can't have a negative or positive sign, so it's always a positive number. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        private
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                Source Code
                
                    function _clearApproval(uint256 tokenId) private {
  if (_tokenApprovals[tokenId] != address(0)) {
    _tokenApprovals[tokenId] = address(0);
  }
}
                 
         
     
 
                
    
        internal Context.constructor
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                Source Code
                
                    constructor() internal {}
                 
         
     
 
                
    
        internal Context._msgSender
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function _msgSender() internal view returns (address payable) {
  return msg.sender;
}
                 
         
     
 
                
    
        internal Context._msgData
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function _msgData() internal view returns (bytes memory) {
  this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
  return msg.data;
}
                 
         
     
 
                
    
        internal ERC165.constructor
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    constructor() internal {
  // Derived contracts need only register support for their own interfaces,
  // we register support for ERC165 itself here
  _registerInterface(_INTERFACE_ID_ERC165);
}
                 
         
     
 
                
    
        internal ERC165._registerInterface
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | interfaceId | 
                bytes4 help
                
                    The type of this value is byte or bytes. Byte data is usually not intended for human reading, and stores binary data. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _registerInterface(bytes4 interfaceId) internal {
  require(interfaceId != 0xffffffff, "ERC165: invalid interface id");
  _supportedInterfaces[interfaceId] = true;
}
                 
         
     
 
                
    
        internal Ownable.constructor
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                Source Code
                
                    constructor() internal {
  address msgSender = _msgSender();
  _owner = msgSender;
  emit OwnershipTransferred(address(0), msgSender);
}
                 
         
     
 
                
    
        internal Ownable._transferOwnership
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        
                            
                            
                                | Name | Type | 
                            
                            
                                
                                    | newOwner | 
                address help
                
                    The type of this value is address, which means it stores an Ethereum address, such as a wallet address. | 
                            
                        
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                
                    
                        Requirements
            
                help
                
                                                Requirements are checks that the function makes when it runs, and give you
                            insight on what conditions are required for the function to succeed.
                
            
                            
                    
                 
                Source Code
                
                    function _transferOwnership(address newOwner) internal {
  require(newOwner != address(0), "Ownable: new owner is the zero address");
  emit OwnershipTransferred(_owner, newOwner);
  _owner = newOwner;
}
                 
         
     
 
                
    
        internal Context.constructor
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        
                            transaction
                     
                 
             
                Source Code
                
                    constructor() internal {}
                 
         
     
 
                
    
        internal Context._msgSender
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function _msgSender() internal view returns (address payable) {
  return msg.sender;
}
                 
         
     
 
                
    
        internal Context._msgData
        
        keyboard_arrow_up
    
    
        
            
                
                    Parameters
            
                help
                
                                            Function parameters list what input the function expects from the user. Each
                        parameter must be given a value.
                
            
                        
                
                        This function has no parameters.
                 
             
            
                Properties
                
                    
                        
                            Visibility
            
                help
                
                                                    Visibility determines if the function is visible to users and other contracts.
                                Only functions that are public can be used.
                
            
                                
                        internal
                     
                    
                        
                            Mutability
            
                help
                
                                                    Mutability tells you if a function can make changes on the blockchain.
                                View means the function can be called by anyone without
                                a wallet and without submitting a transaction.
                
            
                                
                        view
                     
                 
             
                Source Code
                
                    function _msgData() internal view returns (bytes memory) {
  this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
  return msg.data;
}