{
  "fileName": "SingleInheritanceInitializableMocks.sol",
  "contractName": "MigratableMockV2",
  "source": "pragma solidity ^0.6.0;\n// SPDX-License-Identifier: MIT\n\nimport '../Initializable.sol';\n\n/**\n * @title MigratableMockV1\n * @dev This contract is a mock to test initializable functionality through migrations\n */\ncontract MigratableMockV1 is Initializable {\n  uint256 public x;\n\n  function initialize(uint256 value) initializer public payable {\n    x = value;\n  }\n}\n\n/**\n * @title MigratableMockV2\n * @dev This contract is a mock to test migratable functionality with params\n */\ncontract MigratableMockV2 is MigratableMockV1 {\n  bool migratedV2;\n  uint256 public y;\n\n  function migrate(uint256 value, uint256 anotherValue) public payable {\n    require(!migratedV2);\n    x = value;\n    y = anotherValue;\n    migratedV2 = true;\n  }\n}\n\n/**\n * @title MigratableMockV3\n * @dev This contract is a mock to test migratable functionality without params\n */\ncontract MigratableMockV3 is MigratableMockV2 {\n  bool migratedV3;\n\n  function migrate() public payable {\n    require(!migratedV3);\n    uint256 oldX = x;\n    x = y;\n    y = oldX;\n    migratedV3 = true;\n  }\n}\n",
  "sourcePath": "contracts/mocks/SingleInheritanceInitializableMocks.sol",
  "sourceMap": "477:252:17:-:0;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "477:252:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;258:16;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;567:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;546:16;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;279:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;258:16;;;;;;:::o;567:160::-;651:10;;;;;;;;;;;650:11;642:20;;;;;;;;672:5;668:1;;:9;;;;;;;687:12;683:1;;:16;;;;;;;718:4;705:10;;:17;;;;;;;;;;;;;;;;;;567:160;;;:::o;546:16::-;;;;;;:::o;279:82::-;1056:12:0;;;;;;;;;;;:31;;;;1072:15;:13;:15;;:::i;:::-;1056:31;:47;;;;1092:11;;;;;;;;;;;1091:12;1056:47;1048:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1161:19;1184:12;;;;;;;;;;;1183:13;1161:35;;1206:14;1202:80;;;1245:4;1230:12;;:19;;;;;;;;;;;;;;;;;;1271:4;1257:11;;:18;;;;;;;;;;;;;;;;;;1202:80;351:5:17::1;347:1;;:9;;;;;;;1288:1:0;1300:14:::0;1296:55;;;1339:5;1324:12;;:20;;;;;;;;;;;;;;;;;;1296:55;279:82:17;;;:::o;1441:498:0:-;1488:4;1829:12;1852:4;1829:28;;1863:10;1908:4;1896:17;1890:23;;1933:1;1927:2;:7;1920:14;;;;;;1441:498;;;;:::o",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "anotherValue",
          "type": "uint256"
        }
      ],
      "name": "migrate",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "x",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "y",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "ast": {
    "absolutePath": "contracts/mocks/SingleInheritanceInitializableMocks.sol",
    "exportedSymbols": {
      "MigratableMockV1": [
        4521
      ],
      "MigratableMockV2": [
        4554
      ],
      "MigratableMockV3": [
        4585
      ]
    },
    "id": 4586,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4502,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:17"
      },
      {
        "absolutePath": "contracts/Initializable.sol",
        "file": "../Initializable.sol",
        "id": 4503,
        "nodeType": "ImportDirective",
        "scope": 4586,
        "sourceUnit": 75,
        "src": "57:30:17",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4505,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 74,
              "src": "240:13:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$74",
                "typeString": "contract Initializable"
              }
            },
            "id": 4506,
            "nodeType": "InheritanceSpecifier",
            "src": "240:13:17"
          }
        ],
        "contractDependencies": [
          74
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 4504,
          "nodeType": "StructuredDocumentation",
          "src": "89:121:17",
          "text": " @title MigratableMockV1\n @dev This contract is a mock to test initializable functionality through migrations"
        },
        "fullyImplemented": true,
        "id": 4521,
        "linearizedBaseContracts": [
          4521,
          74
        ],
        "name": "MigratableMockV1",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "0c55699c",
            "id": 4508,
            "mutability": "mutable",
            "name": "x",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4521,
            "src": "258:16:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4507,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "258:7:17",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4519,
              "nodeType": "Block",
              "src": "341:20:17",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4517,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4515,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4508,
                      "src": "347:1:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4516,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4510,
                      "src": "351:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "347:9:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4518,
                  "nodeType": "ExpressionStatement",
                  "src": "347:9:17"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "fe4b84df",
            "id": 4520,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4513,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4512,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 47,
                  "src": "314:11:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "314:11:17"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4511,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4510,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4520,
                  "src": "299:13:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4509,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "299:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "298:15:17"
            },
            "returnParameters": {
              "id": 4514,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "341:0:17"
            },
            "scope": 4521,
            "src": "279:82:17",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 4586,
        "src": "211:152:17"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4523,
              "name": "MigratableMockV1",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4521,
              "src": "506:16:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MigratableMockV1_$4521",
                "typeString": "contract MigratableMockV1"
              }
            },
            "id": 4524,
            "nodeType": "InheritanceSpecifier",
            "src": "506:16:17"
          }
        ],
        "contractDependencies": [
          74,
          4521
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 4522,
          "nodeType": "StructuredDocumentation",
          "src": "365:111:17",
          "text": " @title MigratableMockV2\n @dev This contract is a mock to test migratable functionality with params"
        },
        "fullyImplemented": true,
        "id": 4554,
        "linearizedBaseContracts": [
          4554,
          4521,
          74
        ],
        "name": "MigratableMockV2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 4526,
            "mutability": "mutable",
            "name": "migratedV2",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4554,
            "src": "527:15:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 4525,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "527:4:17",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "functionSelector": "a56dfe4a",
            "id": 4528,
            "mutability": "mutable",
            "name": "y",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4554,
            "src": "546:16:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4527,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "546:7:17",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4552,
              "nodeType": "Block",
              "src": "636:91:17",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4537,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "650:11:17",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 4536,
                          "name": "migratedV2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4526,
                          "src": "651:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4535,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "642:7:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "642:20:17",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4539,
                  "nodeType": "ExpressionStatement",
                  "src": "642:20:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4542,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4540,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4508,
                      "src": "668:1:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4541,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4530,
                      "src": "672:5:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "668:9:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4543,
                  "nodeType": "ExpressionStatement",
                  "src": "668:9:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4546,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4544,
                      "name": "y",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4528,
                      "src": "683:1:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4545,
                      "name": "anotherValue",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4532,
                      "src": "687:12:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "683:16:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4547,
                  "nodeType": "ExpressionStatement",
                  "src": "683:16:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4548,
                      "name": "migratedV2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4526,
                      "src": "705:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4549,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "718:4:17",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "705:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4551,
                  "nodeType": "ExpressionStatement",
                  "src": "705:17:17"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "3e54bacb",
            "id": 4553,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "migrate",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4533,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4530,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4553,
                  "src": "584:13:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4529,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "584:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4532,
                  "mutability": "mutable",
                  "name": "anotherValue",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4553,
                  "src": "599:20:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4531,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "599:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "583:37:17"
            },
            "returnParameters": {
              "id": 4534,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "636:0:17"
            },
            "scope": 4554,
            "src": "567:160:17",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 4586,
        "src": "477:252:17"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4556,
              "name": "MigratableMockV2",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4554,
              "src": "875:16:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MigratableMockV2_$4554",
                "typeString": "contract MigratableMockV2"
              }
            },
            "id": 4557,
            "nodeType": "InheritanceSpecifier",
            "src": "875:16:17"
          }
        ],
        "contractDependencies": [
          74,
          4521,
          4554
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 4555,
          "nodeType": "StructuredDocumentation",
          "src": "731:114:17",
          "text": " @title MigratableMockV3\n @dev This contract is a mock to test migratable functionality without params"
        },
        "fullyImplemented": true,
        "id": 4585,
        "linearizedBaseContracts": [
          4585,
          4554,
          4521,
          74
        ],
        "name": "MigratableMockV3",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 4559,
            "mutability": "mutable",
            "name": "migratedV3",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4585,
            "src": "896:15:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 4558,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "896:4:17",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4583,
              "nodeType": "Block",
              "src": "950:101:17",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4564,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "964:11:17",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 4563,
                          "name": "migratedV3",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4559,
                          "src": "965:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4562,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "956:7:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4565,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "956:20:17",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4566,
                  "nodeType": "ExpressionStatement",
                  "src": "956:20:17"
                },
                {
                  "assignments": [
                    4568
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4568,
                      "mutability": "mutable",
                      "name": "oldX",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4583,
                      "src": "982:12:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4567,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "982:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4570,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 4569,
                    "name": "x",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4508,
                    "src": "997:1:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "982:16:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4573,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4571,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4508,
                      "src": "1004:1:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4572,
                      "name": "y",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4528,
                      "src": "1008:1:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1004:5:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4574,
                  "nodeType": "ExpressionStatement",
                  "src": "1004:5:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4575,
                      "name": "y",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4528,
                      "src": "1015:1:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4576,
                      "name": "oldX",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4568,
                      "src": "1019:4:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1015:8:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4578,
                  "nodeType": "ExpressionStatement",
                  "src": "1015:8:17"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4581,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4579,
                      "name": "migratedV3",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4559,
                      "src": "1029:10:17",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4580,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1042:4:17",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1029:17:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4582,
                  "nodeType": "ExpressionStatement",
                  "src": "1029:17:17"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "8fd3ab80",
            "id": 4584,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "migrate",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4560,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "932:2:17"
            },
            "returnParameters": {
              "id": 4561,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "950:0:17"
            },
            "scope": 4585,
            "src": "916:135:17",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 4586,
        "src": "846:207:17"
      }
    ],
    "src": "0:1054:17"
  },
  "bytecode": "0x60806040523480156100115760006000fd5b50610017565b61030d806100266000396000f3fe6080604052600436106100435760003560e01c80630c55699c146100495780633e54bacb14610075578063a56dfe4a146100ae578063fe4b84df146100da57610043565b60006000fd5b3480156100565760006000fd5b5061005f610109565b6040518082815260200191505060405180910390f35b6100ac6004803603604081101561008c5760006000fd5b810190808035906020019092919080359060200190929190505050610112565b005b3480156100bb5760006000fd5b506100c4610167565b6040518082815260200191505060405180910390f35b610107600480360360208110156100f15760006000fd5b8101908080359060200190929190505050610170565b005b60336000505481565b603460009054906101000a900460ff1615151561012f5760006000fd5b8160336000508190909055508060356000508190909055506001603460006101000a81548160ff0219169083151502179055505b5050565b60356000505481565b600060019054906101000a900460ff1680610195575061019461028a63ffffffff16565b5b806101ad5750600060009054906101000a900460ff16155b1515610204576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806102aa602e913960400191505060405180910390fd5b6000600060019054906101000a900460ff161590508015610256576001600060016101000a81548160ff0219169083151502179055506001600060006101000a81548160ff0219169083151502179055505b8160336000508190909055505b8015610285576000600060016101000a81548160ff0219169083151502179055505b505b50565b600060003090506000813b905060008114925050506102a65650505b9056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a2646970667358221220e0b87689054f265a85fcae2141679f38107c4c51944ffc0608369a8dd7e03c1364736f6c634300060a0033",
  "deployedBytecode": "0x6080604052600436106100435760003560e01c80630c55699c146100495780633e54bacb14610075578063a56dfe4a146100ae578063fe4b84df146100da57610043565b60006000fd5b3480156100565760006000fd5b5061005f610109565b6040518082815260200191505060405180910390f35b6100ac6004803603604081101561008c5760006000fd5b810190808035906020019092919080359060200190929190505050610112565b005b3480156100bb5760006000fd5b506100c4610167565b6040518082815260200191505060405180910390f35b610107600480360360208110156100f15760006000fd5b8101908080359060200190929190505050610170565b005b60336000505481565b603460009054906101000a900460ff1615151561012f5760006000fd5b8160336000508190909055508060356000508190909055506001603460006101000a81548160ff0219169083151502179055505b5050565b60356000505481565b600060019054906101000a900460ff1680610195575061019461028a63ffffffff16565b5b806101ad5750600060009054906101000a900460ff16155b1515610204576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806102aa602e913960400191505060405180910390fd5b6000600060019054906101000a900460ff161590508015610256576001600060016101000a81548160ff0219169083151502179055506001600060006101000a81548160ff0219169083151502179055505b8160336000508190909055505b8015610285576000600060016101000a81548160ff0219169083151502179055505b505b50565b600060003090506000813b905060008114925050506102a65650505b9056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a2646970667358221220e0b87689054f265a85fcae2141679f38107c4c51944ffc0608369a8dd7e03c1364736f6c634300060a0033",
  "compiler": {
    "name": "solc",
    "version": "0.6.10+commit.00c0fcaf.Emscripten.clang",
    "optimizer": {},
    "evmVersion": "constantinople"
  }
}
