{
  "contractName": "MajorityOracleFactory",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "majorityOracleMasterCopy",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_majorityOracleMasterCopy",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "creator",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "majorityOracle",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "oracles",
          "type": "address[]"
        }
      ],
      "name": "MajorityOracleCreation",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "oracles",
          "type": "address[]"
        }
      ],
      "name": "createMajorityOracle",
      "outputs": [
        {
          "name": "majorityOracle",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.6+commit.b259423e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"majorityOracleMasterCopy\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"oracles\",\"type\":\"address[]\"}],\"name\":\"createMajorityOracle\",\"outputs\":[{\"name\":\"majorityOracle\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_majorityOracleMasterCopy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"majorityOracle\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"oracles\",\"type\":\"address[]\"}],\"name\":\"MajorityOracleCreation\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"Stefan George - <stefan@gnosis.pm>\",\"methods\":{\"createMajorityOracle(address[])\":{\"details\":\"Creates a new majority oracle contract\",\"params\":{\"oracles\":\"List of oracles taking part in the majority vote\"},\"return\":\"Oracle contract\"}},\"title\":\"Majority oracle factory contract - Allows to create majority oracle contracts\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/MajorityOracleFactory.sol\":\"MajorityOracleFactory\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/MajorityOracle.sol\":{\"keccak256\":\"0x2662717bba85076a2beb5166630f415997b78174a11713845af147d2acfed289\",\"urls\":[\"bzzr://8172948c09ee1cc3a5bafe2fd38e97215b408cace6b61fbae6444cfb8bab5fa4\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/MajorityOracleFactory.sol\":{\"keccak256\":\"0xeb31d0f3d34ff7ac90c34e20e0c038437e5ad097b5559ef0eb4f6a88b7430bf7\",\"urls\":[\"bzzr://24ef196df6d5a8511e8c36bcf0de5e4e4ef91d570d4c1fbcaacaa0a2d05b2a7a\"]},\"/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": "0x608060405234801561001057600080fd5b506040516020806108568339810180604052602081101561003057600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506107c5806100916000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063a41d7eec1461003b578063e04c0c5214610085575b600080fd5b61004361017d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61013b6004803603602081101561009b57600080fd5b81019080803590602001906401000000008111156100b857600080fd5b8201836020820111156100ca57600080fd5b803590602001918460208302840111640100000000831117156100ec57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506101a2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516101d390610338565b808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561024557808201518184015260208101905061022a565b505050509050019350505050604051809103906000f08015801561026d573d6000803e3d6000fd5b5090503373ffffffffffffffffffffffffffffffffffffffff167fdf1eeefc4815bdd1bdf45905c4ce59f6ca50efb4148303c9bbda2bff40301d3d8284604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561031f578082015181840152602081019050610304565b50505050905001935050505060405180910390a2919050565b610454806103468339019056fe608060405234801561001057600080fd5b506040516104543803806104548339810180604052604081101561003357600080fd5b8101908080519060200190929190805164010000000081111561005557600080fd5b8281019050602081018481111561006b57600080fd5b815185602082028301116401000000008211171561008857600080fd5b505092919050505081600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100cb57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600281511161011a57600080fd5b60008090505b815181101561018357600073ffffffffffffffffffffffffffffffffffffffff1682828151811061014d57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141561017657600080fd5b8080600101915050610120565b50806001908051906020019061019a9291906101a2565b50505061026f565b82805482825590600052602060002090810192821561021b579160200282015b8281111561021a5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906101c2565b5b509050610228919061022c565b5090565b61026c91905b8082111561026857600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101610232565b5090565b90565b6101d68061027e6000396000f3fe6080604052600436106100295760003560e01c80635b69a7d814610077578063a619486e146100f2575b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050366000803760008036600084600019f43d6000803e8060008114610072573d6000f35b3d6000fd5b34801561008357600080fd5b506100b06004803603602081101561009a57600080fd5b8101908080359060200190929190505050610149565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100fe57600080fd5b50610107610185565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6001818154811061015657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea165627a7a72305820c0cb7ad0d06d4526336a538b71b687b92ccbb9dcf9be005fc71d36dd275b53c80029a165627a7a723058207ac858d56aaa39565e1c677966dc6817b25991e36fa0f9d3e33859675eb75f230029",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063a41d7eec1461003b578063e04c0c5214610085575b600080fd5b61004361017d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61013b6004803603602081101561009b57600080fd5b81019080803590602001906401000000008111156100b857600080fd5b8201836020820111156100ca57600080fd5b803590602001918460208302840111640100000000831117156100ec57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506101a2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516101d390610338565b808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561024557808201518184015260208101905061022a565b505050509050019350505050604051809103906000f08015801561026d573d6000803e3d6000fd5b5090503373ffffffffffffffffffffffffffffffffffffffff167fdf1eeefc4815bdd1bdf45905c4ce59f6ca50efb4148303c9bbda2bff40301d3d8284604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561031f578082015181840152602081019050610304565b50505050905001935050505060405180910390a2919050565b610454806103468339019056fe608060405234801561001057600080fd5b506040516104543803806104548339810180604052604081101561003357600080fd5b8101908080519060200190929190805164010000000081111561005557600080fd5b8281019050602081018481111561006b57600080fd5b815185602082028301116401000000008211171561008857600080fd5b505092919050505081600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100cb57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600281511161011a57600080fd5b60008090505b815181101561018357600073ffffffffffffffffffffffffffffffffffffffff1682828151811061014d57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141561017657600080fd5b8080600101915050610120565b50806001908051906020019061019a9291906101a2565b50505061026f565b82805482825590600052602060002090810192821561021b579160200282015b8281111561021a5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906101c2565b5b509050610228919061022c565b5090565b61026c91905b8082111561026857600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101610232565b5090565b90565b6101d68061027e6000396000f3fe6080604052600436106100295760003560e01c80635b69a7d814610077578063a619486e146100f2575b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050366000803760008036600084600019f43d6000803e8060008114610072573d6000f35b3d6000fd5b34801561008357600080fd5b506100b06004803603602081101561009a57600080fd5b8101908080359060200190929190505050610149565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100fe57600080fd5b50610107610185565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6001818154811061015657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea165627a7a72305820c0cb7ad0d06d4526336a538b71b687b92ccbb9dcf9be005fc71d36dd275b53c80029a165627a7a723058207ac858d56aaa39565e1c677966dc6817b25991e36fa0f9d3e33859675eb75f230029",
  "sourceMap": "202:929:21:-;;;503:142;8:9:-1;5:2;;;30:1;27;20:12;5:2;503:142:21;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;503:142:21;;;;;;;;;;;;;;;;613:25;586:24;;:52;;;;;;;;;;;;;;;;;;503:142;202:929;;;;;;",
  "deployedSourceMap": "202:929:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;202:929:21;;;;;;;;;;;;;;;;;;;;;;;;410:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;807:322;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;807:322:21;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;807:322:21;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;807:322:21;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;807:322:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;807:322:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;410:46;;;;;;;;;;;;;:::o;807:322::-;894:29;1011:24;;;;;;;;;;;1038:7;979:67;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;979:67:21;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;979:67:21;939:109;;1086:10;1063:59;;;1098:14;1114:7;1063:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1063:59:21;;;;;;;;;;;;;;;;;;807:322;;;:::o;202:929::-;;;;;;;;:::o",
  "source": "pragma solidity ^0.5.0;\nimport \"../Oracles/MajorityOracle.sol\";\n\n\n/// @title Majority oracle factory contract - Allows to create majority oracle contracts\n/// @author Stefan George - <stefan@gnosis.pm>\ncontract MajorityOracleFactory {\n\n    /*\n     *  Events\n     */\n    event MajorityOracleCreation(address indexed creator, MajorityOracle majorityOracle, Oracle[] oracles);\n\n    /*\n     *  Storage\n     */\n    MajorityOracle public majorityOracleMasterCopy;\n\n    /*\n     *  Public functions\n     */\n    constructor(MajorityOracle _majorityOracleMasterCopy)\n        public\n    {\n        majorityOracleMasterCopy = _majorityOracleMasterCopy;\n    }\n\n    /// @dev Creates a new majority oracle contract\n    /// @param oracles List of oracles taking part in the majority vote\n    /// @return Oracle contract\n    function createMajorityOracle(Oracle[] memory oracles)\n        public\n        returns (MajorityOracle majorityOracle)\n    {\n        majorityOracle = MajorityOracle(address(new MajorityOracleProxy(address(majorityOracleMasterCopy), oracles)));\n        emit MajorityOracleCreation(msg.sender, majorityOracle, oracles);\n    }\n}\n",
  "sourcePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/MajorityOracleFactory.sol",
  "ast": {
    "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/MajorityOracleFactory.sol",
    "exportedSymbols": {
      "MajorityOracleFactory": [
        4827
      ]
    },
    "id": 4828,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4774,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:21"
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/MajorityOracle.sol",
        "file": "../Oracles/MajorityOracle.sol",
        "id": 4775,
        "nodeType": "ImportDirective",
        "scope": 4828,
        "sourceUnit": 4773,
        "src": "24:39:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          4579
        ],
        "contractKind": "contract",
        "documentation": "@title Majority oracle factory contract - Allows to create majority oracle contracts\n @author Stefan George - <stefan@gnosis.pm>",
        "fullyImplemented": true,
        "id": 4827,
        "linearizedBaseContracts": [
          4827
        ],
        "name": "MajorityOracleFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 4784,
            "name": "MajorityOracleCreation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 4783,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4777,
                  "indexed": true,
                  "name": "creator",
                  "nodeType": "VariableDeclaration",
                  "scope": 4784,
                  "src": "299:23:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4776,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "299:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4779,
                  "indexed": false,
                  "name": "majorityOracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 4784,
                  "src": "324:29:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                    "typeString": "contract MajorityOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4778,
                    "name": "MajorityOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4772,
                    "src": "324:14:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                      "typeString": "contract MajorityOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4782,
                  "indexed": false,
                  "name": "oracles",
                  "nodeType": "VariableDeclaration",
                  "scope": 4784,
                  "src": "355:16:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_Oracle_$4841_$dyn_memory_ptr",
                    "typeString": "contract Oracle[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 4780,
                      "name": "Oracle",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 4841,
                      "src": "355:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Oracle_$4841",
                        "typeString": "contract Oracle"
                      }
                    },
                    "id": 4781,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "355:8:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_Oracle_$4841_$dyn_storage_ptr",
                      "typeString": "contract Oracle[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "298:74:21"
            },
            "src": "270:103:21"
          },
          {
            "constant": false,
            "id": 4786,
            "name": "majorityOracleMasterCopy",
            "nodeType": "VariableDeclaration",
            "scope": 4827,
            "src": "410:46:21",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_MajorityOracle_$4772",
              "typeString": "contract MajorityOracle"
            },
            "typeName": {
              "contractScope": null,
              "id": 4785,
              "name": "MajorityOracle",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4772,
              "src": "410:14:21",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                "typeString": "contract MajorityOracle"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4795,
              "nodeType": "Block",
              "src": "576:69:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4793,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4791,
                      "name": "majorityOracleMasterCopy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4786,
                      "src": "586:24:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                        "typeString": "contract MajorityOracle"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4792,
                      "name": "_majorityOracleMasterCopy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4788,
                      "src": "613:25:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                        "typeString": "contract MajorityOracle"
                      }
                    },
                    "src": "586:52:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                      "typeString": "contract MajorityOracle"
                    }
                  },
                  "id": 4794,
                  "nodeType": "ExpressionStatement",
                  "src": "586:52:21"
                }
              ]
            },
            "documentation": null,
            "id": 4796,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4789,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4788,
                  "name": "_majorityOracleMasterCopy",
                  "nodeType": "VariableDeclaration",
                  "scope": 4796,
                  "src": "515:40:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                    "typeString": "contract MajorityOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4787,
                    "name": "MajorityOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4772,
                    "src": "515:14:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                      "typeString": "contract MajorityOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "514:42:21"
            },
            "returnParameters": {
              "id": 4790,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "576:0:21"
            },
            "scope": 4827,
            "src": "503:142:21",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4825,
              "nodeType": "Block",
              "src": "929:200:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4816,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4804,
                      "name": "majorityOracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4802,
                      "src": "939:14:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                        "typeString": "contract MajorityOracle"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 4810,
                                      "name": "majorityOracleMasterCopy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4786,
                                      "src": "1011:24:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                                        "typeString": "contract MajorityOracle"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                                        "typeString": "contract MajorityOracle"
                                      }
                                    ],
                                    "id": 4809,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1003:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 4811,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1003:33:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4812,
                                  "name": "oracles",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4799,
                                  "src": "1038:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_contract$_Oracle_$4841_$dyn_memory_ptr",
                                    "typeString": "contract Oracle[] memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_contract$_Oracle_$4841_$dyn_memory_ptr",
                                    "typeString": "contract Oracle[] memory"
                                  }
                                ],
                                "id": 4808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "979:23:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_array$_t_contract$_Oracle_$4841_$dyn_memory_ptr_$returns$_t_contract$_MajorityOracleProxy_$4579_$",
                                  "typeString": "function (address,contract Oracle[] memory) returns (contract MajorityOracleProxy)"
                                },
                                "typeName": {
                                  "contractScope": null,
                                  "id": 4807,
                                  "name": "MajorityOracleProxy",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 4579,
                                  "src": "983:19:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MajorityOracleProxy_$4579",
                                    "typeString": "contract MajorityOracleProxy"
                                  }
                                }
                              },
                              "id": 4813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "979:67:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MajorityOracleProxy_$4579",
                                "typeString": "contract MajorityOracleProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_MajorityOracleProxy_$4579",
                                "typeString": "contract MajorityOracleProxy"
                              }
                            ],
                            "id": 4806,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "971:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 4814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "971:76:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        ],
                        "id": 4805,
                        "name": "MajorityOracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4772,
                        "src": "956:14:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_MajorityOracle_$4772_$",
                          "typeString": "type(contract MajorityOracle)"
                        }
                      },
                      "id": 4815,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "956:92:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                        "typeString": "contract MajorityOracle"
                      }
                    },
                    "src": "939:109:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                      "typeString": "contract MajorityOracle"
                    }
                  },
                  "id": 4817,
                  "nodeType": "ExpressionStatement",
                  "src": "939:109:21"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4819,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7920,
                          "src": "1086:3:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4820,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1086:10:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4821,
                        "name": "majorityOracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4802,
                        "src": "1098:14:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                          "typeString": "contract MajorityOracle"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4822,
                        "name": "oracles",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4799,
                        "src": "1114:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_Oracle_$4841_$dyn_memory_ptr",
                          "typeString": "contract Oracle[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                          "typeString": "contract MajorityOracle"
                        },
                        {
                          "typeIdentifier": "t_array$_t_contract$_Oracle_$4841_$dyn_memory_ptr",
                          "typeString": "contract Oracle[] memory"
                        }
                      ],
                      "id": 4818,
                      "name": "MajorityOracleCreation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4784,
                      "src": "1063:22:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_MajorityOracle_$4772_$_t_array$_t_contract$_Oracle_$4841_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (address,contract MajorityOracle,contract Oracle[] memory)"
                      }
                    },
                    "id": 4823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1063:59:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4824,
                  "nodeType": "EmitStatement",
                  "src": "1058:64:21"
                }
              ]
            },
            "documentation": "@dev Creates a new majority oracle contract\n @param oracles List of oracles taking part in the majority vote\n @return Oracle contract",
            "id": 4826,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createMajorityOracle",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4800,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4799,
                  "name": "oracles",
                  "nodeType": "VariableDeclaration",
                  "scope": 4826,
                  "src": "837:23:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_Oracle_$4841_$dyn_memory_ptr",
                    "typeString": "contract Oracle[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 4797,
                      "name": "Oracle",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 4841,
                      "src": "837:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Oracle_$4841",
                        "typeString": "contract Oracle"
                      }
                    },
                    "id": 4798,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "837:8:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_Oracle_$4841_$dyn_storage_ptr",
                      "typeString": "contract Oracle[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "836:25:21"
            },
            "returnParameters": {
              "id": 4803,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4802,
                  "name": "majorityOracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 4826,
                  "src": "894:29:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                    "typeString": "contract MajorityOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4801,
                    "name": "MajorityOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4772,
                    "src": "894:14:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                      "typeString": "contract MajorityOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "893:31:21"
            },
            "scope": 4827,
            "src": "807:322:21",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 4828,
        "src": "202:929:21"
      }
    ],
    "src": "0:1132:21"
  },
  "legacyAST": {
    "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/MajorityOracleFactory.sol",
    "exportedSymbols": {
      "MajorityOracleFactory": [
        4827
      ]
    },
    "id": 4828,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4774,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:21"
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/MajorityOracle.sol",
        "file": "../Oracles/MajorityOracle.sol",
        "id": 4775,
        "nodeType": "ImportDirective",
        "scope": 4828,
        "sourceUnit": 4773,
        "src": "24:39:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          4579
        ],
        "contractKind": "contract",
        "documentation": "@title Majority oracle factory contract - Allows to create majority oracle contracts\n @author Stefan George - <stefan@gnosis.pm>",
        "fullyImplemented": true,
        "id": 4827,
        "linearizedBaseContracts": [
          4827
        ],
        "name": "MajorityOracleFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 4784,
            "name": "MajorityOracleCreation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 4783,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4777,
                  "indexed": true,
                  "name": "creator",
                  "nodeType": "VariableDeclaration",
                  "scope": 4784,
                  "src": "299:23:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4776,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "299:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4779,
                  "indexed": false,
                  "name": "majorityOracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 4784,
                  "src": "324:29:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                    "typeString": "contract MajorityOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4778,
                    "name": "MajorityOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4772,
                    "src": "324:14:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                      "typeString": "contract MajorityOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4782,
                  "indexed": false,
                  "name": "oracles",
                  "nodeType": "VariableDeclaration",
                  "scope": 4784,
                  "src": "355:16:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_Oracle_$4841_$dyn_memory_ptr",
                    "typeString": "contract Oracle[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 4780,
                      "name": "Oracle",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 4841,
                      "src": "355:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Oracle_$4841",
                        "typeString": "contract Oracle"
                      }
                    },
                    "id": 4781,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "355:8:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_Oracle_$4841_$dyn_storage_ptr",
                      "typeString": "contract Oracle[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "298:74:21"
            },
            "src": "270:103:21"
          },
          {
            "constant": false,
            "id": 4786,
            "name": "majorityOracleMasterCopy",
            "nodeType": "VariableDeclaration",
            "scope": 4827,
            "src": "410:46:21",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_MajorityOracle_$4772",
              "typeString": "contract MajorityOracle"
            },
            "typeName": {
              "contractScope": null,
              "id": 4785,
              "name": "MajorityOracle",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4772,
              "src": "410:14:21",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                "typeString": "contract MajorityOracle"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4795,
              "nodeType": "Block",
              "src": "576:69:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4793,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4791,
                      "name": "majorityOracleMasterCopy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4786,
                      "src": "586:24:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                        "typeString": "contract MajorityOracle"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4792,
                      "name": "_majorityOracleMasterCopy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4788,
                      "src": "613:25:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                        "typeString": "contract MajorityOracle"
                      }
                    },
                    "src": "586:52:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                      "typeString": "contract MajorityOracle"
                    }
                  },
                  "id": 4794,
                  "nodeType": "ExpressionStatement",
                  "src": "586:52:21"
                }
              ]
            },
            "documentation": null,
            "id": 4796,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4789,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4788,
                  "name": "_majorityOracleMasterCopy",
                  "nodeType": "VariableDeclaration",
                  "scope": 4796,
                  "src": "515:40:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                    "typeString": "contract MajorityOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4787,
                    "name": "MajorityOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4772,
                    "src": "515:14:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                      "typeString": "contract MajorityOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "514:42:21"
            },
            "returnParameters": {
              "id": 4790,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "576:0:21"
            },
            "scope": 4827,
            "src": "503:142:21",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4825,
              "nodeType": "Block",
              "src": "929:200:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4816,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4804,
                      "name": "majorityOracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4802,
                      "src": "939:14:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                        "typeString": "contract MajorityOracle"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 4810,
                                      "name": "majorityOracleMasterCopy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4786,
                                      "src": "1011:24:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                                        "typeString": "contract MajorityOracle"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                                        "typeString": "contract MajorityOracle"
                                      }
                                    ],
                                    "id": 4809,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1003:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 4811,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1003:33:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4812,
                                  "name": "oracles",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4799,
                                  "src": "1038:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_contract$_Oracle_$4841_$dyn_memory_ptr",
                                    "typeString": "contract Oracle[] memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_contract$_Oracle_$4841_$dyn_memory_ptr",
                                    "typeString": "contract Oracle[] memory"
                                  }
                                ],
                                "id": 4808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "979:23:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_array$_t_contract$_Oracle_$4841_$dyn_memory_ptr_$returns$_t_contract$_MajorityOracleProxy_$4579_$",
                                  "typeString": "function (address,contract Oracle[] memory) returns (contract MajorityOracleProxy)"
                                },
                                "typeName": {
                                  "contractScope": null,
                                  "id": 4807,
                                  "name": "MajorityOracleProxy",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 4579,
                                  "src": "983:19:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MajorityOracleProxy_$4579",
                                    "typeString": "contract MajorityOracleProxy"
                                  }
                                }
                              },
                              "id": 4813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "979:67:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MajorityOracleProxy_$4579",
                                "typeString": "contract MajorityOracleProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_MajorityOracleProxy_$4579",
                                "typeString": "contract MajorityOracleProxy"
                              }
                            ],
                            "id": 4806,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "971:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 4814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "971:76:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        ],
                        "id": 4805,
                        "name": "MajorityOracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4772,
                        "src": "956:14:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_MajorityOracle_$4772_$",
                          "typeString": "type(contract MajorityOracle)"
                        }
                      },
                      "id": 4815,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "956:92:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                        "typeString": "contract MajorityOracle"
                      }
                    },
                    "src": "939:109:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                      "typeString": "contract MajorityOracle"
                    }
                  },
                  "id": 4817,
                  "nodeType": "ExpressionStatement",
                  "src": "939:109:21"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4819,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7920,
                          "src": "1086:3:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4820,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1086:10:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4821,
                        "name": "majorityOracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4802,
                        "src": "1098:14:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                          "typeString": "contract MajorityOracle"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4822,
                        "name": "oracles",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4799,
                        "src": "1114:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_Oracle_$4841_$dyn_memory_ptr",
                          "typeString": "contract Oracle[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                          "typeString": "contract MajorityOracle"
                        },
                        {
                          "typeIdentifier": "t_array$_t_contract$_Oracle_$4841_$dyn_memory_ptr",
                          "typeString": "contract Oracle[] memory"
                        }
                      ],
                      "id": 4818,
                      "name": "MajorityOracleCreation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4784,
                      "src": "1063:22:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_MajorityOracle_$4772_$_t_array$_t_contract$_Oracle_$4841_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (address,contract MajorityOracle,contract Oracle[] memory)"
                      }
                    },
                    "id": 4823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1063:59:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4824,
                  "nodeType": "EmitStatement",
                  "src": "1058:64:21"
                }
              ]
            },
            "documentation": "@dev Creates a new majority oracle contract\n @param oracles List of oracles taking part in the majority vote\n @return Oracle contract",
            "id": 4826,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createMajorityOracle",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4800,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4799,
                  "name": "oracles",
                  "nodeType": "VariableDeclaration",
                  "scope": 4826,
                  "src": "837:23:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_Oracle_$4841_$dyn_memory_ptr",
                    "typeString": "contract Oracle[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 4797,
                      "name": "Oracle",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 4841,
                      "src": "837:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Oracle_$4841",
                        "typeString": "contract Oracle"
                      }
                    },
                    "id": 4798,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "837:8:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_Oracle_$4841_$dyn_storage_ptr",
                      "typeString": "contract Oracle[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "836:25:21"
            },
            "returnParameters": {
              "id": 4803,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4802,
                  "name": "majorityOracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 4826,
                  "src": "894:29:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                    "typeString": "contract MajorityOracle"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4801,
                    "name": "MajorityOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4772,
                    "src": "894:14:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MajorityOracle_$4772",
                      "typeString": "contract MajorityOracle"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "893:31:21"
            },
            "scope": 4827,
            "src": "807:322:21",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 4828,
        "src": "202:929:21"
      }
    ],
    "src": "0:1132:21"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.6+commit.b259423e.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {},
      "address": "0x01a12760503c5485f7cb15f73783887c3048d036",
      "transactionHash": "0x6efa42ef60f281a8a6d0b7c9fd69040aa28a5158b515ff0a1b8c18c0918c8cd0"
    },
    "4": {
      "events": {},
      "links": {},
      "address": "0x406d8242f65b9e1c34b23c67457e93fb8ac48ec9",
      "transactionHash": "0x4a2312fd1d2df1e6dd4dd7e2577a64d475dbbcdb4bd155b98c12eb0e335629d9"
    },
    "42": {
      "events": {},
      "links": {},
      "address": "0x45e8447d8a088786777e2e998ae7b08bc255cf68",
      "transactionHash": "0x1c79da749cc9a8771bae6e9ce964b38d42670a75cd747f29d1be8a13199e5a4a"
    },
    "437894314312": {
      "events": {},
      "links": {},
      "address": "0x0e696947a06550def604e82c26fd9e493e576337",
      "transactionHash": "0xf5626d3f45669f8f0472da20ac29b9ef246cd27140c0c68f42db86edd8483a7e"
    }
  },
  "schemaVersion": "3.0.11",
  "updatedAt": "2019-09-20T17:46:52.214Z",
  "devdoc": {
    "author": "Stefan George - <stefan@gnosis.pm>",
    "methods": {
      "createMajorityOracle(address[])": {
        "details": "Creates a new majority oracle contract",
        "params": {
          "oracles": "List of oracles taking part in the majority vote"
        },
        "return": "Oracle contract"
      }
    },
    "title": "Majority oracle factory contract - Allows to create majority oracle contracts"
  },
  "userdoc": {
    "methods": {}
  }
}