{
    "Function": "clone",
    "File": "contracts/lib/openzeppelin-contracts/contracts/proxy/Clones.sol",
    "Parent Contracts": [],
    "High-Level Calls": [],
    "Internal Calls": [
        "create(uint256,uint256,uint256)",
        "require(bool,string)",
        "mstore(uint256,uint256)",
        "mstore(uint256,uint256)",
        "mload(uint256)",
        "mstore(uint256,uint256)"
    ],
    "Library Calls": [],
    "Low-Level Calls": [],
    "Code": "function clone(address implementation) internal returns (address instance) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            let ptr := mload(0x40)\n            mstore(ptr, 0x602d8060093d393df3363d3d373d3d3d363d7300000000000000000000000000)\n            mstore(add(ptr, 0x13), shl(0x60, implementation))\n            mstore(add(ptr, 0x27), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\n            instance := create(0, ptr, 0x36)\n        }\n        require(instance != address(0), \"ERC1167: create failed\");\n    }"
}