```\nfunction tryRecover(\n    bytes32 hash,\n    bytes32 r,\n    bytes32 vs\n) internal pure returns (address, RecoverError) {\n    bytes32 s = vs &\n        bytes32(\n            0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n        );\n    uint8 v = uint8((uint256(vs) >> 255) + 27);\n    return tryRecover(hash, v, r, s);\n}\n```\n