{
    "Function": "deploy",
    "File": "contracts/lib/openzeppelin-contracts/contracts/utils/Create2.sol",
    "Parent Contracts": [],
    "High-Level Calls": [],
    "Internal Calls": [
        "create2(uint256,uint256,uint256,uint256)",
        "mload(uint256)",
        "require(bool,string)",
        "require(bool,string)",
        "require(bool,string)",
        "balance(address)"
    ],
    "Library Calls": [],
    "Low-Level Calls": [],
    "Code": "function deploy(\n        uint256 amount,\n        bytes32 salt,\n        bytes memory bytecode\n    ) internal returns (address) {\n        address addr;\n        require(address(this).balance >= amount, \"Create2: insufficient balance\");\n        require(bytecode.length != 0, \"Create2: bytecode length is zero\");\n        /// @solidity memory-safe-assembly\n        assembly {\n            addr := create2(amount, add(bytecode, 0x20), mload(bytecode), salt)\n        }\n        require(addr != address(0), \"Create2: Failed on deploy\");\n        return addr;\n    }"
}