{
  "contractName": "AppProxyBase",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "KERNEL_APP_ID",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "APP_ADDR_NAMESPACE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "KERNEL_APP",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "CORE_NAMESPACE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "appId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ACL_APP",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ACL_APP_ID",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isUpgradeable",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "APP_BASES_NAMESPACE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getCode",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_kernel",
          "type": "address"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_initializePayload",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "payable": true,
      "stateMutability": "payable",
      "type": "fallback"
    }
  ],
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "pragma solidity 0.4.18;\n\nimport \"./IAppProxy.sol\";\nimport \"./AppStorage.sol\";\nimport \"../common/DelegateProxy.sol\";\nimport \"../kernel/KernelStorage.sol\";\n\n\ncontract AppProxyBase is IAppProxy, AppStorage, DelegateProxy, KernelConstants {\n    /**\n    * @dev Initialize AppProxy\n    * @param _kernel Reference to organization kernel for the app\n    * @param _appId Identifier for app\n    * @param _initializePayload Payload for call to be made after setup to initialize\n    */\n    function AppProxyBase(IKernel _kernel, bytes32 _appId, bytes _initializePayload) public {\n        kernel = _kernel;\n        appId = _appId;\n\n        // Implicit check that kernel is actually a Kernel\n        // The EVM doesn't actually provide a way for us to make sure, but we can force a revert to\n        // occur if the kernel is set to 0x0 or a non-code address when we try to call a method on\n        // it.\n        address appCode = getAppBase(appId);\n\n        // If initialize payload is provided, it will be executed\n        if (_initializePayload.length > 0) {\n            require(isContract(appCode));\n            // Cannot make delegatecall as a delegateproxy.delegatedFwd as it\n            // returns ending execution context and halts contract deployment\n            require(appCode.delegatecall(_initializePayload));\n        }\n    }\n\n    function getAppBase(bytes32 _appId) internal view returns (address) {\n        return kernel.getApp(keccak256(APP_BASES_NAMESPACE, _appId));\n    }\n\n    function () payable public {\n        address target = getCode();\n        require(target != 0); // if app code hasn't been set yet, don't call\n        delegatedFwd(target, msg.data);\n    }\n}",
  "sourcePath": "@aragon/os/contracts/apps/AppProxyBase.sol",
  "ast": {
    "attributes": {
      "absolutePath": "@aragon/os/contracts/apps/AppProxyBase.sol",
      "exportedSymbols": {
        "AppProxyBase": [
          6749
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.4",
            ".18"
          ]
        },
        "id": 6656,
        "name": "PragmaDirective",
        "src": "0:23:16"
      },
      {
        "attributes": {
          "SourceUnit": 6982,
          "absolutePath": "@aragon/os/contracts/apps/IAppProxy.sol",
          "file": "./IAppProxy.sol",
          "scope": 6750,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6657,
        "name": "ImportDirective",
        "src": "25:25:16"
      },
      {
        "attributes": {
          "SourceUnit": 6871,
          "absolutePath": "@aragon/os/contracts/apps/AppStorage.sol",
          "file": "./AppStorage.sol",
          "scope": 6750,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6658,
        "name": "ImportDirective",
        "src": "51:26:16"
      },
      {
        "attributes": {
          "SourceUnit": 7016,
          "absolutePath": "@aragon/os/contracts/common/DelegateProxy.sol",
          "file": "../common/DelegateProxy.sol",
          "scope": 6750,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6659,
        "name": "ImportDirective",
        "src": "78:37:16"
      },
      {
        "attributes": {
          "SourceUnit": 9975,
          "absolutePath": "@aragon/os/contracts/kernel/KernelStorage.sol",
          "file": "../kernel/KernelStorage.sol",
          "scope": 6750,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6660,
        "name": "ImportDirective",
        "src": "116:37:16"
      },
      {
        "attributes": {
          "contractDependencies": [
            6870,
            6981,
            7015,
            9967
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": false,
          "linearizedBaseContracts": [
            6749,
            9967,
            7015,
            6870,
            6981
          ],
          "name": "AppProxyBase",
          "scope": 6750
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "IAppProxy",
                  "referencedDeclaration": 6981,
                  "type": "contract IAppProxy"
                },
                "id": 6661,
                "name": "UserDefinedTypeName",
                "src": "181:9:16"
              }
            ],
            "id": 6662,
            "name": "InheritanceSpecifier",
            "src": "181:9:16"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "AppStorage",
                  "referencedDeclaration": 6870,
                  "type": "contract AppStorage"
                },
                "id": 6663,
                "name": "UserDefinedTypeName",
                "src": "192:10:16"
              }
            ],
            "id": 6664,
            "name": "InheritanceSpecifier",
            "src": "192:10:16"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "DelegateProxy",
                  "referencedDeclaration": 7015,
                  "type": "contract DelegateProxy"
                },
                "id": 6665,
                "name": "UserDefinedTypeName",
                "src": "204:13:16"
              }
            ],
            "id": 6666,
            "name": "InheritanceSpecifier",
            "src": "204:13:16"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "KernelConstants",
                  "referencedDeclaration": 9967,
                  "type": "contract KernelConstants"
                },
                "id": 6667,
                "name": "UserDefinedTypeName",
                "src": "219:15:16"
              }
            ],
            "id": 6668,
            "name": "InheritanceSpecifier",
            "src": "219:15:16"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": true,
              "modifiers": [
                null
              ],
              "name": "AppProxyBase",
              "payable": false,
              "scope": 6749,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_kernel",
                      "scope": 6711,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract IKernel",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "IKernel",
                          "referencedDeclaration": 9550,
                          "type": "contract IKernel"
                        },
                        "id": 6669,
                        "name": "UserDefinedTypeName",
                        "src": "500:7:16"
                      }
                    ],
                    "id": 6670,
                    "name": "VariableDeclaration",
                    "src": "500:15:16"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_appId",
                      "scope": 6711,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6671,
                        "name": "ElementaryTypeName",
                        "src": "517:7:16"
                      }
                    ],
                    "id": 6672,
                    "name": "VariableDeclaration",
                    "src": "517:14:16"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_initializePayload",
                      "scope": 6711,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 6673,
                        "name": "ElementaryTypeName",
                        "src": "533:5:16"
                      }
                    ],
                    "id": 6674,
                    "name": "VariableDeclaration",
                    "src": "533:24:16"
                  }
                ],
                "id": 6675,
                "name": "ParameterList",
                "src": "499:59:16"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6676,
                "name": "ParameterList",
                "src": "566:0:16"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract IKernel"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6857,
                              "type": "contract IKernel",
                              "value": "kernel"
                            },
                            "id": 6677,
                            "name": "Identifier",
                            "src": "576:6:16"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6670,
                              "type": "contract IKernel",
                              "value": "_kernel"
                            },
                            "id": 6678,
                            "name": "Identifier",
                            "src": "585:7:16"
                          }
                        ],
                        "id": 6679,
                        "name": "Assignment",
                        "src": "576:16:16"
                      }
                    ],
                    "id": 6680,
                    "name": "ExpressionStatement",
                    "src": "576:16:16"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6859,
                              "type": "bytes32",
                              "value": "appId"
                            },
                            "id": 6681,
                            "name": "Identifier",
                            "src": "602:5:16"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6672,
                              "type": "bytes32",
                              "value": "_appId"
                            },
                            "id": 6682,
                            "name": "Identifier",
                            "src": "610:6:16"
                          }
                        ],
                        "id": 6683,
                        "name": "Assignment",
                        "src": "602:14:16"
                      }
                    ],
                    "id": 6684,
                    "name": "ExpressionStatement",
                    "src": "602:14:16"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6686
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "appCode",
                          "scope": 6711,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "type": "address"
                            },
                            "id": 6685,
                            "name": "ElementaryTypeName",
                            "src": "900:7:16"
                          }
                        ],
                        "id": 6686,
                        "name": "VariableDeclaration",
                        "src": "900:15:16"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "address",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6727,
                              "type": "function (bytes32) view returns (address)",
                              "value": "getAppBase"
                            },
                            "id": 6687,
                            "name": "Identifier",
                            "src": "918:10:16"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6859,
                              "type": "bytes32",
                              "value": "appId"
                            },
                            "id": 6688,
                            "name": "Identifier",
                            "src": "929:5:16"
                          }
                        ],
                        "id": 6689,
                        "name": "FunctionCall",
                        "src": "918:17:16"
                      }
                    ],
                    "id": 6690,
                    "name": "VariableDeclarationStatement",
                    "src": "900:35:16"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6674,
                                  "type": "bytes memory",
                                  "value": "_initializePayload"
                                },
                                "id": 6691,
                                "name": "Identifier",
                                "src": "1016:18:16"
                              }
                            ],
                            "id": 6692,
                            "name": "MemberAccess",
                            "src": "1016:25:16"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 6693,
                            "name": "Literal",
                            "src": "1044:1:16"
                          }
                        ],
                        "id": 6694,
                        "name": "BinaryOperation",
                        "src": "1016:29:16"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12593,
                                      "type": "function (bool) pure",
                                      "value": "require"
                                    },
                                    "id": 6695,
                                    "name": "Identifier",
                                    "src": "1061:7:16"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bool",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 7014,
                                          "type": "function (address) view returns (bool)",
                                          "value": "isContract"
                                        },
                                        "id": 6696,
                                        "name": "Identifier",
                                        "src": "1069:10:16"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6686,
                                          "type": "address",
                                          "value": "appCode"
                                        },
                                        "id": 6697,
                                        "name": "Identifier",
                                        "src": "1080:7:16"
                                      }
                                    ],
                                    "id": 6698,
                                    "name": "FunctionCall",
                                    "src": "1069:19:16"
                                  }
                                ],
                                "id": 6699,
                                "name": "FunctionCall",
                                "src": "1061:28:16"
                              }
                            ],
                            "id": 6700,
                            "name": "ExpressionStatement",
                            "src": "1061:28:16"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12593,
                                      "type": "function (bool) pure",
                                      "value": "require"
                                    },
                                    "id": 6701,
                                    "name": "Identifier",
                                    "src": "1259:7:16"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bool",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "delegatecall",
                                          "referencedDeclaration": null,
                                          "type": "function () returns (bool)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6686,
                                              "type": "address",
                                              "value": "appCode"
                                            },
                                            "id": 6702,
                                            "name": "Identifier",
                                            "src": "1267:7:16"
                                          }
                                        ],
                                        "id": 6703,
                                        "name": "MemberAccess",
                                        "src": "1267:20:16"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6674,
                                          "type": "bytes memory",
                                          "value": "_initializePayload"
                                        },
                                        "id": 6704,
                                        "name": "Identifier",
                                        "src": "1288:18:16"
                                      }
                                    ],
                                    "id": 6705,
                                    "name": "FunctionCall",
                                    "src": "1267:40:16"
                                  }
                                ],
                                "id": 6706,
                                "name": "FunctionCall",
                                "src": "1259:49:16"
                              }
                            ],
                            "id": 6707,
                            "name": "ExpressionStatement",
                            "src": "1259:49:16"
                          }
                        ],
                        "id": 6708,
                        "name": "Block",
                        "src": "1047:272:16"
                      }
                    ],
                    "id": 6709,
                    "name": "IfStatement",
                    "src": "1012:307:16"
                  }
                ],
                "id": 6710,
                "name": "Block",
                "src": "566:759:16"
              }
            ],
            "id": 6711,
            "name": "FunctionDefinition",
            "src": "478:847:16"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getAppBase",
              "payable": false,
              "scope": 6749,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_appId",
                      "scope": 6727,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6712,
                        "name": "ElementaryTypeName",
                        "src": "1351:7:16"
                      }
                    ],
                    "id": 6713,
                    "name": "VariableDeclaration",
                    "src": "1351:14:16"
                  }
                ],
                "id": 6714,
                "name": "ParameterList",
                "src": "1350:16:16"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 6727,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 6715,
                        "name": "ElementaryTypeName",
                        "src": "1390:7:16"
                      }
                    ],
                    "id": 6716,
                    "name": "VariableDeclaration",
                    "src": "1390:7:16"
                  }
                ],
                "id": 6717,
                "name": "ParameterList",
                "src": "1389:9:16"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 6717
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "address",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "getApp",
                              "referencedDeclaration": 9549,
                              "type": "function (bytes32) view external returns (address)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6857,
                                  "type": "contract IKernel",
                                  "value": "kernel"
                                },
                                "id": 6718,
                                "name": "Identifier",
                                "src": "1416:6:16"
                              }
                            ],
                            "id": 6719,
                            "name": "MemberAccess",
                            "src": "1416:13:16"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12584,
                                  "type": "function () pure returns (bytes32)",
                                  "value": "keccak256"
                                },
                                "id": 6720,
                                "name": "Identifier",
                                "src": "1430:9:16"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9939,
                                  "type": "bytes32",
                                  "value": "APP_BASES_NAMESPACE"
                                },
                                "id": 6721,
                                "name": "Identifier",
                                "src": "1440:19:16"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6713,
                                  "type": "bytes32",
                                  "value": "_appId"
                                },
                                "id": 6722,
                                "name": "Identifier",
                                "src": "1461:6:16"
                              }
                            ],
                            "id": 6723,
                            "name": "FunctionCall",
                            "src": "1430:38:16"
                          }
                        ],
                        "id": 6724,
                        "name": "FunctionCall",
                        "src": "1416:53:16"
                      }
                    ],
                    "id": 6725,
                    "name": "Return",
                    "src": "1409:60:16"
                  }
                ],
                "id": 6726,
                "name": "Block",
                "src": "1399:77:16"
              }
            ],
            "id": 6727,
            "name": "FunctionDefinition",
            "src": "1331:145:16"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "",
              "payable": true,
              "scope": 6749,
              "stateMutability": "payable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6728,
                "name": "ParameterList",
                "src": "1491:2:16"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6729,
                "name": "ParameterList",
                "src": "1509:0:16"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        6731
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "target",
                          "scope": 6748,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "type": "address"
                            },
                            "id": 6730,
                            "name": "ElementaryTypeName",
                            "src": "1519:7:16"
                          }
                        ],
                        "id": 6731,
                        "name": "VariableDeclaration",
                        "src": "1519:14:16"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "address",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6980,
                              "type": "function () view returns (address)",
                              "value": "getCode"
                            },
                            "id": 6732,
                            "name": "Identifier",
                            "src": "1536:7:16"
                          }
                        ],
                        "id": 6733,
                        "name": "FunctionCall",
                        "src": "1536:9:16"
                      }
                    ],
                    "id": 6734,
                    "name": "VariableDeclarationStatement",
                    "src": "1519:26:16"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 6735,
                            "name": "Identifier",
                            "src": "1555:7:16"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6731,
                                  "type": "address",
                                  "value": "target"
                                },
                                "id": 6736,
                                "name": "Identifier",
                                "src": "1563:6:16"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 6737,
                                "name": "Literal",
                                "src": "1573:1:16"
                              }
                            ],
                            "id": 6738,
                            "name": "BinaryOperation",
                            "src": "1563:11:16"
                          }
                        ],
                        "id": 6739,
                        "name": "FunctionCall",
                        "src": "1555:20:16"
                      }
                    ],
                    "id": 6740,
                    "name": "ExpressionStatement",
                    "src": "1555:20:16"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6998,
                              "type": "function (address,bytes memory)",
                              "value": "delegatedFwd"
                            },
                            "id": 6741,
                            "name": "Identifier",
                            "src": "1632:12:16"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6731,
                              "type": "address",
                              "value": "target"
                            },
                            "id": 6742,
                            "name": "Identifier",
                            "src": "1645:6:16"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "data",
                              "referencedDeclaration": null,
                              "type": "bytes calldata"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12590,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 6743,
                                "name": "Identifier",
                                "src": "1653:3:16"
                              }
                            ],
                            "id": 6744,
                            "name": "MemberAccess",
                            "src": "1653:8:16"
                          }
                        ],
                        "id": 6745,
                        "name": "FunctionCall",
                        "src": "1632:30:16"
                      }
                    ],
                    "id": 6746,
                    "name": "ExpressionStatement",
                    "src": "1632:30:16"
                  }
                ],
                "id": 6747,
                "name": "Block",
                "src": "1509:160:16"
              }
            ],
            "id": 6748,
            "name": "FunctionDefinition",
            "src": "1482:187:16"
          }
        ],
        "id": 6749,
        "name": "ContractDefinition",
        "src": "156:1515:16"
      }
    ],
    "id": 6750,
    "name": "SourceUnit",
    "src": "0:1671:16"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-03-14T08:41:25.088Z"
}