{
    "Function": "slitherConstructorConstantVariables",
    "File": "contracts/lib/openzeppelin-contracts/contracts/mocks/GovernorWithParamsMock.sol",
    "Parent Contracts": [
        "contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorCountingSimple.sol",
        "contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotes.sol",
        "contracts/lib/openzeppelin-contracts/contracts/governance/Governor.sol",
        "contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol",
        "contracts/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol",
        "contracts/lib/openzeppelin-contracts/contracts/governance/IGovernor.sol",
        "contracts/lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol",
        "contracts/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol",
        "contracts/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol",
        "contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol"
    ],
    "High-Level Calls": [],
    "Internal Calls": [
        "keccak256(bytes)",
        "keccak256(bytes)"
    ],
    "Library Calls": [],
    "Low-Level Calls": [],
    "Code": "contract GovernorWithParamsMock is GovernorVotes, GovernorCountingSimple {\n    event CountParams(uint256 uintParam, string strParam);\n\n    constructor(string memory name_, IVotes token_) Governor(name_) GovernorVotes(token_) {}\n\n    function quorum(uint256) public pure override returns (uint256) {\n        return 0;\n    }\n\n    function votingDelay() public pure override returns (uint256) {\n        return 4;\n    }\n\n    function votingPeriod() public pure override returns (uint256) {\n        return 16;\n    }\n\n    function _getVotes(\n        address account,\n        uint256 blockNumber,\n        bytes memory params\n    ) internal view virtual override(Governor, GovernorVotes) returns (uint256) {\n        uint256 reduction = 0;\n        // If the user provides parameters, we reduce the voting weight by the amount of the integer param\n        if (params.length > 0) {\n            (reduction, ) = abi.decode(params, (uint256, string));\n        }\n        // reverts on overflow\n        return super._getVotes(account, blockNumber, params) - reduction;\n    }\n\n    function _countVote(\n        uint256 proposalId,\n        address account,\n        uint8 support,\n        uint256 weight,\n        bytes memory params\n    ) internal virtual override(Governor, GovernorCountingSimple) {\n        if (params.length > 0) {\n            (uint256 _uintParam, string memory _strParam) = abi.decode(params, (uint256, string));\n            emit CountParams(_uintParam, _strParam);\n        }\n        return super._countVote(proposalId, account, support, weight, params);\n    }\n\n    function cancel(\n        address[] memory targets,\n        uint256[] memory values,\n        bytes[] memory calldatas,\n        bytes32 salt\n    ) public returns (uint256 proposalId) {\n        return _cancel(targets, values, calldatas, salt);\n    }\n}"
}