)]}'
{
  "commit": "ede6c82be8687fbd8ac1e537aae5c49ca4db1d4f",
  "tree": "7425c53e576cee845cde8e89347cc36dbaed065a",
  "parents": [
    "e01d9d3bf24f87b190adb9b63fbfc0fa9bd82458"
  ],
  "author": {
    "name": "Darryl L. Miles",
    "email": "darryl.miles@darrylmiles.org",
    "time": "Sat Apr 15 16:03:13 2023 +0000"
  },
  "committer": {
    "name": "Tim Edwards",
    "email": "tim@opencircuitdesign.com",
    "time": "Sat Apr 22 14:45:26 2023 -0400"
  },
  "message": "sky130_{ef,fd}_io*.lib: partial fix for unmatched end comment tokens\n\nAdd a line where necessary:\n  /* no_internal_power () {\n\nThis is what the perl script is doing.\n\nNone of these \u0027*/\u0027 sequences have a matching opening \u0027/*\u0027 before them.\n\n-#!/usr/bin/perl\nuse strict;\n\nmy @window;\n\nsub fix_window() {\n    my @n;\n    my $found \u003d 0;\n    while($_ \u003d shift(@window)) {\n        my $insert_after;\n        if(/^\\s*}\\s*/) {\n            $found++;\n            if($found \u003e 1) {\n                $found \u003d 0;\n                #next;  ## remove 2nd one found in window\n                $insert_after \u003d sprintf(\"\\t\\t\\t/* no_internal_power () {\\n\");\n            }\n        } else {\n            $found \u003d 0;\n        }\n        push(@n, $_);\n        push(@n, $insert_after) if($insert_after);\n    }\n    @window \u003d @n;\n    1;\n}\n\nwhile(\u003c\u003e) {\n    my $line \u003d $_;\n    if(/^(\\s+})\\*\\/$/) {\n        fix_window();\n        # can edit it here (but we want to keep \u0027*/\u0027)\n        #$line \u003d $1 . \"\\n\";\n    }\n\n    push(@window, $line);\n\n    if(scalar(@window) \u003e 11) {\n        $line \u003d shift @window;\n        print $line;\n    }\n}\n\nwhile($_ \u003d shift(@window)) {\n    print $_;\n}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8f5e64c3be64f35033ff7105956629a4c6cdbe5f",
      "old_mode": 33188,
      "old_path": "sky130/custom/sky130_fd_io/lib/sky130_ef_io__gpiov2_pad_wrapped_ff_ff_n40C_1v95_5v50_nointpwr.lib",
      "new_id": "5eab0c5aef682bcc47cbc3c48bba951af856a225",
      "new_mode": 33188,
      "new_path": "sky130/custom/sky130_fd_io/lib/sky130_ef_io__gpiov2_pad_wrapped_ff_ff_n40C_1v95_5v50_nointpwr.lib"
    },
    {
      "type": "modify",
      "old_id": "252c67010a34246bef967285bb8a8e5217d9b2a9",
      "old_mode": 33188,
      "old_path": "sky130/custom/sky130_fd_io/lib/sky130_ef_io__gpiov2_pad_wrapped_ss_ss_n40C_1v60_1v65_nointpwr.lib",
      "new_id": "b9d7610bea370a28eb3375210f5b4f69fd614e3b",
      "new_mode": 33188,
      "new_path": "sky130/custom/sky130_fd_io/lib/sky130_ef_io__gpiov2_pad_wrapped_ss_ss_n40C_1v60_1v65_nointpwr.lib"
    },
    {
      "type": "modify",
      "old_id": "e7ccfa14de4cdce4e0672ab026f50a868620dc2f",
      "old_mode": 33188,
      "old_path": "sky130/custom/sky130_fd_io/lib/sky130_fd_io__top_gpiov2_ff_ff_n40C_1v95_5v50_nointpwr.lib",
      "new_id": "cbb459d45e8812707263be9200602a1cabf35fb0",
      "new_mode": 33188,
      "new_path": "sky130/custom/sky130_fd_io/lib/sky130_fd_io__top_gpiov2_ff_ff_n40C_1v95_5v50_nointpwr.lib"
    },
    {
      "type": "modify",
      "old_id": "c8ca580f1b5045a15d6b1c1214a3485abe4d3a1d",
      "old_mode": 33188,
      "old_path": "sky130/custom/sky130_fd_io/lib/sky130_fd_io__top_gpiov2_ss_ss_n40C_1v60_1v65_nointpwr.lib",
      "new_id": "5e618248adb6021a558ee8332eaf27e06f0a83bc",
      "new_mode": 33188,
      "new_path": "sky130/custom/sky130_fd_io/lib/sky130_fd_io__top_gpiov2_ss_ss_n40C_1v60_1v65_nointpwr.lib"
    }
  ]
}
