DeclarationError: Identifier not found or not unique. using Address for address;

Guys when I go to compile I get this error:

DeclarationError: Identifier not found or not unique.
--> ERC721QD.sol:23:11:
23 | using Address for address;
| ^^^^^^^


// SPDX-License-Identifier: MIT

pragma solidity ^0.8.11;

import "./Context.sol";
import "./ERC165.sol";
import "./IERC721.sol";
import "./IERC721Metadata.sol";

 * @dev Implementation of
 *  [ERC721] Non-Fungible Token Standard
 *  This implmentation of ERC721 needs a maximum number of NFTs to provide
 *  efficient minting.  Storage for balance are no longer required reducing
 *  gas significantly.  This comes at the price of calculating the balance by
 *  iterating through the entire number of maximum NFTs, but enables the
 *  possibility of creating sections of sequential mint.

contract ERC721QD is Context, ERC165, IERC721, IERC721Metadata {

    using Address for address;
    using Strings for uint256;
    //Max Supply
    uint256 private _maxSupply;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to owner address
    mapping(uint256 => address) internal _owners;

    // Mapping from token ID to approved address
    mapping(uint256 => address) private _tokenApprovals;

    // Mapping from owner to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;

You can see the flattened Code I forked from here:

The error message is clear. You're missing the Address library even though it is defined in the verified contract you shared.