{
  "contractName": "PauserRole",
  "abi": [
    {
      "inputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "account",
          "type": "address"
        }
      ],
      "name": "PauserAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "account",
          "type": "address"
        }
      ],
      "name": "PauserRemoved",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isPauser",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "account",
          "type": "address"
        }
      ],
      "name": "addPauser",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renouncePauser",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "pragma solidity ^0.5.0;\n\nimport \"../Roles.sol\";\n\ncontract PauserRole {\n    using Roles for Roles.Role;\n\n    event PauserAdded(address indexed account);\n    event PauserRemoved(address indexed account);\n\n    Roles.Role private _pausers;\n\n    constructor () internal {\n        _addPauser(msg.sender);\n    }\n\n    modifier onlyPauser() {\n        require(isPauser(msg.sender));\n        _;\n    }\n\n    function isPauser(address account) public view returns (bool) {\n        return _pausers.has(account);\n    }\n\n    function addPauser(address account) public onlyPauser {\n        _addPauser(account);\n    }\n\n    function renouncePauser() public {\n        _removePauser(msg.sender);\n    }\n\n    function _addPauser(address account) internal {\n        _pausers.add(account);\n        emit PauserAdded(account);\n    }\n\n    function _removePauser(address account) internal {\n        _pausers.remove(account);\n        emit PauserRemoved(account);\n    }\n}\n",
  "sourcePath": "openzeppelin-solidity/contracts/access/roles/PauserRole.sol",
  "ast": {
    "absolutePath": "openzeppelin-solidity/contracts/access/roles/PauserRole.sol",
    "exportedSymbols": {
      "PauserRole": [
        15558
      ]
    },
    "id": 15559,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 15457,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:63"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/access/Roles.sol",
        "file": "../Roles.sol",
        "id": 15458,
        "nodeType": "ImportDirective",
        "scope": 15559,
        "sourceUnit": 15353,
        "src": "25:22:63",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 15558,
        "linearizedBaseContracts": [
          15558
        ],
        "name": "PauserRole",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 15461,
            "libraryName": {
              "contractScope": null,
              "id": 15459,
              "name": "Roles",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 15352,
              "src": "81:5:63",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Roles_$15352",
                "typeString": "library Roles"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "75:27:63",
            "typeName": {
              "contractScope": null,
              "id": 15460,
              "name": "Roles.Role",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 15265,
              "src": "91:10:63",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Role_$15265_storage_ptr",
                "typeString": "struct Roles.Role"
              }
            }
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 15465,
            "name": "PauserAdded",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 15464,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15463,
                  "indexed": true,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 15465,
                  "src": "126:23:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15462,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "126:7:63",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "125:25:63"
            },
            "src": "108:43:63"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 15469,
            "name": "PauserRemoved",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 15468,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15467,
                  "indexed": true,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 15469,
                  "src": "176:23:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15466,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "176:7:63",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "175:25:63"
            },
            "src": "156:45:63"
          },
          {
            "constant": false,
            "id": 15471,
            "name": "_pausers",
            "nodeType": "VariableDeclaration",
            "scope": 15558,
            "src": "207:27:63",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Role_$15265_storage",
              "typeString": "struct Roles.Role"
            },
            "typeName": {
              "contractScope": null,
              "id": 15470,
              "name": "Roles.Role",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 15265,
              "src": "207:10:63",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Role_$15265_storage_ptr",
                "typeString": "struct Roles.Role"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 15479,
              "nodeType": "Block",
              "src": "265:39:63",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 15475,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16782,
                          "src": "286:3:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 15476,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "286:10:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 15474,
                      "name": "_addPauser",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15541,
                      "src": "275:10:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 15477,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "275:22:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15478,
                  "nodeType": "ExpressionStatement",
                  "src": "275:22:63"
                }
              ]
            },
            "documentation": null,
            "id": 15480,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15472,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "253:2:63"
            },
            "returnParameters": {
              "id": 15473,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "265:0:63"
            },
            "scope": 15558,
            "src": "241:63:63",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15490,
              "nodeType": "Block",
              "src": "332:57:63",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 15484,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16782,
                              "src": "359:3:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 15485,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "359:10:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 15483,
                          "name": "isPauser",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15504,
                          "src": "350:8:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 15486,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "350:20:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15482,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "342:7:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "342:29:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15488,
                  "nodeType": "ExpressionStatement",
                  "src": "342:29:63"
                },
                {
                  "id": 15489,
                  "nodeType": "PlaceholderStatement",
                  "src": "381:1:63"
                }
              ]
            },
            "documentation": null,
            "id": 15491,
            "name": "onlyPauser",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 15481,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "329:2:63"
            },
            "src": "310:79:63",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15503,
              "nodeType": "Block",
              "src": "457:45:63",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 15500,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15493,
                        "src": "487:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 15498,
                        "name": "_pausers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15471,
                        "src": "474:8:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Role_$15265_storage",
                          "typeString": "struct Roles.Role storage ref"
                        }
                      },
                      "id": 15499,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "has",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15351,
                      "src": "474:12:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$15265_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$15265_storage_ptr_$",
                        "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)"
                      }
                    },
                    "id": 15501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "474:21:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 15497,
                  "id": 15502,
                  "nodeType": "Return",
                  "src": "467:28:63"
                }
              ]
            },
            "documentation": null,
            "id": 15504,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isPauser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15494,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15493,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 15504,
                  "src": "413:15:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15492,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "413:7:63",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "412:17:63"
            },
            "returnParameters": {
              "id": 15497,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15496,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 15504,
                  "src": "451:4:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15495,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "451:4:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "450:6:63"
            },
            "scope": 15558,
            "src": "395:107:63",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15515,
              "nodeType": "Block",
              "src": "562:36:63",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 15512,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15506,
                        "src": "583:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 15511,
                      "name": "_addPauser",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15541,
                      "src": "572:10:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 15513,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "572:19:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15514,
                  "nodeType": "ExpressionStatement",
                  "src": "572:19:63"
                }
              ]
            },
            "documentation": null,
            "id": 15516,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 15509,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 15508,
                  "name": "onlyPauser",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 15491,
                  "src": "551:10:63",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "551:10:63"
              }
            ],
            "name": "addPauser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15507,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15506,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 15516,
                  "src": "527:15:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15505,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "527:7:63",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "526:17:63"
            },
            "returnParameters": {
              "id": 15510,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "562:0:63"
            },
            "scope": 15558,
            "src": "508:90:63",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15524,
              "nodeType": "Block",
              "src": "637:42:63",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 15520,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16782,
                          "src": "661:3:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 15521,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "661:10:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 15519,
                      "name": "_removePauser",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15557,
                      "src": "647:13:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 15522,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "647:25:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15523,
                  "nodeType": "ExpressionStatement",
                  "src": "647:25:63"
                }
              ]
            },
            "documentation": null,
            "id": 15525,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "renouncePauser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15517,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "627:2:63"
            },
            "returnParameters": {
              "id": 15518,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "637:0:63"
            },
            "scope": 15558,
            "src": "604:75:63",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15540,
              "nodeType": "Block",
              "src": "731:73:63",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 15533,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15527,
                        "src": "754:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 15530,
                        "name": "_pausers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15471,
                        "src": "741:8:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Role_$15265_storage",
                          "typeString": "struct Roles.Role storage ref"
                        }
                      },
                      "id": 15532,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15297,
                      "src": "741:12:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$15265_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$15265_storage_ptr_$",
                        "typeString": "function (struct Roles.Role storage pointer,address)"
                      }
                    },
                    "id": 15534,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "741:21:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15535,
                  "nodeType": "ExpressionStatement",
                  "src": "741:21:63"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 15537,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15527,
                        "src": "789:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 15536,
                      "name": "PauserAdded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15465,
                      "src": "777:11:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 15538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "777:20:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15539,
                  "nodeType": "EmitStatement",
                  "src": "772:25:63"
                }
              ]
            },
            "documentation": null,
            "id": 15541,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_addPauser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15527,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 15541,
                  "src": "705:15:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15526,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "705:7:63",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "704:17:63"
            },
            "returnParameters": {
              "id": 15529,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "731:0:63"
            },
            "scope": 15558,
            "src": "685:119:63",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15556,
              "nodeType": "Block",
              "src": "859:78:63",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 15549,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15543,
                        "src": "885:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 15546,
                        "name": "_pausers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15471,
                        "src": "869:8:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Role_$15265_storage",
                          "typeString": "struct Roles.Role storage ref"
                        }
                      },
                      "id": 15548,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "remove",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15328,
                      "src": "869:15:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$15265_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$15265_storage_ptr_$",
                        "typeString": "function (struct Roles.Role storage pointer,address)"
                      }
                    },
                    "id": 15550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "869:24:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15551,
                  "nodeType": "ExpressionStatement",
                  "src": "869:24:63"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 15553,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15543,
                        "src": "922:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 15552,
                      "name": "PauserRemoved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15469,
                      "src": "908:13:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 15554,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "908:22:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15555,
                  "nodeType": "EmitStatement",
                  "src": "903:27:63"
                }
              ]
            },
            "documentation": null,
            "id": 15557,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_removePauser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15544,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15543,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 15557,
                  "src": "833:15:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15542,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "833:7:63",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "832:17:63"
            },
            "returnParameters": {
              "id": 15545,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "859:0:63"
            },
            "scope": 15558,
            "src": "810:127:63",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 15559,
        "src": "49:890:63"
      }
    ],
    "src": "0:940:63"
  },
  "legacyAST": {
    "absolutePath": "openzeppelin-solidity/contracts/access/roles/PauserRole.sol",
    "exportedSymbols": {
      "PauserRole": [
        15558
      ]
    },
    "id": 15559,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 15457,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:63"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/access/Roles.sol",
        "file": "../Roles.sol",
        "id": 15458,
        "nodeType": "ImportDirective",
        "scope": 15559,
        "sourceUnit": 15353,
        "src": "25:22:63",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 15558,
        "linearizedBaseContracts": [
          15558
        ],
        "name": "PauserRole",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 15461,
            "libraryName": {
              "contractScope": null,
              "id": 15459,
              "name": "Roles",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 15352,
              "src": "81:5:63",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Roles_$15352",
                "typeString": "library Roles"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "75:27:63",
            "typeName": {
              "contractScope": null,
              "id": 15460,
              "name": "Roles.Role",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 15265,
              "src": "91:10:63",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Role_$15265_storage_ptr",
                "typeString": "struct Roles.Role"
              }
            }
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 15465,
            "name": "PauserAdded",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 15464,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15463,
                  "indexed": true,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 15465,
                  "src": "126:23:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15462,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "126:7:63",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "125:25:63"
            },
            "src": "108:43:63"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 15469,
            "name": "PauserRemoved",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 15468,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15467,
                  "indexed": true,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 15469,
                  "src": "176:23:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15466,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "176:7:63",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "175:25:63"
            },
            "src": "156:45:63"
          },
          {
            "constant": false,
            "id": 15471,
            "name": "_pausers",
            "nodeType": "VariableDeclaration",
            "scope": 15558,
            "src": "207:27:63",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Role_$15265_storage",
              "typeString": "struct Roles.Role"
            },
            "typeName": {
              "contractScope": null,
              "id": 15470,
              "name": "Roles.Role",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 15265,
              "src": "207:10:63",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Role_$15265_storage_ptr",
                "typeString": "struct Roles.Role"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 15479,
              "nodeType": "Block",
              "src": "265:39:63",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 15475,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16782,
                          "src": "286:3:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 15476,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "286:10:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 15474,
                      "name": "_addPauser",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15541,
                      "src": "275:10:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 15477,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "275:22:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15478,
                  "nodeType": "ExpressionStatement",
                  "src": "275:22:63"
                }
              ]
            },
            "documentation": null,
            "id": 15480,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15472,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "253:2:63"
            },
            "returnParameters": {
              "id": 15473,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "265:0:63"
            },
            "scope": 15558,
            "src": "241:63:63",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15490,
              "nodeType": "Block",
              "src": "332:57:63",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 15484,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16782,
                              "src": "359:3:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 15485,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "359:10:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 15483,
                          "name": "isPauser",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15504,
                          "src": "350:8:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 15486,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "350:20:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15482,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "342:7:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 15487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "342:29:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15488,
                  "nodeType": "ExpressionStatement",
                  "src": "342:29:63"
                },
                {
                  "id": 15489,
                  "nodeType": "PlaceholderStatement",
                  "src": "381:1:63"
                }
              ]
            },
            "documentation": null,
            "id": 15491,
            "name": "onlyPauser",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 15481,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "329:2:63"
            },
            "src": "310:79:63",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15503,
              "nodeType": "Block",
              "src": "457:45:63",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 15500,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15493,
                        "src": "487:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 15498,
                        "name": "_pausers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15471,
                        "src": "474:8:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Role_$15265_storage",
                          "typeString": "struct Roles.Role storage ref"
                        }
                      },
                      "id": 15499,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "has",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15351,
                      "src": "474:12:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$15265_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$15265_storage_ptr_$",
                        "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)"
                      }
                    },
                    "id": 15501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "474:21:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 15497,
                  "id": 15502,
                  "nodeType": "Return",
                  "src": "467:28:63"
                }
              ]
            },
            "documentation": null,
            "id": 15504,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isPauser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15494,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15493,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 15504,
                  "src": "413:15:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15492,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "413:7:63",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "412:17:63"
            },
            "returnParameters": {
              "id": 15497,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15496,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 15504,
                  "src": "451:4:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15495,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "451:4:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "450:6:63"
            },
            "scope": 15558,
            "src": "395:107:63",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15515,
              "nodeType": "Block",
              "src": "562:36:63",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 15512,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15506,
                        "src": "583:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 15511,
                      "name": "_addPauser",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15541,
                      "src": "572:10:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 15513,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "572:19:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15514,
                  "nodeType": "ExpressionStatement",
                  "src": "572:19:63"
                }
              ]
            },
            "documentation": null,
            "id": 15516,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 15509,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 15508,
                  "name": "onlyPauser",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 15491,
                  "src": "551:10:63",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "551:10:63"
              }
            ],
            "name": "addPauser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15507,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15506,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 15516,
                  "src": "527:15:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15505,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "527:7:63",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "526:17:63"
            },
            "returnParameters": {
              "id": 15510,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "562:0:63"
            },
            "scope": 15558,
            "src": "508:90:63",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15524,
              "nodeType": "Block",
              "src": "637:42:63",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 15520,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16782,
                          "src": "661:3:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 15521,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "661:10:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 15519,
                      "name": "_removePauser",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15557,
                      "src": "647:13:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 15522,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "647:25:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15523,
                  "nodeType": "ExpressionStatement",
                  "src": "647:25:63"
                }
              ]
            },
            "documentation": null,
            "id": 15525,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "renouncePauser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15517,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "627:2:63"
            },
            "returnParameters": {
              "id": 15518,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "637:0:63"
            },
            "scope": 15558,
            "src": "604:75:63",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15540,
              "nodeType": "Block",
              "src": "731:73:63",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 15533,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15527,
                        "src": "754:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 15530,
                        "name": "_pausers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15471,
                        "src": "741:8:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Role_$15265_storage",
                          "typeString": "struct Roles.Role storage ref"
                        }
                      },
                      "id": 15532,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15297,
                      "src": "741:12:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$15265_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$15265_storage_ptr_$",
                        "typeString": "function (struct Roles.Role storage pointer,address)"
                      }
                    },
                    "id": 15534,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "741:21:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15535,
                  "nodeType": "ExpressionStatement",
                  "src": "741:21:63"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 15537,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15527,
                        "src": "789:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 15536,
                      "name": "PauserAdded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15465,
                      "src": "777:11:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 15538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "777:20:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15539,
                  "nodeType": "EmitStatement",
                  "src": "772:25:63"
                }
              ]
            },
            "documentation": null,
            "id": 15541,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_addPauser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15527,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 15541,
                  "src": "705:15:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15526,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "705:7:63",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "704:17:63"
            },
            "returnParameters": {
              "id": 15529,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "731:0:63"
            },
            "scope": 15558,
            "src": "685:119:63",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15556,
              "nodeType": "Block",
              "src": "859:78:63",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 15549,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15543,
                        "src": "885:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 15546,
                        "name": "_pausers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15471,
                        "src": "869:8:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Role_$15265_storage",
                          "typeString": "struct Roles.Role storage ref"
                        }
                      },
                      "id": 15548,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "remove",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15328,
                      "src": "869:15:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$15265_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$15265_storage_ptr_$",
                        "typeString": "function (struct Roles.Role storage pointer,address)"
                      }
                    },
                    "id": 15550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "869:24:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15551,
                  "nodeType": "ExpressionStatement",
                  "src": "869:24:63"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 15553,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15543,
                        "src": "922:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 15552,
                      "name": "PauserRemoved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15469,
                      "src": "908:13:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 15554,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "908:22:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15555,
                  "nodeType": "EmitStatement",
                  "src": "903:27:63"
                }
              ]
            },
            "documentation": null,
            "id": 15557,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_removePauser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15544,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15543,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 15557,
                  "src": "833:15:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15542,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "833:7:63",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "832:17:63"
            },
            "returnParameters": {
              "id": 15545,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "859:0:63"
            },
            "scope": 15558,
            "src": "810:127:63",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 15559,
        "src": "49:890:63"
      }
    ],
    "src": "0:940:63"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.4+commit.9549d8ff.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.16",
  "updatedAt": "2020-07-07T14:28:02.369Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}