← Commit history

Component record for msash168sc7224ktca01: files batch 1

John Lauer ·370779cc81 ·1d ago ·parent 2c4eb7c
58 files changed +18197−2
C_0603_1608Metric_MSASH168SC7224KTCA01.kicad_mod+112LICENSE+14MSASH168SC7224KTCA01.adom-lbr.json+227MSASH168SC7224KTCA01.kicad_sym+24MSASH168SC7224KTCA01.lbr+109MSASH168SC7224KTCA01.step+586README.md+170−2altium/MSASH168SC7224KTCA01.PcbLibaltium/MSASH168SC7224KTCA01.SchLibdocs/figures/figures.json+93docs/figures/ty-cat-p1-part-number.pngdocs/figures/ty-cat-p2-dimension-tolerance.pngdocs/figures/ty-cat-p3-temperature.pngdocs/figures/ty-cat-p4-capacitance-packaging.pngdocs/figures/ty-cat-p5-dimensions.pngdocs/figures/ty-cat-p6-quantity.pngdocs/figures/ty-chars-p1.pngdocs/hero.pngdocs/models/step-plain.pngdocs/msash168sc7224ktca01-characteristics.pdfdocs/msash168sc7224ktca01-datasheet.pdfdocs/taiyo-yuden-mlcc-packaging.pdfdocs/verify/hero-preview.pngdocs/verify/msash168sc7224ktca01-check.json+51docs/verify/msash168sc7224ktca01-overlay.pngland-pattern/README.md+32land-pattern/land-check.json+45land-pattern/land-pattern-icon.pngland-pattern/land-pattern.pnglod/high.glblod/high.pnglod/low.glblod/low.pnglod/manifest.json+178lod/medium.glblod/medium.pnglod/super-low.glblod/super-low.pngmodels.json+163msash168sc7224ktca01-hero.glbmsash168sc7224ktca01-hero.overlay.json+125package-reference.glbpackage.json+10provenance.json+346provenance/manufacturer/MSASH168SC7224KTCA01-land.dxf+13650provenance/tools/build.py+128provenance/tools/finish.py+49provenance/tools/landcheck.py+116provenance/tools/lod.py+199provenance/tools/msash168sc7224ktca01-overlay-spec.json+40provenance/tools/ortho.py+133provenance/tools/overlay_chip.py+159provenance/tools/parts.py+48provenance/tools/push.sh+34provenance/tools/records.py+409provenance/tools/verify_live.py+35vendor/MSASH168SC7224KTCA01-taiyo-yuden-original.step+586verification.json+326
C_0603_1608Metric_MSASH168SC7224KTCA01.kicad_modadded+112
@@ -0,0 +1,112 @@+(footprint "C_0603_1608Metric_MSASH168SC7224KTCA01"+	(version 20260206)+	(generator "kicad-footprint-generator")+	(layer "F.Cu")+	(descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)")+	(tags "capacitor")+	(property "Reference" "REF**"+		(at 0 -1.43 0)+		(layer "F.SilkS")+		(effects+			(font+				(size 1 1)+				(thickness 0.15)+			)+		)+	)+	(property "Value" "C_0603_1608Metric"+		(at 0 1.43 0)+		(layer "F.Fab")+		(effects+			(font+				(size 1 1)+				(thickness 0.15)+			)+		)+	)+	(property "KiLib_Generator" "SMD_2terminal_chip_molded"+		(at 0 0 0)+		(layer "F.SilkS")+		(hide yes)+		(effects+			(font+				(size 1 1)+				(thickness 0.15)+			)+		)+	)+	(attr smd)+	(duplicate_pad_numbers_are_jumpers no)+	(fp_line+		(start -0.14058 -0.51)+		(end 0.14058 -0.51)+		(stroke+			(width 0.12)+			(type solid)+		)+		(layer "F.SilkS")+	)+	(fp_line+		(start -0.14058 0.51)+		(end 0.14058 0.51)+		(stroke+			(width 0.12)+			(type solid)+		)+		(layer "F.SilkS")+	)+	(fp_rect+		(start -1.48 -0.73)+		(end 1.48 0.73)+		(stroke+			(width 0.05)+			(type solid)+		)+		(fill no)+		(layer "F.CrtYd")+	)+	(fp_rect+		(start -0.8 -0.4)+		(end 0.8 0.4)+		(stroke+			(width 0.1)+			(type solid)+		)+		(fill no)+		(layer "F.Fab")+	)+	(fp_text user "${REFERENCE}"+		(at 0 0 0)+		(layer "F.Fab")+		(effects+			(font+				(size 0.4 0.4)+				(thickness 0.06)+			)+		)+	)+	(pad "1" smd roundrect+		(at -0.775 0)+		(size 0.9 0.95)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(pad "2" smd roundrect+		(at 0.775 0)+		(size 0.9 0.95)+		(layers "F.Cu" "F.Mask" "F.Paste")+		(roundrect_rratio 0.25)+	)+	(embedded_fonts no)+	(model "${KIPRJMOD}/MSASH168SC7224KTCA01.step"+		(offset+			(xyz 0 0 0)+		)+		(scale+			(xyz 1 1 1)+		)+		(rotate+			(xyz 0 0 0)+		)+	)+)
LICENSEadded+14
@@ -0,0 +1,14 @@+MSASH168SC7224KTCA01 component page++Original Adom content on this page (README text, the KiCad symbol MSASH168SC7224KTCA01.kicad_sym, the verification+drawings, the JSON records and the scripts in provenance/tools/) is licensed under the Creative+Commons Attribution 4.0 International License (CC-BY-4.0): https://creativecommons.org/licenses/by/4.0/++Third-party files keep their own terms and are not relicensed by this page:+- MSASH168SC7224KTCA01.step, vendor/MSASH168SC7224KTCA01-taiyo-yuden-original.step, provenance/manufacturer/MSASH168SC7224KTCA01-land.dxf and every model derived from the STEP (package-reference.glb,+  msash168sc7224ktca01-hero.glb, lod/*.glb, the body inside altium/MSASH168SC7224KTCA01.PcbLib) are Taiyo Yuden's 3D and land+  data, provided on Taiyo Yuden's product page, under Taiyo Yuden's terms.+- C_0603_1608Metric_MSASH168SC7224KTCA01.kicad_mod is KiCad library content, CC-BY-SA 4.0 with the KiCad library exception+  (https://gitlab.com/kicad/libraries/kicad-footprints); the footprint inside MSASH168SC7224KTCA01.lbr and altium/MSASH168SC7224KTCA01.PcbLib keeps that license.+- The PDFs in docs/ and the page crops in docs/figures/ are Taiyo Yuden documents, copyright of+  TAIYO YUDEN CO., LTD., included unchanged (or cropped) for reference.
MSASH168SC7224KTCA01.adom-lbr.jsonadded+227
@@ -0,0 +1,227 @@+{+  "schema_version": 2,+  "mpn": "MSASH168SC7224KTCA01",+  "manufacturer": "Taiyo Yuden",+  "package": "",+  "value": "",+  "category": "",+  "symbol": {+    "name": "MSASH168SC7224KTCA01",+    "pins": [+      {+        "number": "1",+        "name": "",+        "x": 0,+        "y": 100,+        "length": 70,+        "rotation": 270,+        "electrical_type": "passive"+      },+      {+        "number": "2",+        "name": "",+        "x": 0,+        "y": -100,+        "length": 70,+        "rotation": 90,+        "electrical_type": "passive"+      }+    ],+    "body": null,+    "graphics": [+      {+        "kind": "polyline",+        "points": [+          [+            -80.0,+            -30.0+          ],+          [+            80.0,+            -30.0+          ]+        ],+        "width": 20.0+      },+      {+        "kind": "polyline",+        "points": [+          [+            -80.0,+            30.0+          ],+          [+            80.0,+            30.0+          ]+        ],+        "width": 20.0+      }+    ],+    "designator_prefix": "C",+    "footprint": "C_0603_1608Metric_MSASH168SC7224KTCA01",+    "parameters": [+      {+        "name": "Value",+        "value": "220n",+        "visible": true+      },+      {+        "name": "Datasheet",+        "value": "https://ds.yuden.co.jp/TYCOMPAS/ut/detail?pn=MSASH168SC7224KTCA01&u=M",+        "visible": false+      },+      {+        "name": "Description",+        "value": "MLCC 0.22 uF +/-10 %, 100 V, X7S, 0603 (1608 metric)",+        "visible": false+      },+      {+        "name": "MPN",+        "value": "MSASH168SC7224KTCA01",+        "visible": false+      },+      {+        "name": "Manufacturer",+        "value": "Taiyo Yuden",+        "visible": false+      },+      {+        "name": "Mouser",+        "value": "963-MSASH168SC7224KT",+        "visible": false+      },+      {+        "name": "DigiKey",+        "value": "587-MSASH168SC7224KTCA01TR-ND",+        "visible": false+      },+      {+        "name": "LCSC",+        "value": "",+        "visible": false+      },+      {+        "name": "Adom Wiki",+        "value": "https://wiki.adom.inc/adom/msash168sc7224ktca01",+        "visible": false+      },+      {+        "name": "ki_keywords",+        "value": "capacitor mlcc 0603 100V X7S MSASH168SC7224KTCA01 HMK107C7224KA-TE",+        "visible": false+      },+      {+        "name": "Supplier 1",+        "value": "Mouser",+        "visible": false+      },+      {+        "name": "Supplier Part Number 1",+        "value": "963-MSASH168SC7224KT",+        "visible": false+      },+      {+        "name": "Supplier 2",+        "value": "Digi-Key",+        "visible": false+      },+      {+        "name": "Supplier Part Number 2",+        "value": "587-MSASH168SC7224KTCA01TR-ND",+        "visible": false+      },+      {+        "name": "Manufacturer Part Number",+        "value": "MSASH168SC7224KTCA01",+        "visible": false+      }+    ],+    "pin_numbers_hidden": true,+    "pin_names_hidden": true+  },+  "footprint": {+    "name": "C_0603_1608Metric_MSASH168SC7224KTCA01",+    "pads": [+      {+        "number": "1",+        "x_mm": -0.775,+        "y_mm": 0.0,+        "w_mm": 0.9,+        "h_mm": 0.95,+        "drill_mm": 0.0,+        "rotation": 0.0,+        "shape": "roundrect"+      },+      {+        "number": "2",+        "x_mm": 0.775,+        "y_mm": 0.0,+        "w_mm": 0.9,+        "h_mm": 0.95,+        "drill_mm": 0.0,+        "rotation": 0.0,+        "shape": "roundrect"+      }+    ],+    "graphics": [+      {+        "kind": "line",+        "layer": {+          "role": "silk"+        },+        "x1": -0.14058,+        "y1": -0.51,+        "x2": 0.14058,+        "y2": -0.51,+        "width": 0.12+      },+      {+        "kind": "line",+        "layer": {+          "role": "silk"+        },+        "x1": -0.14058,+        "y1": 0.51,+        "x2": 0.14058,+        "y2": 0.51,+        "width": 0.12+      },+      {+        "kind": "rect",+        "layer": {+          "role": "courtyard"+        },+        "x1": -1.48,+        "y1": -0.73,+        "x2": 1.48,+        "y2": 0.73,+        "width": 0.05+      },+      {+        "kind": "rect",+        "layer": {+          "role": "fab"+        },+        "x1": -0.8,+        "y1": -0.4,+        "x2": 0.8,+        "y2": 0.4,+        "width": 0.1+      }+    ]+  },+  "connect": [+    {+      "pin": "1",+      "pad": "1"+    },+    {+      "pin": "2",+      "pad": "2"+    }+  ],+  "provenance": {+    "source": "kicad_import"+  }+}\ No newline at end of file
MSASH168SC7224KTCA01.kicad_symadded+24
@@ -0,0 +1,24 @@+(kicad_symbol_lib (version 20241209) (generator "adom_passive_symbol")+  (symbol "MSASH168SC7224KTCA01" (pin_numbers (hide yes)) (pin_names (offset 0.254) (hide yes)) (exclude_from_sim no) (in_bom yes) (on_board yes)+    (property "Reference" "C" (at 2.54 1.27 0) (effects (font (size 1.27 1.27)) (justify left)))+    (property "Value" "220n" (at 2.54 -1.27 0) (effects (font (size 1.27 1.27)) (justify left)))+    (property "Footprint" "C_0603_1608Metric_MSASH168SC7224KTCA01" (at 0 -7.62 0) (effects (font (size 1.27 1.27)) hide))+    (property "Datasheet" "https://ds.yuden.co.jp/TYCOMPAS/ut/detail?pn=MSASH168SC7224KTCA01&u=M" (at 0 -10.16 0) (effects (font (size 1.27 1.27)) hide))+    (property "Description" "MLCC 0.22 uF +/-10 %, 100 V, X7S, 0603 (1608 metric)" (at 0 -12.7 0) (effects (font (size 1.27 1.27)) hide))+    (property "MPN" "MSASH168SC7224KTCA01" (at 0 -15.24 0) (effects (font (size 1.27 1.27)) hide))+    (property "Manufacturer" "Taiyo Yuden" (at 0 -17.78 0) (effects (font (size 1.27 1.27)) hide))+    (property "Mouser" "963-MSASH168SC7224KT" (at 0 -20.32 0) (effects (font (size 1.27 1.27)) hide))+    (property "DigiKey" "587-MSASH168SC7224KTCA01TR-ND" (at 0 -22.86 0) (effects (font (size 1.27 1.27)) hide))+    (property "LCSC" "" (at 0 -25.4 0) (effects (font (size 1.27 1.27)) hide))+    (property "Adom Wiki" "https://wiki.adom.inc/adom/msash168sc7224ktca01" (at 0 -27.94 0) (effects (font (size 1.27 1.27)) hide))+    (property "ki_keywords" "capacitor mlcc 0603 100V X7S MSASH168SC7224KTCA01 HMK107C7224KA-TE" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))+    (symbol "MSASH168SC7224KTCA01_0_1"+      (polyline (pts (xy -2.032 -0.762) (xy 2.032 -0.762)) (stroke (width 0.508) (type default)) (fill (type none)))+      (polyline (pts (xy -2.032 0.762) (xy 2.032 0.762)) (stroke (width 0.508) (type default)) (fill (type none)))+    )+    (symbol "MSASH168SC7224KTCA01_1_1"+      (pin passive line (at 0 2.54 270) (length 1.778) (name "~" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))))+      (pin passive line (at 0 -2.54 90) (length 1.778) (name "~" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))))+    )+  )+)
MSASH168SC7224KTCA01.lbradded+109
@@ -0,0 +1,109 @@+<?xml version="1.0" encoding="utf-8"?>+<!DOCTYPE eagle SYSTEM "eagle.dtd">+<eagle version="9.6.2">+<drawing>+<settings><setting alwaysvectorfont="no"/></settings>+<grid distance="0.1" unitdist="inch" unit="inch" style="lines" multiple="1" display="no" altdistance="0.01" altunitdist="inch" altunit="inch"/>+<layers>+<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>+<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>+<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="yes"/>+<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="yes"/>+<layer number="19" name="Unrouted" color="6" fill="1" visible="yes" active="yes"/>+<layer number="20" name="Dimension" color="15" fill="1" visible="yes" active="yes"/>+<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="yes"/>+<layer number="22" name="bPlace" color="7" fill="1" visible="yes" active="yes"/>+<layer number="23" name="tOrigins" color="15" fill="1" visible="yes" active="yes"/>+<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="yes"/>+<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="yes"/>+<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="yes"/>+<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="yes"/>+<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="yes"/>+<layer number="29" name="tStop" color="7" fill="3" visible="no" active="yes"/>+<layer number="30" name="bStop" color="7" fill="6" visible="no" active="yes"/>+<layer number="31" name="tCream" color="7" fill="4" visible="no" active="yes"/>+<layer number="32" name="bCream" color="7" fill="5" visible="no" active="yes"/>+<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="yes"/>+<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="yes"/>+<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="yes"/>+<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="yes"/>+<layer number="37" name="tTest" color="7" fill="1" visible="no" active="yes"/>+<layer number="38" name="bTest" color="7" fill="1" visible="no" active="yes"/>+<layer number="39" name="tKeepout" color="4" fill="11" visible="no" active="yes"/>+<layer number="40" name="bKeepout" color="1" fill="11" visible="no" active="yes"/>+<layer number="41" name="tRestrict" color="4" fill="10" visible="no" active="yes"/>+<layer number="42" name="bRestrict" color="1" fill="10" visible="no" active="yes"/>+<layer number="43" name="vRestrict" color="2" fill="10" visible="no" active="yes"/>+<layer number="44" name="Drills" color="7" fill="1" visible="no" active="yes"/>+<layer number="45" name="Holes" color="7" fill="1" visible="no" active="yes"/>+<layer number="46" name="Milling" color="3" fill="1" visible="no" active="yes"/>+<layer number="47" name="Measures" color="7" fill="1" visible="no" active="yes"/>+<layer number="48" name="Document" color="7" fill="1" visible="yes" active="yes"/>+<layer number="49" name="Reference" color="7" fill="1" visible="yes" active="yes"/>+<layer number="91" name="Nets" color="2" fill="1" visible="yes" active="yes"/>+<layer number="92" name="Busses" color="1" fill="1" visible="yes" active="yes"/>+<layer number="93" name="Pins" color="2" fill="1" visible="no" active="yes"/>+<layer number="94" name="Symbols" color="4" fill="1" visible="yes" active="yes"/>+<layer number="95" name="Names" color="7" fill="1" visible="yes" active="yes"/>+<layer number="96" name="Values" color="7" fill="1" visible="yes" active="yes"/>+<layer number="97" name="Info" color="7" fill="1" visible="yes" active="yes"/>+<layer number="98" name="Guide" color="6" fill="1" visible="yes" active="yes"/>+</layers>+<library>+<description>MLCC 0.22 uF +/-10 %, 100 V, X7S, 0603 (1608 metric)</description>+<packages>+<package name="C_0603_1608Metric_MSASH168SC7224KTCA01">+  <description>2 pads, 2.5 x 0.9 mm. Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC-7351 nominal</description>+  <smd name="1" x="-0.7750" y="-0.0000" dx="0.9000" dy="0.9500" layer="1" roundness="50"/>+  <smd name="2" x="0.7750" y="-0.0000" dx="0.9000" dy="0.9500" layer="1" roundness="50"/>+  <wire x1="-0.8000" y1="0.4000" x2="0.8000" y2="0.4000" width="0.1000" layer="51"/>+  <wire x1="0.8000" y1="0.4000" x2="0.8000" y2="-0.4000" width="0.1000" layer="51"/>+  <wire x1="0.8000" y1="-0.4000" x2="-0.8000" y2="-0.4000" width="0.1000" layer="51"/>+  <wire x1="-0.8000" y1="-0.4000" x2="-0.8000" y2="0.4000" width="0.1000" layer="51"/>+  <wire x1="-0.1406" y1="0.5100" x2="0.1406" y2="0.5100" width="0.1200" layer="21"/>+  <wire x1="-0.1406" y1="-0.5100" x2="0.1406" y2="-0.5100" width="0.1200" layer="21"/>+  <text x="0" y="1.110" size="1.27" layer="25" align="bottom-center">&gt;NAME</text>+  <text x="0" y="-1.110" size="1.27" layer="27" align="top-center">&gt;VALUE</text>+</package>+</packages>+<symbols>+<symbol name="MSASH168SC7224KTCA01">+  <description>MLCC 0.22 uF +/-10 %, 100 V, X7S, 0603 (1608 metric)</description>+  <wire x1="-2.0320" y1="-0.7620" x2="2.0320" y2="-0.7620" width="0.5080" layer="94"/>+  <wire x1="-2.0320" y1="0.7620" x2="2.0320" y2="0.7620" width="0.5080" layer="94"/>+  <text x="2.5400" y="1.2700" size="1.27" layer="95" align="center">&gt;NAME</text>+  <text x="2.5400" y="-1.2700" size="1.27" layer="96" align="center">&gt;VALUE</text>+  <wire x1="0.0000" y1="2.5400" x2="0.0000" y2="0.7620" width="0.254" layer="94"/>+  <pin name="1" x="0" y="2.54" length="point" direction="pas" rot="R270" visible="pad"/>+  <wire x1="0.0000" y1="-2.5400" x2="0.0000" y2="-0.7620" width="0.254" layer="94"/>+  <pin name="2" x="0" y="-2.54" length="point" direction="pas" rot="R90" visible="pad"/>+</symbol>+</symbols>+<devicesets>+<deviceset name="MSASH168SC7224KTCA01" prefix="C">+  <description>MLCC 0.22 uF +/-10 %, 100 V, X7S, 0603 (1608 metric)</description>+  <gates>+    <gate name="G$1" symbol="MSASH168SC7224KTCA01" x="0" y="0"/>+  </gates>+  <devices>+    <device name="" package="C_0603_1608Metric_MSASH168SC7224KTCA01">+      <connects>+        <connect gate="G$1" pin="1" pad="1"/>+        <connect gate="G$1" pin="2" pad="2"/>+      </connects>+      <technologies>+        <technology name="">+          <attribute name="MPN" value="MSASH168SC7224KTCA01" constant="no"/>+          <attribute name="MANUFACTURER" value="Taiyo Yuden" constant="no"/>+          <attribute name="ADOM_WIKI" value="https://wiki.adom.inc/adom/msash168sc7224ktca01" constant="no"/>+          <attribute name="MOUSER_PN" value="963-MSASH168SC7224KT" constant="no"/>+          <attribute name="DIGIKEY_PN" value="587-MSASH168SC7224KTCA01TR-ND" constant="no"/>+        </technology>+      </technologies>+    </device>+  </devices>+</deviceset>+</devicesets>+</library>+</drawing>+</eagle>\ No newline at end of file
MSASH168SC7224KTCA01.stepadded+586
@@ -0,0 +1,586 @@+ISO-10303-21;
+HEADER;
+/* Generated by software containing ST-Developer
+ * from STEP Tools, Inc. (www.steptools.com) 
+ */
+
+FILE_DESCRIPTION(
+/* description */ (''),
+/* implementation_level */ '2;1');
+
+FILE_NAME(
+/* name */ 'C:\\Users\\user\\Desktop\\TScad\\stp\\s1_1608_90.stp',
+/* time_stamp */ '2022-05-10T16:36:15+09:00',
+/* author */ ('user'),
+/* organization */ (''),
+/* preprocessor_version */ 'ST-DEVELOPER v18.1',
+/* originating_system */ 'Autodesk Inventor 2021',
+/* authorisation */ '');
+
+FILE_SCHEMA (('AUTOMOTIVE_DESIGN { 1 0 10303 214 3 1 1 }'));
+ENDSEC;
+
+DATA;
+#10=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#274,#275,
+#276,#277,#278,#279,#280,#281,#282),#497);
+#11=SHAPE_REPRESENTATION_RELATIONSHIP('SRR','None',#504,#12);
+#12=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#13,#14,#15),#496);
+#13=MANIFOLD_SOLID_BREP('\X2\30BD30EA30C330C9\X0\38',#301);
+#14=MANIFOLD_SOLID_BREP('\X2\30BD30EA30C330C9\X0\39',#302);
+#15=MANIFOLD_SOLID_BREP('\X2\30BD30EA30C330C9\X0\39',#303);
+#16=FACE_OUTER_BOUND('',#34,.T.);
+#17=FACE_OUTER_BOUND('',#35,.T.);
+#18=FACE_OUTER_BOUND('',#36,.T.);
+#19=FACE_OUTER_BOUND('',#37,.T.);
+#20=FACE_OUTER_BOUND('',#38,.T.);
+#21=FACE_OUTER_BOUND('',#39,.T.);
+#22=FACE_OUTER_BOUND('',#40,.T.);
+#23=FACE_OUTER_BOUND('',#41,.T.);
+#24=FACE_OUTER_BOUND('',#42,.T.);
+#25=FACE_OUTER_BOUND('',#43,.T.);
+#26=FACE_OUTER_BOUND('',#44,.T.);
+#27=FACE_OUTER_BOUND('',#45,.T.);
+#28=FACE_OUTER_BOUND('',#46,.T.);
+#29=FACE_OUTER_BOUND('',#47,.T.);
+#30=FACE_OUTER_BOUND('',#48,.T.);
+#31=FACE_OUTER_BOUND('',#49,.T.);
+#32=FACE_OUTER_BOUND('',#50,.T.);
+#33=FACE_OUTER_BOUND('',#51,.T.);
+#34=EDGE_LOOP('',(#184,#185,#186,#187));
+#35=EDGE_LOOP('',(#188,#189,#190,#191));
+#36=EDGE_LOOP('',(#192,#193,#194,#195));
+#37=EDGE_LOOP('',(#196,#197,#198,#199));
+#38=EDGE_LOOP('',(#200,#201,#202,#203));
+#39=EDGE_LOOP('',(#204,#205,#206,#207));
+#40=EDGE_LOOP('',(#208,#209,#210,#211));
+#41=EDGE_LOOP('',(#212,#213,#214,#215));
+#42=EDGE_LOOP('',(#216,#217,#218,#219));
+#43=EDGE_LOOP('',(#220,#221,#222,#223));
+#44=EDGE_LOOP('',(#224,#225,#226,#227));
+#45=EDGE_LOOP('',(#228,#229,#230,#231));
+#46=EDGE_LOOP('',(#232,#233,#234,#235));
+#47=EDGE_LOOP('',(#236,#237,#238,#239));
+#48=EDGE_LOOP('',(#240,#241,#242,#243));
+#49=EDGE_LOOP('',(#244,#245,#246,#247));
+#50=EDGE_LOOP('',(#248,#249,#250,#251));
+#51=EDGE_LOOP('',(#252,#253,#254,#255));
+#52=LINE('',#419,#88);
+#53=LINE('',#421,#89);
+#54=LINE('',#423,#90);
+#55=LINE('',#424,#91);
+#56=LINE('',#427,#92);
+#57=LINE('',#429,#93);
+#58=LINE('',#430,#94);
+#59=LINE('',#433,#95);
+#60=LINE('',#435,#96);
+#61=LINE('',#436,#97);
+#62=LINE('',#438,#98);
+#63=LINE('',#439,#99);
+#64=LINE('',#445,#100);
+#65=LINE('',#447,#101);
+#66=LINE('',#449,#102);
+#67=LINE('',#450,#103);
+#68=LINE('',#453,#104);
+#69=LINE('',#455,#105);
+#70=LINE('',#456,#106);
+#71=LINE('',#459,#107);
+#72=LINE('',#461,#108);
+#73=LINE('',#462,#109);
+#74=LINE('',#464,#110);
+#75=LINE('',#465,#111);
+#76=LINE('',#471,#112);
+#77=LINE('',#473,#113);
+#78=LINE('',#475,#114);
+#79=LINE('',#476,#115);
+#80=LINE('',#479,#116);
+#81=LINE('',#481,#117);
+#82=LINE('',#482,#118);
+#83=LINE('',#485,#119);
+#84=LINE('',#487,#120);
+#85=LINE('',#488,#121);
+#86=LINE('',#490,#122);
+#87=LINE('',#491,#123);
+#88=VECTOR('',#345,10.);
+#89=VECTOR('',#346,10.);
+#90=VECTOR('',#347,10.);
+#91=VECTOR('',#348,10.);
+#92=VECTOR('',#351,10.);
+#93=VECTOR('',#352,10.);
+#94=VECTOR('',#353,10.);
+#95=VECTOR('',#356,10.);
+#96=VECTOR('',#357,10.);
+#97=VECTOR('',#358,10.);
+#98=VECTOR('',#361,10.);
+#99=VECTOR('',#362,10.);
+#100=VECTOR('',#369,10.);
+#101=VECTOR('',#370,10.);
+#102=VECTOR('',#371,10.);
+#103=VECTOR('',#372,10.);
+#104=VECTOR('',#375,10.);
+#105=VECTOR('',#376,10.);
+#106=VECTOR('',#377,10.);
+#107=VECTOR('',#380,10.);
+#108=VECTOR('',#381,10.);
+#109=VECTOR('',#382,10.);
+#110=VECTOR('',#385,10.);
+#111=VECTOR('',#386,10.);
+#112=VECTOR('',#393,10.);
+#113=VECTOR('',#394,10.);
+#114=VECTOR('',#395,10.);
+#115=VECTOR('',#396,10.);
+#116=VECTOR('',#399,10.);
+#117=VECTOR('',#400,10.);
+#118=VECTOR('',#401,10.);
+#119=VECTOR('',#404,10.);
+#120=VECTOR('',#405,10.);
+#121=VECTOR('',#406,10.);
+#122=VECTOR('',#409,10.);
+#123=VECTOR('',#410,10.);
+#124=VERTEX_POINT('',#417);
+#125=VERTEX_POINT('',#418);
+#126=VERTEX_POINT('',#420);
+#127=VERTEX_POINT('',#422);
+#128=VERTEX_POINT('',#426);
+#129=VERTEX_POINT('',#428);
+#130=VERTEX_POINT('',#432);
+#131=VERTEX_POINT('',#434);
+#132=VERTEX_POINT('',#443);
+#133=VERTEX_POINT('',#444);
+#134=VERTEX_POINT('',#446);
+#135=VERTEX_POINT('',#448);
+#136=VERTEX_POINT('',#452);
+#137=VERTEX_POINT('',#454);
+#138=VERTEX_POINT('',#458);
+#139=VERTEX_POINT('',#460);
+#140=VERTEX_POINT('',#469);
+#141=VERTEX_POINT('',#470);
+#142=VERTEX_POINT('',#472);
+#143=VERTEX_POINT('',#474);
+#144=VERTEX_POINT('',#478);
+#145=VERTEX_POINT('',#480);
+#146=VERTEX_POINT('',#484);
+#147=VERTEX_POINT('',#486);
+#148=EDGE_CURVE('',#124,#125,#52,.T.);
+#149=EDGE_CURVE('',#125,#126,#53,.T.);
+#150=EDGE_CURVE('',#127,#126,#54,.T.);
+#151=EDGE_CURVE('',#124,#127,#55,.T.);
+#152=EDGE_CURVE('',#128,#124,#56,.T.);
+#153=EDGE_CURVE('',#129,#127,#57,.T.);
+#154=EDGE_CURVE('',#128,#129,#58,.T.);
+#155=EDGE_CURVE('',#130,#128,#59,.T.);
+#156=EDGE_CURVE('',#131,#129,#60,.T.);
+#157=EDGE_CURVE('',#130,#131,#61,.T.);
+#158=EDGE_CURVE('',#125,#130,#62,.T.);
+#159=EDGE_CURVE('',#126,#131,#63,.T.);
+#160=EDGE_CURVE('',#132,#133,#64,.T.);
+#161=EDGE_CURVE('',#133,#134,#65,.T.);
+#162=EDGE_CURVE('',#135,#134,#66,.T.);
+#163=EDGE_CURVE('',#132,#135,#67,.T.);
+#164=EDGE_CURVE('',#136,#132,#68,.T.);
+#165=EDGE_CURVE('',#137,#135,#69,.T.);
+#166=EDGE_CURVE('',#136,#137,#70,.T.);
+#167=EDGE_CURVE('',#138,#136,#71,.T.);
+#168=EDGE_CURVE('',#139,#137,#72,.T.);
+#169=EDGE_CURVE('',#138,#139,#73,.T.);
+#170=EDGE_CURVE('',#133,#138,#74,.T.);
+#171=EDGE_CURVE('',#134,#139,#75,.T.);
+#172=EDGE_CURVE('',#140,#141,#76,.T.);
+#173=EDGE_CURVE('',#140,#142,#77,.T.);
+#174=EDGE_CURVE('',#142,#143,#78,.T.);
+#175=EDGE_CURVE('',#141,#143,#79,.T.);
+#176=EDGE_CURVE('',#144,#140,#80,.T.);
+#177=EDGE_CURVE('',#144,#145,#81,.T.);
+#178=EDGE_CURVE('',#145,#142,#82,.T.);
+#179=EDGE_CURVE('',#146,#144,#83,.T.);
+#180=EDGE_CURVE('',#146,#147,#84,.T.);
+#181=EDGE_CURVE('',#147,#145,#85,.T.);
+#182=EDGE_CURVE('',#141,#146,#86,.T.);
+#183=EDGE_CURVE('',#143,#147,#87,.T.);
+#184=ORIENTED_EDGE('',*,*,#148,.T.);
+#185=ORIENTED_EDGE('',*,*,#149,.T.);
+#186=ORIENTED_EDGE('',*,*,#150,.F.);
+#187=ORIENTED_EDGE('',*,*,#151,.F.);
+#188=ORIENTED_EDGE('',*,*,#152,.T.);
+#189=ORIENTED_EDGE('',*,*,#151,.T.);
+#190=ORIENTED_EDGE('',*,*,#153,.F.);
+#191=ORIENTED_EDGE('',*,*,#154,.F.);
+#192=ORIENTED_EDGE('',*,*,#155,.T.);
+#193=ORIENTED_EDGE('',*,*,#154,.T.);
+#194=ORIENTED_EDGE('',*,*,#156,.F.);
+#195=ORIENTED_EDGE('',*,*,#157,.F.);
+#196=ORIENTED_EDGE('',*,*,#158,.T.);
+#197=ORIENTED_EDGE('',*,*,#157,.T.);
+#198=ORIENTED_EDGE('',*,*,#159,.F.);
+#199=ORIENTED_EDGE('',*,*,#149,.F.);
+#200=ORIENTED_EDGE('',*,*,#159,.T.);
+#201=ORIENTED_EDGE('',*,*,#156,.T.);
+#202=ORIENTED_EDGE('',*,*,#153,.T.);
+#203=ORIENTED_EDGE('',*,*,#150,.T.);
+#204=ORIENTED_EDGE('',*,*,#158,.F.);
+#205=ORIENTED_EDGE('',*,*,#148,.F.);
+#206=ORIENTED_EDGE('',*,*,#152,.F.);
+#207=ORIENTED_EDGE('',*,*,#155,.F.);
+#208=ORIENTED_EDGE('',*,*,#160,.T.);
+#209=ORIENTED_EDGE('',*,*,#161,.T.);
+#210=ORIENTED_EDGE('',*,*,#162,.F.);
+#211=ORIENTED_EDGE('',*,*,#163,.F.);
+#212=ORIENTED_EDGE('',*,*,#164,.T.);
+#213=ORIENTED_EDGE('',*,*,#163,.T.);
+#214=ORIENTED_EDGE('',*,*,#165,.F.);
+#215=ORIENTED_EDGE('',*,*,#166,.F.);
+#216=ORIENTED_EDGE('',*,*,#167,.T.);
+#217=ORIENTED_EDGE('',*,*,#166,.T.);
+#218=ORIENTED_EDGE('',*,*,#168,.F.);
+#219=ORIENTED_EDGE('',*,*,#169,.F.);
+#220=ORIENTED_EDGE('',*,*,#170,.T.);
+#221=ORIENTED_EDGE('',*,*,#169,.T.);
+#222=ORIENTED_EDGE('',*,*,#171,.F.);
+#223=ORIENTED_EDGE('',*,*,#161,.F.);
+#224=ORIENTED_EDGE('',*,*,#171,.T.);
+#225=ORIENTED_EDGE('',*,*,#168,.T.);
+#226=ORIENTED_EDGE('',*,*,#165,.T.);
+#227=ORIENTED_EDGE('',*,*,#162,.T.);
+#228=ORIENTED_EDGE('',*,*,#170,.F.);
+#229=ORIENTED_EDGE('',*,*,#160,.F.);
+#230=ORIENTED_EDGE('',*,*,#164,.F.);
+#231=ORIENTED_EDGE('',*,*,#167,.F.);
+#232=ORIENTED_EDGE('',*,*,#172,.F.);
+#233=ORIENTED_EDGE('',*,*,#173,.T.);
+#234=ORIENTED_EDGE('',*,*,#174,.T.);
+#235=ORIENTED_EDGE('',*,*,#175,.F.);
+#236=ORIENTED_EDGE('',*,*,#176,.F.);
+#237=ORIENTED_EDGE('',*,*,#177,.T.);
+#238=ORIENTED_EDGE('',*,*,#178,.T.);
+#239=ORIENTED_EDGE('',*,*,#173,.F.);
+#240=ORIENTED_EDGE('',*,*,#179,.F.);
+#241=ORIENTED_EDGE('',*,*,#180,.T.);
+#242=ORIENTED_EDGE('',*,*,#181,.T.);
+#243=ORIENTED_EDGE('',*,*,#177,.F.);
+#244=ORIENTED_EDGE('',*,*,#182,.F.);
+#245=ORIENTED_EDGE('',*,*,#175,.T.);
+#246=ORIENTED_EDGE('',*,*,#183,.T.);
+#247=ORIENTED_EDGE('',*,*,#180,.F.);
+#248=ORIENTED_EDGE('',*,*,#183,.F.);
+#249=ORIENTED_EDGE('',*,*,#174,.F.);
+#250=ORIENTED_EDGE('',*,*,#178,.F.);
+#251=ORIENTED_EDGE('',*,*,#181,.F.);
+#252=ORIENTED_EDGE('',*,*,#182,.T.);
+#253=ORIENTED_EDGE('',*,*,#179,.T.);
+#254=ORIENTED_EDGE('',*,*,#176,.T.);
+#255=ORIENTED_EDGE('',*,*,#172,.T.);
+#256=PLANE('',#323);
+#257=PLANE('',#324);
+#258=PLANE('',#325);
+#259=PLANE('',#326);
+#260=PLANE('',#327);
+#261=PLANE('',#328);
+#262=PLANE('',#329);
+#263=PLANE('',#330);
+#264=PLANE('',#331);
+#265=PLANE('',#332);
+#266=PLANE('',#333);
+#267=PLANE('',#334);
+#268=PLANE('',#335);
+#269=PLANE('',#336);
+#270=PLANE('',#337);
+#271=PLANE('',#338);
+#272=PLANE('',#339);
+#273=PLANE('',#340);
+#274=STYLED_ITEM('',(#514),#283);
+#275=STYLED_ITEM('',(#514),#284);
+#276=STYLED_ITEM('',(#514),#285);
+#277=STYLED_ITEM('',(#514),#286);
+#278=STYLED_ITEM('',(#514),#287);
+#279=STYLED_ITEM('',(#514),#288);
+#280=STYLED_ITEM('',(#513),#13);
+#281=STYLED_ITEM('',(#513),#14);
+#282=STYLED_ITEM('',(#513),#15);
+#283=ADVANCED_FACE('',(#16),#256,.T.);
+#284=ADVANCED_FACE('',(#17),#257,.T.);
+#285=ADVANCED_FACE('',(#18),#258,.T.);
+#286=ADVANCED_FACE('',(#19),#259,.T.);
+#287=ADVANCED_FACE('',(#20),#260,.T.);
+#288=ADVANCED_FACE('',(#21),#261,.F.);
+#289=ADVANCED_FACE('',(#22),#262,.T.);
+#290=ADVANCED_FACE('',(#23),#263,.T.);
+#291=ADVANCED_FACE('',(#24),#264,.T.);
+#292=ADVANCED_FACE('',(#25),#265,.T.);
+#293=ADVANCED_FACE('',(#26),#266,.T.);
+#294=ADVANCED_FACE('',(#27),#267,.F.);
+#295=ADVANCED_FACE('',(#28),#268,.F.);
+#296=ADVANCED_FACE('',(#29),#269,.F.);
+#297=ADVANCED_FACE('',(#30),#270,.F.);
+#298=ADVANCED_FACE('',(#31),#271,.F.);
+#299=ADVANCED_FACE('',(#32),#272,.F.);
+#300=ADVANCED_FACE('',(#33),#273,.T.);
+#301=CLOSED_SHELL('',(#283,#284,#285,#286,#287,#288));
+#302=CLOSED_SHELL('',(#289,#290,#291,#292,#293,#294));
+#303=CLOSED_SHELL('',(#295,#296,#297,#298,#299,#300));
+#304=DERIVED_UNIT_ELEMENT(#306,1.);
+#305=DERIVED_UNIT_ELEMENT(#499,3.);
+#306=(
+MASS_UNIT()
+NAMED_UNIT(*)
+SI_UNIT($,.GRAM.)
+);
+#307=DERIVED_UNIT((#304,#305));
+#308=MEASURE_REPRESENTATION_ITEM('density measure',
+POSITIVE_RATIO_MEASURE(1.),#307);
+#309=PROPERTY_DEFINITION_REPRESENTATION(#314,#311);
+#310=PROPERTY_DEFINITION_REPRESENTATION(#315,#312);
+#311=REPRESENTATION('material name',(#313),#496);
+#312=REPRESENTATION('density',(#308),#496);
+#313=DESCRIPTIVE_REPRESENTATION_ITEM('\X2\4E00822C\X0\','\X2\4E00822C\X0\');
+#314=PROPERTY_DEFINITION('material property','material name',#506);
+#315=PROPERTY_DEFINITION('material property','density of part',#506);
+#316=DATE_TIME_ROLE('creation_date');
+#317=APPLIED_DATE_AND_TIME_ASSIGNMENT(#318,#316,(#506));
+#318=DATE_AND_TIME(#319,#320);
+#319=CALENDAR_DATE(2022,10,5);
+#320=LOCAL_TIME(0,0,0.,#321);
+#321=COORDINATED_UNIVERSAL_TIME_OFFSET(0,0,.BEHIND.);
+#322=AXIS2_PLACEMENT_3D('placement',#415,#341,#342);
+#323=AXIS2_PLACEMENT_3D('',#416,#343,#344);
+#324=AXIS2_PLACEMENT_3D('',#425,#349,#350);
+#325=AXIS2_PLACEMENT_3D('',#431,#354,#355);
+#326=AXIS2_PLACEMENT_3D('',#437,#359,#360);
+#327=AXIS2_PLACEMENT_3D('',#440,#363,#364);
+#328=AXIS2_PLACEMENT_3D('',#441,#365,#366);
+#329=AXIS2_PLACEMENT_3D('',#442,#367,#368);
+#330=AXIS2_PLACEMENT_3D('',#451,#373,#374);
+#331=AXIS2_PLACEMENT_3D('',#457,#378,#379);
+#332=AXIS2_PLACEMENT_3D('',#463,#383,#384);
+#333=AXIS2_PLACEMENT_3D('',#466,#387,#388);
+#334=AXIS2_PLACEMENT_3D('',#467,#389,#390);
+#335=AXIS2_PLACEMENT_3D('',#468,#391,#392);
+#336=AXIS2_PLACEMENT_3D('',#477,#397,#398);
+#337=AXIS2_PLACEMENT_3D('',#483,#402,#403);
+#338=AXIS2_PLACEMENT_3D('',#489,#407,#408);
+#339=AXIS2_PLACEMENT_3D('',#492,#411,#412);
+#340=AXIS2_PLACEMENT_3D('',#493,#413,#414);
+#341=DIRECTION('axis',(0.,0.,1.));
+#342=DIRECTION('refdir',(1.,0.,0.));
+#343=DIRECTION('center_axis',(0.,-1.,0.));
+#344=DIRECTION('ref_axis',(1.,0.,0.));
+#345=DIRECTION('',(1.,0.,0.));
+#346=DIRECTION('',(0.,0.,1.));
+#347=DIRECTION('',(1.,0.,0.));
+#348=DIRECTION('',(0.,0.,1.));
+#349=DIRECTION('center_axis',(-1.,0.,0.));
+#350=DIRECTION('ref_axis',(0.,-1.,0.));
+#351=DIRECTION('',(0.,-1.,0.));
+#352=DIRECTION('',(0.,-1.,0.));
+#353=DIRECTION('',(0.,0.,1.));
+#354=DIRECTION('center_axis',(0.,1.,0.));
+#355=DIRECTION('ref_axis',(-1.,0.,0.));
+#356=DIRECTION('',(-1.,0.,0.));
+#357=DIRECTION('',(-1.,0.,0.));
+#358=DIRECTION('',(0.,0.,1.));
+#359=DIRECTION('center_axis',(1.,0.,0.));
+#360=DIRECTION('ref_axis',(0.,1.,0.));
+#361=DIRECTION('',(0.,1.,0.));
+#362=DIRECTION('',(0.,1.,0.));
+#363=DIRECTION('center_axis',(0.,0.,1.));
+#364=DIRECTION('ref_axis',(1.,0.,0.));
+#365=DIRECTION('center_axis',(0.,0.,1.));
+#366=DIRECTION('ref_axis',(1.,0.,0.));
+#367=DIRECTION('center_axis',(0.,-1.,0.));
+#368=DIRECTION('ref_axis',(0.,0.,-1.));
+#369=DIRECTION('',(0.,0.,-1.));
+#370=DIRECTION('',(1.,0.,0.));
+#371=DIRECTION('',(0.,0.,-1.));
+#372=DIRECTION('',(1.,0.,0.));
+#373=DIRECTION('center_axis',(0.,0.,1.));
+#374=DIRECTION('ref_axis',(0.,-1.,0.));
+#375=DIRECTION('',(0.,-1.,0.));
+#376=DIRECTION('',(0.,-1.,0.));
+#377=DIRECTION('',(1.,0.,0.));
+#378=DIRECTION('center_axis',(0.,1.,0.));
+#379=DIRECTION('ref_axis',(0.,0.,1.));
+#380=DIRECTION('',(0.,0.,1.));
+#381=DIRECTION('',(0.,0.,1.));
+#382=DIRECTION('',(1.,0.,0.));
+#383=DIRECTION('center_axis',(0.,0.,-1.));
+#384=DIRECTION('ref_axis',(0.,1.,0.));
+#385=DIRECTION('',(0.,1.,0.));
+#386=DIRECTION('',(0.,1.,0.));
+#387=DIRECTION('center_axis',(1.,0.,0.));
+#388=DIRECTION('ref_axis',(0.,0.,-1.));
+#389=DIRECTION('center_axis',(1.,0.,0.));
+#390=DIRECTION('ref_axis',(0.,0.,-1.));
+#391=DIRECTION('center_axis',(0.,1.,0.));
+#392=DIRECTION('ref_axis',(0.,0.,-1.));
+#393=DIRECTION('',(0.,0.,-1.));
+#394=DIRECTION('',(-1.,0.,0.));
+#395=DIRECTION('',(0.,0.,-1.));
+#396=DIRECTION('',(-1.,0.,0.));
+#397=DIRECTION('center_axis',(0.,0.,-1.));
+#398=DIRECTION('ref_axis',(0.,-1.,0.));
+#399=DIRECTION('',(0.,-1.,0.));
+#400=DIRECTION('',(-1.,0.,0.));
+#401=DIRECTION('',(0.,-1.,0.));
+#402=DIRECTION('center_axis',(0.,-1.,0.));
+#403=DIRECTION('ref_axis',(0.,0.,1.));
+#404=DIRECTION('',(0.,0.,1.));
+#405=DIRECTION('',(-1.,0.,0.));
+#406=DIRECTION('',(0.,0.,1.));
+#407=DIRECTION('center_axis',(0.,0.,1.));
+#408=DIRECTION('ref_axis',(0.,1.,0.));
+#409=DIRECTION('',(0.,1.,0.));
+#410=DIRECTION('',(0.,1.,0.));
+#411=DIRECTION('center_axis',(1.,0.,0.));
+#412=DIRECTION('ref_axis',(0.,0.,-1.));
+#413=DIRECTION('center_axis',(1.,0.,0.));
+#414=DIRECTION('ref_axis',(0.,0.,-1.));
+#415=CARTESIAN_POINT('',(0.,0.,0.));
+#416=CARTESIAN_POINT('Origin',(-0.45,-0.4,0.));
+#417=CARTESIAN_POINT('',(-0.45,-0.4,0.));
+#418=CARTESIAN_POINT('',(0.45,-0.4,0.));
+#419=CARTESIAN_POINT('',(-0.45,-0.4,0.));
+#420=CARTESIAN_POINT('',(0.45,-0.4,0.9));
+#421=CARTESIAN_POINT('',(0.45,-0.4,0.));
+#422=CARTESIAN_POINT('',(-0.45,-0.4,0.9));
+#423=CARTESIAN_POINT('',(-0.45,-0.4,0.9));
+#424=CARTESIAN_POINT('',(-0.45,-0.4,0.));
+#425=CARTESIAN_POINT('Origin',(-0.45,0.4,0.));
+#426=CARTESIAN_POINT('',(-0.45,0.4,0.));
+#427=CARTESIAN_POINT('',(-0.45,0.4,0.));
+#428=CARTESIAN_POINT('',(-0.45,0.4,0.9));
+#429=CARTESIAN_POINT('',(-0.45,0.4,0.9));
+#430=CARTESIAN_POINT('',(-0.45,0.4,0.));
+#431=CARTESIAN_POINT('Origin',(0.45,0.4,0.));
+#432=CARTESIAN_POINT('',(0.45,0.4,0.));
+#433=CARTESIAN_POINT('',(0.45,0.4,0.));
+#434=CARTESIAN_POINT('',(0.45,0.4,0.9));
+#435=CARTESIAN_POINT('',(0.45,0.4,0.9));
+#436=CARTESIAN_POINT('',(0.45,0.4,0.));
+#437=CARTESIAN_POINT('Origin',(0.45,-0.4,0.));
+#438=CARTESIAN_POINT('',(0.45,-0.4,0.));
+#439=CARTESIAN_POINT('',(0.45,-0.4,0.9));
+#440=CARTESIAN_POINT('Origin',(0.,0.,0.9));
+#441=CARTESIAN_POINT('Origin',(0.,0.,0.));
+#442=CARTESIAN_POINT('Origin',(0.45,-0.4,0.9));
+#443=CARTESIAN_POINT('',(0.45,-0.4,0.9));
+#444=CARTESIAN_POINT('',(0.45,-0.4,0.));
+#445=CARTESIAN_POINT('',(0.45,-0.4,0.9));
+#446=CARTESIAN_POINT('',(0.8,-0.4,0.));
+#447=CARTESIAN_POINT('',(0.45,-0.4,0.));
+#448=CARTESIAN_POINT('',(0.8,-0.4,0.9));
+#449=CARTESIAN_POINT('',(0.8,-0.4,0.9));
+#450=CARTESIAN_POINT('',(0.45,-0.4,0.9));
+#451=CARTESIAN_POINT('Origin',(0.45,0.4,0.9));
+#452=CARTESIAN_POINT('',(0.45,0.4,0.9));
+#453=CARTESIAN_POINT('',(0.45,0.4,0.9));
+#454=CARTESIAN_POINT('',(0.8,0.4,0.9));
+#455=CARTESIAN_POINT('',(0.8,0.4,0.9));
+#456=CARTESIAN_POINT('',(0.45,0.4,0.9));
+#457=CARTESIAN_POINT('Origin',(0.45,0.4,0.));
+#458=CARTESIAN_POINT('',(0.45,0.4,0.));
+#459=CARTESIAN_POINT('',(0.45,0.4,0.));
+#460=CARTESIAN_POINT('',(0.8,0.4,0.));
+#461=CARTESIAN_POINT('',(0.8,0.4,0.));
+#462=CARTESIAN_POINT('',(0.45,0.4,0.));
+#463=CARTESIAN_POINT('Origin',(0.45,-0.4,0.));
+#464=CARTESIAN_POINT('',(0.45,-0.4,0.));
+#465=CARTESIAN_POINT('',(0.8,-0.4,0.));
+#466=CARTESIAN_POINT('Origin',(0.8,0.,0.45));
+#467=CARTESIAN_POINT('Origin',(0.45,0.,0.45));
+#468=CARTESIAN_POINT('Origin',(-0.45,-0.4,0.9));
+#469=CARTESIAN_POINT('',(-0.45,-0.4,0.9));
+#470=CARTESIAN_POINT('',(-0.45,-0.4,0.));
+#471=CARTESIAN_POINT('',(-0.45,-0.4,0.9));
+#472=CARTESIAN_POINT('',(-0.8,-0.4,0.9));
+#473=CARTESIAN_POINT('',(-0.45,-0.4,0.9));
+#474=CARTESIAN_POINT('',(-0.8,-0.4,0.));
+#475=CARTESIAN_POINT('',(-0.8,-0.4,0.9));
+#476=CARTESIAN_POINT('',(-0.45,-0.4,0.));
+#477=CARTESIAN_POINT('Origin',(-0.45,0.4,0.9));
+#478=CARTESIAN_POINT('',(-0.45,0.4,0.9));
+#479=CARTESIAN_POINT('',(-0.45,0.4,0.9));
+#480=CARTESIAN_POINT('',(-0.8,0.4,0.9));
+#481=CARTESIAN_POINT('',(-0.45,0.4,0.9));
+#482=CARTESIAN_POINT('',(-0.8,0.4,0.9));
+#483=CARTESIAN_POINT('Origin',(-0.45,0.4,0.));
+#484=CARTESIAN_POINT('',(-0.45,0.4,0.));
+#485=CARTESIAN_POINT('',(-0.45,0.4,0.));
+#486=CARTESIAN_POINT('',(-0.8,0.4,0.));
+#487=CARTESIAN_POINT('',(-0.45,0.4,0.));
+#488=CARTESIAN_POINT('',(-0.8,0.4,0.));
+#489=CARTESIAN_POINT('Origin',(-0.45,-0.4,0.));
+#490=CARTESIAN_POINT('',(-0.45,-0.4,0.));
+#491=CARTESIAN_POINT('',(-0.8,-0.4,0.));
+#492=CARTESIAN_POINT('Origin',(-0.8,0.,0.45));
+#493=CARTESIAN_POINT('Origin',(-0.45,0.,0.45));
+#494=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#498,
+'DISTANCE_ACCURACY_VALUE',
+'Maximum model space distance between geometric entities at asserted c
+onnectivities');
+#495=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#498,
+'DISTANCE_ACCURACY_VALUE',
+'Maximum model space distance between geometric entities at asserted c
+onnectivities');
+#496=(
+GEOMETRIC_REPRESENTATION_CONTEXT(3)
+GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#494))
+GLOBAL_UNIT_ASSIGNED_CONTEXT((#498,#500,#501))
+REPRESENTATION_CONTEXT('','3D')
+);
+#497=(
+GEOMETRIC_REPRESENTATION_CONTEXT(3)
+GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#495))
+GLOBAL_UNIT_ASSIGNED_CONTEXT((#498,#500,#501))
+REPRESENTATION_CONTEXT('','3D')
+);
+#498=(
+LENGTH_UNIT()
+NAMED_UNIT(*)
+SI_UNIT(.MILLI.,.METRE.)
+);
+#499=(
+LENGTH_UNIT()
+NAMED_UNIT(*)
+SI_UNIT(.CENTI.,.METRE.)
+);
+#500=(
+NAMED_UNIT(*)
+PLANE_ANGLE_UNIT()
+SI_UNIT($,.RADIAN.)
+);
+#501=(
+NAMED_UNIT(*)
+SI_UNIT($,.STERADIAN.)
+SOLID_ANGLE_UNIT()
+);
+#502=SHAPE_DEFINITION_REPRESENTATION(#503,#504);
+#503=PRODUCT_DEFINITION_SHAPE('',$,#506);
+#504=SHAPE_REPRESENTATION('',(#322),#496);
+#505=PRODUCT_DEFINITION_CONTEXT('part definition',#510,'design');
+#506=PRODUCT_DEFINITION('s1_1608_90','s1_1608_90',#507,#505);
+#507=PRODUCT_DEFINITION_FORMATION('',$,#512);
+#508=PRODUCT_RELATED_PRODUCT_CATEGORY('s1_1608_90','s1_1608_90',(#512));
+#509=APPLICATION_PROTOCOL_DEFINITION('international standard',
+'automotive_design',2009,#510);
+#510=APPLICATION_CONTEXT(
+'Core Data for Automotive Mechanical Design Process');
+#511=PRODUCT_CONTEXT('part definition',#510,'mechanical');
+#512=PRODUCT('s1_1608_90','s1_1608_90',$,(#511));
+#513=PRESENTATION_STYLE_ASSIGNMENT((#515));
+#514=PRESENTATION_STYLE_ASSIGNMENT((#516));
+#515=SURFACE_STYLE_USAGE(.BOTH.,#521);
+#516=SURFACE_STYLE_USAGE(.BOTH.,#522);
+#517=SURFACE_STYLE_RENDERING_WITH_PROPERTIES($,#529,(#519));
+#518=SURFACE_STYLE_RENDERING_WITH_PROPERTIES($,#530,(#520));
+#519=SURFACE_STYLE_TRANSPARENT(0.);
+#520=SURFACE_STYLE_TRANSPARENT(0.);
+#521=SURFACE_SIDE_STYLE('',(#523,#517));
+#522=SURFACE_SIDE_STYLE('',(#524,#518));
+#523=SURFACE_STYLE_FILL_AREA(#525);
+#524=SURFACE_STYLE_FILL_AREA(#526);
+#525=FILL_AREA_STYLE('',(#527));
+#526=FILL_AREA_STYLE('',(#528));
+#527=FILL_AREA_STYLE_COLOUR('',#529);
+#528=FILL_AREA_STYLE_COLOUR('',#530);
+#529=COLOUR_RGB('',0.749019607843137,0.749019607843137,0.749019607843137);
+#530=COLOUR_RGB('',0.250980392156863,0.250980392156863,0.250980392156863);
+ENDSEC;
+END-ISO-10303-21;
README.md+170−2
@@ -1,3 +1,171 @@-# MSASH168SC7224KTCA01 - Taiyo Yuden+# MSASH168SC7224KTCA01 -MLCC 0.22 uF +/-10 %, 100 V, X7S, 0603 (1608 metric)+Taiyo Yuden MSASH168SC7224KTCA01: MLCC 0.22 uF +/-10 %, 100 V, X7S, 0603 (1608 metric). A medium-high voltage multilayer ceramic capacitor from Taiyo Yuden's MSAS general purpose+series, previously sold as HMK107C7224KA-TE. Taiyo Yuden names inverters and DC/DC converters as its main applications.++::adom-verified{src="/adom/msash168sc7224ktca01/render/verification.json"}++| Field | Value |+|---|---|+| Manufacturer | TAIYO YUDEN CO., LTD. |+| Manufacturer part number | MSASH168SC7224KTCA01 (previously HMK107C7224KA-TE) |+| Type | MLCC, Class 2 (X7S), medium-high voltage |+| Capacitance | 0.22 uF (220 nF), +/-10 % (K) |+| Rated voltage | 100 V DC |+| Dielectric | X7S, +/-22 % over -55 to +125 C |+| Package | 0603 (1608 metric), 1.6 x 0.8 x 0.8 mm (0.9 mm max) |+| Marking | none |+| Datasheet | [Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages)](docs/msash168sc7224ktca01-datasheet.pdf) and the [characteristics data](docs/msash168sc7224ktca01-characteristics.pdf) |++## Key specifications++| Parameter | Value | Source |+|---|---|---|+| Capacitance | 0.22 uF +/-10 % (code 224, K) | product page; catalog p.4 |+| Rated voltage | 100 V DC (code H) | product page; catalog p.1 |+| Temperature characteristic | X7S (EIA, code C7): +/-22 % from -55 to +125 C, reference 25 C | product page; catalog p.3 |+| Dissipation factor (tan delta) | 3.5 % max | product page |+| Insulation resistance | 100 MOhm x uF min (at least 454 MOhm for 0.22 uF) | product page |+| High temperature loading | 150 % of rated voltage | product page |+| Operating temperature | -55 to +125 C | product page |+| Series | MSAS medium-high voltage multilayer ceramic capacitor for general purpose; nickel electrodes | product page; catalog p.1 |+| Size | L 1.6 +/-0.10, W 0.8 +/-0.10, T 0.8 +/-0.10, e 0.35 +/-0.25 (mm); 0.9 mm max | product page; catalog p.2, p.5; characteristics sheet |+| Packaging (code T) | 178 mm reel, paper tape, 4 mm pitch, 4000 pcs | product page; catalog p.4, p.6 |+| Soldering | reflow | product page |+| Compliance | RoHS, REACH, halogen free | product page |+| Status | mass production (preferred) | product page, 2026-10-21 |+| Previous part number | HMK107C7224KA-TE | product page; characteristics sheet |++The product page was read on 2026-10-21; catalog page numbers refer to [the catalog PDF](docs/msash168sc7224ktca01-datasheet.pdf).++## DC bias: plan for the capacitance you get at your voltage++X7S is a class 2 dielectric, so the capacitance falls as DC voltage is applied. Taiyo Yuden's characteristics sheet plots it:+read off that graph, the capacitance is roughly 30 % lower at 20 V, 60 % lower at 40 V, 80 % lower at 60 V and close to+90 % lower at the 100 V rating (values read from the plotted curve, not printed numbers). The same sheet gives capacitance+and impedance against frequency, the temperature curve and ripple current heating.++![Electrical characteristics data](docs/figures/ty-chars-p1.png)++## Ordering++| Distributor | Part number | Stock seen 2026-10-21 |+|---|---|---|+| Mouser | [963-MSASH168SC7224KT](https://www.mouser.com/ProductDetail/TAIYO-YUDEN/MSASH168SC7224KTCA01?qs=tlsG%2FOw5FFjGLxgyt65IHw%3D%3D) | 3,875 |+| DigiKey | [587-MSASH168SC7224KTCA01TR-ND](https://www.digikey.com/en/products/detail/taiyo-yuden/MSASH168SC7224KTCA01/19292991) | 0 |+| LCSC / JLCPCB | not listed | - |++Stock figures are a snapshot from the Adom parts search on 2026-10-21; check the distributor before ordering. DigiKey listed+the part with no stock that day; Mouser had 3,875. JLCPCB/LCSC search for MSASH168SC7224KTCA01 returned no part on 2026-10-21. Mouser also lists the previous part+number HMK107C7224KA-TE and points it to this one.++## Part number++M S A S (two-terminal general purpose MLCC) | H 100 V | 16 size 1608 | 8 thickness 0.8 mm | S dimension tolerance |+C7 X7S | 224 0.22 uF | K +/-10 % | T 178 mm reel, 4 mm pitch tape | CA01 internal code (catalog p.1 to p.4).++![Catalog p.1 part numbering](docs/figures/ty-cat-p1-part-number.png)++## Manufacturer and resources++| Resource | Link |+|---|---|+| Product page | https://ds.yuden.co.jp/TYCOMPAS/ut/detail?pn=MSASH168SC7224KTCA01&u=M |+| Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages) | [PDF](docs/msash168sc7224ktca01-datasheet.pdf) ([source](https://ds.yuden.co.jp/TYCOMPAS/ut/download?pn=MSASH168SC7224KTCA01&fileType=CS)) |+| Taiyo Yuden, MSASH168SC7224KTCA01 Electrical Characteristics Data, 22U2A07 (1 page) | [PDF](docs/msash168sc7224ktca01-characteristics.pdf) ([source](https://ds.yuden.co.jp/TYCOMPAS/ut/download?pn=MSASH168SC7224KTCA01&fileType=Datasheet)) |+| Taiyo Yuden, Multilayer Ceramic Capacitors packaging catalog c_mlcc_pack_e (4 pages) | [PDF](docs/taiyo-yuden-mlcc-packaging.pdf) ([source](https://ds.yuden.co.jp/TYCOMPAS/ut/download?pn=MSASH168SC7224KTCA01&fileType=PK)) |+| 3D model and land pattern | STEP and DXF downloads on the product page (copies on this page) |+| Reliability data, precautions, SPICE and S-parameter models | links on the product page |++## Pins++| Pin | Function |+|---|---|+| 1 | terminal (non-polar) |+| 2 | terminal (non-polar) |++A ceramic capacitor has no polarity: either terminal may face either way.++## Land pattern: KiCad footprint vs Taiyo Yuden++<table>+<tr>+<td width="104"><a href="land-pattern/README.md"><img src="land-pattern/land-pattern-icon.png" width="112" alt="Land pattern"></a><br><sub>&nbsp;&nbsp;&nbsp;&nbsp;Land&nbsp;pattern&nbsp;&nbsp;&nbsp;&nbsp;</sub></td>+<td>The footprint is KiCad's standard `C_0603_1608Metric`, and this guide lays its pads over the land Taiyo Yuden publishes for this part as a DXF, at true scale. KiCad's pads are larger on every side and contain the maker's land. Use it to decide whether to keep the KiCad pads or change them to Taiyo Yuden's 0.6 x 0.8 mm lands before layout.<br><br><a href="land-pattern/README.md">The comparison, with the numbers</a></td>+</tr>+</table>++## 3D model++The model is **Taiyo Yuden's own STEP** for this part number, downloaded by plain HTTP from the product page and used with+its bytes unchanged: it is already in millimetres, Z-up, seated on z = 0 and centred, so no transform was needed. It is+1.60 x 0.80 x 0.90 mm with 0.35 mm terminal bands; the 0.90 mm height is the top of the printed range (T 0.8 +/-0.10 mm, and+the characteristics sheet says 0.9 mm max). The body colour is the maker's dark grey (their product photo shows a brown body);+it was left as supplied. The part is unmarked, so no marking is shown.++The page viewer shows `msash168sc7224ktca01-hero.glb`: the clean model plus nonphysical reference artwork drawn under it to the adom-hero+standard (adom/component-hero): the footprint's pads as teal dashed outlines at 50 % opacity, its silkscreen at 70 %+transparency and the pad numbers 1 and 2. The part is non-polar, so no pin-1 dot is added. The artwork never goes into+the STEP, `package-reference.glb` or the board LODs.++![Hero preview, top and oblique](docs/verify/hero-preview.png)++::adom-models{src="/adom/msash168sc7224ktca01/render/models.json"}++## Model checked against the printed dimensions++The model was rendered in orthographic top, bottom, side and end views at true scale and laid over a drawing made at the same+scale from the printed limits (nominal outline, tolerance limits, allowed terminal band). Every dimension is inside the printed+range: L 1.600 mm (1.50 to 1.70), W 0.800 mm (0.70 to 0.90), T/H 0.900 mm (0.70 to 0.90), e (terminal band), top 0.350 mm (0.10 to 0.60), e (terminal band), bottom 0.350 mm (0.10 to 0.60).++![Model over the printed dimensions](docs/verify/msash168sc7224ktca01-overlay.png)++Source: product page and catalog p.5, MSAS 16 thickness code 8 (tolerance code S): L 1.6 +/-0.10, W 0.8 +/-0.10, T 0.8 +/-0.10, e 0.35 +/-0.25 (mm); characteristics sheet: t = 0.9 mm max.++## Board levels of detail++Clean board-use GLBs (no footprint pads, outlines, labels or silkscreen) in four levels, all in the same Z-up, metre,+footprint-origin pose as the STEP. Previews are rendered from each GLB.++::adom-component-lod{src="/adom/msash168sc7224ktca01/render/lod/manifest.json"}++## CAD files++| File | What it is |+|---|---|+| `MSASH168SC7224KTCA01.kicad_sym` | KiCad symbol (standard capacitor graphic, pin ends on the 2.54 mm grid) with MPN, Manufacturer, Mouser, DigiKey, LCSC (empty) and Adom Wiki fields |+| `C_0603_1608Metric_MSASH168SC7224KTCA01.kicad_mod` | KiCad footprint (KiCad library `C_0603_1608Metric`, renamed; model path `${KIPRJMOD}/MSASH168SC7224KTCA01.step`) |+| `MSASH168SC7224KTCA01.lbr` | Fusion / EAGLE library made with `adom-lbr generate` |+| `altium/MSASH168SC7224KTCA01.SchLib`, `altium/MSASH168SC7224KTCA01.PcbLib` | Altium symbol and footprint libraries (native binary) made with `adom-lbr import-kicad` and `assemble-altium` (the PcbLib embeds the STEP body); `MSASH168SC7224KTCA01.adom-lbr.json` is the adom-lbr hub record |+| `MSASH168SC7224KTCA01.step` | 3D model, STEP: Taiyo Yuden's own, bytes unchanged |+| `vendor/MSASH168SC7224KTCA01-taiyo-yuden-original.step` | the same file under its download name |+| `package-reference.glb` | 3D model, GLB (clean, for board viewers) |+| `msash168sc7224ktca01-hero.glb` | the page's 3D view: package plus footprint pad outlines, silkscreen and pad labels |+| `lod/` | board-use GLBs in four levels of detail, with previews and manifest |+| `provenance/manufacturer/MSASH168SC7224KTCA01-land.dxf` | Taiyo Yuden's land pattern drawing for this part, unchanged |++## Document figures++The pages this record cites, cropped from the PDFs:++| Figure | Source |+|---|---|+| [Catalog p.1 part numbering: series, rated voltage, size, thickness codes](docs/figures/ty-cat-p1-part-number.png) | Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages), p.1 |+| [Catalog p.2 dimension tolerance codes (code S, size 16)](docs/figures/ty-cat-p2-dimension-tolerance.png) | Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages), p.2 |+| [Catalog p.3 temperature characteristics codes (C7 = X7S)](docs/figures/ty-cat-p3-temperature.png) | Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages), p.3 |+| [Catalog p.4 capacitance, tolerance and packaging codes](docs/figures/ty-cat-p4-capacitance-packaging.png) | Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages), p.4 |+| [Catalog p.5 standard external dimensions (MSAS 16)](docs/figures/ty-cat-p5-dimensions.png) | Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages), p.5 |+| [Catalog p.6 standard quantity](docs/figures/ty-cat-p6-quantity.png) | Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages), p.6 |+| [Electrical Characteristics Data: capacitance and impedance vs frequency, DC bias, temperature, ripple](docs/figures/ty-chars-p1.png) | Taiyo Yuden, MSASH168SC7224KTCA01 Electrical Characteristics Data, 22U2A07 (1 page), p.1 |++## Sources and license++- Taiyo Yuden product page: https://ds.yuden.co.jp/TYCOMPAS/ut/detail?pn=MSASH168SC7224KTCA01&u=M (specifications, documents, STEP and DXF downloads), 2026-10-21+- KiCad library footprint: [Capacitor_SMD.pretty/C_0603_1608Metric.kicad_mod](https://gitlab.com/kicad/libraries/kicad-footprints/-/blob/master/Capacitor_SMD.pretty/C_0603_1608Metric.kicad_mod)+- Distributor numbers: Mouser, DigiKey and JLCPCB/LCSC through the Adom parts search, 2026-10-21++Original Adom content is CC-BY-4.0. Taiyo Yuden's STEP, DXF and PDFs keep Taiyo Yuden's terms and the KiCad footprint keeps+its upstream license (CC-BY-SA 4.0 with the KiCad library exception); see [LICENSE](LICENSE). [provenance.json](provenance.json)+records every source and file hash; the scripts that built the checks are in `provenance/tools/`.++This is a catalog record for the part, not a manufacturing approval: check Taiyo Yuden's current specification for your design.
altium/MSASH168SC7224KTCA01.PcbLibadded
⋯ 1 unchanged line ⋯
altium/MSASH168SC7224KTCA01.SchLibadded
⋯ 1 unchanged line ⋯
docs/figures/figures.jsonadded+93
@@ -0,0 +1,93 @@+[+ {+  "file": "docs/figures/ty-cat-p1-part-number.png",+  "document": "Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages)",+  "page": 1,+  "crop_px_at_150dpi": [+   0,+   30,+   1240,+   1680+  ],+  "caption": "Catalog p.1 part numbering: series, rated voltage, size, thickness codes",+  "sha256": "b5001e6157aeb25d166cc5e01ea0cec2354255d875641698bcef410904f5b191"+ },+ {+  "file": "docs/figures/ty-cat-p2-dimension-tolerance.png",+  "document": "Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages)",+  "page": 2,+  "crop_px_at_150dpi": [+   0,+   30,+   1240,+   1680+  ],+  "caption": "Catalog p.2 dimension tolerance codes (code S, size 16)",+  "sha256": "f8edbb1a48274bf6eef50abf9569229820f5de9228108399812cf1207a99ca1f"+ },+ {+  "file": "docs/figures/ty-cat-p3-temperature.png",+  "document": "Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages)",+  "page": 3,+  "crop_px_at_150dpi": [+   0,+   30,+   1240,+   840+  ],+  "caption": "Catalog p.3 temperature characteristics codes (C7 = X7S)",+  "sha256": "29f1bb52ba403c3d9ca4d9fa685daeaaaeaaf2731472a9f8fa861fa46e253873"+ },+ {+  "file": "docs/figures/ty-cat-p4-capacitance-packaging.png",+  "document": "Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages)",+  "page": 4,+  "crop_px_at_150dpi": [+   0,+   30,+   1240,+   840+  ],+  "caption": "Catalog p.4 capacitance, tolerance and packaging codes",+  "sha256": "3b93b66b3f5c098aff2770333cbeb15cb205f1aafbf219ffecd28d32c90a6e9c"+ },+ {+  "file": "docs/figures/ty-cat-p5-dimensions.png",+  "document": "Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages)",+  "page": 5,+  "crop_px_at_150dpi": [+   0,+   30,+   1240,+   960+  ],+  "caption": "Catalog p.5 standard external dimensions (MSAS 16)",+  "sha256": "1320516f915dc15db8bb140fae636eded9d8ca9bc20ab9aa0464fe9096d019e9"+ },+ {+  "file": "docs/figures/ty-cat-p6-quantity.png",+  "document": "Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages)",+  "page": 6,+  "crop_px_at_150dpi": [+   0,+   30,+   1240,+   840+  ],+  "caption": "Catalog p.6 standard quantity",+  "sha256": "1826d778c8d7d3372d7441d0f8679a15b1292316ea1996522186f8d7df6bdb47"+ },+ {+  "file": "docs/figures/ty-chars-p1.png",+  "document": "Taiyo Yuden, MSASH168SC7224KTCA01 Electrical Characteristics Data, 22U2A07 (1 page)",+  "page": 1,+  "crop_px_at_150dpi": [+   0,+   0,+   1240,+   1650+  ],+  "caption": "Electrical Characteristics Data: capacitance and impedance vs frequency, DC bias, temperature, ripple",+  "sha256": "0d0a7357e9a52d34360e109577109d4c3651d681fd876aebdb497be3cdd910af"+ }+]\ No newline at end of file
docs/figures/ty-cat-p1-part-number.pngadded
⋯ 1 unchanged line ⋯
docs/figures/ty-cat-p2-dimension-tolerance.pngadded
⋯ 1 unchanged line ⋯
docs/figures/ty-cat-p3-temperature.pngadded
⋯ 1 unchanged line ⋯
docs/figures/ty-cat-p4-capacitance-packaging.pngadded
⋯ 1 unchanged line ⋯
docs/figures/ty-cat-p5-dimensions.pngadded
⋯ 1 unchanged line ⋯
docs/figures/ty-cat-p6-quantity.pngadded
⋯ 1 unchanged line ⋯
docs/figures/ty-chars-p1.pngadded
⋯ 1 unchanged line ⋯
docs/hero.pngadded
⋯ 1 unchanged line ⋯
docs/models/step-plain.pngadded
⋯ 1 unchanged line ⋯
docs/msash168sc7224ktca01-characteristics.pdfadded
⋯ 1 unchanged line ⋯
docs/msash168sc7224ktca01-datasheet.pdfadded
⋯ 1 unchanged line ⋯
docs/taiyo-yuden-mlcc-packaging.pdfadded
⋯ 1 unchanged line ⋯
docs/verify/hero-preview.pngadded
⋯ 1 unchanged line ⋯
docs/verify/msash168sc7224ktca01-check.jsonadded+51
@@ -0,0 +1,51 @@+{+ "step": "MSASH168SC7224KTCA01.step",+ "bbox_mm": [+  -0.8,+  0.8,+  -0.4,+  0.4,+  0.0,+  0.9+ ],+ "checks": [+  {+   "dim": "L",+   "model_mm": 1.6,+   "datasheet_min": 1.5,+   "datasheet_max": 1.7000000000000002,+   "pass": true+  },+  {+   "dim": "W",+   "model_mm": 0.8,+   "datasheet_min": 0.7000000000000001,+   "datasheet_max": 0.9,+   "pass": true+  },+  {+   "dim": "T/H",+   "model_mm": 0.9,+   "datasheet_min": 0.7000000000000001,+   "datasheet_max": 0.9,+   "pass": true+  },+  {+   "dim": "e (terminal band), top",+   "model_mm": 0.35,+   "datasheet_min": 0.1,+   "datasheet_max": 0.6,+   "pass": true+  },+  {+   "dim": "e (terminal band), bottom",+   "model_mm": 0.35,+   "datasheet_min": 0.1,+   "datasheet_max": 0.6,+   "pass": true+  }+ ],+ "z_up_seated_centred": true,+ "long_axis_x": true,+ "all_pass": true+}\ No newline at end of file
docs/verify/msash168sc7224ktca01-overlay.pngadded
⋯ 1 unchanged line ⋯
land-pattern/README.mdadded+32
@@ -0,0 +1,32 @@+# Land pattern check: MSASH168SC7224KTCA01++The footprint on this page is KiCad's standard library footprint `Capacitor_SMD:C_0603_1608Metric`, renamed to+`C_0603_1608Metric_MSASH168SC7224KTCA01` so it can sit beside other parts in one library folder. The copper is unchanged. This page compares it with+the land pattern Taiyo Yuden publishes for this exact part number as a DXF drawing on the product page (kept unchanged in+`../provenance/manufacturer/MSASH168SC7224KTCA01-land.dxf`): two lands 0.6 mm long and 0.8 mm wide with a 0.8 mm gap, 2.0 mm overall+(layer L1; the solder resist openings on layer Resist are 0.05 mm larger all round).++![KiCad pads (teal) over Taiyo Yuden's land (amber dashed), true scale](land-pattern.png)++## Numbers++| Dimension | KiCad C_0603_1608Metric (used) | Taiyo Yuden land (DXF) | Difference |+|---|---|---|---|+| gap between lands | 0.65 mm | 0.80 mm | -0.15 mm |+| land length | 0.90 mm | 0.60 mm | +0.30 mm |+| land width | 0.95 mm | 0.80 mm | +0.15 mm |+| overall length | 2.45 mm | 2.00 mm | +0.45 mm |++The DXF carries outlines only, no dimension text; the numbers above are read from its polyline coordinates.++## Result++KiCad's pads (0.90 x 0.95 mm, gap 0.65 mm) are larger than Taiyo Yuden's land on every side and+contain it completely: they are 0.30 mm longer, 0.15 mm wider and reach 0.15 mm further under the part. KiCad generates+this footprint to IPC-7351 nominal density. Both cover the terminal band (e 0.35 +/-0.25 mm) and both are ordinary reflow+lands for a 1608 part; this page keeps the KiCad pads, as its library footprint. A design that wants the maker's land+should make each pad 0.6 x 0.8 mm with pad centres 1.4 mm apart. Taiyo Yuden's+precautions document (c_mlcc_prec_e, linked from the product page) warns that excessive solder can cause mechanical stress+that cracks the chip and gives its recommended land sizes for that reason.++The drawing and [land-check.json](land-check.json) come from `provenance/tools/landcheck.py`.
land-pattern/land-check.jsonadded+45
@@ -0,0 +1,45 @@+{+ "footprint": "C_0603_1608Metric_MSASH168SC7224KTCA01.kicad_mod",+ "kicad_library_footprint": "C_0603_1608Metric",+ "kicad": {+  "gap": 0.65,+  "len": 0.9,+  "wid": 0.95,+  "overall": 2.45+ },+ "maker_reference": {+  "gap": 0.8,+  "len": 0.6,+  "wid": 0.8,+  "overall": 2.0+ },+ "maker_source": "Taiyo Yuden land pattern for MSASH168SC7224KTCA01 (MSASH168SC7224KTCA01.dxf, layer L1, from the product page)",+ "maker_letters": "gap between lands, land length, land width (read from the DXF outlines; the DXF carries no dimension text)",+ "rows": [+  {+   "dim": "gap between lands",+   "kicad_mm": 0.65,+   "maker_nominal": 0.8,+   "difference_mm": -0.15+  },+  {+   "dim": "land length",+   "kicad_mm": 0.9,+   "maker_nominal": 0.6,+   "difference_mm": 0.3+  },+  {+   "dim": "land width",+   "kicad_mm": 0.95,+   "maker_nominal": 0.8,+   "difference_mm": 0.15+  },+  {+   "dim": "overall length",+   "kicad_mm": 2.45,+   "maker_nominal": 2.0,+   "difference_mm": 0.45+  }+ ],+ "all_within": null+}\ No newline at end of file
land-pattern/land-pattern-icon.pngadded
⋯ 1 unchanged line ⋯
land-pattern/land-pattern.pngadded
⋯ 1 unchanged line ⋯
lod/high.glbadded
⋯ 1 unchanged line ⋯
lod/high.pngadded
⋯ 1 unchanged line ⋯
lod/low.glbadded
⋯ 1 unchanged line ⋯
lod/low.pngadded
⋯ 1 unchanged line ⋯
lod/manifest.jsonadded+178
@@ -0,0 +1,178 @@+{+ "schema": "adom/component-lod@1",+ "mpn": "MSASH168SC7224KTCA01",+ "upAxis": "Z",+ "units": "metres",+ "status": "candidate (AI-checked, not human-reviewed)",+ "purpose": "clean board-use component models: no footprint pads, outlines, labels or silkscreen; no marking (the maker specifies none)",+ "source": {+  "path": "MSASH168SC7224KTCA01.step",+  "sha256": "775241ca92746a818b51e2fcfdd4ede8e4388b1d87ce8993ebef70737de9c464"+ },+ "sourceToDisplay": "uniform scale 0.001 (mm to m); no rotation, no translation; origin = footprint origin, seat z = 0",+ "generator": "lod.py (OCCT via cadquery-ocp)",+ "removedHelpers": [],+ "levels": [+  {+   "level": "high",+   "path": "lod/high.glb",+   "sha256": "f7007fb8d6baf6e4a61feaa2ff9d8f4a045aebec9fd504223d7eb3138b996d9b",+   "sizeBytes": 3888,+   "decodedBufferBytes": 2016,+   "triangles": 48,+   "primitives": 2,+   "bounds": {+    "min": [+     -0.0008,+     -0.0004,+     0.0+    ],+    "max": [+     0.0008,+     0.0004,+     0.0009+    ]+   },+   "approximation": {+    "method": "OCCT BRepMesh_IncrementalMesh",+    "linearDeflectionMm": 0.0005,+    "angularDeflectionRad": 0.1+   },+   "detailVisibility": {+    "virtualMpn": false,+    "note": "no marking: the datasheet specifies none"+   },+   "review": "Candidate: rendered preview checked by AI (silhouette, terminals, seat z=0); not human-reviewed",+   "preview": {+    "path": "lod/high.png",+    "sha256": "e39363fb2300e66fa30b1d2f7a1703a33afd25ef0adf8ee2db29a7ff886596a1",+    "sizeBytes": 6161,+    "width": 400,+    "height": 300,+    "view": "iso",+    "sourceLevelSha256": "f7007fb8d6baf6e4a61feaa2ff9d8f4a045aebec9fd504223d7eb3138b996d9b"+   }+  },+  {+   "level": "medium",+   "path": "lod/medium.glb",+   "sha256": "f7007fb8d6baf6e4a61feaa2ff9d8f4a045aebec9fd504223d7eb3138b996d9b",+   "sizeBytes": 3888,+   "decodedBufferBytes": 2016,+   "triangles": 48,+   "primitives": 2,+   "bounds": {+    "min": [+     -0.0008,+     -0.0004,+     0.0+    ],+    "max": [+     0.0008,+     0.0004,+     0.0009+    ]+   },+   "approximation": {+    "method": "OCCT BRepMesh_IncrementalMesh",+    "linearDeflectionMm": 0.004,+    "angularDeflectionRad": 0.35+   },+   "detailVisibility": {+    "virtualMpn": false,+    "note": "no marking: the datasheet specifies none"+   },+   "review": "Candidate: rendered preview checked by AI (silhouette, terminals, seat z=0); not human-reviewed",+   "preview": {+    "path": "lod/medium.png",+    "sha256": "e39363fb2300e66fa30b1d2f7a1703a33afd25ef0adf8ee2db29a7ff886596a1",+    "sizeBytes": 6161,+    "width": 400,+    "height": 300,+    "view": "iso",+    "sourceLevelSha256": "f7007fb8d6baf6e4a61feaa2ff9d8f4a045aebec9fd504223d7eb3138b996d9b"+   }+  },+  {+   "level": "low",+   "path": "lod/low.glb",+   "sha256": "f7007fb8d6baf6e4a61feaa2ff9d8f4a045aebec9fd504223d7eb3138b996d9b",+   "sizeBytes": 3888,+   "decodedBufferBytes": 2016,+   "triangles": 48,+   "primitives": 2,+   "bounds": {+    "min": [+     -0.0008,+     -0.0004,+     0.0+    ],+    "max": [+     0.0008,+     0.0004,+     0.0009+    ]+   },+   "approximation": {+    "method": "OCCT BRepMesh_IncrementalMesh",+    "linearDeflectionMm": 0.02,+    "angularDeflectionRad": 0.9+   },+   "detailVisibility": {+    "virtualMpn": false,+    "note": "no marking: the datasheet specifies none"+   },+   "review": "Candidate: rendered preview checked by AI (silhouette, terminals, seat z=0); not human-reviewed",+   "preview": {+    "path": "lod/low.png",+    "sha256": "e39363fb2300e66fa30b1d2f7a1703a33afd25ef0adf8ee2db29a7ff886596a1",+    "sizeBytes": 6161,+    "width": 400,+    "height": 300,+    "view": "iso",+    "sourceLevelSha256": "f7007fb8d6baf6e4a61feaa2ff9d8f4a045aebec9fd504223d7eb3138b996d9b"+   }+  },+  {+   "level": "super-low",+   "path": "lod/super-low.glb",+   "sha256": "35fc4f726eebfcde50ac08b4af2e513ae795801ebc9b8222fa3c0177491e3d94",+   "sizeBytes": 3812,+   "decodedBufferBytes": 1944,+   "triangles": 36,+   "primitives": 2,+   "bounds": {+    "min": [+     -0.0008,+     -0.0004,+     0.0+    ],+    "max": [+     0.0008,+     0.0004,+     0.0009+    ]+   },+   "approximation": {+    "method": "per-material bounding boxes split at the part centre (terminals, body, overcoat)"+   },+   "detailVisibility": {+    "virtualMpn": false,+    "note": "no marking: the datasheet specifies none"+   },+   "review": "Candidate: rendered preview checked by AI (silhouette, terminals, seat z=0); not human-reviewed",+   "preview": {+    "path": "lod/super-low.png",+    "sha256": "cdd3a08c0cb37162f3be254a9ecf1df0be3f88721898174510aa650f9da676f3",+    "sizeBytes": 6169,+    "width": 400,+    "height": 300,+    "view": "iso",+    "sourceLevelSha256": "35fc4f726eebfcde50ac08b4af2e513ae795801ebc9b8222fa3c0177491e3d94"+   }+  }+ ],+ "hints": [+  "All four levels share pose and units; super-low is boxes per material group, chosen for board overviews."+ ]+}\ No newline at end of file
lod/medium.glbadded
⋯ 1 unchanged line ⋯
lod/medium.pngadded
⋯ 1 unchanged line ⋯
lod/super-low.glbadded
⋯ 1 unchanged line ⋯
lod/super-low.pngadded
⋯ 1 unchanged line ⋯
models.jsonadded+163
@@ -0,0 +1,163 @@+{+ "schema": "adom/models@1",+ "part": "MSASH168SC7224KTCA01",+ "models": [+  {+   "path": "MSASH168SC7224KTCA01.step",+   "format": "step",+   "title": "Package model (STEP, Taiyo Yuden)",+   "status": "current",+   "slot": "step",+   "variant": "plain",+   "role": "manufacturer",+   "use": [+    "board-cad"+   ],+   "marking": null,+   "unique": "The board CAD model: Taiyo Yuden's own STEP for this part number, bytes unchanged, already Z-up and seated",+   "source": "Taiyo Yuden 3D model (STEP) from the product page (https://ds.yuden.co.jp/TYCOMPAS/ut/detail?pn=MSASH168SC7224KTCA01&u=M), bytes unchanged",+   "sha256": "775241ca92746a818b51e2fcfdd4ede8e4388b1d87ce8993ebef70737de9c464",+   "git_blob": "4edbbde3d41a91393284e711b3d6c33d46f81863",+   "bytes": 21215,+   "thumb": "docs/models/step-plain.png"+  },+  {+   "path": "vendor/MSASH168SC7224KTCA01-taiyo-yuden-original.step",+   "format": "step",+   "title": "Taiyo Yuden original download (STEP)",+   "status": "current",+   "variant": "original",+   "role": "manufacturer",+   "use": [+    "archive"+   ],+   "marking": null,+   "unique": "The file as downloaded (same bytes as the board model), kept under vendor/ with its original name",+   "source": "Taiyo Yuden 3D model (STEP) from the product page (https://ds.yuden.co.jp/TYCOMPAS/ut/detail?pn=MSASH168SC7224KTCA01&u=M), bytes unchanged",+   "sha256": "775241ca92746a818b51e2fcfdd4ede8e4388b1d87ce8993ebef70737de9c464",+   "git_blob": "4edbbde3d41a91393284e711b3d6c33d46f81863",+   "bytes": 21215+  },+  {+   "path": "package-reference.glb",+   "format": "glb",+   "title": "Package model (GLB)",+   "status": "current",+   "slot": "model_3d_plain",+   "variant": "plain",+   "role": "derived",+   "use": [+    "render",+    "board-insertion"+   ],+   "marking": null,+   "derived_from": "MSASH168SC7224KTCA01.step",+   "unique": "Clean board-use model for viewers (step2glb), no footprint artwork",+   "source": "Taiyo Yuden 3D model (STEP) from the product page (https://ds.yuden.co.jp/TYCOMPAS/ut/detail?pn=MSASH168SC7224KTCA01&u=M), bytes unchanged",+   "sha256": "f3518b6ae5e03a7f56037720332e9575b9b6583f3dce898f471279bec5357e15",+   "git_blob": "a71549fb2e0e7be339dc9762095c047595e90940",+   "bytes": 8000+  },+  {+   "path": "msash168sc7224ktca01-hero.glb",+   "format": "glb",+   "title": "Hero model (GLB)",+   "status": "current",+   "slot": "model_3d",+   "variant": "hero",+   "role": "derived",+   "use": [+    "wiki-hero"+   ],+   "marking": null,+   "derived_from": "package-reference.glb",+   "unique": "The page's 3D view: the package plus teal dashed pad outlines, silkscreen and pad-number labels from the footprint (adom-hero standard)",+   "source": "component-hero hero_glb.py",+   "sha256": "29d9f66eecb8078a420625d7126a4c9e065bcb05fa72852f19287ce4f938bbcd",+   "git_blob": "622c260f929ce0df76c6fafa8cf4232080eb24fd",+   "bytes": 35492,+   "thumb": "docs/verify/hero-preview.png"+  },+  {+   "path": "lod/high.glb",+   "format": "glb",+   "title": "Board LOD, high",+   "status": "current",+   "variant": "lod",+   "role": "derived",+   "use": [+    "board-insertion",+    "render"+   ],+   "marking": null,+   "derived_from": "MSASH168SC7224KTCA01.step",+   "unique": "high detail for board and scaffold viewers: 48 triangles, 2 primitives",+   "thumb": "lod/high.png",+   "source": "Taiyo Yuden 3D model (STEP) from the product page (https://ds.yuden.co.jp/TYCOMPAS/ut/detail?pn=MSASH168SC7224KTCA01&u=M), bytes unchanged",+   "sha256": "f7007fb8d6baf6e4a61feaa2ff9d8f4a045aebec9fd504223d7eb3138b996d9b",+   "git_blob": "3d3c8f7afae7a30e03b71a3fbbc3f61f316925ba",+   "bytes": 3888+  },+  {+   "path": "lod/medium.glb",+   "format": "glb",+   "title": "Board LOD, medium",+   "status": "current",+   "variant": "lod",+   "role": "derived",+   "use": [+    "board-insertion",+    "render"+   ],+   "marking": null,+   "derived_from": "MSASH168SC7224KTCA01.step",+   "unique": "medium detail for board and scaffold viewers: 48 triangles, 2 primitives",+   "thumb": "lod/medium.png",+   "source": "Taiyo Yuden 3D model (STEP) from the product page (https://ds.yuden.co.jp/TYCOMPAS/ut/detail?pn=MSASH168SC7224KTCA01&u=M), bytes unchanged",+   "sha256": "f7007fb8d6baf6e4a61feaa2ff9d8f4a045aebec9fd504223d7eb3138b996d9b",+   "git_blob": "3d3c8f7afae7a30e03b71a3fbbc3f61f316925ba",+   "bytes": 3888+  },+  {+   "path": "lod/low.glb",+   "format": "glb",+   "title": "Board LOD, low",+   "status": "current",+   "variant": "lod",+   "role": "derived",+   "use": [+    "board-insertion",+    "render"+   ],+   "marking": null,+   "derived_from": "MSASH168SC7224KTCA01.step",+   "unique": "low detail for board and scaffold viewers: 48 triangles, 2 primitives",+   "thumb": "lod/low.png",+   "source": "Taiyo Yuden 3D model (STEP) from the product page (https://ds.yuden.co.jp/TYCOMPAS/ut/detail?pn=MSASH168SC7224KTCA01&u=M), bytes unchanged",+   "sha256": "f7007fb8d6baf6e4a61feaa2ff9d8f4a045aebec9fd504223d7eb3138b996d9b",+   "git_blob": "3d3c8f7afae7a30e03b71a3fbbc3f61f316925ba",+   "bytes": 3888+  },+  {+   "path": "lod/super-low.glb",+   "format": "glb",+   "title": "Board LOD, super-low",+   "status": "current",+   "variant": "lod",+   "role": "derived",+   "use": [+    "board-insertion",+    "render"+   ],+   "marking": null,+   "derived_from": "MSASH168SC7224KTCA01.step",+   "unique": "super-low detail for board and scaffold viewers: 36 triangles, 2 primitives",+   "thumb": "lod/super-low.png",+   "source": "Taiyo Yuden 3D model (STEP) from the product page (https://ds.yuden.co.jp/TYCOMPAS/ut/detail?pn=MSASH168SC7224KTCA01&u=M), bytes unchanged",+   "sha256": "35fc4f726eebfcde50ac08b4af2e513ae795801ebc9b8222fa3c0177491e3d94",+   "git_blob": "b060d585a46fb92f0a2f8e3b09a859e01bb8476e",+   "bytes": 3812+  }+ ],+ "updated": "2026-10-21"+}\ No newline at end of file
msash168sc7224ktca01-hero.glbadded
⋯ 1 unchanged line ⋯
msash168sc7224ktca01-hero.overlay.jsonadded+125
@@ -0,0 +1,125 @@+{+ "spec": "adom-hero 1.4",+ "mpn": "MSASH168SC7224KTCA01",+ "kind": "component + footprint reference art",+ "board_use": false,+ "plane_z_mm": -0.02,+ "units": "metre",+ "upAxis": "Z",+ "layers": {+  "pad_outlines": {+   "material": "Footprint pads - teal dashed outlines - 50 percent opacity",+   "rgba": [+    0.0,+    0.902,+    0.863,+    0.5+   ],+   "pads": 2,+   "span_mm": 2.45,+   "dash_mm": 0.12,+   "gap_mm": 0.072,+   "pad_stroke_mm": 0.03+  },+  "silkscreen": {+   "material": "Silkscreen reference lines - 30 percent opacity",+   "rgba": [+    0.92,+    0.96,+    1.0,+    0.3+   ],+   "footprint_items": 2,+   "pin1": null+  },+  "signal_names": {+   "material": "Signal names - 50 percent opacity",+   "rgba": [+    0.92,+    0.96,+    1.0,+    0.5+   ],+   "font": "DejaVu Sans Mono",+   "labels": 2,+   "sides": "top + mirrored underside (single-sided)",+   "omitted": null,+   "fallback_to_pad_number": 2+  }+ },+ "align": {+  "ok": true,+  "centre_offset_mm": 0.0,+  "tolerance_mm": 0.25,+  "orientation_flipped": false,+  "contacts_bbox_mm": [+   -0.8,+   0.8,+   -0.4,+   0.4+  ],+  "pads_bbox_mm": [+   -1.225,+   1.225,+   -0.475,+   0.475+  ],+  "seating_z_mm": 0.0+ },+ "sources": {+  "glb": "package-reference.glb",+  "glb_sha256": "f3518b6ae5e03a7f56037720332e9575b9b6583f3dce898f471279bec5357e15",+  "footprint": "C_0603_1608Metric_MSASH168SC7224KTCA01.kicad_mod",+  "footprint_sha256": "90df1094797221e8a48df7e5749b1252256b119c89bf58f2bc25e059e5fbd0c5",+  "pins": "page.json component.pins"+ },+ "generator": "factory/hero_glb.py",+ "labels": [+  {+   "pad": "1",+   "text": "1",+   "x": -1.375,+   "y": 0.0,+   "align": "right",+   "vertical": false,+   "h": 0.6+  },+  {+   "pad": "2",+   "text": "2",+   "x": 1.375,+   "y": 0.0,+   "align": "left",+   "vertical": false,+   "h": 0.6+  }+ ],+ "pads": [+  {+   "number": "1",+   "shape": "roundrect",+   "center_mm": [+    -0.775,+    0.0+   ],+   "size_mm": [+    0.9,+    0.95+   ],+   "rot": 0.0+  },+  {+   "number": "2",+   "shape": "roundrect",+   "center_mm": [+    0.775,+    0.0+   ],+   "size_mm": [+    0.9,+    0.95+   ],+   "rot": 0.0+  }+ ]+}\ No newline at end of file
package-reference.glbadded
⋯ 1 unchanged line ⋯
package.jsonadded+10
@@ -0,0 +1,10 @@+{+ "name": "msash168sc7224ktca01",+ "title": "MSASH168SC7224KTCA01 - Taiyo Yuden",+ "version": "0.1.0",+ "description": "MLCC 0.22 uF +/-10 %, 100 V, X7S, 0603 (1608 metric)",+ "type": "hardware",+ "kind": "component",+ "license": "CC-BY-4.0",+ "files": []+}\ No newline at end of file
provenance.jsonadded+346
@@ -0,0 +1,346 @@+{+ "manufacturer_reference": "https://ds.yuden.co.jp/TYCOMPAS/ut/detail?pn=MSASH168SC7224KTCA01&u=M",+ "product_page_specs_read": {+  "date": "2026-10-21",+  "status": "Mass Production (Preferred)",+  "capacitance": "0.22 uF +/-10 %",+  "rated_voltage": "100 V",+  "tan_delta_max": "3.5 %",+  "temperature_characteristic": "X7S",+  "operating_temperature": "-55 to +125 C",+  "capacitance_change": "+/-22 %",+  "high_temperature_loading": "150 % rated voltage",+  "insulation_resistance_min": "100 MOhm uF",+  "dimensions_mm": {+   "L": "1.6 +/-0.10",+   "W": "0.8 +/-0.10",+   "T": "0.8 +/-0.10",+   "e": "0.35 +/-0.25"+  },+  "standard_quantity": "paper tape 4000 pcs",+  "soldering": "reflow",+  "rohs": true,+  "reach": true,+  "halogen_free": true,+  "previous_part_number": "HMK107C7224KA-TE"+ },+ "symbol_source": "Original, written for this page (standard capacitor graphic, non-polar, pin ends on the 2.54 mm grid). CC-BY-4.0.",+ "footprint_source": "KiCad standard library Capacitor_SMD:C_0603_1608Metric (CC-BY-SA 4.0 with the KiCad library exception); renamed C_0603_1608Metric_MSASH168SC7224KTCA01, model path ${KIPRJMOD}/MSASH168SC7224KTCA01.step; copper unchanged",+ "footprint_upstream_url": "https://gitlab.com/kicad/libraries/kicad-footprints/-/raw/master/Capacitor_SMD.pretty/C_0603_1608Metric.kicad_mod",+ "footprint_upstream_sha256": "fe0dbfefbb181a0466f93a8de52d84ba7b00fcd9acdbb69575f4128a0af4e405",+ "manufacturer_step": {+  "found": true,+  "url": "https://ds.yuden.co.jp/TYCOMPAS/ut/download?pn=MSASH168SC7224KTCA01&fileType=3D_Filename",+  "method": "plain HTTP GET with the session cookie and referer of the product page (no browser)",+  "retrieved": "2026-10-21",+  "file": "vendor/MSASH168SC7224KTCA01-taiyo-yuden-original.step",+  "sha256": "775241ca92746a818b51e2fcfdd4ede8e4388b1d87ce8993ebef70737de9c464",+  "units": "mm",+  "up_axis": "Z",+  "seat_z": 0,+  "transform": "none",+  "colours": "as supplied (body 0.25 grey, terminals 0.75 grey, sRGB)"+ },+ "manufacturer_land": {+  "file": "provenance/manufacturer/MSASH168SC7224KTCA01-land.dxf",+  "sha256": "64a4a3239ce05825e7eec5a0dfb1bbe55d1619c504b5547d4cf21806f559c73c",+  "url": "https://ds.yuden.co.jp/TYCOMPAS/ut/download?pn=MSASH168SC7224KTCA01&fileType=land_Filename",+  "read": "layer L1 lands x 0.4 to 1.0 mm, y -0.4 to 0.4 mm (both sides); layer Resist 0.05 mm larger; layer Comp body 1.6 x 0.8 mm"+ },+ "geometry_status": "Manufacturer-issued CAD for this part number, every printed dimension checked (docs/verify).",+ "marking": {+  "real_marking": null,+  "statement": "Taiyo Yuden specifies no marking for this part: the catalog, the characteristics sheet and the product page have no marking section, and the maker's 3D model has a plain body",+  "source": "c_mlcc_S_e-E14R02, 22U2A07 and the product page, searched 2026-10-21"+ },+ "frame": {+  "units": "mm (STEP), metres (GLB)",+  "up_axis": "Z",+  "seat_z": 0,+  "origin": "footprint origin",+  "transform": "none"+ },+ "glb": {+  "tool": "step2glb convert (service)",+  "source": "MSASH168SC7224KTCA01.step",+  "exit": 0+ },+ "hero_image": {+  "tool": "step2glb thumbnail --width 1600 --height 1000 (iso, 16:10)",+  "source": "MSASH168SC7224KTCA01.step",+  "path": "docs/hero.png"+ },+ "hero_glb": {+  "file": "msash168sc7224ktca01-hero.glb",+  "tool": "adom/component-hero skills/component-hero/scripts/hero_glb.py",+  "tool_sha256": "429e437a3f2e5f1dc3544fe65843ea4e019637f0a6163060cda2ae210f3af7bc",+  "inputs": [+   "package-reference.glb",+   "C_0603_1608Metric_MSASH168SC7224KTCA01.kicad_mod",+   "page.json"+  ],+  "result": "OK msash168sc7224ktca01-hero.glb: pads 2, silk items 2, pin1 none, labels 2; align OK (offset 0.0 mm)",+  "sha256": "29d9f66eecb8078a420625d7126a4c9e065bcb05fa72852f19287ce4f938bbcd"+ },+ "fusion_lbr": {+  "file": "MSASH168SC7224KTCA01.lbr",+  "tool": "adom-lbr 2.47.6",+  "command": "adom-lbr generate --sym MSASH168SC7224KTCA01.kicad_sym --fp C_0603_1608Metric_MSASH168SC7224KTCA01.kicad_mod --part-metadata page.json -o MSASH168SC7224KTCA01.lbr",+  "lint": {+   "passed": true,+   "errors": 0,+   "warnings": 0+  },+  "sha256": "913dd1a8f70c958b690f61534cdae897bdd3fc2ddb3cb770292e6e92d5de82d8"+ },+ "altium": {+  "files": [+   "altium/MSASH168SC7224KTCA01.SchLib",+   "altium/MSASH168SC7224KTCA01.PcbLib",+   "MSASH168SC7224KTCA01.adom-lbr.json"+  ],+  "commands": [+   "adom-lbr import-kicad --sym MSASH168SC7224KTCA01.kicad_sym --fp C_0603_1608Metric_MSASH168SC7224KTCA01.kicad_mod --mpn MSASH168SC7224KTCA01 --out MSASH168SC7224KTCA01.adom-lbr.json",+   "adom-lbr assemble-altium --no-dedupe --out altium/MSASH168SC7224KTCA01 MSASH168SC7224KTCA01.adom-lbr.json"+  ],+  "report": {+   "_hint": "components are named by MPN; identical land patterns share one footprint. skipped[] is the complete drop list, never silent. lostFeatures[] names what the Altium lane could not carry (warn and ship); under --strict those parts move to refused[] and skipped[], the rest still assemble, status is partial and the exit code 2 while the files written stay valid.",+   "components": 1,+   "deduped": [],+   "footprints": 1,+   "lostFeatures": [],+   "models": {+    "embedded": 1,+    "missing": []+   },+   "pcblib": "altium/MSASH168SC7224KTCA01.PcbLib",+   "refused": [],+   "renamed": [],+   "schlib": "altium/MSASH168SC7224KTCA01.SchLib",+   "skipped": [],+   "status": "ok"+  },+  "hints": [+   "HINT: identity complete (MPN, Manufacturer, Datasheet, Description, Mouser, DigiKey, LCSC, Adom Wiki) - they become Altium parameters + Supplier links and EAGLE attributes."+  ],+  "sha256": {+   "altium/MSASH168SC7224KTCA01.SchLib": "28a2a2fcfb26ac4b88606c153c95099835e182066a05ac664371864d1014f16a",+   "altium/MSASH168SC7224KTCA01.PcbLib": "eedb98c9ad22173166f19a2d6109048c47455628c8c0f244fcb7192b74de89d7",+   "MSASH168SC7224KTCA01.adom-lbr.json": "5710e7266ca1372a66413d6cfe92dc1e6b58898802fd5528ad5a65e96d466cf7"+  }+ },+ "documents": [+  {+   "file": "docs/msash168sc7224ktca01-datasheet.pdf",+   "sha256": "276b1a7cd3d18c2c3040e93b0d71d7f33fbdd850678c7aada603a38dfc8b9b24",+   "url": "https://ds.yuden.co.jp/TYCOMPAS/ut/download?pn=MSASH168SC7224KTCA01&fileType=CS",+   "title": "Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages)",+   "retrieved": "2026-10-21"+  },+  {+   "file": "docs/msash168sc7224ktca01-characteristics.pdf",+   "sha256": "ffb922f15544ad31636c011b07b89f9ba26b255b080190e55640307911dd0e19",+   "url": "https://ds.yuden.co.jp/TYCOMPAS/ut/download?pn=MSASH168SC7224KTCA01&fileType=Datasheet",+   "title": "Taiyo Yuden, MSASH168SC7224KTCA01 Electrical Characteristics Data, 22U2A07 (1 page)",+   "retrieved": "2026-10-21"+  },+  {+   "file": "docs/taiyo-yuden-mlcc-packaging.pdf",+   "sha256": "864a68ab54da074a233e154a52609f598b37f0887246fd3a7a9790ab24c8df83",+   "url": "https://ds.yuden.co.jp/TYCOMPAS/ut/download?pn=MSASH168SC7224KTCA01&fileType=PK",+   "title": "Taiyo Yuden, Multilayer Ceramic Capacitors packaging catalog c_mlcc_pack_e (4 pages)",+   "retrieved": "2026-10-21"+  }+ ],+ "document_figures": [+  {+   "file": "docs/figures/ty-cat-p1-part-number.png",+   "document": "Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages)",+   "page": 1,+   "crop_px_at_150dpi": [+    0,+    30,+    1240,+    1680+   ],+   "caption": "Catalog p.1 part numbering: series, rated voltage, size, thickness codes",+   "sha256": "b5001e6157aeb25d166cc5e01ea0cec2354255d875641698bcef410904f5b191"+  },+  {+   "file": "docs/figures/ty-cat-p2-dimension-tolerance.png",+   "document": "Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages)",+   "page": 2,+   "crop_px_at_150dpi": [+    0,+    30,+    1240,+    1680+   ],+   "caption": "Catalog p.2 dimension tolerance codes (code S, size 16)",+   "sha256": "f8edbb1a48274bf6eef50abf9569229820f5de9228108399812cf1207a99ca1f"+  },+  {+   "file": "docs/figures/ty-cat-p3-temperature.png",+   "document": "Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages)",+   "page": 3,+   "crop_px_at_150dpi": [+    0,+    30,+    1240,+    840+   ],+   "caption": "Catalog p.3 temperature characteristics codes (C7 = X7S)",+   "sha256": "29f1bb52ba403c3d9ca4d9fa685daeaaaeaaf2731472a9f8fa861fa46e253873"+  },+  {+   "file": "docs/figures/ty-cat-p4-capacitance-packaging.png",+   "document": "Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages)",+   "page": 4,+   "crop_px_at_150dpi": [+    0,+    30,+    1240,+    840+   ],+   "caption": "Catalog p.4 capacitance, tolerance and packaging codes",+   "sha256": "3b93b66b3f5c098aff2770333cbeb15cb205f1aafbf219ffecd28d32c90a6e9c"+  },+  {+   "file": "docs/figures/ty-cat-p5-dimensions.png",+   "document": "Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages)",+   "page": 5,+   "crop_px_at_150dpi": [+    0,+    30,+    1240,+    960+   ],+   "caption": "Catalog p.5 standard external dimensions (MSAS 16)",+   "sha256": "1320516f915dc15db8bb140fae636eded9d8ca9bc20ab9aa0464fe9096d019e9"+  },+  {+   "file": "docs/figures/ty-cat-p6-quantity.png",+   "document": "Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages)",+   "page": 6,+   "crop_px_at_150dpi": [+    0,+    30,+    1240,+    840+   ],+   "caption": "Catalog p.6 standard quantity",+   "sha256": "1826d778c8d7d3372d7441d0f8679a15b1292316ea1996522186f8d7df6bdb47"+  },+  {+   "file": "docs/figures/ty-chars-p1.png",+   "document": "Taiyo Yuden, MSASH168SC7224KTCA01 Electrical Characteristics Data, 22U2A07 (1 page)",+   "page": 1,+   "crop_px_at_150dpi": [+    0,+    0,+    1240,+    1650+   ],+   "caption": "Electrical Characteristics Data: capacitance and impedance vs frequency, DC bias, temperature, ripple",+   "sha256": "0d0a7357e9a52d34360e109577109d4c3651d681fd876aebdb497be3cdd910af"+  }+ ],+ "dc_bias_reading": "values in the README read off the plotted DC bias curve of 22U2A07 (approximate): about -30 % at 20 V, -60 % at 40 V, -80 % at 60 V, -90 % near 100 V",+ "datasheet_check": {+  "overlay": "docs/verify/msash168sc7224ktca01-overlay.png",+  "numbers": "docs/verify/msash168sc7224ktca01-check.json",+  "result": "PASS"+ },+ "land_pattern_check": {+  "readme": "land-pattern/README.md",+  "numbers": "land-pattern/land-check.json",+  "source": "Taiyo Yuden land pattern for MSASH168SC7224KTCA01 (MSASH168SC7224KTCA01.dxf, layer L1, from the product page)",+  "result": "KiCad pads larger than and containing the maker's land; KiCad kept"+ },+ "distributors": {+  "tool": "adom-parts-search search MSASH168SC7224KTCA01",+  "date": "2026-10-21",+  "mouser": {+   "part": "963-MSASH168SC7224KT",+   "url": "https://www.mouser.com/ProductDetail/TAIYO-YUDEN/MSASH168SC7224KTCA01?qs=tlsG%2FOw5FFjGLxgyt65IHw%3D%3D",+   "stock": 3875+  },+  "digikey": {+   "part": "587-MSASH168SC7224KTCA01TR-ND",+   "url": "https://www.digikey.com/en/products/detail/taiyo-yuden/MSASH168SC7224KTCA01/19292991",+   "stock": 0+  },+  "lcsc": null,+  "lcsc_note": "JLCPCB/LCSC search for MSASH168SC7224KTCA01 returned no part on 2026-10-21"+ },+ "lod": {+  "manifest": "lod/manifest.json",+  "generator": "provenance/tools/lod.py",+  "source": "MSASH168SC7224KTCA01.step",+  "source_sha256": "775241ca92746a818b51e2fcfdd4ede8e4388b1d87ce8993ebef70737de9c464"+ },+ "tools_note": "Scripts adapted from adom/rc0402fr-0733kl and adom/grm188r72a103ka01d.",+ "files": {+  "msash168sc7224ktca01-hero.overlay.json": "a968b362689f22a97932baf5ccb770e5463d7446babdbe813cad2bd396d6d06a",+  "verification.json": "b81cdf21846890327282f6094eda5ef0000f6ae839678f0796f0c4534c41369b",+  "MSASH168SC7224KTCA01.adom-lbr.json": "5710e7266ca1372a66413d6cfe92dc1e6b58898802fd5528ad5a65e96d466cf7",+  "MSASH168SC7224KTCA01.lbr": "913dd1a8f70c958b690f61534cdae897bdd3fc2ddb3cb770292e6e92d5de82d8",+  "MSASH168SC7224KTCA01.kicad_sym": "09f612af51251549ef0fa928c79d65ce3a817d8f9e5500392f4b6f7331ff57c4",+  "package-reference.glb": "f3518b6ae5e03a7f56037720332e9575b9b6583f3dce898f471279bec5357e15",+  "MSASH168SC7224KTCA01.step": "775241ca92746a818b51e2fcfdd4ede8e4388b1d87ce8993ebef70737de9c464",+  "package.json": "52ecf04ad1956f209ea69778e87341c1da88490102942ea4a83aa09f34828352",+  "models.json": "01fa12084301536615379cdb158c656233afb02fcf607d534ae7b784159a5ac4",+  "msash168sc7224ktca01-hero.glb": "29d9f66eecb8078a420625d7126a4c9e065bcb05fa72852f19287ce4f938bbcd",+  "LICENSE": "e6471ec9759ec732e1e6a081bfee6164634d5ecacc2dc51e3df6d4288eb13760",+  "page.json": "4e9a164f46d182a9a193b6ab8f5bbc9478f09d1cddfbdd19eb922dc838eacfa3",+  "C_0603_1608Metric_MSASH168SC7224KTCA01.kicad_mod": "90df1094797221e8a48df7e5749b1252256b119c89bf58f2bc25e059e5fbd0c5",+  "README.md": "056f510ff4533fd3448d5a70b8b34af0eab72adb1d377f2ad5ee26bf91adcd68",+  "provenance/manufacturer/MSASH168SC7224KTCA01-land.dxf": "64a4a3239ce05825e7eec5a0dfb1bbe55d1619c504b5547d4cf21806f559c73c",+  "provenance/tools/finish.py": "8aabfb27e56fd725b8c7e328b7314be41578cd39e0a30b76b596cdd259667402",+  "provenance/tools/parts.py": "aaa45a4764a800cc9c726a3d7512b776c7d336207a77d7ed991ed5eff5bf8b1e",+  "provenance/tools/records.py": "f7ec24be18005052a8df4ec1d642befc2610e08fd71d88886ac50b3c0e3a40e6",+  "provenance/tools/landcheck.py": "294cb1b7b566430117bebc8cc1cab57eb870ba357a86a01d15e614a8f6e07d21",+  "provenance/tools/msash168sc7224ktca01-overlay-spec.json": "244ea5e77c2af84b4b3fdd35d0ee752fb6a411b21774c503a00b1de1a3bbd5fa",+  "provenance/tools/overlay_chip.py": "52617a63c9504e020e574ec63f39f518734032fcda7b14ad158e3f8907b31723",+  "provenance/tools/ortho.py": "7208a841451aa016a488d2ddbc6c0f92650c8a0a1f61d4fca2893a61bbb35b7e",+  "provenance/tools/lod.py": "98ac419e109fd403ef9522048530bc2f71147c196bab1dc9d5cda12fc2cd8b06",+  "provenance/tools/push.sh": "9730987a7d277b7e5386319767b97407da89ab20317beceb5a4f914160f82694",+  "provenance/tools/verify_live.py": "6b95fdc89dcc61cebd5295fc1c146060217084abc83312996158294843c71e03",+  "provenance/tools/build.py": "80ae41541706ccdc52cba0f4b4285d8dc312652a067e617123ef8bcf32eb0f9b",+  "lod/low.png": "e39363fb2300e66fa30b1d2f7a1703a33afd25ef0adf8ee2db29a7ff886596a1",+  "lod/super-low.png": "cdd3a08c0cb37162f3be254a9ecf1df0be3f88721898174510aa650f9da676f3",+  "lod/low.glb": "f7007fb8d6baf6e4a61feaa2ff9d8f4a045aebec9fd504223d7eb3138b996d9b",+  "lod/high.png": "e39363fb2300e66fa30b1d2f7a1703a33afd25ef0adf8ee2db29a7ff886596a1",+  "lod/manifest.json": "1e9c0174050553c795a27069868514ec5faa1562f9ea7df5bc4dd942a0ea8de8",+  "lod/super-low.glb": "35fc4f726eebfcde50ac08b4af2e513ae795801ebc9b8222fa3c0177491e3d94",+  "lod/medium.glb": "f7007fb8d6baf6e4a61feaa2ff9d8f4a045aebec9fd504223d7eb3138b996d9b",+  "lod/high.glb": "f7007fb8d6baf6e4a61feaa2ff9d8f4a045aebec9fd504223d7eb3138b996d9b",+  "lod/medium.png": "e39363fb2300e66fa30b1d2f7a1703a33afd25ef0adf8ee2db29a7ff886596a1",+  "docs/msash168sc7224ktca01-datasheet.pdf": "276b1a7cd3d18c2c3040e93b0d71d7f33fbdd850678c7aada603a38dfc8b9b24",+  "docs/taiyo-yuden-mlcc-packaging.pdf": "864a68ab54da074a233e154a52609f598b37f0887246fd3a7a9790ab24c8df83",+  "docs/msash168sc7224ktca01-characteristics.pdf": "ffb922f15544ad31636c011b07b89f9ba26b255b080190e55640307911dd0e19",+  "docs/hero.png": "3607500f3e9bbfbac844c72bb9337514b04a4396bee21ce6fdbc4dc111cc2078",+  "docs/models/step-plain.png": "fae7a510cdb2ba681b1175c1ff7968db55a1587b757b18c74c6d3c763bdf6c0e",+  "docs/verify/msash168sc7224ktca01-overlay.png": "0e6a533baa8131a1d36b547e8b8a0a282c97675038bf662aee9facdc8507d986",+  "docs/verify/hero-preview.png": "3a0aac6255a6aa94ca7cdbf33dad5708803f2814debdcf592a95205eb683527e",+  "docs/verify/msash168sc7224ktca01-check.json": "179ed2966b4d88986fb9ee98522f494be329aeed685a5aef395add9e8d98299a",+  "docs/figures/ty-cat-p6-quantity.png": "1826d778c8d7d3372d7441d0f8679a15b1292316ea1996522186f8d7df6bdb47",+  "docs/figures/ty-cat-p2-dimension-tolerance.png": "f8edbb1a48274bf6eef50abf9569229820f5de9228108399812cf1207a99ca1f",+  "docs/figures/ty-chars-p1.png": "0d0a7357e9a52d34360e109577109d4c3651d681fd876aebdb497be3cdd910af",+  "docs/figures/ty-cat-p3-temperature.png": "29f1bb52ba403c3d9ca4d9fa685daeaaaeaaf2731472a9f8fa861fa46e253873",+  "docs/figures/ty-cat-p4-capacitance-packaging.png": "3b93b66b3f5c098aff2770333cbeb15cb205f1aafbf219ffecd28d32c90a6e9c",+  "docs/figures/ty-cat-p5-dimensions.png": "1320516f915dc15db8bb140fae636eded9d8ca9bc20ab9aa0464fe9096d019e9",+  "docs/figures/ty-cat-p1-part-number.png": "b5001e6157aeb25d166cc5e01ea0cec2354255d875641698bcef410904f5b191",+  "docs/figures/figures.json": "81998752b0e980696bf2117694485aa0e0e446b55ee6653443fc4143f87a1b24",+  "land-pattern/land-check.json": "565d51b97a5f155bf35589d2074e53ad730a5108bdc64add90938fe1a7e0123b",+  "land-pattern/land-pattern-icon.png": "ee0ff8d88f2b4fe54e5659ca1110cc6214e64c3034ba32bd51b39442c7503ca6",+  "land-pattern/land-pattern.png": "b0e47af799f77d49d466689c8d9030bdf67cfc9958cf1b2bdec6dd0a4fd76727",+  "land-pattern/README.md": "9030a597f96d3d16f6492a6ea2059c53ce898a56e64c0680773de9050903c1cd",+  "vendor/MSASH168SC7224KTCA01-taiyo-yuden-original.step": "775241ca92746a818b51e2fcfdd4ede8e4388b1d87ce8993ebef70737de9c464",+  "altium/MSASH168SC7224KTCA01.PcbLib": "eedb98c9ad22173166f19a2d6109048c47455628c8c0f244fcb7192b74de89d7",+  "altium/MSASH168SC7224KTCA01.SchLib": "28a2a2fcfb26ac4b88606c153c95099835e182066a05ac664371864d1014f16a"+ },+ "files_note": "provenance.json itself is not listed.",+ "built_by": "Claude (AI agent) for John Lauer",+ "date": "2026-10-21"+}\ No newline at end of file
provenance/manufacturer/MSASH168SC7224KTCA01-land.dxfadded+13650
@@ -0,0 +1,13650 @@+  0
+SECTION
+  2
+HEADER
+  9
+$ACADVER
+  1
+AC1032
+  9
+$ACADMAINTVER
+ 90
+      174
+  9
+$DWGCODEPAGE
+  3
+ANSI_932
+  9
+$LASTSAVEDBY
+  1
+jt0871031
+  9
+$REQUIREDVERSIONS
+160
+                 0
+  9
+$INSBASE
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  9
+$EXTMIN
+ 10
+-1.324999999999999
+ 20
+-0.7250000000000001
+ 30
+0.0
+  9
+$EXTMAX
+ 10
+1.324999999999999
+ 20
+0.725
+ 30
+0.0
+  9
+$LIMMIN
+ 10
+0.0
+ 20
+0.0
+  9
+$LIMMAX
+ 10
+420.0
+ 20
+297.0
+  9
+$ORTHOMODE
+ 70
+     0
+  9
+$REGENMODE
+ 70
+     1
+  9
+$FILLMODE
+ 70
+     1
+  9
+$QTEXTMODE
+ 70
+     0
+  9
+$MIRRTEXT
+ 70
+     0
+  9
+$LTSCALE
+ 40
+1.0
+  9
+$ATTMODE
+ 70
+     1
+  9
+$TEXTSIZE
+ 40
+2.5
+  9
+$TRACEWID
+ 40
+1.0
+  9
+$TEXTSTYLE
+  7
+Standard
+  9
+$CLAYER
+  8
+Silk
+  9
+$CELTYPE
+  6
+ByLayer
+  9
+$CECOLOR
+ 62
+   256
+  9
+$CELTSCALE
+ 40
+1.0
+  9
+$DISPSILH
+ 70
+     0
+  9
+$DIMSCALE
+ 40
+1.0
+  9
+$DIMASZ
+ 40
+2.5
+  9
+$DIMEXO
+ 40
+0.625
+  9
+$DIMDLI
+ 40
+3.75
+  9
+$DIMRND
+ 40
+0.0
+  9
+$DIMDLE
+ 40
+0.0
+  9
+$DIMEXE
+ 40
+1.25
+  9
+$DIMTP
+ 40
+0.0
+  9
+$DIMTM
+ 40
+0.0
+  9
+$DIMTXT
+ 40
+2.5
+  9
+$DIMCEN
+ 40
+2.5
+  9
+$DIMTSZ
+ 40
+0.0
+  9
+$DIMTOL
+ 70
+     0
+  9
+$DIMLIM
+ 70
+     0
+  9
+$DIMTIH
+ 70
+     0
+  9
+$DIMTOH
+ 70
+     0
+  9
+$DIMSE1
+ 70
+     0
+  9
+$DIMSE2
+ 70
+     0
+  9
+$DIMTAD
+ 70
+     1
+  9
+$DIMZIN
+ 70
+     8
+  9
+$DIMBLK
+  1
+
+  9
+$DIMASO
+ 70
+     1
+  9
+$DIMSHO
+ 70
+     1
+  9
+$DIMPOST
+  1
+
+  9
+$DIMAPOST
+  1
+
+  9
+$DIMALT
+ 70
+     0
+  9
+$DIMALTD
+ 70
+     3
+  9
+$DIMALTF
+ 40
+0.03937007874016
+  9
+$DIMLFAC
+ 40
+1.0
+  9
+$DIMTOFL
+ 70
+     1
+  9
+$DIMTVP
+ 40
+0.0
+  9
+$DIMTIX
+ 70
+     0
+  9
+$DIMSOXD
+ 70
+     0
+  9
+$DIMSAH
+ 70
+     0
+  9
+$DIMBLK1
+  1
+
+  9
+$DIMBLK2
+  1
+
+  9
+$DIMSTYLE
+  2
+ISO-25
+  9
+$DIMCLRD
+ 70
+     0
+  9
+$DIMCLRE
+ 70
+     0
+  9
+$DIMCLRT
+ 70
+     0
+  9
+$DIMTFAC
+ 40
+1.0
+  9
+$DIMGAP
+ 40
+0.625
+  9
+$DIMJUST
+ 70
+     0
+  9
+$DIMSD1
+ 70
+     0
+  9
+$DIMSD2
+ 70
+     0
+  9
+$DIMTOLJ
+ 70
+     0
+  9
+$DIMTZIN
+ 70
+     8
+  9
+$DIMALTZ
+ 70
+     0
+  9
+$DIMALTTZ
+ 70
+     0
+  9
+$DIMUPT
+ 70
+     0
+  9
+$DIMDEC
+ 70
+     2
+  9
+$DIMTDEC
+ 70
+     2
+  9
+$DIMALTU
+ 70
+     2
+  9
+$DIMALTTD
+ 70
+     3
+  9
+$DIMTXSTY
+  7
+Standard
+  9
+$DIMAUNIT
+ 70
+     0
+  9
+$DIMADEC
+ 70
+     0
+  9
+$DIMALTRND
+ 40
+0.0
+  9
+$DIMAZIN
+ 70
+     0
+  9
+$DIMDSEP
+ 70
+    46
+  9
+$DIMATFIT
+ 70
+     3
+  9
+$DIMFRAC
+ 70
+     0
+  9
+$DIMLDRBLK
+  1
+
+  9
+$DIMLUNIT
+ 70
+     2
+  9
+$DIMLWD
+ 70
+    -2
+  9
+$DIMLWE
+ 70
+    -2
+  9
+$DIMTMOVE
+ 70
+     0
+  9
+$DIMFXL
+ 40
+1.0
+  9
+$DIMFXLON
+ 70
+     0
+  9
+$DIMJOGANG
+ 40
+1.570796326794896
+  9
+$DIMTFILL
+ 70
+     0
+  9
+$DIMTFILLCLR
+ 70
+     0
+  9
+$DIMARCSYM
+ 70
+     0
+  9
+$DIMLTYPE
+  6
+
+  9
+$DIMLTEX1
+  6
+
+  9
+$DIMLTEX2
+  6
+
+  9
+$DIMTXTDIRECTION
+ 70
+     0
+  9
+$LUNITS
+ 70
+     2
+  9
+$LUPREC
+ 70
+     4
+  9
+$SKETCHINC
+ 40
+1.0
+  9
+$FILLETRAD
+ 40
+0.0375
+  9
+$AUNITS
+ 70
+     0
+  9
+$AUPREC
+ 70
+     0
+  9
+$MENU
+  1
+.
+  9
+$ELEVATION
+ 40
+0.0
+  9
+$PELEVATION
+ 40
+0.0
+  9
+$THICKNESS
+ 40
+0.0
+  9
+$LIMCHECK
+ 70
+     0
+  9
+$CHAMFERA
+ 40
+0.0
+  9
+$CHAMFERB
+ 40
+0.0
+  9
+$CHAMFERC
+ 40
+0.0
+  9
+$CHAMFERD
+ 40
+0.0
+  9
+$SKPOLY
+ 70
+     0
+  9
+$TDCREATE
+ 40
+2459558.592083333
+  9
+$TDUCREATE
+ 40
+2459558.217083333
+  9
+$TDUPDATE
+ 40
+2459741.715057870
+  9
+$TDUUPDATE
+ 40
+2459741.340057870
+  9
+$TDINDWG
+ 40
+0.0319328704
+  9
+$TDUSRTIMER
+ 40
+0.0319328704
+  9
+$USRTIMER
+ 70
+     1
+  9
+$ANGBASE
+ 50
+0.0
+  9
+$ANGDIR
+ 70
+     0
+  9
+$PDMODE
+ 70
+     0
+  9
+$PDSIZE
+ 40
+0.0
+  9
+$PLINEWID
+ 40
+0.0
+  9
+$SPLFRAME
+ 70
+     0
+  9
+$SPLINETYPE
+ 70
+     6
+  9
+$SPLINESEGS
+ 70
+     8
+  9
+$HANDSEED
+  5
+154
+  9
+$SURFTAB1
+ 70
+     6
+  9
+$SURFTAB2
+ 70
+     6
+  9
+$SURFTYPE
+ 70
+     6
+  9
+$SURFU
+ 70
+     6
+  9
+$SURFV
+ 70
+     6
+  9
+$UCSBASE
+  2
+
+  9
+$UCSNAME
+  2
+
+  9
+$UCSORG
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  9
+$UCSXDIR
+ 10
+1.0
+ 20
+0.0
+ 30
+0.0
+  9
+$UCSYDIR
+ 10
+0.0
+ 20
+1.0
+ 30
+0.0
+  9
+$UCSORTHOREF
+  2
+
+  9
+$UCSORTHOVIEW
+ 70
+     0
+  9
+$UCSORGTOP
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  9
+$UCSORGBOTTOM
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  9
+$UCSORGLEFT
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  9
+$UCSORGRIGHT
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  9
+$UCSORGFRONT
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  9
+$UCSORGBACK
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  9
+$PUCSBASE
+  2
+
+  9
+$PUCSNAME
+  2
+
+  9
+$PUCSORG
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  9
+$PUCSXDIR
+ 10
+1.0
+ 20
+0.0
+ 30
+0.0
+  9
+$PUCSYDIR
+ 10
+0.0
+ 20
+1.0
+ 30
+0.0
+  9
+$PUCSORTHOREF
+  2
+
+  9
+$PUCSORTHOVIEW
+ 70
+     0
+  9
+$PUCSORGTOP
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  9
+$PUCSORGBOTTOM
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  9
+$PUCSORGLEFT
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  9
+$PUCSORGRIGHT
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  9
+$PUCSORGFRONT
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  9
+$PUCSORGBACK
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  9
+$USERI1
+ 70
+     0
+  9
+$USERI2
+ 70
+     0
+  9
+$USERI3
+ 70
+     0
+  9
+$USERI4
+ 70
+     0
+  9
+$USERI5
+ 70
+     0
+  9
+$USERR1
+ 40
+0.0
+  9
+$USERR2
+ 40
+0.0
+  9
+$USERR3
+ 40
+0.0
+  9
+$USERR4
+ 40
+0.0
+  9
+$USERR5
+ 40
+0.0
+  9
+$WORLDVIEW
+ 70
+     1
+  9
+$SHADEDGE
+ 70
+     3
+  9
+$SHADEDIF
+ 70
+    70
+  9
+$TILEMODE
+ 70
+     1
+  9
+$MAXACTVP
+ 70
+    64
+  9
+$PINSBASE
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  9
+$PLIMCHECK
+ 70
+     0
+  9
+$PEXTMIN
+ 10
+29.70106506347656
+ 20
+21.00156707763675
+ 30
+0.0
+  9
+$PEXTMAX
+ 10
+267.3095855712891
+ 20
+189.0141036987304
+ 30
+0.0
+  9
+$PLIMMIN
+ 10
+0.0
+ 20
+0.0
+  9
+$PLIMMAX
+ 10
+297.0106506347656
+ 20
+210.0156707763672
+  9
+$UNITMODE
+ 70
+     0
+  9
+$VISRETAIN
+ 70
+     1
+  9
+$PLINEGEN
+ 70
+     0
+  9
+$PSLTSCALE
+ 70
+     1
+  9
+$TREEDEPTH
+ 70
+  3020
+  9
+$CMLSTYLE
+  2
+Standard
+  9
+$CMLJUST
+ 70
+     0
+  9
+$CMLSCALE
+ 40
+20.0
+  9
+$PROXYGRAPHICS
+ 70
+     1
+  9
+$MEASUREMENT
+ 70
+     1
+  9
+$CELWEIGHT
+370
+    -1
+  9
+$ENDCAPS
+280
+     0
+  9
+$JOINSTYLE
+280
+     0
+  9
+$LWDISPLAY
+290
+     0
+  9
+$INSUNITS
+ 70
+     4
+  9
+$HYPERLINKBASE
+  1
+
+  9
+$STYLESHEET
+  1
+
+  9
+$XEDIT
+290
+     1
+  9
+$CEPSNTYPE
+380
+     0
+  9
+$PSTYLEMODE
+290
+     1
+  9
+$FINGERPRINTGUID
+  2
+{D7FB251E-4621-E647-B1E6-0D9090516967}
+  9
+$VERSIONGUID
+  2
+{ACE53A03-A618-2D4B-B423-07CFD0873680}
+  9
+$EXTNAMES
+290
+     1
+  9
+$PSVPSCALE
+ 40
+0.0
+  9
+$OLESTARTUP
+290
+     0
+  9
+$SORTENTS
+280
+   127
+  9
+$INDEXCTL
+280
+     0
+  9
+$HIDETEXT
+280
+     1
+  9
+$XCLIPFRAME
+280
+     2
+  9
+$HALOGAP
+280
+     0
+  9
+$OBSCOLOR
+ 70
+   257
+  9
+$OBSLTYPE
+280
+     0
+  9
+$INTERSECTIONDISPLAY
+280
+     0
+  9
+$INTERSECTIONCOLOR
+ 70
+   257
+  9
+$DIMASSOC
+280
+     2
+  9
+$PROJECTNAME
+  1
+
+  9
+$CAMERADISPLAY
+290
+     0
+  9
+$LENSLENGTH
+ 40
+50.0
+  9
+$CAMERAHEIGHT
+ 40
+0.0
+  9
+$STEPSPERSEC
+ 40
+2.0
+  9
+$STEPSIZE
+ 40
+6.0
+  9
+$3DDWFPREC
+ 40
+2.0
+  9
+$PSOLWIDTH
+ 40
+0.25
+  9
+$PSOLHEIGHT
+ 40
+4.0
+  9
+$LOFTANG1
+ 40
+1.570796326794896
+  9
+$LOFTANG2
+ 40
+1.570796326794896
+  9
+$LOFTMAG1
+ 40
+0.0
+  9
+$LOFTMAG2
+ 40
+0.0
+  9
+$LOFTPARAM
+ 70
+     7
+  9
+$LOFTNORMALS
+280
+     1
+  9
+$LATITUDE
+ 40
+37.795
+  9
+$LONGITUDE
+ 40
+-122.394
+  9
+$NORTHDIRECTION
+ 40
+0.0
+  9
+$TIMEZONE
+ 70
+ -8000
+  9
+$LIGHTGLYPHDISPLAY
+280
+     1
+  9
+$TILEMODELIGHTSYNCH
+280
+     1
+  9
+$CMATERIAL
+347
+11
+  9
+$SOLIDHIST
+280
+     0
+  9
+$SHOWHIST
+280
+     1
+  9
+$DWFFRAME
+280
+     2
+  9
+$DGNFRAME
+280
+     0
+  9
+$REALWORLDSCALE
+290
+     1
+  9
+$INTERFERECOLOR
+ 62
+     1
+  9
+$INTERFEREOBJVS
+345
+33
+  9
+$INTERFEREVPVS
+346
+30
+  9
+$CSHADOW
+280
+     0
+  9
+$SHADOWPLANELOCATION
+ 40
+0.0
+  0
+ENDSEC
+  0
+SECTION
+  2
+CLASSES
+  0
+CLASS
+  1
+ACDBDICTIONARYWDFLT
+  2
+AcDbDictionaryWithDefault
+  3
+ObjectDBX Classes
+ 90
+        0
+ 91
+        1
+280
+     0
+281
+     0
+  0
+CLASS
+  1
+MATERIAL
+  2
+AcDbMaterial
+  3
+ObjectDBX Classes
+ 90
+     1153
+ 91
+        3
+280
+     0
+281
+     0
+  0
+CLASS
+  1
+VISUALSTYLE
+  2
+AcDbVisualStyle
+  3
+ObjectDBX Classes
+ 90
+     4095
+ 91
+       24
+280
+     0
+281
+     0
+  0
+CLASS
+  1
+SCALE
+  2
+AcDbScale
+  3
+ObjectDBX Classes
+ 90
+     1153
+ 91
+       17
+280
+     0
+281
+     0
+  0
+CLASS
+  1
+TABLESTYLE
+  2
+AcDbTableStyle
+  3
+ObjectDBX Classes
+ 90
+     4095
+ 91
+        1
+280
+     0
+281
+     0
+  0
+CLASS
+  1
+MLEADERSTYLE
+  2
+AcDbMLeaderStyle
+  3
+ACDB_MLEADERSTYLE_CLASS
+ 90
+     4095
+ 91
+        1
+280
+     0
+281
+     0
+  0
+CLASS
+  1
+ACDBSECTIONVIEWSTYLE
+  2
+AcDbSectionViewStyle
+  3
+ObjectDBX Classes
+ 90
+     1025
+ 91
+        1
+280
+     0
+281
+     0
+  0
+CLASS
+  1
+ACDBDETAILVIEWSTYLE
+  2
+AcDbDetailViewStyle
+  3
+ObjectDBX Classes
+ 90
+     1025
+ 91
+        1
+280
+     0
+281
+     0
+  0
+CLASS
+  1
+DICTIONARYVAR
+  2
+AcDbDictionaryVar
+  3
+ObjectDBX Classes
+ 90
+        0
+ 91
+        7
+280
+     0
+281
+     0
+  0
+CLASS
+  1
+DIMASSOC
+  2
+AcDbDimAssoc
+  3
+"AcDbDimAssoc|Product Desc:     AcDim ARX App For Dimension|Company:          Autodesk, Inc.|WEB Address:      www.autodesk.com"
+ 90
+        0
+ 91
+        0
+280
+     0
+281
+     0
+  0
+CLASS
+  1
+CELLSTYLEMAP
+  2
+AcDbCellStyleMap
+  3
+ObjectDBX Classes
+ 90
+     1152
+ 91
+        2
+280
+     0
+281
+     0
+  0
+ENDSEC
+  0
+SECTION
+  2
+TABLES
+  0
+TABLE
+  2
+VPORT
+  5
+8
+330
+0
+100
+AcDbSymbolTable
+ 70
+     1
+1001
+ACAD
+1000
+DbSaveVer
+1071
+      205
+  0
+VPORT
+  5
+57
+330
+8
+100
+AcDbSymbolTableRecord
+100
+AcDbViewportTableRecord
+  2
+*Active
+ 70
+     0
+ 10
+0.0
+ 20
+0.0
+ 11
+1.0
+ 21
+1.0
+ 12
+-0.0178894083407695
+ 22
+0.0490228120461938
+ 13
+0.0
+ 23
+0.0
+ 14
+10.0
+ 24
+10.0
+ 15
+10.0
+ 25
+10.0
+ 16
+0.0
+ 26
+0.0
+ 36
+1.0
+ 17
+0.0
+ 27
+0.0
+ 37
+0.0
+ 40
+2.5385096063551
+ 41
+1.609929078014184
+ 42
+50.0
+ 43
+0.0
+ 44
+0.0
+ 50
+0.0
+ 51
+0.0
+ 71
+     0
+ 72
+  1000
+ 73
+     1
+ 74
+     2
+ 75
+     0
+ 76
+     0
+ 77
+     0
+ 78
+     0
+281
+     0
+ 65
+     1
+110
+0.0
+120
+0.0
+130
+0.0
+111
+1.0
+121
+0.0
+131
+0.0
+112
+0.0
+122
+1.0
+132
+0.0
+ 79
+     0
+146
+0.0
+348
+2F
+ 60
+     3
+ 61
+     5
+292
+     1
+282
+     1
+141
+0.0
+142
+0.0
+ 63
+   250
+421
+  3355443
+1001
+ACAD_NAV_VCDISPLAY
+1070
+     1
+  0
+ENDTAB
+  0
+TABLE
+  2
+LTYPE
+  5
+5
+330
+0
+100
+AcDbSymbolTable
+ 70
+     1
+  0
+LTYPE
+  5
+5B
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+  2
+ByBlock
+ 70
+     0
+  3
+
+ 72
+    65
+ 73
+     0
+ 40
+0.0
+  0
+LTYPE
+  5
+5C
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+  2
+ByLayer
+ 70
+     0
+  3
+
+ 72
+    65
+ 73
+     0
+ 40
+0.0
+  0
+LTYPE
+  5
+5D
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+  2
+Continuous
+ 70
+     0
+  3
+Solid line
+ 72
+    65
+ 73
+     0
+ 40
+0.0
+  0
+ENDTAB
+  0
+TABLE
+  2
+LAYER
+  5
+2
+102
+{ACAD_XDICTIONARY
+360
+C0
+102
+}
+330
+0
+100
+AcDbSymbolTable
+ 70
+     6
+  0
+LAYER
+  5
+54
+330
+2
+100
+AcDbSymbolTableRecord
+100
+AcDbLayerTableRecord
+  2
+0
+ 70
+     0
+ 62
+     7
+  6
+Continuous
+370
+    -3
+390
+F
+347
+21
+348
+0
+  0
+LAYER
+  5
+7F
+330
+2
+100
+AcDbSymbolTableRecord
+100
+AcDbLayerTableRecord
+  2
+Comp
+ 70
+     0
+ 62
+   140
+  6
+Continuous
+370
+    -3
+390
+F
+347
+21
+348
+0
+1001
+AcAecLayerStandard
+1000
+
+1000
+
+1001
+AcCmTransparency
+1071
+        0
+  0
+LAYER
+  5
+82
+330
+2
+100
+AcDbSymbolTableRecord
+100
+AcDbLayerTableRecord
+  2
+L1
+ 70
+     0
+ 62
+    21
+  6
+Continuous
+370
+    -3
+390
+F
+347
+21
+348
+0
+1001
+AcAecLayerStandard
+1000
+
+1000
+
+1001
+AcCmTransparency
+1071
+        0
+  0
+LAYER
+  5
+83
+330
+2
+100
+AcDbSymbolTableRecord
+100
+AcDbLayerTableRecord
+  2
+Resist
+ 70
+     0
+ 62
+   100
+  6
+Continuous
+370
+    -3
+390
+F
+347
+21
+348
+0
+1001
+AcAecLayerStandard
+1000
+
+1000
+
+1001
+AcCmTransparency
+1071
+        0
+  0
+LAYER
+  5
+84
+330
+2
+100
+AcDbSymbolTableRecord
+100
+AcDbLayerTableRecord
+  2
+Silk
+ 70
+     0
+ 62
+   253
+  6
+Continuous
+370
+    -3
+390
+F
+347
+21
+348
+0
+1001
+AcAecLayerStandard
+1000
+
+1000
+
+1001
+AcCmTransparency
+1071
+        0
+  0
+LAYER
+  5
+95
+330
+2
+100
+AcDbSymbolTableRecord
+100
+AcDbLayerTableRecord
+  2
+Defpoints
+ 70
+     0
+ 62
+     7
+  6
+Continuous
+290
+     0
+370
+    -3
+390
+F
+347
+21
+348
+0
+  0
+ENDTAB
+  0
+TABLE
+  2
+STYLE
+  5
+3
+330
+0
+100
+AcDbSymbolTable
+ 70
+     2
+  0
+STYLE
+  5
+55
+330
+3
+100
+AcDbSymbolTableRecord
+100
+AcDbTextStyleTableRecord
+  2
+Standard
+ 70
+     0
+ 40
+0.0
+ 41
+1.0
+ 50
+0.0
+ 71
+     0
+ 42
+2.5
+  3
+txt
+  4
+
+  0
+STYLE
+  5
+5A
+330
+3
+100
+AcDbSymbolTableRecord
+100
+AcDbTextStyleTableRecord
+  2
+Annotative
+ 70
+     0
+ 40
+0.0
+ 41
+1.0
+ 50
+0.0
+ 71
+     0
+ 42
+0.2
+  3
+txt
+  4
+
+1001
+AcadAnnotative
+1000
+AnnotativeData
+1002
+{
+1070
+     1
+1070
+     1
+1002
+}
+  0
+ENDTAB
+  0
+TABLE
+  2
+VIEW
+  5
+6
+330
+0
+100
+AcDbSymbolTable
+ 70
+     0
+  0
+ENDTAB
+  0
+TABLE
+  2
+UCS
+  5
+7
+330
+0
+100
+AcDbSymbolTable
+ 70
+     0
+  0
+ENDTAB
+  0
+TABLE
+  2
+APPID
+  5
+9
+330
+0
+100
+AcDbSymbolTable
+ 70
+     7
+  0
+APPID
+  5
+56
+330
+9
+100
+AcDbSymbolTableRecord
+100
+AcDbRegAppTableRecord
+  2
+ACAD
+ 70
+     0
+  0
+APPID
+  5
+5E
+330
+9
+100
+AcDbSymbolTableRecord
+100
+AcDbRegAppTableRecord
+  2
+AcadAnnotative
+ 70
+     0
+  0
+APPID
+  5
+7D
+330
+9
+100
+AcDbSymbolTableRecord
+100
+AcDbRegAppTableRecord
+  2
+ACAD_NAV_VCDISPLAY
+ 70
+     0
+  0
+APPID
+  5
+80
+330
+9
+100
+AcDbSymbolTableRecord
+100
+AcDbRegAppTableRecord
+  2
+AcAecLayerStandard
+ 70
+     0
+  0
+APPID
+  5
+81
+330
+9
+100
+AcDbSymbolTableRecord
+100
+AcDbRegAppTableRecord
+  2
+AcCmTransparency
+ 70
+     0
+  0
+APPID
+  5
+87
+330
+9
+100
+AcDbSymbolTableRecord
+100
+AcDbRegAppTableRecord
+  2
+ACAD_EXEMPT_FROM_CAD_STANDARDS
+ 70
+     0
+  0
+APPID
+  5
+CC
+330
+9
+100
+AcDbSymbolTableRecord
+100
+AcDbRegAppTableRecord
+  2
+ACAD_PSEXT
+ 70
+     0
+  0
+ENDTAB
+  0
+TABLE
+  2
+DIMSTYLE
+  5
+A
+330
+0
+100
+AcDbSymbolTable
+ 70
+     2
+100
+AcDbDimStyleTable
+ 71
+     1
+340
+58
+  0
+DIMSTYLE
+105
+58
+330
+A
+100
+AcDbSymbolTableRecord
+100
+AcDbDimStyleTableRecord
+  2
+ISO-25
+ 70
+     0
+ 41
+2.5
+ 42
+0.625
+ 43
+3.75
+ 44
+1.25
+ 50
+90.0
+ 73
+     0
+ 74
+     0
+ 77
+     1
+ 78
+     8
+140
+2.5
+141
+2.5
+143
+0.03937007874016
+147
+0.625
+171
+     3
+172
+     1
+271
+     2
+272
+     2
+274
+     3
+283
+     0
+284
+     8
+340
+55
+  0
+DIMSTYLE
+105
+59
+330
+A
+100
+AcDbSymbolTableRecord
+100
+AcDbDimStyleTableRecord
+  2
+Annotative
+ 70
+     0
+340
+55
+1001
+AcadAnnotative
+1000
+AnnotativeData
+1002
+{
+1070
+     1
+1070
+     1
+1002
+}
+  0
+ENDTAB
+  0
+TABLE
+  2
+BLOCK_RECORD
+  5
+1
+330
+0
+100
+AcDbSymbolTable
+ 70
+     1
+  0
+BLOCK_RECORD
+  5
+70
+330
+1
+100
+AcDbSymbolTableRecord
+100
+AcDbBlockTableRecord
+  2
+*Model_Space
+340
+73
+ 70
+     0
+280
+     1
+281
+     0
+  0
+BLOCK_RECORD
+  5
+6C
+330
+1
+100
+AcDbSymbolTableRecord
+100
+AcDbBlockTableRecord
+  2
+*Paper_Space
+340
+6F
+ 70
+     0
+280
+     1
+281
+     0
+  0
+BLOCK_RECORD
+  5
+74
+330
+1
+100
+AcDbSymbolTableRecord
+100
+AcDbBlockTableRecord
+  2
+*Paper_Space0
+340
+77
+ 70
+     0
+280
+     1
+281
+     0
+  0
+ENDTAB
+  0
+ENDSEC
+  0
+SECTION
+  2
+BLOCKS
+  0
+BLOCK
+  5
+71
+330
+70
+100
+AcDbEntity
+  8
+0
+100
+AcDbBlockBegin
+  2
+*Model_Space
+ 70
+     0
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  3
+*Model_Space
+  1
+
+  0
+ENDBLK
+  5
+72
+330
+70
+100
+AcDbEntity
+  8
+0
+100
+AcDbBlockEnd
+  0
+BLOCK
+  5
+6D
+330
+6C
+100
+AcDbEntity
+ 67
+     1
+  8
+0
+100
+AcDbBlockBegin
+  2
+*Paper_Space
+ 70
+     0
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  3
+*Paper_Space
+  1
+
+  0
+ENDBLK
+  5
+6E
+330
+6C
+100
+AcDbEntity
+ 67
+     1
+  8
+0
+100
+AcDbBlockEnd
+  0
+BLOCK
+  5
+75
+330
+74
+100
+AcDbEntity
+ 67
+     1
+  8
+0
+100
+AcDbBlockBegin
+  2
+*Paper_Space0
+ 70
+     0
+ 10
+0.0
+ 20
+0.0
+ 30
+0.0
+  3
+*Paper_Space0
+  1
+
+  0
+VIEWPORT
+  5
+C9
+102
+{ACAD_XDICTIONARY
+360
+CA
+102
+}
+330
+74
+100
+AcDbEntity
+ 67
+     1
+  8
+0
+348
+2F
+100
+AcDbViewport
+ 10
+148.5053253173828
+ 20
+105.0078353881836
+ 30
+0.0
+ 40
+513.5523488643526
+ 41
+222.1965796813965
+ 68
+     0
+ 69
+     0
+ 12
+148.5053253173828
+ 22
+105.0078353881836
+ 13
+0.0
+ 23
+0.0
+ 14
+10.0
+ 24
+10.0
+ 15
+10.0
+ 25
+10.0
+ 16
+0.0
+ 26
+0.0
+ 36
+1.0
+ 17
+0.0
+ 27
+0.0
+ 37
+0.0
+ 42
+50.0
+ 43
+0.0
+ 44
+0.0
+ 45
+222.1965796813965
+ 50
+0.0
+ 51
+0.0
+ 72
+  1000
+ 90
+   819232
+  1
+
+281
+     0
+ 71
+     1
+ 74
+     0
+110
+0.0
+120
+0.0
+130
+0.0
+111
+1.0
+121
+0.0
+131
+0.0
+112
+0.0
+122
+1.0
+132
+0.0
+ 79
+     0
+146
+0.0
+170
+     0
+ 61
+     5
+292
+     1
+282
+     1
+141
+0.0
+142
+0.0
+ 63
+   250
+421
+  3355443
+  0
+VIEWPORT
+  5
+CE
+102
+{ACAD_XDICTIONARY
+360
+CF
+102
+}
+330
+74
+100
+AcDbEntity
+ 67
+     1
+  8
+Silk
+348
+2F
+100
+AcDbViewport
+ 10
+148.5053253173828
+ 20
+105.0078353881836
+ 30
+0.0
+ 40
+237.6085205078125
+ 41
+168.0125366210937
+ 68
+     0
+ 69
+     0
+ 12
+3.841666666666666
+ 22
+-0.2259504760679647
+ 13
+0.0
+ 23
+0.0
+ 14
+10.0
+ 24
+10.0
+ 15
+10.0
+ 25
+10.0
+ 16
+0.0
+ 26
+0.0
+ 36
+1.0
+ 17
+0.0
+ 27
+0.0
+ 37
+0.0
+ 42
+50.0
+ 43
+0.0
+ 44
+0.0
+ 45
+13.4914480138135
+ 50
+0.0
+ 51
+0.0
+ 72
+  1000
+ 90
+   819296
+  1
+
+281
+     0
+ 71
+     1
+ 74
+     0
+110
+0.0
+120
+0.0
+130
+0.0
+111
+1.0
+121
+0.0
+131
+0.0
+112
+0.0
+122
+1.0
+132
+0.0
+ 79
+     0
+146
+0.0
+170
+     0
+ 61
+     5
+292
+     1
+282
+     1
+141
+0.0
+142
+0.0
+ 63
+   250
+421
+  3355443
+  0
+ENDBLK
+  5
+76
+330
+74
+100
+AcDbEntity
+ 67
+     1
+  8
+0
+100
+AcDbBlockEnd
+  0
+ENDSEC
+  0
+SECTION
+  2
+ENTITIES
+  0
+LWPOLYLINE
+  5
+120
+330
+70
+100
+AcDbEntity
+  8
+Comp
+100
+AcDbPolyline
+ 90
+        4
+ 70
+     1
+ 43
+0.0
+ 10
+-0.8
+ 20
+-0.4
+ 10
+0.8
+ 20
+-0.4
+ 10
+0.8
+ 20
+0.4
+ 10
+-0.8
+ 20
+0.4
+  0
+LWPOLYLINE
+  5
+126
+330
+70
+100
+AcDbEntity
+  8
+L1
+100
+AcDbPolyline
+ 90
+        4
+ 70
+     1
+ 43
+0.0
+ 10
+-1.0
+ 20
+-0.4
+ 10
+-0.4
+ 20
+-0.4
+ 10
+-0.4
+ 20
+0.4
+ 10
+-1.0
+ 20
+0.4
+  0
+LWPOLYLINE
+  5
+127
+330
+70
+100
+AcDbEntity
+  8
+L1
+100
+AcDbPolyline
+ 90
+        4
+ 70
+     1
+ 43
+0.0
+ 10
+0.9999999999999998
+ 20
+-0.4000000000000003
+ 10
+0.3999999999999999
+ 20
+-0.4000000000000002
+ 10
+0.4000000000000001
+ 20
+0.3999999999999999
+ 10
+0.9999999999999998
+ 20
+0.3999999999999997
+  0
+LWPOLYLINE
+  5
+12B
+330
+70
+100
+AcDbEntity
+  8
+Resist
+100
+AcDbPolyline
+ 90
+        4
+ 70
+     1
+ 43
+0.0
+ 10
+-1.05
+ 20
+-0.45
+ 10
+-0.3500000000000001
+ 20
+-0.45
+ 10
+-0.3500000000000001
+ 20
+0.45
+ 10
+-1.05
+ 20
+0.45
+  0
+LWPOLYLINE
+  5
+12C
+330
+70
+100
+AcDbEntity
+  8
+Resist
+100
+AcDbPolyline
+ 90
+        4
+ 70
+     1
+ 43
+0.0
+ 10
+1.05
+ 20
+-0.45
+ 10
+0.3500000000000001
+ 20
+-0.45
+ 10
+0.3500000000000001
+ 20
+0.45
+ 10
+1.05
+ 20
+0.45
+  0
+LWPOLYLINE
+  5
+12E
+330
+70
+100
+AcDbEntity
+  8
+Silk
+100
+AcDbPolyline
+ 90
+        8
+ 70
+     1
+ 43
+0.0
+ 10
+-1.212499999999999
+ 20
+-0.65
+ 10
+1.212499999999999
+ 20
+-0.65
+ 42
+0.4142135623730951
+ 10
+1.25
+ 20
+-0.6125
+ 10
+1.25
+ 20
+0.6125000000000002
+ 42
+0.4142135623730951
+ 10
+1.212499999999999
+ 20
+0.65
+ 10
+-1.212499999999999
+ 20
+0.65
+ 42
+0.4142135623730951
+ 10
+-1.25
+ 20
+0.6125
+ 10
+-1.25
+ 20
+-0.6125
+ 42
+0.4142135623730951
+  0
+LWPOLYLINE
+  5
+130
+330
+70
+100
+AcDbEntity
+  8
+Silk
+100
+AcDbPolyline
+ 90
+        8
+ 70
+     1
+ 43
+0.0
+ 10
+-1.287499999999998
+ 20
+-0.725
+ 10
+1.287499999999998
+ 20
+-0.725
+ 42
+0.4142135623730951
+ 10
+1.324999999999999
+ 20
+-0.6875
+ 10
+1.324999999999999
+ 20
+0.6875000000000001
+ 42
+0.4142135623730951
+ 10
+1.287499999999998
+ 20
+0.725
+ 10
+-1.287499999999998
+ 20
+0.725
+ 42
+0.4142135623730951
+ 10
+-1.324999999999999
+ 20
+0.6875
+ 10
+-1.324999999999999
+ 20
+-0.6875
+ 42
+0.4142135623730951
+  0
+VIEWPORT
+  5
+DA
+102
+{ACAD_XDICTIONARY
+360
+DB
+102
+}
+330
+6C
+100
+AcDbEntity
+ 67
+     1
+  8
+0
+348
+2F
+100
+AcDbViewport
+ 10
+148.5053253173828
+ 20
+108.6371806098397
+ 30
+0.0
+ 40
+513.5670781573764
+ 41
+222.2029525439454
+ 68
+     1
+ 69
+     1
+ 12
+148.5053253173828
+ 22
+108.6371806098397
+ 13
+0.0
+ 23
+0.0
+ 14
+10.0
+ 24
+10.0
+ 15
+10.0
+ 25
+10.0
+ 16
+0.0
+ 26
+0.0
+ 36
+1.0
+ 17
+0.0
+ 27
+0.0
+ 37
+0.0
+ 42
+50.0
+ 43
+0.0
+ 44
+0.0
+ 45
+222.2029525439454
+ 50
+0.0
+ 51
+0.0
+ 72
+  1000
+ 90
+   819232
+  1
+
+281
+     0
+ 71
+     1
+ 74
+     0
+110
+0.0
+120
+0.0
+130
+0.0
+111
+1.0
+121
+0.0
+131
+0.0
+112
+0.0
+122
+1.0
+132
+0.0
+ 79
+     0
+146
+0.0
+170
+     0
+ 61
+     5
+292
+     1
+282
+     1
+141
+0.0
+142
+0.0
+ 63
+   250
+421
+  3355443
+  0
+VIEWPORT
+  5
+DE
+102
+{ACAD_XDICTIONARY
+360
+DF
+102
+}
+330
+6C
+100
+AcDbEntity
+ 67
+     1
+  8
+Silk
+348
+2F
+100
+AcDbViewport
+ 10
+148.5053253173828
+ 20
+105.0078353881836
+ 30
+0.0
+ 40
+237.6085205078125
+ 41
+168.0125366210937
+ 68
+     2
+ 69
+     2
+ 12
+0.0
+ 22
+0.0
+ 13
+0.0
+ 23
+0.0
+ 14
+10.0
+ 24
+10.0
+ 15
+10.0
+ 25
+10.0
+ 16
+0.0
+ 26
+0.0
+ 36
+1.0
+ 17
+0.0
+ 27
+0.0
+ 37
+0.0
+ 42
+50.0
+ 43
+0.0
+ 44
+0.0
+ 45
+1.385864282367146
+ 50
+0.0
+ 51
+0.0
+ 72
+  1000
+ 90
+   819296
+  1
+
+281
+     0
+ 71
+     1
+ 74
+     0
+110
+0.0
+120
+0.0
+130
+0.0
+111
+1.0
+121
+0.0
+131
+0.0
+112
+0.0
+122
+1.0
+132
+0.0
+ 79
+     0
+146
+0.0
+170
+     0
+ 61
+     5
+292
+     1
+282
+     1
+141
+0.0
+142
+0.0
+ 63
+   250
+421
+  3355443
+  0
+ENDSEC
+  0
+SECTION
+  2
+OBJECTS
+  0
+DICTIONARY
+  5
+C
+330
+0
+100
+AcDbDictionary
+281
+     1
+  3
+ACAD_CIP_PREVIOUS_PRODUCT_INFO
+350
+7E
+  3
+ACAD_COLOR
+350
+63
+  3
+ACAD_DETAILVIEWSTYLE
+350
+6A
+  3
+ACAD_GROUP
+350
+D
+  3
+ACAD_LAYOUT
+350
+62
+  3
+ACAD_MATERIAL
+350
+10
+  3
+ACAD_MLEADERSTYLE
+350
+66
+  3
+ACAD_MLINESTYLE
+350
+5F
+  3
+ACAD_PLOTSETTINGS
+350
+61
+  3
+ACAD_PLOTSTYLENAME
+350
+E
+  3
+ACAD_SCALELIST
+350
+42
+  3
+ACAD_SECTIONVIEWSTYLE
+350
+68
+  3
+ACAD_TABLESTYLE
+350
+64
+  3
+ACAD_VISUALSTYLE
+350
+29
+  3
+ACDB_RECOMPOSE_DATA
+350
+153
+  3
+AcDbVariableDictionary
+350
+78
+  0
+DICTIONARY
+  5
+C0
+330
+2
+100
+AcDbDictionary
+280
+     1
+281
+     1
+  3
+ACAD_LAYERSTATES
+360
+C1
+  0
+DICTIONARY
+  5
+CA
+330
+C9
+100
+AcDbDictionary
+280
+     1
+281
+     1
+  3
+ASDK_XREC_ANNOTATION_SCALE_INFO
+360
+CB
+  0
+DICTIONARY
+  5
+CF
+330
+CE
+100
+AcDbDictionary
+280
+     1
+281
+     1
+  3
+ASDK_XREC_ANNOTATION_SCALE_INFO
+360
+D0
+  0
+DICTIONARY
+  5
+DB
+330
+DA
+100
+AcDbDictionary
+280
+     1
+281
+     1
+  3
+ASDK_XREC_ANNOTATION_SCALE_INFO
+360
+DC
+  0
+DICTIONARY
+  5
+DF
+330
+DE
+100
+AcDbDictionary
+280
+     1
+281
+     1
+  3
+ASDK_XREC_ANNOTATION_SCALE_INFO
+360
+E0
+  0
+XRECORD
+  5
+7E
+102
+{ACAD_REACTORS
+330
+C
+102
+}
+330
+C
+100
+AcDbXrecord
+280
+     1
+300
+ACD
+300
+2021
+300
+87393ACD_2021_0F
+  0
+DICTIONARY
+  5
+63
+102
+{ACAD_REACTORS
+330
+C
+102
+}
+330
+C
+100
+AcDbDictionary
+281
+     1
+  0
+DICTIONARY
+  5
+6A
+102
+{ACAD_REACTORS
+330
+C
+102
+}
+330
+C
+100
+AcDbDictionary
+281
+     1
+  3
+Metric50
+350
+6B
+  0
+DICTIONARY
+  5
+D
+102
+{ACAD_REACTORS
+330
+C
+102
+}
+330
+C
+100
+AcDbDictionary
+281
+     1
+  0
+DICTIONARY
+  5
+62
+102
+{ACAD_REACTORS
+330
+C
+102
+}
+330
+C
+100
+AcDbDictionary
+281
+     1
+  3
+Model
+350
+73
+  3
+レイアウト1
+350
+6F
+  3
+レイアウト2
+350
+77
+  0
+DICTIONARY
+  5
+10
+102
+{ACAD_REACTORS
+330
+C
+102
+}
+330
+C
+100
+AcDbDictionary
+281
+     1
+  3
+ByBlock
+350
+19
+  3
+ByLayer
+350
+11
+  3
+Global
+350
+21
+  0
+DICTIONARY
+  5
+66
+102
+{ACAD_REACTORS
+330
+C
+102
+}
+330
+C
+100
+AcDbDictionary
+281
+     1
+  3
+Standard
+350
+67
+  0
+DICTIONARY
+  5
+5F
+102
+{ACAD_REACTORS
+330
+C
+102
+}
+330
+C
+100
+AcDbDictionary
+281
+     1
+  3
+Standard
+350
+60
+  0
+DICTIONARY
+  5
+61
+102
+{ACAD_REACTORS
+330
+C
+102
+}
+330
+C
+100
+AcDbDictionary
+281
+     1
+  0
+ACDBDICTIONARYWDFLT
+  5
+E
+102
+{ACAD_REACTORS
+330
+C
+102
+}
+330
+C
+100
+AcDbDictionary
+281
+     1
+  3
+Normal
+350
+F
+100
+AcDbDictionaryWithDefault
+340
+F
+  0
+DICTIONARY
+  5
+42
+102
+{ACAD_REACTORS
+330
+C
+102
+}
+330
+C
+100
+AcDbDictionary
+281
+     1
+  3
+A0
+350
+43
+  3
+A1
+350
+44
+  3
+A2
+350
+45
+  3
+A3
+350
+46
+  3
+A4
+350
+47
+  3
+A5
+350
+48
+  3
+A6
+350
+49
+  3
+A7
+350
+4A
+  3
+A8
+350
+4B
+  3
+A9
+350
+4C
+  3
+B0
+350
+4D
+  3
+B1
+350
+4E
+  3
+B2
+350
+4F
+  3
+B3
+350
+50
+  3
+B4
+350
+51
+  3
+B5
+350
+52
+  3
+B6
+350
+53
+  0
+DICTIONARY
+  5
+68
+102
+{ACAD_REACTORS
+330
+C
+102
+}
+330
+C
+100
+AcDbDictionary
+281
+     1
+  3
+Metric50
+350
+69
+  0
+DICTIONARY
+  5
+64
+102
+{ACAD_REACTORS
+330
+C
+102
+}
+330
+C
+100
+AcDbDictionary
+281
+     1
+  3
+Standard
+350
+65
+  0
+DICTIONARY
+  5
+29
+102
+{ACAD_REACTORS
+330
+C
+102
+}
+330
+C
+100
+AcDbDictionary
+281
+     1
+  3
+2dWireframe
+350
+2F
+  3
+Basic
+350
+2E
+  3
+Brighten
+350
+35
+  3
+ColorChange
+350
+39
+  3
+Conceptual
+350
+32
+  3
+Dim
+350
+34
+  3
+EdgeColorOff
+350
+41
+  3
+Facepattern
+350
+38
+  3
+Flat
+350
+2A
+  3
+FlatWithEdges
+350
+2B
+  3
+Gouraud
+350
+2C
+  3
+GouraudWithEdges
+350
+2D
+  3
+Hidden
+350
+31
+  3
+JitterOff
+350
+3F
+  3
+Linepattern
+350
+37
+  3
+OverhangOff
+350
+40
+  3
+Realistic
+350
+33
+  3
+Shaded
+350
+3E
+  3
+Shaded with edges
+350
+3D
+  3
+Shades of Gray
+350
+3A
+  3
+Sketchy
+350
+3B
+  3
+Thicken
+350
+36
+  3
+Wireframe
+350
+30
+  3
+X-Ray
+350
+3C
+  0
+XRECORD
+  5
+153
+102
+{ACAD_REACTORS
+330
+C
+102
+}
+330
+C
+100
+AcDbXrecord
+280
+     1
+ 90
+        1
+330
+65
+  0
+DICTIONARY
+  5
+78
+102
+{ACAD_REACTORS
+330
+C
+102
+}
+330
+C
+100
+AcDbDictionary
+281
+     1
+  3
+CANNOSCALE
+350
+E5
+  3
+CENTEREXE
+350
+79
+  3
+CENTERLTYPEFILE
+350
+7A
+  3
+CMLEADERSTYLE
+350
+E2
+  3
+CTABLESTYLE
+350
+E1
+  3
+CVIEWDETAILSTYLE
+350
+E3
+  3
+CVIEWSECTIONSTYLE
+350
+E4
+  0
+DICTIONARY
+  5
+C1
+102
+{ACAD_REACTORS
+330
+C0
+102
+}
+330
+C0
+100
+AcDbDictionary
+281
+     1
+  0
+XRECORD
+  5
+CB
+102
+{ACAD_REACTORS
+330
+CA
+102
+}
+330
+CA
+100
+AcDbXrecord
+280
+     1
+ 90
+        1
+340
+43
+  0
+XRECORD
+  5
+D0
+102
+{ACAD_REACTORS
+330
+CF
+102
+}
+330
+CF
+100
+AcDbXrecord
+280
+     1
+ 90
+        1
+340
+43
+  0
+XRECORD
+  5
+DC
+102
+{ACAD_REACTORS
+330
+DB
+102
+}
+330
+DB
+100
+AcDbXrecord
+280
+     1
+ 90
+        1
+340
+43
+  0
+XRECORD
+  5
+E0
+102
+{ACAD_REACTORS
+330
+DF
+102
+}
+330
+DF
+100
+AcDbXrecord
+280
+     1
+ 90
+        1
+340
+43
+  0
+ACDBDETAILVIEWSTYLE
+  5
+6B
+102
+{ACAD_REACTORS
+330
+6A
+102
+}
+330
+6A
+100
+AcDbModelDocViewStyle
+ 70
+     0
+  3
+Metric50
+290
+     0
+300
+Metric50
+ 90
+        0
+100
+AcDbDetailViewStyle
+ 70
+     0
+ 71
+     0
+ 90
+        3
+ 71
+     1
+340
+55
+ 62
+   256
+ 40
+5.0
+340
+0
+ 62
+   256
+ 40
+5.0
+300
+
+ 40
+0.36
+280
+     1
+ 71
+     2
+340
+5D
+ 90
+       25
+ 62
+   256
+ 71
+     3
+340
+55
+ 62
+   256
+ 40
+5.0
+ 90
+        0
+ 40
+15.0
+ 90
+        1
+300
+%<\AcVar ViewDetailId>% (%<\AcVar ViewScale \f "%sn">%)
+ 71
+     4
+340
+5D
+ 90
+       25
+ 62
+   256
+340
+5D
+ 90
+       25
+ 62
+   256
+280
+     0
+  0
+LAYOUT
+  5
+73
+102
+{ACAD_REACTORS
+330
+62
+102
+}
+330
+62
+100
+AcDbPlotSettings
+  1
+
+  2
+Microsoft Print to PDF
+  4
+
+  6
+
+ 40
+0.0
+ 41
+0.0
+ 42
+0.0
+ 43
+0.0
+ 44
+0.0
+ 45
+0.0
+ 46
+0.0
+ 47
+0.0
+ 48
+0.0
+ 49
+0.0
+140
+0.0
+141
+0.0
+142
+1.0
+143
+1.0
+ 70
+  1712
+ 72
+     0
+ 73
+     0
+ 74
+     0
+  7
+
+ 75
+     0
+147
+1.0
+ 76
+     0
+ 77
+     2
+ 78
+   300
+148
+0.0
+149
+0.0
+100
+AcDbLayout
+  1
+Model
+ 70
+     1
+ 71
+     0
+ 10
+0.0
+ 20
+0.0
+ 11
+12.0
+ 21
+9.0
+ 12
+0.0
+ 22
+0.0
+ 32
+0.0
+ 14
+0.0
+ 24
+0.0
+ 34
+0.0
+ 15
+0.0
+ 25
+0.0
+ 35
+0.0
+146
+0.0
+ 13
+0.0
+ 23
+0.0
+ 33
+0.0
+ 16
+1.0
+ 26
+0.0
+ 36
+0.0
+ 17
+0.0
+ 27
+1.0
+ 37
+0.0
+ 76
+     0
+330
+70
+331
+57
+  0
+LAYOUT
+  5
+6F
+102
+{ACAD_REACTORS
+330
+62
+102
+}
+330
+62
+100
+AcDbPlotSettings
+  1
+
+  2
+Microsoft Print to PDF
+  4
+A4
+  6
+
+ 40
+0.0
+ 41
+0.0
+ 42
+0.0
+ 43
+0.0
+ 44
+210.0156707763672
+ 45
+297.0106506347656
+ 46
+0.0
+ 47
+0.0
+ 48
+0.0
+ 49
+0.0
+140
+0.0
+141
+0.0
+142
+1.0
+143
+1.0
+ 70
+   688
+ 72
+     1
+ 73
+     1
+ 74
+     5
+  7
+
+ 75
+    16
+147
+1.0
+ 76
+     0
+ 77
+     2
+ 78
+   300
+148
+0.0
+149
+0.0
+100
+AcDbLayout
+  1
+レイアウト1
+ 70
+     1
+ 71
+     1
+ 10
+0.0
+ 20
+0.0
+ 11
+297.0106506347656
+ 21
+210.0156707763672
+ 12
+0.0
+ 22
+0.0
+ 32
+0.0
+ 14
+29.70106506347656
+ 24
+21.00156707763675
+ 34
+0.0
+ 15
+267.3095855712891
+ 25
+189.0141036987304
+ 35
+0.0
+146
+0.0
+ 13
+0.0
+ 23
+0.0
+ 33
+0.0
+ 16
+1.0
+ 26
+0.0
+ 36
+0.0
+ 17
+0.0
+ 27
+1.0
+ 37
+0.0
+ 76
+     0
+330
+6C
+331
+DA
+1001
+ACAD_PSEXT
+1000
+Microsoft Print to PDF
+1000
+Microsoft Print To PDF
+1000
+PORTPROMPT:
+1000
+
+1070
+     0
+  0
+LAYOUT
+  5
+77
+102
+{ACAD_REACTORS
+330
+62
+102
+}
+330
+62
+100
+AcDbPlotSettings
+  1
+
+  2
+Microsoft Print to PDF
+  4
+A4
+  6
+
+ 40
+0.0
+ 41
+0.0
+ 42
+0.0
+ 43
+0.0
+ 44
+210.0156707763672
+ 45
+297.0106506347656
+ 46
+0.0
+ 47
+0.0
+ 48
+0.0
+ 49
+0.0
+140
+0.0
+141
+0.0
+142
+1.0
+143
+1.0
+ 70
+   688
+ 72
+     1
+ 73
+     1
+ 74
+     5
+  7
+
+ 75
+    16
+147
+1.0
+ 76
+     0
+ 77
+     2
+ 78
+   300
+148
+0.0
+149
+0.0
+100
+AcDbLayout
+  1
+レイアウト2
+ 70
+     1
+ 71
+     2
+ 10
+0.0
+ 20
+0.0
+ 11
+297.0106506347656
+ 21
+210.0156707763672
+ 12
+0.0
+ 22
+0.0
+ 32
+0.0
+ 14
+29.70106506347656
+ 24
+21.00156707763671
+ 34
+0.0
+ 15
+267.3095855712891
+ 25
+189.0141036987305
+ 35
+0.0
+146
+0.0
+ 13
+0.0
+ 23
+0.0
+ 33
+0.0
+ 16
+1.0
+ 26
+0.0
+ 36
+0.0
+ 17
+0.0
+ 27
+1.0
+ 37
+0.0
+ 76
+     0
+330
+74
+331
+C9
+1001
+ACAD_PSEXT
+1000
+Microsoft Print to PDF
+1000
+Microsoft Print To PDF
+1000
+PORTPROMPT:
+1000
+
+1070
+     0
+  0
+MATERIAL
+  5
+19
+102
+{ACAD_XDICTIONARY
+360
+1A
+102
+}
+102
+{ACAD_REACTORS
+330
+10
+102
+}
+330
+10
+100
+AcDbMaterial
+  1
+ByBlock
+ 72
+     0
+ 43
+0.0208333333333333
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0208333333333333
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0
+ 43
+1.0
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0
+ 43
+1.0
+ 77
+     0
+ 47
+0.0208333333333333
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0208333333333333
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0
+ 47
+1.0
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0
+ 47
+1.0
+171
+     0
+ 49
+0.0208333333333333
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0208333333333333
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0
+ 49
+1.0
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0
+ 49
+1.0
+175
+     0
+142
+0.0208333333333333
+142
+0.0
+142
+0.0
+142
+0.0
+142
+0.0
+142
+0.0208333333333333
+142
+0.0
+142
+0.0
+142
+0.0
+142
+0.0
+142
+1.0
+142
+0.0
+142
+0.0
+142
+0.0
+142
+0.0
+142
+1.0
+179
+     0
+144
+0.0208333333333333
+144
+0.0
+144
+0.0
+144
+0.0
+144
+0.0
+144
+0.0208333333333333
+144
+0.0
+144
+0.0
+144
+0.0
+144
+0.0
+144
+1.0
+144
+0.0
+144
+0.0
+144
+0.0
+144
+0.0
+144
+1.0
+147
+0.0208333333333333
+147
+0.0
+147
+0.0
+147
+0.0
+147
+0.0
+147
+0.0208333333333333
+147
+0.0
+147
+0.0
+147
+0.0
+147
+0.0
+147
+1.0
+147
+0.0
+147
+0.0
+147
+0.0
+147
+0.0
+147
+1.0
+  0
+MATERIAL
+  5
+11
+102
+{ACAD_XDICTIONARY
+360
+12
+102
+}
+102
+{ACAD_REACTORS
+330
+10
+102
+}
+330
+10
+100
+AcDbMaterial
+  1
+ByLayer
+ 72
+     0
+ 43
+0.0208333333333333
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0208333333333333
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0
+ 43
+1.0
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0
+ 43
+1.0
+ 77
+     0
+ 47
+0.0208333333333333
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0208333333333333
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0
+ 47
+1.0
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0
+ 47
+1.0
+171
+     0
+ 49
+0.0208333333333333
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0208333333333333
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0
+ 49
+1.0
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0
+ 49
+1.0
+175
+     0
+142
+0.0208333333333333
+142
+0.0
+142
+0.0
+142
+0.0
+142
+0.0
+142
+0.0208333333333333
+142
+0.0
+142
+0.0
+142
+0.0
+142
+0.0
+142
+1.0
+142
+0.0
+142
+0.0
+142
+0.0
+142
+0.0
+142
+1.0
+179
+     0
+144
+0.0208333333333333
+144
+0.0
+144
+0.0
+144
+0.0
+144
+0.0
+144
+0.0208333333333333
+144
+0.0
+144
+0.0
+144
+0.0
+144
+0.0
+144
+1.0
+144
+0.0
+144
+0.0
+144
+0.0
+144
+0.0
+144
+1.0
+147
+0.0208333333333333
+147
+0.0
+147
+0.0
+147
+0.0
+147
+0.0
+147
+0.0208333333333333
+147
+0.0
+147
+0.0
+147
+0.0
+147
+0.0
+147
+1.0
+147
+0.0
+147
+0.0
+147
+0.0
+147
+0.0
+147
+1.0
+  0
+MATERIAL
+  5
+21
+102
+{ACAD_XDICTIONARY
+360
+22
+102
+}
+102
+{ACAD_REACTORS
+330
+10
+102
+}
+330
+10
+100
+AcDbMaterial
+  1
+Global
+ 72
+     0
+ 43
+0.0208333333333333
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0208333333333333
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0
+ 43
+1.0
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0
+ 43
+0.0
+ 43
+1.0
+ 77
+     0
+ 47
+0.0208333333333333
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0208333333333333
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0
+ 47
+1.0
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0
+ 47
+0.0
+ 47
+1.0
+171
+     0
+ 49
+0.0208333333333333
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0208333333333333
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0
+ 49
+1.0
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0
+ 49
+0.0
+ 49
+1.0
+175
+     0
+142
+0.0208333333333333
+142
+0.0
+142
+0.0
+142
+0.0
+142
+0.0
+142
+0.0208333333333333
+142
+0.0
+142
+0.0
+142
+0.0
+142
+0.0
+142
+1.0
+142
+0.0
+142
+0.0
+142
+0.0
+142
+0.0
+142
+1.0
+179
+     0
+144
+0.0208333333333333
+144
+0.0
+144
+0.0
+144
+0.0
+144
+0.0
+144
+0.0208333333333333
+144
+0.0
+144
+0.0
+144
+0.0
+144
+0.0
+144
+1.0
+144
+0.0
+144
+0.0
+144
+0.0
+144
+0.0
+144
+1.0
+147
+0.0208333333333333
+147
+0.0
+147
+0.0
+147
+0.0
+147
+0.0
+147
+0.0208333333333333
+147
+0.0
+147
+0.0
+147
+0.0
+147
+0.0
+147
+1.0
+147
+0.0
+147
+0.0
+147
+0.0
+147
+0.0
+147
+1.0
+  0
+MLEADERSTYLE
+  5
+67
+102
+{ACAD_REACTORS
+330
+66
+102
+}
+330
+66
+100
+AcDbMLeaderStyle
+179
+     2
+170
+     2
+171
+     1
+172
+     0
+ 90
+        2
+ 40
+0.0
+ 41
+0.0
+173
+     1
+ 91
+-1056964608
+340
+5B
+ 92
+       -2
+290
+     1
+ 42
+0.09
+291
+     1
+ 43
+0.36
+  3
+Standard
+ 44
+0.18
+300
+
+342
+55
+174
+     1
+178
+     6
+175
+     1
+176
+     0
+ 93
+-1056964608
+ 45
+0.18
+292
+     0
+297
+     0
+ 46
+0.18
+ 94
+-1056964608
+ 47
+1.0
+ 49
+1.0
+140
+1.0
+293
+     1
+141
+0.0
+294
+     1
+177
+     0
+142
+1.0
+295
+     0
+296
+     0
+143
+0.125
+271
+     0
+272
+     9
+273
+     9
+298
+     1
+  0
+MLINESTYLE
+  5
+60
+102
+{ACAD_REACTORS
+330
+5F
+102
+}
+330
+5F
+100
+AcDbMlineStyle
+  2
+STANDARD
+ 70
+     0
+  3
+
+ 62
+   256
+ 51
+90.0
+ 52
+90.0
+ 71
+     2
+ 49
+0.5
+ 62
+   256
+  6
+BYLAYER
+ 49
+-0.5
+ 62
+   256
+  6
+BYLAYER
+  0
+ACDBPLACEHOLDER
+  5
+F
+102
+{ACAD_REACTORS
+330
+E
+102
+}
+330
+E
+  0
+SCALE
+  5
+43
+102
+{ACAD_REACTORS
+330
+42
+102
+}
+330
+42
+100
+AcDbScale
+ 70
+     0
+300
+1:1
+140
+1.0
+141
+1.0
+290
+     1
+  0
+SCALE
+  5
+44
+102
+{ACAD_REACTORS
+330
+42
+102
+}
+330
+42
+100
+AcDbScale
+ 70
+     0
+300
+1:2
+140
+1.0
+141
+2.0
+290
+     0
+  0
+SCALE
+  5
+45
+102
+{ACAD_REACTORS
+330
+42
+102
+}
+330
+42
+100
+AcDbScale
+ 70
+     0
+300
+1:4
+140
+1.0
+141
+4.0
+290
+     0
+  0
+SCALE
+  5
+46
+102
+{ACAD_REACTORS
+330
+42
+102
+}
+330
+42
+100
+AcDbScale
+ 70
+     0
+300
+1:5
+140
+1.0
+141
+5.0
+290
+     0
+  0
+SCALE
+  5
+47
+102
+{ACAD_REACTORS
+330
+42
+102
+}
+330
+42
+100
+AcDbScale
+ 70
+     0
+300
+1:8
+140
+1.0
+141
+8.0
+290
+     0
+  0
+SCALE
+  5
+48
+102
+{ACAD_REACTORS
+330
+42
+102
+}
+330
+42
+100
+AcDbScale
+ 70
+     0
+300
+1:10
+140
+1.0
+141
+10.0
+290
+     0
+  0
+SCALE
+  5
+49
+102
+{ACAD_REACTORS
+330
+42
+102
+}
+330
+42
+100
+AcDbScale
+ 70
+     0
+300
+1:16
+140
+1.0
+141
+16.0
+290
+     0
+  0
+SCALE
+  5
+4A
+102
+{ACAD_REACTORS
+330
+42
+102
+}
+330
+42
+100
+AcDbScale
+ 70
+     0
+300
+1:20
+140
+1.0
+141
+20.0
+290
+     0
+  0
+SCALE
+  5
+4B
+102
+{ACAD_REACTORS
+330
+42
+102
+}
+330
+42
+100
+AcDbScale
+ 70
+     0
+300
+1:30
+140
+1.0
+141
+30.0
+290
+     0
+  0
+SCALE
+  5
+4C
+102
+{ACAD_REACTORS
+330
+42
+102
+}
+330
+42
+100
+AcDbScale
+ 70
+     0
+300
+1:40
+140
+1.0
+141
+40.0
+290
+     0
+  0
+SCALE
+  5
+4D
+102
+{ACAD_REACTORS
+330
+42
+102
+}
+330
+42
+100
+AcDbScale
+ 70
+     0
+300
+1:50
+140
+1.0
+141
+50.0
+290
+     0
+  0
+SCALE
+  5
+4E
+102
+{ACAD_REACTORS
+330
+42
+102
+}
+330
+42
+100
+AcDbScale
+ 70
+     0
+300
+1:100
+140
+1.0
+141
+100.0
+290
+     0
+  0
+SCALE
+  5
+4F
+102
+{ACAD_REACTORS
+330
+42
+102
+}
+330
+42
+100
+AcDbScale
+ 70
+     0
+300
+2:1
+140
+2.0
+141
+1.0
+290
+     0
+  0
+SCALE
+  5
+50
+102
+{ACAD_REACTORS
+330
+42
+102
+}
+330
+42
+100
+AcDbScale
+ 70
+     0
+300
+4:1
+140
+4.0
+141
+1.0
+290
+     0
+  0
+SCALE
+  5
+51
+102
+{ACAD_REACTORS
+330
+42
+102
+}
+330
+42
+100
+AcDbScale
+ 70
+     0
+300
+8:1
+140
+8.0
+141
+1.0
+290
+     0
+  0
+SCALE
+  5
+52
+102
+{ACAD_REACTORS
+330
+42
+102
+}
+330
+42
+100
+AcDbScale
+ 70
+     0
+300
+10:1
+140
+10.0
+141
+1.0
+290
+     0
+  0
+SCALE
+  5
+53
+102
+{ACAD_REACTORS
+330
+42
+102
+}
+330
+42
+100
+AcDbScale
+ 70
+     0
+300
+100:1
+140
+100.0
+141
+1.0
+290
+     0
+  0
+ACDBSECTIONVIEWSTYLE
+  5
+69
+102
+{ACAD_REACTORS
+330
+68
+102
+}
+330
+68
+100
+AcDbModelDocViewStyle
+ 70
+     0
+  3
+Metric50
+290
+     0
+300
+Metric50
+ 90
+        0
+100
+AcDbSectionViewStyle
+ 70
+     0
+ 71
+     0
+ 90
+      102
+ 71
+     1
+340
+55
+ 62
+   256
+ 40
+5.0
+340
+0
+340
+0
+ 62
+   256
+ 40
+5.0
+300
+I, O, Q, S, X, Z
+ 40
+10.0
+ 90
+        0
+ 40
+2.5
+ 90
+        0
+ 71
+     2
+340
+5D
+ 90
+       25
+ 62
+   256
+340
+5D
+ 90
+       50
+ 62
+   256
+ 40
+5.0
+ 40
+2.5
+ 40
+5.0
+ 71
+     3
+340
+55
+ 62
+   256
+ 40
+5.0
+ 90
+        0
+ 40
+15.0
+ 90
+        1
+300
+%<\AcVar ViewSectionStartId>%-%<\AcVar ViewSectionEndId>% (%<\AcVar ViewScale \f "%sn">%)
+ 71
+     4
+ 62
+   256
+ 62
+   257
+300
+ANSI31
+ 40
+1.0
+ 90
+        0
+290
+     0
+290
+     0
+ 90
+        6
+ 40
+0.0
+ 40
+1.570796326794896
+ 40
+0.2617993877991494
+ 40
+1.308996938995747
+ 40
+-0.2617993877991494
+ 40
+1.832595714594044
+  0
+TABLESTYLE
+  5
+65
+102
+{ACAD_XDICTIONARY
+360
+E6
+102
+}
+102
+{ACAD_REACTORS
+330
+64
+102
+}
+330
+64
+100
+AcDbTableStyle
+280
+     0
+  3
+Standard
+ 70
+     0
+ 71
+     0
+ 40
+1.5
+ 41
+1.5
+280
+     0
+281
+     0
+  7
+Standard
+140
+4.5
+170
+     2
+ 62
+     0
+ 63
+     7
+283
+     0
+ 90
+      512
+ 91
+        0
+  1
+
+274
+    -2
+284
+     1
+ 64
+     0
+275
+    -2
+285
+     1
+ 65
+     0
+276
+    -2
+286
+     1
+ 66
+     0
+277
+    -2
+287
+     1
+ 67
+     0
+278
+    -2
+288
+     1
+ 68
+     0
+279
+    -2
+289
+     1
+ 69
+     0
+  7
+Standard
+140
+6.0
+170
+     5
+ 62
+     0
+ 63
+     7
+283
+     0
+ 90
+      512
+ 91
+        0
+  1
+
+274
+    -2
+284
+     1
+ 64
+     0
+275
+    -2
+285
+     1
+ 65
+     0
+276
+    -2
+286
+     1
+ 66
+     0
+277
+    -2
+287
+     1
+ 67
+     0
+278
+    -2
+288
+     1
+ 68
+     0
+279
+    -2
+289
+     1
+ 69
+     0
+  7
+Standard
+140
+4.5
+170
+     5
+ 62
+     0
+ 63
+     7
+283
+     0
+ 90
+      512
+ 91
+        0
+  1
+
+274
+    -2
+284
+     1
+ 64
+     0
+275
+    -2
+285
+     1
+ 65
+     0
+276
+    -2
+286
+     1
+ 66
+     0
+277
+    -2
+287
+     1
+ 67
+     0
+278
+    -2
+288
+     1
+ 68
+     0
+279
+    -2
+289
+     1
+ 69
+     0
+  0
+VISUALSTYLE
+  5
+2F
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+2dWireframe
+ 70
+     4
+177
+     3
+291
+     0
+ 70
+    58
+ 90
+        0
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        4
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+   257
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        5
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+2E
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+Basic
+ 70
+     7
+177
+     3
+291
+     1
+ 70
+    58
+ 90
+        1
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        0
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        4
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        8
+176
+     1
+ 62
+     7
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        5
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+35
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+Brighten
+ 70
+    12
+177
+     3
+291
+     1
+ 70
+    58
+ 90
+        2
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        4
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        8
+176
+     1
+ 62
+     7
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        5
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+50.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+39
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+ColorChange
+ 70
+    16
+177
+     3
+291
+     1
+ 70
+    58
+ 90
+        2
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        3
+176
+     1
+ 90
+        0
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     8
+420
+  8421504
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        4
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        8
+176
+     1
+ 62
+     8
+420
+  8421504
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        5
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+32
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+Conceptual
+ 70
+     9
+177
+     3
+291
+     0
+ 70
+    58
+ 90
+        3
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+179.0
+176
+     1
+ 90
+        8
+176
+     1
+ 62
+     7
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        3
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+34
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+Dim
+ 70
+    11
+177
+     3
+291
+     1
+ 70
+    58
+ 90
+        2
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        4
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        8
+176
+     1
+ 62
+     7
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        5
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+-50.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+41
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+EdgeColorOff
+ 70
+    22
+177
+     3
+291
+     1
+ 70
+    58
+ 90
+        2
+176
+     0
+ 90
+        2
+176
+     0
+ 90
+        0
+176
+     0
+ 90
+        0
+176
+     0
+ 40
+0.6
+176
+     0
+ 40
+30.0
+176
+     0
+ 62
+     7
+420
+ 16777215
+176
+     0
+ 90
+        1
+176
+     0
+ 90
+        4
+176
+     0
+ 62
+     7
+176
+     0
+ 62
+   257
+176
+     0
+ 90
+        1
+176
+     0
+ 90
+        1
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        8
+176
+     2
+ 62
+     7
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        1
+176
+     0
+ 90
+        6
+176
+     0
+ 90
+        2
+176
+     0
+ 62
+     7
+176
+     0
+ 90
+        5
+176
+     0
+ 90
+        0
+176
+     0
+ 90
+        0
+176
+     0
+290
+     0
+176
+     0
+ 90
+        1
+176
+     0
+ 40
+0.0
+176
+     0
+ 90
+        0
+176
+     0
+290
+     0
+176
+     0
+290
+     1
+176
+     0
+290
+     1
+176
+     0
+290
+     0
+176
+     0
+290
+     0
+176
+     0
+290
+     0
+176
+     0
+290
+     0
+176
+     0
+290
+     0
+176
+     0
+290
+     0
+176
+     0
+ 90
+       50
+176
+     0
+ 40
+0.0
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        0
+176
+     0
+ 62
+    18
+176
+     0
+ 90
+       50
+176
+     0
+ 90
+        3
+176
+     0
+ 62
+     5
+420
+      255
+176
+     0
+290
+     0
+176
+     0
+ 90
+       50
+176
+     0
+ 90
+       50
+176
+     0
+ 90
+       50
+176
+     0
+290
+     0
+176
+     0
+ 90
+       50
+176
+     0
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     0
+  1
+strokes_ogs.tif
+176
+     0
+290
+     0
+176
+     0
+ 40
+1.0
+176
+     0
+ 40
+1.0
+176
+     0
+  0
+VISUALSTYLE
+  5
+38
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+Facepattern
+ 70
+    15
+177
+     3
+291
+     1
+ 70
+    58
+ 90
+        2
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        4
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        8
+176
+     1
+ 62
+     7
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        5
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+2A
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+Flat
+ 70
+     0
+177
+     3
+291
+     1
+ 70
+    58
+ 90
+        2
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        2
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        8
+176
+     1
+ 62
+     7
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        5
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       13
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+2B
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+FlatWithEdges
+ 70
+     1
+177
+     3
+291
+     1
+ 70
+    58
+ 90
+        2
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        2
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+   257
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        5
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       13
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+2C
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+Gouraud
+ 70
+     2
+177
+     3
+291
+     1
+ 70
+    58
+ 90
+        2
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        2
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+     7
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        5
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       13
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+2D
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+GouraudWithEdges
+ 70
+     3
+177
+     3
+291
+     1
+ 70
+    58
+ 90
+        2
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        2
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+   257
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        5
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       13
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+31
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+Hidden
+ 70
+     6
+177
+     3
+291
+     0
+ 70
+    58
+ 90
+        1
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        0
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+40.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+   257
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        3
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+3F
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+JitterOff
+ 70
+    20
+177
+     3
+291
+     1
+ 70
+    58
+ 90
+        2
+176
+     0
+ 90
+        2
+176
+     0
+ 90
+        0
+176
+     0
+ 90
+        0
+176
+     0
+ 40
+0.6
+176
+     0
+ 40
+30.0
+176
+     0
+ 62
+     7
+420
+ 16777215
+176
+     0
+ 90
+        1
+176
+     0
+ 90
+        4
+176
+     0
+ 62
+     7
+176
+     0
+ 62
+   257
+176
+     0
+ 90
+        1
+176
+     0
+ 90
+        1
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+       10
+176
+     2
+ 62
+     7
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        1
+176
+     0
+ 90
+        6
+176
+     0
+ 90
+        2
+176
+     0
+ 62
+     7
+176
+     0
+ 90
+        5
+176
+     0
+ 90
+        0
+176
+     0
+ 90
+        0
+176
+     0
+290
+     0
+176
+     0
+ 90
+        1
+176
+     0
+ 40
+0.0
+176
+     0
+ 90
+        0
+176
+     0
+290
+     0
+176
+     0
+290
+     1
+176
+     0
+290
+     1
+176
+     0
+290
+     0
+176
+     0
+290
+     0
+176
+     0
+290
+     0
+176
+     0
+290
+     0
+176
+     0
+290
+     0
+176
+     0
+290
+     0
+176
+     0
+ 90
+       50
+176
+     0
+ 40
+0.0
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        0
+176
+     0
+ 62
+    18
+176
+     0
+ 90
+       50
+176
+     0
+ 90
+        3
+176
+     0
+ 62
+     5
+420
+      255
+176
+     0
+290
+     0
+176
+     0
+ 90
+       50
+176
+     0
+ 90
+       50
+176
+     0
+ 90
+       50
+176
+     0
+290
+     0
+176
+     0
+ 90
+       50
+176
+     0
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     0
+  1
+strokes_ogs.tif
+176
+     0
+290
+     0
+176
+     0
+ 40
+1.0
+176
+     0
+ 40
+1.0
+176
+     0
+  0
+VISUALSTYLE
+  5
+37
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+Linepattern
+ 70
+    14
+177
+     3
+291
+     1
+ 70
+    58
+ 90
+        2
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        4
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        7
+176
+     1
+ 90
+        7
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        8
+176
+     1
+ 62
+     7
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        5
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+40
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+OverhangOff
+ 70
+    21
+177
+     3
+291
+     1
+ 70
+    58
+ 90
+        2
+176
+     0
+ 90
+        2
+176
+     0
+ 90
+        0
+176
+     0
+ 90
+        0
+176
+     0
+ 40
+0.6
+176
+     0
+ 40
+30.0
+176
+     0
+ 62
+     7
+420
+ 16777215
+176
+     0
+ 90
+        1
+176
+     0
+ 90
+        4
+176
+     0
+ 62
+     7
+176
+     0
+ 62
+   257
+176
+     0
+ 90
+        1
+176
+     0
+ 90
+        1
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        9
+176
+     2
+ 62
+     7
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        1
+176
+     0
+ 90
+        6
+176
+     0
+ 90
+        2
+176
+     0
+ 62
+     7
+176
+     0
+ 90
+        5
+176
+     0
+ 90
+        0
+176
+     0
+ 90
+        0
+176
+     0
+290
+     0
+176
+     0
+ 90
+        1
+176
+     0
+ 40
+0.0
+176
+     0
+ 90
+        0
+176
+     0
+290
+     0
+176
+     0
+290
+     1
+176
+     0
+290
+     1
+176
+     0
+290
+     0
+176
+     0
+290
+     0
+176
+     0
+290
+     0
+176
+     0
+290
+     0
+176
+     0
+290
+     0
+176
+     0
+290
+     0
+176
+     0
+ 90
+       50
+176
+     0
+ 40
+0.0
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        0
+176
+     0
+ 62
+    18
+176
+     0
+ 90
+       50
+176
+     0
+ 90
+        3
+176
+     0
+ 62
+     5
+420
+      255
+176
+     0
+290
+     0
+176
+     0
+ 90
+       50
+176
+     0
+ 90
+       50
+176
+     0
+ 90
+       50
+176
+     0
+290
+     0
+176
+     0
+ 90
+       50
+176
+     0
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     0
+  1
+strokes_ogs.tif
+176
+     0
+290
+     0
+176
+     0
+ 40
+1.0
+176
+     0
+ 40
+1.0
+176
+     0
+  0
+VISUALSTYLE
+  5
+33
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+Realistic
+ 70
+     8
+177
+     3
+291
+     0
+ 70
+    58
+ 90
+        2
+176
+     1
+ 90
+        3
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        2
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        8
+176
+     1
+ 62
+   257
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        3
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       13
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+3E
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+Shaded
+ 70
+    27
+177
+     3
+291
+     0
+ 70
+    58
+ 90
+        2
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        2
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        4
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        8
+176
+     1
+ 62
+   257
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     8
+420
+  7895160
+176
+     1
+ 90
+        3
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+        5
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+3D
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+Shaded with edges
+ 70
+    26
+177
+     3
+291
+     0
+ 70
+    58
+ 90
+        2
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        2
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        8
+176
+     1
+ 62
+   257
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        3
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+        5
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+3A
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+Shades of Gray
+ 70
+    23
+177
+     3
+291
+     0
+ 70
+    58
+ 90
+        2
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        3
+176
+     1
+ 90
+        0
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+40.0
+176
+     1
+ 90
+        8
+176
+     1
+ 62
+     7
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        3
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+3B
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+Sketchy
+ 70
+    24
+177
+     3
+291
+     0
+ 70
+    58
+ 90
+        1
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        0
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+40.0
+176
+     1
+ 90
+       11
+176
+     1
+ 62
+     7
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+36
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+Thicken
+ 70
+    13
+177
+     3
+291
+     1
+ 70
+    58
+ 90
+        2
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        4
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+       12
+176
+     1
+ 62
+     7
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        5
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+30
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+Wireframe
+ 70
+     5
+177
+     3
+291
+     0
+ 70
+    58
+ 90
+        0
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+ 40
+0.6
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        4
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+   257
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        3
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+VISUALSTYLE
+  5
+3C
+102
+{ACAD_REACTORS
+330
+29
+102
+}
+330
+29
+100
+AcDbVisualStyle
+  2
+X-Ray
+ 70
+    25
+177
+     3
+291
+     0
+ 70
+    58
+ 90
+        2
+176
+     1
+ 90
+        2
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+0.5
+176
+     1
+ 40
+30.0
+176
+     1
+ 62
+     7
+420
+ 16777215
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+     7
+176
+     1
+ 62
+   257
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        1
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        8
+176
+     1
+ 62
+     7
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        1
+176
+     1
+ 90
+        6
+176
+     1
+ 90
+        2
+176
+     1
+ 62
+     7
+176
+     1
+ 90
+        3
+176
+     1
+ 90
+        0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       13
+176
+     1
+ 40
+0.0
+176
+     1
+ 90
+        0
+176
+     1
+290
+     0
+176
+     1
+290
+     1
+176
+     1
+290
+     1
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 40
+0.0
+176
+     1
+ 40
+1.0
+176
+     1
+ 90
+        0
+176
+     1
+ 62
+    18
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+        3
+176
+     1
+ 62
+     5
+420
+      255
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+ 90
+       50
+176
+     1
+290
+     0
+176
+     1
+ 90
+       50
+176
+     1
+ 62
+   256
+176
+     0
+ 40
+1.0
+176
+     0
+ 90
+        2
+176
+     1
+  1
+strokes_ogs.tif
+176
+     1
+290
+     0
+176
+     1
+ 40
+1.0
+176
+     1
+ 40
+1.0
+176
+     1
+  0
+DICTIONARYVAR
+  5
+E5
+102
+{ACAD_REACTORS
+330
+78
+102
+}
+330
+78
+100
+DictionaryVariables
+280
+     0
+  1
+1:1
+  0
+DICTIONARYVAR
+  5
+79
+102
+{ACAD_REACTORS
+330
+78
+102
+}
+330
+78
+100
+DictionaryVariables
+280
+     0
+  1
+3.500000
+  0
+DICTIONARYVAR
+  5
+7A
+102
+{ACAD_REACTORS
+330
+78
+102
+}
+330
+78
+100
+DictionaryVariables
+280
+     0
+  1
+acadiso.lin
+  0
+DICTIONARYVAR
+  5
+E2
+102
+{ACAD_REACTORS
+330
+78
+102
+}
+330
+78
+100
+DictionaryVariables
+280
+     0
+  1
+STANDARD
+  0
+DICTIONARYVAR
+  5
+E1
+102
+{ACAD_REACTORS
+330
+78
+102
+}
+330
+78
+100
+DictionaryVariables
+280
+     0
+  1
+STANDARD
+  0
+DICTIONARYVAR
+  5
+E3
+102
+{ACAD_REACTORS
+330
+78
+102
+}
+330
+78
+100
+DictionaryVariables
+280
+     0
+  1
+Metric50
+  0
+DICTIONARYVAR
+  5
+E4
+102
+{ACAD_REACTORS
+330
+78
+102
+}
+330
+78
+100
+DictionaryVariables
+280
+     0
+  1
+Metric50
+  0
+DICTIONARY
+  5
+1A
+330
+19
+100
+AcDbDictionary
+280
+     1
+281
+     1
+  3
+BUMPTILE
+360
+1C
+  3
+DIFFUSETILE
+360
+1B
+  3
+OPACITYTILE
+360
+1F
+  3
+REFLECTIONTILE
+360
+1E
+  3
+REFRACTIONTILE
+360
+20
+  3
+SPECULARTILE
+360
+1D
+  0
+DICTIONARY
+  5
+12
+330
+11
+100
+AcDbDictionary
+280
+     1
+281
+     1
+  3
+BUMPTILE
+360
+14
+  3
+DIFFUSETILE
+360
+13
+  3
+OPACITYTILE
+360
+17
+  3
+REFLECTIONTILE
+360
+16
+  3
+REFRACTIONTILE
+360
+18
+  3
+SPECULARTILE
+360
+15
+  0
+DICTIONARY
+  5
+22
+330
+21
+100
+AcDbDictionary
+280
+     1
+281
+     1
+  3
+BUMPTILE
+360
+24
+  3
+DIFFUSETILE
+360
+23
+  3
+OPACITYTILE
+360
+27
+  3
+REFLECTIONTILE
+360
+26
+  3
+REFRACTIONTILE
+360
+28
+  3
+SPECULARTILE
+360
+25
+  0
+DICTIONARY
+  5
+E6
+330
+65
+100
+AcDbDictionary
+280
+     1
+281
+     1
+  3
+ACAD_ROUNDTRIP_2008_TABLESTYLE_CELLSTYLEMAP
+360
+152
+  0
+XRECORD
+  5
+1C
+102
+{ACAD_REACTORS
+330
+1A
+102
+}
+330
+1A
+100
+AcDbXrecord
+280
+     1
+270
+     1
+271
+     1
+  0
+XRECORD
+  5
+1B
+102
+{ACAD_REACTORS
+330
+1A
+102
+}
+330
+1A
+100
+AcDbXrecord
+280
+     1
+270
+     1
+271
+     1
+  0
+XRECORD
+  5
+1F
+102
+{ACAD_REACTORS
+330
+1A
+102
+}
+330
+1A
+100
+AcDbXrecord
+280
+     1
+270
+     1
+271
+     1
+  0
+XRECORD
+  5
+1E
+102
+{ACAD_REACTORS
+330
+1A
+102
+}
+330
+1A
+100
+AcDbXrecord
+280
+     1
+270
+     1
+271
+     1
+  0
+XRECORD
+  5
+20
+102
+{ACAD_REACTORS
+330
+1A
+102
+}
+330
+1A
+100
+AcDbXrecord
+280
+     1
+270
+     1
+271
+     1
+  0
+XRECORD
+  5
+1D
+102
+{ACAD_REACTORS
+330
+1A
+102
+}
+330
+1A
+100
+AcDbXrecord
+280
+     1
+270
+     1
+271
+     1
+  0
+XRECORD
+  5
+14
+102
+{ACAD_REACTORS
+330
+12
+102
+}
+330
+12
+100
+AcDbXrecord
+280
+     1
+270
+     1
+271
+     1
+  0
+XRECORD
+  5
+13
+102
+{ACAD_REACTORS
+330
+12
+102
+}
+330
+12
+100
+AcDbXrecord
+280
+     1
+270
+     1
+271
+     1
+  0
+XRECORD
+  5
+17
+102
+{ACAD_REACTORS
+330
+12
+102
+}
+330
+12
+100
+AcDbXrecord
+280
+     1
+270
+     1
+271
+     1
+  0
+XRECORD
+  5
+16
+102
+{ACAD_REACTORS
+330
+12
+102
+}
+330
+12
+100
+AcDbXrecord
+280
+     1
+270
+     1
+271
+     1
+  0
+XRECORD
+  5
+18
+102
+{ACAD_REACTORS
+330
+12
+102
+}
+330
+12
+100
+AcDbXrecord
+280
+     1
+270
+     1
+271
+     1
+  0
+XRECORD
+  5
+15
+102
+{ACAD_REACTORS
+330
+12
+102
+}
+330
+12
+100
+AcDbXrecord
+280
+     1
+270
+     1
+271
+     1
+  0
+XRECORD
+  5
+24
+102
+{ACAD_REACTORS
+330
+22
+102
+}
+330
+22
+100
+AcDbXrecord
+280
+     1
+270
+     1
+271
+     1
+  0
+XRECORD
+  5
+23
+102
+{ACAD_REACTORS
+330
+22
+102
+}
+330
+22
+100
+AcDbXrecord
+280
+     1
+270
+     1
+271
+     1
+  0
+XRECORD
+  5
+27
+102
+{ACAD_REACTORS
+330
+22
+102
+}
+330
+22
+100
+AcDbXrecord
+280
+     1
+270
+     1
+271
+     1
+  0
+XRECORD
+  5
+26
+102
+{ACAD_REACTORS
+330
+22
+102
+}
+330
+22
+100
+AcDbXrecord
+280
+     1
+270
+     1
+271
+     1
+  0
+XRECORD
+  5
+28
+102
+{ACAD_REACTORS
+330
+22
+102
+}
+330
+22
+100
+AcDbXrecord
+280
+     1
+270
+     1
+271
+     1
+  0
+XRECORD
+  5
+25
+102
+{ACAD_REACTORS
+330
+22
+102
+}
+330
+22
+100
+AcDbXrecord
+280
+     1
+270
+     1
+271
+     1
+  0
+CELLSTYLEMAP
+  5
+152
+102
+{ACAD_REACTORS
+330
+E6
+102
+}
+330
+E6
+100
+AcDbCellStyleMap
+ 90
+        3
+300
+CELLSTYLE
+  1
+TABLEFORMAT_BEGIN
+ 90
+        5
+170
+     1
+ 91
+        0
+ 92
+    32768
+ 62
+   257
+ 93
+        1
+300
+CONTENTFORMAT
+  1
+CONTENTFORMAT_BEGIN
+ 90
+        0
+ 91
+        0
+ 92
+      512
+ 93
+        0
+300
+
+ 40
+0.0
+140
+1.0
+ 94
+        5
+ 62
+     0
+340
+55
+144
+6.0
+309
+CONTENTFORMAT_END
+171
+     1
+301
+MARGIN
+  1
+CELLMARGIN_BEGIN
+ 40
+1.5
+ 40
+1.5
+ 40
+1.5
+ 40
+1.5
+ 40
+0.18
+ 40
+0.18
+309
+CELLMARGIN_END
+ 94
+        6
+ 95
+        1
+302
+GRIDFORMAT
+  1
+GRIDFORMAT_BEGIN
+ 90
+        0
+ 91
+        1
+ 62
+     0
+ 92
+       -2
+340
+0
+ 93
+        0
+ 40
+1.125
+309
+GRIDFORMAT_END
+ 95
+        2
+302
+GRIDFORMAT
+  1
+GRIDFORMAT_BEGIN
+ 90
+        0
+ 91
+        1
+ 62
+     0
+ 92
+       -2
+340
+0
+ 93
+        0
+ 40
+1.125
+309
+GRIDFORMAT_END
+ 95
+        4
+302
+GRIDFORMAT
+  1
+GRIDFORMAT_BEGIN
+ 90
+        0
+ 91
+        1
+ 62
+     0
+ 92
+       -2
+340
+0
+ 93
+        0
+ 40
+1.125
+309
+GRIDFORMAT_END
+ 95
+        8
+302
+GRIDFORMAT
+  1
+GRIDFORMAT_BEGIN
+ 90
+        0
+ 91
+        1
+ 62
+     0
+ 92
+       -2
+340
+0
+ 93
+        0
+ 40
+1.125
+309
+GRIDFORMAT_END
+ 95
+       16
+302
+GRIDFORMAT
+  1
+GRIDFORMAT_BEGIN
+ 90
+        0
+ 91
+        1
+ 62
+     0
+ 92
+       -2
+340
+0
+ 93
+        0
+ 40
+1.125
+309
+GRIDFORMAT_END
+ 95
+       32
+302
+GRIDFORMAT
+  1
+GRIDFORMAT_BEGIN
+ 90
+        0
+ 91
+        1
+ 62
+     0
+ 92
+       -2
+340
+0
+ 93
+        0
+ 40
+1.125
+309
+GRIDFORMAT_END
+309
+TABLEFORMAT_END
+  1
+CELLSTYLE_BEGIN
+ 90
+        1
+ 91
+        1
+300
+_TITLE
+309
+CELLSTYLE_END
+300
+CELLSTYLE
+  1
+TABLEFORMAT_BEGIN
+ 90
+        5
+170
+     1
+ 91
+        0
+ 92
+        0
+ 62
+   257
+ 93
+        1
+300
+CONTENTFORMAT
+  1
+CONTENTFORMAT_BEGIN
+ 90
+        0
+ 91
+        0
+ 92
+      512
+ 93
+        0
+300
+
+ 40
+0.0
+140
+1.0
+ 94
+        5
+ 62
+     0
+340
+55
+144
+4.5
+309
+CONTENTFORMAT_END
+171
+     1
+301
+MARGIN
+  1
+CELLMARGIN_BEGIN
+ 40
+1.5
+ 40
+1.5
+ 40
+1.5
+ 40
+1.5
+ 40
+0.18
+ 40
+0.18
+309
+CELLMARGIN_END
+ 94
+        6
+ 95
+        1
+302
+GRIDFORMAT
+  1
+GRIDFORMAT_BEGIN
+ 90
+        0
+ 91
+        1
+ 62
+     0
+ 92
+       -2
+340
+0
+ 93
+        0
+ 40
+1.125
+309
+GRIDFORMAT_END
+ 95
+        2
+302
+GRIDFORMAT
+  1
+GRIDFORMAT_BEGIN
+ 90
+        0
+ 91
+        1
+ 62
+     0
+ 92
+       -2
+340
+0
+ 93
+        0
+ 40
+1.125
+309
+GRIDFORMAT_END
+ 95
+        4
+302
+GRIDFORMAT
+  1
+GRIDFORMAT_BEGIN
+ 90
+        0
+ 91
+        1
+ 62
+     0
+ 92
+       -2
+340
+0
+ 93
+        0
+ 40
+1.125
+309
+GRIDFORMAT_END
+ 95
+        8
+302
+GRIDFORMAT
+  1
+GRIDFORMAT_BEGIN
+ 90
+        0
+ 91
+        1
+ 62
+     0
+ 92
+       -2
+340
+0
+ 93
+        0
+ 40
+1.125
+309
+GRIDFORMAT_END
+ 95
+       16
+302
+GRIDFORMAT
+  1
+GRIDFORMAT_BEGIN
+ 90
+        0
+ 91
+        1
+ 62
+     0
+ 92
+       -2
+340
+0
+ 93
+        0
+ 40
+1.125
+309
+GRIDFORMAT_END
+ 95
+       32
+302
+GRIDFORMAT
+  1
+GRIDFORMAT_BEGIN
+ 90
+        0
+ 91
+        1
+ 62
+     0
+ 92
+       -2
+340
+0
+ 93
+        0
+ 40
+1.125
+309
+GRIDFORMAT_END
+309
+TABLEFORMAT_END
+  1
+CELLSTYLE_BEGIN
+ 90
+        2
+ 91
+        1
+300
+_HEADER
+309
+CELLSTYLE_END
+300
+CELLSTYLE
+  1
+TABLEFORMAT_BEGIN
+ 90
+        5
+170
+     1
+ 91
+        0
+ 92
+        0
+ 62
+   257
+ 93
+        1
+300
+CONTENTFORMAT
+  1
+CONTENTFORMAT_BEGIN
+ 90
+        0
+ 91
+        0
+ 92
+      512
+ 93
+        0
+300
+
+ 40
+0.0
+140
+1.0
+ 94
+        2
+ 62
+     0
+340
+55
+144
+4.5
+309
+CONTENTFORMAT_END
+171
+     1
+301
+MARGIN
+  1
+CELLMARGIN_BEGIN
+ 40
+1.5
+ 40
+1.5
+ 40
+1.5
+ 40
+1.5
+ 40
+0.18
+ 40
+0.18
+309
+CELLMARGIN_END
+ 94
+        6
+ 95
+        1
+302
+GRIDFORMAT
+  1
+GRIDFORMAT_BEGIN
+ 90
+        0
+ 91
+        1
+ 62
+     0
+ 92
+       -2
+340
+0
+ 93
+        0
+ 40
+1.125
+309
+GRIDFORMAT_END
+ 95
+        2
+302
+GRIDFORMAT
+  1
+GRIDFORMAT_BEGIN
+ 90
+        0
+ 91
+        1
+ 62
+     0
+ 92
+       -2
+340
+0
+ 93
+        0
+ 40
+1.125
+309
+GRIDFORMAT_END
+ 95
+        4
+302
+GRIDFORMAT
+  1
+GRIDFORMAT_BEGIN
+ 90
+        0
+ 91
+        1
+ 62
+     0
+ 92
+       -2
+340
+0
+ 93
+        0
+ 40
+1.125
+309
+GRIDFORMAT_END
+ 95
+        8
+302
+GRIDFORMAT
+  1
+GRIDFORMAT_BEGIN
+ 90
+        0
+ 91
+        1
+ 62
+     0
+ 92
+       -2
+340
+0
+ 93
+        0
+ 40
+1.125
+309
+GRIDFORMAT_END
+ 95
+       16
+302
+GRIDFORMAT
+  1
+GRIDFORMAT_BEGIN
+ 90
+        0
+ 91
+        1
+ 62
+     0
+ 92
+       -2
+340
+0
+ 93
+        0
+ 40
+1.125
+309
+GRIDFORMAT_END
+ 95
+       32
+302
+GRIDFORMAT
+  1
+GRIDFORMAT_BEGIN
+ 90
+        0
+ 91
+        1
+ 62
+     0
+ 92
+       -2
+340
+0
+ 93
+        0
+ 40
+1.125
+309
+GRIDFORMAT_END
+309
+TABLEFORMAT_END
+  1
+CELLSTYLE_BEGIN
+ 90
+        3
+ 91
+        2
+300
+_DATA
+309
+CELLSTYLE_END
+  0
+ENDSEC
+  0
+SECTION
+  2
+ACDSDATA
+ 70
+     2
+ 71
+     8
+  0
+ACDSSCHEMA
+ 90
+        0
+  1
+AcDb_Thumbnail_Schema
+  2
+AcDbDs::ID
+280
+    10
+ 91
+        8
+  2
+Thumbnail_Data
+280
+    15
+ 91
+        0
+101
+ACDSRECORD
+ 95
+        0
+ 90
+        1
+  2
+AcDbDs::TreatedAsObjectData
+280
+     1
+291
+     1
+101
+ACDSRECORD
+ 95
+        0
+ 90
+        2
+  2
+AcDbDs::Legacy
+280
+     1
+291
+     1
+101
+ACDSRECORD
+  1
+AcDbDs::ID
+ 90
+        3
+  2
+AcDs:Indexable
+280
+     1
+291
+     1
+101
+ACDSRECORD
+  1
+AcDbDs::ID
+ 90
+        4
+  2
+AcDbDs::HandleAttribute
+280
+     7
+282
+     1
+  0
+ACDSSCHEMA
+ 90
+        1
+  1
+AcDbDs::TreatedAsObjectDataSchema
+  2
+AcDbDs::TreatedAsObjectData
+280
+     1
+ 91
+        0
+  0
+ACDSSCHEMA
+ 90
+        2
+  1
+AcDbDs::LegacySchema
+  2
+AcDbDs::Legacy
+280
+     1
+ 91
+        0
+  0
+ACDSSCHEMA
+ 90
+        3
+  1
+AcDbDs::IndexedPropertySchema
+  2
+AcDs:Indexable
+280
+     1
+ 91
+        0
+  0
+ACDSSCHEMA
+ 90
+        4
+  1
+AcDbDs::HandleAttributeSchema
+  2
+AcDbDs::HandleAttribute
+280
+     7
+ 91
+        1
+284
+     1
+  0
+ACDSRECORD
+ 90
+        0
+  2
+AcDbDs::ID
+280
+    10
+320
+73
+  2
+Thumbnail_Data
+280
+    15
+ 94
+     1015
+310
+89504E470D0A1A0A0000000D49484452000001000000006E0803000000FF253DCA00000300504C5445212830FFFFFF2128300000000000000000000000000000000000000000000000000000330000660000990000CC0000FF0033000033330033660033990033CC0033FF0066000066330066660066990066CC0066FF0099
+310
+000099330099660099990099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF0000FF3300FF6600FF9900FFCC00FFFF3300003300333300663300993300CC3300FF3333003333333333663333993333CC3333FF3366003366333366663366993366CC3366FF3399003399333399663399993399CC3399FF33CC00
+310
+33CC3333CC6633CC9933CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF6600006600336600666600996600CC6600FF6633006633336633666633996633CC6633FF6666006666336666666666996666CC6666FF6699006699336699666699996699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066
+310
+FF3366FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF9933009933339933669933999933CC9933FF9966009966339966669966999966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC3399CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFFCC0000CC00
+310
+33CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFFCCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0000FF0033FF0066FF0099FF00CCFF00FFFF3300FF3333
+310
+FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33FFCC66FFCC99FFCCCCFFCCFFFFFF00FFFF33FFFF66FFFF99FFFFCCFFFFFF0000000D0D0D1A1A1A2828283535354343435050505D5D5D6B6B6B787878868686939393A1A1A1AEAEAEBB
+310
+BBBBC9C9C9D6D6D6E4E4E4F1F1F1FFFFFF0000000000000000000000000000000000000000000000000000000000002E4550F1000000B24944415478DAEDD2B10D80201445D1B70EFB6FC21EEC606B41821624E83FB7D38A77F29349FDFED1F2BEF1E8D7B90100000000000000009400E8B3AA5F4000000000000000000000
+310
+0000F07B80B6ACFA0504000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C0B700C696AA5F40000000000000000000000000000080FDF6DB5F7BFE38FC79BB8B2449922449D2515DD675687F38B8CC5F0000000049454E44AE426082
+  0
+ACDSRECORD
+ 90
+        0
+  2
+AcDbDs::ID
+280
+    10
+320
+6F
+  2
+Thumbnail_Data
+280
+    15
+ 94
+     1199
+310
+89504E470D0A1A0A0000000D4948445200000100000000B5080300000087DCD12600000300504C5445FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000330000660000990000CC0000FF0033000033330033660033990033CC0033FF0066000066330066660066990066CC0066FF0099
+310
+000099330099660099990099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF0000FF3300FF6600FF9900FFCC00FFFF3300003300333300663300993300CC3300FF3333003333333333663333993333CC3333FF3366003366333366663366993366CC3366FF3399003399333399663399993399CC3399FF33CC00
+310
+33CC3333CC6633CC9933CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF6600006600336600666600996600CC6600FF6633006633336633666633996633CC6633FF6666006666336666666666996666CC6666FF6699006699336699666699996699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066
+310
+FF3366FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF9933009933339933669933999933CC9933FF9966009966339966669966999966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC3399CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFFCC0000CC00
+310
+33CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFFCCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0000FF0033FF0066FF0099FF00CCFF00FFFF3300FF3333
+310
+FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33FFCC66FFCC99FFCCCCFFCCFFFFFF00FFFF33FFFF66FFFF99FFFFCCFFFFFF0000000D0D0D1A1A1A2828283535354343435050505D5D5D6B6B6B787878868686939393A1A1A1AEAEAEBB
+310
+BBBBC9C9C9D6D6D6E4E4E4F1F1F1FFFFFF000000000000000000000000000000000000000000000000000000000000AD4AB4E40000016A4944415478DAEDDD410E83201005506E43B8FF4D3C078768D76D4D0525B533EF2F219998879280414B4F9E02A0240E00000000000000000000000000000000E0AD33CEAEC71440A0
+310
+81060000000000000000000000C00840FC17C05F3BC3AC79E700E2ACFACD0100000000300B106033F424C0FF8F3C0000000000000000000000000000000000000000A701DA4C8E5EF765C557024C8C473BDA7859710000002C05D88EA73ED3EA87B4BDB681E2BF037869ACBBE3B38DDF01DB6EB17AB8380000000000000000
+310
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008300D9CF0C0DC6B139000002015C75C0BBAD2CFE0FDF0F682B8B030000000000000000000000000000000000DC11A000B83F40F6BFCC0408000000004C00F4F4003DFB23D0C3C41C00000000000000
+310
+00000000008091D560EEC5508600000000000000000000000000000000590192273DC0039C6DF407D736AEAA0000000049454E44AE426082
+  0
+ACDSRECORD
+ 90
+        0
+  2
+AcDbDs::ID
+280
+    10
+320
+77
+  2
+Thumbnail_Data
+280
+    15
+ 94
+     1141
+310
+89504E470D0A1A0A0000000D4948445200000100000000B5080300000087DCD12600000300504C5445FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000330000660000990000CC0000FF0033000033330033660033990033CC0033FF0066000066330066660066990066CC0066FF0099
+310
+000099330099660099990099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF0000FF3300FF6600FF9900FFCC00FFFF3300003300333300663300993300CC3300FF3333003333333333663333993333CC3333FF3366003366333366663366993366CC3366FF3399003399333399663399993399CC3399FF33CC00
+310
+33CC3333CC6633CC9933CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF6600006600336600666600996600CC6600FF6633006633336633666633996633CC6633FF6666006666336666666666996666CC6666FF6699006699336699666699996699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066
+310
+FF3366FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF9933009933339933669933999933CC9933FF9966009966339966669966999966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC3399CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFFCC0000CC00
+310
+33CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFFCCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0000FF0033FF0066FF0099FF00CCFF00FFFF3300FF3333
+310
+FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33FFCC66FFCC99FFCCCCFFCCFFFFFF00FFFF33FFFF66FFFF99FFFFCCFFFFFF0000000D0D0D1A1A1A2828283535354343435050505D5D5D6B6B6B787878868686939393A1A1A1AEAEAEBB
+310
+BBBBC9C9C9D6D6D6E4E4E4F1F1F1FFFFFF000000000000000000000000000000000000000000000000000000000000AD4AB4E4000001304944415478DAEDDB4B0AC32014055077F378FBDF49D7D145D4F433EA24CDA8BC7B2E12D40C8423A809B8EEE15900567000000000000000000000000000000000005F2FE7FCF5B804
+310
+3068A201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080F3E3FC74777F24C0B9BEC900FDCCD178D7E2006E3B5DD5F5AA0502D49EFCA3EC47010000C02218BA0D76EA36F849871E84E28FC2E100
+310
+3E8701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FC17C0A05C024808000000000000000000000000000000900A109E78800733563D82A2E1E31F0000000049454E44AE426082
+  0
+ENDSEC
+  0
+EOF
provenance/tools/build.pyadded+128
@@ -0,0 +1,128 @@+"""Build the MSASH168SC7224KTCA01 page tree (maker STEP, KiCad footprint renamed, symbol, checks, GLB, LODs, figures).++usage: build.py            (cadquery venv python, run with -I)+Writes /home/adom/project/uta-dynos/work/pages/msash168sc7224ktca01/. Downloads are read from+/home/adom/project/uta-dynos/work/pages/_build/dl (never executed); scripts live in this folder.+"""+import sys, os, json, shutil, subprocess, hashlib, re+from PIL import Image+TOOLS = os.path.dirname(os.path.abspath(__file__))+sys.path.insert(0, TOOLS)+from parts import P, ROOT, FIGS, DOCS, TODAY+DL = os.path.join(ROOT, "dl"); WORK = os.path.join(ROOT, "work", "ms"); os.makedirs(WORK, exist_ok=True)+PY = "/home/adom/.venvs/cq/bin/python"+slug, MPN = P["slug"], P["mpn"]+OUT = f"/home/adom/project/uta-dynos/work/pages/{slug}"+sha = lambda f: hashlib.sha256(open(f, "rb").read()).hexdigest()+def run(cmd, **kw):+    r = subprocess.run(cmd, capture_output=True, text=True, **kw)+    if r.returncode != 0:+        print("FAILED", cmd, r.stdout[-2000:], r.stderr[-2000:]); sys.exit(1)+    return r+for d in ("docs/verify", "docs/models", "docs/figures", "lod", "provenance/tools", "provenance/manufacturer", "land-pattern", "altium", "vendor"):+    os.makedirs(os.path.join(OUT, d), exist_ok=True)++# ---------- STEP: Taiyo Yuden's own model, bytes unchanged ----------+src_step = os.path.join(DL, "ty-3d", f"{MPN}.step")+orig_name = f"vendor/{MPN}-taiyo-yuden-original.step"+shutil.copyfile(src_step, os.path.join(OUT, orig_name))+step_name = f"{MPN}.step"; step_path = os.path.join(OUT, step_name)+shutil.copyfile(src_step, step_path)  # already Z-up, mm, seated on z = 0, centred, long axis X (checked below): no transform+assert sha(step_path) == sha(src_step)+shutil.copyfile(os.path.join(DL, "ty-3d", f"{MPN}.dxf"), os.path.join(OUT, f"provenance/manufacturer/{MPN}-land.dxf"))++# ---------- footprint: KiCad standard C_0603_1608Metric, renamed, model path set ----------+fp_name = f"{P['fp']}_{MPN}"+src_fp = open(os.path.join(DL, "kicad", P["fp"] + ".kicad_mod")).read()+fp = src_fp.replace(f'(footprint "{P["fp"]}"', f'(footprint "{fp_name}"', 1)+fp = re.sub(r'\(model "[^"]+"', f'(model "${{KIPRJMOD}}/{step_name}"', fp)+assert fp.count(fp_name) == 1 and "${KIPRJMOD}/" + step_name in fp+fp_file = f"{fp_name}.kicad_mod"+open(os.path.join(OUT, fp_file), "w").write(fp)++# ---------- symbol (standard capacitor graphic, pin ends on the 2.54 mm grid) ----------+d = P["dist"]+def prop(name, val, y, hide=True):+    h = " hide" if hide else ""+    return f'    (property "{name}" "{val}" (at 0 {y} 0) (effects (font (size 1.27 1.27)){h}))\n'+props = (prop("Reference", "C", 0, False).replace("(at 0 0 0)", "(at 2.54 1.27 0)").replace("(font (size 1.27 1.27))", "(font (size 1.27 1.27)) (justify left)")+         + prop("Value", P["value_sym"], 0, False).replace("(at 0 0 0)", "(at 2.54 -1.27 0)").replace("(font (size 1.27 1.27))", "(font (size 1.27 1.27)) (justify left)")+         + prop("Footprint", fp_name, -7.62) + prop("Datasheet", P["product_url"], -10.16) + prop("Description", P["brief"], -12.7)+         + prop("MPN", MPN, -15.24) + prop("Manufacturer", P["mfr"], -17.78)+         + prop("Mouser", d["mouser"][0], -20.32) + prop("DigiKey", d["digikey"][0], -22.86) + prop("LCSC", "", -25.4)+         + prop("Adom Wiki", f"https://wiki.adom.inc/adom/{slug}", -27.94))+sym = f'''(kicad_symbol_lib (version 20241209) (generator "adom_passive_symbol")+  (symbol "{MPN}" (pin_numbers (hide yes)) (pin_names (offset 0.254) (hide yes)) (exclude_from_sim no) (in_bom yes) (on_board yes)+{props}    (property "ki_keywords" "capacitor mlcc 0603 100V X7S {MPN} {P['old_pn']}" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))+    (symbol "{MPN}_0_1"+      (polyline (pts (xy -2.032 -0.762) (xy 2.032 -0.762)) (stroke (width 0.508) (type default)) (fill (type none)))+      (polyline (pts (xy -2.032 0.762) (xy 2.032 0.762)) (stroke (width 0.508) (type default)) (fill (type none)))+    )+    (symbol "{MPN}_1_1"+      (pin passive line (at 0 2.54 270) (length 1.778) (name "~" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))))+      (pin passive line (at 0 -2.54 90) (length 1.778) (name "~" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))))+    )+  )+)+'''+sym_file = f"{MPN}.kicad_sym"+open(os.path.join(OUT, sym_file), "w").write(sym)++# ---------- documents + figure crops (150 dpi) ----------+pdfs = {}+for key, local, pub, title, url in DOCS:+    shutil.copyfile(os.path.join(DL, local), os.path.join(OUT, pub)); pdfs[key] = os.path.join(DL, local)+figs = []+for name, doc, page, box, caption in FIGS:+    png = os.path.join(WORK, f"fig150-{doc}-{page}.png")+    if not os.path.exists(png):+        run(["pdftoppm", "-r", "150", "-png", "-singlefile", "-f", str(page), "-l", str(page), pdfs[doc], png[:-4]])+    b = [int(round(v * 1.5)) for v in box]+    out = os.path.join(OUT, "docs/figures", name)+    Image.open(png).convert("RGB").crop(b).save(out, optimize=True)+    figs.append({"file": f"docs/figures/{name}", "document": next(t for k, _, _, t, _ in DOCS if k == doc), "page": page,+                 "crop_px_at_150dpi": b, "caption": caption, "sha256": sha(out)})+json.dump(figs, open(os.path.join(OUT, "docs/figures/figures.json"), "w"), indent=1)++# ---------- overlay proof of the maker's STEP against the printed limits ----------+crop100 = os.path.join(WORK, "cat-5.png")+spec = {"label": MPN, "mpn": MPN, **P["overlay"], "crops": [[crop100, [0, 20, 827, 640]]], "marking": "none specified"}+sp = os.path.join(WORK, "overlay-spec.json"); json.dump(spec, open(sp, "w"))+r = run([PY, "-I", os.path.join(TOOLS, "overlay_chip.py"), sp, step_path, os.path.join(OUT, f"docs/verify/{slug}-overlay.png")], cwd=TOOLS)+check = json.loads(r.stdout.strip().splitlines()[-1]); check["step"] = step_name+json.dump(check, open(os.path.join(OUT, f"docs/verify/{slug}-check.json"), "w"), indent=1)+pub = dict(spec); pub["crops"] = [["catalog p.5 render at 100 dpi", [0, 20, 827, 640]]]+json.dump(pub, open(os.path.join(OUT, f"provenance/tools/{slug}-overlay-spec.json"), "w"), indent=1)+print("overlay all_pass:", check["all_pass"], [(c["dim"], c["model_mm"], c["pass"]) for c in check["checks"]])+if not check["all_pass"]:+    sys.exit(2)++# ---------- land: KiCad pads (used) vs Taiyo Yuden's DXF land ----------+r = run([PY, "-I", os.path.join(TOOLS, "landcheck.py"), slug, os.path.join(OUT, "land-pattern"), os.path.join(OUT, fp_file)], cwd=TOOLS)+land = json.loads(r.stdout.strip().splitlines()[-1])+json.dump(land, open(os.path.join(OUT, "land-pattern/land-check.json"), "w"), indent=1)++# ---------- GLB + thumbnails (step2glb service) ----------+glb_path = os.path.join(OUT, "package-reference.glb")+g = subprocess.run(["step2glb", "convert", step_path, "-o", glb_path], capture_output=True, text=True)+print("step2glb exit", g.returncode)+assert g.returncode == 0 and os.path.getsize(glb_path) > 1000+def thumb(src, out, wh=None):+    extra = ["--width", str(wh[0]), "--height", str(wh[1])] if wh else []+    return subprocess.run(["step2glb", "thumbnail", src, "-o", out] + extra, capture_output=True, text=True).returncode+th = [thumb(step_path, os.path.join(OUT, "docs/hero.png"), (1600, 1000)), thumb(step_path, os.path.join(OUT, "docs/models/step-plain.png"))]+print("thumbs", th)++# ---------- LODs ----------+run([PY, "-I", os.path.join(TOOLS, "lod.py"), step_path, MPN, OUT, step_name], cwd=TOOLS)+man = json.load(open(os.path.join(OUT, "lod/manifest.json")))+man["purpose"] = "clean board-use component models: no footprint pads, outlines, labels or silkscreen; no marking (the maker specifies none)"+man["generator"] = "lod.py (OCCT via cadquery-ocp)"+json.dump(man, open(os.path.join(OUT, "lod/manifest.json"), "w"), indent=1)++for t in ("build.py", "parts.py", "ortho.py", "overlay_chip.py", "landcheck.py", "lod.py", "records.py", "finish.py", "push.sh", "verify_live.py"):+    if os.path.exists(os.path.join(TOOLS, t)):+        shutil.copyfile(os.path.join(TOOLS, t), os.path.join(OUT, "provenance/tools", t))+json.dump({"step": step_name, "orig": orig_name, "fp": fp_file, "sym": sym_file, "check": check, "land": land, "thumbs": th, "date": TODAY},+          open(os.path.join(ROOT, "work", f"{slug}-build.json"), "w"), indent=1)+print("built", OUT)
provenance/tools/finish.pyadded+49
@@ -0,0 +1,49 @@+"""Fusion .lbr, Altium SchLib/PcbLib, hero GLB and the plain-STEP thumbnail for one page.++usage: finish.py <slug>   (after build.py and a first records.py run, which writes page.json)+"""+import sys, os, json, subprocess, hashlib, shutil+sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))+from parts import PARTS+ROOT = "/home/adom/project/uta-dynos/work/pages/_build"+HERO_PY = os.path.join(ROOT, "component-hero/skills/component-hero/scripts/hero_glb.py")+slug = sys.argv[1]+P = next(p for p in PARTS if p["slug"] == slug)+OUT = os.path.join(ROOT, "pages", slug); MPN = P["mpn"]+B = json.load(open(os.path.join(ROOT, "work", f"{slug}-build.json")))+sha = lambda f: hashlib.sha256(open(os.path.join(OUT, f), "rb").read()).hexdigest()+def run(cmd, cwd=OUT):+    r = subprocess.run(cmd, capture_output=True, text=True, cwd=cwd)+    if r.returncode != 0:+        print("FAILED", cmd, r.stdout[-1500:], r.stderr[-1500:]); sys.exit(1)+    return (r.stdout + r.stderr).strip()+rec = {}+# plain STEP thumbnail for models.json+run(["step2glb", "thumbnail", B["step"], "-o", "docs/models/step-plain.png"])+# Fusion / EAGLE+o = run(["adom-lbr", "generate", "--sym", B["sym"], "--fp", B["fp"], "--part-metadata", "page.json", "-o", f"{MPN}.lbr"])+_l = run(["adom-lbr", "lint", f"{MPN}.lbr"]); lint = json.loads(_l[_l.index("{"):_l.rindex("}") + 1])+assert lint["passed"], lint+rec["lbr"] = {"file": f"{MPN}.lbr", "tool": "adom-lbr " + run(["adom-lbr", "--version"]).split()[-1],+              "command": f"adom-lbr generate --sym {B['sym']} --fp {B['fp']} --part-metadata page.json -o {MPN}.lbr",+              "lint": {"passed": lint["passed"], "errors": len(lint.get("errors", [])), "warnings": len(lint.get("warnings", []))}, "sha256": sha(f"{MPN}.lbr")}+# Altium: hub JSON beside the STEP so the PcbLib embeds the body+os.makedirs(os.path.join(OUT, "altium"), exist_ok=True)+o1 = run(["adom-lbr", "import-kicad", "--sym", B["sym"], "--fp", B["fp"], "--mpn", MPN, "--out", f"{MPN}.adom-lbr.json"])+o2 = run(["adom-lbr", "assemble-altium", "--no-dedupe", "--out", f"altium/{MPN}", f"{MPN}.adom-lbr.json"])+rep = json.loads(o2[o2.index("{"):o2.rindex("}") + 1])+assert rep["status"] == "ok" and rep["models"]["embedded"] == 1, rep+rec["altium"] = {"files": [f"altium/{MPN}.SchLib", f"altium/{MPN}.PcbLib", f"{MPN}.adom-lbr.json"],+                 "commands": [f"adom-lbr import-kicad --sym {B['sym']} --fp {B['fp']} --mpn {MPN} --out {MPN}.adom-lbr.json",+                              f"adom-lbr assemble-altium --no-dedupe --out altium/{MPN} {MPN}.adom-lbr.json"],+                 "report": rep, "hints": [l for l in o1.splitlines() if l.startswith("HINT")],+                 "sha256": {f: sha(f) for f in (f"altium/{MPN}.SchLib", f"altium/{MPN}.PcbLib", f"{MPN}.adom-lbr.json")}}+# hero GLB (component-hero standard)+o = run(["/home/adom/.venvs/cq/bin/python", "-I", HERO_PY, "package-reference.glb", B["fp"], "page.json", f"{slug}-hero.glb", "--png", "docs/verify/hero-preview.png"])+print(o)+assert "align OK" in o, o+rec["hero"] = {"file": f"{slug}-hero.glb", "tool": "adom/component-hero skills/component-hero/scripts/hero_glb.py",+               "tool_sha256": hashlib.sha256(open(HERO_PY, "rb").read()).hexdigest(),+               "inputs": ["package-reference.glb", B["fp"], "page.json"], "result": o.splitlines()[-1], "sha256": sha(f"{slug}-hero.glb")}+json.dump(rec, open(os.path.join(ROOT, "work", f"{slug}-finish.json"), "w"), indent=1)+print("finished", slug)
provenance/tools/landcheck.pyadded+116
@@ -0,0 +1,116 @@+"""Compare the KiCad footprint pads with the manufacturer's recommended land pattern.++usage: landcheck.py <slug> <outdir>+Reads parts.PARTS[slug]["land"] and the page's footprint (KiCad library geometry).+Writes <outdir>/land-pattern.png (true-scale drawing + table) and+<outdir>/land-pattern-icon.png (256 px square thumbnail), prints a JSON result.++Drawing: grey = part body at datasheet nominal, teal = KiCad pads (copper),+amber dashed = the maker's land at the middle of its printed range (or its+printed nominal), amber band = the range the maker allows for the inner and+outer pad edges where the maker prints a range.+"""+import sys, os, json, re, glob+from PIL import Image, ImageDraw, ImageFont+sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))+from parts import PARTS++slug, outdir = sys.argv[1], sys.argv[2]+P = next(p for p in PARTS if p["slug"] == slug)+L = P["land"]+page = os.path.dirname(outdir.rstrip("/"))+fpf = sys.argv[3] if len(sys.argv) > 3 else glob.glob(os.path.join(page, "*.kicad_mod"))[0]+fp = open(fpf).read()+pads = [tuple(map(float, m)) for m in re.findall(r'\(pad "\d" smd (?:roundrect|rect)\s*\(at ([-\d.]+) ([-\d.]+)\)\s*\(size ([\d.]+) ([\d.]+)\)', fp)]+x, _, w, h = pads[1]+k = {"gap": round(2 * x - w, 3), "len": round(w, 3), "wid": round(h, 3), "overall": round(2 * x + w, 3)}++def mid(v): return (v[0] + v[1]) / 2 if isinstance(v, list) else v+rows = []+if L["kind"] in ("range", "tol"):+    rng = {"gap": L["gap_a"], "len": L["len_b"], "wid": L["wid_c"]}+    rng["overall"] = L.get("overall") or [round(L["gap_a"][0] + 2 * L["len_b"][0], 3), round(L["gap_a"][1] + 2 * L["len_b"][1], 3)]+    derived_overall = not L.get("overall")+    for key, name in (("gap", "gap between lands"), ("len", "land length"), ("wid", "land width"),+                      ("overall", "overall length (a + 2b, derived)" if derived_overall else "overall length")):+        lo, hi = rng[key]; v = k[key]+        ok = lo - 1e-6 <= v <= hi + 1e-6+        dev = 0 if ok else round(v - hi if v > hi else v - lo, 3)+        rows.append({"dim": name, "kicad_mm": v, "maker_min": lo, "maker_max": hi, "within": ok, "outside_by_mm": dev})+    ref = {kk: mid(rng[kk]) for kk in rng}+    if L["kind"] == "tol":+        ref = {"gap": L["nominal"]["gap_a"], "len": L["nominal"]["len_b"], "wid": L["nominal"]["wid_c"], "overall": L["nominal"]["overall"]}+else:+    ref = {"gap": L["gap_a"], "len": L["len_b"], "wid": L["wid_c"], "overall": L["overall"]}+    for key, name in (("gap", "gap between lands"), ("len", "land length"), ("wid", "land width"), ("overall", "overall length")):+        rows.append({"dim": name, "kicad_mm": k[key], "maker_nominal": ref[key], "difference_mm": round(k[key] - ref[key], 3)})++# ---------- drawing ----------+body = P["body_mm"]+span = max(k["overall"], ref["overall"] if isinstance(ref["overall"], float) else 0) + 0.4+PP = 560 / span+W_, H_ = 1000, int(max(k["wid"], ref["wid"], body["y_mm"]) * PP + 120)+img = Image.new("RGBA", (W_, H_), (255, 255, 255, 255))+d = ImageDraw.Draw(img, "RGBA")+cx, cy = W_ / 2, H_ / 2 + 10+def R(x0, y0, x1, y1): return [cx + x0 * PP, cy - y1 * PP, cx + x1 * PP, cy - y0 * PP]+# allowed edge bands (range kinds)+if L["kind"] in ("range", "tol"):+    g0, g1 = L["gap_a"]; b0, b1 = L["len_b"]; c1 = L["wid_c"][1]+    for s in (-1, 1):+        for a, b in ((g0 / 2, g1 / 2), (g0 / 2 + b0, g1 / 2 + b1)):+            xa, xb = sorted((s * a, s * b))+            d.rectangle(R(xa, -c1 / 2, xb, c1 / 2), fill=(255, 190, 70, 70))+# body+d.rectangle(R(-body["x_mm"] / 2, -body["y_mm"] / 2, body["x_mm"] / 2, body["y_mm"] / 2), outline=(110, 110, 110, 255), width=2)+# KiCad pads, rounded rect (rratio 0.25)+for px, py, pw, ph in pads:+    rr = 0.25 * min(pw, ph) * PP+    d.rounded_rectangle(R(px - pw / 2, py - ph / 2, px + pw / 2, py + ph / 2), radius=rr, fill=(0, 150, 150, 110), outline=(0, 120, 120, 255), width=2)+# maker land, dashed amber+def dashed(box, col, wdt=3):+    xa, ya, xb, yb = box+    for (p, q) in (((xa, ya), (xb, ya)), ((xb, ya), (xb, yb)), ((xb, yb), (xa, yb)), ((xa, yb), (xa, ya))):+        n = int(max(abs(q[0] - p[0]), abs(q[1] - p[1])) / 7) or 1+        for i in range(0, n, 2):+            t0, t1 = i / n, min(1, (i + 1) / n)+            d.line([(p[0] + (q[0] - p[0]) * t0, p[1] + (q[1] - p[1]) * t0), (p[0] + (q[0] - p[0]) * t1, p[1] + (q[1] - p[1]) * t1)], fill=col, width=wdt)+for s in (-1, 1):+    a, b = ref["gap"] / 2, ref["gap"] / 2 + ref["len"]+    xa, xb = sorted((s * a, s * b))+    dashed(R(xa, -ref["wid"] / 2, xb, ref["wid"] / 2), (200, 110, 0, 255))+icon_box = (int(cx - 0.5 * (k["overall"] + 0.25) * PP), int(cy - 0.5 * (k["overall"] + 0.25) * PP))+icon_side = int((k["overall"] + 0.25) * PP)+padded = Image.new("RGBA", (W_ + 2 * icon_side, H_ + 2 * icon_side), (255, 255, 255, 255)); padded.paste(img, (icon_side, icon_side))+icon = padded.crop((icon_box[0] + icon_side, icon_box[1] + icon_side, icon_box[0] + 2 * icon_side, icon_box[1] + 2 * icon_side)).convert("RGB").resize((256, 256), Image.LANCZOS)+mask = Image.new("L", (256, 256), 0); ImageDraw.Draw(mask).rounded_rectangle([0, 0, 255, 255], radius=28, fill=255)+ic = Image.new("RGBA", (256, 256), (0, 0, 0, 0)); ic.paste(icon, (0, 0), mask)+ic.save(os.path.join(outdir, "land-pattern-icon.png"))++f = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", 15)+fb = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 17)+lines = []+for r in rows:+    if "within" in r:+        lines.append((f"{r['dim']}:  KiCad {r['kicad_mm']:.2f}   maker {r['maker_min']:.2f} to {r['maker_max']:.2f}   "+                      + ("inside" if r["within"] else f"outside by {r['outside_by_mm']:+.2f}"), (0, 120, 40) if r["within"] else (190, 90, 0)))+    else:+        lines.append((f"{r['dim']}:  KiCad {r['kicad_mm']:.2f}   maker {r['maker_nominal']:.2f}   difference {r['difference_mm']:+.2f}", (40, 40, 40)))+sheet = Image.new("RGB", (W_, H_ + 100 + 24 * len(lines) + 70), (255, 255, 255))+sd = ImageDraw.Draw(sheet)+sd.text((14, 10), f"{P['mpn']}: KiCad {P['fp']} pads vs maker's land, true scale", fill=(0, 0, 0), font=fb)+sheet.paste(img.convert("RGB"), (0, 40))+y = H_ + 46+sd.text((14, y), "grey = body (nominal)   teal = KiCad pads   amber dashed = maker's land (middle of range or nominal)", fill=(60, 60, 60), font=f); y += 22+sd.text((14, y), "amber band = where the maker allows the inner and outer pad edges (range sheets only)", fill=(60, 60, 60), font=f); y += 26+for t, c in lines:+    sd.text((14, y), t, fill=c, font=f); y += 24+import textwrap+for ln in textwrap.wrap("Source: " + L["source"], 115):+    sd.text((14, y + 4), ln, fill=(90, 90, 90), font=f); y += 20+sheet.save(os.path.join(outdir, "land-pattern.png"))++res = {"footprint": os.path.basename(fpf), "kicad_library_footprint": P["fp"], "kicad": k, "maker_reference": ref,+       "maker_source": L["source"], "maker_letters": L["letters"], "rows": rows,+       "all_within": all(r.get("within", True) for r in rows) if L["kind"] != "nominal" else None}+print(json.dumps(res))
provenance/tools/lod.pyadded+199
@@ -0,0 +1,199 @@+"""Board-use LOD GLBs (high, medium, low, super-low) for a small two-terminal chip.++Input: the page's board-use STEP (Z-up, mm, seated on z=0, centred).+Output (in <outdir>/lod/): high.glb medium.glb low.glb super-low.glb, a 400x300+PNG preview of each rendered from that GLB's own triangles, manifest.json+(schema adom/component-lod@1).++Every level: Z-up, metres, the same origin and pose as the STEP (no recentring,+no rotation), primitives batched by material (one per material), the STEP's own+colours.  No footprint, pad outline, label or silkscreen helpers exist in the+source, so nothing is removed.  high/medium/low are OCCT tessellations of the+exact B-rep at decreasing deflection; super-low replaces each material group by+its bounding box per side of the part (terminals, body, overcoat), which keeps+the silhouette, the terminal bands and the seating plane.++usage: lod.py part.step MPN outdir [source_label]+"""+import sys, os, json, struct, hashlib+import numpy as np+from PIL import Image, ImageDraw+sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))+import ortho+from OCP.BRepMesh import BRepMesh_IncrementalMesh+from OCP.BRepTools import BRepTools++step, mpn, outdir = sys.argv[1], sys.argv[2], sys.argv[3]+src_label = sys.argv[4] if len(sys.argv) > 4 else os.path.basename(step)+# optional: the unmarked STEP; colours present only in the marked source are the marking,+# kept in high and medium, dropped in low and super-low (too small to read there)+plain_step = sys.argv[5] if len(sys.argv) > 5 else None+MARK_COLS = set()+lod_dir = os.path.join(outdir, "lod"); os.makedirs(lod_dir, exist_ok=True)++LEVELS = [("high", 0.0005, 0.1), ("medium", 0.004, 0.35), ("low", 0.02, 0.9)]++def tris_at(lin, ang):+    # ortho.load_tris meshes with fixed params; clean and remesh by patching BRepMesh call+    orig = ortho.BRepMesh_IncrementalMesh+    def mesh(shp, _l, rel, _a, par):+        BRepTools.Clean_s(shp)+        return orig(shp, lin, False, ang, True)+    ortho.BRepMesh_IncrementalMesh = mesh+    try:+        return ortho.load_tris(step)+    finally:+        ortho.BRepMesh_IncrementalMesh = orig++def boxes_from(tris):+    groups = {}+    for p, c in tris:+        groups.setdefault(c, []).append(p)+    allp = np.concatenate([p for p, _ in tris]); xmax = allp[:, 0].max()+    endc = {}+    for p, c in tris:+        if np.allclose(p[:, 0], xmax, atol=1e-4): endc[c] = endc.get(c, 0) + 1+    tcol = max(endc, key=endc.get)+    boxes = []+    for c, ps in groups.items():+        T = np.stack(ps)+        crosses = c != tcol and ((T[:, :, 0].min(1) < -1e-6) & (T[:, :, 0].max(1) > 1e-6)).any()  # terminals: always two boxes+        P = T.reshape(-1, 3)+        parts = [P] if crosses else [P[P[:, 0] < 0], P[P[:, 0] > 0]]+        for Q in parts:+            if len(Q):+                boxes.append([Q.min(0), Q.max(0), c])+    tin = min(min(abs(lo[0]), abs(hi[0])) for lo, hi, c in boxes if c == tcol)+    # the body box reaches the same top as the overcoat box: coplanar tops z-fight, so stop the body at the overcoat's underside+    dark = min({c for _, _, c in boxes}, key=lambda c: sum(c))+    dk = [(lo, hi) for lo, hi, c in boxes if c == dark]+    if dark != tcol and dk:+        dlo = min(lo[2] for lo, hi in dk); dhi = max(hi[2] for lo, hi in dk)+        for b in boxes:+            if b[2] not in (dark, tcol) and b[1][2] >= dhi - 1e-6:+                b[1] = b[1].copy(); b[1][2] = dlo+    out = []+    for lo, hi, c in boxes:+        if c != tcol:+            lo = lo.copy(); hi = hi.copy(); lo[0] = max(lo[0], -tin); hi[0] = min(hi[0], tin)+        v = np.array([[x, y, z] for x in (lo[0], hi[0]) for y in (lo[1], hi[1]) for z in (lo[2], hi[2])])+        for a_, b_, cc, d in [(0, 1, 3, 2), (4, 6, 7, 5), (0, 4, 5, 1), (2, 3, 7, 6), (0, 2, 6, 4), (1, 5, 7, 3)]:+            out.append((v[[a_, b_, cc]], c)); out.append((v[[a_, cc, d]], c))+    return out++def write_glb(tris, path, name):+    mats = []; groups = {}+    for p, c in tris:+        if c not in groups:+            groups[c] = []; mats.append(c)+        groups[c].append(p)+    bin_ = b""; views = []; accs = []; prims = []+    def add_view(data, target):+        nonlocal bin_+        off = len(bin_); bin_ += data+        while len(bin_) % 4: bin_ += b"\0"+        views.append({"buffer": 0, "byteOffset": off, "byteLength": len(data), "target": target})+        return len(views) - 1+    decoded = 0; ntri = 0+    for mi, c in enumerate(mats):+        P = np.concatenate(groups[c]).reshape(-1, 3, 3)+        n = np.cross(P[:, 1] - P[:, 0], P[:, 2] - P[:, 0]); n /= np.linalg.norm(n, axis=1, keepdims=True) + 1e-30+        pos = (P.reshape(-1, 3) / 1000.0).astype(np.float32)          # mm -> metres+        nor = np.repeat(n, 3, axis=0).astype(np.float32)+        # weld identical (position, normal) vertices+        key = np.concatenate([np.round(pos, 9), np.round(nor, 5)], 1)+        uniq, inv = np.unique(key, axis=0, return_inverse=True)+        upos = uniq[:, :3].astype(np.float32); unor = uniq[:, 3:].astype(np.float32)+        idx = inv.astype(np.uint16 if len(uniq) < 65535 else np.uint32).ravel()+        vp = add_view(upos.tobytes(), 34962); vn = add_view(unor.tobytes(), 34962); vi = add_view(idx.tobytes(), 34963)+        accs.append({"bufferView": vp, "componentType": 5126, "count": len(upos), "type": "VEC3",+                     "min": upos.min(0).tolist(), "max": upos.max(0).tolist()})+        accs.append({"bufferView": vn, "componentType": 5126, "count": len(unor), "type": "VEC3"})+        accs.append({"bufferView": vi, "componentType": 5123 if idx.dtype == np.uint16 else 5125, "count": len(idx), "type": "SCALAR"})+        prims.append({"attributes": {"POSITION": len(accs) - 3, "NORMAL": len(accs) - 2}, "indices": len(accs) - 1, "material": mi})+        decoded += upos.nbytes + unor.nbytes + idx.nbytes; ntri += len(idx) // 3+    gl = {"asset": {"version": "2.0", "generator": "capencoder passives lod.py (OCCT tessellation)"},+          "scene": 0, "scenes": [{"nodes": [0]}],+          "nodes": [{"name": name, "mesh": 0, "extras": {"adomUpAxis": "Z", "units": "metres"}}],+          "meshes": [{"name": name, "primitives": prims}],+          "materials": [{"name": f"mat_{i}", "pbrMetallicRoughness": {"baseColorFactor": [*c, 1.0], "metallicFactor": 0.0, "roughnessFactor": 0.6}} for i, c in enumerate(mats)],+          "accessors": accs, "bufferViews": views, "buffers": [{"byteLength": len(bin_)}]}+    js = json.dumps(gl, separators=(",", ":")).encode()+    while len(js) % 4: js += b" "+    glb = struct.pack("<III", 0x46546C67, 2, 12 + 8 + len(js) + 8 + len(bin_)) + struct.pack("<II", len(js), 0x4E4F534A) + js + struct.pack("<II", len(bin_), 0x004E4942) + bin_+    open(path, "wb").write(glb)+    return {"decodedBufferBytes": decoded, "triangles": ntri, "primitives": len(prims)}++def read_glb_tris(path):+    b = open(path, "rb").read(); n = struct.unpack("<I", b[12:16])[0]+    j = json.loads(b[20:20 + n]); binc = b[20 + n + 8:]+    def acc(i, dt, w):+        a = j["accessors"][i]; v = j["bufferViews"][a["bufferView"]]+        return np.frombuffer(binc, dt, a["count"] * w, v["byteOffset"]).reshape(-1, w) if w > 1 else np.frombuffer(binc, dt, a["count"], v["byteOffset"])+    out = []+    for p in j["meshes"][0]["primitives"]:+        pos = acc(p["attributes"]["POSITION"], np.float32, 3) * 1000.0+        ia = j["accessors"][p["indices"]]+        idx = acc(p["indices"], np.uint16 if ia["componentType"] == 5123 else np.uint32, 1)+        col = tuple(j["materials"][p["material"]]["pbrMetallicRoughness"]["baseColorFactor"][:3])+        for t in idx.reshape(-1, 3):+            out.append((pos[t].astype(float), col))+    return out++ortho.VIEWS["iso"] = (tuple(np.array([-0.7071, 0.7071, 0])), tuple(np.array([-0.4082, -0.4082, 0.8165])), tuple(np.array([0.5774, 0.5774, 0.5774])))+def preview(path, png):+    tris = read_glb_tris(path)+    allp = np.concatenate([t[0] for t in tris]); ext = np.abs(allp).max()+    img = ortho.render(tris, "iso", 300 / (3.3 * ext), size=(400, 300))+    # painter's sorting by triangle centroid can bury faces in the top plane (and the marking 5 um above it);+    # faces in those planes cannot be hidden in a view from above, so draw them again, plane by plane, bottom first+    near = lambda c: any(max(abs(a - b) for a, b in zip(c, m)) < 2e-3 for m in MARK_COLS)+    zt = allp[:, 2].max()+    marked = [t for t in tris if MARK_COLS and near(t[1])]+    top = zt - 0.005 if marked else zt+    plane = [t for t in tris if not (MARK_COLS and near(t[1])) and np.abs(t[0][:, 2] - top).max() < 1e-4]+    for layer in (plane, [t for t in marked if t[0][:, 2].min() > top + 1e-4]):+        if layer:+            img.alpha_composite(ortho.render(layer, "iso", 300 / (3.3 * ext), size=(400, 300)))+    bg = Image.new("RGBA", img.size, (48, 57, 68, 255)); bg.alpha_composite(img); bg.convert("RGB").save(png)++sha = lambda f: hashlib.sha256(open(f, "rb").read()).hexdigest()+levels = []+src_tris = None+if plain_step:+    MARK_COLS = {c for _, c in ortho.load_tris(step)} - {c for _, c in ortho.load_tris(plain_step)}+    print("marking colours", MARK_COLS)+for name, lin, ang in LEVELS + [("super-low", None, None)]:+    if name == "super-low":+        tris = boxes_from(src_tris)+    else:+        tris = tris_at(lin, ang)+        if name == "high":+            src_tris = [t for t in tris if t[1] not in MARK_COLS]+        if name == "low" and MARK_COLS:+            tris = [t for t in tris if t[1] not in MARK_COLS]+    path = os.path.join(lod_dir, f"{name}.glb")+    st = write_glb(tris, path, mpn)+    back = read_glb_tris(path); P = np.concatenate([t[0] for t in back])+    png = os.path.join(lod_dir, f"{name}.png"); preview(path, png)+    rec = {"level": name, "path": f"lod/{name}.glb", "sha256": sha(path), "sizeBytes": os.path.getsize(path), **st,+           "bounds": {"min": (P.min(0) / 1000).round(7).tolist(), "max": (P.max(0) / 1000).round(7).tolist()},+           "approximation": ({"method": "OCCT BRepMesh_IncrementalMesh", "linearDeflectionMm": lin, "angularDeflectionRad": ang}+                             if lin else {"method": "per-material bounding boxes split at the part centre (terminals, body, overcoat)"}),+           "detailVisibility": ({"virtualMpn": False, "manufacturerMarking": name in ("high", "medium"),+                                 "note": "datasheet marking code shown on the top coat" if name in ("high", "medium") else "datasheet marking omitted: unreadable at this level"}+                                if MARK_COLS else {"virtualMpn": False, "note": "no marking: the datasheet specifies none"}),+           "review": "Candidate: rendered preview checked by AI (silhouette, terminals, seat z=0); not human-reviewed",+           "preview": {"path": f"lod/{name}.png", "sha256": sha(png), "sizeBytes": os.path.getsize(png), "width": 400, "height": 300,+                       "view": "iso", "sourceLevelSha256": sha(path)}}+    levels.append(rec)+    print(name, st, rec["bounds"])+manifest = {"schema": "adom/component-lod@1", "mpn": mpn, "upAxis": "Z", "units": "metres",+            "status": "candidate (AI-checked, not human-reviewed)",+            "purpose": "clean board-use component models: no footprint pads, outlines, labels or silkscreen; no marking (none per datasheet)",+            "source": {"path": src_label, "sha256": sha(step)},+            "sourceToDisplay": "uniform scale 0.001 (mm to m); no rotation, no translation; origin = footprint origin, seat z = 0",+            "generator": "lod.py (capencoder passives, OCCT via cadquery-ocp)",+            "removedHelpers": [], "levels": levels,+            "hints": ["All four levels share pose and units; super-low is boxes per material group, chosen for board overviews."]}+json.dump(manifest, open(os.path.join(lod_dir, "manifest.json"), "w"), indent=1)
provenance/tools/msash168sc7224ktca01-overlay-spec.jsonadded+40
@@ -0,0 +1,40 @@+{+ "label": "MSASH168SC7224KTCA01",+ "mpn": "MSASH168SC7224KTCA01",+ "L": [+  1.6,+  0.1+ ],+ "W": [+  0.8,+  0.1+ ],+ "T": [+  0.8,+  0.1+ ],+ "band_top": [+  0.1,+  0.6+ ],+ "band_bot": [+  0.1,+  0.6+ ],+ "band_top_name": "e (terminal band), top",+ "band_bot_name": "e (terminal band), bottom",+ "ppmm": 220,+ "source": "Taiyo Yuden catalog c_mlcc_S_e p.5 and product page (MSAS 16, T code 8)",+ "crops": [+  [+   "catalog p.5 render at 100 dpi",+   [+    0,+    20,+    827,+    640+   ]+  ]+ ],+ "marking": "none specified"+}\ No newline at end of file
provenance/tools/ortho.pyadded+133
@@ -0,0 +1,133 @@+"""Orthographic renderer for small component STEPs (face colours kept).++render(step, view, ppmm) -> PIL RGBA image, model origin at the image centre.+views: top (look down -Z, +X right, +Y up), bottom (look up +Z, +X right, +Y down,+i.e. the part flipped about X), front (look +Y, +X right, +Z up),+end (look -X, +Y right... from +X end: -Y right, +Z up).+"""+import sys+import numpy as np+from PIL import Image, ImageDraw+from OCP.STEPCAFControl import STEPCAFControl_Reader+from OCP.TDocStd import TDocStd_Document+from OCP.TCollection import TCollection_ExtendedString+from OCP.XCAFDoc import XCAFDoc_DocumentTool, XCAFDoc_ColorType+from OCP.TDF import TDF_LabelSequence+from OCP.TopExp import TopExp_Explorer+from OCP.TopAbs import TopAbs_FACE, TopAbs_REVERSED+from OCP.TopoDS import TopoDS+from OCP.Quantity import Quantity_Color+from OCP.BRepMesh import BRepMesh_IncrementalMesh+from OCP.BRep import BRep_Tool+from OCP.TopLoc import TopLoc_Location+++def load_tris(path):+    doc = TDocStd_Document(TCollection_ExtendedString("x"))+    r = STEPCAFControl_Reader(); r.SetColorMode(True); r.SetNameMode(True)+    r.ReadFile(path); r.Transfer(doc)+    st = XCAFDoc_DocumentTool.ShapeTool_s(doc.Main())+    ct = XCAFDoc_DocumentTool.ColorTool_s(doc.Main())+    labs = TDF_LabelSequence(); st.GetFreeShapes(labs)+    out = []+    leaves = []+    def walk(lab, loc, pcol):+        c = Quantity_Color(); col = pcol+        for t in (XCAFDoc_ColorType.XCAFDoc_ColorSurf, XCAFDoc_ColorType.XCAFDoc_ColorGen):+            if ct.GetColor_s(lab, t, c):+                col = (c.Red(), c.Green(), c.Blue()); break+        if st.IsReference_s(lab):+            ref = type(lab)(); st.GetReferredShape_s(lab, ref)+            walk(ref, loc.Multiplied(st.GetLocation_s(lab)), col); return+        kids = TDF_LabelSequence(); st.GetComponents_s(lab, kids)+        if kids.Length() > 0:+            for i in range(1, kids.Length() + 1): walk(kids.Value(i), loc, col)+            return+        # colours stored on sub-shape labels (e.g. one solid per glyph of a text compound)+        sub = TDF_LabelSequence(); st.GetSubShapes_s(lab, sub)+        if col is None and sub.Length() > 0:+            for si in range(1, sub.Length() + 1):+                sl = sub.Value(si); sc = Quantity_Color(); scol = None+                for t in (XCAFDoc_ColorType.XCAFDoc_ColorSurf, XCAFDoc_ColorType.XCAFDoc_ColorGen):+                    if ct.GetColor_s(sl, t, sc):+                        scol = (sc.Red(), sc.Green(), sc.Blue()); break+                leaves.append((st.GetShape_s(sl).Moved(loc), scol))+            return+        leaves.append((st.GetShape_s(lab).Moved(loc), col))+    for li in range(1, labs.Length() + 1):+        walk(labs.Value(li), TopLoc_Location(), None)+    for shp, pcol in leaves:+        BRepMesh_IncrementalMesh(shp, 0.002, False, 0.2, True)+        e = TopExp_Explorer(shp, TopAbs_FACE)+        while e.More():+            f = TopoDS.Face_s(e.Current())+            c = Quantity_Color(); col = None+            for t in (XCAFDoc_ColorType.XCAFDoc_ColorSurf, XCAFDoc_ColorType.XCAFDoc_ColorGen):+                if ct.GetColor(f, t, c):+                    col = (c.Red(), c.Green(), c.Blue()); break+            if col is None:+                col = pcol or (0.6, 0.6, 0.6)+            loc = TopLoc_Location()+            tri = BRep_Tool.Triangulation_s(f, loc)+            if tri is not None:+                trsf = loc.Transformation()+                pts = np.array([(lambda p: (p.X(), p.Y(), p.Z()))(tri.Node(i).Transformed(trsf)) for i in range(1, tri.NbNodes() + 1)])+                rev = f.Orientation() == TopAbs_REVERSED+                for i in range(1, tri.NbTriangles() + 1):+                    a, b, cc = tri.Triangle(i).Get()+                    if rev:+                        b, cc = cc, b+                    out.append((pts[[a - 1, b - 1, cc - 1]], col))+            e.Next()+    return out+++VIEWS = {+    # (right axis vector, up axis vector, toward-viewer vector)+    "top": ((1, 0, 0), (0, 1, 0), (0, 0, 1)),+    "bottom": ((1, 0, 0), (0, -1, 0), (0, 0, -1)),+    "front": ((1, 0, 0), (0, 0, 1), (0, -1, 0)),+    "end": ((0, 1, 0), (0, 0, 1), (1, 0, 0)),+}+++def render(tris, view, ppmm, size=None, shade=True, ss=3):+    R, U, V = [np.array(v, float) for v in VIEWS[view]]+    allp = np.concatenate([t[0] for t in tris])+    ext = max(np.abs(allp @ R).max(), np.abs(allp @ U).max())+    if size is None:+        size = (int(2 * ext * ppmm + 40), int(2 * ext * ppmm + 40))+    W, H = size[0] * ss, size[1] * ss+    img = Image.new("RGBA", (W, H), (0, 0, 0, 0))+    d = ImageDraw.Draw(img)+    items = []+    light = np.array([0.3, 0.4, 0.85]); light /= np.linalg.norm(light)+    for p, col in tris:+        n = np.cross(p[1] - p[0], p[2] - p[0])+        nn = np.linalg.norm(n)+        if nn == 0:+            continue+        n /= nn+        if n @ V <= 1e-6:+            continue  # back face+        depth = (p @ V).mean()+        lv = 0.55 + 0.45 * abs(n @ (R * light[0] + U * light[1] + V * light[2])) if shade else 1.0+        rgb = tuple(int(255 * min(1, c * lv)) for c in col)+        xy = [(W / 2 + (q @ R) * ppmm * ss, H / 2 - (q @ U) * ppmm * ss) for q in p]+        items.append((depth, xy, rgb))+    items.sort(key=lambda x: x[0])+    for _, xy, rgb in items:+        d.polygon(xy, fill=rgb + (255,), outline=rgb + (255,))+    return img.resize(size, Image.LANCZOS)+++if __name__ == "__main__":+    tris = load_tris(sys.argv[1])+    out = sys.argv[2]+    ppmm = float(sys.argv[3]) if len(sys.argv) > 3 else 300+    imgs = [render(tris, v, ppmm) for v in ("top", "bottom", "front", "end")]+    w = sum(i.width for i in imgs); h = max(i.height for i in imgs)+    sheet = Image.new("RGBA", (w, h), (255, 255, 255, 255)); x = 0+    for i in imgs:+        sheet.alpha_composite(i, (x, 0)); x += i.width+    sheet.save(out)
provenance/tools/overlay_chip.pyadded+159
@@ -0,0 +1,159 @@+"""Prove a two-terminal chip model (MLCC / chip resistor) against its datasheet table.++The maker prints a dimension table with an unscaled sketch, so the overlay is made+against a true-scale drawing generated from the printed table (300 px/mm):+nominal outline solid black, tolerance limits dashed blue, the allowed range of+the terminal inner edge shaded amber.  The model is rendered at the same scale+(50 % fill, red outline) on top.  The numeric check measures the STEP itself.++usage: overlay_chip.py spec.json model.step out.png+spec: {"label","mpn","source","L":[nom,tol],"W":[nom,tol],"T":[nom,tol],+       (any of L/W/T may instead be {"nom":x or null,"min":a,"max":b} when the+        datasheet prints an asymmetric or max-only limit; a null nominal draws+        the printed maximum as the reference line),+       "band_top":[min,max],"band_bot":[min,max],"crops":[[png,[x0,y0,x1,y1]],...],+       "marking": "..."}+"""+import sys, json+import numpy as np+from PIL import Image, ImageDraw, ImageFont, ImageFilter+sys.path.insert(0, __file__.rsplit("/", 1)[0])+from ortho import load_tris, render+from OCP.STEPControl import STEPControl_Reader+from OCP.TopExp import TopExp_Explorer+from OCP.TopAbs import TopAbs_FACE+from OCP.TopoDS import TopoDS+from OCP.Bnd import Bnd_Box+from OCP.BRepBndLib import BRepBndLib+from OCP.BRepAdaptor import BRepAdaptor_Surface+from OCP.GeomAbs import GeomAbs_Plane++PP = 300.0+spec = json.load(open(sys.argv[1])); step = sys.argv[2]; out = sys.argv[3]+PP = float(spec.get("ppmm", PP))  # larger packages (0805) need a smaller scale to fit the 560 px panels+F = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"+font = ImageFont.truetype(F, 22); fsm = ImageFont.truetype(F, 18); fbig = ImageFont.truetype(F, 26)++# ---------- numeric measurement of the STEP ----------+tris = load_tris(step)+allp = np.concatenate([t[0] for t in tris])+x0, y0, z0 = allp.min(0); x1, y1, z1 = allp.max(0)+Lm, Wm, Tm = x1 - x0, y1 - y0, z1 - z0+# terminal colour = colour of triangles lying on the +X end face+endcols = {}+for p, c in tris:+    if np.allclose(p[:, 0], x1, atol=1e-4):+        endcols[c] = endcols.get(c, 0) + 1+tcol = max(endcols, key=endcols.get)+def band(zlev):+    xs = [p[:, 0] for p, c in tris if c == tcol and np.allclose(p[:, 2], zlev, atol=1e-4)]+    if not xs:+        return None+    xs = np.concatenate(xs)+    pos = xs[xs > 0]; neg = xs[xs < 0]+    return round(min(x1 - pos.min(), -x0 + neg.max() if len(neg) else 9), 3)+bt, bb = band(z1), band(z0)++def rng(v):+    if isinstance(v, dict):+        return (v["min"], v["max"])+    return (v[0] - v[1], v[0] + v[1]) if len(v) == 2 and v[1] < v[0] else tuple(v)+checks = []+def chk(name, val, lo, hi):+    ok = val is not None and lo - 1e-6 <= val <= hi + 1e-6+    checks.append((name, val, lo, hi, ok))+chk("L", round(Lm, 3), *rng(spec["L"]))+chk("W", round(Wm, 3), *rng(spec["W"]))+chk("T/H", round(Tm, 3), *rng(spec["T"]))+chk(spec.get("band_top_name", "terminal band, top"), bt, *spec["band_top"])+chk(spec.get("band_bot_name", "terminal band, bottom"), bb, *spec["band_bot"])+centred = bool(abs(x0 + x1) < 1e-3 and abs(y0 + y1) < 1e-3 and abs(z0) < 1e-3)+longx = bool(Lm > Wm)++# ---------- true-scale drawing + model per view ----------+def nlh(v):+    if isinstance(v, dict):+        lo, hi = v["min"], v["max"]+        return (v["nom"] if v.get("nom") is not None else hi), lo, hi+    return v[0], v[0] - v[1], v[0] + v[1]++def view_panel(view, A, B, bands, title):+    a_len, a_lo, a_hi = nlh(A); b_len, b_lo, b_hi = nlh(B)+    im = render(tris, view, PP, size=(560, 420))+    W_, H_ = im.size; cx = W_ / 2+    panel = Image.new("RGBA", (W_, H_), (255, 255, 255, 255))+    d = ImageDraw.Draw(panel)+    seat = view in ("front", "end")+    def rect(a, b, **kw):+        # a along horizontal, b along vertical; for side views the box sits on the seat line+        if seat:+            return [cx - a * PP / 2, H_ / 2 - b * PP, cx + a * PP / 2, H_ / 2]+        return [cx - a * PP / 2, H_ / 2 - b * PP / 2, cx + a * PP / 2, H_ / 2 + b * PP / 2]+    # allowed inner-edge range for the terminals (relative to nominal length)+    for (lo, hi, where) in bands:+        for s in (-1, 1):+            xa = cx + s * (a_len / 2 - hi) * PP; xb = cx + s * (a_len / 2 - lo) * PP+            if where == "full":+                ya, yb = rect(a_len, b_len)[1], rect(a_len, b_len)[3]+            elif where == "top":+                r_ = rect(a_len, b_len); ya, yb = r_[1] - 12, r_[1] + 12+            else:+                r_ = rect(a_len, b_len); ya, yb = r_[3] - 12, r_[3] + 12+            d.rectangle([min(xa, xb), ya, max(xa, xb), yb], fill=(255, 196, 80, 255))+    def dashed(box, col):+        xa, ya, xb, yb = box+        for (p, q) in (((xa, ya), (xb, ya)), ((xb, ya), (xb, yb)), ((xb, yb), (xa, yb)), ((xa, yb), (xa, ya))):+            n = int(max(abs(q[0] - p[0]), abs(q[1] - p[1])) / 8) or 1+            for i in range(0, n, 2):+                t0, t1 = i / n, min(1, (i + 1) / n)+                d.line([(p[0] + (q[0] - p[0]) * t0, p[1] + (q[1] - p[1]) * t0),+                        (p[0] + (q[0] - p[0]) * t1, p[1] + (q[1] - p[1]) * t1)], fill=col, width=2)+    dashed(rect(a_lo, b_lo), (30, 90, 220))+    dashed(rect(a_hi, b_hi), (30, 90, 220))+    d.rectangle(rect(a_len, b_len), outline=(0, 0, 0), width=2)+    arr = np.asarray(im).copy(); alpha = arr[:, :, 3].copy(); arr[:, :, 3] = (alpha * 0.5).astype(np.uint8)+    panel.alpha_composite(Image.fromarray(arr))+    m = Image.fromarray(((alpha > 128) * 255).astype(np.uint8))+    edge = (np.asarray(m, int) - np.asarray(m.filter(ImageFilter.MinFilter(3)), int)) > 0+    red = np.zeros((H_, W_, 4), np.uint8); red[edge] = (220, 30, 30, 255)+    panel.alpha_composite(Image.fromarray(red))+    d = ImageDraw.Draw(panel); d.text((10, 8), title, fill=(0, 0, 0), font=fsm)+    return panel++L, W, T = spec["L"], spec["W"], spec["T"]+bt_r, bb_r = spec["band_top"], spec["band_bot"]+panels = [+    view_panel("top", L, W, [(bt_r[0], bt_r[1], "full")], "TOP (looking down, X right)"),+    view_panel("bottom", L, W, [(bb_r[0], bb_r[1], "full")], "BOTTOM (flipped about X)"),+    view_panel("front", L, T, [(bt_r[0], bt_r[1], "top"), (bb_r[0], bb_r[1], "bot")], "SIDE (looking +Y)"),+    view_panel("end", W, T, [], "END (looking -X)"),+]+pw, ph = panels[0].size+sheet_w = pw * 4 + 50+crops = [Image.open(p).convert("RGB").crop(tuple(b)) for p, b in spec["crops"]]+crop_h = 0; scaled = []+for c in crops:+    s = min(1.0, (sheet_w - 40) / c.width, 420 / c.height)+    c2 = c.resize((int(c.width * s), int(c.height * s)), Image.LANCZOS); scaled.append(c2); crop_h += c2.height + 20+text_h = 120 + 30 * len(checks) + 90+sheet = Image.new("RGB", (sheet_w, 80 + ph + text_h + crop_h), (255, 255, 255))+d = ImageDraw.Draw(sheet)+d.text((20, 15), f"{spec['label']}: model vs datasheet table, true scale {int(PP)} px/mm", fill=(0, 0, 0), font=fbig)+d.text((20, 50), f"Model: {step.rsplit('/', 1)[-1]}   Datasheet: {spec['source']}", fill=(70, 70, 70), font=fsm)+for i, p in enumerate(panels):+    sheet.paste(p.convert("RGB"), (10 + i * (pw + 10), 80))+y = 90 + ph+d.text((20, y), "Legend: black = printed nominal, blue dashed = printed tolerance limits, amber = allowed position of the terminal inner edge, red outline + 50% fill = the 3D model.", fill=(0, 0, 0), font=fsm); y += 34+d.text((20, y), "Measured on the STEP              value     datasheet range     result", fill=(0, 0, 0), font=font); y += 32+for name, val, lo, hi, ok in checks:+    d.text((20, y), f"{name:<34}{'-' if val is None else f'{val:.3f}':>8}     {lo:.2f} to {hi:.2f}       {'PASS' if ok else 'FAIL'}",+           fill=(0, 120, 40) if ok else (200, 0, 0), font=font); y += 30+d.text((20, y + 4), f"Frame: Z-up, seated z=0, centred: {'yes' if centred else 'NO'}; long axis on X: {'yes' if longx else 'NO'}.   Marking: {spec['marking']}", fill=(0, 0, 0), font=fsm)+y += 50+for c in scaled:+    sheet.paste(c, (20, y)); d.rectangle([20, y, 20 + c.width, y + c.height], outline=(150, 150, 150)); y += c.height + 20+sheet.save(out)+res = {"step": step, "bbox_mm": [round(float(v), 4) for v in (x0, x1, y0, y1, z0, z1)],+       "checks": [{"dim": n, "model_mm": v, "datasheet_min": lo, "datasheet_max": hi, "pass": bool(ok)} for n, v, lo, hi, ok in checks],+       "z_up_seated_centred": bool(centred), "long_axis_x": bool(longx), "all_pass": bool(all(c[4] for c in checks) and centred and longx)}+print(json.dumps(res))
provenance/tools/parts.pyadded+48
@@ -0,0 +1,48 @@+"""Catalog data for the Taiyo Yuden MSASH168SC7224KTCA01 page (all values from the cited sources).++Sources, all fetched by plain HTTP from Taiyo Yuden's product page on 2026-10-21+(https://ds.yuden.co.jp/TYCOMPAS/ut/detail?pn=MSASH168SC7224KTCA01&u=M and its download links):+the series catalog c_mlcc_S_e (E14R02), the part's Electrical Characteristics Data sheet (22U2A07),+the packaging catalog, the part's 3D model (STEP) and land pattern (DXF).+Distributor numbers and stock: adom-parts-search, 2026-10-21.+"""+TODAY = "2026-10-21"+ROOT = "/home/adom/project/uta-dynos/work/pages/_build"+PRODUCT = "https://ds.yuden.co.jp/TYCOMPAS/ut/detail?pn=MSASH168SC7224KTCA01&u=M"+DL = "https://ds.yuden.co.jp/TYCOMPAS/ut/download?pn=MSASH168SC7224KTCA01&fileType="+DOCS = [  # (key, local file, published path, title, source url)+    ("catalog", "ty-3d/c_mlcc_S_e.pdf", "docs/msash168sc7224ktca01-datasheet.pdf",+     "Taiyo Yuden, Multilayer Ceramic Capacitors for General Purpose, part numbering and dimensions catalog c_mlcc_S_e-E14R02 (6 pages)", DL + "CS"),+    ("chars", "ty-3d/MSASH168SC7224KTCA01.pdf", "docs/msash168sc7224ktca01-characteristics.pdf",+     "Taiyo Yuden, MSASH168SC7224KTCA01 Electrical Characteristics Data, 22U2A07 (1 page)", DL + "Datasheet"),+    ("pack", "ty-3d/c_mlcc_pack_e.pdf", "docs/taiyo-yuden-mlcc-packaging.pdf",+     "Taiyo Yuden, Multilayer Ceramic Capacitors packaging catalog c_mlcc_pack_e (4 pages)", DL + "PK"),+]+FIGS = [("ty-cat-p1-part-number.png", "catalog", 1, [0, 20, 827, 1120], "Catalog p.1 part numbering: series, rated voltage, size, thickness codes"),+        ("ty-cat-p2-dimension-tolerance.png", "catalog", 2, [0, 20, 827, 1120], "Catalog p.2 dimension tolerance codes (code S, size 16)"),+        ("ty-cat-p3-temperature.png", "catalog", 3, [0, 20, 827, 560], "Catalog p.3 temperature characteristics codes (C7 = X7S)"),+        ("ty-cat-p4-capacitance-packaging.png", "catalog", 4, [0, 20, 827, 560], "Catalog p.4 capacitance, tolerance and packaging codes"),+        ("ty-cat-p5-dimensions.png", "catalog", 5, [0, 20, 827, 640], "Catalog p.5 standard external dimensions (MSAS 16)"),+        ("ty-cat-p6-quantity.png", "catalog", 6, [0, 20, 827, 560], "Catalog p.6 standard quantity"),+        ("ty-chars-p1.png", "chars", 1, [0, 0, 827, 1100], "Electrical Characteristics Data: capacitance and impedance vs frequency, DC bias, temperature, ripple")]+P = dict(+    slug="msash168sc7224ktca01", mpn="MSASH168SC7224KTCA01", old_pn="HMK107C7224KA-TE", mfr="Taiyo Yuden", mfr_full="TAIYO YUDEN CO., LTD.",+    source_slug="taiyo-yuden", kind="C", category="Capacitor", subcategory="MLCC, Class 2 (X7S), medium-high voltage",+    value_sym="220n", value="0.22 uF (220 nF)", tol="+/-10 % (K)", package="0603 (1608 metric)",+    fp="C_0603_1608Metric", fp_lib="Capacitor_SMD", body_mm={"x_mm": 1.6, "y_mm": 0.8, "z_mm": 0.8},+    brief="MLCC 0.22 uF +/-10 %, 100 V, X7S, 0603 (1608 metric)",+    product_url=PRODUCT,+    dims_text="product page and catalog p.5, MSAS 16 thickness code 8 (tolerance code S): L 1.6 +/-0.10, W 0.8 +/-0.10, T 0.8 +/-0.10, e 0.35 +/-0.25 (mm); characteristics sheet: t = 0.9 mm max",+    overlay={"L": [1.6, 0.1], "W": [0.8, 0.1], "T": [0.8, 0.1], "band_top": [0.10, 0.60], "band_bot": [0.10, 0.60],+             "band_top_name": "e (terminal band), top", "band_bot_name": "e (terminal band), bottom", "ppmm": 220,+             "source": "Taiyo Yuden catalog c_mlcc_S_e p.5 and product page (MSAS 16, T code 8)"},+    land={"source": "Taiyo Yuden land pattern for MSASH168SC7224KTCA01 (MSASH168SC7224KTCA01.dxf, layer L1, from the product page)", "kind": "nominal",+          "gap_a": 0.8, "len_b": 0.6, "wid_c": 0.8, "overall": 2.0, "placement": "not stated",+          "letters": "gap between lands, land length, land width (read from the DXF outlines; the DXF carries no dimension text)"},+    marking="Taiyo Yuden specifies no marking for this part: the catalog, the characteristics sheet and the product page have no marking section, and the maker's 3D model has a plain body",+    marking_src="c_mlcc_S_e-E14R02, 22U2A07 and the product page, searched 2026-10-21",+    dist={"mouser": ("963-MSASH168SC7224KT", "https://www.mouser.com/ProductDetail/TAIYO-YUDEN/MSASH168SC7224KTCA01?qs=tlsG%2FOw5FFjGLxgyt65IHw%3D%3D", 3875),+          "digikey": ("587-MSASH168SC7224KTCA01TR-ND", "https://www.digikey.com/en/products/detail/taiyo-yuden/MSASH168SC7224KTCA01/19292991", 0)},+    lcsc_note="JLCPCB/LCSC search for MSASH168SC7224KTCA01 returned no part on 2026-10-21",+)+PARTS = [P]
provenance/tools/push.shadded+34
@@ -0,0 +1,34 @@+#!/usr/bin/env bash+# usage: push.sh <slug>   (pushes /home/adom/project/uta-dynos/work/pages/<slug> to adom/<slug>)+set -u+slug="$1"; dir="/home/adom/project/uta-dynos/work/pages/$slug"+cd "$dir" || exit 1+mapfile -t files < <(find . -type f ! -name page.json -printf '%s %P\n' | sort -k2)+batch=(); size=0; n=0+push() {+  local tries=0+  while :; do+    out=$(adom-wiki repo push "adom/$slug" --files "$@" -m "$MSG" 2>&1); rc=$?+    if echo "$out" | grep -q -E '429|RATE_LIMITED'; then+      w=$(echo "$out" | grep -oE '"retry_after":[0-9]+' | grep -oE '[0-9]+' | head -1); w=${w:-20}+      echo "rate limited, waiting $w s"; sleep "$w"; tries=$((tries+1)); [ $tries -gt 5 ] && return 1; continue+    fi+    echo "$out" | tail -4; return $rc+  done+}+flush() {+  [ ${#batch[@]} -eq 0 ] && return 0+  n=$((n+1)); MSG="Component record for $slug: files batch $n"+  echo "== batch $n: ${#batch[@]} files, $size bytes"+  push "${batch[@]}" || { echo "PUSH FAILED"; exit 1; }+  batch=(); size=0; sleep 3+}+for line in "${files[@]}"; do+  s=${line%% *}; f=${line#* }+  if [ $((size + s)) -gt 3300000 ]; then flush; fi+  batch+=("$f"); size=$((size + s))+done+flush+MSG="Component record for $slug: page.json (last, keeps hero and title)"+echo "== page.json"+push page.json || { echo "PUSH FAILED"; exit 1; }
provenance/tools/records.pyadded+409
@@ -0,0 +1,409 @@+"""Write README.md, land-pattern/README.md, page.json, package.json, models.json, provenance.json,+verification.json and LICENSE for the MSASH168SC7224KTCA01 page.++usage: records.py <slug>   (run after build.py, again after finish.py)+"""+import sys, os, json, hashlib, re, math+sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))+from parts import P, TODAY, ROOT, DOCS, PRODUCT++slug = sys.argv[1]; assert slug == P["slug"]+OUT = f"/home/adom/project/uta-dynos/work/pages/{slug}"+MPN = P["mpn"]; OWNER = "adom"+B = json.load(open(os.path.join(ROOT, "work", f"{slug}-build.json")))+STEP, ORIG, FP, SYM = B["step"], B["orig"], B["fp"], B["sym"]+check = B["check"]+land = json.load(open(os.path.join(OUT, "land-pattern/land-check.json")))+lod = json.load(open(os.path.join(OUT, "lod/manifest.json")))+figs = json.load(open(os.path.join(OUT, "docs/figures/figures.json")))+p_ = lambda f: os.path.join(OUT, f)+ex = lambda f: os.path.exists(p_(f))+sha = lambda f: hashlib.sha256(open(p_(f), "rb").read()).hexdigest()+def blob(f):+    b = open(p_(f), "rb").read(); return hashlib.sha1(b"blob %d\0" % len(b) + b).hexdigest()+D = P["dist"]; L = P["land"]+DS = {k: dict(local=l, file=f, title=t, url=u) for k, l, f, t, u in DOCS}+ds = DS["catalog"]+by = {"name": "Claude (AI agent) for John Lauer", "handle": "john"}+HERO = f"{slug}-hero.glb"; HERO_SIDE = f"{slug}-hero.overlay.json"; HERO_PNG = "docs/verify/hero-preview.png"+LBR = f"{MPN}.lbr"; SCH = f"altium/{MPN}.SchLib"; PCB = f"altium/{MPN}.PcbLib"; HUB = f"{MPN}.adom-lbr.json"+DXF = f"provenance/manufacturer/{MPN}-land.dxf"+have_hero, have_alt, have_lbr = ex(HERO), ex(SCH) and ex(PCB), ex(LBR)+GL = "https://gitlab.com/kicad/libraries"+F = lambda n: f"docs/figures/{n}"+k = land["kicad"]++# ---------------- land pattern write-up ----------------+t = "| Dimension | KiCad C_0603_1608Metric (used) | Taiyo Yuden land (DXF) | Difference |\n|---|---|---|---|\n"+for r in land["rows"]:+    t += f"| {r['dim']} | {r['kicad_mm']:.2f} mm | {r['maker_nominal']:.2f} mm | {r['difference_mm']:+.2f} mm |\n"+land_readme = f"""# Land pattern check: {MPN}++The footprint on this page is KiCad's standard library footprint `{P['fp_lib']}:{P['fp']}`, renamed to+`{FP[:-10]}` so it can sit beside other parts in one library folder. The copper is unchanged. This page compares it with+the land pattern Taiyo Yuden publishes for this exact part number as a DXF drawing on the product page (kept unchanged in+`../{DXF}`): two lands {L['len_b']} mm long and {L['wid_c']} mm wide with a {L['gap_a']} mm gap, {L['overall']} mm overall+(layer L1; the solder resist openings on layer Resist are 0.05 mm larger all round).++![KiCad pads (teal) over Taiyo Yuden's land (amber dashed), true scale](land-pattern.png)++## Numbers++{t}+The DXF carries outlines only, no dimension text; the numbers above are read from its polyline coordinates.++## Result++KiCad's pads ({k['len']:.2f} x {k['wid']:.2f} mm, gap {k['gap']:.2f} mm) are larger than Taiyo Yuden's land on every side and+contain it completely: they are 0.30 mm longer, 0.15 mm wider and reach 0.15 mm further under the part. KiCad generates+this footprint to IPC-7351 nominal density. Both cover the terminal band (e 0.35 +/-0.25 mm) and both are ordinary reflow+lands for a 1608 part; this page keeps the KiCad pads, as its library footprint. A design that wants the maker's land+should make each pad {L['len_b']} x {L['wid_c']} mm with pad centres {L['gap_a'] + L['len_b']:.1f} mm apart. Taiyo Yuden's+precautions document (c_mlcc_prec_e, linked from the product page) warns that excessive solder can cause mechanical stress+that cracks the chip and gives its recommended land sizes for that reason.++The drawing and [land-check.json](land-check.json) come from `provenance/tools/landcheck.py`.+"""+open(p_("land-pattern/README.md"), "w").write(land_readme)++# ---------------- verification.json ----------------+entries = []+ck = [{"text": f"{c['dim']}: model {c['model_mm']:.3f} mm, maker {c['datasheet_min']:.2f} to {c['datasheet_max']:.2f} mm", "result": "pass" if c["pass"] else "fail"} for c in check["checks"]]+ck += [{"text": "the maker's STEP is 0.90 mm thick: the upper limit of T 0.8 +/-0.10 mm and the characteristics sheet's 't = 0.9 mm max'", "result": "note"},+       {"text": "Z-up, mm, seated on z = 0, centred on the footprint origin, long axis on X, as supplied: no transform applied, bytes unchanged", "result": "pass"},+       {"text": "body colour is the maker's (dark grey); the product photo on the characteristics sheet shows a brown body; colours were not changed", "result": "note"}]+entries.append({"date": TODAY, "by": by, "status": "verified", "title": "Taiyo Yuden 3D model checked against the printed dimensions",+                "scope": ["3d-model"], "variants": ["*"], "checks": ck,+                "evidence": [{"label": "overlay (top, bottom, side, end at true scale)", "href": f"docs/verify/{slug}-overlay.png"},+                             {"label": "numbers", "href": f"docs/verify/{slug}-check.json"},+                             {"label": "catalog p.5 dimensions", "href": F("ty-cat-p5-dimensions.png")}],+                "files": {STEP: sha(STEP), ORIG: sha(ORIG)}})+lck = [{"text": f"{r['dim']}: KiCad {r['kicad_mm']:.2f} mm, Taiyo Yuden {r['maker_nominal']:.2f} mm ({r['difference_mm']:+.2f} mm)", "result": "note"} for r in land["rows"]]+lck.append({"text": "KiCad's pads contain the maker's land on every side; KiCad footprint kept (renamed, copper unchanged)", "result": "pass"})+entries.append({"date": TODAY, "by": by, "status": "verified", "title": "Footprint compared with Taiyo Yuden's land pattern (KiCad pads larger, kept)",+                "scope": ["footprint"], "variants": ["*"], "checks": lck,+                "evidence": [{"label": "comparison drawing", "href": "land-pattern/land-pattern.png"}, {"label": "numbers", "href": "land-pattern/land-check.json"},+                             {"label": "write-up", "href": "land-pattern/README.md"}, {"label": "maker DXF", "href": DXF}],+                "files": {FP: sha(FP), DXF: sha(DXF)}})+entries.append({"date": TODAY, "by": by, "status": "verified", "title": "Marking: the real part is unmarked",+                "scope": ["3d-model", "marking"], "variants": ["*"],+                "checks": [{"text": f"{P['marking']} ({P['marking_src']})", "result": "pass"},+                           {"text": "no AI-added part-number etch on any model (a 1.6 x 0.8 mm top has no room for a readable 20-character MPN)", "result": "pass"}],+                "evidence": [], "files": {STEP: sha(STEP)}})+entries.append({"date": TODAY, "by": by, "status": "verified", "title": "Board-use LOD GLBs are clean and share the STEP pose",+                "scope": ["lod"], "variants": ["*"],+                "checks": [{"text": "four levels written, read back, bounds equal the STEP (Z-up, metres, seat z = 0)", "result": "pass"},+                           {"text": "no footprint, pad outline, label or silkscreen helpers; terminals present at every level", "result": "pass"},+                           {"text": "previews looked at by the AI agent, not yet by a person", "result": "note"}],+                "evidence": [{"label": "manifest", "href": "lod/manifest.json"}], "files": {lv["path"]: lv["sha256"] for lv in lod["levels"]}})+entries.append({"date": TODAY, "by": by, "status": "verified", "title": "Pin 1, polarity and symbol",+                "scope": ["footprint", "3d-model", "symbol"], "variants": ["*"],+                "checks": [{"text": "non-polar two-terminal capacitor: pads 1 and 2 are interchangeable; symbol pins 1 and 2 map to pads 1 and 2", "result": "pass"},+                           {"text": "symbol pin ends at (0, +2.54) and (0, -2.54) mm, on the 2.54 mm grid", "result": "pass"},+                           {"text": "symbol fields MPN, Manufacturer, Mouser, DigiKey, Adom Wiki, Datasheet and Footprint filled; LCSC left empty because JLCPCB/LCSC list no part (" + TODAY + ")", "result": "note"},+                           {"text": "model terminals sit on the footprint pads (both centred on the origin, long axis on X)", "result": "pass"}],+                "evidence": [], "files": {FP: sha(FP), SYM: sha(SYM), STEP: sha(STEP)}})+if have_hero:+    entries.append({"date": TODAY, "by": by, "status": "verified", "title": "Hero GLB built to the adom-hero standard",+                    "scope": ["3d-model", "hero"], "variants": ["*"],+                    "checks": [{"text": "built with component-hero hero_glb.py from package-reference.glb, the footprint and page.json; alignment check OK", "result": "pass"},+                               {"text": "teal dashed pad outlines (alpha 0.5), silkscreen (alpha 0.3) and pad-number labels 1 and 2 (alpha 0.5); no pin-1 dot because the part is non-polar", "result": "pass"},+                               {"text": "preview looked at by the AI agent; the live wiki viewer still needs a person's look", "result": "note"}],+                    "evidence": [{"label": "preview", "href": HERO_PNG}, {"label": "overlay record", "href": HERO_SIDE}],+                    "files": {HERO: sha(HERO), "package-reference.glb": sha("package-reference.glb")}})+if have_alt or have_lbr:+    entries.append({"date": TODAY, "by": by, "status": "verified", "title": "Fusion and Altium libraries generated from the KiCad symbol and footprint",+                    "scope": ["symbol", "footprint"], "variants": ["*"],+                    "checks": [{"text": "adom-lbr generate --part-metadata page.json: .lbr lint passed", "result": "pass"},+                               {"text": "adom-lbr import-kicad then assemble-altium --no-dedupe: native .SchLib and .PcbLib written, STEP body embedded", "result": "pass"},+                               {"text": "not yet opened in Fusion or Altium (no desktop app used for this page)", "result": "note"}],+                    "evidence": [], "files": {f: sha(f) for f in (LBR, SCH, PCB, HUB) if ex(f)}})+json.dump({"schema": "adom/verification@1", "part": MPN, "variants": [], "entries": entries}, open(p_("verification.json"), "w"), indent=1)++# ---------------- models.json ----------------+SRC = f"Taiyo Yuden 3D model (STEP) from the product page ({PRODUCT}), bytes unchanged"+models = [+    {"path": STEP, "format": "step", "title": "Package model (STEP, Taiyo Yuden)", "status": "current", "slot": "step", "variant": "plain", "role": "manufacturer",+     "use": ["board-cad"], "marking": None, "unique": "The board CAD model: Taiyo Yuden's own STEP for this part number, bytes unchanged, already Z-up and seated",+     "source": SRC, "sha256": sha(STEP), "git_blob": blob(STEP), "bytes": os.path.getsize(p_(STEP)), "thumb": "docs/models/step-plain.png"},+    {"path": ORIG, "format": "step", "title": "Taiyo Yuden original download (STEP)", "status": "current", "variant": "original", "role": "manufacturer",+     "use": ["archive"], "marking": None, "unique": "The file as downloaded (same bytes as the board model), kept under vendor/ with its original name",+     "source": SRC, "sha256": sha(ORIG), "git_blob": blob(ORIG), "bytes": os.path.getsize(p_(ORIG))},+    {"path": "package-reference.glb", "format": "glb", "title": "Package model (GLB)", "status": "current", "slot": "model_3d_plain", "variant": "plain",+     "role": "derived", "use": ["render", "board-insertion"], "marking": None, "derived_from": STEP,+     "unique": "Clean board-use model for viewers (step2glb), no footprint artwork", "source": SRC,+     "sha256": sha("package-reference.glb"), "git_blob": blob("package-reference.glb"), "bytes": os.path.getsize(p_("package-reference.glb"))},+]+if have_hero:+    models.append({"path": HERO, "format": "glb", "title": "Hero model (GLB)", "status": "current", "slot": "model_3d", "variant": "hero", "role": "derived",+                   "use": ["wiki-hero"], "marking": None, "derived_from": "package-reference.glb",+                   "unique": "The page's 3D view: the package plus teal dashed pad outlines, silkscreen and pad-number labels from the footprint (adom-hero standard)",+                   "source": "component-hero hero_glb.py", "sha256": sha(HERO), "git_blob": blob(HERO), "bytes": os.path.getsize(p_(HERO)), "thumb": HERO_PNG})+for lv in lod["levels"]:+    models.append({"path": lv["path"], "format": "glb", "title": f"Board LOD, {lv['level']}", "status": "current", "variant": "lod", "role": "derived",+                   "use": ["board-insertion", "render"], "marking": None, "derived_from": STEP,+                   "unique": f"{lv['level']} detail for board and scaffold viewers: {lv['triangles']} triangles, {lv['primitives']} primitives",+                   "thumb": lv["preview"]["path"], "source": SRC, "sha256": lv["sha256"], "git_blob": blob(lv["path"]), "bytes": lv["sizeBytes"]})+json.dump({"schema": "adom/models@1", "part": MPN, "models": models, "updated": TODAY}, open(p_("models.json"), "w"), indent=1)++# ---------------- LICENSE ----------------+open(p_("LICENSE"), "w").write(f"""{MPN} component page++Original Adom content on this page (README text, the KiCad symbol {SYM}, the verification+drawings, the JSON records and the scripts in provenance/tools/) is licensed under the Creative+Commons Attribution 4.0 International License (CC-BY-4.0): https://creativecommons.org/licenses/by/4.0/++Third-party files keep their own terms and are not relicensed by this page:+- {STEP}, {ORIG}, {DXF} and every model derived from the STEP (package-reference.glb,+  {HERO}, lod/*.glb, the body inside altium/{MPN}.PcbLib) are Taiyo Yuden's 3D and land+  data, provided on Taiyo Yuden's product page, under Taiyo Yuden's terms.+- {FP} is KiCad library content, CC-BY-SA 4.0 with the KiCad library exception+  ({GL}/kicad-footprints); the footprint inside {LBR} and altium/{MPN}.PcbLib keeps that license.+- The PDFs in docs/ and the page crops in docs/figures/ are Taiyo Yuden documents, copyright of+  TAIYO YUDEN CO., LTD., included unchanged (or cropped) for reference.+""")++# ---------------- README ----------------+spec_rows = [+    ("Capacitance", "0.22 uF +/-10 % (code 224, K)", "product page; catalog p.4"),+    ("Rated voltage", "100 V DC (code H)", "product page; catalog p.1"),+    ("Temperature characteristic", "X7S (EIA, code C7): +/-22 % from -55 to +125 C, reference 25 C", "product page; catalog p.3"),+    ("Dissipation factor (tan delta)", "3.5 % max", "product page"),+    ("Insulation resistance", "100 MOhm x uF min (at least 454 MOhm for 0.22 uF)", "product page"),+    ("High temperature loading", "150 % of rated voltage", "product page"),+    ("Operating temperature", "-55 to +125 C", "product page"),+    ("Series", "MSAS medium-high voltage multilayer ceramic capacitor for general purpose; nickel electrodes", "product page; catalog p.1"),+    ("Size", "L 1.6 +/-0.10, W 0.8 +/-0.10, T 0.8 +/-0.10, e 0.35 +/-0.25 (mm); 0.9 mm max", "product page; catalog p.2, p.5; characteristics sheet"),+    ("Packaging (code T)", "178 mm reel, paper tape, 4 mm pitch, 4000 pcs", "product page; catalog p.4, p.6"),+    ("Soldering", "reflow", "product page"),+    ("Compliance", "RoHS, REACH, halogen free", "product page"),+    ("Status", "mass production (preferred)", "product page, " + TODAY),+    ("Previous part number", P["old_pn"], "product page; characteristics sheet"),+]+spec_tbl = "| Parameter | Value | Source |\n|---|---|---|\n" + "".join(f"| {a} | {b} | {c} |\n" for a, b, c in spec_rows)+dist_tbl = ("| Distributor | Part number | Stock seen " + TODAY + " |\n|---|---|---|\n"+            + "".join(f"| {n} | [{D[kk][0]}]({D[kk][1]}) | {D[kk][2]:,} |\n" for kk, n in (("mouser", "Mouser"), ("digikey", "DigiKey")))+            + "| LCSC / JLCPCB | not listed | - |\n")+fig_tbl = "| Figure | Source |\n|---|---|\n" + "".join(f"| [{f['caption']}]({f['file']}) | {f['document']}, p.{f['page']} |\n" for f in figs)+cad_rows = [(f"`{SYM}`", "KiCad symbol (standard capacitor graphic, pin ends on the 2.54 mm grid) with MPN, Manufacturer, Mouser, DigiKey, LCSC (empty) and Adom Wiki fields"),+            (f"`{FP}`", f"KiCad footprint (KiCad library `{P['fp']}`, renamed; model path `${{KIPRJMOD}}/{STEP}`)")]+if have_lbr: cad_rows.append((f"`{LBR}`", "Fusion / EAGLE library made with `adom-lbr generate`"))+if have_alt: cad_rows.append((f"`{SCH}`, `{PCB}`", f"Altium symbol and footprint libraries (native binary) made with `adom-lbr import-kicad` and `assemble-altium` (the PcbLib embeds the STEP body); `{HUB}` is the adom-lbr hub record"))+cad_rows += [(f"`{STEP}`", "3D model, STEP: Taiyo Yuden's own, bytes unchanged"), (f"`{ORIG}`", "the same file under its download name"),+             ("`package-reference.glb`", "3D model, GLB (clean, for board viewers)")]+if have_hero: cad_rows.append((f"`{HERO}`", "the page's 3D view: package plus footprint pad outlines, silkscreen and pad labels"))+cad_rows += [("`lod/`", "board-use GLBs in four levels of detail, with previews and manifest"), (f"`{DXF}`", "Taiyo Yuden's land pattern drawing for this part, unchanged")]+cad_tbl = "| File | What it is |\n|---|---|\n" + "".join(f"| {a} | {b} |\n" for a, b in cad_rows)+doc_rows = [("Product page", PRODUCT)] + [(DS[kk]["title"], f"[PDF]({DS[kk]['file']}) ([source]({DS[kk]['url']}))") for kk in ("catalog", "chars", "pack")]+doc_rows += [("3D model and land pattern", "STEP and DXF downloads on the product page (copies on this page)"),+             ("Reliability data, precautions, SPICE and S-parameter models", "links on the product page")]+res_tbl = "| Resource | Link |\n|---|---|\n" + "".join(f"| {a} | {b} |\n" for a, b in doc_rows)+hero_para = (f"""+The page viewer shows `{HERO}`: the clean model plus nonphysical reference artwork drawn under it to the adom-hero+standard (adom/component-hero): the footprint's pads as teal dashed outlines at 50 % opacity, its silkscreen at 70 %+transparency and the pad numbers 1 and 2. The part is non-polar, so no pin-1 dot is added. The artwork never goes into+the STEP, `package-reference.glb` or the board LODs.++![Hero preview, top and oblique]({HERO_PNG})+""" if have_hero else "")+readme = f"""# {MPN}++Taiyo Yuden {MPN}: {P['brief']}. A medium-high voltage multilayer ceramic capacitor from Taiyo Yuden's MSAS general purpose+series, previously sold as {P['old_pn']}. Taiyo Yuden names inverters and DC/DC converters as its main applications.++::adom-verified{{src="/{OWNER}/{slug}/render/verification.json"}}++| Field | Value |+|---|---|+| Manufacturer | {P['mfr_full']} |+| Manufacturer part number | {MPN} (previously {P['old_pn']}) |+| Type | {P['subcategory']} |+| Capacitance | {P['value']}, {P['tol']} |+| Rated voltage | 100 V DC |+| Dielectric | X7S, +/-22 % over -55 to +125 C |+| Package | {P['package']}, 1.6 x 0.8 x 0.8 mm (0.9 mm max) |+| Marking | none |+| Datasheet | [{ds['title']}]({ds['file']}) and the [characteristics data]({DS['chars']['file']}) |++## Key specifications++{spec_tbl}+The product page was read on {TODAY}; catalog page numbers refer to [the catalog PDF]({ds['file']}).++## DC bias: plan for the capacitance you get at your voltage++X7S is a class 2 dielectric, so the capacitance falls as DC voltage is applied. Taiyo Yuden's characteristics sheet plots it:+read off that graph, the capacitance is roughly 30 % lower at 20 V, 60 % lower at 40 V, 80 % lower at 60 V and close to+90 % lower at the 100 V rating (values read from the plotted curve, not printed numbers). The same sheet gives capacitance+and impedance against frequency, the temperature curve and ripple current heating.++![Electrical characteristics data](docs/figures/ty-chars-p1.png)++## Ordering++{dist_tbl}+Stock figures are a snapshot from the Adom parts search on {TODAY}; check the distributor before ordering. DigiKey listed+the part with no stock that day; Mouser had {D['mouser'][2]:,}. {P['lcsc_note']}. Mouser also lists the previous part+number {P['old_pn']} and points it to this one.++## Part number++M S A S (two-terminal general purpose MLCC) | H 100 V | 16 size 1608 | 8 thickness 0.8 mm | S dimension tolerance |+C7 X7S | 224 0.22 uF | K +/-10 % | T 178 mm reel, 4 mm pitch tape | CA01 internal code (catalog p.1 to p.4).++![Catalog p.1 part numbering](docs/figures/ty-cat-p1-part-number.png)++## Manufacturer and resources++{res_tbl}+## Pins++| Pin | Function |+|---|---|+| 1 | terminal (non-polar) |+| 2 | terminal (non-polar) |++A ceramic capacitor has no polarity: either terminal may face either way.++## Land pattern: KiCad footprint vs Taiyo Yuden++<table>+<tr>+<td width="104"><a href="land-pattern/README.md"><img src="land-pattern/land-pattern-icon.png" width="112" alt="Land pattern"></a><br><sub>&nbsp;&nbsp;&nbsp;&nbsp;Land&nbsp;pattern&nbsp;&nbsp;&nbsp;&nbsp;</sub></td>+<td>The footprint is KiCad's standard `{P['fp']}`, and this guide lays its pads over the land Taiyo Yuden publishes for this part as a DXF, at true scale. KiCad's pads are larger on every side and contain the maker's land. Use it to decide whether to keep the KiCad pads or change them to Taiyo Yuden's {L['len_b']} x {L['wid_c']} mm lands before layout.<br><br><a href="land-pattern/README.md">The comparison, with the numbers</a></td>+</tr>+</table>++## 3D model++The model is **Taiyo Yuden's own STEP** for this part number, downloaded by plain HTTP from the product page and used with+its bytes unchanged: it is already in millimetres, Z-up, seated on z = 0 and centred, so no transform was needed. It is+1.60 x 0.80 x 0.90 mm with 0.35 mm terminal bands; the 0.90 mm height is the top of the printed range (T 0.8 +/-0.10 mm, and+the characteristics sheet says 0.9 mm max). The body colour is the maker's dark grey (their product photo shows a brown body);+it was left as supplied. The part is unmarked, so no marking is shown.+{hero_para}+::adom-models{{src="/{OWNER}/{slug}/render/models.json"}}++## Model checked against the printed dimensions++The model was rendered in orthographic top, bottom, side and end views at true scale and laid over a drawing made at the same+scale from the printed limits (nominal outline, tolerance limits, allowed terminal band). Every dimension is inside the printed+range: {", ".join(f"{c['dim']} {c['model_mm']:.3f} mm ({c['datasheet_min']:.2f} to {c['datasheet_max']:.2f})" for c in check['checks'])}.++![Model over the printed dimensions](docs/verify/{slug}-overlay.png)++Source: {P['dims_text']}.++## Board levels of detail++Clean board-use GLBs (no footprint pads, outlines, labels or silkscreen) in four levels, all in the same Z-up, metre,+footprint-origin pose as the STEP. Previews are rendered from each GLB.++::adom-component-lod{{src="/{OWNER}/{slug}/render/lod/manifest.json"}}++## CAD files++{cad_tbl}+## Document figures++The pages this record cites, cropped from the PDFs:++{fig_tbl}+## Sources and license++- Taiyo Yuden product page: {PRODUCT} (specifications, documents, STEP and DXF downloads), {TODAY}+- KiCad library footprint: [{P['fp_lib']}.pretty/{P['fp']}.kicad_mod]({GL}/kicad-footprints/-/blob/master/{P['fp_lib']}.pretty/{P['fp']}.kicad_mod)+- Distributor numbers: Mouser, DigiKey and JLCPCB/LCSC through the Adom parts search, {TODAY}++Original Adom content is CC-BY-4.0. Taiyo Yuden's STEP, DXF and PDFs keep Taiyo Yuden's terms and the KiCad footprint keeps+its upstream license (CC-BY-SA 4.0 with the KiCad library exception); see [LICENSE](LICENSE). [provenance.json](provenance.json)+records every source and file hash; the scripts that built the checks are in `provenance/tools/`.++This is a catalog record for the part, not a manufacturing approval: check Taiyo Yuden's current specification for your design.+"""+readme = re.sub(r"\n{3,}", "\n\n", readme)+for bad in ("—", "–"):+    assert bad not in readme and bad not in land_readme, "dash in README"+open(p_("README.md"), "w").write(readme)++# ---------------- page.json / package.json ----------------+title = f"{MPN} - {P['mfr']}"+parts_ = {"symbol": SYM, "footprint": FP, "step": STEP, "model_3d": HERO if have_hero else "package-reference.glb",+          "model_3d_plain": "package-reference.glb", "datasheet": ds["file"]}+if have_lbr: parts_["lbr"] = LBR+if have_alt: parts_.update({"altium_schlib": SCH, "altium_pcblib": PCB})+component = {+    "mpn": MPN, "manufacturer": P["mfr"], "package": P["package"], "category": P["category"], "subcategory": P["subcategory"],+    "pin_count": 2, "body_size": P["body_mm"], "value": P["value"], "tolerance": P["tol"], "rating": "100 V DC", "dielectric": "X7S (+/-22 %, -55 to +125 C)",+    "previous_part_number": P["old_pn"],+    "pins": [{"number": "1", "name": "~"}, {"number": "2", "name": "~"}],+    "parts": parts_,+    "manufacturer_links": {"product": PRODUCT, "datasheet_pdf": ds["url"], "characteristics_pdf": DS["chars"]["url"], "packaging_pdf": DS["pack"]["url"],+                           "step": "https://ds.yuden.co.jp/TYCOMPAS/ut/download?pn=MSASH168SC7224KTCA01&fileType=3D_Filename",+                           "land_dxf": "https://ds.yuden.co.jp/TYCOMPAS/ut/download?pn=MSASH168SC7224KTCA01&fileType=land_Filename"},+    "distributor_links": {"mouser": {"part": D["mouser"][0], "url": D["mouser"][1]}, "digikey": {"part": D["digikey"][0], "url": D["digikey"][1]}, "lcsc": False},+    "lcsc_note": P["lcsc_note"],+    "marking": {"text": None, "statement": P["marking"], "source": P["marking_src"]},+    "provenance": {"model_3d": "Taiyo Yuden STEP for this part number, bytes unchanged, checked against the printed dimensions",+                   "footprint": "KiCad standard library, renamed", "land_pattern_check": "land-pattern/README.md (KiCad pads larger than the maker's DXF land)", "omitted": []},+}+eda = {"kicad": {"symbol": SYM, "footprint": FP, "model": STEP, "provenance": "generated"}}+if have_lbr: eda["fusion"] = {"lbr": LBR, "provenance": "generated"}+if have_alt: eda["altium"] = {"schlib": SCH, "pcblib": PCB, "provenance": "generated"}+page = {"slug": slug, "title": title, "eda_assets": eda, "type": "hardware", "kind": "component", "version": "0.1.0",+        "description": P["brief"], "brief": P["brief"],+        "tags": ["hardware", "component", "passive", "capacitor", "mlcc", "0603", "x7s", "100v", "taiyo-yuden"],+        "discovery_triggers": [MPN, MPN.lower(), P["old_pn"], "0.22 uF 100 V 0603 X7S", "220nF 100V 0603 capacitor"],+        "dependencies": {}, "license": "CC-BY-4.0", "hero": {"path": "docs/hero.png", "chrome": False},+        "component": component, "visibility": {"public": True}, "source": {"tool": "taiyo-yuden", "url": PRODUCT}}+json.dump(page, open(p_("page.json"), "w"), indent=1)+json.dump({"name": slug, "title": title, "version": "0.1.0", "description": P["brief"], "type": "hardware", "kind": "component",+           "license": "CC-BY-4.0", "files": []}, open(p_("package.json"), "w"), indent=1)++# ---------------- provenance.json ----------------+files = {}+for dp, dn, fn in os.walk(OUT):+    for f in fn:+        rel = os.path.relpath(os.path.join(dp, f), OUT)+        if rel != "provenance.json":+            files[rel] = sha(rel)+finp = os.path.join(ROOT, "work", f"{slug}-finish.json")+fin = json.load(open(finp)) if os.path.exists(finp) else {}+prov = {+    "manufacturer_reference": PRODUCT,+    "product_page_specs_read": {"date": TODAY, "status": "Mass Production (Preferred)", "capacitance": "0.22 uF +/-10 %", "rated_voltage": "100 V",+                                "tan_delta_max": "3.5 %", "temperature_characteristic": "X7S", "operating_temperature": "-55 to +125 C",+                                "capacitance_change": "+/-22 %", "high_temperature_loading": "150 % rated voltage", "insulation_resistance_min": "100 MOhm uF",+                                "dimensions_mm": {"L": "1.6 +/-0.10", "W": "0.8 +/-0.10", "T": "0.8 +/-0.10", "e": "0.35 +/-0.25"},+                                "standard_quantity": "paper tape 4000 pcs", "soldering": "reflow", "rohs": True, "reach": True, "halogen_free": True,+                                "previous_part_number": P["old_pn"]},+    "symbol_source": "Original, written for this page (standard capacitor graphic, non-polar, pin ends on the 2.54 mm grid). CC-BY-4.0.",+    "footprint_source": f"KiCad standard library {P['fp_lib']}:{P['fp']} (CC-BY-SA 4.0 with the KiCad library exception); renamed {FP[:-10]}, model path ${{KIPRJMOD}}/{STEP}; copper unchanged",+    "footprint_upstream_url": f"{GL}/kicad-footprints/-/raw/master/{P['fp_lib']}.pretty/{P['fp']}.kicad_mod",+    "footprint_upstream_sha256": hashlib.sha256(open(os.path.join(ROOT, "dl/kicad", P["fp"] + ".kicad_mod"), "rb").read()).hexdigest(),+    "manufacturer_step": {"found": True, "url": "https://ds.yuden.co.jp/TYCOMPAS/ut/download?pn=MSASH168SC7224KTCA01&fileType=3D_Filename",+                          "method": "plain HTTP GET with the session cookie and referer of the product page (no browser)", "retrieved": TODAY,+                          "file": ORIG, "sha256": sha(ORIG), "units": "mm", "up_axis": "Z", "seat_z": 0, "transform": "none",+                          "colours": "as supplied (body 0.25 grey, terminals 0.75 grey, sRGB)"},+    "manufacturer_land": {"file": DXF, "sha256": sha(DXF), "url": "https://ds.yuden.co.jp/TYCOMPAS/ut/download?pn=MSASH168SC7224KTCA01&fileType=land_Filename",+                          "read": "layer L1 lands x 0.4 to 1.0 mm, y -0.4 to 0.4 mm (both sides); layer Resist 0.05 mm larger; layer Comp body 1.6 x 0.8 mm"},+    "geometry_status": "Manufacturer-issued CAD for this part number, every printed dimension checked (docs/verify).",+    "marking": {"real_marking": None, "statement": P["marking"], "source": P["marking_src"]},+    "frame": {"units": "mm (STEP), metres (GLB)", "up_axis": "Z", "seat_z": 0, "origin": "footprint origin", "transform": "none"},+    "glb": {"tool": "step2glb convert (service)", "source": STEP, "exit": 0},+    "hero_image": {"tool": "step2glb thumbnail --width 1600 --height 1000 (iso, 16:10)", "source": STEP, "path": "docs/hero.png"},+    "hero_glb": fin.get("hero"), "fusion_lbr": fin.get("lbr"), "altium": fin.get("altium"),+    "documents": [{"file": DS[kk]["file"], "sha256": sha(DS[kk]["file"]), "url": DS[kk]["url"], "title": DS[kk]["title"], "retrieved": TODAY} for kk in ("catalog", "chars", "pack")],+    "document_figures": figs,+    "dc_bias_reading": "values in the README read off the plotted DC bias curve of 22U2A07 (approximate): about -30 % at 20 V, -60 % at 40 V, -80 % at 60 V, -90 % near 100 V",+    "datasheet_check": {"overlay": f"docs/verify/{slug}-overlay.png", "numbers": f"docs/verify/{slug}-check.json", "result": "PASS" if check["all_pass"] else "FAIL"},+    "land_pattern_check": {"readme": "land-pattern/README.md", "numbers": "land-pattern/land-check.json", "source": L["source"], "result": "KiCad pads larger than and containing the maker's land; KiCad kept"},+    "distributors": {"tool": "adom-parts-search search " + MPN, "date": TODAY,+                     "mouser": {"part": D["mouser"][0], "url": D["mouser"][1], "stock": D["mouser"][2]},+                     "digikey": {"part": D["digikey"][0], "url": D["digikey"][1], "stock": D["digikey"][2]}, "lcsc": None, "lcsc_note": P["lcsc_note"]},+    "lod": {"manifest": "lod/manifest.json", "generator": "provenance/tools/lod.py", "source": STEP, "source_sha256": sha(STEP)},+    "tools_note": "Scripts adapted from adom/rc0402fr-0733kl and adom/grm188r72a103ka01d.",+    "files": files, "files_note": "provenance.json itself is not listed.", "built_by": "Claude (AI agent) for John Lauer", "date": TODAY,+}+json.dump(prov, open(p_("provenance.json"), "w"), indent=1)+print("records written", slug, "hero" if have_hero else "-", "altium" if have_alt else "-", "lbr" if have_lbr else "-")
provenance/tools/verify_live.pyadded+35
@@ -0,0 +1,35 @@+"""Check over HTTP that every file page.json declares (component.parts, eda_assets, hero) and every+file in the local page tree is served by the wiki, plus the viewer routes.+usage: verify_live.py <slug>"""+import sys, os, json, urllib.request, urllib.parse, hashlib+slug = sys.argv[1]; D = f"/home/adom/project/uta-dynos/work/pages/{slug}"+W = "https://wiki.adom.inc"+p = json.load(open(os.path.join(D, "page.json")))+declared = set(p["component"]["parts"].values())+for v in p.get("eda_assets", {}).values():+    declared |= {x for k, x in v.items() if k != "provenance"}+declared.add(p["hero"]["path"])+declared |= {"verification.json", "models.json", "lod/manifest.json", "README.md", "page.json"}+local = {os.path.relpath(os.path.join(a, f), D) for a, _, fs in os.walk(D) for f in fs}+def get(url):+    try:+        with urllib.request.urlopen(urllib.request.Request(url, headers={"User-Agent": "adom-verify"}), timeout=60) as r:+            return r.status, r.read()+    except urllib.error.HTTPError as e:+        return e.code, b""+    except Exception as e:+        return str(e), b""+bad = []+for f in sorted(declared | local):+    st, body = get(f"{W}/api/pages/adom/{slug}/files/" + urllib.parse.quote(f))+    same = os.path.exists(os.path.join(D, f)) and hashlib.sha256(body).hexdigest() == hashlib.sha256(open(os.path.join(D, f), "rb").read()).hexdigest()+    ok = st == 200 and len(body) > 0 and (same or f == "page.json")+    if not ok or f in declared:+        print(("OK  " if ok else "BAD ") + f"{st} {len(body):>8} {'same' if same else 'DIFF'} {f}{'  [declared]' if f in declared else ''}")+    if not ok: bad.append(f)+for r in ("viewer/3d", "viewer/symbol", "viewer/footprint"):+    st, body = get(f"{W}/{r}/adom/component/{slug}")+    print(f"route {r}: {st} {len(body)} bytes"); +    if st != 200 or len(body) < 500: bad.append(r)+st, body = get(f"{W}/adom/{slug}"); print("page:", st, len(body))+print(json.dumps({"slug": slug, "checked": len(declared | local), "bad": bad}))
vendor/MSASH168SC7224KTCA01-taiyo-yuden-original.stepadded+586
@@ -0,0 +1,586 @@+ISO-10303-21;
+HEADER;
+/* Generated by software containing ST-Developer
+ * from STEP Tools, Inc. (www.steptools.com) 
+ */
+
+FILE_DESCRIPTION(
+/* description */ (''),
+/* implementation_level */ '2;1');
+
+FILE_NAME(
+/* name */ 'C:\\Users\\user\\Desktop\\TScad\\stp\\s1_1608_90.stp',
+/* time_stamp */ '2022-05-10T16:36:15+09:00',
+/* author */ ('user'),
+/* organization */ (''),
+/* preprocessor_version */ 'ST-DEVELOPER v18.1',
+/* originating_system */ 'Autodesk Inventor 2021',
+/* authorisation */ '');
+
+FILE_SCHEMA (('AUTOMOTIVE_DESIGN { 1 0 10303 214 3 1 1 }'));
+ENDSEC;
+
+DATA;
+#10=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#274,#275,
+#276,#277,#278,#279,#280,#281,#282),#497);
+#11=SHAPE_REPRESENTATION_RELATIONSHIP('SRR','None',#504,#12);
+#12=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#13,#14,#15),#496);
+#13=MANIFOLD_SOLID_BREP('\X2\30BD30EA30C330C9\X0\38',#301);
+#14=MANIFOLD_SOLID_BREP('\X2\30BD30EA30C330C9\X0\39',#302);
+#15=MANIFOLD_SOLID_BREP('\X2\30BD30EA30C330C9\X0\39',#303);
+#16=FACE_OUTER_BOUND('',#34,.T.);
+#17=FACE_OUTER_BOUND('',#35,.T.);
+#18=FACE_OUTER_BOUND('',#36,.T.);
+#19=FACE_OUTER_BOUND('',#37,.T.);
+#20=FACE_OUTER_BOUND('',#38,.T.);
+#21=FACE_OUTER_BOUND('',#39,.T.);
+#22=FACE_OUTER_BOUND('',#40,.T.);
+#23=FACE_OUTER_BOUND('',#41,.T.);
+#24=FACE_OUTER_BOUND('',#42,.T.);
+#25=FACE_OUTER_BOUND('',#43,.T.);
+#26=FACE_OUTER_BOUND('',#44,.T.);
+#27=FACE_OUTER_BOUND('',#45,.T.);
+#28=FACE_OUTER_BOUND('',#46,.T.);
+#29=FACE_OUTER_BOUND('',#47,.T.);
+#30=FACE_OUTER_BOUND('',#48,.T.);
+#31=FACE_OUTER_BOUND('',#49,.T.);
+#32=FACE_OUTER_BOUND('',#50,.T.);
+#33=FACE_OUTER_BOUND('',#51,.T.);
+#34=EDGE_LOOP('',(#184,#185,#186,#187));
+#35=EDGE_LOOP('',(#188,#189,#190,#191));
+#36=EDGE_LOOP('',(#192,#193,#194,#195));
+#37=EDGE_LOOP('',(#196,#197,#198,#199));
+#38=EDGE_LOOP('',(#200,#201,#202,#203));
+#39=EDGE_LOOP('',(#204,#205,#206,#207));
+#40=EDGE_LOOP('',(#208,#209,#210,#211));
+#41=EDGE_LOOP('',(#212,#213,#214,#215));
+#42=EDGE_LOOP('',(#216,#217,#218,#219));
+#43=EDGE_LOOP('',(#220,#221,#222,#223));
+#44=EDGE_LOOP('',(#224,#225,#226,#227));
+#45=EDGE_LOOP('',(#228,#229,#230,#231));
+#46=EDGE_LOOP('',(#232,#233,#234,#235));
+#47=EDGE_LOOP('',(#236,#237,#238,#239));
+#48=EDGE_LOOP('',(#240,#241,#242,#243));
+#49=EDGE_LOOP('',(#244,#245,#246,#247));
+#50=EDGE_LOOP('',(#248,#249,#250,#251));
+#51=EDGE_LOOP('',(#252,#253,#254,#255));
+#52=LINE('',#419,#88);
+#53=LINE('',#421,#89);
+#54=LINE('',#423,#90);
+#55=LINE('',#424,#91);
+#56=LINE('',#427,#92);
+#57=LINE('',#429,#93);
+#58=LINE('',#430,#94);
+#59=LINE('',#433,#95);
+#60=LINE('',#435,#96);
+#61=LINE('',#436,#97);
+#62=LINE('',#438,#98);
+#63=LINE('',#439,#99);
+#64=LINE('',#445,#100);
+#65=LINE('',#447,#101);
+#66=LINE('',#449,#102);
+#67=LINE('',#450,#103);
+#68=LINE('',#453,#104);
+#69=LINE('',#455,#105);
+#70=LINE('',#456,#106);
+#71=LINE('',#459,#107);
+#72=LINE('',#461,#108);
+#73=LINE('',#462,#109);
+#74=LINE('',#464,#110);
+#75=LINE('',#465,#111);
+#76=LINE('',#471,#112);
+#77=LINE('',#473,#113);
+#78=LINE('',#475,#114);
+#79=LINE('',#476,#115);
+#80=LINE('',#479,#116);
+#81=LINE('',#481,#117);
+#82=LINE('',#482,#118);
+#83=LINE('',#485,#119);
+#84=LINE('',#487,#120);
+#85=LINE('',#488,#121);
+#86=LINE('',#490,#122);
+#87=LINE('',#491,#123);
+#88=VECTOR('',#345,10.);
+#89=VECTOR('',#346,10.);
+#90=VECTOR('',#347,10.);
+#91=VECTOR('',#348,10.);
+#92=VECTOR('',#351,10.);
+#93=VECTOR('',#352,10.);
+#94=VECTOR('',#353,10.);
+#95=VECTOR('',#356,10.);
+#96=VECTOR('',#357,10.);
+#97=VECTOR('',#358,10.);
+#98=VECTOR('',#361,10.);
+#99=VECTOR('',#362,10.);
+#100=VECTOR('',#369,10.);
+#101=VECTOR('',#370,10.);
+#102=VECTOR('',#371,10.);
+#103=VECTOR('',#372,10.);
+#104=VECTOR('',#375,10.);
+#105=VECTOR('',#376,10.);
+#106=VECTOR('',#377,10.);
+#107=VECTOR('',#380,10.);
+#108=VECTOR('',#381,10.);
+#109=VECTOR('',#382,10.);
+#110=VECTOR('',#385,10.);
+#111=VECTOR('',#386,10.);
+#112=VECTOR('',#393,10.);
+#113=VECTOR('',#394,10.);
+#114=VECTOR('',#395,10.);
+#115=VECTOR('',#396,10.);
+#116=VECTOR('',#399,10.);
+#117=VECTOR('',#400,10.);
+#118=VECTOR('',#401,10.);
+#119=VECTOR('',#404,10.);
+#120=VECTOR('',#405,10.);
+#121=VECTOR('',#406,10.);
+#122=VECTOR('',#409,10.);
+#123=VECTOR('',#410,10.);
+#124=VERTEX_POINT('',#417);
+#125=VERTEX_POINT('',#418);
+#126=VERTEX_POINT('',#420);
+#127=VERTEX_POINT('',#422);
+#128=VERTEX_POINT('',#426);
+#129=VERTEX_POINT('',#428);
+#130=VERTEX_POINT('',#432);
+#131=VERTEX_POINT('',#434);
+#132=VERTEX_POINT('',#443);
+#133=VERTEX_POINT('',#444);
+#134=VERTEX_POINT('',#446);
+#135=VERTEX_POINT('',#448);
+#136=VERTEX_POINT('',#452);
+#137=VERTEX_POINT('',#454);
+#138=VERTEX_POINT('',#458);
+#139=VERTEX_POINT('',#460);
+#140=VERTEX_POINT('',#469);
+#141=VERTEX_POINT('',#470);
+#142=VERTEX_POINT('',#472);
+#143=VERTEX_POINT('',#474);
+#144=VERTEX_POINT('',#478);
+#145=VERTEX_POINT('',#480);
+#146=VERTEX_POINT('',#484);
+#147=VERTEX_POINT('',#486);
+#148=EDGE_CURVE('',#124,#125,#52,.T.);
+#149=EDGE_CURVE('',#125,#126,#53,.T.);
+#150=EDGE_CURVE('',#127,#126,#54,.T.);
+#151=EDGE_CURVE('',#124,#127,#55,.T.);
+#152=EDGE_CURVE('',#128,#124,#56,.T.);
+#153=EDGE_CURVE('',#129,#127,#57,.T.);
+#154=EDGE_CURVE('',#128,#129,#58,.T.);
+#155=EDGE_CURVE('',#130,#128,#59,.T.);
+#156=EDGE_CURVE('',#131,#129,#60,.T.);
+#157=EDGE_CURVE('',#130,#131,#61,.T.);
+#158=EDGE_CURVE('',#125,#130,#62,.T.);
+#159=EDGE_CURVE('',#126,#131,#63,.T.);
+#160=EDGE_CURVE('',#132,#133,#64,.T.);
+#161=EDGE_CURVE('',#133,#134,#65,.T.);
+#162=EDGE_CURVE('',#135,#134,#66,.T.);
+#163=EDGE_CURVE('',#132,#135,#67,.T.);
+#164=EDGE_CURVE('',#136,#132,#68,.T.);
+#165=EDGE_CURVE('',#137,#135,#69,.T.);
+#166=EDGE_CURVE('',#136,#137,#70,.T.);
+#167=EDGE_CURVE('',#138,#136,#71,.T.);
+#168=EDGE_CURVE('',#139,#137,#72,.T.);
+#169=EDGE_CURVE('',#138,#139,#73,.T.);
+#170=EDGE_CURVE('',#133,#138,#74,.T.);
+#171=EDGE_CURVE('',#134,#139,#75,.T.);
+#172=EDGE_CURVE('',#140,#141,#76,.T.);
+#173=EDGE_CURVE('',#140,#142,#77,.T.);
+#174=EDGE_CURVE('',#142,#143,#78,.T.);
+#175=EDGE_CURVE('',#141,#143,#79,.T.);
+#176=EDGE_CURVE('',#144,#140,#80,.T.);
+#177=EDGE_CURVE('',#144,#145,#81,.T.);
+#178=EDGE_CURVE('',#145,#142,#82,.T.);
+#179=EDGE_CURVE('',#146,#144,#83,.T.);
+#180=EDGE_CURVE('',#146,#147,#84,.T.);
+#181=EDGE_CURVE('',#147,#145,#85,.T.);
+#182=EDGE_CURVE('',#141,#146,#86,.T.);
+#183=EDGE_CURVE('',#143,#147,#87,.T.);
+#184=ORIENTED_EDGE('',*,*,#148,.T.);
+#185=ORIENTED_EDGE('',*,*,#149,.T.);
+#186=ORIENTED_EDGE('',*,*,#150,.F.);
+#187=ORIENTED_EDGE('',*,*,#151,.F.);
+#188=ORIENTED_EDGE('',*,*,#152,.T.);
+#189=ORIENTED_EDGE('',*,*,#151,.T.);
+#190=ORIENTED_EDGE('',*,*,#153,.F.);
+#191=ORIENTED_EDGE('',*,*,#154,.F.);
+#192=ORIENTED_EDGE('',*,*,#155,.T.);
+#193=ORIENTED_EDGE('',*,*,#154,.T.);
+#194=ORIENTED_EDGE('',*,*,#156,.F.);
+#195=ORIENTED_EDGE('',*,*,#157,.F.);
+#196=ORIENTED_EDGE('',*,*,#158,.T.);
+#197=ORIENTED_EDGE('',*,*,#157,.T.);
+#198=ORIENTED_EDGE('',*,*,#159,.F.);
+#199=ORIENTED_EDGE('',*,*,#149,.F.);
+#200=ORIENTED_EDGE('',*,*,#159,.T.);
+#201=ORIENTED_EDGE('',*,*,#156,.T.);
+#202=ORIENTED_EDGE('',*,*,#153,.T.);
+#203=ORIENTED_EDGE('',*,*,#150,.T.);
+#204=ORIENTED_EDGE('',*,*,#158,.F.);
+#205=ORIENTED_EDGE('',*,*,#148,.F.);
+#206=ORIENTED_EDGE('',*,*,#152,.F.);
+#207=ORIENTED_EDGE('',*,*,#155,.F.);
+#208=ORIENTED_EDGE('',*,*,#160,.T.);
+#209=ORIENTED_EDGE('',*,*,#161,.T.);
+#210=ORIENTED_EDGE('',*,*,#162,.F.);
+#211=ORIENTED_EDGE('',*,*,#163,.F.);
+#212=ORIENTED_EDGE('',*,*,#164,.T.);
+#213=ORIENTED_EDGE('',*,*,#163,.T.);
+#214=ORIENTED_EDGE('',*,*,#165,.F.);
+#215=ORIENTED_EDGE('',*,*,#166,.F.);
+#216=ORIENTED_EDGE('',*,*,#167,.T.);
+#217=ORIENTED_EDGE('',*,*,#166,.T.);
+#218=ORIENTED_EDGE('',*,*,#168,.F.);
+#219=ORIENTED_EDGE('',*,*,#169,.F.);
+#220=ORIENTED_EDGE('',*,*,#170,.T.);
+#221=ORIENTED_EDGE('',*,*,#169,.T.);
+#222=ORIENTED_EDGE('',*,*,#171,.F.);
+#223=ORIENTED_EDGE('',*,*,#161,.F.);
+#224=ORIENTED_EDGE('',*,*,#171,.T.);
+#225=ORIENTED_EDGE('',*,*,#168,.T.);
+#226=ORIENTED_EDGE('',*,*,#165,.T.);
+#227=ORIENTED_EDGE('',*,*,#162,.T.);
+#228=ORIENTED_EDGE('',*,*,#170,.F.);
+#229=ORIENTED_EDGE('',*,*,#160,.F.);
+#230=ORIENTED_EDGE('',*,*,#164,.F.);
+#231=ORIENTED_EDGE('',*,*,#167,.F.);
+#232=ORIENTED_EDGE('',*,*,#172,.F.);
+#233=ORIENTED_EDGE('',*,*,#173,.T.);
+#234=ORIENTED_EDGE('',*,*,#174,.T.);
+#235=ORIENTED_EDGE('',*,*,#175,.F.);
+#236=ORIENTED_EDGE('',*,*,#176,.F.);
+#237=ORIENTED_EDGE('',*,*,#177,.T.);
+#238=ORIENTED_EDGE('',*,*,#178,.T.);
+#239=ORIENTED_EDGE('',*,*,#173,.F.);
+#240=ORIENTED_EDGE('',*,*,#179,.F.);
+#241=ORIENTED_EDGE('',*,*,#180,.T.);
+#242=ORIENTED_EDGE('',*,*,#181,.T.);
+#243=ORIENTED_EDGE('',*,*,#177,.F.);
+#244=ORIENTED_EDGE('',*,*,#182,.F.);
+#245=ORIENTED_EDGE('',*,*,#175,.T.);
+#246=ORIENTED_EDGE('',*,*,#183,.T.);
+#247=ORIENTED_EDGE('',*,*,#180,.F.);
+#248=ORIENTED_EDGE('',*,*,#183,.F.);
+#249=ORIENTED_EDGE('',*,*,#174,.F.);
+#250=ORIENTED_EDGE('',*,*,#178,.F.);
+#251=ORIENTED_EDGE('',*,*,#181,.F.);
+#252=ORIENTED_EDGE('',*,*,#182,.T.);
+#253=ORIENTED_EDGE('',*,*,#179,.T.);
+#254=ORIENTED_EDGE('',*,*,#176,.T.);
+#255=ORIENTED_EDGE('',*,*,#172,.T.);
+#256=PLANE('',#323);
+#257=PLANE('',#324);
+#258=PLANE('',#325);
+#259=PLANE('',#326);
+#260=PLANE('',#327);
+#261=PLANE('',#328);
+#262=PLANE('',#329);
+#263=PLANE('',#330);
+#264=PLANE('',#331);
+#265=PLANE('',#332);
+#266=PLANE('',#333);
+#267=PLANE('',#334);
+#268=PLANE('',#335);
+#269=PLANE('',#336);
+#270=PLANE('',#337);
+#271=PLANE('',#338);
+#272=PLANE('',#339);
+#273=PLANE('',#340);
+#274=STYLED_ITEM('',(#514),#283);
+#275=STYLED_ITEM('',(#514),#284);
+#276=STYLED_ITEM('',(#514),#285);
+#277=STYLED_ITEM('',(#514),#286);
+#278=STYLED_ITEM('',(#514),#287);
+#279=STYLED_ITEM('',(#514),#288);
+#280=STYLED_ITEM('',(#513),#13);
+#281=STYLED_ITEM('',(#513),#14);
+#282=STYLED_ITEM('',(#513),#15);
+#283=ADVANCED_FACE('',(#16),#256,.T.);
+#284=ADVANCED_FACE('',(#17),#257,.T.);
+#285=ADVANCED_FACE('',(#18),#258,.T.);
+#286=ADVANCED_FACE('',(#19),#259,.T.);
+#287=ADVANCED_FACE('',(#20),#260,.T.);
+#288=ADVANCED_FACE('',(#21),#261,.F.);
+#289=ADVANCED_FACE('',(#22),#262,.T.);
+#290=ADVANCED_FACE('',(#23),#263,.T.);
+#291=ADVANCED_FACE('',(#24),#264,.T.);
+#292=ADVANCED_FACE('',(#25),#265,.T.);
+#293=ADVANCED_FACE('',(#26),#266,.T.);
+#294=ADVANCED_FACE('',(#27),#267,.F.);
+#295=ADVANCED_FACE('',(#28),#268,.F.);
+#296=ADVANCED_FACE('',(#29),#269,.F.);
+#297=ADVANCED_FACE('',(#30),#270,.F.);
+#298=ADVANCED_FACE('',(#31),#271,.F.);
+#299=ADVANCED_FACE('',(#32),#272,.F.);
+#300=ADVANCED_FACE('',(#33),#273,.T.);
+#301=CLOSED_SHELL('',(#283,#284,#285,#286,#287,#288));
+#302=CLOSED_SHELL('',(#289,#290,#291,#292,#293,#294));
+#303=CLOSED_SHELL('',(#295,#296,#297,#298,#299,#300));
+#304=DERIVED_UNIT_ELEMENT(#306,1.);
+#305=DERIVED_UNIT_ELEMENT(#499,3.);
+#306=(
+MASS_UNIT()
+NAMED_UNIT(*)
+SI_UNIT($,.GRAM.)
+);
+#307=DERIVED_UNIT((#304,#305));
+#308=MEASURE_REPRESENTATION_ITEM('density measure',
+POSITIVE_RATIO_MEASURE(1.),#307);
+#309=PROPERTY_DEFINITION_REPRESENTATION(#314,#311);
+#310=PROPERTY_DEFINITION_REPRESENTATION(#315,#312);
+#311=REPRESENTATION('material name',(#313),#496);
+#312=REPRESENTATION('density',(#308),#496);
+#313=DESCRIPTIVE_REPRESENTATION_ITEM('\X2\4E00822C\X0\','\X2\4E00822C\X0\');
+#314=PROPERTY_DEFINITION('material property','material name',#506);
+#315=PROPERTY_DEFINITION('material property','density of part',#506);
+#316=DATE_TIME_ROLE('creation_date');
+#317=APPLIED_DATE_AND_TIME_ASSIGNMENT(#318,#316,(#506));
+#318=DATE_AND_TIME(#319,#320);
+#319=CALENDAR_DATE(2022,10,5);
+#320=LOCAL_TIME(0,0,0.,#321);
+#321=COORDINATED_UNIVERSAL_TIME_OFFSET(0,0,.BEHIND.);
+#322=AXIS2_PLACEMENT_3D('placement',#415,#341,#342);
+#323=AXIS2_PLACEMENT_3D('',#416,#343,#344);
+#324=AXIS2_PLACEMENT_3D('',#425,#349,#350);
+#325=AXIS2_PLACEMENT_3D('',#431,#354,#355);
+#326=AXIS2_PLACEMENT_3D('',#437,#359,#360);
+#327=AXIS2_PLACEMENT_3D('',#440,#363,#364);
+#328=AXIS2_PLACEMENT_3D('',#441,#365,#366);
+#329=AXIS2_PLACEMENT_3D('',#442,#367,#368);
+#330=AXIS2_PLACEMENT_3D('',#451,#373,#374);
+#331=AXIS2_PLACEMENT_3D('',#457,#378,#379);
+#332=AXIS2_PLACEMENT_3D('',#463,#383,#384);
+#333=AXIS2_PLACEMENT_3D('',#466,#387,#388);
+#334=AXIS2_PLACEMENT_3D('',#467,#389,#390);
+#335=AXIS2_PLACEMENT_3D('',#468,#391,#392);
+#336=AXIS2_PLACEMENT_3D('',#477,#397,#398);
+#337=AXIS2_PLACEMENT_3D('',#483,#402,#403);
+#338=AXIS2_PLACEMENT_3D('',#489,#407,#408);
+#339=AXIS2_PLACEMENT_3D('',#492,#411,#412);
+#340=AXIS2_PLACEMENT_3D('',#493,#413,#414);
+#341=DIRECTION('axis',(0.,0.,1.));
+#342=DIRECTION('refdir',(1.,0.,0.));
+#343=DIRECTION('center_axis',(0.,-1.,0.));
+#344=DIRECTION('ref_axis',(1.,0.,0.));
+#345=DIRECTION('',(1.,0.,0.));
+#346=DIRECTION('',(0.,0.,1.));
+#347=DIRECTION('',(1.,0.,0.));
+#348=DIRECTION('',(0.,0.,1.));
+#349=DIRECTION('center_axis',(-1.,0.,0.));
+#350=DIRECTION('ref_axis',(0.,-1.,0.));
+#351=DIRECTION('',(0.,-1.,0.));
+#352=DIRECTION('',(0.,-1.,0.));
+#353=DIRECTION('',(0.,0.,1.));
+#354=DIRECTION('center_axis',(0.,1.,0.));
+#355=DIRECTION('ref_axis',(-1.,0.,0.));
+#356=DIRECTION('',(-1.,0.,0.));
+#357=DIRECTION('',(-1.,0.,0.));
+#358=DIRECTION('',(0.,0.,1.));
+#359=DIRECTION('center_axis',(1.,0.,0.));
+#360=DIRECTION('ref_axis',(0.,1.,0.));
+#361=DIRECTION('',(0.,1.,0.));
+#362=DIRECTION('',(0.,1.,0.));
+#363=DIRECTION('center_axis',(0.,0.,1.));
+#364=DIRECTION('ref_axis',(1.,0.,0.));
+#365=DIRECTION('center_axis',(0.,0.,1.));
+#366=DIRECTION('ref_axis',(1.,0.,0.));
+#367=DIRECTION('center_axis',(0.,-1.,0.));
+#368=DIRECTION('ref_axis',(0.,0.,-1.));
+#369=DIRECTION('',(0.,0.,-1.));
+#370=DIRECTION('',(1.,0.,0.));
+#371=DIRECTION('',(0.,0.,-1.));
+#372=DIRECTION('',(1.,0.,0.));
+#373=DIRECTION('center_axis',(0.,0.,1.));
+#374=DIRECTION('ref_axis',(0.,-1.,0.));
+#375=DIRECTION('',(0.,-1.,0.));
+#376=DIRECTION('',(0.,-1.,0.));
+#377=DIRECTION('',(1.,0.,0.));
+#378=DIRECTION('center_axis',(0.,1.,0.));
+#379=DIRECTION('ref_axis',(0.,0.,1.));
+#380=DIRECTION('',(0.,0.,1.));
+#381=DIRECTION('',(0.,0.,1.));
+#382=DIRECTION('',(1.,0.,0.));
+#383=DIRECTION('center_axis',(0.,0.,-1.));
+#384=DIRECTION('ref_axis',(0.,1.,0.));
+#385=DIRECTION('',(0.,1.,0.));
+#386=DIRECTION('',(0.,1.,0.));
+#387=DIRECTION('center_axis',(1.,0.,0.));
+#388=DIRECTION('ref_axis',(0.,0.,-1.));
+#389=DIRECTION('center_axis',(1.,0.,0.));
+#390=DIRECTION('ref_axis',(0.,0.,-1.));
+#391=DIRECTION('center_axis',(0.,1.,0.));
+#392=DIRECTION('ref_axis',(0.,0.,-1.));
+#393=DIRECTION('',(0.,0.,-1.));
+#394=DIRECTION('',(-1.,0.,0.));
+#395=DIRECTION('',(0.,0.,-1.));
+#396=DIRECTION('',(-1.,0.,0.));
+#397=DIRECTION('center_axis',(0.,0.,-1.));
+#398=DIRECTION('ref_axis',(0.,-1.,0.));
+#399=DIRECTION('',(0.,-1.,0.));
+#400=DIRECTION('',(-1.,0.,0.));
+#401=DIRECTION('',(0.,-1.,0.));
+#402=DIRECTION('center_axis',(0.,-1.,0.));
+#403=DIRECTION('ref_axis',(0.,0.,1.));
+#404=DIRECTION('',(0.,0.,1.));
+#405=DIRECTION('',(-1.,0.,0.));
+#406=DIRECTION('',(0.,0.,1.));
+#407=DIRECTION('center_axis',(0.,0.,1.));
+#408=DIRECTION('ref_axis',(0.,1.,0.));
+#409=DIRECTION('',(0.,1.,0.));
+#410=DIRECTION('',(0.,1.,0.));
+#411=DIRECTION('center_axis',(1.,0.,0.));
+#412=DIRECTION('ref_axis',(0.,0.,-1.));
+#413=DIRECTION('center_axis',(1.,0.,0.));
+#414=DIRECTION('ref_axis',(0.,0.,-1.));
+#415=CARTESIAN_POINT('',(0.,0.,0.));
+#416=CARTESIAN_POINT('Origin',(-0.45,-0.4,0.));
+#417=CARTESIAN_POINT('',(-0.45,-0.4,0.));
+#418=CARTESIAN_POINT('',(0.45,-0.4,0.));
+#419=CARTESIAN_POINT('',(-0.45,-0.4,0.));
+#420=CARTESIAN_POINT('',(0.45,-0.4,0.9));
+#421=CARTESIAN_POINT('',(0.45,-0.4,0.));
+#422=CARTESIAN_POINT('',(-0.45,-0.4,0.9));
+#423=CARTESIAN_POINT('',(-0.45,-0.4,0.9));
+#424=CARTESIAN_POINT('',(-0.45,-0.4,0.));
+#425=CARTESIAN_POINT('Origin',(-0.45,0.4,0.));
+#426=CARTESIAN_POINT('',(-0.45,0.4,0.));
+#427=CARTESIAN_POINT('',(-0.45,0.4,0.));
+#428=CARTESIAN_POINT('',(-0.45,0.4,0.9));
+#429=CARTESIAN_POINT('',(-0.45,0.4,0.9));
+#430=CARTESIAN_POINT('',(-0.45,0.4,0.));
+#431=CARTESIAN_POINT('Origin',(0.45,0.4,0.));
+#432=CARTESIAN_POINT('',(0.45,0.4,0.));
+#433=CARTESIAN_POINT('',(0.45,0.4,0.));
+#434=CARTESIAN_POINT('',(0.45,0.4,0.9));
+#435=CARTESIAN_POINT('',(0.45,0.4,0.9));
+#436=CARTESIAN_POINT('',(0.45,0.4,0.));
+#437=CARTESIAN_POINT('Origin',(0.45,-0.4,0.));
+#438=CARTESIAN_POINT('',(0.45,-0.4,0.));
+#439=CARTESIAN_POINT('',(0.45,-0.4,0.9));
+#440=CARTESIAN_POINT('Origin',(0.,0.,0.9));
+#441=CARTESIAN_POINT('Origin',(0.,0.,0.));
+#442=CARTESIAN_POINT('Origin',(0.45,-0.4,0.9));
+#443=CARTESIAN_POINT('',(0.45,-0.4,0.9));
+#444=CARTESIAN_POINT('',(0.45,-0.4,0.));
+#445=CARTESIAN_POINT('',(0.45,-0.4,0.9));
+#446=CARTESIAN_POINT('',(0.8,-0.4,0.));
+#447=CARTESIAN_POINT('',(0.45,-0.4,0.));
+#448=CARTESIAN_POINT('',(0.8,-0.4,0.9));
+#449=CARTESIAN_POINT('',(0.8,-0.4,0.9));
+#450=CARTESIAN_POINT('',(0.45,-0.4,0.9));
+#451=CARTESIAN_POINT('Origin',(0.45,0.4,0.9));
+#452=CARTESIAN_POINT('',(0.45,0.4,0.9));
+#453=CARTESIAN_POINT('',(0.45,0.4,0.9));
+#454=CARTESIAN_POINT('',(0.8,0.4,0.9));
+#455=CARTESIAN_POINT('',(0.8,0.4,0.9));
+#456=CARTESIAN_POINT('',(0.45,0.4,0.9));
+#457=CARTESIAN_POINT('Origin',(0.45,0.4,0.));
+#458=CARTESIAN_POINT('',(0.45,0.4,0.));
+#459=CARTESIAN_POINT('',(0.45,0.4,0.));
+#460=CARTESIAN_POINT('',(0.8,0.4,0.));
+#461=CARTESIAN_POINT('',(0.8,0.4,0.));
+#462=CARTESIAN_POINT('',(0.45,0.4,0.));
+#463=CARTESIAN_POINT('Origin',(0.45,-0.4,0.));
+#464=CARTESIAN_POINT('',(0.45,-0.4,0.));
+#465=CARTESIAN_POINT('',(0.8,-0.4,0.));
+#466=CARTESIAN_POINT('Origin',(0.8,0.,0.45));
+#467=CARTESIAN_POINT('Origin',(0.45,0.,0.45));
+#468=CARTESIAN_POINT('Origin',(-0.45,-0.4,0.9));
+#469=CARTESIAN_POINT('',(-0.45,-0.4,0.9));
+#470=CARTESIAN_POINT('',(-0.45,-0.4,0.));
+#471=CARTESIAN_POINT('',(-0.45,-0.4,0.9));
+#472=CARTESIAN_POINT('',(-0.8,-0.4,0.9));
+#473=CARTESIAN_POINT('',(-0.45,-0.4,0.9));
+#474=CARTESIAN_POINT('',(-0.8,-0.4,0.));
+#475=CARTESIAN_POINT('',(-0.8,-0.4,0.9));
+#476=CARTESIAN_POINT('',(-0.45,-0.4,0.));
+#477=CARTESIAN_POINT('Origin',(-0.45,0.4,0.9));
+#478=CARTESIAN_POINT('',(-0.45,0.4,0.9));
+#479=CARTESIAN_POINT('',(-0.45,0.4,0.9));
+#480=CARTESIAN_POINT('',(-0.8,0.4,0.9));
+#481=CARTESIAN_POINT('',(-0.45,0.4,0.9));
+#482=CARTESIAN_POINT('',(-0.8,0.4,0.9));
+#483=CARTESIAN_POINT('Origin',(-0.45,0.4,0.));
+#484=CARTESIAN_POINT('',(-0.45,0.4,0.));
+#485=CARTESIAN_POINT('',(-0.45,0.4,0.));
+#486=CARTESIAN_POINT('',(-0.8,0.4,0.));
+#487=CARTESIAN_POINT('',(-0.45,0.4,0.));
+#488=CARTESIAN_POINT('',(-0.8,0.4,0.));
+#489=CARTESIAN_POINT('Origin',(-0.45,-0.4,0.));
+#490=CARTESIAN_POINT('',(-0.45,-0.4,0.));
+#491=CARTESIAN_POINT('',(-0.8,-0.4,0.));
+#492=CARTESIAN_POINT('Origin',(-0.8,0.,0.45));
+#493=CARTESIAN_POINT('Origin',(-0.45,0.,0.45));
+#494=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#498,
+'DISTANCE_ACCURACY_VALUE',
+'Maximum model space distance between geometric entities at asserted c
+onnectivities');
+#495=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#498,
+'DISTANCE_ACCURACY_VALUE',
+'Maximum model space distance between geometric entities at asserted c
+onnectivities');
+#496=(
+GEOMETRIC_REPRESENTATION_CONTEXT(3)
+GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#494))
+GLOBAL_UNIT_ASSIGNED_CONTEXT((#498,#500,#501))
+REPRESENTATION_CONTEXT('','3D')
+);
+#497=(
+GEOMETRIC_REPRESENTATION_CONTEXT(3)
+GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#495))
+GLOBAL_UNIT_ASSIGNED_CONTEXT((#498,#500,#501))
+REPRESENTATION_CONTEXT('','3D')
+);
+#498=(
+LENGTH_UNIT()
+NAMED_UNIT(*)
+SI_UNIT(.MILLI.,.METRE.)
+);
+#499=(
+LENGTH_UNIT()
+NAMED_UNIT(*)
+SI_UNIT(.CENTI.,.METRE.)
+);
+#500=(
+NAMED_UNIT(*)
+PLANE_ANGLE_UNIT()
+SI_UNIT($,.RADIAN.)
+);
+#501=(
+NAMED_UNIT(*)
+SI_UNIT($,.STERADIAN.)
+SOLID_ANGLE_UNIT()
+);
+#502=SHAPE_DEFINITION_REPRESENTATION(#503,#504);
+#503=PRODUCT_DEFINITION_SHAPE('',$,#506);
+#504=SHAPE_REPRESENTATION('',(#322),#496);
+#505=PRODUCT_DEFINITION_CONTEXT('part definition',#510,'design');
+#506=PRODUCT_DEFINITION('s1_1608_90','s1_1608_90',#507,#505);
+#507=PRODUCT_DEFINITION_FORMATION('',$,#512);
+#508=PRODUCT_RELATED_PRODUCT_CATEGORY('s1_1608_90','s1_1608_90',(#512));
+#509=APPLICATION_PROTOCOL_DEFINITION('international standard',
+'automotive_design',2009,#510);
+#510=APPLICATION_CONTEXT(
+'Core Data for Automotive Mechanical Design Process');
+#511=PRODUCT_CONTEXT('part definition',#510,'mechanical');
+#512=PRODUCT('s1_1608_90','s1_1608_90',$,(#511));
+#513=PRESENTATION_STYLE_ASSIGNMENT((#515));
+#514=PRESENTATION_STYLE_ASSIGNMENT((#516));
+#515=SURFACE_STYLE_USAGE(.BOTH.,#521);
+#516=SURFACE_STYLE_USAGE(.BOTH.,#522);
+#517=SURFACE_STYLE_RENDERING_WITH_PROPERTIES($,#529,(#519));
+#518=SURFACE_STYLE_RENDERING_WITH_PROPERTIES($,#530,(#520));
+#519=SURFACE_STYLE_TRANSPARENT(0.);
+#520=SURFACE_STYLE_TRANSPARENT(0.);
+#521=SURFACE_SIDE_STYLE('',(#523,#517));
+#522=SURFACE_SIDE_STYLE('',(#524,#518));
+#523=SURFACE_STYLE_FILL_AREA(#525);
+#524=SURFACE_STYLE_FILL_AREA(#526);
+#525=FILL_AREA_STYLE('',(#527));
+#526=FILL_AREA_STYLE('',(#528));
+#527=FILL_AREA_STYLE_COLOUR('',#529);
+#528=FILL_AREA_STYLE_COLOUR('',#530);
+#529=COLOUR_RGB('',0.749019607843137,0.749019607843137,0.749019607843137);
+#530=COLOUR_RGB('',0.250980392156863,0.250980392156863,0.250980392156863);
+ENDSEC;
+END-ISO-10303-21;
verification.jsonadded+326
@@ -0,0 +1,326 @@+{+ "schema": "adom/verification@1",+ "part": "MSASH168SC7224KTCA01",+ "variants": [],+ "entries": [+  {+   "date": "2026-10-21",+   "by": {+    "name": "Claude (AI agent) for John Lauer",+    "handle": "john"+   },+   "status": "verified",+   "title": "Taiyo Yuden 3D model checked against the printed dimensions",+   "scope": [+    "3d-model"+   ],+   "variants": [+    "*"+   ],+   "checks": [+    {+     "text": "L: model 1.600 mm, maker 1.50 to 1.70 mm",+     "result": "pass"+    },+    {+     "text": "W: model 0.800 mm, maker 0.70 to 0.90 mm",+     "result": "pass"+    },+    {+     "text": "T/H: model 0.900 mm, maker 0.70 to 0.90 mm",+     "result": "pass"+    },+    {+     "text": "e (terminal band), top: model 0.350 mm, maker 0.10 to 0.60 mm",+     "result": "pass"+    },+    {+     "text": "e (terminal band), bottom: model 0.350 mm, maker 0.10 to 0.60 mm",+     "result": "pass"+    },+    {+     "text": "the maker's STEP is 0.90 mm thick: the upper limit of T 0.8 +/-0.10 mm and the characteristics sheet's 't = 0.9 mm max'",+     "result": "note"+    },+    {+     "text": "Z-up, mm, seated on z = 0, centred on the footprint origin, long axis on X, as supplied: no transform applied, bytes unchanged",+     "result": "pass"+    },+    {+     "text": "body colour is the maker's (dark grey); the product photo on the characteristics sheet shows a brown body; colours were not changed",+     "result": "note"+    }+   ],+   "evidence": [+    {+     "label": "overlay (top, bottom, side, end at true scale)",+     "href": "docs/verify/msash168sc7224ktca01-overlay.png"+    },+    {+     "label": "numbers",+     "href": "docs/verify/msash168sc7224ktca01-check.json"+    },+    {+     "label": "catalog p.5 dimensions",+     "href": "docs/figures/ty-cat-p5-dimensions.png"+    }+   ],+   "files": {+    "MSASH168SC7224KTCA01.step": "775241ca92746a818b51e2fcfdd4ede8e4388b1d87ce8993ebef70737de9c464",+    "vendor/MSASH168SC7224KTCA01-taiyo-yuden-original.step": "775241ca92746a818b51e2fcfdd4ede8e4388b1d87ce8993ebef70737de9c464"+   }+  },+  {+   "date": "2026-10-21",+   "by": {+    "name": "Claude (AI agent) for John Lauer",+    "handle": "john"+   },+   "status": "verified",+   "title": "Footprint compared with Taiyo Yuden's land pattern (KiCad pads larger, kept)",+   "scope": [+    "footprint"+   ],+   "variants": [+    "*"+   ],+   "checks": [+    {+     "text": "gap between lands: KiCad 0.65 mm, Taiyo Yuden 0.80 mm (-0.15 mm)",+     "result": "note"+    },+    {+     "text": "land length: KiCad 0.90 mm, Taiyo Yuden 0.60 mm (+0.30 mm)",+     "result": "note"+    },+    {+     "text": "land width: KiCad 0.95 mm, Taiyo Yuden 0.80 mm (+0.15 mm)",+     "result": "note"+    },+    {+     "text": "overall length: KiCad 2.45 mm, Taiyo Yuden 2.00 mm (+0.45 mm)",+     "result": "note"+    },+    {+     "text": "KiCad's pads contain the maker's land on every side; KiCad footprint kept (renamed, copper unchanged)",+     "result": "pass"+    }+   ],+   "evidence": [+    {+     "label": "comparison drawing",+     "href": "land-pattern/land-pattern.png"+    },+    {+     "label": "numbers",+     "href": "land-pattern/land-check.json"+    },+    {+     "label": "write-up",+     "href": "land-pattern/README.md"+    },+    {+     "label": "maker DXF",+     "href": "provenance/manufacturer/MSASH168SC7224KTCA01-land.dxf"+    }+   ],+   "files": {+    "C_0603_1608Metric_MSASH168SC7224KTCA01.kicad_mod": "90df1094797221e8a48df7e5749b1252256b119c89bf58f2bc25e059e5fbd0c5",+    "provenance/manufacturer/MSASH168SC7224KTCA01-land.dxf": "64a4a3239ce05825e7eec5a0dfb1bbe55d1619c504b5547d4cf21806f559c73c"+   }+  },+  {+   "date": "2026-10-21",+   "by": {+    "name": "Claude (AI agent) for John Lauer",+    "handle": "john"+   },+   "status": "verified",+   "title": "Marking: the real part is unmarked",+   "scope": [+    "3d-model",+    "marking"+   ],+   "variants": [+    "*"+   ],+   "checks": [+    {+     "text": "Taiyo Yuden specifies no marking for this part: the catalog, the characteristics sheet and the product page have no marking section, and the maker's 3D model has a plain body (c_mlcc_S_e-E14R02, 22U2A07 and the product page, searched 2026-10-21)",+     "result": "pass"+    },+    {+     "text": "no AI-added part-number etch on any model (a 1.6 x 0.8 mm top has no room for a readable 20-character MPN)",+     "result": "pass"+    }+   ],+   "evidence": [],+   "files": {+    "MSASH168SC7224KTCA01.step": "775241ca92746a818b51e2fcfdd4ede8e4388b1d87ce8993ebef70737de9c464"+   }+  },+  {+   "date": "2026-10-21",+   "by": {+    "name": "Claude (AI agent) for John Lauer",+    "handle": "john"+   },+   "status": "verified",+   "title": "Board-use LOD GLBs are clean and share the STEP pose",+   "scope": [+    "lod"+   ],+   "variants": [+    "*"+   ],+   "checks": [+    {+     "text": "four levels written, read back, bounds equal the STEP (Z-up, metres, seat z = 0)",+     "result": "pass"+    },+    {+     "text": "no footprint, pad outline, label or silkscreen helpers; terminals present at every level",+     "result": "pass"+    },+    {+     "text": "previews looked at by the AI agent, not yet by a person",+     "result": "note"+    }+   ],+   "evidence": [+    {+     "label": "manifest",+     "href": "lod/manifest.json"+    }+   ],+   "files": {+    "lod/high.glb": "f7007fb8d6baf6e4a61feaa2ff9d8f4a045aebec9fd504223d7eb3138b996d9b",+    "lod/medium.glb": "f7007fb8d6baf6e4a61feaa2ff9d8f4a045aebec9fd504223d7eb3138b996d9b",+    "lod/low.glb": "f7007fb8d6baf6e4a61feaa2ff9d8f4a045aebec9fd504223d7eb3138b996d9b",+    "lod/super-low.glb": "35fc4f726eebfcde50ac08b4af2e513ae795801ebc9b8222fa3c0177491e3d94"+   }+  },+  {+   "date": "2026-10-21",+   "by": {+    "name": "Claude (AI agent) for John Lauer",+    "handle": "john"+   },+   "status": "verified",+   "title": "Pin 1, polarity and symbol",+   "scope": [+    "footprint",+    "3d-model",+    "symbol"+   ],+   "variants": [+    "*"+   ],+   "checks": [+    {+     "text": "non-polar two-terminal capacitor: pads 1 and 2 are interchangeable; symbol pins 1 and 2 map to pads 1 and 2",+     "result": "pass"+    },+    {+     "text": "symbol pin ends at (0, +2.54) and (0, -2.54) mm, on the 2.54 mm grid",+     "result": "pass"+    },+    {+     "text": "symbol fields MPN, Manufacturer, Mouser, DigiKey, Adom Wiki, Datasheet and Footprint filled; LCSC left empty because JLCPCB/LCSC list no part (2026-10-21)",+     "result": "note"+    },+    {+     "text": "model terminals sit on the footprint pads (both centred on the origin, long axis on X)",+     "result": "pass"+    }+   ],+   "evidence": [],+   "files": {+    "C_0603_1608Metric_MSASH168SC7224KTCA01.kicad_mod": "90df1094797221e8a48df7e5749b1252256b119c89bf58f2bc25e059e5fbd0c5",+    "MSASH168SC7224KTCA01.kicad_sym": "09f612af51251549ef0fa928c79d65ce3a817d8f9e5500392f4b6f7331ff57c4",+    "MSASH168SC7224KTCA01.step": "775241ca92746a818b51e2fcfdd4ede8e4388b1d87ce8993ebef70737de9c464"+   }+  },+  {+   "date": "2026-10-21",+   "by": {+    "name": "Claude (AI agent) for John Lauer",+    "handle": "john"+   },+   "status": "verified",+   "title": "Hero GLB built to the adom-hero standard",+   "scope": [+    "3d-model",+    "hero"+   ],+   "variants": [+    "*"+   ],+   "checks": [+    {+     "text": "built with component-hero hero_glb.py from package-reference.glb, the footprint and page.json; alignment check OK",+     "result": "pass"+    },+    {+     "text": "teal dashed pad outlines (alpha 0.5), silkscreen (alpha 0.3) and pad-number labels 1 and 2 (alpha 0.5); no pin-1 dot because the part is non-polar",+     "result": "pass"+    },+    {+     "text": "preview looked at by the AI agent; the live wiki viewer still needs a person's look",+     "result": "note"+    }+   ],+   "evidence": [+    {+     "label": "preview",+     "href": "docs/verify/hero-preview.png"+    },+    {+     "label": "overlay record",+     "href": "msash168sc7224ktca01-hero.overlay.json"+    }+   ],+   "files": {+    "msash168sc7224ktca01-hero.glb": "29d9f66eecb8078a420625d7126a4c9e065bcb05fa72852f19287ce4f938bbcd",+    "package-reference.glb": "f3518b6ae5e03a7f56037720332e9575b9b6583f3dce898f471279bec5357e15"+   }+  },+  {+   "date": "2026-10-21",+   "by": {+    "name": "Claude (AI agent) for John Lauer",+    "handle": "john"+   },+   "status": "verified",+   "title": "Fusion and Altium libraries generated from the KiCad symbol and footprint",+   "scope": [+    "symbol",+    "footprint"+   ],+   "variants": [+    "*"+   ],+   "checks": [+    {+     "text": "adom-lbr generate --part-metadata page.json: .lbr lint passed",+     "result": "pass"+    },+    {+     "text": "adom-lbr import-kicad then assemble-altium --no-dedupe: native .SchLib and .PcbLib written, STEP body embedded",+     "result": "pass"+    },+    {+     "text": "not yet opened in Fusion or Altium (no desktop app used for this page)",+     "result": "note"+    }+   ],+   "evidence": [],+   "files": {+    "MSASH168SC7224KTCA01.lbr": "913dd1a8f70c958b690f61534cdae897bdd3fc2ddb3cb770292e6e92d5de82d8",+    "altium/MSASH168SC7224KTCA01.SchLib": "28a2a2fcfb26ac4b88606c153c95099835e182066a05ac664371864d1014f16a",+    "altium/MSASH168SC7224KTCA01.PcbLib": "eedb98c9ad22173166f19a2d6109048c47455628c8c0f244fcb7192b74de89d7",+    "MSASH168SC7224KTCA01.adom-lbr.json": "5710e7266ca1372a66413d6cfe92dc1e6b58898802fd5528ad5a65e96d466cf7"+   }+  }+ ]+}\ No newline at end of file