{
  "contractName": "SignedMessageOracleFactory",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "signedMessageOracleMasterCopy",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_signedMessageOracleMasterCopy",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "creator",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "signedMessageOracle",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "oracle",
          "type": "address"
        }
      ],
      "name": "SignedMessageOracleCreation",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "descriptionHash",
          "type": "bytes32"
        },
        {
          "name": "v",
          "type": "uint8"
        },
        {
          "name": "r",
          "type": "bytes32"
        },
        {
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "createSignedMessageOracle",
      "outputs": [
        {
          "name": "signedMessageOracle",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.6+commit.b259423e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"signedMessageOracleMasterCopy\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"descriptionHash\",\"type\":\"bytes32\"},{\"name\":\"v\",\"type\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"createSignedMessageOracle\",\"outputs\":[{\"name\":\"signedMessageOracle\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_signedMessageOracleMasterCopy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"signedMessageOracle\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"SignedMessageOracleCreation\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"Stefan George - <stefan@gnosis.pm>\",\"methods\":{\"createSignedMessageOracle(bytes32,uint8,bytes32,bytes32)\":{\"details\":\"Creates a new signed message oracle contract\",\"params\":{\"descriptionHash\":\"Hash identifying off chain event description\",\"r\":\"Signature parameter\",\"s\":\"Signature parameter\",\"v\":\"Signature parameter\"},\"return\":\"Oracle contract\"}},\"title\":\"Signed message oracle factory contract - Allows to create signed message oracle contracts\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/SignedMessageOracleFactory.sol\":\"SignedMessageOracleFactory\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/Oracle.sol\":{\"keccak256\":\"0xf4d12f4a59c17e66dfa6791188f621a8914e2038a4e3f72d6fc9fb903ca8e18e\",\"urls\":[\"bzzr://a477ccd203e677cc904b1a4f8fcc85251c5b5e09c5c10eed27e01318584b16d1\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/SignedMessageOracle.sol\":{\"keccak256\":\"0x0707787e68ac6a5efa4f74cbaee26a233d300803283fb61b699121fd8714367a\",\"urls\":[\"bzzr://e30da975b38e3a97a15b3a5354721a381fb5c2544154a00bee84620e834d55b5\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/SignedMessageOracleFactory.sol\":{\"keccak256\":\"0xb6c2d86453adba1f62e27d7869b10a062af2278c0161740e2c9cf152c6908ae1\",\"urls\":[\"bzzr://69dbf71f482862f40f4bd379ff03a7017be25a93ea79cb6d99f2d9c69b23eef3\"]},\"@gnosis.pm/util-contracts/contracts/Proxy.sol\":{\"keccak256\":\"0xeab0e83a9ec9e7f052c0455a11577061ec6d1994db08dae429abd6faaabf6555\",\"urls\":[\"bzzr://b2c1273d4ec30e2f9e768eea8c510f8493a7359b03e01923d93eea86b57ec145\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b506040516020806107d88339810180604052602081101561003057600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610747806100916000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063515dc0be1461003b578063655d086214610085575b600080fd5b610043610114565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100d26004803603608081101561009b57600080fd5b8101908080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050610139565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168585858560405161016d90610306565b808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018460ff1660ff16815260200183815260200182815260200195505050505050604051809103906000f0801580156101e1573d6000803e3d6000fd5b509050600060018686868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610243573d6000803e3d6000fd5b5050506020604051035190503373ffffffffffffffffffffffffffffffffffffffff167f7be438e4a33b832fcd7adccf30167ee27bd3e693a5ff6daf7fcf98fb2163b7a28383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a250949350505050565b610408806103148339019056fe608060405234801561001057600080fd5b5060405160a080610408833981018060405260a081101561003057600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505084600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100a457600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060018484848460405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610142573d6000803e3d6000fd5b50505060206040510351600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836002819055505050505050610261806101a76000396000f3fe60806040526004361061004a5760003560e01c8063238ac9331461009857806327793f87146100ef57806385dcee931461011a578063a619486e14610145578063c65fb3801461019c575b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050366000803760008036600084600019f43d6000803e8060008114610093573d6000f35b3d6000fd5b3480156100a457600080fd5b506100ad6101cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100fb57600080fd5b506101046101f1565b6040518082815260200191505060405180910390f35b34801561012657600080fd5b5061012f6101f7565b6040518082815260200191505060405180910390f35b34801561015157600080fd5b5061015a6101fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101a857600080fd5b506101b1610222565b604051808215151515815260200191505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900460ff168156fea165627a7a723058208dd95513738f71dc20ab0d04fd182f45d40c5ba14d50156d9ba2cb878e91e5570029a165627a7a723058205edf0ab992498980ef997288e046b516171b422446bf86f7d7a0ddb4f4fcd0840029",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063515dc0be1461003b578063655d086214610085575b600080fd5b610043610114565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100d26004803603608081101561009b57600080fd5b8101908080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050610139565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168585858560405161016d90610306565b808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018460ff1660ff16815260200183815260200182815260200195505050505050604051809103906000f0801580156101e1573d6000803e3d6000fd5b509050600060018686868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610243573d6000803e3d6000fd5b5050506020604051035190503373ffffffffffffffffffffffffffffffffffffffff167f7be438e4a33b832fcd7adccf30167ee27bd3e693a5ff6daf7fcf98fb2163b7a28383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a250949350505050565b610408806103148339019056fe608060405234801561001057600080fd5b5060405160a080610408833981018060405260a081101561003057600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505084600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100a457600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060018484848460405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610142573d6000803e3d6000fd5b50505060206040510351600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836002819055505050505050610261806101a76000396000f3fe60806040526004361061004a5760003560e01c8063238ac9331461009857806327793f87146100ef57806385dcee931461011a578063a619486e14610145578063c65fb3801461019c575b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050366000803760008036600084600019f43d6000803e8060008114610093573d6000f35b3d6000fd5b3480156100a457600080fd5b506100ad6101cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100fb57600080fd5b506101046101f1565b6040518082815260200191505060405180910390f35b34801561012657600080fd5b5061012f6101f7565b6040518082815260200191505060405180910390f35b34801561015157600080fd5b5061015a6101fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101a857600080fd5b506101b1610222565b604051808215151515815260200191505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900460ff168156fea165627a7a723058208dd95513738f71dc20ab0d04fd182f45d40c5ba14d50156d9ba2cb878e91e5570029a165627a7a723058205edf0ab992498980ef997288e046b516171b422446bf86f7d7a0ddb4f4fcd0840029",
  "sourceMap": "219:1252:24:-;;;548:162;8:9:-1;5:2;;;30:1;27;20:12;5:2;548:162:24;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;548:162:24;;;;;;;;;;;;;;;;673:30;641:29;;:62;;;;;;;;;;;;;;;;;;548:162;219:1252;;;;;;",
  "deployedSourceMap": "219:1252:24:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;219:1252:24;;;;;;;;;;;;;;;;;;;;;;;;445:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;993:476;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;993:476:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;445:56;;;;;;;;;;;;;:::o;993:476::-;1116:39;1258:29;;;;;;;;;;;1290:15;1307:1;1310;1313;1221:94;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1221:94:24;1171:146;;1327:14;1344:35;1354:15;1371:1;1374;1377;1344:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1344:35:24;;;;;;;;1327:52;;1422:10;1394:68;;;1434:19;1455:6;1394:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;993:476;;;;;;;:::o;219:1252::-;;;;;;;;:::o",
  "source": "pragma solidity ^0.5.0;\nimport \"../Oracles/SignedMessageOracle.sol\";\n\n\n/// @title Signed message oracle factory contract - Allows to create signed message oracle contracts\n/// @author Stefan George - <stefan@gnosis.pm>\ncontract SignedMessageOracleFactory {\n\n    /*\n     *  Events\n     */\n    event SignedMessageOracleCreation(address indexed creator, SignedMessageOracle signedMessageOracle, address oracle);\n\n    /*\n     *  Storage\n     */\n    SignedMessageOracle public signedMessageOracleMasterCopy;\n\n    /*\n     *  Public functions\n     */\n    constructor(SignedMessageOracle _signedMessageOracleMasterCopy)\n        public\n    {\n        signedMessageOracleMasterCopy = _signedMessageOracleMasterCopy;\n    }\n\n    /// @dev Creates a new signed message oracle contract\n    /// @param descriptionHash Hash identifying off chain event description\n    /// @param v Signature parameter\n    /// @param r Signature parameter\n    /// @param s Signature parameter\n    /// @return Oracle contract\n    function createSignedMessageOracle(bytes32 descriptionHash, uint8 v, bytes32 r, bytes32 s)\n        public\n        returns (SignedMessageOracle signedMessageOracle)\n    {\n        signedMessageOracle = SignedMessageOracle(address(new SignedMessageOracleProxy(address(signedMessageOracleMasterCopy), descriptionHash, v, r, s)));\n        address oracle = ecrecover(descriptionHash, v, r, s);\n        emit SignedMessageOracleCreation(msg.sender, signedMessageOracle, oracle);\n    }\n}\n",
  "sourcePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/SignedMessageOracleFactory.sol",
  "ast": {
    "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/SignedMessageOracleFactory.sol",
    "exportedSymbols": {
      "SignedMessageOracleFactory": [
        5101
      ]
    },
    "id": 5102,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5032,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:24"
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/SignedMessageOracle.sol",
        "file": "../Oracles/SignedMessageOracle.sol",
        "id": 5033,
        "nodeType": "ImportDirective",
        "scope": 5102,
        "sourceUnit": 5031,
        "src": "24:44:24",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          4910
        ],
        "contractKind": "contract",
        "documentation": "@title Signed message oracle factory contract - Allows to create signed message oracle contracts\n @author Stefan George - <stefan@gnosis.pm>",
        "fullyImplemented": true,
        "id": 5101,
        "linearizedBaseContracts": [
          5101
        ],
        "name": "SignedMessageOracleFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 5041,
            "name": "SignedMessageOracleCreation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5040,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5035,
                  "indexed": true,
                  "name": "creator",
                  "nodeType": "VariableDeclaration",
                  "scope": 5041,
                  "src": "326:23:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5034,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "326:7:24",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5037,
                  "indexed": false,
                  "name": "signedMessageOracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 5041,
                  "src": "351:39:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                    "typeString": "contract SignedMessageOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5036,
                    "name": "SignedMessageOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5030,
                    "src": "351:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                      "typeString": "contract SignedMessageOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5039,
                  "indexed": false,
                  "name": "oracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 5041,
                  "src": "392:14:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5038,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "392:7:24",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "325:82:24"
            },
            "src": "292:116:24"
          },
          {
            "constant": false,
            "id": 5043,
            "name": "signedMessageOracleMasterCopy",
            "nodeType": "VariableDeclaration",
            "scope": 5101,
            "src": "445:56:24",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
              "typeString": "contract SignedMessageOracle"
            },
            "typeName": {
              "contractScope": null,
              "id": 5042,
              "name": "SignedMessageOracle",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5030,
              "src": "445:19:24",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                "typeString": "contract SignedMessageOracle"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5052,
              "nodeType": "Block",
              "src": "631:79:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5050,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5048,
                      "name": "signedMessageOracleMasterCopy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5043,
                      "src": "641:29:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                        "typeString": "contract SignedMessageOracle"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5049,
                      "name": "_signedMessageOracleMasterCopy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5045,
                      "src": "673:30:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                        "typeString": "contract SignedMessageOracle"
                      }
                    },
                    "src": "641:62:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                      "typeString": "contract SignedMessageOracle"
                    }
                  },
                  "id": 5051,
                  "nodeType": "ExpressionStatement",
                  "src": "641:62:24"
                }
              ]
            },
            "documentation": null,
            "id": 5053,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5045,
                  "name": "_signedMessageOracleMasterCopy",
                  "nodeType": "VariableDeclaration",
                  "scope": 5053,
                  "src": "560:50:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                    "typeString": "contract SignedMessageOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5044,
                    "name": "SignedMessageOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5030,
                    "src": "560:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                      "typeString": "contract SignedMessageOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "559:52:24"
            },
            "returnParameters": {
              "id": 5047,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "631:0:24"
            },
            "scope": 5101,
            "src": "548:162:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5099,
              "nodeType": "Block",
              "src": "1161:308:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5081,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5066,
                      "name": "signedMessageOracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5064,
                      "src": "1171:19:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                        "typeString": "contract SignedMessageOracle"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5072,
                                      "name": "signedMessageOracleMasterCopy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5043,
                                      "src": "1258:29:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                                        "typeString": "contract SignedMessageOracle"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                                        "typeString": "contract SignedMessageOracle"
                                      }
                                    ],
                                    "id": 5071,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1250:7:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 5073,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1250:38:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5074,
                                  "name": "descriptionHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5055,
                                  "src": "1290:15:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5075,
                                  "name": "v",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5057,
                                  "src": "1307:1:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5076,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5059,
                                  "src": "1310:1:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5077,
                                  "name": "s",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5061,
                                  "src": "1313:1:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 5070,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "1221:28:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_contract$_SignedMessageOracleProxy_$4910_$",
                                  "typeString": "function (address,bytes32,uint8,bytes32,bytes32) returns (contract SignedMessageOracleProxy)"
                                },
                                "typeName": {
                                  "contractScope": null,
                                  "id": 5069,
                                  "name": "SignedMessageOracleProxy",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 4910,
                                  "src": "1225:24:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_SignedMessageOracleProxy_$4910",
                                    "typeString": "contract SignedMessageOracleProxy"
                                  }
                                }
                              },
                              "id": 5078,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1221:94:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_SignedMessageOracleProxy_$4910",
                                "typeString": "contract SignedMessageOracleProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_SignedMessageOracleProxy_$4910",
                                "typeString": "contract SignedMessageOracleProxy"
                              }
                            ],
                            "id": 5068,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1213:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 5079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1213:103:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        ],
                        "id": 5067,
                        "name": "SignedMessageOracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5030,
                        "src": "1193:19:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SignedMessageOracle_$5030_$",
                          "typeString": "type(contract SignedMessageOracle)"
                        }
                      },
                      "id": 5080,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1193:124:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                        "typeString": "contract SignedMessageOracle"
                      }
                    },
                    "src": "1171:146:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                      "typeString": "contract SignedMessageOracle"
                    }
                  },
                  "id": 5082,
                  "nodeType": "ExpressionStatement",
                  "src": "1171:146:24"
                },
                {
                  "assignments": [
                    5084
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5084,
                      "name": "oracle",
                      "nodeType": "VariableDeclaration",
                      "scope": 5099,
                      "src": "1327:14:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5083,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1327:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5091,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5086,
                        "name": "descriptionHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5055,
                        "src": "1354:15:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5087,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5057,
                        "src": "1371:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5088,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5059,
                        "src": "1374:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5089,
                        "name": "s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5061,
                        "src": "1377:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5085,
                      "name": "ecrecover",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7912,
                      "src": "1344:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                      }
                    },
                    "id": 5090,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1344:35:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1327:52:24"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5093,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7920,
                          "src": "1422:3:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5094,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1422:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5095,
                        "name": "signedMessageOracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5064,
                        "src": "1434:19:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                          "typeString": "contract SignedMessageOracle"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5096,
                        "name": "oracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5084,
                        "src": "1455:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                          "typeString": "contract SignedMessageOracle"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5092,
                      "name": "SignedMessageOracleCreation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5041,
                      "src": "1394:27:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_SignedMessageOracle_$5030_$_t_address_$returns$__$",
                        "typeString": "function (address,contract SignedMessageOracle,address)"
                      }
                    },
                    "id": 5097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1394:68:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5098,
                  "nodeType": "EmitStatement",
                  "src": "1389:73:24"
                }
              ]
            },
            "documentation": "@dev Creates a new signed message oracle contract\n @param descriptionHash Hash identifying off chain event description\n @param v Signature parameter\n @param r Signature parameter\n @param s Signature parameter\n @return Oracle contract",
            "id": 5100,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createSignedMessageOracle",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5062,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5055,
                  "name": "descriptionHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 5100,
                  "src": "1028:23:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5054,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1028:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5057,
                  "name": "v",
                  "nodeType": "VariableDeclaration",
                  "scope": 5100,
                  "src": "1053:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 5056,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1053:5:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5059,
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "scope": 5100,
                  "src": "1062:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5058,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1062:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5061,
                  "name": "s",
                  "nodeType": "VariableDeclaration",
                  "scope": 5100,
                  "src": "1073:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5060,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1073:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1027:56:24"
            },
            "returnParameters": {
              "id": 5065,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5064,
                  "name": "signedMessageOracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 5100,
                  "src": "1116:39:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                    "typeString": "contract SignedMessageOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5063,
                    "name": "SignedMessageOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5030,
                    "src": "1116:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                      "typeString": "contract SignedMessageOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1115:41:24"
            },
            "scope": 5101,
            "src": "993:476:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 5102,
        "src": "219:1252:24"
      }
    ],
    "src": "0:1472:24"
  },
  "legacyAST": {
    "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/SignedMessageOracleFactory.sol",
    "exportedSymbols": {
      "SignedMessageOracleFactory": [
        5101
      ]
    },
    "id": 5102,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5032,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:24"
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/SignedMessageOracle.sol",
        "file": "../Oracles/SignedMessageOracle.sol",
        "id": 5033,
        "nodeType": "ImportDirective",
        "scope": 5102,
        "sourceUnit": 5031,
        "src": "24:44:24",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          4910
        ],
        "contractKind": "contract",
        "documentation": "@title Signed message oracle factory contract - Allows to create signed message oracle contracts\n @author Stefan George - <stefan@gnosis.pm>",
        "fullyImplemented": true,
        "id": 5101,
        "linearizedBaseContracts": [
          5101
        ],
        "name": "SignedMessageOracleFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 5041,
            "name": "SignedMessageOracleCreation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5040,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5035,
                  "indexed": true,
                  "name": "creator",
                  "nodeType": "VariableDeclaration",
                  "scope": 5041,
                  "src": "326:23:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5034,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "326:7:24",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5037,
                  "indexed": false,
                  "name": "signedMessageOracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 5041,
                  "src": "351:39:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                    "typeString": "contract SignedMessageOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5036,
                    "name": "SignedMessageOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5030,
                    "src": "351:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                      "typeString": "contract SignedMessageOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5039,
                  "indexed": false,
                  "name": "oracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 5041,
                  "src": "392:14:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5038,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "392:7:24",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "325:82:24"
            },
            "src": "292:116:24"
          },
          {
            "constant": false,
            "id": 5043,
            "name": "signedMessageOracleMasterCopy",
            "nodeType": "VariableDeclaration",
            "scope": 5101,
            "src": "445:56:24",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
              "typeString": "contract SignedMessageOracle"
            },
            "typeName": {
              "contractScope": null,
              "id": 5042,
              "name": "SignedMessageOracle",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5030,
              "src": "445:19:24",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                "typeString": "contract SignedMessageOracle"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5052,
              "nodeType": "Block",
              "src": "631:79:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5050,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5048,
                      "name": "signedMessageOracleMasterCopy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5043,
                      "src": "641:29:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                        "typeString": "contract SignedMessageOracle"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5049,
                      "name": "_signedMessageOracleMasterCopy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5045,
                      "src": "673:30:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                        "typeString": "contract SignedMessageOracle"
                      }
                    },
                    "src": "641:62:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                      "typeString": "contract SignedMessageOracle"
                    }
                  },
                  "id": 5051,
                  "nodeType": "ExpressionStatement",
                  "src": "641:62:24"
                }
              ]
            },
            "documentation": null,
            "id": 5053,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5045,
                  "name": "_signedMessageOracleMasterCopy",
                  "nodeType": "VariableDeclaration",
                  "scope": 5053,
                  "src": "560:50:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                    "typeString": "contract SignedMessageOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5044,
                    "name": "SignedMessageOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5030,
                    "src": "560:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                      "typeString": "contract SignedMessageOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "559:52:24"
            },
            "returnParameters": {
              "id": 5047,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "631:0:24"
            },
            "scope": 5101,
            "src": "548:162:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5099,
              "nodeType": "Block",
              "src": "1161:308:24",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5081,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5066,
                      "name": "signedMessageOracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5064,
                      "src": "1171:19:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                        "typeString": "contract SignedMessageOracle"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5072,
                                      "name": "signedMessageOracleMasterCopy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5043,
                                      "src": "1258:29:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                                        "typeString": "contract SignedMessageOracle"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                                        "typeString": "contract SignedMessageOracle"
                                      }
                                    ],
                                    "id": 5071,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1250:7:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 5073,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1250:38:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5074,
                                  "name": "descriptionHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5055,
                                  "src": "1290:15:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5075,
                                  "name": "v",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5057,
                                  "src": "1307:1:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5076,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5059,
                                  "src": "1310:1:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5077,
                                  "name": "s",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5061,
                                  "src": "1313:1:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 5070,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "1221:28:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_contract$_SignedMessageOracleProxy_$4910_$",
                                  "typeString": "function (address,bytes32,uint8,bytes32,bytes32) returns (contract SignedMessageOracleProxy)"
                                },
                                "typeName": {
                                  "contractScope": null,
                                  "id": 5069,
                                  "name": "SignedMessageOracleProxy",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 4910,
                                  "src": "1225:24:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_SignedMessageOracleProxy_$4910",
                                    "typeString": "contract SignedMessageOracleProxy"
                                  }
                                }
                              },
                              "id": 5078,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1221:94:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_SignedMessageOracleProxy_$4910",
                                "typeString": "contract SignedMessageOracleProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_SignedMessageOracleProxy_$4910",
                                "typeString": "contract SignedMessageOracleProxy"
                              }
                            ],
                            "id": 5068,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1213:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 5079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1213:103:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        ],
                        "id": 5067,
                        "name": "SignedMessageOracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5030,
                        "src": "1193:19:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SignedMessageOracle_$5030_$",
                          "typeString": "type(contract SignedMessageOracle)"
                        }
                      },
                      "id": 5080,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1193:124:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                        "typeString": "contract SignedMessageOracle"
                      }
                    },
                    "src": "1171:146:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                      "typeString": "contract SignedMessageOracle"
                    }
                  },
                  "id": 5082,
                  "nodeType": "ExpressionStatement",
                  "src": "1171:146:24"
                },
                {
                  "assignments": [
                    5084
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5084,
                      "name": "oracle",
                      "nodeType": "VariableDeclaration",
                      "scope": 5099,
                      "src": "1327:14:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5083,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1327:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5091,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5086,
                        "name": "descriptionHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5055,
                        "src": "1354:15:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5087,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5057,
                        "src": "1371:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5088,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5059,
                        "src": "1374:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5089,
                        "name": "s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5061,
                        "src": "1377:1:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5085,
                      "name": "ecrecover",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7912,
                      "src": "1344:9:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                      }
                    },
                    "id": 5090,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1344:35:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1327:52:24"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5093,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7920,
                          "src": "1422:3:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5094,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1422:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5095,
                        "name": "signedMessageOracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5064,
                        "src": "1434:19:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                          "typeString": "contract SignedMessageOracle"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5096,
                        "name": "oracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5084,
                        "src": "1455:6:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                          "typeString": "contract SignedMessageOracle"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5092,
                      "name": "SignedMessageOracleCreation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5041,
                      "src": "1394:27:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_SignedMessageOracle_$5030_$_t_address_$returns$__$",
                        "typeString": "function (address,contract SignedMessageOracle,address)"
                      }
                    },
                    "id": 5097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1394:68:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5098,
                  "nodeType": "EmitStatement",
                  "src": "1389:73:24"
                }
              ]
            },
            "documentation": "@dev Creates a new signed message oracle contract\n @param descriptionHash Hash identifying off chain event description\n @param v Signature parameter\n @param r Signature parameter\n @param s Signature parameter\n @return Oracle contract",
            "id": 5100,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createSignedMessageOracle",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5062,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5055,
                  "name": "descriptionHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 5100,
                  "src": "1028:23:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5054,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1028:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5057,
                  "name": "v",
                  "nodeType": "VariableDeclaration",
                  "scope": 5100,
                  "src": "1053:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 5056,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1053:5:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5059,
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "scope": 5100,
                  "src": "1062:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5058,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1062:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5061,
                  "name": "s",
                  "nodeType": "VariableDeclaration",
                  "scope": 5100,
                  "src": "1073:9:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5060,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1073:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1027:56:24"
            },
            "returnParameters": {
              "id": 5065,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5064,
                  "name": "signedMessageOracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 5100,
                  "src": "1116:39:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                    "typeString": "contract SignedMessageOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5063,
                    "name": "SignedMessageOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5030,
                    "src": "1116:19:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignedMessageOracle_$5030",
                      "typeString": "contract SignedMessageOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1115:41:24"
            },
            "scope": 5101,
            "src": "993:476:24",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 5102,
        "src": "219:1252:24"
      }
    ],
    "src": "0:1472:24"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.6+commit.b259423e.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {},
      "address": "0x3d3368306a12f3477e6cf25fc4e15328fa1329d5",
      "transactionHash": "0xfefa291a1fdcaf788179969360231ee323a66681ff89cf12060fc68bf738332c"
    },
    "4": {
      "events": {},
      "links": {},
      "address": "0xc95c2e0da7dfdaf851eeeef8beec0ee65ce1d0cf",
      "transactionHash": "0x6700f3a1021f4c8402b3d69d667a1c36ef7c3edcb5f132199091bd1d22adad38"
    },
    "42": {
      "events": {},
      "links": {},
      "address": "0x6ba2bd0056af25d4b745d9291f24fd6083457ef1",
      "transactionHash": "0x1f9168ce9c1a93b92199b8796941faad6e90877b1fed4d93bda35f0626d5f481"
    },
    "437894314312": {
      "events": {},
      "links": {},
      "address": "0xdb56f2e9369e0d7bd191099125a3f6c370f8ed15",
      "transactionHash": "0x787a6f8383b404440874d2843ab57316bef81a12d78a4bab78618386d5da76c4"
    }
  },
  "schemaVersion": "3.0.11",
  "updatedAt": "2019-09-20T17:46:52.221Z",
  "devdoc": {
    "author": "Stefan George - <stefan@gnosis.pm>",
    "methods": {
      "createSignedMessageOracle(bytes32,uint8,bytes32,bytes32)": {
        "details": "Creates a new signed message oracle contract",
        "params": {
          "descriptionHash": "Hash identifying off chain event description",
          "r": "Signature parameter",
          "s": "Signature parameter",
          "v": "Signature parameter"
        },
        "return": "Oracle contract"
      }
    },
    "title": "Signed message oracle factory contract - Allows to create signed message oracle contracts"
  },
  "userdoc": {
    "methods": {}
  }
}