{
  "contractName": "DifficultyOracleFactory",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "creator",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "difficultyOracle",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "name": "DifficultyOracleCreation",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "name": "createDifficultyOracle",
      "outputs": [
        {
          "name": "difficultyOracle",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.6+commit.b259423e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createDifficultyOracle\",\"outputs\":[{\"name\":\"difficultyOracle\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"difficultyOracle\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"DifficultyOracleCreation\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"Stefan George - <stefan@gnosis.pm>\",\"methods\":{\"createDifficultyOracle(uint256)\":{\"details\":\"Creates a new difficulty oracle contract\",\"params\":{\"blockNumber\":\"Target block number\"},\"return\":\"Oracle contract\"}},\"title\":\"Difficulty oracle factory contract - Allows to create difficulty oracle contracts\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/DifficultyOracleFactory.sol\":\"DifficultyOracleFactory\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/DifficultyOracle.sol\":{\"keccak256\":\"0x18ae9cab2afc6d83dfad172af16b5648188434c4e16ed1e00f28539185f5d066\",\"urls\":[\"bzzr://44b5c9682a99a1434b8b25e5f4159932f8820d447b633dc984263c0b9d6531e6\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/DifficultyOracleFactory.sol\":{\"keccak256\":\"0x2eb46969b68f03b3604ec6469c77e31d353c4022f65dbc686d62cb4cb276687e\",\"urls\":[\"bzzr://44426a475aac4f342a9a1ce0f9cde2320e15f91bc73feb7a90f925356f0d6d1c\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/Oracle.sol\":{\"keccak256\":\"0xf4d12f4a59c17e66dfa6791188f621a8914e2038a4e3f72d6fc9fb903ca8e18e\",\"urls\":[\"bzzr://a477ccd203e677cc904b1a4f8fcc85251c5b5e09c5c10eed27e01318584b16d1\"]},\"@gnosis.pm/util-contracts/contracts/Proxy.sol\":{\"keccak256\":\"0xeab0e83a9ec9e7f052c0455a11577061ec6d1994db08dae429abd6faaabf6555\",\"urls\":[\"bzzr://b2c1273d4ec30e2f9e768eea8c510f8493a7359b03e01923d93eea86b57ec145\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50610389806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80639d5f242214610030575b600080fd5b61005c6004803603602081101561004657600080fd5b810190808035906020019092919050505061009e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000816040516100ad9061015d565b80828152602001915050604051809103906000f0801580156100d3573d6000803e3d6000fd5b5090503373ffffffffffffffffffffffffffffffffffffffff167f83ecbb7b33dba848fcbd61d437ac02705db443e66f76ce6be0cf3415d07ab17f8284604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a2919050565b6101f38061016b8339019056fe608060405234801561001057600080fd5b506040516020806101f38339810180604052602081101561003057600080fd5b810190808051906020019092919050505043811161004d57600080fd5b806000819055505061018f806100646000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630537665d1461005c57806319cae4621461006657806357e871e7146100845780637e7e4b47146100a2578063ccdf68f3146100c0575b600080fd5b6100646100e2565b005b61006e610141565b6040518082815260200191505060405180910390f35b61008c610147565b6040518082815260200191505060405180910390f35b6100aa61014d565b6040518082815260200191505060405180910390f35b6100c8610157565b604051808215151515815260200191505060405180910390f35b60005443101580156100f657506000600154145b6100ff57600080fd5b446001819055507f39972cb21edd888c2061a2b4b37874524bbc055cfeaa3054682ba5369f5029aa6001546040518082815260200191505060405180910390a1565b60015481565b60005481565b6000600154905090565b6000806001541190509056fea165627a7a723058205336a64a8c9d2d2e7d50564cd774a5a75a46706111b37a6e21b4378caad047c60029a165627a7a72305820ef6978f666a369746411ced9c59afd4a7374cd90cbaf2224c6b92f540305a5d70029",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80639d5f242214610030575b600080fd5b61005c6004803603602081101561004657600080fd5b810190808035906020019092919050505061009e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000816040516100ad9061015d565b80828152602001915050604051809103906000f0801580156100d3573d6000803e3d6000fd5b5090503373ffffffffffffffffffffffffffffffffffffffff167f83ecbb7b33dba848fcbd61d437ac02705db443e66f76ce6be0cf3415d07ab17f8284604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a2919050565b6101f38061016b8339019056fe608060405234801561001057600080fd5b506040516020806101f38339810180604052602081101561003057600080fd5b810190808051906020019092919050505043811161004d57600080fd5b806000819055505061018f806100646000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630537665d1461005c57806319cae4621461006657806357e871e7146100845780637e7e4b47146100a2578063ccdf68f3146100c0575b600080fd5b6100646100e2565b005b61006e610141565b6040518082815260200191505060405180910390f35b61008c610147565b6040518082815260200191505060405180910390f35b6100aa61014d565b6040518082815260200191505060405180910390f35b6100c8610157565b604051808215151515815260200191505060405180910390f35b60005443101580156100f657506000600154145b6100ff57600080fd5b446001819055507f39972cb21edd888c2061a2b4b37874524bbc055cfeaa3054682ba5369f5029aa6001546040518082815260200191505060405180910390a1565b60015481565b60005481565b6000600154905090565b6000806001541190509056fea165627a7a723058205336a64a8c9d2d2e7d50564cd774a5a75a46706111b37a6e21b4378caad047c60029a165627a7a72305820ef6978f666a369746411ced9c59afd4a7374cd90cbaf2224c6b92f540305a5d70029",
  "sourceMap": "208:632:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;208:632:17;;;;;;;",
  "deployedSourceMap": "208:632:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;208:632:17;;;;;;;;;;;;;;;;;;;566:272;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;566:272:17;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;648:33;737:11;716:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;716:33:17;697:52;;789:10;764:67;;;801:16;819:11;764:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;566:272;;;:::o;208:632::-;;;;;;;;:::o",
  "source": "pragma solidity ^0.5.0;\nimport \"../Oracles/DifficultyOracle.sol\";\n\n\n/// @title Difficulty oracle factory contract - Allows to create difficulty oracle contracts\n/// @author Stefan George - <stefan@gnosis.pm>\ncontract DifficultyOracleFactory {\n\n    /*\n     *  Events\n     */\n    event DifficultyOracleCreation(address indexed creator, DifficultyOracle difficultyOracle, uint blockNumber);\n\n    /*\n     *  Public functions\n     */\n    /// @dev Creates a new difficulty oracle contract\n    /// @param blockNumber Target block number\n    /// @return Oracle contract\n    function createDifficultyOracle(uint blockNumber)\n        public\n        returns (DifficultyOracle difficultyOracle)\n    {\n        difficultyOracle = new DifficultyOracle(blockNumber);\n        emit DifficultyOracleCreation(msg.sender, difficultyOracle, blockNumber);\n    }\n}\n",
  "sourcePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/DifficultyOracleFactory.sol",
  "ast": {
    "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/DifficultyOracleFactory.sol",
    "exportedSymbols": {
      "DifficultyOracleFactory": [
        3979
      ]
    },
    "id": 3980,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3947,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:17"
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/DifficultyOracle.sol",
        "file": "../Oracles/DifficultyOracle.sol",
        "id": 3948,
        "nodeType": "ImportDirective",
        "scope": 3980,
        "sourceUnit": 3946,
        "src": "24:41:17",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          3945
        ],
        "contractKind": "contract",
        "documentation": "@title Difficulty oracle factory contract - Allows to create difficulty oracle contracts\n @author Stefan George - <stefan@gnosis.pm>",
        "fullyImplemented": true,
        "id": 3979,
        "linearizedBaseContracts": [
          3979
        ],
        "name": "DifficultyOracleFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 3956,
            "name": "DifficultyOracleCreation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3955,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3950,
                  "indexed": true,
                  "name": "creator",
                  "nodeType": "VariableDeclaration",
                  "scope": 3956,
                  "src": "309:23:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3949,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "309:7:17",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3952,
                  "indexed": false,
                  "name": "difficultyOracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 3956,
                  "src": "334:33:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                    "typeString": "contract DifficultyOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3951,
                    "name": "DifficultyOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3945,
                    "src": "334:16:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                      "typeString": "contract DifficultyOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3954,
                  "indexed": false,
                  "name": "blockNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 3956,
                  "src": "369:16:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3953,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "369:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "308:78:17"
            },
            "src": "278:109:17"
          },
          {
            "body": {
              "id": 3977,
              "nodeType": "Block",
              "src": "687:151:17",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3963,
                      "name": "difficultyOracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3961,
                      "src": "697:16:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                        "typeString": "contract DifficultyOracle"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3966,
                          "name": "blockNumber",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3958,
                          "src": "737:11:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3965,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "716:20:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_creation_nonpayable$_t_uint256_$returns$_t_contract$_DifficultyOracle_$3945_$",
                          "typeString": "function (uint256) returns (contract DifficultyOracle)"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 3964,
                          "name": "DifficultyOracle",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3945,
                          "src": "720:16:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                            "typeString": "contract DifficultyOracle"
                          }
                        }
                      },
                      "id": 3967,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "716:33:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                        "typeString": "contract DifficultyOracle"
                      }
                    },
                    "src": "697:52:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                      "typeString": "contract DifficultyOracle"
                    }
                  },
                  "id": 3969,
                  "nodeType": "ExpressionStatement",
                  "src": "697:52:17"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3971,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7920,
                          "src": "789:3:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3972,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "789:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3973,
                        "name": "difficultyOracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3961,
                        "src": "801:16:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                          "typeString": "contract DifficultyOracle"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3974,
                        "name": "blockNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3958,
                        "src": "819:11:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                          "typeString": "contract DifficultyOracle"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3970,
                      "name": "DifficultyOracleCreation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3956,
                      "src": "764:24:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_DifficultyOracle_$3945_$_t_uint256_$returns$__$",
                        "typeString": "function (address,contract DifficultyOracle,uint256)"
                      }
                    },
                    "id": 3975,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "764:67:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3976,
                  "nodeType": "EmitStatement",
                  "src": "759:72:17"
                }
              ]
            },
            "documentation": "@dev Creates a new difficulty oracle contract\n @param blockNumber Target block number\n @return Oracle contract",
            "id": 3978,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createDifficultyOracle",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3959,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3958,
                  "name": "blockNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 3978,
                  "src": "598:16:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3957,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "598:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "597:18:17"
            },
            "returnParameters": {
              "id": 3962,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3961,
                  "name": "difficultyOracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 3978,
                  "src": "648:33:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                    "typeString": "contract DifficultyOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3960,
                    "name": "DifficultyOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3945,
                    "src": "648:16:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                      "typeString": "contract DifficultyOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "647:35:17"
            },
            "scope": 3979,
            "src": "566:272:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 3980,
        "src": "208:632:17"
      }
    ],
    "src": "0:841:17"
  },
  "legacyAST": {
    "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/DifficultyOracleFactory.sol",
    "exportedSymbols": {
      "DifficultyOracleFactory": [
        3979
      ]
    },
    "id": 3980,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3947,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:17"
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/DifficultyOracle.sol",
        "file": "../Oracles/DifficultyOracle.sol",
        "id": 3948,
        "nodeType": "ImportDirective",
        "scope": 3980,
        "sourceUnit": 3946,
        "src": "24:41:17",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          3945
        ],
        "contractKind": "contract",
        "documentation": "@title Difficulty oracle factory contract - Allows to create difficulty oracle contracts\n @author Stefan George - <stefan@gnosis.pm>",
        "fullyImplemented": true,
        "id": 3979,
        "linearizedBaseContracts": [
          3979
        ],
        "name": "DifficultyOracleFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 3956,
            "name": "DifficultyOracleCreation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3955,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3950,
                  "indexed": true,
                  "name": "creator",
                  "nodeType": "VariableDeclaration",
                  "scope": 3956,
                  "src": "309:23:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3949,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "309:7:17",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3952,
                  "indexed": false,
                  "name": "difficultyOracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 3956,
                  "src": "334:33:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                    "typeString": "contract DifficultyOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3951,
                    "name": "DifficultyOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3945,
                    "src": "334:16:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                      "typeString": "contract DifficultyOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3954,
                  "indexed": false,
                  "name": "blockNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 3956,
                  "src": "369:16:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3953,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "369:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "308:78:17"
            },
            "src": "278:109:17"
          },
          {
            "body": {
              "id": 3977,
              "nodeType": "Block",
              "src": "687:151:17",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3963,
                      "name": "difficultyOracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3961,
                      "src": "697:16:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                        "typeString": "contract DifficultyOracle"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3966,
                          "name": "blockNumber",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3958,
                          "src": "737:11:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3965,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "716:20:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_creation_nonpayable$_t_uint256_$returns$_t_contract$_DifficultyOracle_$3945_$",
                          "typeString": "function (uint256) returns (contract DifficultyOracle)"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 3964,
                          "name": "DifficultyOracle",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3945,
                          "src": "720:16:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                            "typeString": "contract DifficultyOracle"
                          }
                        }
                      },
                      "id": 3967,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "716:33:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                        "typeString": "contract DifficultyOracle"
                      }
                    },
                    "src": "697:52:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                      "typeString": "contract DifficultyOracle"
                    }
                  },
                  "id": 3969,
                  "nodeType": "ExpressionStatement",
                  "src": "697:52:17"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3971,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7920,
                          "src": "789:3:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3972,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "789:10:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3973,
                        "name": "difficultyOracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3961,
                        "src": "801:16:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                          "typeString": "contract DifficultyOracle"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3974,
                        "name": "blockNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3958,
                        "src": "819:11:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                          "typeString": "contract DifficultyOracle"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3970,
                      "name": "DifficultyOracleCreation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3956,
                      "src": "764:24:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_DifficultyOracle_$3945_$_t_uint256_$returns$__$",
                        "typeString": "function (address,contract DifficultyOracle,uint256)"
                      }
                    },
                    "id": 3975,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "764:67:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3976,
                  "nodeType": "EmitStatement",
                  "src": "759:72:17"
                }
              ]
            },
            "documentation": "@dev Creates a new difficulty oracle contract\n @param blockNumber Target block number\n @return Oracle contract",
            "id": 3978,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createDifficultyOracle",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3959,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3958,
                  "name": "blockNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 3978,
                  "src": "598:16:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3957,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "598:4:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "597:18:17"
            },
            "returnParameters": {
              "id": 3962,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3961,
                  "name": "difficultyOracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 3978,
                  "src": "648:33:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                    "typeString": "contract DifficultyOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3960,
                    "name": "DifficultyOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3945,
                    "src": "648:16:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DifficultyOracle_$3945",
                      "typeString": "contract DifficultyOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "647:35:17"
            },
            "scope": 3979,
            "src": "566:272:17",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 3980,
        "src": "208:632:17"
      }
    ],
    "src": "0:841:17"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.6+commit.b259423e.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {},
      "address": "0x5736ac1f72673c693e527cee216dadda344b1f5e",
      "transactionHash": "0xec426fa943ee2977519ea41ea98fdbfdc38a6b4196bdf224c8a1b42afbdceefb"
    },
    "4": {
      "events": {},
      "links": {},
      "address": "0xc70f8f0b0e100f2e533d2fced5e525704e968e52",
      "transactionHash": "0x9f4ead36127dccf9899dab5ad13ea75127ab2bb8c8faae8c50d93d354c2216ad"
    },
    "42": {
      "events": {},
      "links": {},
      "address": "0x0704c329a35635574e78360dd8586c16a010752d",
      "transactionHash": "0x3f587cb1392a05fa44769a49e310bdb0f60d926004f286a97d6650affce999a1"
    },
    "437894314312": {
      "events": {},
      "links": {},
      "address": "0x6ed79aa1c71fd7bdbc515efda3bd4e26394435cc",
      "transactionHash": "0x6b5bdd030cce53686c0a677d2ac69f3c82450a8045331c26ba6d8108365799a9"
    }
  },
  "schemaVersion": "3.0.11",
  "updatedAt": "2019-09-20T17:46:52.192Z",
  "devdoc": {
    "author": "Stefan George - <stefan@gnosis.pm>",
    "methods": {
      "createDifficultyOracle(uint256)": {
        "details": "Creates a new difficulty oracle contract",
        "params": {
          "blockNumber": "Target block number"
        },
        "return": "Oracle contract"
      }
    },
    "title": "Difficulty oracle factory contract - Allows to create difficulty oracle contracts"
  },
  "userdoc": {
    "methods": {}
  }
}