```\nfunction _validatePaymasterPrepayment(uint256 opIndex, UserOperation calldata op, UserOpInfo memory opInfo, uint256 requiredPreFund, uint256 gasUsedByValidateAccountPrepayment)\ninternal returns (bytes memory context, uint256 validationData) {\nunchecked {\n    MemoryUserOp memory mUserOp = opInfo.mUserOp;\n    uint256 verificationGasLimit = mUserOp.verificationGasLimit;\n    require(verificationGasLimit > gasUsedByValidateAccountPrepayment, "AA41 too little verificationGas");\n    uint256 gas = verificationGasLimit - gasUsedByValidateAccountPrepayment;\n\n    address paymaster = mUserOp.paymaster;\n    DepositInfo storage paymasterInfo = deposits[paymaster];\n    uint256 deposit = paymasterInfo.deposit;\n    if (deposit < requiredPreFund) {\n        revert FailedOp(opIndex, "AA31 paymaster deposit too low");\n    }\n    paymasterInfo.deposit = uint112(deposit - requiredPreFund);\n    try IPaymaster(paymaster).validatePaymasterUserOp{gas : gas}(op, opInfo.userOpHash, requiredPreFund) returns (bytes memory _context, uint256 _validationData){\n        context = _context;\n        validationData = _validationData;\n    } catch Error(string memory revertReason) {\n        revert FailedOp(opIndex, string.concat("AA33 reverted: ", revertReason));\n    } catch {\n        revert FailedOp(opIndex, "AA33 reverted (or OOG)");\n    }\n}\n}\n```\n