{
  "_format": "hh-sol-artifact-1",
  "contractName": "PermissionManager",
  "sourceName": "contracts/PermissionManager.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "callAsOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5061001c600033610021565b6100c0565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166100bc576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561007b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b610a68806100cf6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806336568abe1161005b57806336568abe1461010e57806391d1485414610121578063a217fddf14610158578063d547741f1461016057600080fd5b806301ffc9a71461008d578063248a9ca3146100b55780632f2ff15d146100e657806335b71907146100fb575b600080fd5b6100a061009b366004610864565b610173565b60405190151581526020015b60405180910390f35b6100d86100c336600461081f565b60009081526020819052604090206001015490565b6040519081526020016100ac565b6100f96100f4366004610838565b61020c565b005b6100f961010936600461075d565b610236565b6100f961011c366004610838565b6102f9565b6100a061012f366004610838565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6100d8600081565b6100f961016e366004610838565b610385565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061020657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600082815260208190526040902060010154610227816103aa565b61023183836103b7565b505050565b6000610241816103aa565b6000836001600160a01b03168360405161025b91906108a6565b6000604051808303816000865af19150503d8060008114610298576040519150601f19603f3d011682016040523d82523d6000602084013e61029d565b606091505b50509050806102f35760405162461bcd60e51b815260206004820152600b60248201527f63616c6c206661696c656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b50505050565b6001600160a01b03811633146103775760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016102ea565b6103818282610455565b5050565b6000828152602081905260409020600101546103a0816103aa565b6102318383610455565b6103b481336104d4565b50565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16610381576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556104113390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1615610381576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166103815761050581610547565b610510836020610559565b6040516020016105219291906108c2565b60408051601f198184030181529082905262461bcd60e51b82526102ea91600401610943565b60606102066001600160a01b03831660145b6060600061056883600261098e565b610573906002610976565b67ffffffffffffffff81111561058b5761058b610a1c565b6040519080825280601f01601f1916602001820160405280156105b5576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106105ec576105ec610a06565b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061063757610637610a06565b60200101906001600160f81b031916908160001a905350600061065b84600261098e565b610666906001610976565b90505b60018111156106eb577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106106a7576106a7610a06565b1a60f81b8282815181106106bd576106bd610a06565b60200101906001600160f81b031916908160001a90535060049490941c936106e4816109d9565b9050610669565b50831561073a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016102ea565b9392505050565b80356001600160a01b038116811461075857600080fd5b919050565b6000806040838503121561077057600080fd5b61077983610741565b9150602083013567ffffffffffffffff8082111561079657600080fd5b818501915085601f8301126107aa57600080fd5b8135818111156107bc576107bc610a1c565b604051601f8201601f19908116603f011681019083821181831017156107e4576107e4610a1c565b816040528281528860208487010111156107fd57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561083157600080fd5b5035919050565b6000806040838503121561084b57600080fd5b8235915061085b60208401610741565b90509250929050565b60006020828403121561087657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461073a57600080fd5b600082516108b88184602087016109ad565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516108fa8160178501602088016109ad565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516109378160288401602088016109ad565b01602801949350505050565b60208152600082518060208401526109628160408501602087016109ad565b601f01601f19169190910160400192915050565b60008219821115610989576109896109f0565b500190565b60008160001904831182151516156109a8576109a86109f0565b500290565b60005b838110156109c85781810151838201526020016109b0565b838111156102f35750506000910152565b6000816109e8576109e86109f0565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212207861817974d8d4cc9945d4cb3927a78697c5ee9fc941a6bf5f18b50573da613064736f6c63430008070033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c806336568abe1161005b57806336568abe1461010e57806391d1485414610121578063a217fddf14610158578063d547741f1461016057600080fd5b806301ffc9a71461008d578063248a9ca3146100b55780632f2ff15d146100e657806335b71907146100fb575b600080fd5b6100a061009b366004610864565b610173565b60405190151581526020015b60405180910390f35b6100d86100c336600461081f565b60009081526020819052604090206001015490565b6040519081526020016100ac565b6100f96100f4366004610838565b61020c565b005b6100f961010936600461075d565b610236565b6100f961011c366004610838565b6102f9565b6100a061012f366004610838565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6100d8600081565b6100f961016e366004610838565b610385565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061020657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600082815260208190526040902060010154610227816103aa565b61023183836103b7565b505050565b6000610241816103aa565b6000836001600160a01b03168360405161025b91906108a6565b6000604051808303816000865af19150503d8060008114610298576040519150601f19603f3d011682016040523d82523d6000602084013e61029d565b606091505b50509050806102f35760405162461bcd60e51b815260206004820152600b60248201527f63616c6c206661696c656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b50505050565b6001600160a01b03811633146103775760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016102ea565b6103818282610455565b5050565b6000828152602081905260409020600101546103a0816103aa565b6102318383610455565b6103b481336104d4565b50565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16610381576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556104113390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1615610381576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166103815761050581610547565b610510836020610559565b6040516020016105219291906108c2565b60408051601f198184030181529082905262461bcd60e51b82526102ea91600401610943565b60606102066001600160a01b03831660145b6060600061056883600261098e565b610573906002610976565b67ffffffffffffffff81111561058b5761058b610a1c565b6040519080825280601f01601f1916602001820160405280156105b5576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106105ec576105ec610a06565b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061063757610637610a06565b60200101906001600160f81b031916908160001a905350600061065b84600261098e565b610666906001610976565b90505b60018111156106eb577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106106a7576106a7610a06565b1a60f81b8282815181106106bd576106bd610a06565b60200101906001600160f81b031916908160001a90535060049490941c936106e4816109d9565b9050610669565b50831561073a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016102ea565b9392505050565b80356001600160a01b038116811461075857600080fd5b919050565b6000806040838503121561077057600080fd5b61077983610741565b9150602083013567ffffffffffffffff8082111561079657600080fd5b818501915085601f8301126107aa57600080fd5b8135818111156107bc576107bc610a1c565b604051601f8201601f19908116603f011681019083821181831017156107e4576107e4610a1c565b816040528281528860208487010111156107fd57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561083157600080fd5b5035919050565b6000806040838503121561084b57600080fd5b8235915061085b60208401610741565b90509250929050565b60006020828403121561087657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461073a57600080fd5b600082516108b88184602087016109ad565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516108fa8160178501602088016109ad565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516109378160288401602088016109ad565b01602801949350505050565b60208152600082518060208401526109628160408501602087016109ad565b601f01601f19169190910160400192915050565b60008219821115610989576109896109f0565b500190565b60008160001904831182151516156109a8576109a86109f0565b500290565b60005b838110156109c85781810151838201526020016109b0565b838111156102f35750506000910152565b6000816109e8576109e86109f0565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212207861817974d8d4cc9945d4cb3927a78697c5ee9fc941a6bf5f18b50573da613064736f6c63430008070033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
