{
    "contractName": "Ownable",
    "abi": [
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "previousOwner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "OwnershipTransferred",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "owner",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "renounceOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "transferOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}",
    "bytecode": "0x",
    "deployedBytecode": "0x",
    "immutableReferences": {},
    "sourceMap": "",
    "deployedSourceMap": "",
    "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n    address private _owner;\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the deployer as the initial owner.\n     */\n    constructor() {\n        _transferOwnership(_msgSender());\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        _checkOwner();\n        _;\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view virtual returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if the sender is not the owner.\n     */\n    function _checkOwner() internal view virtual {\n        require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby removing any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual {\n        address oldOwner = _owner;\n        _owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n}\n",
    "sourcePath": "@openzeppelin/contracts/access/Ownable.sol",
    "ast": {
        "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
        "exportedSymbols": {
            "Context": [
                11508
            ],
            "Ownable": [
                10182
            ]
        },
        "id": 10183,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 10071,
                "literals": [
                    "solidity",
                    "^",
                    "0.8",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "102:23:47"
            },
            {
                "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
                "file": "../utils/Context.sol",
                "id": 10072,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 10183,
                "sourceUnit": 11509,
                "src": "127:30:47",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": true,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 10074,
                            "name": "Context",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 11508,
                            "src": "683:7:47"
                        },
                        "id": 10075,
                        "nodeType": "InheritanceSpecifier",
                        "src": "683:7:47"
                    }
                ],
                "contractDependencies": [],
                "contractKind": "contract",
                "documentation": {
                    "id": 10073,
                    "nodeType": "StructuredDocumentation",
                    "src": "159:494:47",
                    "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."
                },
                "fullyImplemented": true,
                "id": 10182,
                "linearizedBaseContracts": [
                    10182,
                    11508
                ],
                "name": "Ownable",
                "nameLocation": "672:7:47",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "constant": false,
                        "id": 10077,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nameLocation": "713:6:47",
                        "nodeType": "VariableDeclaration",
                        "scope": 10182,
                        "src": "697:22:47",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 10076,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "697:7:47",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "anonymous": false,
                        "id": 10083,
                        "name": "OwnershipTransferred",
                        "nameLocation": "732:20:47",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 10082,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 10079,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "previousOwner",
                                    "nameLocation": "769:13:47",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10083,
                                    "src": "753:29:47",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 10078,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "753:7:47",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 10081,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "newOwner",
                                    "nameLocation": "800:8:47",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10083,
                                    "src": "784:24:47",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 10080,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "784:7:47",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "752:57:47"
                        },
                        "src": "726:84:47"
                    },
                    {
                        "body": {
                            "id": 10092,
                            "nodeType": "Block",
                            "src": "926:49:47",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "id": 10088,
                                                    "name": "_msgSender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 11498,
                                                    "src": "955:10:47",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                        "typeString": "function () view returns (address)"
                                                    }
                                                },
                                                "id": 10089,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "955:12:47",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 10087,
                                            "name": "_transferOwnership",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10181,
                                            "src": "936:18:47",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                                "typeString": "function (address)"
                                            }
                                        },
                                        "id": 10090,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "936:32:47",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 10091,
                                    "nodeType": "ExpressionStatement",
                                    "src": "936:32:47"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 10084,
                            "nodeType": "StructuredDocumentation",
                            "src": "816:91:47",
                            "text": " @dev Initializes the contract setting the deployer as the initial owner."
                        },
                        "id": 10093,
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [],
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 10085,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "923:2:47"
                        },
                        "returnParameters": {
                            "id": 10086,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "926:0:47"
                        },
                        "scope": 10182,
                        "src": "912:63:47",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 10100,
                            "nodeType": "Block",
                            "src": "1084:41:47",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "id": 10096,
                                            "name": "_checkOwner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10124,
                                            "src": "1094:11:47",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$__$returns$__$",
                                                "typeString": "function () view"
                                            }
                                        },
                                        "id": 10097,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1094:13:47",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 10098,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1094:13:47"
                                },
                                {
                                    "id": 10099,
                                    "nodeType": "PlaceholderStatement",
                                    "src": "1117:1:47"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 10094,
                            "nodeType": "StructuredDocumentation",
                            "src": "981:77:47",
                            "text": " @dev Throws if called by any account other than the owner."
                        },
                        "id": 10101,
                        "name": "onlyOwner",
                        "nameLocation": "1072:9:47",
                        "nodeType": "ModifierDefinition",
                        "parameters": {
                            "id": 10095,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1081:2:47"
                        },
                        "src": "1063:62:47",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 10109,
                            "nodeType": "Block",
                            "src": "1256:30:47",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 10107,
                                        "name": "_owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10077,
                                        "src": "1273:6:47",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "functionReturnParameters": 10106,
                                    "id": 10108,
                                    "nodeType": "Return",
                                    "src": "1266:13:47"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 10102,
                            "nodeType": "StructuredDocumentation",
                            "src": "1131:65:47",
                            "text": " @dev Returns the address of the current owner."
                        },
                        "functionSelector": "8da5cb5b",
                        "id": 10110,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "owner",
                        "nameLocation": "1210:5:47",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 10103,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1215:2:47"
                        },
                        "returnParameters": {
                            "id": 10106,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 10105,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10110,
                                    "src": "1247:7:47",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 10104,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1247:7:47",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1246:9:47"
                        },
                        "scope": 10182,
                        "src": "1201:85:47",
                        "stateMutability": "view",
                        "virtual": true,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 10123,
                            "nodeType": "Block",
                            "src": "1404:85:47",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 10119,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 10115,
                                                        "name": "owner",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 10110,
                                                        "src": "1422:5:47",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                            "typeString": "function () view returns (address)"
                                                        }
                                                    },
                                                    "id": 10116,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1422:7:47",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 10117,
                                                        "name": "_msgSender",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 11498,
                                                        "src": "1433:10:47",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                            "typeString": "function () view returns (address)"
                                                        }
                                                    },
                                                    "id": 10118,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1433:12:47",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "1422:23:47",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                                "id": 10120,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1447:34:47",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                                    "typeString": "literal_string \"Ownable: caller is not the owner\""
                                                },
                                                "value": "Ownable: caller is not the owner"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                                    "typeString": "literal_string \"Ownable: caller is not the owner\""
                                                }
                                            ],
                                            "id": 10114,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "1414:7:47",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 10121,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1414:68:47",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 10122,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1414:68:47"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 10111,
                            "nodeType": "StructuredDocumentation",
                            "src": "1292:62:47",
                            "text": " @dev Throws if the sender is not the owner."
                        },
                        "id": 10124,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_checkOwner",
                        "nameLocation": "1368:11:47",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 10112,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1379:2:47"
                        },
                        "returnParameters": {
                            "id": 10113,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1404:0:47"
                        },
                        "scope": 10182,
                        "src": "1359:130:47",
                        "stateMutability": "view",
                        "virtual": true,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 10137,
                            "nodeType": "Block",
                            "src": "1885:47:47",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "hexValue": "30",
                                                        "id": 10133,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1922:1:47",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        }
                                                    ],
                                                    "id": 10132,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "1914:7:47",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 10131,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "1914:7:47",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 10134,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "1914:10:47",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 10130,
                                            "name": "_transferOwnership",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10181,
                                            "src": "1895:18:47",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                                "typeString": "function (address)"
                                            }
                                        },
                                        "id": 10135,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1895:30:47",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 10136,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1895:30:47"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 10125,
                            "nodeType": "StructuredDocumentation",
                            "src": "1495:331:47",
                            "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."
                        },
                        "functionSelector": "715018a6",
                        "id": 10138,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 10128,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 10127,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 10101,
                                    "src": "1875:9:47"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "1875:9:47"
                            }
                        ],
                        "name": "renounceOwnership",
                        "nameLocation": "1840:17:47",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 10126,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1857:2:47"
                        },
                        "returnParameters": {
                            "id": 10129,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1885:0:47"
                        },
                        "scope": 10182,
                        "src": "1831:101:47",
                        "stateMutability": "nonpayable",
                        "virtual": true,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 10160,
                            "nodeType": "Block",
                            "src": "2151:128:47",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 10152,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 10147,
                                                    "name": "newOwner",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 10141,
                                                    "src": "2169:8:47",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 10150,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2189:1:47",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "id": 10149,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "2181:7:47",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 10148,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2181:7:47",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 10151,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2181:10:47",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "2169:22:47",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373",
                                                "id": 10153,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2193:40:47",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                                    "typeString": "literal_string \"Ownable: new owner is the zero address\""
                                                },
                                                "value": "Ownable: new owner is the zero address"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                                    "typeString": "literal_string \"Ownable: new owner is the zero address\""
                                                }
                                            ],
                                            "id": 10146,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "2161:7:47",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 10154,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2161:73:47",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 10155,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2161:73:47"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 10157,
                                                "name": "newOwner",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10141,
                                                "src": "2263:8:47",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 10156,
                                            "name": "_transferOwnership",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10181,
                                            "src": "2244:18:47",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                                "typeString": "function (address)"
                                            }
                                        },
                                        "id": 10158,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2244:28:47",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 10159,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2244:28:47"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 10139,
                            "nodeType": "StructuredDocumentation",
                            "src": "1938:138:47",
                            "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."
                        },
                        "functionSelector": "f2fde38b",
                        "id": 10161,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 10144,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 10143,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 10101,
                                    "src": "2141:9:47"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "2141:9:47"
                            }
                        ],
                        "name": "transferOwnership",
                        "nameLocation": "2090:17:47",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 10142,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 10141,
                                    "mutability": "mutable",
                                    "name": "newOwner",
                                    "nameLocation": "2116:8:47",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10161,
                                    "src": "2108:16:47",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 10140,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2108:7:47",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2107:18:47"
                        },
                        "returnParameters": {
                            "id": 10145,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2151:0:47"
                        },
                        "scope": 10182,
                        "src": "2081:198:47",
                        "stateMutability": "nonpayable",
                        "virtual": true,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 10180,
                            "nodeType": "Block",
                            "src": "2496:124:47",
                            "statements": [
                                {
                                    "assignments": [
                                        10168
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 10168,
                                            "mutability": "mutable",
                                            "name": "oldOwner",
                                            "nameLocation": "2514:8:47",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10180,
                                            "src": "2506:16:47",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 10167,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2506:7:47",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 10170,
                                    "initialValue": {
                                        "id": 10169,
                                        "name": "_owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10077,
                                        "src": "2525:6:47",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2506:25:47"
                                },
                                {
                                    "expression": {
                                        "id": 10173,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 10171,
                                            "name": "_owner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10077,
                                            "src": "2541:6:47",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 10172,
                                            "name": "newOwner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10164,
                                            "src": "2550:8:47",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "2541:17:47",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 10174,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2541:17:47"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "id": 10176,
                                                "name": "oldOwner",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10168,
                                                "src": "2594:8:47",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 10177,
                                                "name": "newOwner",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10164,
                                                "src": "2604:8:47",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 10175,
                                            "name": "OwnershipTransferred",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10083,
                                            "src": "2573:20:47",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                                "typeString": "function (address,address)"
                                            }
                                        },
                                        "id": 10178,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2573:40:47",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 10179,
                                    "nodeType": "EmitStatement",
                                    "src": "2568:45:47"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 10162,
                            "nodeType": "StructuredDocumentation",
                            "src": "2285:143:47",
                            "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."
                        },
                        "id": 10181,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_transferOwnership",
                        "nameLocation": "2442:18:47",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 10165,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 10164,
                                    "mutability": "mutable",
                                    "name": "newOwner",
                                    "nameLocation": "2469:8:47",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10181,
                                    "src": "2461:16:47",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 10163,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2461:7:47",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2460:18:47"
                        },
                        "returnParameters": {
                            "id": 10166,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2496:0:47"
                        },
                        "scope": 10182,
                        "src": "2433:187:47",
                        "stateMutability": "nonpayable",
                        "virtual": true,
                        "visibility": "internal"
                    }
                ],
                "scope": 10183,
                "src": "654:1968:47",
                "usedErrors": []
            }
        ],
        "src": "102:2521:47"
    },
    "legacyAST": {
        "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
        "exportedSymbols": {
            "Context": [
                11508
            ],
            "Ownable": [
                10182
            ]
        },
        "id": 10183,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 10071,
                "literals": [
                    "solidity",
                    "^",
                    "0.8",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "102:23:47"
            },
            {
                "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
                "file": "../utils/Context.sol",
                "id": 10072,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 10183,
                "sourceUnit": 11509,
                "src": "127:30:47",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": true,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 10074,
                            "name": "Context",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 11508,
                            "src": "683:7:47"
                        },
                        "id": 10075,
                        "nodeType": "InheritanceSpecifier",
                        "src": "683:7:47"
                    }
                ],
                "contractDependencies": [],
                "contractKind": "contract",
                "documentation": {
                    "id": 10073,
                    "nodeType": "StructuredDocumentation",
                    "src": "159:494:47",
                    "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."
                },
                "fullyImplemented": true,
                "id": 10182,
                "linearizedBaseContracts": [
                    10182,
                    11508
                ],
                "name": "Ownable",
                "nameLocation": "672:7:47",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "constant": false,
                        "id": 10077,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nameLocation": "713:6:47",
                        "nodeType": "VariableDeclaration",
                        "scope": 10182,
                        "src": "697:22:47",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 10076,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "697:7:47",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "anonymous": false,
                        "id": 10083,
                        "name": "OwnershipTransferred",
                        "nameLocation": "732:20:47",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 10082,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 10079,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "previousOwner",
                                    "nameLocation": "769:13:47",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10083,
                                    "src": "753:29:47",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 10078,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "753:7:47",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 10081,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "newOwner",
                                    "nameLocation": "800:8:47",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10083,
                                    "src": "784:24:47",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 10080,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "784:7:47",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "752:57:47"
                        },
                        "src": "726:84:47"
                    },
                    {
                        "body": {
                            "id": 10092,
                            "nodeType": "Block",
                            "src": "926:49:47",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "id": 10088,
                                                    "name": "_msgSender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 11498,
                                                    "src": "955:10:47",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                        "typeString": "function () view returns (address)"
                                                    }
                                                },
                                                "id": 10089,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "955:12:47",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 10087,
                                            "name": "_transferOwnership",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10181,
                                            "src": "936:18:47",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                                "typeString": "function (address)"
                                            }
                                        },
                                        "id": 10090,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "936:32:47",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 10091,
                                    "nodeType": "ExpressionStatement",
                                    "src": "936:32:47"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 10084,
                            "nodeType": "StructuredDocumentation",
                            "src": "816:91:47",
                            "text": " @dev Initializes the contract setting the deployer as the initial owner."
                        },
                        "id": 10093,
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [],
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 10085,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "923:2:47"
                        },
                        "returnParameters": {
                            "id": 10086,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "926:0:47"
                        },
                        "scope": 10182,
                        "src": "912:63:47",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 10100,
                            "nodeType": "Block",
                            "src": "1084:41:47",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "id": 10096,
                                            "name": "_checkOwner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10124,
                                            "src": "1094:11:47",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$__$returns$__$",
                                                "typeString": "function () view"
                                            }
                                        },
                                        "id": 10097,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1094:13:47",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 10098,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1094:13:47"
                                },
                                {
                                    "id": 10099,
                                    "nodeType": "PlaceholderStatement",
                                    "src": "1117:1:47"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 10094,
                            "nodeType": "StructuredDocumentation",
                            "src": "981:77:47",
                            "text": " @dev Throws if called by any account other than the owner."
                        },
                        "id": 10101,
                        "name": "onlyOwner",
                        "nameLocation": "1072:9:47",
                        "nodeType": "ModifierDefinition",
                        "parameters": {
                            "id": 10095,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1081:2:47"
                        },
                        "src": "1063:62:47",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 10109,
                            "nodeType": "Block",
                            "src": "1256:30:47",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 10107,
                                        "name": "_owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10077,
                                        "src": "1273:6:47",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "functionReturnParameters": 10106,
                                    "id": 10108,
                                    "nodeType": "Return",
                                    "src": "1266:13:47"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 10102,
                            "nodeType": "StructuredDocumentation",
                            "src": "1131:65:47",
                            "text": " @dev Returns the address of the current owner."
                        },
                        "functionSelector": "8da5cb5b",
                        "id": 10110,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "owner",
                        "nameLocation": "1210:5:47",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 10103,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1215:2:47"
                        },
                        "returnParameters": {
                            "id": 10106,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 10105,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10110,
                                    "src": "1247:7:47",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 10104,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1247:7:47",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1246:9:47"
                        },
                        "scope": 10182,
                        "src": "1201:85:47",
                        "stateMutability": "view",
                        "virtual": true,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 10123,
                            "nodeType": "Block",
                            "src": "1404:85:47",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 10119,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 10115,
                                                        "name": "owner",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 10110,
                                                        "src": "1422:5:47",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                            "typeString": "function () view returns (address)"
                                                        }
                                                    },
                                                    "id": 10116,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1422:7:47",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 10117,
                                                        "name": "_msgSender",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 11498,
                                                        "src": "1433:10:47",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                            "typeString": "function () view returns (address)"
                                                        }
                                                    },
                                                    "id": 10118,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1433:12:47",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "1422:23:47",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                                "id": 10120,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1447:34:47",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                                    "typeString": "literal_string \"Ownable: caller is not the owner\""
                                                },
                                                "value": "Ownable: caller is not the owner"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                                    "typeString": "literal_string \"Ownable: caller is not the owner\""
                                                }
                                            ],
                                            "id": 10114,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "1414:7:47",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 10121,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1414:68:47",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 10122,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1414:68:47"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 10111,
                            "nodeType": "StructuredDocumentation",
                            "src": "1292:62:47",
                            "text": " @dev Throws if the sender is not the owner."
                        },
                        "id": 10124,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_checkOwner",
                        "nameLocation": "1368:11:47",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 10112,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1379:2:47"
                        },
                        "returnParameters": {
                            "id": 10113,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1404:0:47"
                        },
                        "scope": 10182,
                        "src": "1359:130:47",
                        "stateMutability": "view",
                        "virtual": true,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 10137,
                            "nodeType": "Block",
                            "src": "1885:47:47",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "hexValue": "30",
                                                        "id": 10133,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1922:1:47",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        }
                                                    ],
                                                    "id": 10132,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "1914:7:47",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 10131,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "1914:7:47",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 10134,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "1914:10:47",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 10130,
                                            "name": "_transferOwnership",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10181,
                                            "src": "1895:18:47",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                                "typeString": "function (address)"
                                            }
                                        },
                                        "id": 10135,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1895:30:47",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 10136,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1895:30:47"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 10125,
                            "nodeType": "StructuredDocumentation",
                            "src": "1495:331:47",
                            "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."
                        },
                        "functionSelector": "715018a6",
                        "id": 10138,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 10128,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 10127,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 10101,
                                    "src": "1875:9:47"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "1875:9:47"
                            }
                        ],
                        "name": "renounceOwnership",
                        "nameLocation": "1840:17:47",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 10126,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1857:2:47"
                        },
                        "returnParameters": {
                            "id": 10129,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1885:0:47"
                        },
                        "scope": 10182,
                        "src": "1831:101:47",
                        "stateMutability": "nonpayable",
                        "virtual": true,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 10160,
                            "nodeType": "Block",
                            "src": "2151:128:47",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 10152,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 10147,
                                                    "name": "newOwner",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 10141,
                                                    "src": "2169:8:47",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 10150,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2189:1:47",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "id": 10149,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "2181:7:47",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 10148,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2181:7:47",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 10151,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2181:10:47",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "2169:22:47",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373",
                                                "id": 10153,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2193:40:47",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                                    "typeString": "literal_string \"Ownable: new owner is the zero address\""
                                                },
                                                "value": "Ownable: new owner is the zero address"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                                    "typeString": "literal_string \"Ownable: new owner is the zero address\""
                                                }
                                            ],
                                            "id": 10146,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "2161:7:47",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 10154,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2161:73:47",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 10155,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2161:73:47"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 10157,
                                                "name": "newOwner",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10141,
                                                "src": "2263:8:47",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 10156,
                                            "name": "_transferOwnership",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10181,
                                            "src": "2244:18:47",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                                "typeString": "function (address)"
                                            }
                                        },
                                        "id": 10158,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2244:28:47",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 10159,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2244:28:47"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 10139,
                            "nodeType": "StructuredDocumentation",
                            "src": "1938:138:47",
                            "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."
                        },
                        "functionSelector": "f2fde38b",
                        "id": 10161,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 10144,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 10143,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 10101,
                                    "src": "2141:9:47"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "2141:9:47"
                            }
                        ],
                        "name": "transferOwnership",
                        "nameLocation": "2090:17:47",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 10142,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 10141,
                                    "mutability": "mutable",
                                    "name": "newOwner",
                                    "nameLocation": "2116:8:47",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10161,
                                    "src": "2108:16:47",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 10140,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2108:7:47",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2107:18:47"
                        },
                        "returnParameters": {
                            "id": 10145,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2151:0:47"
                        },
                        "scope": 10182,
                        "src": "2081:198:47",
                        "stateMutability": "nonpayable",
                        "virtual": true,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 10180,
                            "nodeType": "Block",
                            "src": "2496:124:47",
                            "statements": [
                                {
                                    "assignments": [
                                        10168
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 10168,
                                            "mutability": "mutable",
                                            "name": "oldOwner",
                                            "nameLocation": "2514:8:47",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10180,
                                            "src": "2506:16:47",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 10167,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2506:7:47",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 10170,
                                    "initialValue": {
                                        "id": 10169,
                                        "name": "_owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10077,
                                        "src": "2525:6:47",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2506:25:47"
                                },
                                {
                                    "expression": {
                                        "id": 10173,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 10171,
                                            "name": "_owner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10077,
                                            "src": "2541:6:47",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 10172,
                                            "name": "newOwner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10164,
                                            "src": "2550:8:47",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "2541:17:47",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 10174,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2541:17:47"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "id": 10176,
                                                "name": "oldOwner",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10168,
                                                "src": "2594:8:47",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 10177,
                                                "name": "newOwner",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10164,
                                                "src": "2604:8:47",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 10175,
                                            "name": "OwnershipTransferred",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10083,
                                            "src": "2573:20:47",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                                "typeString": "function (address,address)"
                                            }
                                        },
                                        "id": 10178,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2573:40:47",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 10179,
                                    "nodeType": "EmitStatement",
                                    "src": "2568:45:47"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 10162,
                            "nodeType": "StructuredDocumentation",
                            "src": "2285:143:47",
                            "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."
                        },
                        "id": 10181,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_transferOwnership",
                        "nameLocation": "2442:18:47",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 10165,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 10164,
                                    "mutability": "mutable",
                                    "name": "newOwner",
                                    "nameLocation": "2469:8:47",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10181,
                                    "src": "2461:16:47",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 10163,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2461:7:47",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2460:18:47"
                        },
                        "returnParameters": {
                            "id": 10166,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2496:0:47"
                        },
                        "scope": 10182,
                        "src": "2433:187:47",
                        "stateMutability": "nonpayable",
                        "virtual": true,
                        "visibility": "internal"
                    }
                ],
                "scope": 10183,
                "src": "654:1968:47",
                "usedErrors": []
            }
        ],
        "src": "102:2521:47"
    },
    "compiler": {
        "name": "solc",
        "version": "0.8.7+commit.e28d00a7.Emscripten.clang"
    },
    "networks": {},
    "schemaVersion": "3.1.0",
    "updatedAt": "2023-03-16T16:54:15.263Z",
    "devdoc": {
        "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.",
        "kind": "dev",
        "methods": {
            "constructor": {
                "details": "Initializes the contract setting the deployer as the initial owner."
            },
            "owner()": {
                "details": "Returns the address of the current owner."
            },
            "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
            },
            "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
            }
        },
        "version": 1
    },
    "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
    }
}
