{
  "contractName": "Initializable",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "appId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitializationBlock",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6060604052341561000f57600080fd5b61016c8061001e6000396000f300606060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806380afdea81461005c5780638b3dd7491461008d578063d4aae0c4146100b6575b600080fd5b341561006757600080fd5b61006f61010b565b60405180826000191660001916815260200191505060405180910390f35b341561009857600080fd5b6100a0610111565b6040518082815260200191505060405180910390f35b34156100c157600080fd5b6100c961011b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60015481565b6000600354905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a72305820219384e17df843911f80c0519e80bab3beebd405a68992f39aa579916b68c39e0029",
  "deployedBytecode": "0x606060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806380afdea81461005c5780638b3dd7491461008d578063d4aae0c4146100b6575b600080fd5b341561006757600080fd5b61006f61010b565b60405180826000191660001916815260200191505060405180910390f35b341561009857600080fd5b6100a0610111565b6040518082815260200191505060405180910390f35b34156100c157600080fd5b6100c961011b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60015481565b6000600354905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a72305820219384e17df843911f80c0519e80bab3beebd405a68992f39aa579916b68c39e0029",
  "sourceMap": "61:802:25:-;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "61:802:25:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;113:20:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;269:107:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;86:21:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;113:20;;;;:::o;269:107:25:-;324:7;350:19;;343:26;;269:107;:::o;86:21:19:-;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.4.18;\n\nimport \"../apps/AppStorage.sol\";\n\n\ncontract Initializable is AppStorage {\n    modifier onlyInit {\n        require(initializationBlock == 0);\n        _;\n    }\n\n    /**\n    * @return Block number in which the contract was initialized\n    */\n    function getInitializationBlock() public view returns (uint256) {\n        return initializationBlock;\n    }\n\n    /**\n    * @dev Function to be called by top level contract after initialization has finished.\n    */\n    function initialized() internal onlyInit {\n        initializationBlock = getBlockNumber();\n    }\n\n    /**\n    * @dev Returns the current block number.\n    *      Using a function rather than `block.number` allows us to easily mock the block number in\n    *      tests.\n    */\n    function getBlockNumber() internal view returns (uint256) {\n        return block.number;\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/common/Initializable.sol",
  "ast": {
    "attributes": {
      "absolutePath": "@aragon/os/contracts/common/Initializable.sol",
      "exportedSymbols": {
        "Initializable": [
          7261
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.4",
            ".18"
          ]
        },
        "id": 7219,
        "name": "PragmaDirective",
        "src": "0:24:25"
      },
      {
        "attributes": {
          "SourceUnit": 6871,
          "absolutePath": "@aragon/os/contracts/apps/AppStorage.sol",
          "file": "../apps/AppStorage.sol",
          "scope": 7262,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 7220,
        "name": "ImportDirective",
        "src": "26:32:25"
      },
      {
        "attributes": {
          "contractDependencies": [
            6870
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            7261,
            6870
          ],
          "name": "Initializable",
          "scope": 7262
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "AppStorage",
                  "referencedDeclaration": 6870,
                  "type": "contract AppStorage"
                },
                "id": 7221,
                "name": "UserDefinedTypeName",
                "src": "87:10:25"
              }
            ],
            "id": 7222,
            "name": "InheritanceSpecifier",
            "src": "87:10:25"
          },
          {
            "attributes": {
              "name": "onlyInit",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 7223,
                "name": "ParameterList",
                "src": "122:0:25"
              },
              {
                "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": 7224,
                            "name": "Identifier",
                            "src": "132:7:25"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6863,
                                  "type": "uint256",
                                  "value": "initializationBlock"
                                },
                                "id": 7225,
                                "name": "Identifier",
                                "src": "140:19:25"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 7226,
                                "name": "Literal",
                                "src": "163:1:25"
                              }
                            ],
                            "id": 7227,
                            "name": "BinaryOperation",
                            "src": "140:24:25"
                          }
                        ],
                        "id": 7228,
                        "name": "FunctionCall",
                        "src": "132:33:25"
                      }
                    ],
                    "id": 7229,
                    "name": "ExpressionStatement",
                    "src": "132:33:25"
                  },
                  {
                    "id": 7230,
                    "name": "PlaceholderStatement",
                    "src": "175:1:25"
                  }
                ],
                "id": 7231,
                "name": "Block",
                "src": "122:61:25"
              }
            ],
            "id": 7232,
            "name": "ModifierDefinition",
            "src": "104:79:25"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getInitializationBlock",
              "payable": false,
              "scope": 7261,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 7233,
                "name": "ParameterList",
                "src": "300:2:25"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 7240,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 7234,
                        "name": "ElementaryTypeName",
                        "src": "324:7:25"
                      }
                    ],
                    "id": 7235,
                    "name": "VariableDeclaration",
                    "src": "324:7:25"
                  }
                ],
                "id": 7236,
                "name": "ParameterList",
                "src": "323:9:25"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 7236
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 6863,
                          "type": "uint256",
                          "value": "initializationBlock"
                        },
                        "id": 7237,
                        "name": "Identifier",
                        "src": "350:19:25"
                      }
                    ],
                    "id": 7238,
                    "name": "Return",
                    "src": "343:26:25"
                  }
                ],
                "id": 7239,
                "name": "Block",
                "src": "333:43:25"
              }
            ],
            "id": 7240,
            "name": "FunctionDefinition",
            "src": "269:107:25"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "initialized",
              "payable": false,
              "scope": 7261,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 7241,
                "name": "ParameterList",
                "src": "507:2:25"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 7244,
                "name": "ParameterList",
                "src": "528:0:25"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 7232,
                      "type": "modifier ()",
                      "value": "onlyInit"
                    },
                    "id": 7242,
                    "name": "Identifier",
                    "src": "519:8:25"
                  }
                ],
                "id": 7243,
                "name": "ModifierInvocation",
                "src": "519:8:25"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6863,
                              "type": "uint256",
                              "value": "initializationBlock"
                            },
                            "id": 7245,
                            "name": "Identifier",
                            "src": "538:19:25"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7260,
                                  "type": "function () view returns (uint256)",
                                  "value": "getBlockNumber"
                                },
                                "id": 7246,
                                "name": "Identifier",
                                "src": "560:14:25"
                              }
                            ],
                            "id": 7247,
                            "name": "FunctionCall",
                            "src": "560:16:25"
                          }
                        ],
                        "id": 7248,
                        "name": "Assignment",
                        "src": "538:38:25"
                      }
                    ],
                    "id": 7249,
                    "name": "ExpressionStatement",
                    "src": "538:38:25"
                  }
                ],
                "id": 7250,
                "name": "Block",
                "src": "528:55:25"
              }
            ],
            "id": 7251,
            "name": "FunctionDefinition",
            "src": "487:96:25"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getBlockNumber",
              "payable": false,
              "scope": 7261,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 7252,
                "name": "ParameterList",
                "src": "790:2:25"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 7260,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 7253,
                        "name": "ElementaryTypeName",
                        "src": "816:7:25"
                      }
                    ],
                    "id": 7254,
                    "name": "VariableDeclaration",
                    "src": "816:7:25"
                  }
                ],
                "id": 7255,
                "name": "ParameterList",
                "src": "815:9:25"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 7255
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "number",
                          "referencedDeclaration": null,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12582,
                              "type": "block",
                              "value": "block"
                            },
                            "id": 7256,
                            "name": "Identifier",
                            "src": "842:5:25"
                          }
                        ],
                        "id": 7257,
                        "name": "MemberAccess",
                        "src": "842:12:25"
                      }
                    ],
                    "id": 7258,
                    "name": "Return",
                    "src": "835:19:25"
                  }
                ],
                "id": 7259,
                "name": "Block",
                "src": "825:36:25"
              }
            ],
            "id": 7260,
            "name": "FunctionDefinition",
            "src": "767:94:25"
          }
        ],
        "id": 7261,
        "name": "ContractDefinition",
        "src": "61:802:25"
      }
    ],
    "id": 7262,
    "name": "SourceUnit",
    "src": "0:864:25"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-03-14T08:41:25.090Z"
}