← Commit history

Add Fusion 24-net crossover routing, shared vias, and captioned demo

John Lauer ·b3f148db64 ·1mo ago ·parent cefe949
37 files changed +9697−11
.gitignore+4
@@ -11,3 +11,7 @@ rust/target/  # Full window-capture originals stay local; the share copy is versioned. demo/routing/videos/window-*.mp4++# Preserve raw crossover take and full call log locally; publish compressed evidence.+demo/routing/crossbar/take-*/window-*.mp4+demo/routing/crossbar/take-*/calls.json
BRIDGE_VERSION+1−1
@@ -1 +1 @@-1.10.0-dev.routing.1\ No newline at end of file+1.10.0-dev.routing.2\ No newline at end of file
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "fusion360",   "displayName": "Autodesk Fusion 360",-  "version": "1.10.0-dev.routing.1",+  "version": "1.10.0-dev.routing.2",   "description": "Drive Autodesk Fusion 360 from the cloud: launch Fusion, electronics board layout, design rules, exports (STEP/IGES/STL/3MF/USDZ/OBJ/DXF/DWG/Gerbers/BOM/CPL), fast APS server-indexed cloud search plus browse/recent/file-info/versions, cloud file download/upload and folder creation, and in-app parametric modeling (fusion_run_modeling_script). Never-charge: APS calls are capped to the free tier.",   "homepage": "https://wiki.adom.inc/adom/fusion-bridge",   "author": "Adom Inc.",
demo/routing/README.md+2−1
@@ -2,7 +2,8 @@  Development branch `feature/per-net-trace-routing`, based on wiki `adom/fusion-bridge` commit `3e27d7f04743fef7a864bbc84bc0abc7bbabbe86`-(version 1.9.366). Runtime version: `1.10.0-dev.routing.1`.+(version 1.9.366). Initial runtime version: `1.10.0-dev.routing.1`.+The 24-net crossover extension uses `1.10.0-dev.routing.2`.  This adds three bridge verbs that edit and inspect the **live Fusion board**. The caller supplies the paths. This is explicit copper creation, not an
demo/routing/crossbar/README.mdadded+82
@@ -0,0 +1,82 @@+# Fusion 24-net crossover++This is the Fusion counterpart of the second KiCad Astra video. It uses a+constructed test fixture and freshly calculated waypoints, with no Freerouting+or other external router. KiCad files are read as a reference and remain intact.++For input `i = 0..23`, calculate `j = (7*i) mod 24`, row `y = 52 + 2.54*i`+and column `x = 65 + 2.54*j` mm. J1 at x=45 feeds the selected J2 pad at y=35+and branches to J3 at y=125. Top copper carries horizontal rows; bottom copper+carries vertical columns. Two vias per net connect the top SMD endpoints and+bottom routing. The branch's J3 pad is through-hole. Width is 0.30 mm, via+outer diameter 0.60 mm, drill 0.30 mm; pads are 1.50 mm with 2.54 mm pitch.+Fusion's positive Y points upward, so this exact numeric geometry appears+vertically flipped relative to KiCad's canvas.++`make_crossbar.py` authors the separate unrouted Fusion/EAGLE board and plan.+`record_crossbar.py` reads the active board, dry-runs all net plans, records the+actual Fusion window, and commits each trace/via with consecutive revisions.+It verifies the copper after every call and invokes native DRC after each net.+Timestamps and every response are retained in `take-01/calls.json`.++The bridge extension in `1.10.0-dev.routing.2` deduplicates identical planned+vias shared by multiple branches of a net. Its regression test adds all 24+nets to the geometry model in sequence and checks 120 segments and 48 vias.+This conservative preflight is not native DRC; the live result is recorded+separately and intermediate boards can still have airwires.++```sh+python3 demo/routing/crossbar/make_crossbar.py+python3 -m unittest discover -s tests -p test_routing.py -v+# Stage/open the new board and resolve the live Fusion HWND first.+python3 demo/routing/crossbar/record_crossbar.py --hwnd <hwnd> \+  --take demo/routing/crossbar/new-take+```++## Measured live result — AdomLapper, 2026-09-05++The native run completed with 24 connected nets, 72 pads, 120 trace segments+and 48 through vias. Autodesk DRC reported zero errors, zero warnings and zero+airwires. All 168 mutations passed copper read-back; the revision was updated+after every edit. All 24 net-level native DRC checks reported no physical+violations. `take-01/final.json` contains the measured result. The complete+request/response log is preserved locally as `calls.json` and on the branch as+`calls.json.gz`. The initial six-net demo and all KiCad files were preserved.++Routed `.brd` and `.fbrd` exports are in `take-01/` and on Windows under+`C:/Users/john/Documents/fusion-crossbar-dev/`. Fusion remains open on the+completed board. The development runtime remains pinned at+`1.10.0-dev.routing.2`; the previous executable was backed up (see `install.json`).++The raw native AB recording is preserved locally under `take-01/window-*.mp4`.+It contains 5,800 frames (193.333 seconds at 30 fps); the recorder reports+206.642 seconds of wall time. These are separate measurements. The edited+video accelerates the retained recorded frames at 3x, not a claim of elapsed+end-to-end routing time. `find_action.py` detects copper changes within the+board, trims idle intervals with handles around changes, and retains the final+DRC view. Its boundaries are visually reviewed before delivery.++## Delivered video++`fusion-crossbar-24-3x.mp4` is 41.667 seconds, H.264/yuv420p, 1920x1080 at+30 fps, with no audio. It retains 3,299 source frames at 3x and adds a+five-second final hold. Roughly 83.37 seconds of recorded waits were omitted.+The persistent speed/edit labels and captions explain actual Fusion verbs,+the formula, layer assignment and measured native DRC. The `.ass` and+`.edit.json` contain caption timing and exact selected source frame ranges.++Full decode, constant source frame rate, output dimensions, duration and the+168-edit revision chain passed verification. Initial, sequential, transition+and final frames were visually inspected. See `video-verification.json`.++Delivered to Windows and verified visibly playing in Media Player:+`C:/Users/john/Documents/Adom Routing Demos/fusion-crossbar-24-3x.mp4`.++```sh+python3 demo/routing/crossbar/find_action.py <raw-window-mp4>+python3 demo/routing/crossbar/render_crossbar.py <take-directory>+```++The edit uses frame-index ranges after verifying constant 30 fps. This avoids+floating-point boundary differences between FFprobe timestamps and FFmpeg's+select expression. A variable-rate recording requires timestamp-aware editing.
demo/routing/crossbar/delivery.jsonadded+12
@@ -0,0 +1,12 @@+{+  "_hint": "Wrote 1 file(s) to the LAPTOP (Windows host), NOT to your container/WSL. Folder: C:/Users/john/Documents/Adom Routing Demos  \u00b7  exact paths are in destinationPaths[]. VERIFY: adom-bridge list_dir '{\"path\":\"C:/Users/john/Documents/Adom Routing Demos\"}'   READ ONE BACK: adom-bridge pull_file '{\"path\":\"C:/Users/john/Documents/Adom Routing Demos/fusion-crossbar-24-3x.mp4\"}'. To control where files land, pass dest:'C:/abs/path' (absolute) or destinationFolder:'subdir' (relative to the laptop Downloads default). NOTE: send_files only COPIES bytes \u2014 it does NOT install or register a bridge. To make a bridge appear (capsule in the ab GUI + verbs routable), use bridge_install '{\"manifestUrl\":\"https://wiki.adom.inc/...<bridge>-manifest.json\"}', then confirm with bridge_list.",+  "destinationPaths": [+    "C:/Users/john/Documents/Adom Routing Demos/fusion-crossbar-24-3x.mp4"+  ],+  "durationMs": 43,+  "error": null,+  "filesReceived": 1,+  "savedToDir": "C:/Users/john/Documents/Adom Routing Demos",+  "status": "ok",+  "success": true+}
demo/routing/crossbar/final-frame.pngadded
⋯ 1 unchanged line ⋯
demo/routing/crossbar/find_action.pyadded+36
@@ -0,0 +1,36 @@+"""Find visible copper changes in the Fusion board, excluding surrounding UI."""+import argparse,json,subprocess+from pathlib import Path+import numpy as np+p=argparse.ArgumentParser();p.add_argument('source',type=Path);a=p.parse_args()+probe=json.loads(subprocess.check_output(['ffprobe','-v','error','-show_format','-show_streams','-of','json',str(a.source)]))+duration=float(probe['format']['duration'])+# Work at half the native width. This crop contains the board, not the DRC panel.+w,h=600,620+proc=subprocess.Popen(['ffmpeg','-v','error','-i',str(a.source),'-vf',f'fps=10,scale=1280:-2,crop={w}:{h}:220:130','-f','rawvideo','-pix_fmt','rgb24','-'],stdout=subprocess.PIPE)+prev=None;scores=[];events=[];i=0+while True:+    buf=proc.stdout.read(w*h*3)+    if not buf:break+    assert len(buf)==w*h*3+    frame=np.frombuffer(buf,np.uint8).reshape(h,w,3).astype(np.int16)+    colored=(frame.max(2)-frame.min(2)>60)&(frame.max(2)>70)+    if prev is not None:+        changed=(np.abs(frame-prev).max(2)>40)&(colored|oldcolored)+        score=int(changed.sum());scores.append([round(i/10,3),score])+        if score>=3 and i/10>.5:events.append(i/10)+    prev=frame;oldcolored=colored;i+=1+assert proc.wait()==0+ranges=[]+for t in events:+    lo=max(0,t-.25);hi=min(duration,t+.4)+    if ranges and lo<=ranges[-1][1]:ranges[-1][1]=hi+    else:ranges.append([lo,hi])+assert ranges+# Show a brief unrouted setup and retain the final clean DRC result for the hold.+ranges[0][0]=max(0,ranges[0][0]-.4)+ranges.append([max(ranges[-1][1],duration-.5),duration])+ranges=[r for r in ranges if r[1]>r[0]]+(a.source.parent/'motion-scores.json').write_text(json.dumps(scores)+'\n')+(a.source.parent/'action-ranges.json').write_text(json.dumps(ranges,indent=2)+'\n')+print({'sourceSeconds':duration,'events':len(events),'intervals':len(ranges),'keptSeconds':sum(b-a for a,b in ranges)})
demo/routing/crossbar/fusion-crossbar-24-3x.assadded+27
@@ -0,0 +1,27 @@+[Script Info]+ScriptType: v4.00++PlayResX: 1920+PlayResY: 1080+WrapStyle: 2+[V4+ Styles]+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding+Style: Main,Liberation Sans,34,&H00FFFFFF,&H00FFFFFF,&H00130F0A,&H00130F0A,0,0,0,0,100,100,0,0,1,1,0,2,30,30,22,1+[Events]+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text+Dialogue: 0,0:00:00.00,0:00:41.66,Main,,0,0,0,,{\an7\pos(34,16)\fs38\b1\c&H00E5CF65&}CODEX ASTRA IN ADOM HYDROGEN{\c&H00FFFFFF&}  /  24-NET CROSSOVER+Dialogue: 0,0:00:00.00,0:00:41.66,Main,,0,0,0,,{\an7\pos(1490,125)\fs48\b1\c&H00E5CF65&}3x SPEED+Dialogue: 0,0:00:00.00,0:00:41.66,Main,,0,0,0,,{\an7\pos(1490,197)\fs28}Native Fusion capture\NIdle waits trimmed+Dialogue: 0,0:00:00.00,0:00:41.66,Main,,0,0,0,,{\an7\pos(1490,305)\fs32\b1\c&H00E5CF65&}THE BOARD+Dialogue: 0,0:00:00.00,0:00:41.66,Main,,0,0,0,,{\an7\pos(1490,351)\fs27}24 nets / 72 pads\N120 trace segments\N48 through vias+Dialogue: 0,0:00:00.00,0:00:41.66,Main,,0,0,0,,{\an7\pos(1490,495)\fs32\b1\c&H00E5CF65&}THE CALCULATION+Dialogue: 0,0:00:00.00,0:00:41.66,Main,,0,0,0,,{\an7\pos(1490,541)\fs27}j = (7 x i) mod 24\N0.30 mm trace width\NExplicit Astra waypoints+Dialogue: 0,0:00:00.00,0:00:41.66,Main,,0,0,0,,{\an7\pos(1490,685)\fs32\b1\c&H00E5CF65&}RECORD + VERIFY+Dialogue: 0,0:00:00.00,0:00:41.66,Main,,0,0,0,,{\an7\pos(1490,731)\fs27}Native AB window capture\NFusion copper read-back\NAutodesk DRC result+Dialogue: 0,0:00:00.00,0:00:04.00,Main,,0,0,0,,{\an2\pos(960,1058)\fs34}Codex Astra calculates the 24-net crossover in Adom Hydrogen.+Dialogue: 0,0:00:04.00,0:00:08.00,Main,,0,0,0,,{\an2\pos(960,1058)\fs34}Output column j = (7 x i) mod 24. Rows and columns use 2.54 mm pitch.+Dialogue: 0,0:00:08.00,0:00:12.00,Main,,0,0,0,,{\an2\pos(960,1058)\fs34}Top copper carries rows; bottom copper carries columns.\NCrossings stay on separate layers. No Freerouting.+Dialogue: 0,0:00:12.00,0:00:16.00,Main,,0,0,0,,{\an2\pos(960,1058)\fs34}fusion_routing_state reads nets, pads and revision.\Nfusion_route_net dryRun checks explicit planned geometry.+Dialogue: 0,0:00:16.00,0:00:20.00,Main,,0,0,0,,{\an2\pos(960,1058)\fs34}fusion_route_net adds each trace and via through Adom Bridge.\NexpectedRevision guards edits; copper is read back after each call.+Dialogue: 0,0:00:20.00,0:00:36.66,Main,,0,0,0,,{\an2\pos(960,1058)\fs34}Each net branches to a third pad and uses two through vias.\NFusion recalculates connectivity as the copper appears.+Dialogue: 0,0:00:36.66,0:00:41.66,Main,,0,0,0,,{\an2\pos(960,1058)\fs34}fusion_routing_drc: 24 nets connected.\NNative Autodesk DRC: 0 errors / 0 warnings / 0 airwires.+Dialogue: 0,0:00:36.46,0:00:41.66,Main,,0,0,0,,{\an7\pos(1490,885)\fs23\c&H00B9B9B9&}Final frame held for reading
demo/routing/crossbar/fusion-crossbar-24-3x.edit.jsonadded+1297
@@ -0,0 +1,1297 @@+{+  "source": "demo/routing/crossbar/take-01/window-8916576-20260905-213451.mp4",+  "trimStartSeconds": 0,+  "trimEndSeconds": 193.33333333333334,+  "speed": 3,+  "holdSeconds": 5,+  "durationSeconds": 41.65555555555556,+  "captions": [+    [+      0,+      4,+      "Codex Astra calculates the 24-net crossover in Adom Hydrogen."+    ],+    [+      4,+      8,+      "Output column j = (7 x i) mod 24. Rows and columns use 2.54 mm pitch."+    ],+    [+      8,+      12,+      "Top copper carries rows; bottom copper carries columns.\\NCrossings stay on separate layers. No Freerouting."+    ],+    [+      12,+      16,+      "fusion_routing_state reads nets, pads and revision.\\Nfusion_route_net dryRun checks explicit planned geometry."+    ],+    [+      16,+      20,+      "fusion_route_net adds each trace and via through Adom Bridge.\\NexpectedRevision guards edits; copper is read back after each call."+    ],+    [+      20,+      36.65555555555556,+      "Each net branches to a third pad and uses two through vias.\\NFusion recalculates connectivity as the copper appears."+    ],+    [+      36.65555555555556,+      41.65555555555556,+      "fusion_routing_drc: 24 nets connected.\\NNative Autodesk DRC: 0 errors / 0 warnings / 0 airwires."+    ]+  ],+  "keptSourceRanges": [+    [+      0.9500000000000001,+      2.0+    ],+    [+      2.15,+      2.8+    ],+    [+      3.35,+      4.0+    ],+    [+      4.15,+      4.800000000000001+    ],+    [+      5.15,+      5.800000000000001+    ],+    [+      6.05,+      6.7+    ],+    [+      6.95,+      7.6000000000000005+    ],+    [+      8.25,+      8.9+    ],+    [+      9.35,+      10.0+    ],+    [+      11.35,+      12.0+    ],+    [+      12.35,+      13.0+    ],+    [+      13.25,+      13.9+    ],+    [+      14.15,+      14.8+    ],+    [+      15.75,+      16.4+    ],+    [+      16.65,+      17.299999999999997+    ],+    [+      18.35,+      19.0+    ],+    [+      19.45,+      20.099999999999998+    ],+    [+      20.35,+      21.0+    ],+    [+      21.35,+      22.0+    ],+    [+      22.85,+      23.5+    ],+    [+      23.65,+      24.299999999999997+    ],+    [+      25.75,+      26.4+    ],+    [+      26.75,+      27.4+    ],+    [+      27.65,+      28.299999999999997+    ],+    [+      28.65,+      29.299999999999997+    ],+    [+      30.15,+      30.799999999999997+    ],+    [+      31.05,+      31.7+    ],+    [+      32.05,+      32.699999999999996+    ],+    [+      33.05,+      33.699999999999996+    ],+    [+      34.05,+      34.699999999999996+    ],+    [+      34.85,+      35.5+    ],+    [+      35.85,+      36.5+    ],+    [+      37.45,+      38.1+    ],+    [+      38.35,+      39.0+    ],+    [+      40.25,+      40.9+    ],+    [+      42.25,+      42.9+    ],+    [+      43.15,+      43.8+    ],+    [+      44.85,+      45.5+    ],+    [+      45.65,+      46.3+    ],+    [+      47.75,+      48.4+    ],+    [+      48.55,+      49.199999999999996+    ],+    [+      49.65,+      51.1+    ],+    [+      51.35,+      52.699999999999996+    ],+    [+      53.15,+      54.1+    ],+    [+      55.15,+      59.199999999999996+    ],+    [+      60.05,+      60.699999999999996+    ],+    [+      60.95,+      61.699999999999996+    ],+    [+      62.95,+      63.6+    ],+    [+      64.15,+      64.80000000000001+    ],+    [+      65.15,+      65.80000000000001+    ],+    [+      66.05,+      66.7+    ],+    [+      67.45,+      68.10000000000001+    ],+    [+      68.45,+      69.10000000000001+    ],+    [+      70.45,+      71.10000000000001+    ],+    [+      71.45,+      72.10000000000001+    ],+    [+      72.35,+      73.0+    ],+    [+      73.35,+      74.0+    ],+    [+      75.05,+      75.7+    ],+    [+      76.05,+      76.7+    ],+    [+      77.05,+      77.7+    ],+    [+      77.95,+      78.60000000000001+    ],+    [+      78.95,+      79.60000000000001+    ],+    [+      79.85,+      80.5+    ],+    [+      80.85,+      81.5+    ],+    [+      82.35,+      83.0+    ],+    [+      83.35,+      84.0+    ],+    [+      84.35,+      85.0+    ],+    [+      85.35,+      86.0+    ],+    [+      86.45,+      87.10000000000001+    ],+    [+      87.55,+      88.4+    ],+    [+      88.65,+      89.30000000000001+    ],+    [+      90.55,+      91.2+    ],+    [+      91.55,+      92.2+    ],+    [+      92.65,+      93.30000000000001+    ],+    [+      93.45,+      94.10000000000001+    ],+    [+      94.65,+      95.30000000000001+    ],+    [+      95.75,+      96.4+    ],+    [+      96.75,+      98.10000000000001+    ],+    [+      98.45,+      99.10000000000001+    ],+    [+      99.45,+      100.10000000000001+    ],+    [+      100.55,+      101.2+    ],+    [+      101.65,+      102.30000000000001+    ],+    [+      102.65,+      103.30000000000001+    ],+    [+      103.65,+      104.30000000000001+    ],+    [+      104.75,+      105.4+    ],+    [+      106.45,+      107.10000000000001+    ],+    [+      107.45,+      108.10000000000001+    ],+    [+      108.65,+      109.30000000000001+    ],+    [+      109.65,+      110.30000000000001+    ],+    [+      110.65,+      111.30000000000001+    ],+    [+      111.55,+      112.2+    ],+    [+      112.55,+      113.2+    ],+    [+      114.25,+      114.9+    ],+    [+      115.35,+      116.0+    ],+    [+      116.45,+      117.10000000000001+    ],+    [+      117.45,+      118.10000000000001+    ],+    [+      118.55,+      119.2+    ],+    [+      119.55,+      120.2+    ],+    [+      120.65,+      121.30000000000001+    ],+    [+      122.35,+      123.0+    ],+    [+      123.35,+      124.0+    ],+    [+      124.55,+      125.2+    ],+    [+      125.55,+      126.2+    ],+    [+      126.65,+      127.30000000000001+    ],+    [+      127.75,+      128.4+    ],+    [+      128.75,+      129.4+    ],+    [+      130.55,+      131.20000000000002+    ],+    [+      131.45,+      132.1+    ],+    [+      132.45,+      133.1+    ],+    [+      133.55,+      134.20000000000002+    ],+    [+      134.85,+      135.5+    ],+    [+      136.15,+      136.8+    ],+    [+      137.15,+      137.8+    ],+    [+      138.85,+      139.5+    ],+    [+      139.95,+      140.6+    ],+    [+      141.05,+      141.70000000000002+    ],+    [+      142.15,+      142.8+    ],+    [+      143.35,+      144.0+    ],+    [+      144.45,+      145.1+    ],+    [+      145.45,+      146.1+    ],+    [+      147.15,+      147.8+    ],+    [+      148.15,+      148.8+    ],+    [+      149.35,+      150.0+    ],+    [+      150.45,+      151.1+    ],+    [+      151.65,+      152.3+    ],+    [+      152.75,+      153.4+    ],+    [+      153.85,+      154.5+    ],+    [+      155.65,+      156.3+    ],+    [+      156.95,+      157.6+    ],+    [+      158.05,+      158.70000000000002+    ],+    [+      159.25,+      159.9+    ],+    [+      160.45,+      161.1+    ],+    [+      161.55,+      162.20000000000002+    ],+    [+      162.75,+      163.4+    ],+    [+      164.65,+      165.3+    ],+    [+      165.85,+      166.5+    ],+    [+      167.05,+      167.70000000000002+    ],+    [+      168.15,+      168.8+    ],+    [+      169.35,+      170.0+    ],+    [+      170.45,+      171.1+    ],+    [+      171.65,+      172.3+    ],+    [+      173.65,+      174.3+    ],+    [+      174.75,+      175.4+    ],+    [+      176.05,+      176.70000000000002+    ],+    [+      177.35,+      178.0+    ],+    [+      178.55,+      179.20000000000002+    ],+    [+      179.75,+      180.4+    ],+    [+      180.95,+      181.6+    ],+    [+      182.85,+      183.5+    ],+    [+      183.95,+      184.6+    ],+    [+      185.15,+      185.8+    ],+    [+      186.35,+      187.0+    ],+    [+      187.55,+      188.20000000000002+    ],+    [+      188.65,+      189.3+    ],+    [+      189.75,+      190.4+    ],+    [+      192.8333,+      193.3333+    ]+  ],+  "keptFrameRangesEndExclusive": [+    [+      29,+      61+    ],+    [+      65,+      85+    ],+    [+      101,+      121+    ],+    [+      125,+      145+    ],+    [+      155,+      175+    ],+    [+      182,+      202+    ],+    [+      209,+      229+    ],+    [+      248,+      268+    ],+    [+      281,+      301+    ],+    [+      341,+      361+    ],+    [+      371,+      391+    ],+    [+      398,+      418+    ],+    [+      425,+      445+    ],+    [+      473,+      493+    ],+    [+      500,+      519+    ],+    [+      551,+      571+    ],+    [+      584,+      603+    ],+    [+      611,+      631+    ],+    [+      641,+      661+    ],+    [+      686,+      706+    ],+    [+      710,+      729+    ],+    [+      773,+      793+    ],+    [+      803,+      823+    ],+    [+      830,+      849+    ],+    [+      860,+      879+    ],+    [+      905,+      924+    ],+    [+      932,+      952+    ],+    [+      962,+      981+    ],+    [+      992,+      1011+    ],+    [+      1022,+      1041+    ],+    [+      1046,+      1066+    ],+    [+      1076,+      1096+    ],+    [+      1124,+      1144+    ],+    [+      1151,+      1171+    ],+    [+      1208,+      1228+    ],+    [+      1268,+      1288+    ],+    [+      1295,+      1315+    ],+    [+      1346,+      1366+    ],+    [+      1370,+      1390+    ],+    [+      1433,+      1453+    ],+    [+      1457,+      1476+    ],+    [+      1490,+      1534+    ],+    [+      1541,+      1581+    ],+    [+      1595,+      1624+    ],+    [+      1655,+      1776+    ],+    [+      1802,+      1821+    ],+    [+      1829,+      1851+    ],+    [+      1889,+      1909+    ],+    [+      1925,+      1945+    ],+    [+      1955,+      1975+    ],+    [+      1982,+      2002+    ],+    [+      2024,+      2044+    ],+    [+      2054,+      2074+    ],+    [+      2114,+      2134+    ],+    [+      2144,+      2164+    ],+    [+      2171,+      2191+    ],+    [+      2201,+      2221+    ],+    [+      2252,+      2272+    ],+    [+      2282,+      2302+    ],+    [+      2312,+      2332+    ],+    [+      2339,+      2359+    ],+    [+      2369,+      2389+    ],+    [+      2396,+      2416+    ],+    [+      2426,+      2446+    ],+    [+      2471,+      2491+    ],+    [+      2501,+      2521+    ],+    [+      2531,+      2551+    ],+    [+      2561,+      2581+    ],+    [+      2594,+      2614+    ],+    [+      2627,+      2653+    ],+    [+      2660,+      2680+    ],+    [+      2717,+      2737+    ],+    [+      2747,+      2767+    ],+    [+      2780,+      2800+    ],+    [+      2804,+      2824+    ],+    [+      2840,+      2860+    ],+    [+      2873,+      2893+    ],+    [+      2903,+      2944+    ],+    [+      2954,+      2974+    ],+    [+      2984,+      3004+    ],+    [+      3017,+      3037+    ],+    [+      3050,+      3070+    ],+    [+      3080,+      3100+    ],+    [+      3110,+      3130+    ],+    [+      3143,+      3163+    ],+    [+      3194,+      3214+    ],+    [+      3224,+      3244+    ],+    [+      3260,+      3280+    ],+    [+      3290,+      3310+    ],+    [+      3320,+      3340+    ],+    [+      3347,+      3367+    ],+    [+      3377,+      3397+    ],+    [+      3428,+      3448+    ],+    [+      3461,+      3481+    ],+    [+      3494,+      3514+    ],+    [+      3524,+      3544+    ],+    [+      3557,+      3577+    ],+    [+      3587,+      3607+    ],+    [+      3620,+      3640+    ],+    [+      3671,+      3691+    ],+    [+      3701,+      3721+    ],+    [+      3737,+      3757+    ],+    [+      3767,+      3787+    ],+    [+      3800,+      3820+    ],+    [+      3833,+      3853+    ],+    [+      3863,+      3883+    ],+    [+      3917,+      3937+    ],+    [+      3944,+      3964+    ],+    [+      3974,+      3994+    ],+    [+      4007,+      4027+    ],+    [+      4046,+      4066+    ],+    [+      4085,+      4105+    ],+    [+      4115,+      4135+    ],+    [+      4166,+      4186+    ],+    [+      4199,+      4219+    ],+    [+      4232,+      4252+    ],+    [+      4265,+      4285+    ],+    [+      4301,+      4321+    ],+    [+      4334,+      4354+    ],+    [+      4364,+      4384+    ],+    [+      4415,+      4435+    ],+    [+      4445,+      4465+    ],+    [+      4481,+      4501+    ],+    [+      4514,+      4534+    ],+    [+      4550,+      4570+    ],+    [+      4583,+      4603+    ],+    [+      4616,+      4636+    ],+    [+      4670,+      4690+    ],+    [+      4709,+      4729+    ],+    [+      4742,+      4762+    ],+    [+      4778,+      4798+    ],+    [+      4814,+      4834+    ],+    [+      4847,+      4867+    ],+    [+      4883,+      4903+    ],+    [+      4940,+      4960+    ],+    [+      4976,+      4996+    ],+    [+      5012,+      5032+    ],+    [+      5045,+      5065+    ],+    [+      5081,+      5101+    ],+    [+      5114,+      5134+    ],+    [+      5150,+      5170+    ],+    [+      5210,+      5230+    ],+    [+      5243,+      5263+    ],+    [+      5282,+      5302+    ],+    [+      5321,+      5341+    ],+    [+      5357,+      5377+    ],+    [+      5393,+      5413+    ],+    [+      5429,+      5449+    ],+    [+      5486,+      5506+    ],+    [+      5519,+      5539+    ],+    [+      5555,+      5575+    ],+    [+      5591,+      5611+    ],+    [+      5627,+      5647+    ],+    [+      5660,+      5680+    ],+    [+      5693,+      5713+    ],+    [+      5785,+      5800+    ]+  ]+}\ No newline at end of file
demo/routing/crossbar/fusion-crossbar-24-3x.mp4added
⋯ 1 unchanged line ⋯
demo/routing/crossbar/fusion-crossbar-24.brdadded+289
@@ -0,0 +1,289 @@+<?xml version="1.0" encoding="utf-8"?>+<!DOCTYPE eagle SYSTEM "eagle.dtd">+<eagle version="9.6.2">+  <drawing>+    <settings />+    <grid distance="0.1" unitdist="mm" unit="mm" style="lines" multiple="1" display="no" altdistance="0.01" altunitdist="mm" altunit="mm" />+    <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>+    <board>+      <plain>+        <wire x1="38" y1="24" x2="132" y2="24" width="0" layer="20" />+        <wire x1="132" y1="24" x2="132" y2="133" width="0" layer="20" />+        <wire x1="132" y1="133" x2="38" y2="133" width="0" layer="20" />+        <wire x1="38" y1="133" x2="38" y2="24" width="0" layer="20" />+        <text x="48" y="129" size="2" layer="21">ADOM / 24-NET CROSSOVER</text>+        <text x="49" y="26" size="1.3" layer="21">ASTRA &gt; ADOM BRIDGE &gt; FUSION</text>+        <text x="63" y="118" size="1.3" layer="21">24 NETS / 72 PADS / 2 LAYERS</text>+      </plain>+      <libraries>+        <library name="FusionCrossbarFixture">+          <packages>+            <package name="J1">+              <smd name="1" x="45" y="52.0" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="2" x="45" y="54.54" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="3" x="45" y="57.08" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="4" x="45" y="59.62" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="5" x="45" y="62.16" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="6" x="45" y="64.7" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="7" x="45" y="67.24" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="8" x="45" y="69.78" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="9" x="45" y="72.32" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="10" x="45" y="74.86" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="11" x="45" y="77.4" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="12" x="45" y="79.94" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="13" x="45" y="82.48" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="14" x="45" y="85.02" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="15" x="45" y="87.56" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="16" x="45" y="90.1" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="17" x="45" y="92.64" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="18" x="45" y="95.18" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="19" x="45" y="97.72" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="20" x="45" y="100.26" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="21" x="45" y="102.8" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="22" x="45" y="105.34" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="23" x="45" y="107.88" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="24" x="45" y="110.42" dx="1.5" dy="1.5" layer="1" roundness="20" />+            </package>+            <package name="J2">+              <smd name="1" x="65.0" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="8" x="82.78" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="15" x="100.56" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="22" x="118.34" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="5" x="75.16" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="12" x="92.94" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="19" x="110.72" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="2" x="67.54" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="9" x="85.32" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="16" x="103.1" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="23" x="120.88" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="6" x="77.7" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="13" x="95.48" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="20" x="113.26" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="3" x="70.08" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="10" x="87.86" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="17" x="105.64" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="24" x="123.42" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="7" x="80.24" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="14" x="98.02" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="21" x="115.8" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="4" x="72.62" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="11" x="90.4" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+              <smd name="18" x="108.18" y="35" dx="1.5" dy="1.5" layer="1" roundness="20" />+            </package>+            <package name="J3">+              <pad name="1" x="65.0" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="8" x="82.78" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="15" x="100.56" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="22" x="118.34" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="5" x="75.16" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="12" x="92.94" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="19" x="110.72" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="2" x="67.54" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="9" x="85.32" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="16" x="103.1" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="23" x="120.88" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="6" x="77.7" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="13" x="95.48" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="20" x="113.26" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="3" x="70.08" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="10" x="87.86" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="17" x="105.64" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="24" x="123.42" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="7" x="80.24" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="14" x="98.02" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="21" x="115.8" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="4" x="72.62" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="11" x="90.4" y="125" drill="0.8" diameter="1.5" shape="round" />+              <pad name="18" x="108.18" y="125" drill="0.8" diameter="1.5" shape="round" />+            </package>+          </packages>+        </library>+      </libraries>+      <attributes />+      <variantdefs />+      <classes>+        <class number="0" name="default" width=".3" drill=".3" />+      </classes>+      <designrules name="FusionCrossbarFixture">+        <param name="layerSetup" value="(1*16)" />+        <param name="mdWireWire" value="0.2mm" />+        <param name="mdWirePad" value="0.2mm" />+        <param name="mdWireVia" value="0.2mm" />+        <param name="msWidth" value="0.2mm" />+        <param name="msDrill" value="0.3mm" />+        <param name="mdCopperDimension" value="0.5mm" />+      </designrules>+      <elements>+        <element name="J1" library="FusionCrossbarFixture" package="J1" value="CROSSBAR_TEST" x="0" y="0" />+        <element name="J2" library="FusionCrossbarFixture" package="J2" value="CROSSBAR_TEST" x="0" y="0" />+        <element name="J3" library="FusionCrossbarFixture" package="J3" value="CROSSBAR_TEST" x="0" y="0" />+      </elements>+      <signals>+        <signal name="CH_01">+          <contactref element="J1" pad="1" />+          <contactref element="J2" pad="1" />+          <contactref element="J3" pad="1" />+        </signal>+        <signal name="CH_02">+          <contactref element="J1" pad="2" />+          <contactref element="J2" pad="8" />+          <contactref element="J3" pad="8" />+        </signal>+        <signal name="CH_03">+          <contactref element="J1" pad="3" />+          <contactref element="J2" pad="15" />+          <contactref element="J3" pad="15" />+        </signal>+        <signal name="CH_04">+          <contactref element="J1" pad="4" />+          <contactref element="J2" pad="22" />+          <contactref element="J3" pad="22" />+        </signal>+        <signal name="CH_05">+          <contactref element="J1" pad="5" />+          <contactref element="J2" pad="5" />+          <contactref element="J3" pad="5" />+        </signal>+        <signal name="CH_06">+          <contactref element="J1" pad="6" />+          <contactref element="J2" pad="12" />+          <contactref element="J3" pad="12" />+        </signal>+        <signal name="CH_07">+          <contactref element="J1" pad="7" />+          <contactref element="J2" pad="19" />+          <contactref element="J3" pad="19" />+        </signal>+        <signal name="CH_08">+          <contactref element="J1" pad="8" />+          <contactref element="J2" pad="2" />+          <contactref element="J3" pad="2" />+        </signal>+        <signal name="CH_09">+          <contactref element="J1" pad="9" />+          <contactref element="J2" pad="9" />+          <contactref element="J3" pad="9" />+        </signal>+        <signal name="CH_10">+          <contactref element="J1" pad="10" />+          <contactref element="J2" pad="16" />+          <contactref element="J3" pad="16" />+        </signal>+        <signal name="CH_11">+          <contactref element="J1" pad="11" />+          <contactref element="J2" pad="23" />+          <contactref element="J3" pad="23" />+        </signal>+        <signal name="CH_12">+          <contactref element="J1" pad="12" />+          <contactref element="J2" pad="6" />+          <contactref element="J3" pad="6" />+        </signal>+        <signal name="CH_13">+          <contactref element="J1" pad="13" />+          <contactref element="J2" pad="13" />+          <contactref element="J3" pad="13" />+        </signal>+        <signal name="CH_14">+          <contactref element="J1" pad="14" />+          <contactref element="J2" pad="20" />+          <contactref element="J3" pad="20" />+        </signal>+        <signal name="CH_15">+          <contactref element="J1" pad="15" />+          <contactref element="J2" pad="3" />+          <contactref element="J3" pad="3" />+        </signal>+        <signal name="CH_16">+          <contactref element="J1" pad="16" />+          <contactref element="J2" pad="10" />+          <contactref element="J3" pad="10" />+        </signal>+        <signal name="CH_17">+          <contactref element="J1" pad="17" />+          <contactref element="J2" pad="17" />+          <contactref element="J3" pad="17" />+        </signal>+        <signal name="CH_18">+          <contactref element="J1" pad="18" />+          <contactref element="J2" pad="24" />+          <contactref element="J3" pad="24" />+        </signal>+        <signal name="CH_19">+          <contactref element="J1" pad="19" />+          <contactref element="J2" pad="7" />+          <contactref element="J3" pad="7" />+        </signal>+        <signal name="CH_20">+          <contactref element="J1" pad="20" />+          <contactref element="J2" pad="14" />+          <contactref element="J3" pad="14" />+        </signal>+        <signal name="CH_21">+          <contactref element="J1" pad="21" />+          <contactref element="J2" pad="21" />+          <contactref element="J3" pad="21" />+        </signal>+        <signal name="CH_22">+          <contactref element="J1" pad="22" />+          <contactref element="J2" pad="4" />+          <contactref element="J3" pad="4" />+        </signal>+        <signal name="CH_23">+          <contactref element="J1" pad="23" />+          <contactref element="J2" pad="11" />+          <contactref element="J3" pad="11" />+        </signal>+        <signal name="CH_24">+          <contactref element="J1" pad="24" />+          <contactref element="J2" pad="18" />+          <contactref element="J3" pad="18" />+        </signal>+      </signals>+    </board>+  </drawing>+</eagle>\ No newline at end of file
demo/routing/crossbar/install.jsonadded+11
@@ -0,0 +1,11 @@+{+  "durationMs": 715,+  "exitCode": 0,+  "ok": true,+  "status": "ok",+  "stderr": "",+  "stdout": "{\r\n  \"backup\": \"C:/Users/john/AppData/Local/Adom Bridge/bridges-cache/fusion360/routing-backup-20260905-163355\",\r\n  \"version\": \"1.10.0-dev.routing.2\",\r\n  \"sha256\": \"36AB678B4A017F39E6F29E82F1752D46CF61E578E18C524DB89684DDC7E47F48\"\r\n}\r\n",+  "success": true,+  "timedOut": false,+  "timeoutSeconds": 75+}
demo/routing/crossbar/make_crossbar.pyadded+51
@@ -0,0 +1,51 @@+"""Calculate Fusion's 24-net crossover from the requested permutation, no router."""+import copy+import json+from pathlib import Path+import xml.etree.ElementTree as E+ROOT=Path(__file__).resolve().parent++def make():+    root=E.Element('eagle',version='9.6.2');drawing=E.SubElement(root,'drawing')+    E.SubElement(drawing,'settings')+    E.SubElement(drawing,'grid',distance='0.1',unitdist='mm',unit='mm',style='lines',multiple='1',display='no',altdistance='0.01',altunitdist='mm',altunit='mm')+    layers=E.parse(ROOT.parents[2]/'examples/ADS8588SIPM.fusion.lbr').find('drawing/layers')+    drawing.append(copy.deepcopy(layers));board=E.SubElement(drawing,'board');plain=E.SubElement(board,'plain')+    corners=[(38,24),(132,24),(132,133),(38,133)]+    for a,b in zip(corners,corners[1:]+corners[:1]):+        E.SubElement(plain,'wire',x1=str(a[0]),y1=str(a[1]),x2=str(b[0]),y2=str(b[1]),width='0',layer='20')+    def label(text,x,y,size=1.3):E.SubElement(plain,'text',x=str(x),y=str(y),size=str(size),layer='21').text=text+    label('ADOM / 24-NET CROSSOVER',48,129,2)+    label('ASTRA > ADOM BRIDGE > FUSION',49,26,1.3)+    label('24 NETS / 72 PADS / 2 LAYERS',63,118,1.3)+    libs=E.SubElement(board,'libraries');lib=E.SubElement(libs,'library',name='FusionCrossbarFixture');pkgs=E.SubElement(lib,'packages')+    elements=E.SubElement(board,'elements');signals=E.SubElement(board,'signals')+    packages={}+    for ref in ['J1','J2','J3']:+        packages[ref]=E.SubElement(pkgs,'package',name=ref)+        E.SubElement(elements,'element',name=ref,library='FusionCrossbarFixture',package=ref,value='CROSSBAR_TEST',x='0',y='0')+    plans=[]+    for i in range(24):+        j=7*i%24;x=round(65+j*2.54,6);y=round(52+i*2.54,6);net=f'CH_{i+1:02d}'+        pads=[('J1',i+1,45,y),('J2',j+1,x,35),('J3',j+1,x,125)]+        signal=E.SubElement(signals,'signal',name=net)+        for ref,n,px,py in pads:+            attrs={'name':str(n),'x':str(px),'y':str(py)}+            if ref=='J3':E.SubElement(packages[ref],'pad',**attrs,drill='0.8',diameter='1.5',shape='round')+            else:E.SubElement(packages[ref],'smd',**attrs,dx='1.5',dy='1.5',layer='1',roundness='20')+            E.SubElement(signal,'contactref',element=ref,pad=str(n))+        plans.append({'net':net,'layer':1,'width':.3,'viaDiameter':.6,'viaDrill':.3,'paths':[+            [{'pad':f'J1.{i+1}'},[55,y],{'x':x,'y':y,'layer':16},{'x':x,'y':42,'layer':1},{'pad':f'J2.{j+1}'}],+            [{'x':x,'y':y,'layer':16},{'pad':f'J3.{j+1}'}]]})+    # EAGLE child order is significant; put rules/classes before elements/signals.+    board.remove(elements);board.remove(signals)+    E.SubElement(board,'attributes');E.SubElement(board,'variantdefs')+    E.SubElement(E.SubElement(board,'classes'),'class',number='0',name='default',width='.3',drill='.3')+    rules=E.SubElement(board,'designrules',name='FusionCrossbarFixture')+    for name,value in {'layerSetup':'(1*16)','mdWireWire':'0.2mm','mdWirePad':'0.2mm','mdWireVia':'0.2mm','msWidth':'0.2mm','msDrill':'0.3mm','mdCopperDimension':'0.5mm'}.items():E.SubElement(rules,'param',name=name,value=value)+    board.append(elements);board.append(signals);E.indent(root)+    (ROOT/'fusion-crossbar-24.brd').write_text('<?xml version="1.0" encoding="utf-8"?>\n<!DOCTYPE eagle SYSTEM "eagle.dtd">\n'+E.tostring(root,encoding='unicode'))+    (ROOT/'plan.json').write_text(json.dumps(plans,indent=2)+'\n')+    return board,plans+if __name__=='__main__':+    b,p=make();print('Calculated 24 nets, 72 pads: j=(7*i) mod 24')
demo/routing/crossbar/plan.jsonadded+986
@@ -0,0 +1,986 @@+[+  {+    "net": "CH_01",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.1"+        },+        [+          55,+          52.0+        ],+        {+          "x": 65.0,+          "y": 52.0,+          "layer": 16+        },+        {+          "x": 65.0,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.1"+        }+      ],+      [+        {+          "x": 65.0,+          "y": 52.0,+          "layer": 16+        },+        {+          "pad": "J3.1"+        }+      ]+    ]+  },+  {+    "net": "CH_02",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.2"+        },+        [+          55,+          54.54+        ],+        {+          "x": 82.78,+          "y": 54.54,+          "layer": 16+        },+        {+          "x": 82.78,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.8"+        }+      ],+      [+        {+          "x": 82.78,+          "y": 54.54,+          "layer": 16+        },+        {+          "pad": "J3.8"+        }+      ]+    ]+  },+  {+    "net": "CH_03",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.3"+        },+        [+          55,+          57.08+        ],+        {+          "x": 100.56,+          "y": 57.08,+          "layer": 16+        },+        {+          "x": 100.56,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.15"+        }+      ],+      [+        {+          "x": 100.56,+          "y": 57.08,+          "layer": 16+        },+        {+          "pad": "J3.15"+        }+      ]+    ]+  },+  {+    "net": "CH_04",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.4"+        },+        [+          55,+          59.62+        ],+        {+          "x": 118.34,+          "y": 59.62,+          "layer": 16+        },+        {+          "x": 118.34,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.22"+        }+      ],+      [+        {+          "x": 118.34,+          "y": 59.62,+          "layer": 16+        },+        {+          "pad": "J3.22"+        }+      ]+    ]+  },+  {+    "net": "CH_05",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.5"+        },+        [+          55,+          62.16+        ],+        {+          "x": 75.16,+          "y": 62.16,+          "layer": 16+        },+        {+          "x": 75.16,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.5"+        }+      ],+      [+        {+          "x": 75.16,+          "y": 62.16,+          "layer": 16+        },+        {+          "pad": "J3.5"+        }+      ]+    ]+  },+  {+    "net": "CH_06",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.6"+        },+        [+          55,+          64.7+        ],+        {+          "x": 92.94,+          "y": 64.7,+          "layer": 16+        },+        {+          "x": 92.94,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.12"+        }+      ],+      [+        {+          "x": 92.94,+          "y": 64.7,+          "layer": 16+        },+        {+          "pad": "J3.12"+        }+      ]+    ]+  },+  {+    "net": "CH_07",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.7"+        },+        [+          55,+          67.24+        ],+        {+          "x": 110.72,+          "y": 67.24,+          "layer": 16+        },+        {+          "x": 110.72,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.19"+        }+      ],+      [+        {+          "x": 110.72,+          "y": 67.24,+          "layer": 16+        },+        {+          "pad": "J3.19"+        }+      ]+    ]+  },+  {+    "net": "CH_08",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.8"+        },+        [+          55,+          69.78+        ],+        {+          "x": 67.54,+          "y": 69.78,+          "layer": 16+        },+        {+          "x": 67.54,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.2"+        }+      ],+      [+        {+          "x": 67.54,+          "y": 69.78,+          "layer": 16+        },+        {+          "pad": "J3.2"+        }+      ]+    ]+  },+  {+    "net": "CH_09",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.9"+        },+        [+          55,+          72.32+        ],+        {+          "x": 85.32,+          "y": 72.32,+          "layer": 16+        },+        {+          "x": 85.32,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.9"+        }+      ],+      [+        {+          "x": 85.32,+          "y": 72.32,+          "layer": 16+        },+        {+          "pad": "J3.9"+        }+      ]+    ]+  },+  {+    "net": "CH_10",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.10"+        },+        [+          55,+          74.86+        ],+        {+          "x": 103.1,+          "y": 74.86,+          "layer": 16+        },+        {+          "x": 103.1,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.16"+        }+      ],+      [+        {+          "x": 103.1,+          "y": 74.86,+          "layer": 16+        },+        {+          "pad": "J3.16"+        }+      ]+    ]+  },+  {+    "net": "CH_11",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.11"+        },+        [+          55,+          77.4+        ],+        {+          "x": 120.88,+          "y": 77.4,+          "layer": 16+        },+        {+          "x": 120.88,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.23"+        }+      ],+      [+        {+          "x": 120.88,+          "y": 77.4,+          "layer": 16+        },+        {+          "pad": "J3.23"+        }+      ]+    ]+  },+  {+    "net": "CH_12",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.12"+        },+        [+          55,+          79.94+        ],+        {+          "x": 77.7,+          "y": 79.94,+          "layer": 16+        },+        {+          "x": 77.7,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.6"+        }+      ],+      [+        {+          "x": 77.7,+          "y": 79.94,+          "layer": 16+        },+        {+          "pad": "J3.6"+        }+      ]+    ]+  },+  {+    "net": "CH_13",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.13"+        },+        [+          55,+          82.48+        ],+        {+          "x": 95.48,+          "y": 82.48,+          "layer": 16+        },+        {+          "x": 95.48,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.13"+        }+      ],+      [+        {+          "x": 95.48,+          "y": 82.48,+          "layer": 16+        },+        {+          "pad": "J3.13"+        }+      ]+    ]+  },+  {+    "net": "CH_14",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.14"+        },+        [+          55,+          85.02+        ],+        {+          "x": 113.26,+          "y": 85.02,+          "layer": 16+        },+        {+          "x": 113.26,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.20"+        }+      ],+      [+        {+          "x": 113.26,+          "y": 85.02,+          "layer": 16+        },+        {+          "pad": "J3.20"+        }+      ]+    ]+  },+  {+    "net": "CH_15",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.15"+        },+        [+          55,+          87.56+        ],+        {+          "x": 70.08,+          "y": 87.56,+          "layer": 16+        },+        {+          "x": 70.08,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.3"+        }+      ],+      [+        {+          "x": 70.08,+          "y": 87.56,+          "layer": 16+        },+        {+          "pad": "J3.3"+        }+      ]+    ]+  },+  {+    "net": "CH_16",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.16"+        },+        [+          55,+          90.1+        ],+        {+          "x": 87.86,+          "y": 90.1,+          "layer": 16+        },+        {+          "x": 87.86,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.10"+        }+      ],+      [+        {+          "x": 87.86,+          "y": 90.1,+          "layer": 16+        },+        {+          "pad": "J3.10"+        }+      ]+    ]+  },+  {+    "net": "CH_17",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.17"+        },+        [+          55,+          92.64+        ],+        {+          "x": 105.64,+          "y": 92.64,+          "layer": 16+        },+        {+          "x": 105.64,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.17"+        }+      ],+      [+        {+          "x": 105.64,+          "y": 92.64,+          "layer": 16+        },+        {+          "pad": "J3.17"+        }+      ]+    ]+  },+  {+    "net": "CH_18",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.18"+        },+        [+          55,+          95.18+        ],+        {+          "x": 123.42,+          "y": 95.18,+          "layer": 16+        },+        {+          "x": 123.42,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.24"+        }+      ],+      [+        {+          "x": 123.42,+          "y": 95.18,+          "layer": 16+        },+        {+          "pad": "J3.24"+        }+      ]+    ]+  },+  {+    "net": "CH_19",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.19"+        },+        [+          55,+          97.72+        ],+        {+          "x": 80.24,+          "y": 97.72,+          "layer": 16+        },+        {+          "x": 80.24,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.7"+        }+      ],+      [+        {+          "x": 80.24,+          "y": 97.72,+          "layer": 16+        },+        {+          "pad": "J3.7"+        }+      ]+    ]+  },+  {+    "net": "CH_20",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.20"+        },+        [+          55,+          100.26+        ],+        {+          "x": 98.02,+          "y": 100.26,+          "layer": 16+        },+        {+          "x": 98.02,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.14"+        }+      ],+      [+        {+          "x": 98.02,+          "y": 100.26,+          "layer": 16+        },+        {+          "pad": "J3.14"+        }+      ]+    ]+  },+  {+    "net": "CH_21",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.21"+        },+        [+          55,+          102.8+        ],+        {+          "x": 115.8,+          "y": 102.8,+          "layer": 16+        },+        {+          "x": 115.8,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.21"+        }+      ],+      [+        {+          "x": 115.8,+          "y": 102.8,+          "layer": 16+        },+        {+          "pad": "J3.21"+        }+      ]+    ]+  },+  {+    "net": "CH_22",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.22"+        },+        [+          55,+          105.34+        ],+        {+          "x": 72.62,+          "y": 105.34,+          "layer": 16+        },+        {+          "x": 72.62,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.4"+        }+      ],+      [+        {+          "x": 72.62,+          "y": 105.34,+          "layer": 16+        },+        {+          "pad": "J3.4"+        }+      ]+    ]+  },+  {+    "net": "CH_23",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.23"+        },+        [+          55,+          107.88+        ],+        {+          "x": 90.4,+          "y": 107.88,+          "layer": 16+        },+        {+          "x": 90.4,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.11"+        }+      ],+      [+        {+          "x": 90.4,+          "y": 107.88,+          "layer": 16+        },+        {+          "pad": "J3.11"+        }+      ]+    ]+  },+  {+    "net": "CH_24",+    "layer": 1,+    "width": 0.3,+    "viaDiameter": 0.6,+    "viaDrill": 0.3,+    "paths": [+      [+        {+          "pad": "J1.24"+        },+        [+          55,+          110.42+        ],+        {+          "x": 108.18,+          "y": 110.42,+          "layer": 16+        },+        {+          "x": 108.18,+          "y": 42,+          "layer": 1+        },+        {+          "pad": "J2.18"+        }+      ],+      [+        {+          "x": 108.18,+          "y": 110.42,+          "layer": 16+        },+        {+          "pad": "J3.18"+        }+      ]+    ]+  }+]
demo/routing/crossbar/player-open.jsonadded+9
@@ -0,0 +1,9 @@+{+  "durationMs": 752,+  "exitCode": 0,+  "status": "ok",+  "stderr": "",+  "stdout": "",+  "success": true,+  "timeoutSeconds": 120+}
demo/routing/crossbar/player-verification.jsonadded+26
@@ -0,0 +1,26 @@+{+  "window": {+    "className": "ApplicationFrameWindow",+    "enabled": true,+    "hung": false,+    "hwnd": 18812610,+    "image": "ApplicationFrameHost.exe",+    "kind": "normal",+    "maximized": false,+    "minimized": false,+    "owner": 0,+    "pid": 15016,+    "rect": {+      "bottom": 1434,+      "height": 1338,+      "left": 118,+      "right": 2241,+      "top": 96,+      "width": 2123+    },+    "title": "Media Player",+    "z": 0+  },+  "screenshotPath": "/home/adom/project/screenshots/adom-bridge/window/2026-09-05T21-43-36.734-18812610.safe.png",+  "success": true+}
demo/routing/crossbar/record_crossbar.pyadded+53
@@ -0,0 +1,53 @@+"""Record verified native Fusion edits; keep wall timestamps for action editing."""+import argparse+import json+from pathlib import Path+import sys+import time+sys.path.insert(0,str(Path(__file__).resolve().parents[1]))+from call import call+ROOT=Path(__file__).resolve().parent+p=argparse.ArgumentParser();p.add_argument('--hwnd',type=int,required=True);p.add_argument('--take',type=Path,required=True);a=p.parse_args()+a.take.mkdir(parents=True,exist_ok=False)+records=[]+def invoke(v,args):+    start=time.time();r=call(v,{**args,'reason':'Create and record the requested Fusion 24-net crossover demo'})+    records.append({'verb':v,'start':start,'end':time.time(),'args':args,'result':r})+    (a.take/'calls.json').write_text(json.dumps(records,indent=2)+'\n')+    if not r.get('success',r.get('ok',False)):raise RuntimeError(json.dumps(r))+    return r+s=invoke('fusion_routing_state',{'expectDocument':'fusion-crossbar-24'})+assert s['bridgeVersion']=='1.10.0-dev.routing.2' and s['segmentCount']==s['viaCount']==0+assert len(s['pads'])==72 and len(s['nets'])==24+(a.take/'before.json').write_text(json.dumps(s,indent=2)+'\n')+def guard():return {'expectDocument':'fusion-crossbar-24','boardId':s['boardId'],'expectedRevision':s['revision']}+plans=[]+for row in json.loads((ROOT/'plan.json').read_text()):+    preview=invoke('fusion_route_net',{**guard(),**row,'dryRun':True})+    assert len(preview['plan']['items'])==7+    plans.append((row,preview['plan']['items']))+invoke('fusion_execute_text_command',{'command':'Electron.ImmediateRepaint /full','expectDocument':'fusion-crossbar-24'})+rec=invoke('desktop_record_window_start',{'hwnd':a.hwnd,'fps':30,'audio':False,'maxDurationMs':600000})+(a.take/'record-start.json').write_text(json.dumps(rec,indent=2)+'\n')+try:+    time.sleep(1)+    for row,items in plans:+        for item in items:+            if item['kind']=='segment':+                route={'net':item['net'],'width':item['width'],'layer':item['layer'],'points':[item['start'],item['end']]}+            else:+                xy=item['at'];route={'net':item['net'],'layer':1,'width':.3,'viaDiameter':item['diameter'],'viaDrill':item['drill'],'points':[xy,{'x':xy[0],'y':xy[1],'layer':16}]}+            s=invoke('fusion_route_net',{**guard(),**route})+            assert s['verified'] and s['mutated']+            time.sleep(.2)+        s=invoke('fusion_routing_drc',guard())+        assert s['drc']['checked'] and not s['drc']['errorCount'] and not s['drc']['warningCount'],s['drc']+        print(row['net'],s['segmentCount'],s['viaCount'],len(s['remainingNets']),'nets remain',flush=True)+    assert s['segmentCount']==120 and s['viaCount']==48 and not s['remainingNets'] and s['drc']['clean']+    (a.take/'final.json').write_text(json.dumps(s,indent=2)+'\n')+    time.sleep(2)+finally:+    stop=invoke('desktop_record_window_stop',{'recordingId':rec['recordingId']})+    (a.take/'record-stop.json').write_text(json.dumps(stop,indent=2)+'\n')+invoke('pull_file',{'filePaths':[stop['path']],'saveTo':str(a.take.resolve())})+print('PASS: 24 nets / 120 segments / 48 vias / native DRC clean',flush=True)
demo/routing/crossbar/render_crossbar.pyadded+74
@@ -0,0 +1,74 @@+import sys,subprocess,json+from pathlib import Path+import shutil+F=shutil.which('ffmpeg');root=Path(__file__).parent+HEADER='''[Script Info]+ScriptType: v4.00++PlayResX: 1920+PlayResY: 1080+WrapStyle: 2+[V4+ Styles]+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding+Style: Main,Liberation Sans,34,&H00FFFFFF,&H00FFFFFF,&H00130F0A,&H00130F0A,0,0,0,0,100,100,0,0,1,1,0,2,30,30,22,1+[Events]+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text+'''+def stamp(t):+ cs=round(t*100);return f'{cs//360000}:{cs//6000%60:02d}:{cs//100%60:02d}.{cs%100:02d}'+def render(name,source,start,end,cues,side,title,hold=4,keep=None,action_seconds=None,frame_ranges=None):+ duration=(action_seconds if action_seconds is not None else (sum(b-a for a,b in keep) if keep else end-start)/3)+hold+ events=[]+ def text(t0,t1,s):events.append(f'Dialogue: 0,{stamp(t0)},{stamp(t1)},Main,,0,0,0,,{s}')+ text(0,duration,r'{\an7\pos(34,16)\fs38\b1\c&H00E5CF65&}CODEX ASTRA IN ADOM HYDROGEN'+r'{\c&H00FFFFFF&}  /  '+title)+ text(0,duration,r'{\an7\pos(1490,125)\fs48\b1\c&H00E5CF65&}3x SPEED')+ text(0,duration,r'{\an7\pos(1490,197)\fs28}Native Fusion capture\NIdle waits trimmed')+ for y,heading,body in side:+  text(0,duration,fr'{{\an7\pos(1490,{y})\fs32\b1\c&H00E5CF65&}}'+heading)+  text(0,duration,fr'{{\an7\pos(1490,{y+46})\fs27}}'+body)+ for a,b,s in cues:text(a,b,r'{\an2\pos(960,1058)\fs34}'+s)+ text(duration-hold-.2,duration,r'{\an7\pos(1490,885)\fs23\c&H00B9B9B9&}Final frame held for reading')+ ass=root/(name+'.ass');ass.write_text(HEADER+'\n'.join(events)+'\n')+ out=root/(name+'.mp4')+ selection=("select='"+'+'.join(f'between(t,{a},{b})' for a,b in keep)+"',setpts=N/(30*TB)" if keep else f'trim=start={start}:end={end}')+ if frame_ranges is not None:+  selection="select='"+'+'.join(f'gte(n,{a})*lt(n,{b})' for a,b in frame_ranges)+"',setpts=N/(30*TB)"+ vf=f'{selection},setpts=(PTS-STARTPTS)/3,fps=30,scale=1440:900:force_original_aspect_ratio=decrease,pad=1440:900:(ow-iw)/2:(oh-ih)/2:color=0x0a0f13,pad=1920:1080:0:70:color=0x0a0f13,tpad=stop_mode=clone:stop_duration={hold},ass={ass}'+ subprocess.run([F,'-hide_banner','-loglevel','warning','-i',str(source),'-vf',vf,'-an','-c:v','libx264','-preset','fast','-crf','20','-pix_fmt','yuv420p','-movflags','+faststart','-y',str(out)],check=True)+ (root/(name+'.edit.json')).write_text(json.dumps({'source':str(source),'trimStartSeconds':start,'trimEndSeconds':end,'speed':3,'holdSeconds':hold,'durationSeconds':duration,'captions':cues,'keptSourceRanges':keep,'keptFrameRangesEndExclusive':frame_ranges},indent=2))+ print(out,flush=True)++if __name__=='__main__':+ import argparse+ p=argparse.ArgumentParser();p.add_argument('take',type=Path);a=p.parse_args()+ source=next(a.take.glob('window-*.mp4'))+ # select + N/(30*TB) removes gaps correctly only for verified constant-30fps input.+ frames=json.loads(subprocess.check_output(['ffprobe','-v','error','-select_streams','v:0','-show_entries','frame=best_effort_timestamp_time','-of','json',str(source)]))['frames']+ pts=[float(f['best_effort_timestamp_time']) for f in frames]+ assert all(abs((b-a)-1/30)<.00001 for a,b in zip(pts,pts[1:])), 'VFR source needs trim/concat'+ keep=json.loads((a.take/'action-ranges.json').read_text())+ final=json.loads((a.take/'final.json').read_text())+ assert final['segmentCount']==120 and final['viaCount']==48 and len(final['pads'])==72 and not final['remainingNets'] and final['drc']['clean']+ selected=[i for i,t in enumerate(pts) if any(lo<=t<=hi for lo,hi in keep)]+ frame_ranges=[]+ for i in selected:+  if frame_ranges and i==frame_ranges[-1][1]:frame_ranges[-1][1]=i+1+  else:frame_ranges.append([i,i+1])+ retained=len(selected)+ action=retained/90;duration=action+5+ cues=[+  (0,4,'Codex Astra calculates the 24-net crossover in Adom Hydrogen.'),+  (4,8,'Output column j = (7 x i) mod 24. Rows and columns use 2.54 mm pitch.'),+  (8,12,r'Top copper carries rows; bottom copper carries columns.\NCrossings stay on separate layers. No Freerouting.'),+  (12,16,r'fusion_routing_state reads nets, pads and revision.\Nfusion_route_net dryRun checks explicit planned geometry.'),+  (16,20,r'fusion_route_net adds each trace and via through Adom Bridge.\NexpectedRevision guards edits; copper is read back after each call.'),+  (20,action,r'Each net branches to a third pad and uses two through vias.\NFusion recalculates connectivity as the copper appears.'),+  (action,duration,r'fusion_routing_drc: 24 nets connected.\NNative Autodesk DRC: 0 errors / 0 warnings / 0 airwires.')]+ # Keep captions legible if the actual action is shorter than the template.+ if action<23:+  factor=action/24+  cues=[(x*factor,y*factor,t) for x,y,t in cues[:-2]]+[(20*factor,action,cues[-2][2]),(action,duration,cues[-1][2])]+ render('fusion-crossbar-24-3x',source,0,pts[-1]+1/30,cues,+  [(305,'THE BOARD',r'24 nets / 72 pads\N120 trace segments\N48 through vias'),+   (495,'THE CALCULATION',r'j = (7 x i) mod 24\N0.30 mm trace width\NExplicit Astra waypoints'),+   (685,'RECORD + VERIFY',r'Native AB window capture\NFusion copper read-back\NAutodesk DRC result')],+  '24-NET CROSSOVER',hold=5,keep=keep,action_seconds=action,frame_ranges=frame_ranges)
demo/routing/crossbar/take-01/action-ranges.jsonadded+626
@@ -0,0 +1,626 @@+[+  [+    0.9500000000000001,+    2.0+  ],+  [+    2.15,+    2.8+  ],+  [+    3.35,+    4.0+  ],+  [+    4.15,+    4.800000000000001+  ],+  [+    5.15,+    5.800000000000001+  ],+  [+    6.05,+    6.7+  ],+  [+    6.95,+    7.6000000000000005+  ],+  [+    8.25,+    8.9+  ],+  [+    9.35,+    10.0+  ],+  [+    11.35,+    12.0+  ],+  [+    12.35,+    13.0+  ],+  [+    13.25,+    13.9+  ],+  [+    14.15,+    14.8+  ],+  [+    15.75,+    16.4+  ],+  [+    16.65,+    17.299999999999997+  ],+  [+    18.35,+    19.0+  ],+  [+    19.45,+    20.099999999999998+  ],+  [+    20.35,+    21.0+  ],+  [+    21.35,+    22.0+  ],+  [+    22.85,+    23.5+  ],+  [+    23.65,+    24.299999999999997+  ],+  [+    25.75,+    26.4+  ],+  [+    26.75,+    27.4+  ],+  [+    27.65,+    28.299999999999997+  ],+  [+    28.65,+    29.299999999999997+  ],+  [+    30.15,+    30.799999999999997+  ],+  [+    31.05,+    31.7+  ],+  [+    32.05,+    32.699999999999996+  ],+  [+    33.05,+    33.699999999999996+  ],+  [+    34.05,+    34.699999999999996+  ],+  [+    34.85,+    35.5+  ],+  [+    35.85,+    36.5+  ],+  [+    37.45,+    38.1+  ],+  [+    38.35,+    39.0+  ],+  [+    40.25,+    40.9+  ],+  [+    42.25,+    42.9+  ],+  [+    43.15,+    43.8+  ],+  [+    44.85,+    45.5+  ],+  [+    45.65,+    46.3+  ],+  [+    47.75,+    48.4+  ],+  [+    48.55,+    49.199999999999996+  ],+  [+    49.65,+    51.1+  ],+  [+    51.35,+    52.699999999999996+  ],+  [+    53.15,+    54.1+  ],+  [+    55.15,+    59.199999999999996+  ],+  [+    60.05,+    60.699999999999996+  ],+  [+    60.95,+    61.699999999999996+  ],+  [+    62.95,+    63.6+  ],+  [+    64.15,+    64.80000000000001+  ],+  [+    65.15,+    65.80000000000001+  ],+  [+    66.05,+    66.7+  ],+  [+    67.45,+    68.10000000000001+  ],+  [+    68.45,+    69.10000000000001+  ],+  [+    70.45,+    71.10000000000001+  ],+  [+    71.45,+    72.10000000000001+  ],+  [+    72.35,+    73.0+  ],+  [+    73.35,+    74.0+  ],+  [+    75.05,+    75.7+  ],+  [+    76.05,+    76.7+  ],+  [+    77.05,+    77.7+  ],+  [+    77.95,+    78.60000000000001+  ],+  [+    78.95,+    79.60000000000001+  ],+  [+    79.85,+    80.5+  ],+  [+    80.85,+    81.5+  ],+  [+    82.35,+    83.0+  ],+  [+    83.35,+    84.0+  ],+  [+    84.35,+    85.0+  ],+  [+    85.35,+    86.0+  ],+  [+    86.45,+    87.10000000000001+  ],+  [+    87.55,+    88.4+  ],+  [+    88.65,+    89.30000000000001+  ],+  [+    90.55,+    91.2+  ],+  [+    91.55,+    92.2+  ],+  [+    92.65,+    93.30000000000001+  ],+  [+    93.45,+    94.10000000000001+  ],+  [+    94.65,+    95.30000000000001+  ],+  [+    95.75,+    96.4+  ],+  [+    96.75,+    98.10000000000001+  ],+  [+    98.45,+    99.10000000000001+  ],+  [+    99.45,+    100.10000000000001+  ],+  [+    100.55,+    101.2+  ],+  [+    101.65,+    102.30000000000001+  ],+  [+    102.65,+    103.30000000000001+  ],+  [+    103.65,+    104.30000000000001+  ],+  [+    104.75,+    105.4+  ],+  [+    106.45,+    107.10000000000001+  ],+  [+    107.45,+    108.10000000000001+  ],+  [+    108.65,+    109.30000000000001+  ],+  [+    109.65,+    110.30000000000001+  ],+  [+    110.65,+    111.30000000000001+  ],+  [+    111.55,+    112.2+  ],+  [+    112.55,+    113.2+  ],+  [+    114.25,+    114.9+  ],+  [+    115.35,+    116.0+  ],+  [+    116.45,+    117.10000000000001+  ],+  [+    117.45,+    118.10000000000001+  ],+  [+    118.55,+    119.2+  ],+  [+    119.55,+    120.2+  ],+  [+    120.65,+    121.30000000000001+  ],+  [+    122.35,+    123.0+  ],+  [+    123.35,+    124.0+  ],+  [+    124.55,+    125.2+  ],+  [+    125.55,+    126.2+  ],+  [+    126.65,+    127.30000000000001+  ],+  [+    127.75,+    128.4+  ],+  [+    128.75,+    129.4+  ],+  [+    130.55,+    131.20000000000002+  ],+  [+    131.45,+    132.1+  ],+  [+    132.45,+    133.1+  ],+  [+    133.55,+    134.20000000000002+  ],+  [+    134.85,+    135.5+  ],+  [+    136.15,+    136.8+  ],+  [+    137.15,+    137.8+  ],+  [+    138.85,+    139.5+  ],+  [+    139.95,+    140.6+  ],+  [+    141.05,+    141.70000000000002+  ],+  [+    142.15,+    142.8+  ],+  [+    143.35,+    144.0+  ],+  [+    144.45,+    145.1+  ],+  [+    145.45,+    146.1+  ],+  [+    147.15,+    147.8+  ],+  [+    148.15,+    148.8+  ],+  [+    149.35,+    150.0+  ],+  [+    150.45,+    151.1+  ],+  [+    151.65,+    152.3+  ],+  [+    152.75,+    153.4+  ],+  [+    153.85,+    154.5+  ],+  [+    155.65,+    156.3+  ],+  [+    156.95,+    157.6+  ],+  [+    158.05,+    158.70000000000002+  ],+  [+    159.25,+    159.9+  ],+  [+    160.45,+    161.1+  ],+  [+    161.55,+    162.20000000000002+  ],+  [+    162.75,+    163.4+  ],+  [+    164.65,+    165.3+  ],+  [+    165.85,+    166.5+  ],+  [+    167.05,+    167.70000000000002+  ],+  [+    168.15,+    168.8+  ],+  [+    169.35,+    170.0+  ],+  [+    170.45,+    171.1+  ],+  [+    171.65,+    172.3+  ],+  [+    173.65,+    174.3+  ],+  [+    174.75,+    175.4+  ],+  [+    176.05,+    176.70000000000002+  ],+  [+    177.35,+    178.0+  ],+  [+    178.55,+    179.20000000000002+  ],+  [+    179.75,+    180.4+  ],+  [+    180.95,+    181.6+  ],+  [+    182.85,+    183.5+  ],+  [+    183.95,+    184.6+  ],+  [+    185.15,+    185.8+  ],+  [+    186.35,+    187.0+  ],+  [+    187.55,+    188.20000000000002+  ],+  [+    188.65,+    189.3+  ],+  [+    189.75,+    190.4+  ],+  [+    192.8333,+    193.3333+  ]+]
demo/routing/crossbar/take-01/before.jsonadded+1735
@@ -0,0 +1,1735 @@+{+  "_timeoutHint": "ab waits up to 60s for this verb before the request times out. If it's a long operation (cloud open / download / export), DON'T treat a timeout as failure \u2014 the work usually keeps running on the bridge. Poll `fusion_get_app_state` until it reports done.",+  "airwireCount": 48,+  "boardId": "ecc4548c-cb68-489f-8b82-46e7d41d61c0",+  "bridgeVersion": "1.10.0-dev.routing.2",+  "connectivitySource": "Fusion exported airwires; mutation paths recompute RATSNEST",+  "documentName": "fusion-crossbar-24",+  "drc": {+    "checked": false,+    "note": "Use fusion_routing_drc for a fresh Autodesk DRC"+  },+  "durationMs": 218,+  "error": "",+  "nets": [+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            65.0,+            35.0+          ],+          "start": [+            45.0,+            52.0+          ]+        },+        {+          "end": [+            65.0,+            125.0+          ],+          "start": [+            65.0,+            35.0+          ]+        }+      ],+      "name": "CH_01",+      "pads": [+        "J1.1",+        "J2.1",+        "J3.1"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            82.78,+            35.0+          ],+          "start": [+            45.0,+            54.54+          ]+        },+        {+          "end": [+            82.78,+            125.0+          ],+          "start": [+            82.78,+            35.0+          ]+        }+      ],+      "name": "CH_02",+      "pads": [+        "J1.2",+        "J2.8",+        "J3.8"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            100.56,+            35.0+          ],+          "start": [+            45.0,+            57.08+          ]+        },+        {+          "end": [+            100.56,+            125.0+          ],+          "start": [+            100.56,+            35.0+          ]+        }+      ],+      "name": "CH_03",+      "pads": [+        "J1.3",+        "J2.15",+        "J3.15"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            118.34,+            125.0+          ],+          "start": [+            118.34,+            35.0+          ]+        },+        {+          "end": [+            118.34,+            35.0+          ],+          "start": [+            45.0,+            59.62+          ]+        }+      ],+      "name": "CH_04",+      "pads": [+        "J1.4",+        "J2.22",+        "J3.22"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            75.16,+            35.0+          ],+          "start": [+            45.0,+            62.16+          ]+        },+        {+          "end": [+            75.16,+            125.0+          ],+          "start": [+            75.16,+            35.0+          ]+        }+      ],+      "name": "CH_05",+      "pads": [+        "J1.5",+        "J2.5",+        "J3.5"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            92.94,+            35.0+          ],+          "start": [+            45.0,+            64.7+          ]+        },+        {+          "end": [+            92.94,+            125.0+          ],+          "start": [+            92.94,+            35.0+          ]+        }+      ],+      "name": "CH_06",+      "pads": [+        "J1.6",+        "J2.12",+        "J3.12"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            110.72,+            125.0+          ],+          "start": [+            110.72,+            35.0+          ]+        },+        {+          "end": [+            110.72,+            35.0+          ],+          "start": [+            45.0,+            67.24+          ]+        }+      ],+      "name": "CH_07",+      "pads": [+        "J1.7",+        "J2.19",+        "J3.19"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            67.54,+            35.0+          ],+          "start": [+            45.0,+            69.78+          ]+        },+        {+          "end": [+            67.54,+            125.0+          ],+          "start": [+            45.0,+            69.78+          ]+        }+      ],+      "name": "CH_08",+      "pads": [+        "J1.8",+        "J2.2",+        "J3.2"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            85.32,+            35.0+          ],+          "start": [+            45.0,+            72.32+          ]+        },+        {+          "end": [+            85.32,+            125.0+          ],+          "start": [+            85.32,+            35.0+          ]+        }+      ],+      "name": "CH_09",+      "pads": [+        "J1.9",+        "J2.9",+        "J3.9"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            103.1,+            125.0+          ],+          "start": [+            103.1,+            35.0+          ]+        },+        {+          "end": [+            103.1,+            35.0+          ],+          "start": [+            45.0,+            74.86+          ]+        }+      ],+      "name": "CH_10",+      "pads": [+        "J1.10",+        "J2.16",+        "J3.16"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            120.88,+            125.0+          ],+          "start": [+            120.88,+            35.0+          ]+        },+        {+          "end": [+            120.88,+            35.0+          ],+          "start": [+            45.0,+            77.4+          ]+        }+      ],+      "name": "CH_11",+      "pads": [+        "J1.11",+        "J2.23",+        "J3.23"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            77.7,+            35.0+          ],+          "start": [+            45.0,+            79.94+          ]+        },+        {+          "end": [+            77.7,+            125.0+          ],+          "start": [+            45.0,+            79.94+          ]+        }+      ],+      "name": "CH_12",+      "pads": [+        "J1.12",+        "J2.6",+        "J3.6"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            95.48,+            125.0+          ],+          "start": [+            95.48,+            35.0+          ]+        },+        {+          "end": [+            95.48,+            125.0+          ],+          "start": [+            45.0,+            82.48+          ]+        }+      ],+      "name": "CH_13",+      "pads": [+        "J1.13",+        "J2.13",+        "J3.13"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            113.26,+            125.0+          ],+          "start": [+            113.26,+            35.0+          ]+        },+        {+          "end": [+            113.26,+            125.0+          ],+          "start": [+            45.0,+            85.02+          ]+        }+      ],+      "name": "CH_14",+      "pads": [+        "J1.14",+        "J2.20",+        "J3.20"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            70.08,+            125.0+          ],+          "start": [+            45.0,+            87.56+          ]+        },+        {+          "end": [+            70.08,+            35.0+          ],+          "start": [+            45.0,+            87.56+          ]+        }+      ],+      "name": "CH_15",+      "pads": [+        "J1.15",+        "J2.3",+        "J3.3"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            87.86,+            125.0+          ],+          "start": [+            45.0,+            90.1+          ]+        },+        {+          "end": [+            87.86,+            125.0+          ],+          "start": [+            87.86,+            35.0+          ]+        }+      ],+      "name": "CH_16",+      "pads": [+        "J1.16",+        "J2.10",+        "J3.10"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            105.64,+            125.0+          ],+          "start": [+            105.64,+            35.0+          ]+        },+        {+          "end": [+            105.64,+            125.0+          ],+          "start": [+            45.0,+            92.64+          ]+        }+      ],+      "name": "CH_17",+      "pads": [+        "J1.17",+        "J2.17",+        "J3.17"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            123.42,+            125.0+          ],+          "start": [+            123.42,+            35.0+          ]+        },+        {+          "end": [+            123.42,+            125.0+          ],+          "start": [+            45.0,+            95.18+          ]+        }+      ],+      "name": "CH_18",+      "pads": [+        "J1.18",+        "J2.24",+        "J3.24"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            80.24,+            125.0+          ],+          "start": [+            45.0,+            97.72+          ]+        },+        {+          "end": [+            80.24,+            125.0+          ],+          "start": [+            80.24,+            35.0+          ]+        }+      ],+      "name": "CH_19",+      "pads": [+        "J1.19",+        "J2.7",+        "J3.7"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            98.02,+            125.0+          ],+          "start": [+            45.0,+            100.26+          ]+        },+        {+          "end": [+            98.02,+            125.0+          ],+          "start": [+            98.02,+            35.0+          ]+        }+      ],+      "name": "CH_20",+      "pads": [+        "J1.20",+        "J2.14",+        "J3.14"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            115.8,+            125.0+          ],+          "start": [+            115.8,+            35.0+          ]+        },+        {+          "end": [+            115.8,+            125.0+          ],+          "start": [+            45.0,+            102.8+          ]+        }+      ],+      "name": "CH_21",+      "pads": [+        "J1.21",+        "J2.21",+        "J3.21"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            72.62,+            125.0+          ],+          "start": [+            45.0,+            105.34+          ]+        },+        {+          "end": [+            72.62,+            125.0+          ],+          "start": [+            72.62,+            35.0+          ]+        }+      ],+      "name": "CH_22",+      "pads": [+        "J1.22",+        "J2.4",+        "J3.4"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            90.4,+            125.0+          ],+          "start": [+            45.0,+            107.88+          ]+        },+        {+          "end": [+            90.4,+            125.0+          ],+          "start": [+            90.4,+            35.0+          ]+        }+      ],+      "name": "CH_23",+      "pads": [+        "J1.23",+        "J2.11",+        "J3.11"+      ],+      "segments": 0,+      "vias": 0+    },+    {+      "airwireCount": 2,+      "airwires": [+        {+          "end": [+            108.18,+            125.0+          ],+          "start": [+            45.0,+            110.42+          ]+        },+        {+          "end": [+            108.18,+            125.0+          ],+          "start": [+            108.18,+            35.0+          ]+        }+      ],+      "name": "CH_24",+      "pads": [+        "J1.24",+        "J2.18",+        "J3.18"+      ],+      "segments": 0,+      "vias": 0+    }+  ],+  "pads": [+    {+      "at": [+        45.0,+        52.0+      ],+      "layers": [+        1+      ],+      "name": "J1.1",+      "net": "CH_01",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        54.54+      ],+      "layers": [+        1+      ],+      "name": "J1.2",+      "net": "CH_02",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        57.08+      ],+      "layers": [+        1+      ],+      "name": "J1.3",+      "net": "CH_03",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        59.62+      ],+      "layers": [+        1+      ],+      "name": "J1.4",+      "net": "CH_04",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        62.16+      ],+      "layers": [+        1+      ],+      "name": "J1.5",+      "net": "CH_05",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        64.7+      ],+      "layers": [+        1+      ],+      "name": "J1.6",+      "net": "CH_06",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        67.24+      ],+      "layers": [+        1+      ],+      "name": "J1.7",+      "net": "CH_07",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        69.78+      ],+      "layers": [+        1+      ],+      "name": "J1.8",+      "net": "CH_08",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        72.32+      ],+      "layers": [+        1+      ],+      "name": "J1.9",+      "net": "CH_09",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        74.86+      ],+      "layers": [+        1+      ],+      "name": "J1.10",+      "net": "CH_10",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        77.4+      ],+      "layers": [+        1+      ],+      "name": "J1.11",+      "net": "CH_11",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        79.94+      ],+      "layers": [+        1+      ],+      "name": "J1.12",+      "net": "CH_12",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        82.48+      ],+      "layers": [+        1+      ],+      "name": "J1.13",+      "net": "CH_13",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        85.02+      ],+      "layers": [+        1+      ],+      "name": "J1.14",+      "net": "CH_14",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        87.56+      ],+      "layers": [+        1+      ],+      "name": "J1.15",+      "net": "CH_15",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        90.1+      ],+      "layers": [+        1+      ],+      "name": "J1.16",+      "net": "CH_16",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        92.64+      ],+      "layers": [+        1+      ],+      "name": "J1.17",+      "net": "CH_17",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        95.18+      ],+      "layers": [+        1+      ],+      "name": "J1.18",+      "net": "CH_18",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        97.72+      ],+      "layers": [+        1+      ],+      "name": "J1.19",+      "net": "CH_19",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        100.26+      ],+      "layers": [+        1+      ],+      "name": "J1.20",+      "net": "CH_20",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        102.8+      ],+      "layers": [+        1+      ],+      "name": "J1.21",+      "net": "CH_21",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        105.34+      ],+      "layers": [+        1+      ],+      "name": "J1.22",+      "net": "CH_22",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        107.88+      ],+      "layers": [+        1+      ],+      "name": "J1.23",+      "net": "CH_23",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        110.42+      ],+      "layers": [+        1+      ],+      "name": "J1.24",+      "net": "CH_24",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        65.0,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.1",+      "net": "CH_01",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        82.78,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.8",+      "net": "CH_02",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        100.56,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.15",+      "net": "CH_03",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        118.34,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.22",+      "net": "CH_04",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        75.16,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.5",+      "net": "CH_05",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        92.94,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.12",+      "net": "CH_06",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        110.72,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.19",+      "net": "CH_07",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        67.54,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.2",+      "net": "CH_08",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        85.32,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.9",+      "net": "CH_09",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        103.1,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.16",+      "net": "CH_10",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        120.88,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.23",+      "net": "CH_11",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        77.7,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.6",+      "net": "CH_12",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        95.48,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.13",+      "net": "CH_13",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        113.26,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.20",+      "net": "CH_14",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        70.08,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.3",+      "net": "CH_15",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        87.86,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.10",+      "net": "CH_16",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        105.64,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.17",+      "net": "CH_17",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        123.42,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.24",+      "net": "CH_18",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        80.24,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.7",+      "net": "CH_19",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        98.02,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.14",+      "net": "CH_20",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        115.8,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.21",+      "net": "CH_21",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        72.62,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.4",+      "net": "CH_22",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        90.4,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.11",+      "net": "CH_23",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        108.18,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.18",+      "net": "CH_24",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        65.0,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.1",+      "net": "CH_01",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        82.78,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.8",+      "net": "CH_02",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        100.56,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.15",+      "net": "CH_03",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        118.34,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.22",+      "net": "CH_04",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        75.16,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.5",+      "net": "CH_05",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        92.94,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.12",+      "net": "CH_06",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        110.72,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.19",+      "net": "CH_07",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        67.54,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.2",+      "net": "CH_08",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        85.32,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.9",+      "net": "CH_09",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        103.1,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.16",+      "net": "CH_10",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        120.88,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.23",+      "net": "CH_11",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        77.7,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.6",+      "net": "CH_12",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        95.48,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.13",+      "net": "CH_13",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        113.26,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.20",+      "net": "CH_14",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        70.08,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.3",+      "net": "CH_15",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        87.86,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.10",+      "net": "CH_16",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        105.64,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.17",+      "net": "CH_17",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        123.42,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.24",+      "net": "CH_18",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        80.24,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.7",+      "net": "CH_19",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        98.02,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.14",+      "net": "CH_20",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        115.8,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.21",+      "net": "CH_21",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        72.62,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.4",+      "net": "CH_22",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        90.4,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.11",+      "net": "CH_23",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        108.18,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.18",+      "net": "CH_24",+      "radius": 1.0606601717798214+    }+  ],+  "remainingNets": [+    "CH_01",+    "CH_02",+    "CH_03",+    "CH_04",+    "CH_05",+    "CH_06",+    "CH_07",+    "CH_08",+    "CH_09",+    "CH_10",+    "CH_11",+    "CH_12",+    "CH_13",+    "CH_14",+    "CH_15",+    "CH_16",+    "CH_17",+    "CH_18",+    "CH_19",+    "CH_20",+    "CH_21",+    "CH_22",+    "CH_23",+    "CH_24"+  ],+  "revision": "9f99af53d850f7bf1fb389bc73b03f364424cdb27acf62e437707627dbf1022e",+  "segmentCount": 0,+  "segments": [],+  "shell": "rust",+  "status": "ok",+  "statusVerb": "fusion_get_app_state",+  "success": true,+  "timeoutSeconds": 60,+  "units": "mm",+  "viaCount": 0,+  "vias": []+}
demo/routing/crossbar/take-01/calls.json.gzadded
⋯ 1 unchanged line ⋯
demo/routing/crossbar/take-01/export.jsonadded+33
@@ -0,0 +1,33 @@+{+  "_hint": "Window opened/changed in the BACKGROUND - the user's focus was NOT touched; do NOT foreground anything to compensate. Render results via fusion_state. If the USER asks to watch, re-call with {\"foreground\": true, \"foregroundReason\": \"<why, shown to the user as a 3s caption>\"}.",+  "_timeoutHint": "ab waits up to 180s for this verb before the request times out. If it's a long operation (cloud open / download / export), DON'T treat a timeout as failure \u2014 the work usually keeps running on the bridge. Poll `fusion_get_app_state` until it reports done.",+  "data": {+    "createdDocument": null,+    "documentName": "fusion-crossbar-24",+    "result": {+      "paths": [+        "C:/Users/john/Documents/fusion-crossbar-dev/fusion-crossbar-24-routed.fbrd",+        "C:/Users/john/Documents/fusion-crossbar-dev/fusion-crossbar-24-routed.brd"+      ],+      "success": true+    }+  },+  "durationMs": 787,+  "error": "",+  "shell": "rust",+  "status": "ok",+  "statusVerb": "fusion_get_app_state",+  "success": true,+  "timeoutSeconds": 180,+  "windowEtiquette": "background",+  "message": "Modeling script ran successfully.",+  "createdDocument": null,+  "documentName": "fusion-crossbar-24",+  "result": {+    "paths": [+      "C:/Users/john/Documents/fusion-crossbar-dev/fusion-crossbar-24-routed.fbrd",+      "C:/Users/john/Documents/fusion-crossbar-dev/fusion-crossbar-24-routed.brd"+    ],+    "success": true+  }+}
demo/routing/crossbar/take-01/final.jsonadded+3373
@@ -0,0 +1,3373 @@+{+  "_timeoutHint": "ab waits up to 60s for this verb before the request times out. If it's a long operation (cloud open / download / export), DON'T treat a timeout as failure \u2014 the work usually keeps running on the bridge. Poll `fusion_get_app_state` until it reports done.",+  "airwireCount": 0,+  "boardId": "ecc4548c-cb68-489f-8b82-46e7d41d61c0",+  "bridgeVersion": "1.10.0-dev.routing.2",+  "connectivitySource": "Fusion exported airwires; mutation paths recompute RATSNEST",+  "documentName": "fusion-crossbar-24",+  "drc": {+    "airwireCount": 0,+    "checked": true,+    "clean": true,+    "errorCount": 0,+    "errors": [],+    "source": "Autodesk DRC + UL_BOARD.errors",+    "warningCount": 0+  },+  "durationMs": 522,+  "error": "",+  "nets": [+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_01",+      "pads": [+        "J1.1",+        "J2.1",+        "J3.1"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_02",+      "pads": [+        "J1.2",+        "J2.8",+        "J3.8"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_03",+      "pads": [+        "J1.3",+        "J2.15",+        "J3.15"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_04",+      "pads": [+        "J1.4",+        "J2.22",+        "J3.22"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_05",+      "pads": [+        "J1.5",+        "J2.5",+        "J3.5"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_06",+      "pads": [+        "J1.6",+        "J2.12",+        "J3.12"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_07",+      "pads": [+        "J1.7",+        "J2.19",+        "J3.19"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_08",+      "pads": [+        "J1.8",+        "J2.2",+        "J3.2"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_09",+      "pads": [+        "J1.9",+        "J2.9",+        "J3.9"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_10",+      "pads": [+        "J1.10",+        "J2.16",+        "J3.16"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_11",+      "pads": [+        "J1.11",+        "J2.23",+        "J3.23"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_12",+      "pads": [+        "J1.12",+        "J2.6",+        "J3.6"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_13",+      "pads": [+        "J1.13",+        "J2.13",+        "J3.13"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_14",+      "pads": [+        "J1.14",+        "J2.20",+        "J3.20"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_15",+      "pads": [+        "J1.15",+        "J2.3",+        "J3.3"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_16",+      "pads": [+        "J1.16",+        "J2.10",+        "J3.10"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_17",+      "pads": [+        "J1.17",+        "J2.17",+        "J3.17"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_18",+      "pads": [+        "J1.18",+        "J2.24",+        "J3.24"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_19",+      "pads": [+        "J1.19",+        "J2.7",+        "J3.7"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_20",+      "pads": [+        "J1.20",+        "J2.14",+        "J3.14"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_21",+      "pads": [+        "J1.21",+        "J2.21",+        "J3.21"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_22",+      "pads": [+        "J1.22",+        "J2.4",+        "J3.4"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_23",+      "pads": [+        "J1.23",+        "J2.11",+        "J3.11"+      ],+      "segments": 5,+      "vias": 2+    },+    {+      "airwireCount": 0,+      "airwires": [],+      "name": "CH_24",+      "pads": [+        "J1.24",+        "J2.18",+        "J3.18"+      ],+      "segments": 5,+      "vias": 2+    }+  ],+  "pads": [+    {+      "at": [+        45.0,+        52.0+      ],+      "layers": [+        1+      ],+      "name": "J1.1",+      "net": "CH_01",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        54.54+      ],+      "layers": [+        1+      ],+      "name": "J1.2",+      "net": "CH_02",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        57.08+      ],+      "layers": [+        1+      ],+      "name": "J1.3",+      "net": "CH_03",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        59.62+      ],+      "layers": [+        1+      ],+      "name": "J1.4",+      "net": "CH_04",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        62.16+      ],+      "layers": [+        1+      ],+      "name": "J1.5",+      "net": "CH_05",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        64.7+      ],+      "layers": [+        1+      ],+      "name": "J1.6",+      "net": "CH_06",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        67.24+      ],+      "layers": [+        1+      ],+      "name": "J1.7",+      "net": "CH_07",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        69.78+      ],+      "layers": [+        1+      ],+      "name": "J1.8",+      "net": "CH_08",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        72.32+      ],+      "layers": [+        1+      ],+      "name": "J1.9",+      "net": "CH_09",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        74.86+      ],+      "layers": [+        1+      ],+      "name": "J1.10",+      "net": "CH_10",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        77.4+      ],+      "layers": [+        1+      ],+      "name": "J1.11",+      "net": "CH_11",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        79.94+      ],+      "layers": [+        1+      ],+      "name": "J1.12",+      "net": "CH_12",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        82.48+      ],+      "layers": [+        1+      ],+      "name": "J1.13",+      "net": "CH_13",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        85.02+      ],+      "layers": [+        1+      ],+      "name": "J1.14",+      "net": "CH_14",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        87.56+      ],+      "layers": [+        1+      ],+      "name": "J1.15",+      "net": "CH_15",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        90.1+      ],+      "layers": [+        1+      ],+      "name": "J1.16",+      "net": "CH_16",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        92.64+      ],+      "layers": [+        1+      ],+      "name": "J1.17",+      "net": "CH_17",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        95.18+      ],+      "layers": [+        1+      ],+      "name": "J1.18",+      "net": "CH_18",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        97.72+      ],+      "layers": [+        1+      ],+      "name": "J1.19",+      "net": "CH_19",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        100.26+      ],+      "layers": [+        1+      ],+      "name": "J1.20",+      "net": "CH_20",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        102.8+      ],+      "layers": [+        1+      ],+      "name": "J1.21",+      "net": "CH_21",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        105.34+      ],+      "layers": [+        1+      ],+      "name": "J1.22",+      "net": "CH_22",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        107.88+      ],+      "layers": [+        1+      ],+      "name": "J1.23",+      "net": "CH_23",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        45.0,+        110.42+      ],+      "layers": [+        1+      ],+      "name": "J1.24",+      "net": "CH_24",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        65.0,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.1",+      "net": "CH_01",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        82.78,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.8",+      "net": "CH_02",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        100.56,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.15",+      "net": "CH_03",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        118.34,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.22",+      "net": "CH_04",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        75.16,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.5",+      "net": "CH_05",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        92.94,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.12",+      "net": "CH_06",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        110.72,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.19",+      "net": "CH_07",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        67.54,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.2",+      "net": "CH_08",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        85.32,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.9",+      "net": "CH_09",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        103.1,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.16",+      "net": "CH_10",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        120.88,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.23",+      "net": "CH_11",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        77.7,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.6",+      "net": "CH_12",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        95.48,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.13",+      "net": "CH_13",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        113.26,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.20",+      "net": "CH_14",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        70.08,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.3",+      "net": "CH_15",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        87.86,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.10",+      "net": "CH_16",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        105.64,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.17",+      "net": "CH_17",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        123.42,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.24",+      "net": "CH_18",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        80.24,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.7",+      "net": "CH_19",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        98.02,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.14",+      "net": "CH_20",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        115.8,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.21",+      "net": "CH_21",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        72.62,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.4",+      "net": "CH_22",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        90.4,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.11",+      "net": "CH_23",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        108.18,+        35.0+      ],+      "layers": [+        1+      ],+      "name": "J2.18",+      "net": "CH_24",+      "radius": 1.0606601717798212+    },+    {+      "at": [+        65.0,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.1",+      "net": "CH_01",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        82.78,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.8",+      "net": "CH_02",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        100.56,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.15",+      "net": "CH_03",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        118.34,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.22",+      "net": "CH_04",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        75.16,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.5",+      "net": "CH_05",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        92.94,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.12",+      "net": "CH_06",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        110.72,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.19",+      "net": "CH_07",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        67.54,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.2",+      "net": "CH_08",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        85.32,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.9",+      "net": "CH_09",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        103.1,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.16",+      "net": "CH_10",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        120.88,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.23",+      "net": "CH_11",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        77.7,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.6",+      "net": "CH_12",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        95.48,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.13",+      "net": "CH_13",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        113.26,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.20",+      "net": "CH_14",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        70.08,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.3",+      "net": "CH_15",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        87.86,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.10",+      "net": "CH_16",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        105.64,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.17",+      "net": "CH_17",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        123.42,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.24",+      "net": "CH_18",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        80.24,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.7",+      "net": "CH_19",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        98.02,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.14",+      "net": "CH_20",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        115.8,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.21",+      "net": "CH_21",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        72.62,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.4",+      "net": "CH_22",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        90.4,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.11",+      "net": "CH_23",+      "radius": 1.0606601717798214+    },+    {+      "at": [+        108.18,+        125.0+      ],+      "layers": [+        1,+        16+      ],+      "name": "J3.18",+      "net": "CH_24",+      "radius": 1.0606601717798214+    }+  ],+  "remainingNets": [],+  "revision": "9b48509d2bb57daf0cf653b36bdd273209f00147265f6463c4ba1b88a2c87f81",+  "segmentCount": 120,+  "segments": [+    {+      "curve": 0.0,+      "end": [+        55.0,+        52.0+      ],+      "layer": 1,+      "net": "CH_01",+      "start": [+        45.0,+        52.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        65.0,+        52.0+      ],+      "layer": 1,+      "net": "CH_01",+      "start": [+        55.0,+        52.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        65.0,+        42.0+      ],+      "layer": 16,+      "net": "CH_01",+      "start": [+        65.0,+        52.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        65.0,+        35.0+      ],+      "layer": 1,+      "net": "CH_01",+      "start": [+        65.0,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        65.0,+        125.0+      ],+      "layer": 16,+      "net": "CH_01",+      "start": [+        65.0,+        52.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        54.54+      ],+      "layer": 1,+      "net": "CH_02",+      "start": [+        45.0,+        54.54+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        82.78,+        54.54+      ],+      "layer": 1,+      "net": "CH_02",+      "start": [+        55.0,+        54.54+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        82.78,+        42.0+      ],+      "layer": 16,+      "net": "CH_02",+      "start": [+        82.78,+        54.54+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        82.78,+        35.0+      ],+      "layer": 1,+      "net": "CH_02",+      "start": [+        82.78,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        82.78,+        125.0+      ],+      "layer": 16,+      "net": "CH_02",+      "start": [+        82.78,+        54.54+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        57.08+      ],+      "layer": 1,+      "net": "CH_03",+      "start": [+        45.0,+        57.08+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        100.56,+        57.08+      ],+      "layer": 1,+      "net": "CH_03",+      "start": [+        55.0,+        57.08+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        100.56,+        42.0+      ],+      "layer": 16,+      "net": "CH_03",+      "start": [+        100.56,+        57.08+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        100.56,+        35.0+      ],+      "layer": 1,+      "net": "CH_03",+      "start": [+        100.56,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        100.56,+        125.0+      ],+      "layer": 16,+      "net": "CH_03",+      "start": [+        100.56,+        57.08+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        59.62+      ],+      "layer": 1,+      "net": "CH_04",+      "start": [+        45.0,+        59.62+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        118.34,+        59.62+      ],+      "layer": 1,+      "net": "CH_04",+      "start": [+        55.0,+        59.62+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        118.34,+        42.0+      ],+      "layer": 16,+      "net": "CH_04",+      "start": [+        118.34,+        59.62+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        118.34,+        35.0+      ],+      "layer": 1,+      "net": "CH_04",+      "start": [+        118.34,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        118.34,+        125.0+      ],+      "layer": 16,+      "net": "CH_04",+      "start": [+        118.34,+        59.62+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        62.16+      ],+      "layer": 1,+      "net": "CH_05",+      "start": [+        45.0,+        62.16+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        75.16,+        62.16+      ],+      "layer": 1,+      "net": "CH_05",+      "start": [+        55.0,+        62.16+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        75.16,+        42.0+      ],+      "layer": 16,+      "net": "CH_05",+      "start": [+        75.16,+        62.16+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        75.16,+        35.0+      ],+      "layer": 1,+      "net": "CH_05",+      "start": [+        75.16,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        75.16,+        125.0+      ],+      "layer": 16,+      "net": "CH_05",+      "start": [+        75.16,+        62.16+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        64.7+      ],+      "layer": 1,+      "net": "CH_06",+      "start": [+        45.0,+        64.7+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        92.94,+        64.7+      ],+      "layer": 1,+      "net": "CH_06",+      "start": [+        55.0,+        64.7+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        92.94,+        42.0+      ],+      "layer": 16,+      "net": "CH_06",+      "start": [+        92.94,+        64.7+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        92.94,+        35.0+      ],+      "layer": 1,+      "net": "CH_06",+      "start": [+        92.94,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        92.94,+        125.0+      ],+      "layer": 16,+      "net": "CH_06",+      "start": [+        92.94,+        64.7+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        67.24+      ],+      "layer": 1,+      "net": "CH_07",+      "start": [+        45.0,+        67.24+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        110.72,+        67.24+      ],+      "layer": 1,+      "net": "CH_07",+      "start": [+        55.0,+        67.24+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        110.72,+        42.0+      ],+      "layer": 16,+      "net": "CH_07",+      "start": [+        110.72,+        67.24+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        110.72,+        35.0+      ],+      "layer": 1,+      "net": "CH_07",+      "start": [+        110.72,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        110.72,+        125.0+      ],+      "layer": 16,+      "net": "CH_07",+      "start": [+        110.72,+        67.24+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        69.78+      ],+      "layer": 1,+      "net": "CH_08",+      "start": [+        45.0,+        69.78+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        67.54,+        69.78+      ],+      "layer": 1,+      "net": "CH_08",+      "start": [+        55.0,+        69.78+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        67.54,+        42.0+      ],+      "layer": 16,+      "net": "CH_08",+      "start": [+        67.54,+        69.78+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        67.54,+        35.0+      ],+      "layer": 1,+      "net": "CH_08",+      "start": [+        67.54,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        67.54,+        125.0+      ],+      "layer": 16,+      "net": "CH_08",+      "start": [+        67.54,+        69.78+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        72.32+      ],+      "layer": 1,+      "net": "CH_09",+      "start": [+        45.0,+        72.32+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        85.32,+        72.32+      ],+      "layer": 1,+      "net": "CH_09",+      "start": [+        55.0,+        72.32+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        85.32,+        42.0+      ],+      "layer": 16,+      "net": "CH_09",+      "start": [+        85.32,+        72.32+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        85.32,+        35.0+      ],+      "layer": 1,+      "net": "CH_09",+      "start": [+        85.32,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        85.32,+        125.0+      ],+      "layer": 16,+      "net": "CH_09",+      "start": [+        85.32,+        72.32+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        74.86+      ],+      "layer": 1,+      "net": "CH_10",+      "start": [+        45.0,+        74.86+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        103.1,+        74.86+      ],+      "layer": 1,+      "net": "CH_10",+      "start": [+        55.0,+        74.86+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        103.1,+        42.0+      ],+      "layer": 16,+      "net": "CH_10",+      "start": [+        103.1,+        74.86+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        103.1,+        35.0+      ],+      "layer": 1,+      "net": "CH_10",+      "start": [+        103.1,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        103.1,+        125.0+      ],+      "layer": 16,+      "net": "CH_10",+      "start": [+        103.1,+        74.86+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        77.4+      ],+      "layer": 1,+      "net": "CH_11",+      "start": [+        45.0,+        77.4+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        120.88,+        77.4+      ],+      "layer": 1,+      "net": "CH_11",+      "start": [+        55.0,+        77.4+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        120.88,+        42.0+      ],+      "layer": 16,+      "net": "CH_11",+      "start": [+        120.88,+        77.4+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        120.88,+        35.0+      ],+      "layer": 1,+      "net": "CH_11",+      "start": [+        120.88,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        120.88,+        125.0+      ],+      "layer": 16,+      "net": "CH_11",+      "start": [+        120.88,+        77.4+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        79.94+      ],+      "layer": 1,+      "net": "CH_12",+      "start": [+        45.0,+        79.94+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        77.7,+        79.94+      ],+      "layer": 1,+      "net": "CH_12",+      "start": [+        55.0,+        79.94+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        77.7,+        42.0+      ],+      "layer": 16,+      "net": "CH_12",+      "start": [+        77.7,+        79.94+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        77.7,+        35.0+      ],+      "layer": 1,+      "net": "CH_12",+      "start": [+        77.7,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        77.7,+        125.0+      ],+      "layer": 16,+      "net": "CH_12",+      "start": [+        77.7,+        79.94+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        82.48+      ],+      "layer": 1,+      "net": "CH_13",+      "start": [+        45.0,+        82.48+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        95.48,+        82.48+      ],+      "layer": 1,+      "net": "CH_13",+      "start": [+        55.0,+        82.48+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        95.48,+        42.0+      ],+      "layer": 16,+      "net": "CH_13",+      "start": [+        95.48,+        82.48+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        95.48,+        35.0+      ],+      "layer": 1,+      "net": "CH_13",+      "start": [+        95.48,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        95.48,+        125.0+      ],+      "layer": 16,+      "net": "CH_13",+      "start": [+        95.48,+        82.48+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        85.02+      ],+      "layer": 1,+      "net": "CH_14",+      "start": [+        45.0,+        85.02+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        113.26,+        85.02+      ],+      "layer": 1,+      "net": "CH_14",+      "start": [+        55.0,+        85.02+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        113.26,+        42.0+      ],+      "layer": 16,+      "net": "CH_14",+      "start": [+        113.26,+        85.02+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        113.26,+        35.0+      ],+      "layer": 1,+      "net": "CH_14",+      "start": [+        113.26,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        113.26,+        125.0+      ],+      "layer": 16,+      "net": "CH_14",+      "start": [+        113.26,+        85.02+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        87.56+      ],+      "layer": 1,+      "net": "CH_15",+      "start": [+        45.0,+        87.56+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        70.08,+        87.56+      ],+      "layer": 1,+      "net": "CH_15",+      "start": [+        55.0,+        87.56+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        70.08,+        42.0+      ],+      "layer": 16,+      "net": "CH_15",+      "start": [+        70.08,+        87.56+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        70.08,+        35.0+      ],+      "layer": 1,+      "net": "CH_15",+      "start": [+        70.08,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        70.08,+        125.0+      ],+      "layer": 16,+      "net": "CH_15",+      "start": [+        70.08,+        87.56+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        90.1+      ],+      "layer": 1,+      "net": "CH_16",+      "start": [+        45.0,+        90.1+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        87.86,+        90.1+      ],+      "layer": 1,+      "net": "CH_16",+      "start": [+        55.0,+        90.1+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        87.86,+        42.0+      ],+      "layer": 16,+      "net": "CH_16",+      "start": [+        87.86,+        90.1+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        87.86,+        35.0+      ],+      "layer": 1,+      "net": "CH_16",+      "start": [+        87.86,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        87.86,+        125.0+      ],+      "layer": 16,+      "net": "CH_16",+      "start": [+        87.86,+        90.1+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        92.64+      ],+      "layer": 1,+      "net": "CH_17",+      "start": [+        45.0,+        92.64+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        105.64,+        92.64+      ],+      "layer": 1,+      "net": "CH_17",+      "start": [+        55.0,+        92.64+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        105.64,+        42.0+      ],+      "layer": 16,+      "net": "CH_17",+      "start": [+        105.64,+        92.64+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        105.64,+        35.0+      ],+      "layer": 1,+      "net": "CH_17",+      "start": [+        105.64,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        105.64,+        125.0+      ],+      "layer": 16,+      "net": "CH_17",+      "start": [+        105.64,+        92.64+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        95.18+      ],+      "layer": 1,+      "net": "CH_18",+      "start": [+        45.0,+        95.18+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        123.42,+        95.18+      ],+      "layer": 1,+      "net": "CH_18",+      "start": [+        55.0,+        95.18+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        123.42,+        42.0+      ],+      "layer": 16,+      "net": "CH_18",+      "start": [+        123.42,+        95.18+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        123.42,+        35.0+      ],+      "layer": 1,+      "net": "CH_18",+      "start": [+        123.42,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        123.42,+        125.0+      ],+      "layer": 16,+      "net": "CH_18",+      "start": [+        123.42,+        95.18+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        97.72+      ],+      "layer": 1,+      "net": "CH_19",+      "start": [+        45.0,+        97.72+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        80.24,+        97.72+      ],+      "layer": 1,+      "net": "CH_19",+      "start": [+        55.0,+        97.72+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        80.24,+        42.0+      ],+      "layer": 16,+      "net": "CH_19",+      "start": [+        80.24,+        97.72+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        80.24,+        35.0+      ],+      "layer": 1,+      "net": "CH_19",+      "start": [+        80.24,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        80.24,+        125.0+      ],+      "layer": 16,+      "net": "CH_19",+      "start": [+        80.24,+        97.72+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        100.26+      ],+      "layer": 1,+      "net": "CH_20",+      "start": [+        45.0,+        100.26+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        98.02,+        100.26+      ],+      "layer": 1,+      "net": "CH_20",+      "start": [+        55.0,+        100.26+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        98.02,+        42.0+      ],+      "layer": 16,+      "net": "CH_20",+      "start": [+        98.02,+        100.26+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        98.02,+        35.0+      ],+      "layer": 1,+      "net": "CH_20",+      "start": [+        98.02,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        98.02,+        125.0+      ],+      "layer": 16,+      "net": "CH_20",+      "start": [+        98.02,+        100.26+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        102.8+      ],+      "layer": 1,+      "net": "CH_21",+      "start": [+        45.0,+        102.8+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        115.8,+        102.8+      ],+      "layer": 1,+      "net": "CH_21",+      "start": [+        55.0,+        102.8+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        115.8,+        42.0+      ],+      "layer": 16,+      "net": "CH_21",+      "start": [+        115.8,+        102.8+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        115.8,+        35.0+      ],+      "layer": 1,+      "net": "CH_21",+      "start": [+        115.8,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        115.8,+        125.0+      ],+      "layer": 16,+      "net": "CH_21",+      "start": [+        115.8,+        102.8+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        105.34+      ],+      "layer": 1,+      "net": "CH_22",+      "start": [+        45.0,+        105.34+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        72.62,+        105.34+      ],+      "layer": 1,+      "net": "CH_22",+      "start": [+        55.0,+        105.34+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        72.62,+        42.0+      ],+      "layer": 16,+      "net": "CH_22",+      "start": [+        72.62,+        105.34+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        72.62,+        35.0+      ],+      "layer": 1,+      "net": "CH_22",+      "start": [+        72.62,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        72.62,+        125.0+      ],+      "layer": 16,+      "net": "CH_22",+      "start": [+        72.62,+        105.34+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        107.88+      ],+      "layer": 1,+      "net": "CH_23",+      "start": [+        45.0,+        107.88+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        90.4,+        107.88+      ],+      "layer": 1,+      "net": "CH_23",+      "start": [+        55.0,+        107.88+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        90.4,+        42.0+      ],+      "layer": 16,+      "net": "CH_23",+      "start": [+        90.4,+        107.88+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        90.4,+        35.0+      ],+      "layer": 1,+      "net": "CH_23",+      "start": [+        90.4,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        90.4,+        125.0+      ],+      "layer": 16,+      "net": "CH_23",+      "start": [+        90.4,+        107.88+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        55.0,+        110.42+      ],+      "layer": 1,+      "net": "CH_24",+      "start": [+        45.0,+        110.42+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        108.18,+        110.42+      ],+      "layer": 1,+      "net": "CH_24",+      "start": [+        55.0,+        110.42+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        108.18,+        42.0+      ],+      "layer": 16,+      "net": "CH_24",+      "start": [+        108.18,+        110.42+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        108.18,+        35.0+      ],+      "layer": 1,+      "net": "CH_24",+      "start": [+        108.18,+        42.0+      ],+      "width": 0.3+    },+    {+      "curve": 0.0,+      "end": [+        108.18,+        125.0+      ],+      "layer": 16,+      "net": "CH_24",+      "start": [+        108.18,+        110.42+      ],+      "width": 0.3+    }+  ],+  "shell": "rust",+  "status": "ok",+  "statusVerb": "fusion_get_app_state",+  "success": true,+  "timeoutSeconds": 60,+  "units": "mm",+  "viaCount": 48,+  "vias": [+    {+      "at": [+        65.0,+        52.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_01"+    },+    {+      "at": [+        65.0,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_01"+    },+    {+      "at": [+        82.78,+        54.54+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_02"+    },+    {+      "at": [+        82.78,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_02"+    },+    {+      "at": [+        100.56,+        57.08+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_03"+    },+    {+      "at": [+        100.56,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_03"+    },+    {+      "at": [+        118.34,+        59.62+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_04"+    },+    {+      "at": [+        118.34,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_04"+    },+    {+      "at": [+        75.16,+        62.16+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_05"+    },+    {+      "at": [+        75.16,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_05"+    },+    {+      "at": [+        92.94,+        64.7+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_06"+    },+    {+      "at": [+        92.94,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_06"+    },+    {+      "at": [+        110.72,+        67.24+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_07"+    },+    {+      "at": [+        110.72,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_07"+    },+    {+      "at": [+        67.54,+        69.78+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_08"+    },+    {+      "at": [+        67.54,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_08"+    },+    {+      "at": [+        85.32,+        72.32+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_09"+    },+    {+      "at": [+        85.32,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_09"+    },+    {+      "at": [+        103.1,+        74.86+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_10"+    },+    {+      "at": [+        103.1,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_10"+    },+    {+      "at": [+        120.88,+        77.4+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_11"+    },+    {+      "at": [+        120.88,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_11"+    },+    {+      "at": [+        77.7,+        79.94+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_12"+    },+    {+      "at": [+        77.7,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_12"+    },+    {+      "at": [+        95.48,+        82.48+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_13"+    },+    {+      "at": [+        95.48,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_13"+    },+    {+      "at": [+        113.26,+        85.02+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_14"+    },+    {+      "at": [+        113.26,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_14"+    },+    {+      "at": [+        70.08,+        87.56+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_15"+    },+    {+      "at": [+        70.08,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_15"+    },+    {+      "at": [+        87.86,+        90.1+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_16"+    },+    {+      "at": [+        87.86,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_16"+    },+    {+      "at": [+        105.64,+        92.64+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_17"+    },+    {+      "at": [+        105.64,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_17"+    },+    {+      "at": [+        123.42,+        95.18+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_18"+    },+    {+      "at": [+        123.42,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_18"+    },+    {+      "at": [+        80.24,+        97.72+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_19"+    },+    {+      "at": [+        80.24,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_19"+    },+    {+      "at": [+        98.02,+        100.26+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_20"+    },+    {+      "at": [+        98.02,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_20"+    },+    {+      "at": [+        115.8,+        102.8+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_21"+    },+    {+      "at": [+        115.8,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_21"+    },+    {+      "at": [+        72.62,+        105.34+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_22"+    },+    {+      "at": [+        72.62,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_22"+    },+    {+      "at": [+        90.4,+        107.88+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_23"+    },+    {+      "at": [+        90.4,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_23"+    },+    {+      "at": [+        108.18,+        110.42+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_24"+    },+    {+      "at": [+        108.18,+        42.0+      ],+      "diameter": 0.6,+      "drill": 0.3,+      "extent": "1-16",+      "net": "CH_24"+    }+  ]+}
demo/routing/crossbar/take-01/fusion-crossbar-24-routed.brdadded+838
@@ -0,0 +1,838 @@+<?xml version="1.0" encoding="utf-8"?>+<!DOCTYPE eagle SYSTEM "eagle.dtd">+<eagle version="9.7.0">+<drawing>+<settings>+<setting alwaysvectorfont="no"/>+<setting verticaltext="up"/>+<setting violationmode="Push"/>+<drillsymbolsettings symboldiameter="650240" symbolwidth="8128">+<drill diameter="64000" />+<drill diameter="80000" />+<drill diameter="96000" />+<drill diameter="112000" />+<drill diameter="128000" />+<drill diameter="144000" />+<drill diameter="160000" />+<drill diameter="176000" />+<drill diameter="192000" />+<drill diameter="208000" />+<drill diameter="224000" />+<drill diameter="240000" />+<drill diameter="256000" />+<drill diameter="272000" />+<drill diameter="288000" />+<drill diameter="320000" />+</drillsymbolsettings>+</settings>+<grid distance="1" unitdist="mm" unit="mm" style="lines" multiple="1" display="no" altdistance="0.1" altunitdist="mm" altunit="mm"/>+<layers>+<layer number="1" name="Top" blackcolor="0xc8ff4164" whitecolor="0xccc90d0c" coloredcolor="0xccc90d0c" blackhighlight="0xccff0000" whitehighlight="0xb4ff0000" coloredhighlight="0xb4ff0000" fill="1" visible="yes" active="yes" locked="no"/>+<layer number="16" name="Bottom" blackcolor="0xc80696d7" whitecolor="0xcc0696d7" coloredcolor="0xcc0696d7" blackhighlight="0xb40000ff" whitehighlight="0xcc8252c2" coloredhighlight="0xcc8252c2" fill="1" visible="yes" active="yes" locked="no"/>+<layer number="17" name="Pads" blackcolor="0xb462d987" whitecolor="0xb462d987" coloredcolor="0xcc0dab76" blackhighlight="0xb400ff00" whitehighlight="0xb400ff00" coloredhighlight="0xb400ff00" fill="1" visible="yes" active="yes" locked="no"/>+<layer number="18" name="Vias" blackcolor="0xb462d987" whitecolor="0xb462d987" coloredcolor="0xccffcd07" blackhighlight="0xb462d987" whitehighlight="0xb462d987" coloredhighlight="0xccffcd07" fill="1" visible="yes" active="yes" locked="no"/>+<layer number="19" name="Unrouted" blackcolor="0xccd9d9d9" whitecolor="0xbbc8c832" coloredcolor="0xbbc8c832" blackhighlight="0xb462d987" whitehighlight="0xb462d987" coloredhighlight="0xccffcd07" fill="1" visible="yes" active="yes" locked="no"/>+<layer number="20" name="Dimension" blackcolor="0xb462d986" whitecolor="0xb462d986" coloredcolor="0xcceec643" blackhighlight="0xb462d986" whitehighlight="0xb462d986" coloredhighlight="0xcceec643" fill="1" visible="yes" active="yes" locked="no"/>+<layer number="21" name="tPlace" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd134" coloredhighlight="0xccafd134" fill="1" visible="yes" active="yes" locked="no"/>+<layer number="22" name="bPlace" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd134" coloredhighlight="0xccafd134" fill="1" visible="yes" active="yes" locked="no"/>+<layer number="23" name="tOrigins" blackcolor="0xc8ffffff" whitecolor="0xccafd134" coloredcolor="0xccafd134" blackhighlight="0xc8ffffff" whitehighlight="0xccafd134" coloredhighlight="0xccafd134" fill="1" visible="yes" active="yes" locked="no"/>+<layer number="24" name="bOrigins" blackcolor="0xc8ffffff" whitecolor="0xccafd134" coloredcolor="0xccafd134" blackhighlight="0xc8ffffff" whitehighlight="0xccafd134" coloredhighlight="0xccafd134" fill="1" visible="yes" active="yes" locked="no"/>+<layer number="25" name="tNames" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd134" coloredhighlight="0xccafd134" fill="1" visible="yes" active="yes" locked="no"/>+<layer number="26" name="bNames" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd134" coloredhighlight="0xccafd134" fill="1" visible="yes" active="yes" locked="no"/>+<layer number="27" name="tValues" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd135" coloredhighlight="0xccafd135" fill="1" visible="yes" active="yes" locked="no"/>+<layer number="28" name="bValues" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd136" coloredhighlight="0xccafd136" fill="1" visible="yes" active="yes" locked="no"/>+<layer number="29" name="tStop" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd137" coloredhighlight="0xccafd137" fill="3" visible="no" active="yes" locked="no"/>+<layer number="30" name="bStop" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd138" coloredhighlight="0xccafd138" fill="6" visible="no" active="yes" locked="no"/>+<layer number="31" name="tCream" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd139" coloredhighlight="0xccafd139" fill="4" visible="no" active="yes" locked="no"/>+<layer number="32" name="bCream" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd140" coloredhighlight="0xccafd140" fill="5" visible="no" active="yes" locked="no"/>+<layer number="33" name="tFinish" blackcolor="0xccd9d9d9" whitecolor="0xbbc8c832" coloredcolor="0xbbc8c832" blackhighlight="0xb462d987" whitehighlight="0xb462d987" coloredhighlight="0xccffcd07" fill="3" visible="no" active="yes" locked="no"/>+<layer number="34" name="bFinish" blackcolor="0xccd9d9d9" whitecolor="0xbbc8c832" coloredcolor="0xbbc8c832" blackhighlight="0xb462d987" whitehighlight="0xb462d987" coloredhighlight="0xccffcd07" fill="6" visible="no" active="yes" locked="no"/>+<layer number="35" name="tGlue" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd140" coloredhighlight="0xccafd140" fill="4" visible="no" active="yes" locked="no"/>+<layer number="36" name="bGlue" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd140" coloredhighlight="0xccafd140" fill="5" visible="no" active="yes" locked="no"/>+<layer number="37" name="tTest" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd140" coloredhighlight="0xccafd140" fill="1" visible="no" active="yes" locked="no"/>+<layer number="38" name="bTest" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd140" coloredhighlight="0xccafd140" fill="1" visible="no" active="yes" locked="no"/>+<layer number="39" name="tKeepout" blackcolor="0xc8ff4164" whitecolor="0xccc90d0c" coloredcolor="0xccc90d0c" blackhighlight="0xccff0000" whitehighlight="0xb4ff0000" coloredhighlight="0xb4ff0000" fill="11" visible="no" active="yes" locked="no"/>+<layer number="40" name="bKeepout" blackcolor="0xc80696d7" whitecolor="0xcc0696d7" coloredcolor="0xcc0696d7" blackhighlight="0xb40000ff" whitehighlight="0xcc8252c2" coloredhighlight="0xcc8252c2" fill="11" visible="no" active="yes" locked="no"/>+<layer number="41" name="RestrictCopper" blackcolor="0xc8ff4164" whitecolor="0xccc90d0c" coloredcolor="0xccc90d0c" blackhighlight="0xccff0000" whitehighlight="0xb4ff0000" coloredhighlight="0xb4ff0000" fill="10" visible="no" active="yes" locked="no"/>+<layer number="42" name="bRestrict" blackcolor="0xc80696d7" whitecolor="0xcc0696d7" coloredcolor="0xcc0696d7" blackhighlight="0xb40000ff" whitehighlight="0xcc8252c2" coloredhighlight="0xcc8252c2" fill="10" visible="no" active="yes" locked="no"/>+<layer number="43" name="vRestrict" blackcolor="0xb462d987" whitecolor="0xb462d987" coloredcolor="0xcc0dab76" blackhighlight="0xb400ff00" whitehighlight="0xb400ff00" coloredhighlight="0xb400ff00" fill="10" visible="no" active="yes" locked="no"/>+<layer number="44" name="Drills" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd140" coloredhighlight="0xccafd140" fill="1" visible="no" active="yes" locked="no"/>+<layer number="45" name="Holes" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd140" coloredhighlight="0xccafd140" fill="1" visible="no" active="yes" locked="no"/>+<layer number="46" name="Milling" blackcolor="0xcc32c8c8" whitecolor="0xb432c8c8" coloredcolor="0xb432c8c8" blackhighlight="0xb400ffff" whitehighlight="0xb400ffff" coloredhighlight="0xb400ffff" fill="1" visible="no" active="yes" locked="no"/>+<layer number="47" name="Measures" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd140" coloredhighlight="0xccafd140" fill="1" visible="no" active="yes" locked="no"/>+<layer number="48" name="Document" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd141" coloredhighlight="0xccafd141" fill="1" visible="yes" active="yes" locked="no"/>+<layer number="49" name="Reference" blackcolor="0xccc8c8c8" whitecolor="0xbb808080" coloredcolor="0xbb808080" blackhighlight="0xc8ffffff" whitehighlight="0xccafd142" coloredhighlight="0xccafd142" fill="1" visible="yes" active="yes" locked="no"/>+<layer number="91" name="Nets" blackcolor="0xdc009292" whitecolor="0xdc009292" coloredcolor="0xc8e3e3e3" blackhighlight="0xdc009292" whitehighlight="0xdc009292" coloredhighlight="0xc8e3e3e3" fill="1" visible="no" active="no" locked="no"/>+<layer number="92" name="Busses" blackcolor="0xdc009292" whitecolor="0xdc009292" coloredcolor="0xc8d62525" blackhighlight="0xdc009292" whitehighlight="0xdc009292" coloredhighlight="0xc8d62525" fill="1" visible="no" active="no" locked="no"/>+<layer number="93" name="Pins" blackcolor="0xdcbbbbbb" whitecolor="0xdcbbbbbb" coloredcolor="0xc839d437" blackhighlight="0xdcbbbbbb" whitehighlight="0xdcbbbbbb" coloredhighlight="0xc839d437" fill="1" visible="no" active="no" locked="no"/>+<layer number="94" name="Symbols" blackcolor="0xdcfac36e" whitecolor="0xdcf57c10" coloredcolor="0xc8e6e600" blackhighlight="0xdcfac36e" whitehighlight="0xdcf57c10" coloredhighlight="0xc8e6e600" fill="1" visible="no" active="no" locked="no"/>+<layer number="95" name="Names" blackcolor="0xf0b2b2b2" whitecolor="0xc8757575" coloredcolor="0xc82c7bce" blackhighlight="0xf0b2b2b2" whitehighlight="0xc8757575" coloredhighlight="0xc82c7bce" fill="1" visible="no" active="no" locked="no"/>+<layer number="96" name="Values" blackcolor="0xf0b2b2b2" whitecolor="0xc8757575" coloredcolor="0xc82c7bce" blackhighlight="0xf0b2b2b2" whitehighlight="0xc8757575" coloredhighlight="0xc82c7bce" fill="1" visible="no" active="no" locked="no"/>+<layer number="97" name="Info" blackcolor="0xf0b2b2b2" whitecolor="0xc8757575" coloredcolor="0xc89526de" blackhighlight="0xf0b2b2b2" whitehighlight="0xc8757575" coloredhighlight="0xc89526de" fill="1" visible="no" active="no" locked="no"/>+<layer number="98" name="Guide" blackcolor="0xf0b2b2b2" whitecolor="0xc8757575" coloredcolor="0xc89526de" blackhighlight="0xf0b2b2b2" whitehighlight="0xc8757575" coloredhighlight="0xc89526de" fill="1" visible="no" active="no" locked="no"/>+</layers>+<board>+<plain>+<wire x1="38" y1="24" x2="132" y2="24" width="0" layer="20"/>+<wire x1="132" y1="24" x2="132" y2="133" width="0" layer="20"/>+<wire x1="132" y1="133" x2="38" y2="133" width="0" layer="20"/>+<wire x1="38" y1="133" x2="38" y2="24" width="0" layer="20"/>+<text x="48" y="129" size="2" layer="21">ADOM / 24-NET CROSSOVER</text>+<text x="49" y="26" size="1.3" layer="21">ASTRA &gt; ADOM BRIDGE &gt; FUSION</text>+<text x="63" y="118" size="1.3" layer="21">24 NETS / 72 PADS / 2 LAYERS</text>+</plain>+<namedviews>+</namedviews>+<libraries>+<library name="FusionCrossbarFixture">+<packages>+<package name="J1" use_placeholder="yes">+<smd name="1" x="45" y="52" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="2" x="45" y="54.54" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="3" x="45" y="57.08" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="4" x="45" y="59.62" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="5" x="45" y="62.16" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="6" x="45" y="64.7" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="7" x="45" y="67.24" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="8" x="45" y="69.78" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="9" x="45" y="72.32" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="10" x="45" y="74.86" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="11" x="45" y="77.4" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="12" x="45" y="79.94" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="13" x="45" y="82.48" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="14" x="45" y="85.02" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="15" x="45" y="87.56" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="16" x="45" y="90.1" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="17" x="45" y="92.64" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="18" x="45" y="95.18" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="19" x="45" y="97.72" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="20" x="45" y="100.26" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="21" x="45" y="102.8" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="22" x="45" y="105.34" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="23" x="45" y="107.88" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="24" x="45" y="110.42" dx="1.5" dy="1.5" layer="1" roundness="20"/>+</package>+<package name="J2" use_placeholder="yes">+<smd name="1" x="65" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="8" x="82.78" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="15" x="100.56" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="22" x="118.34" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="5" x="75.16" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="12" x="92.94" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="19" x="110.72" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="2" x="67.54" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="9" x="85.32" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="16" x="103.1" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="23" x="120.88" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="6" x="77.7" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="13" x="95.48" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="20" x="113.26" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="3" x="70.08" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="10" x="87.86" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="17" x="105.64" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="24" x="123.42" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="7" x="80.24" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="14" x="98.02" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="21" x="115.8" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="4" x="72.62" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="11" x="90.4" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+<smd name="18" x="108.18" y="35" dx="1.5" dy="1.5" layer="1" roundness="20"/>+</package>+<package name="J3" use_placeholder="yes">+<pad name="1" x="65" y="125" drill="0.8" diameter="1.5"/>+<pad name="8" x="82.78" y="125" drill="0.8" diameter="1.5"/>+<pad name="15" x="100.56" y="125" drill="0.8" diameter="1.5"/>+<pad name="22" x="118.34" y="125" drill="0.8" diameter="1.5"/>+<pad name="5" x="75.16" y="125" drill="0.8" diameter="1.5"/>+<pad name="12" x="92.94" y="125" drill="0.8" diameter="1.5"/>+<pad name="19" x="110.72" y="125" drill="0.8" diameter="1.5"/>+<pad name="2" x="67.54" y="125" drill="0.8" diameter="1.5"/>+<pad name="9" x="85.32" y="125" drill="0.8" diameter="1.5"/>+<pad name="16" x="103.1" y="125" drill="0.8" diameter="1.5"/>+<pad name="23" x="120.88" y="125" drill="0.8" diameter="1.5"/>+<pad name="6" x="77.7" y="125" drill="0.8" diameter="1.5"/>+<pad name="13" x="95.48" y="125" drill="0.8" diameter="1.5"/>+<pad name="20" x="113.26" y="125" drill="0.8" diameter="1.5"/>+<pad name="3" x="70.08" y="125" drill="0.8" diameter="1.5"/>+<pad name="10" x="87.86" y="125" drill="0.8" diameter="1.5"/>+<pad name="17" x="105.64" y="125" drill="0.8" diameter="1.5"/>+<pad name="24" x="123.42" y="125" drill="0.8" diameter="1.5"/>+<pad name="7" x="80.24" y="125" drill="0.8" diameter="1.5"/>+<pad name="14" x="98.02" y="125" drill="0.8" diameter="1.5"/>+<pad name="21" x="115.8" y="125" drill="0.8" diameter="1.5"/>+<pad name="4" x="72.62" y="125" drill="0.8" diameter="1.5"/>+<pad name="11" x="90.4" y="125" drill="0.8" diameter="1.5"/>+<pad name="18" x="108.18" y="125" drill="0.8" diameter="1.5"/>+</package>+</packages>+</library>+</libraries>+<attributes>+</attributes>+<variantdefs>+</variantdefs>+<classes>+<class number="0" name="default" width="0.3" drill="0.3">+</class>+</classes>+<designrules name="FusionCrossbarFixture" version="V1">+<rules>+<rulecategory type="Copper Clearance" manualdrc="yes" livedrc="yes"/>+ <rulecategory type="Keepout Clearance" manualdrc="yes" livedrc="yes"/>+ <rulecategory type="Solder-Mask Clearance" manualdrc="yes" livedrc="yes"/>+ <rulecategory type="Dimension Clearance" manualdrc="yes" livedrc="yes"/>+ <rulecategory type="Drill Distance" manualdrc="yes" livedrc="yes"/>+ <rulecategory type="Restrict Clearance" manualdrc="yes" livedrc="yes"/>+ <rulecategory type="Minimum Drill Size" manualdrc="yes" livedrc="yes"/>+ <rulecategory type="Minimum Copper Width" manualdrc="yes" livedrc="yes"/>+ <rulecategory type="Acute Angle" manualdrc="yes" livedrc="yes"/>+ <rulecategory type="Air-Wire" manualdrc="yes" livedrc="yes"/>+ <rulecategory type="Small Gap" manualdrc="yes" livedrc="yes"/>+ <rulecategory type="Wire Stub" manualdrc="yes" livedrc="no"/>+ <rulecategory type="Matched Lengths" manualdrc="yes" livedrc="yes"/>+ <rulecategory type="Via Restrict Clearance" manualdrc="yes" livedrc="yes"/>+ <rulecategory type="Teardrop" manualdrc="no" livedrc="no"/>+ <rule type="Minimum Copper Width" enabled="yes" priority="0" onescope="class=0" value="0.3mm" preferredvalue="0.3mm" check_polywidth="no" name="minimum-copper-width-1"/>+ <rule type="Minimum Copper Width" builtin_ruleid="14" enabled="yes" priority="1" value="0.2mm" preferredvalue="0.2mm" check_polywidth="no" name="minimum-copper-width-2"/>+ <rule type="Teardrop" builtin_ruleid="22" enabled="yes" priority="0" onescope="is_via" lengthratio="0.5" widthratio="0.7" curved_sides="no" auto_generate="no" name="teardrop-1"/>+ <rule type="Teardrop" builtin_ruleid="23" enabled="yes" priority="1" onescope="is_pad" lengthratio="0.5" widthratio="0.7" curved_sides="no" auto_generate="no" name="teardrop-2"/>+ <rule type="Teardrop" builtin_ruleid="24" enabled="yes" priority="2" onescope="is_smd" lengthratio="0.5" widthratio="0.7" curved_sides="no" auto_generate="no" name="teardrop-3"/>+ <rule type="Teardrop" builtin_ruleid="25" enabled="yes" priority="3" onescope="is_wire_polygon" lengthratio="0.5" widthratio="0.9" curved_sides="no" auto_generate="no" name="teardrop-4"/>+ <rule type="Minimum Drill Size" enabled="yes" priority="0" onescope="class=0" value="0.3mm" preferredvalue="0.3mm" name="minimum-drill-size-1"/>+ <rule type="Minimum Drill Size" builtin_ruleid="15" enabled="yes" priority="1" value="0.3mm" preferredvalue="0.3mm" name="minimum-drill-size-2"/>+ <rule type="Acute Angle" builtin_ruleid="16" enabled="no" priority="0" name="acute-angle-1"/>+ <rule type="Wire Stub" builtin_ruleid="17" enabled="yes" priority="0" name="wire-stub-1"/>+ <rule type="Air-Wire" builtin_ruleid="19" enabled="yes" priority="0" name="air-wire-1"/>+ <rule type="Matched Lengths" builtin_ruleid="20" enabled="yes" priority="0" tolerance="10mm" gapfactor="2.5" name="matched-lengths-1"/>+ <rule type="Copper Clearance" builtin_ruleid="0" enabled="yes" priority="0" onescope="is_wire_polygon" otherscope="is_wire_polygon" value="0.2mm" preferredvalue="0.2mm" samesignal="no" name="copper-clearance-1"/>+ <rule type="Copper Clearance" builtin_ruleid="1" enabled="yes" priority="1" onescope="is_wire_polygon" otherscope="is_pad_smd" value="0.2mm" preferredvalue="0.2mm" samesignal="no" name="copper-clearance-2"/>+ <rule type="Copper Clearance" builtin_ruleid="2" enabled="yes" priority="2" onescope="is_wire_polygon" otherscope="is_via" value="0.2mm" preferredvalue="0.2mm" samesignal="no" name="copper-clearance-3"/>+ <rule type="Copper Clearance" builtin_ruleid="3" enabled="yes" priority="3" onescope="is_pad_smd" otherscope="is_pad_smd" value="6mil" preferredvalue="6mil" samesignal="no" name="copper-clearance-4"/>+ <rule type="Copper Clearance" builtin_ruleid="4" enabled="yes" priority="4" onescope="is_pad_smd" otherscope="is_via" value="6mil" preferredvalue="6mil" samesignal="no" name="copper-clearance-5"/>+ <rule type="Copper Clearance" builtin_ruleid="5" enabled="yes" priority="5" onescope="is_via" otherscope="is_via" value="6mil" preferredvalue="6mil" samesignal="no" name="copper-clearance-6"/>+ <rule type="Copper Clearance" builtin_ruleid="6" enabled="yes" priority="6" onescope="is_smd" otherscope="is_pad" value="6mil" preferredvalue="6mil" samesignal="yes" name="copper-clearance-7"/>+ <rule type="Copper Clearance" builtin_ruleid="7" enabled="yes" priority="7" onescope="is_smd" otherscope="is_via" value="6mil" preferredvalue="6mil" samesignal="yes" name="copper-clearance-8"/>+ <rule type="Copper Clearance" builtin_ruleid="8" enabled="yes" priority="8" onescope="is_smd" otherscope="is_smd" value="6mil" preferredvalue="6mil" samesignal="yes" name="copper-clearance-9"/>+ <rule type="Dimension Clearance" builtin_ruleid="9" enabled="yes" priority="0" value="0.5mm" preferredvalue="0.5mm" name="dimension-clearance-1"/>+ <rule type="Via Restrict Clearance" builtin_ruleid="21" enabled="yes" priority="0" value="0mil" preferredvalue="0mil" name="via-restrict-clearance-1"/>+ <rule type="Restrict Clearance" builtin_ruleid="10" enabled="yes" priority="0" value="0mil" preferredvalue="0mil" name="restrict-clearance-1"/>+ <rule type="Small Gap" builtin_ruleid="18" enabled="yes" priority="0" name="small-gap-1"/>+ <rule type="Solder-Mask Clearance" builtin_ruleid="11" enabled="no" priority="0" value="0mil" preferredvalue="0mil" check_name="yes" check_value="no" name="solder-mask-clearance-1"/>+ <rule type="Drill Distance" builtin_ruleid="12" enabled="yes" priority="0" value="6mil" preferredvalue="6mil" name="drill-distance-1"/>+ <rule type="Keepout Clearance" builtin_ruleid="13" enabled="yes" priority="0" value="0mil" preferredvalue="0mil" name="keepout-clearance-1"/>+ </rules>+<param name="mdWireWire" value="0.2mm"/>+<param name="mdWirePad" value="0.2mm"/>+<param name="mdWireVia" value="0.2mm"/>+<param name="mdPadPad" value="6mil"/>+<param name="mdPadVia" value="6mil"/>+<param name="mdViaVia" value="6mil"/>+<param name="mdSmdPad" value="6mil"/>+<param name="mdSmdVia" value="6mil"/>+<param name="mdSmdSmd" value="6mil"/>+<param name="mdCopperDimension" value="0.5mm"/>+<param name="mdDrill" value="6mil"/>+<param name="msWidth" value="0.2mm"/>+<param name="msDrill" value="0.3mm"/>+<param name="dpMaxLengthDifference" value="10mm"/>+<param name="dpGapFactor" value="2.5"/>+<description language="en">&lt;b&gt;Fusion Electronics Design Rules&lt;/b&gt;+&lt;p&gt;+The default Design Rules have been set to cover+a wide range of applications. Your particular design+may have different requirements, so please make the+necessary adjustments and save your customized+design rules under a new name.+</description>+<param name="layerSetup" value="(1*16)"/>+<param name="mtCopper" value="0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm"/>+<param name="mtIsolate" value="1.5mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm"/>+<param name="mdViaViaSameLayer" value="6mil"/>+<param name="mnLayersViaInSmd" value="2"/>+<param name="mdSmdStop" value="0mil"/>+<param name="msMicroVia" value="9.99mm"/>+<param name="msBlindViaRatio" value="0.5"/>+<param name="rvPadTop" value="0.25"/>+<param name="rvPadInner" value="0.25"/>+<param name="rvPadBottom" value="0.25"/>+<param name="rvViaOuter" value="0.25"/>+<param name="rvViaInner" value="0.25"/>+<param name="rvMicroViaOuter" value="0.25"/>+<param name="rvMicroViaInner" value="0.25"/>+<param name="rlMinPadTop" value="10mil"/>+<param name="rlMaxPadTop" value="20mil"/>+<param name="rlMinPadInner" value="10mil"/>+<param name="rlMaxPadInner" value="20mil"/>+<param name="rlMinPadBottom" value="10mil"/>+<param name="rlMaxPadBottom" value="20mil"/>+<param name="rlMinViaOuter" value="8mil"/>+<param name="rlMaxViaOuter" value="20mil"/>+<param name="rlMinViaInner" value="8mil"/>+<param name="rlMaxViaInner" value="20mil"/>+<param name="rlMinMicroViaOuter" value="4mil"/>+<param name="rlMaxMicroViaOuter" value="20mil"/>+<param name="rlMinMicroViaInner" value="4mil"/>+<param name="rlMaxMicroViaInner" value="20mil"/>+<param name="psTop" value="-1"/>+<param name="psBottom" value="-1"/>+<param name="psFirst" value="-1"/>+<param name="psElongationLong" value="100"/>+<param name="psElongationOffset" value="100"/>+<param name="mvStopFrame" value="1"/>+<param name="mvCreamFrame" value="0"/>+<param name="mlMinStopFrame" value="4mil"/>+<param name="mlMaxStopFrame" value="4mil"/>+<param name="mlMinCreamFrame" value="0mil"/>+<param name="mlMaxCreamFrame" value="0mil"/>+<param name="mlViaStopLimit" value="9999mil"/>+<param name="srRoundness" value="0"/>+<param name="srMinRoundness" value="0mil"/>+<param name="srMaxRoundness" value="0mil"/>+<param name="slThermalIsolate" value="10mil"/>+<param name="slThermalsForVias" value="0"/>+<param name="checkAngle" value="0"/>+<param name="checkRestrict" value="1"/>+<param name="checkStop" value="0"/>+<param name="checkValues" value="0"/>+<param name="checkNames" value="1"/>+<param name="checkWireStubs" value="1"/>+<param name="checkPolygonWidth" value="0"/>+<param name="useDiameter" value="13"/>+<param name="removeAnnularRing" value="0"/>+<param name="flattenRefDes" value="0"/>+<param name="maxErrors" value="999999"/>+<layerstackup name="Default Layer Stack" type="Standard Stackup" display_unit="mic" roughness_model="0">+ <layerdef type="Signal" id="{0c855fb7-b2bd-4696-a2e6-68c1f1e79c13}" layer="1" name="Top" locally_modified_material="yes">+ <material name="User Defined" thickness="0.035mm" weight="1oz" process="Electro Deposited" source="User"/>+</layerdef>+ <layerdef type="Core" id="{448e5dd7-6050-4abf-b09b-482010adcf36}" layer="1" name="Dielectric-1" locally_modified_material="yes">+ <material name="User Defined" construction="" thickness="1.5mm" resin="50%" dielectric_constant_1g="4.5" dissipation_factor_1g="0.02" glass_transition_temperature="125degC" source="User"/>+</layerdef>+ <layerdef type="Signal" id="{39fd09fa-bd24-4972-acdf-e052184e936c}" layer="16" name="Bottom" locally_modified_material="yes">+ <material name="User Defined" thickness="0.035mm" weight="1oz" process="Electro Deposited" source="User"/>+</layerdef>+ <viadef name="Thru 1:16" startlayer="1" stoplayer="16" complement="no"/>+ </layerstackup>+ </designrules>+<autorouter>+<pass name="Default">+<param name="RoutingGrid" value="50mil"/>+<param name="AutoGrid" value="1"/>+<param name="Efforts" value="0"/>+<param name="TopRouterVariant" value="1"/>+<param name="tpViaShape" value="round"/>+<param name="PrefDir.1" value="a"/>+<param name="PrefDir.2" value="0"/>+<param name="PrefDir.3" value="0"/>+<param name="PrefDir.4" value="0"/>+<param name="PrefDir.5" value="0"/>+<param name="PrefDir.6" value="0"/>+<param name="PrefDir.7" value="0"/>+<param name="PrefDir.8" value="0"/>+<param name="PrefDir.9" value="0"/>+<param name="PrefDir.10" value="0"/>+<param name="PrefDir.11" value="0"/>+<param name="PrefDir.12" value="0"/>+<param name="PrefDir.13" value="0"/>+<param name="PrefDir.14" value="0"/>+<param name="PrefDir.15" value="0"/>+<param name="PrefDir.16" value="a"/>+<param name="cfVia" value="8"/>+<param name="cfNonPref" value="5"/>+<param name="cfChangeDir" value="2"/>+<param name="cfOrthStep" value="2"/>+<param name="cfDiagStep" value="3"/>+<param name="cfExtdStep" value="0"/>+<param name="cfBonusStep" value="1"/>+<param name="cfMalusStep" value="1"/>+<param name="cfPadImpact" value="4"/>+<param name="cfSmdImpact" value="4"/>+<param name="cfBusImpact" value="0"/>+<param name="cfHugging" value="3"/>+<param name="cfAvoid" value="4"/>+<param name="cfPolygon" value="10"/>+<param name="cfBase.1" value="0"/>+<param name="cfBase.2" value="1"/>+<param name="cfBase.3" value="1"/>+<param name="cfBase.4" value="1"/>+<param name="cfBase.5" value="1"/>+<param name="cfBase.6" value="1"/>+<param name="cfBase.7" value="1"/>+<param name="cfBase.8" value="1"/>+<param name="cfBase.9" value="1"/>+<param name="cfBase.10" value="1"/>+<param name="cfBase.11" value="1"/>+<param name="cfBase.12" value="1"/>+<param name="cfBase.13" value="1"/>+<param name="cfBase.14" value="1"/>+<param name="cfBase.15" value="1"/>+<param name="cfBase.16" value="0"/>+<param name="mnVias" value="20"/>+<param name="mnSegments" value="9999"/>+<param name="mnExtdSteps" value="9999"/>+<param name="mnRipupLevel" value="10"/>+<param name="mnRipupSteps" value="100"/>+<param name="mnRipupTotal" value="100"/>+</pass>+<pass name="Follow-me" refer="Default" active="yes">+</pass>+<pass name="Busses" refer="Default" active="yes">+<param name="cfNonPref" value="4"/>+<param name="cfBusImpact" value="4"/>+<param name="cfHugging" value="0"/>+<param name="mnVias" value="0"/>+</pass>+<pass name="Route" refer="Default" active="yes">+</pass>+<pass name="Optimize1" refer="Default" active="yes">+<param name="cfVia" value="99"/>+<param name="cfExtdStep" value="10"/>+<param name="cfHugging" value="1"/>+<param name="mnExtdSteps" value="1"/>+<param name="mnRipupLevel" value="0"/>+</pass>+<pass name="Optimize2" refer="Optimize1" active="yes">+<param name="cfNonPref" value="0"/>+<param name="cfChangeDir" value="6"/>+<param name="cfExtdStep" value="0"/>+<param name="cfBonusStep" value="2"/>+<param name="cfMalusStep" value="2"/>+<param name="cfPadImpact" value="2"/>+<param name="cfSmdImpact" value="2"/>+<param name="cfHugging" value="0"/>+</pass>+<pass name="Optimize3" refer="Optimize2" active="yes">+<param name="cfChangeDir" value="8"/>+<param name="cfPadImpact" value="0"/>+<param name="cfSmdImpact" value="0"/>+</pass>+<pass name="Optimize4" refer="Optimize3" active="yes">+<param name="cfChangeDir" value="25"/>+</pass>+</autorouter>+<elements>+<element name="J1" library="FusionCrossbarFixture" package="J1" value="CROSSBAR_TEST" x="0" y="0" smashed="yes">+</element>+<element name="J2" library="FusionCrossbarFixture" package="J2" value="CROSSBAR_TEST" x="0" y="0" smashed="yes">+</element>+<element name="J3" library="FusionCrossbarFixture" package="J3" value="CROSSBAR_TEST" x="0" y="0" smashed="yes">+<pad name="1">+</pad>+<pad name="8">+</pad>+<pad name="15">+</pad>+<pad name="22">+</pad>+<pad name="5">+</pad>+<pad name="12">+</pad>+<pad name="19">+</pad>+<pad name="2">+</pad>+<pad name="9">+</pad>+<pad name="16">+</pad>+<pad name="23">+</pad>+<pad name="6">+</pad>+<pad name="13">+</pad>+<pad name="20">+</pad>+<pad name="3">+</pad>+<pad name="10">+</pad>+<pad name="17">+</pad>+<pad name="24">+</pad>+<pad name="7">+</pad>+<pad name="14">+</pad>+<pad name="21">+</pad>+<pad name="4">+</pad>+<pad name="11">+</pad>+<pad name="18">+</pad>+</element>+</elements>+<signals>+<signal name="CH_01">+<contactref element="J1" pad="1"/>+<contactref element="J2" pad="1"/>+<contactref element="J3" pad="1"/>+<wire x1="45" y1="52" x2="55" y2="52" width="0.3" layer="1"/>+<wire x1="55" y1="52" x2="65" y2="52" width="0.3" layer="1"/>+<via x="65" y="52" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="65" y1="52" x2="65" y2="42" width="0.3" layer="16"/>+<via x="65" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="65" y1="42" x2="65" y2="35" width="0.3" layer="1"/>+<wire x1="65" y1="52" x2="65" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_02">+<contactref element="J1" pad="2"/>+<contactref element="J2" pad="8"/>+<contactref element="J3" pad="8"/>+<wire x1="45" y1="54.54" x2="55" y2="54.54" width="0.3" layer="1"/>+<wire x1="55" y1="54.54" x2="82.78" y2="54.54" width="0.3" layer="1"/>+<via x="82.78" y="54.54" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="82.78" y1="54.54" x2="82.78" y2="42" width="0.3" layer="16"/>+<via x="82.78" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="82.78" y1="42" x2="82.78" y2="35" width="0.3" layer="1"/>+<wire x1="82.78" y1="54.54" x2="82.78" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_03">+<contactref element="J1" pad="3"/>+<contactref element="J2" pad="15"/>+<contactref element="J3" pad="15"/>+<wire x1="45" y1="57.08" x2="55" y2="57.08" width="0.3" layer="1"/>+<wire x1="55" y1="57.08" x2="100.56" y2="57.08" width="0.3" layer="1"/>+<via x="100.56" y="57.08" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="100.56" y1="57.08" x2="100.56" y2="42" width="0.3" layer="16"/>+<via x="100.56" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="100.56" y1="42" x2="100.56" y2="35" width="0.3" layer="1"/>+<wire x1="100.56" y1="57.08" x2="100.56" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_04">+<contactref element="J1" pad="4"/>+<contactref element="J2" pad="22"/>+<contactref element="J3" pad="22"/>+<wire x1="45" y1="59.62" x2="55" y2="59.62" width="0.3" layer="1"/>+<wire x1="55" y1="59.62" x2="118.34" y2="59.62" width="0.3" layer="1"/>+<via x="118.34" y="59.62" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="118.34" y1="59.62" x2="118.34" y2="42" width="0.3" layer="16"/>+<via x="118.34" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="118.34" y1="42" x2="118.34" y2="35" width="0.3" layer="1"/>+<wire x1="118.34" y1="59.62" x2="118.34" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_05">+<contactref element="J1" pad="5"/>+<contactref element="J2" pad="5"/>+<contactref element="J3" pad="5"/>+<wire x1="45" y1="62.16" x2="55" y2="62.16" width="0.3" layer="1"/>+<wire x1="55" y1="62.16" x2="75.16" y2="62.16" width="0.3" layer="1"/>+<via x="75.16" y="62.16" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="75.16" y1="62.16" x2="75.16" y2="42" width="0.3" layer="16"/>+<via x="75.16" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="75.16" y1="42" x2="75.16" y2="35" width="0.3" layer="1"/>+<wire x1="75.16" y1="62.16" x2="75.16" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_06">+<contactref element="J1" pad="6"/>+<contactref element="J2" pad="12"/>+<contactref element="J3" pad="12"/>+<wire x1="45" y1="64.7" x2="55" y2="64.7" width="0.3" layer="1"/>+<wire x1="55" y1="64.7" x2="92.94" y2="64.7" width="0.3" layer="1"/>+<via x="92.94" y="64.7" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="92.94" y1="64.7" x2="92.94" y2="42" width="0.3" layer="16"/>+<via x="92.94" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="92.94" y1="42" x2="92.94" y2="35" width="0.3" layer="1"/>+<wire x1="92.94" y1="64.7" x2="92.94" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_07">+<contactref element="J1" pad="7"/>+<contactref element="J2" pad="19"/>+<contactref element="J3" pad="19"/>+<wire x1="45" y1="67.24" x2="55" y2="67.24" width="0.3" layer="1"/>+<wire x1="55" y1="67.24" x2="110.72" y2="67.24" width="0.3" layer="1"/>+<via x="110.72" y="67.24" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="110.72" y1="67.24" x2="110.72" y2="42" width="0.3" layer="16"/>+<via x="110.72" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="110.72" y1="42" x2="110.72" y2="35" width="0.3" layer="1"/>+<wire x1="110.72" y1="67.24" x2="110.72" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_08">+<contactref element="J1" pad="8"/>+<contactref element="J2" pad="2"/>+<contactref element="J3" pad="2"/>+<wire x1="45" y1="69.78" x2="55" y2="69.78" width="0.3" layer="1"/>+<wire x1="55" y1="69.78" x2="67.54" y2="69.78" width="0.3" layer="1"/>+<via x="67.54" y="69.78" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="67.54" y1="69.78" x2="67.54" y2="42" width="0.3" layer="16"/>+<via x="67.54" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="67.54" y1="42" x2="67.54" y2="35" width="0.3" layer="1"/>+<wire x1="67.54" y1="69.78" x2="67.54" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_09">+<contactref element="J1" pad="9"/>+<contactref element="J2" pad="9"/>+<contactref element="J3" pad="9"/>+<wire x1="45" y1="72.32" x2="55" y2="72.32" width="0.3" layer="1"/>+<wire x1="55" y1="72.32" x2="85.32" y2="72.32" width="0.3" layer="1"/>+<via x="85.32" y="72.32" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="85.32" y1="72.32" x2="85.32" y2="42" width="0.3" layer="16"/>+<via x="85.32" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="85.32" y1="42" x2="85.32" y2="35" width="0.3" layer="1"/>+<wire x1="85.32" y1="72.32" x2="85.32" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_10">+<contactref element="J1" pad="10"/>+<contactref element="J2" pad="16"/>+<contactref element="J3" pad="16"/>+<wire x1="45" y1="74.86" x2="55" y2="74.86" width="0.3" layer="1"/>+<wire x1="55" y1="74.86" x2="103.1" y2="74.86" width="0.3" layer="1"/>+<via x="103.1" y="74.86" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="103.1" y1="74.86" x2="103.1" y2="42" width="0.3" layer="16"/>+<via x="103.1" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="103.1" y1="42" x2="103.1" y2="35" width="0.3" layer="1"/>+<wire x1="103.1" y1="74.86" x2="103.1" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_11">+<contactref element="J1" pad="11"/>+<contactref element="J2" pad="23"/>+<contactref element="J3" pad="23"/>+<wire x1="45" y1="77.4" x2="55" y2="77.4" width="0.3" layer="1"/>+<wire x1="55" y1="77.4" x2="120.88" y2="77.4" width="0.3" layer="1"/>+<via x="120.88" y="77.4" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="120.88" y1="77.4" x2="120.88" y2="42" width="0.3" layer="16"/>+<via x="120.88" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="120.88" y1="42" x2="120.88" y2="35" width="0.3" layer="1"/>+<wire x1="120.88" y1="77.4" x2="120.88" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_12">+<contactref element="J1" pad="12"/>+<contactref element="J2" pad="6"/>+<contactref element="J3" pad="6"/>+<wire x1="45" y1="79.94" x2="55" y2="79.94" width="0.3" layer="1"/>+<wire x1="55" y1="79.94" x2="77.7" y2="79.94" width="0.3" layer="1"/>+<via x="77.7" y="79.94" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="77.7" y1="79.94" x2="77.7" y2="42" width="0.3" layer="16"/>+<via x="77.7" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="77.7" y1="42" x2="77.7" y2="35" width="0.3" layer="1"/>+<wire x1="77.7" y1="79.94" x2="77.7" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_13">+<contactref element="J1" pad="13"/>+<contactref element="J2" pad="13"/>+<contactref element="J3" pad="13"/>+<wire x1="45" y1="82.48" x2="55" y2="82.48" width="0.3" layer="1"/>+<wire x1="55" y1="82.48" x2="95.48" y2="82.48" width="0.3" layer="1"/>+<via x="95.48" y="82.48" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="95.48" y1="82.48" x2="95.48" y2="42" width="0.3" layer="16"/>+<via x="95.48" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="95.48" y1="42" x2="95.48" y2="35" width="0.3" layer="1"/>+<wire x1="95.48" y1="82.48" x2="95.48" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_14">+<contactref element="J1" pad="14"/>+<contactref element="J2" pad="20"/>+<contactref element="J3" pad="20"/>+<wire x1="45" y1="85.02" x2="55" y2="85.02" width="0.3" layer="1"/>+<wire x1="55" y1="85.02" x2="113.26" y2="85.02" width="0.3" layer="1"/>+<via x="113.26" y="85.02" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="113.26" y1="85.02" x2="113.26" y2="42" width="0.3" layer="16"/>+<via x="113.26" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="113.26" y1="42" x2="113.26" y2="35" width="0.3" layer="1"/>+<wire x1="113.26" y1="85.02" x2="113.26" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_15">+<contactref element="J1" pad="15"/>+<contactref element="J2" pad="3"/>+<contactref element="J3" pad="3"/>+<wire x1="45" y1="87.56" x2="55" y2="87.56" width="0.3" layer="1"/>+<wire x1="55" y1="87.56" x2="70.08" y2="87.56" width="0.3" layer="1"/>+<via x="70.08" y="87.56" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="70.08" y1="87.56" x2="70.08" y2="42" width="0.3" layer="16"/>+<via x="70.08" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="70.08" y1="42" x2="70.08" y2="35" width="0.3" layer="1"/>+<wire x1="70.08" y1="87.56" x2="70.08" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_16">+<contactref element="J1" pad="16"/>+<contactref element="J2" pad="10"/>+<contactref element="J3" pad="10"/>+<wire x1="45" y1="90.1" x2="55" y2="90.1" width="0.3" layer="1"/>+<wire x1="55" y1="90.1" x2="87.86" y2="90.1" width="0.3" layer="1"/>+<via x="87.86" y="90.1" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="87.86" y1="90.1" x2="87.86" y2="42" width="0.3" layer="16"/>+<via x="87.86" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="87.86" y1="42" x2="87.86" y2="35" width="0.3" layer="1"/>+<wire x1="87.86" y1="90.1" x2="87.86" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_17">+<contactref element="J1" pad="17"/>+<contactref element="J2" pad="17"/>+<contactref element="J3" pad="17"/>+<wire x1="45" y1="92.64" x2="55" y2="92.64" width="0.3" layer="1"/>+<wire x1="55" y1="92.64" x2="105.64" y2="92.64" width="0.3" layer="1"/>+<via x="105.64" y="92.64" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="105.64" y1="92.64" x2="105.64" y2="42" width="0.3" layer="16"/>+<via x="105.64" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="105.64" y1="42" x2="105.64" y2="35" width="0.3" layer="1"/>+<wire x1="105.64" y1="92.64" x2="105.64" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_18">+<contactref element="J1" pad="18"/>+<contactref element="J2" pad="24"/>+<contactref element="J3" pad="24"/>+<wire x1="45" y1="95.18" x2="55" y2="95.18" width="0.3" layer="1"/>+<wire x1="55" y1="95.18" x2="123.42" y2="95.18" width="0.3" layer="1"/>+<via x="123.42" y="95.18" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="123.42" y1="95.18" x2="123.42" y2="42" width="0.3" layer="16"/>+<via x="123.42" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="123.42" y1="42" x2="123.42" y2="35" width="0.3" layer="1"/>+<wire x1="123.42" y1="95.18" x2="123.42" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_19">+<contactref element="J1" pad="19"/>+<contactref element="J2" pad="7"/>+<contactref element="J3" pad="7"/>+<wire x1="45" y1="97.72" x2="55" y2="97.72" width="0.3" layer="1"/>+<wire x1="55" y1="97.72" x2="80.24" y2="97.72" width="0.3" layer="1"/>+<via x="80.24" y="97.72" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="80.24" y1="97.72" x2="80.24" y2="42" width="0.3" layer="16"/>+<via x="80.24" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="80.24" y1="42" x2="80.24" y2="35" width="0.3" layer="1"/>+<wire x1="80.24" y1="97.72" x2="80.24" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_20">+<contactref element="J1" pad="20"/>+<contactref element="J2" pad="14"/>+<contactref element="J3" pad="14"/>+<wire x1="45" y1="100.26" x2="55" y2="100.26" width="0.3" layer="1"/>+<wire x1="55" y1="100.26" x2="98.02" y2="100.26" width="0.3" layer="1"/>+<via x="98.02" y="100.26" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="98.02" y1="100.26" x2="98.02" y2="42" width="0.3" layer="16"/>+<via x="98.02" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="98.02" y1="42" x2="98.02" y2="35" width="0.3" layer="1"/>+<wire x1="98.02" y1="100.26" x2="98.02" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_21">+<contactref element="J1" pad="21"/>+<contactref element="J2" pad="21"/>+<contactref element="J3" pad="21"/>+<wire x1="45" y1="102.8" x2="55" y2="102.8" width="0.3" layer="1"/>+<wire x1="55" y1="102.8" x2="115.8" y2="102.8" width="0.3" layer="1"/>+<via x="115.8" y="102.8" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="115.8" y1="102.8" x2="115.8" y2="42" width="0.3" layer="16"/>+<via x="115.8" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="115.8" y1="42" x2="115.8" y2="35" width="0.3" layer="1"/>+<wire x1="115.8" y1="102.8" x2="115.8" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_22">+<contactref element="J1" pad="22"/>+<contactref element="J2" pad="4"/>+<contactref element="J3" pad="4"/>+<wire x1="45" y1="105.34" x2="55" y2="105.34" width="0.3" layer="1"/>+<wire x1="55" y1="105.34" x2="72.62" y2="105.34" width="0.3" layer="1"/>+<via x="72.62" y="105.34" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="72.62" y1="105.34" x2="72.62" y2="42" width="0.3" layer="16"/>+<via x="72.62" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="72.62" y1="42" x2="72.62" y2="35" width="0.3" layer="1"/>+<wire x1="72.62" y1="105.34" x2="72.62" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_23">+<contactref element="J1" pad="23"/>+<contactref element="J2" pad="11"/>+<contactref element="J3" pad="11"/>+<wire x1="45" y1="107.88" x2="55" y2="107.88" width="0.3" layer="1"/>+<wire x1="55" y1="107.88" x2="90.4" y2="107.88" width="0.3" layer="1"/>+<via x="90.4" y="107.88" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="90.4" y1="107.88" x2="90.4" y2="42" width="0.3" layer="16"/>+<via x="90.4" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="90.4" y1="42" x2="90.4" y2="35" width="0.3" layer="1"/>+<wire x1="90.4" y1="107.88" x2="90.4" y2="125" width="0.3" layer="16"/>+</signal>+<signal name="CH_24">+<contactref element="J1" pad="24"/>+<contactref element="J2" pad="18"/>+<contactref element="J3" pad="18"/>+<wire x1="45" y1="110.42" x2="55" y2="110.42" width="0.3" layer="1"/>+<wire x1="55" y1="110.42" x2="108.18" y2="110.42" width="0.3" layer="1"/>+<via x="108.18" y="110.42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="108.18" y1="110.42" x2="108.18" y2="42" width="0.3" layer="16"/>+<via x="108.18" y="42" extent="1-16" drill="0.3" diameter="0.6" solderMask="auto">+</via>+<wire x1="108.18" y1="42" x2="108.18" y2="35" width="0.3" layer="1"/>+<wire x1="108.18" y1="110.42" x2="108.18" y2="125" width="0.3" layer="16"/>+</signal>+</signals>+<mfgpreviewcolors>+<mfgpreviewcolor name="soldermaskcolor" color="0xC8008000"/>+<mfgpreviewcolor name="silkscreencolor" color="0xFFFEFEFE"/>+<mfgpreviewcolor name="backgroundcolor" color="0xFF282828"/>+<mfgpreviewcolor name="coppercolor" color="0xFFFFBF00"/>+<mfgpreviewcolor name="substratecolor" color="0xFF786E46"/>+</mfgpreviewcolors>+</board>+</drawing>+<compatibility>+<note version="9.7" severity="warning">+Since Fusion, design files support named views saved in design. +Named views found in the design will not be understood with this version. +</note>+<note version="9.7" minversion="9.7.0" severity="warning">+Since Version 9.7.0 new layer stackup definition has been added,+which will not be loaded with this version.+</note>+<note version="9.7" minversion="9.7.0" severity="warning">+Since Version 9.7.0 new active CAMJOB file name has been added,+which will not be loaded with this version.+</note>+<note version="9.7" minversion="9.7.0" severity="warning">+Since Version 9.7.0 board construction lines has been added,+which will not be loaded with this version.+</note>+<note version="9.7" minversion="9.7.0" severity="warning">+Since Version 9.7.0 new design rule definitions have been added,+which will not be loaded with this version.+</note>+</compatibility>+</eagle>
demo/routing/crossbar/take-01/fusion-crossbar-24-routed.fbrdadded
⋯ 1 unchanged line ⋯
demo/routing/crossbar/take-01/motion-scores.jsonadded+1
@@ -0,0 +1 @@+[[0.1, 0], [0.2, 0], [0.3, 0], [0.4, 0], [0.5, 0], [0.6, 0], [0.7, 0], [0.8, 0], [0.9, 0], [1.0, 0], [1.1, 0], [1.2, 0], [1.3, 0], [1.4, 0], [1.5, 0], [1.6, 257], [1.7, 0], [1.8, 0], [1.9, 0], [2.0, 0], [2.1, 0], [2.2, 0], [2.3, 0], [2.4, 147], [2.5, 0], [2.6, 0], [2.7, 0], [2.8, 0], [2.9, 0], [3.0, 0], [3.1, 0], [3.2, 0], [3.3, 0], [3.4, 0], [3.5, 0], [3.6, 3], [3.7, 0], [3.8, 0], [3.9, 0], [4.0, 0], [4.1, 0], [4.2, 0], [4.3, 0], [4.4, 360], [4.5, 0], [4.6, 0], [4.7, 0], [4.8, 0], [4.9, 0], [5.0, 0], [5.1, 0], [5.2, 0], [5.3, 0], [5.4, 7], [5.5, 0], [5.6, 0], [5.7, 0], [5.8, 0], [5.9, 0], [6.0, 0], [6.1, 0], [6.2, 0], [6.3, 346], [6.4, 0], [6.5, 0], [6.6, 0], [6.7, 0], [6.8, 0], [6.9, 0], [7.0, 0], [7.1, 0], [7.2, 1014], [7.3, 0], [7.4, 0], [7.5, 0], [7.6, 0], [7.7, 0], [7.8, 0], [7.9, 0], [8.0, 0], [8.1, 0], [8.2, 0], [8.3, 0], [8.4, 0], [8.5, 432], [8.6, 0], [8.7, 0], [8.8, 0], [8.9, 0], [9.0, 0], [9.1, 0], [9.2, 0], [9.3, 0], [9.4, 0], [9.5, 0], [9.6, 286], [9.7, 0], [9.8, 0], [9.9, 0], [10.0, 0], [10.1, 0], [10.2, 0], [10.3, 0], [10.4, 0], [10.5, 0], [10.6, 0], [10.7, 0], [10.8, 0], [10.9, 0], [11.0, 0], [11.1, 0], [11.2, 0], [11.3, 0], [11.4, 0], [11.5, 0], [11.6, 478], [11.7, 0], [11.8, 0], [11.9, 0], [12.0, 0], [12.1, 0], [12.2, 0], [12.3, 0], [12.4, 0], [12.5, 0], [12.6, 5], [12.7, 0], [12.8, 0], [12.9, 0], [13.0, 0], [13.1, 0], [13.2, 0], [13.3, 0], [13.4, 0], [13.5, 426], [13.6, 0], [13.7, 0], [13.8, 0], [13.9, 0], [14.0, 0], [14.1, 0], [14.2, 0], [14.3, 0], [14.4, 1084], [14.5, 0], [14.6, 0], [14.7, 0], [14.8, 0], [14.9, 0], [15.0, 0], [15.1, 0], [15.2, 0], [15.3, 0], [15.4, 0], [15.5, 0], [15.6, 0], [15.7, 0], [15.8, 0], [15.9, 0], [16.0, 493], [16.1, 0], [16.2, 0], [16.3, 0], [16.4, 0], [16.5, 0], [16.6, 0], [16.7, 0], [16.8, 0], [16.9, 465], [17.0, 0], [17.1, 0], [17.2, 0], [17.3, 0], [17.4, 0], [17.5, 0], [17.6, 0], [17.7, 1], [17.8, 0], [17.9, 0], [18.0, 0], [18.1, 0], [18.2, 0], [18.3, 0], [18.4, 0], [18.5, 0], [18.6, 586], [18.7, 0], [18.8, 0], [18.9, 0], [19.0, 0], [19.1, 0], [19.2, 0], [19.3, 0], [19.4, 0], [19.5, 0], [19.6, 0], [19.7, 12], [19.8, 0], [19.9, 0], [20.0, 0], [20.1, 0], [20.2, 0], [20.3, 0], [20.4, 0], [20.5, 0], [20.6, 504], [20.7, 0], [20.8, 0], [20.9, 0], [21.0, 0], [21.1, 0], [21.2, 0], [21.3, 0], [21.4, 0], [21.5, 0], [21.6, 1131], [21.7, 0], [21.8, 0], [21.9, 0], [22.0, 0], [22.1, 0], [22.2, 0], [22.3, 0], [22.4, 0], [22.5, 0], [22.6, 0], [22.7, 0], [22.8, 0], [22.9, 0], [23.0, 0], [23.1, 557], [23.2, 0], [23.3, 0], [23.4, 0], [23.5, 0], [23.6, 0], [23.7, 0], [23.8, 0], [23.9, 652], [24.0, 0], [24.1, 0], [24.2, 0], [24.3, 0], [24.4, 0], [24.5, 0], [24.6, 0], [24.7, 0], [24.8, 0], [24.9, 0], [25.0, 1], [25.1, 0], [25.2, 0], [25.3, 0], [25.4, 0], [25.5, 0], [25.6, 0], [25.7, 0], [25.8, 0], [25.9, 0], [26.0, 767], [26.1, 0], [26.2, 0], [26.3, 0], [26.4, 0], [26.5, 0], [26.6, 0], [26.7, 0], [26.8, 0], [26.9, 0], [27.0, 10], [27.1, 0], [27.2, 0], [27.3, 0], [27.4, 0], [27.5, 0], [27.6, 0], [27.7, 0], [27.8, 0], [27.9, 632], [28.0, 0], [28.1, 0], [28.2, 0], [28.3, 0], [28.4, 0], [28.5, 0], [28.6, 0], [28.7, 0], [28.8, 0], [28.9, 1825], [29.0, 0], [29.1, 0], [29.2, 0], [29.3, 0], [29.4, 0], [29.5, 0], [29.6, 0], [29.7, 0], [29.8, 0], [29.9, 0], [30.0, 0], [30.1, 0], [30.2, 0], [30.3, 0], [30.4, 640], [30.5, 0], [30.6, 0], [30.7, 0], [30.8, 0], [30.9, 0], [31.0, 0], [31.1, 0], [31.2, 0], [31.3, 221], [31.4, 0], [31.5, 0], [31.6, 0], [31.7, 0], [31.8, 0], [31.9, 0], [32.0, 0], [32.1, 0], [32.2, 0], [32.3, 3], [32.4, 0], [32.5, 0], [32.6, 0], [32.7, 0], [32.8, 0], [32.9, 0], [33.0, 0], [33.1, 0], [33.2, 0], [33.3, 724], [33.4, 0], [33.5, 0], [33.6, 0], [33.7, 0], [33.8, 0], [33.9, 0], [34.0, 0], [34.1, 0], [34.2, 0], [34.3, 8], [34.4, 0], [34.5, 0], [34.6, 0], [34.7, 0], [34.8, 0], [34.9, 0], [35.0, 0], [35.1, 619], [35.2, 0], [35.3, 0], [35.4, 0], [35.5, 0], [35.6, 0], [35.7, 0], [35.8, 0], [35.9, 0], [36.0, 0], [36.1, 1194], [36.2, 0], [36.3, 0], [36.4, 0], [36.5, 0], [36.6, 0], [36.7, 0], [36.8, 0], [36.9, 0], [37.0, 0], [37.1, 0], [37.2, 0], [37.3, 0], [37.4, 0], [37.5, 0], [37.6, 0], [37.7, 695], [37.8, 0], [37.9, 0], [38.0, 0], [38.1, 0], [38.2, 0], [38.3, 0], [38.4, 0], [38.5, 0], [38.6, 397], [38.7, 0], [38.8, 0], [38.9, 0], [39.0, 0], [39.1, 0], [39.2, 0], [39.3, 0], [39.4, 0], [39.5, 0], [39.6, 0], [39.7, 2], [39.8, 0], [39.9, 0], [40.0, 0], [40.1, 0], [40.2, 0], [40.3, 0], [40.4, 0], [40.5, 840], [40.6, 0], [40.7, 0], [40.8, 0], [40.9, 0], [41.0, 0], [41.1, 0], [41.2, 0], [41.3, 0], [41.4, 0], [41.5, 0], [41.6, 2], [41.7, 0], [41.8, 0], [41.9, 0], [42.0, 0], [42.1, 0], [42.2, 0], [42.3, 0], [42.4, 0], [42.5, 677], [42.6, 0], [42.7, 0], [42.8, 0], [42.9, 0], [43.0, 0], [43.1, 0], [43.2, 0], [43.3, 0], [43.4, 1237], [43.5, 0], [43.6, 0], [43.7, 0], [43.8, 0], [43.9, 0], [44.0, 0], [44.1, 0], [44.2, 0], [44.3, 0], [44.4, 0], [44.5, 0], [44.6, 0], [44.7, 0], [44.8, 0], [44.9, 0], [45.0, 0], [45.1, 745], [45.2, 0], [45.3, 0], [45.4, 0], [45.5, 0], [45.6, 0], [45.7, 0], [45.8, 0], [45.9, 589], [46.0, 0], [46.1, 0], [46.2, 0], [46.3, 0], [46.4, 0], [46.5, 0], [46.6, 0], [46.7, 0], [46.8, 0], [46.9, 0], [47.0, 1], [47.1, 0], [47.2, 0], [47.3, 0], [47.4, 0], [47.5, 0], [47.6, 0], [47.7, 0], [47.8, 0], [47.9, 0], [48.0, 919], [48.1, 0], [48.2, 0], [48.3, 0], [48.4, 0], [48.5, 0], [48.6, 0], [48.7, 0], [48.8, 6], [48.9, 0], [49.0, 0], [49.1, 0], [49.2, 0], [49.3, 0], [49.4, 0], [49.5, 0], [49.6, 0], [49.7, 0], [49.8, 0], [49.9, 726], [50.0, 0], [50.1, 0], [50.2, 0], [50.3, 0], [50.4, 53], [50.5, 20], [50.6, 0], [50.7, 1237], [50.8, 0], [50.9, 0], [51.0, 0], [51.1, 0], [51.2, 0], [51.3, 0], [51.4, 0], [51.5, 0], [51.6, 53], [51.7, 64], [51.8, 57], [51.9, 25], [52.0, 0], [52.1, 0], [52.2, 0], [52.3, 798], [52.4, 0], [52.5, 0], [52.6, 0], [52.7, 0], [52.8, 0], [52.9, 0], [53.0, 0], [53.1, 0], [53.2, 0], [53.3, 0], [53.4, 139], [53.5, 0], [53.6, 32], [53.7, 26], [53.8, 0], [53.9, 0], [54.0, 0], [54.1, 0], [54.2, 0], [54.3, 0], [54.4, 1], [54.5, 0], [54.6, 0], [54.7, 0], [54.8, 0], [54.9, 0], [55.0, 0], [55.1, 0], [55.2, 0], [55.3, 0], [55.4, 1093], [55.5, 0], [55.6, 0], [55.7, 0], [55.8, 41], [55.9, 0], [56.0, 111], [56.1, 110], [56.2, 0], [56.3, 133], [56.4, 23], [56.5, 6], [56.6, 201], [56.7, 110], [56.8, 0], [56.9, 0], [57.0, 0], [57.1, 0], [57.2, 41], [57.3, 0], [57.4, 0], [57.5, 0], [57.6, 0], [57.7, 849], [57.8, 0], [57.9, 0], [58.0, 9], [58.1, 0], [58.2, 0], [58.3, 0], [58.4, 0], [58.5, 0], [58.6, 10], [58.7, 0], [58.8, 1568], [58.9, 0], [59.0, 0], [59.1, 0], [59.2, 0], [59.3, 0], [59.4, 0], [59.5, 0], [59.6, 0], [59.7, 0], [59.8, 0], [59.9, 0], [60.0, 0], [60.1, 0], [60.2, 0], [60.3, 904], [60.4, 0], [60.5, 0], [60.6, 0], [60.7, 0], [60.8, 0], [60.9, 0], [61.0, 0], [61.1, 0], [61.2, 17], [61.3, 344], [61.4, 0], [61.5, 0], [61.6, 0], [61.7, 0], [61.8, 0], [61.9, 0], [62.0, 0], [62.1, 0], [62.2, 0], [62.3, 2], [62.4, 0], [62.5, 0], [62.6, 0], [62.7, 0], [62.8, 0], [62.9, 0], [63.0, 0], [63.1, 0], [63.2, 1215], [63.3, 0], [63.4, 0], [63.5, 0], [63.6, 0], [63.7, 0], [63.8, 0], [63.9, 0], [64.0, 0], [64.1, 0], [64.2, 0], [64.3, 0], [64.4, 9], [64.5, 0], [64.6, 0], [64.7, 0], [64.8, 0], [64.9, 0], [65.0, 0], [65.1, 0], [65.2, 0], [65.3, 0], [65.4, 928], [65.5, 0], [65.6, 0], [65.7, 0], [65.8, 0], [65.9, 0], [66.0, 0], [66.1, 0], [66.2, 0], [66.3, 1592], [66.4, 0], [66.5, 0], [66.6, 0], [66.7, 0], [66.8, 0], [66.9, 0], [67.0, 0], [67.1, 0], [67.2, 0], [67.3, 0], [67.4, 0], [67.5, 0], [67.6, 0], [67.7, 962], [67.8, 0], [67.9, 0], [68.0, 0], [68.1, 0], [68.2, 0], [68.3, 0], [68.4, 0], [68.5, 0], [68.6, 0], [68.7, 512], [68.8, 0], [68.9, 0], [69.0, 0], [69.1, 0], [69.2, 0], [69.3, 0], [69.4, 0], [69.5, 0], [69.6, 0], [69.7, 0], [69.8, 2], [69.9, 0], [70.0, 0], [70.1, 0], [70.2, 0], [70.3, 0], [70.4, 0], [70.5, 0], [70.6, 0], [70.7, 1189], [70.8, 0], [70.9, 0], [71.0, 0], [71.1, 0], [71.2, 0], [71.3, 0], [71.4, 0], [71.5, 0], [71.6, 0], [71.7, 10], [71.8, 0], [71.9, 0], [72.0, 0], [72.1, 0], [72.2, 0], [72.3, 0], [72.4, 0], [72.5, 0], [72.6, 939], [72.7, 0], [72.8, 0], [72.9, 0], [73.0, 0], [73.1, 0], [73.2, 0], [73.3, 0], [73.4, 0], [73.5, 0], [73.6, 1370], [73.7, 0], [73.8, 0], [73.9, 0], [74.0, 0], [74.1, 0], [74.2, 0], [74.3, 0], [74.4, 0], [74.5, 0], [74.6, 0], [74.7, 0], [74.8, 0], [74.9, 0], [75.0, 0], [75.1, 0], [75.2, 0], [75.3, 1009], [75.4, 0], [75.5, 0], [75.6, 0], [75.7, 0], [75.8, 0], [75.9, 0], [76.0, 0], [76.1, 0], [76.2, 0], [76.3, 693], [76.4, 0], [76.5, 0], [76.6, 0], [76.7, 0], [76.8, 0], [76.9, 0], [77.0, 0], [77.1, 0], [77.2, 0], [77.3, 3], [77.4, 0], [77.5, 0], [77.6, 0], [77.7, 0], [77.8, 0], [77.9, 0], [78.0, 0], [78.1, 0], [78.2, 1278], [78.3, 0], [78.4, 0], [78.5, 0], [78.6, 0], [78.7, 0], [78.8, 0], [78.9, 0], [79.0, 0], [79.1, 0], [79.2, 6], [79.3, 0], [79.4, 0], [79.5, 0], [79.6, 0], [79.7, 0], [79.8, 0], [79.9, 0], [80.0, 0], [80.1, 967], [80.2, 0], [80.3, 0], [80.4, 0], [80.5, 0], [80.6, 0], [80.7, 0], [80.8, 0], [80.9, 0], [81.0, 0], [81.1, 1414], [81.2, 0], [81.3, 0], [81.4, 0], [81.5, 0], [81.6, 0], [81.7, 0], [81.8, 0], [81.9, 0], [82.0, 0], [82.1, 0], [82.2, 0], [82.3, 0], [82.4, 0], [82.5, 0], [82.6, 1058], [82.7, 0], [82.8, 0], [82.9, 0], [83.0, 0], [83.1, 0], [83.2, 0], [83.3, 0], [83.4, 0], [83.5, 0], [83.6, 261], [83.7, 0], [83.8, 0], [83.9, 0], [84.0, 0], [84.1, 0], [84.2, 0], [84.3, 0], [84.4, 0], [84.5, 0], [84.6, 4], [84.7, 0], [84.8, 0], [84.9, 0], [85.0, 0], [85.1, 0], [85.2, 0], [85.3, 0], [85.4, 0], [85.5, 0], [85.6, 1490], [85.7, 0], [85.8, 0], [85.9, 0], [86.0, 0], [86.1, 0], [86.2, 0], [86.3, 0], [86.4, 0], [86.5, 0], [86.6, 0], [86.7, 9], [86.8, 0], [86.9, 0], [87.0, 0], [87.1, 0], [87.2, 0], [87.3, 0], [87.4, 0], [87.5, 0], [87.6, 0], [87.7, 0], [87.8, 1087], [87.9, 22], [88.0, 22], [88.1, 0], [88.2, 0], [88.3, 0], [88.4, 0], [88.5, 0], [88.6, 0], [88.7, 0], [88.8, 0], [88.9, 1635], [89.0, 0], [89.1, 0], [89.2, 0], [89.3, 0], [89.4, 0], [89.5, 0], [89.6, 0], [89.7, 0], [89.8, 0], [89.9, 0], [90.0, 0], [90.1, 0], [90.2, 0], [90.3, 0], [90.4, 0], [90.5, 0], [90.6, 0], [90.7, 0], [90.8, 1179], [90.9, 0], [91.0, 0], [91.1, 0], [91.2, 0], [91.3, 0], [91.4, 0], [91.5, 0], [91.6, 0], [91.7, 0], [91.8, 467], [91.9, 0], [92.0, 0], [92.1, 0], [92.2, 0], [92.3, 0], [92.4, 0], [92.5, 0], [92.6, 0], [92.7, 0], [92.8, 0], [92.9, 4], [93.0, 0], [93.1, 0], [93.2, 0], [93.3, 0], [93.4, 0], [93.5, 0], [93.6, 0], [93.7, 1464], [93.8, 0], [93.9, 0], [94.0, 0], [94.1, 0], [94.2, 0], [94.3, 0], [94.4, 0], [94.5, 0], [94.6, 0], [94.7, 0], [94.8, 0], [94.9, 12], [95.0, 0], [95.1, 0], [95.2, 0], [95.3, 0], [95.4, 0], [95.5, 0], [95.6, 0], [95.7, 0], [95.8, 0], [95.9, 0], [96.0, 1145], [96.1, 0], [96.2, 0], [96.3, 0], [96.4, 0], [96.5, 0], [96.6, 0], [96.7, 0], [96.8, 0], [96.9, 0], [97.0, 1496], [97.1, 0], [97.2, 0], [97.3, 0], [97.4, 12], [97.5, 10], [97.6, 50], [97.7, 48], [97.8, 2], [97.9, 0], [98.0, 0], [98.1, 0], [98.2, 0], [98.3, 0], [98.4, 0], [98.5, 0], [98.6, 0], [98.7, 1262], [98.8, 0], [98.9, 0], [99.0, 0], [99.1, 0], [99.2, 0], [99.3, 0], [99.4, 0], [99.5, 0], [99.6, 0], [99.7, 901], [99.8, 0], [99.9, 0], [100.0, 0], [100.1, 0], [100.2, 0], [100.3, 0], [100.4, 0], [100.5, 0], [100.6, 0], [100.7, 0], [100.8, 4], [100.9, 0], [101.0, 0], [101.1, 0], [101.2, 0], [101.3, 0], [101.4, 0], [101.5, 0], [101.6, 0], [101.7, 0], [101.8, 0], [101.9, 2004], [102.0, 0], [102.1, 0], [102.2, 0], [102.3, 0], [102.4, 0], [102.5, 0], [102.6, 0], [102.7, 0], [102.8, 0], [102.9, 11], [103.0, 0], [103.1, 0], [103.2, 0], [103.3, 0], [103.4, 0], [103.5, 0], [103.6, 0], [103.7, 0], [103.8, 0], [103.9, 1301], [104.0, 0], [104.1, 0], [104.2, 0], [104.3, 0], [104.4, 0], [104.5, 0], [104.6, 0], [104.7, 0], [104.8, 0], [104.9, 0], [105.0, 1967], [105.1, 0], [105.2, 0], [105.3, 0], [105.4, 0], [105.5, 0], [105.6, 0], [105.7, 0], [105.8, 0], [105.9, 0], [106.0, 0], [106.1, 0], [106.2, 0], [106.3, 0], [106.4, 0], [106.5, 0], [106.6, 0], [106.7, 1369], [106.8, 0], [106.9, 0], [107.0, 0], [107.1, 0], [107.2, 0], [107.3, 0], [107.4, 0], [107.5, 0], [107.6, 0], [107.7, 274], [107.8, 0], [107.9, 0], [108.0, 0], [108.1, 0], [108.2, 0], [108.3, 0], [108.4, 0], [108.5, 0], [108.6, 0], [108.7, 0], [108.8, 0], [108.9, 6], [109.0, 0], [109.1, 0], [109.2, 0], [109.3, 0], [109.4, 0], [109.5, 0], [109.6, 0], [109.7, 0], [109.8, 0], [109.9, 1593], [110.0, 0], [110.1, 0], [110.2, 0], [110.3, 0], [110.4, 0], [110.5, 0], [110.6, 0], [110.7, 0], [110.8, 0], [110.9, 8], [111.0, 0], [111.1, 0], [111.2, 0], [111.3, 0], [111.4, 0], [111.5, 0], [111.6, 0], [111.7, 0], [111.8, 1278], [111.9, 0], [112.0, 0], [112.1, 0], [112.2, 0], [112.3, 0], [112.4, 0], [112.5, 0], [112.6, 0], [112.7, 0], [112.8, 1580], [112.9, 0], [113.0, 0], [113.1, 0], [113.2, 0], [113.3, 0], [113.4, 0], [113.5, 0], [113.6, 0], [113.7, 0], [113.8, 0], [113.9, 0], [114.0, 0], [114.1, 0], [114.2, 0], [114.3, 0], [114.4, 0], [114.5, 1447], [114.6, 0], [114.7, 0], [114.8, 0], [114.9, 0], [115.0, 0], [115.1, 0], [115.2, 0], [115.3, 0], [115.4, 0], [115.5, 0], [115.6, 564], [115.7, 0], [115.8, 0], [115.9, 0], [116.0, 0], [116.1, 0], [116.2, 0], [116.3, 0], [116.4, 0], [116.5, 0], [116.6, 0], [116.7, 6], [116.8, 0], [116.9, 0], [117.0, 0], [117.1, 0], [117.2, 0], [117.3, 0], [117.4, 0], [117.5, 0], [117.6, 0], [117.7, 1742], [117.8, 0], [117.9, 0], [118.0, 0], [118.1, 0], [118.2, 0], [118.3, 0], [118.4, 0], [118.5, 0], [118.6, 0], [118.7, 0], [118.8, 5], [118.9, 0], [119.0, 0], [119.1, 0], [119.2, 0], [119.3, 0], [119.4, 0], [119.5, 0], [119.6, 0], [119.7, 0], [119.8, 1360], [119.9, 0], [120.0, 0], [120.1, 0], [120.2, 0], [120.3, 0], [120.4, 0], [120.5, 0], [120.6, 0], [120.7, 0], [120.8, 0], [120.9, 1630], [121.0, 0], [121.1, 0], [121.2, 0], [121.3, 0], [121.4, 0], [121.5, 0], [121.6, 0], [121.7, 0], [121.8, 0], [121.9, 0], [122.0, 0], [122.1, 0], [122.2, 0], [122.3, 0], [122.4, 0], [122.5, 0], [122.6, 1468], [122.7, 0], [122.8, 0], [122.9, 0], [123.0, 0], [123.1, 0], [123.2, 0], [123.3, 0], [123.4, 0], [123.5, 0], [123.6, 787], [123.7, 0], [123.8, 0], [123.9, 0], [124.0, 0], [124.1, 0], [124.2, 0], [124.3, 0], [124.4, 0], [124.5, 0], [124.6, 0], [124.7, 0], [124.8, 4], [124.9, 0], [125.0, 0], [125.1, 0], [125.2, 0], [125.3, 0], [125.4, 0], [125.5, 0], [125.6, 0], [125.7, 0], [125.8, 1889], [125.9, 0], [126.0, 0], [126.1, 0], [126.2, 0], [126.3, 0], [126.4, 0], [126.5, 0], [126.6, 0], [126.7, 0], [126.8, 0], [126.9, 9], [127.0, 0], [127.1, 0], [127.2, 0], [127.3, 0], [127.4, 0], [127.5, 0], [127.6, 0], [127.7, 0], [127.8, 0], [127.9, 0], [128.0, 1463], [128.1, 0], [128.2, 0], [128.3, 0], [128.4, 0], [128.5, 0], [128.6, 0], [128.7, 0], [128.8, 0], [128.9, 0], [129.0, 1729], [129.1, 0], [129.2, 0], [129.3, 0], [129.4, 0], [129.5, 0], [129.6, 0], [129.7, 0], [129.8, 0], [129.9, 0], [130.0, 0], [130.1, 0], [130.2, 0], [130.3, 0], [130.4, 0], [130.5, 0], [130.6, 0], [130.7, 0], [130.8, 1565], [130.9, 0], [131.0, 0], [131.1, 0], [131.2, 0], [131.3, 0], [131.4, 0], [131.5, 0], [131.6, 0], [131.7, 1061], [131.8, 0], [131.9, 0], [132.0, 0], [132.1, 0], [132.2, 0], [132.3, 0], [132.4, 0], [132.5, 0], [132.6, 0], [132.7, 4], [132.8, 0], [132.9, 0], [133.0, 0], [133.1, 0], [133.2, 0], [133.3, 0], [133.4, 0], [133.5, 0], [133.6, 0], [133.7, 0], [133.8, 2297], [133.9, 0], [134.0, 0], [134.1, 0], [134.2, 0], [134.3, 0], [134.4, 0], [134.5, 0], [134.6, 0], [134.7, 0], [134.8, 0], [134.9, 0], [135.0, 0], [135.1, 11], [135.2, 0], [135.3, 0], [135.4, 0], [135.5, 0], [135.6, 0], [135.7, 0], [135.8, 0], [135.9, 0], [136.0, 0], [136.1, 0], [136.2, 0], [136.3, 0], [136.4, 1595], [136.5, 0], [136.6, 0], [136.7, 0], [136.8, 0], [136.9, 0], [137.0, 0], [137.1, 0], [137.2, 0], [137.3, 0], [137.4, 1946], [137.5, 0], [137.6, 0], [137.7, 0], [137.8, 0], [137.9, 0], [138.0, 0], [138.1, 0], [138.2, 0], [138.3, 0], [138.4, 0], [138.5, 0], [138.6, 0], [138.7, 0], [138.8, 0], [138.9, 0], [139.0, 0], [139.1, 1635], [139.2, 0], [139.3, 0], [139.4, 0], [139.5, 0], [139.6, 0], [139.7, 0], [139.8, 0], [139.9, 0], [140.0, 0], [140.1, 0], [140.2, 321], [140.3, 0], [140.4, 0], [140.5, 0], [140.6, 0], [140.7, 0], [140.8, 0], [140.9, 0], [141.0, 0], [141.1, 0], [141.2, 0], [141.3, 4], [141.4, 0], [141.5, 0], [141.6, 0], [141.7, 0], [141.8, 0], [141.9, 0], [142.0, 0], [142.1, 0], [142.2, 0], [142.3, 0], [142.4, 2270], [142.5, 0], [142.6, 0], [142.7, 0], [142.8, 0], [142.9, 0], [143.0, 0], [143.1, 0], [143.2, 0], [143.3, 0], [143.4, 0], [143.5, 0], [143.6, 9], [143.7, 0], [143.8, 0], [143.9, 0], [144.0, 0], [144.1, 0], [144.2, 0], [144.3, 0], [144.4, 0], [144.5, 0], [144.6, 0], [144.7, 1698], [144.8, 0], [144.9, 0], [145.0, 0], [145.1, 0], [145.2, 0], [145.3, 0], [145.4, 0], [145.5, 0], [145.6, 0], [145.7, 1911], [145.8, 0], [145.9, 0], [146.0, 0], [146.1, 0], [146.2, 0], [146.3, 0], [146.4, 0], [146.5, 0], [146.6, 0], [146.7, 0], [146.8, 0], [146.9, 0], [147.0, 0], [147.1, 0], [147.2, 0], [147.3, 0], [147.4, 1713], [147.5, 0], [147.6, 0], [147.7, 0], [147.8, 0], [147.9, 0], [148.0, 0], [148.1, 0], [148.2, 0], [148.3, 0], [148.4, 475], [148.5, 0], [148.6, 0], [148.7, 0], [148.8, 0], [148.9, 0], [149.0, 0], [149.1, 0], [149.2, 0], [149.3, 0], [149.4, 0], [149.5, 0], [149.6, 4], [149.7, 0], [149.8, 0], [149.9, 0], [150.0, 0], [150.1, 0], [150.2, 0], [150.3, 0], [150.4, 0], [150.5, 0], [150.6, 0], [150.7, 2263], [150.8, 0], [150.9, 0], [151.0, 0], [151.1, 0], [151.2, 0], [151.3, 0], [151.4, 0], [151.5, 0], [151.6, 0], [151.7, 0], [151.8, 0], [151.9, 8], [152.0, 0], [152.1, 0], [152.2, 0], [152.3, 0], [152.4, 0], [152.5, 0], [152.6, 0], [152.7, 0], [152.8, 0], [152.9, 0], [153.0, 1752], [153.1, 0], [153.2, 0], [153.3, 0], [153.4, 0], [153.5, 0], [153.6, 0], [153.7, 0], [153.8, 0], [153.9, 0], [154.0, 0], [154.1, 1962], [154.2, 0], [154.3, 0], [154.4, 0], [154.5, 0], [154.6, 0], [154.7, 0], [154.8, 0], [154.9, 0], [155.0, 0], [155.1, 0], [155.2, 0], [155.3, 0], [155.4, 0], [155.5, 0], [155.6, 0], [155.7, 0], [155.8, 0], [155.9, 1826], [156.0, 0], [156.1, 0], [156.2, 0], [156.3, 0], [156.4, 0], [156.5, 0], [156.6, 0], [156.7, 0], [156.8, 0], [156.9, 0], [157.0, 0], [157.1, 0], [157.2, 675], [157.3, 0], [157.4, 0], [157.5, 0], [157.6, 0], [157.7, 0], [157.8, 0], [157.9, 0], [158.0, 0], [158.1, 0], [158.2, 0], [158.3, 3], [158.4, 0], [158.5, 0], [158.6, 0], [158.7, 0], [158.8, 0], [158.9, 0], [159.0, 0], [159.1, 0], [159.2, 0], [159.3, 0], [159.4, 0], [159.5, 2418], [159.6, 0], [159.7, 0], [159.8, 0], [159.9, 0], [160.0, 0], [160.1, 0], [160.2, 0], [160.3, 0], [160.4, 0], [160.5, 0], [160.6, 0], [160.7, 4], [160.8, 0], [160.9, 0], [161.0, 0], [161.1, 0], [161.2, 0], [161.3, 0], [161.4, 0], [161.5, 0], [161.6, 0], [161.7, 0], [161.8, 1861], [161.9, 0], [162.0, 0], [162.1, 0], [162.2, 0], [162.3, 0], [162.4, 0], [162.5, 0], [162.6, 0], [162.7, 0], [162.8, 0], [162.9, 0], [163.0, 2043], [163.1, 0], [163.2, 0], [163.3, 0], [163.4, 0], [163.5, 0], [163.6, 0], [163.7, 0], [163.8, 0], [163.9, 0], [164.0, 0], [164.1, 0], [164.2, 0], [164.3, 0], [164.4, 0], [164.5, 0], [164.6, 0], [164.7, 0], [164.8, 0], [164.9, 1969], [165.0, 0], [165.1, 0], [165.2, 0], [165.3, 0], [165.4, 0], [165.5, 0], [165.6, 0], [165.7, 0], [165.8, 0], [165.9, 0], [166.0, 0], [166.1, 239], [166.2, 0], [166.3, 0], [166.4, 0], [166.5, 0], [166.6, 0], [166.7, 0], [166.8, 0], [166.9, 0], [167.0, 0], [167.1, 0], [167.2, 0], [167.3, 3], [167.4, 0], [167.5, 0], [167.6, 0], [167.7, 0], [167.8, 0], [167.9, 0], [168.0, 0], [168.1, 0], [168.2, 0], [168.3, 0], [168.4, 2783], [168.5, 0], [168.6, 0], [168.7, 0], [168.8, 0], [168.9, 0], [169.0, 0], [169.1, 0], [169.2, 0], [169.3, 0], [169.4, 0], [169.5, 0], [169.6, 9], [169.7, 0], [169.8, 0], [169.9, 0], [170.0, 0], [170.1, 0], [170.2, 0], [170.3, 0], [170.4, 0], [170.5, 0], [170.6, 0], [170.7, 2032], [170.8, 0], [170.9, 0], [171.0, 0], [171.1, 0], [171.2, 0], [171.3, 0], [171.4, 0], [171.5, 0], [171.6, 0], [171.7, 0], [171.8, 0], [171.9, 2220], [172.0, 0], [172.1, 0], [172.2, 0], [172.3, 0], [172.4, 0], [172.5, 0], [172.6, 0], [172.7, 0], [172.8, 0], [172.9, 0], [173.0, 0], [173.1, 0], [173.2, 0], [173.3, 0], [173.4, 0], [173.5, 0], [173.6, 0], [173.7, 0], [173.8, 0], [173.9, 2073], [174.0, 0], [174.1, 0], [174.2, 0], [174.3, 0], [174.4, 0], [174.5, 0], [174.6, 0], [174.7, 0], [174.8, 0], [174.9, 0], [175.0, 406], [175.1, 0], [175.2, 0], [175.3, 0], [175.4, 0], [175.5, 0], [175.6, 0], [175.7, 0], [175.8, 0], [175.9, 0], [176.0, 0], [176.1, 0], [176.2, 0], [176.3, 4], [176.4, 0], [176.5, 0], [176.6, 0], [176.7, 0], [176.8, 0], [176.9, 0], [177.0, 0], [177.1, 0], [177.2, 0], [177.3, 0], [177.4, 0], [177.5, 0], [177.6, 3002], [177.7, 0], [177.8, 0], [177.9, 0], [178.0, 0], [178.1, 0], [178.2, 0], [178.3, 0], [178.4, 0], [178.5, 0], [178.6, 0], [178.7, 0], [178.8, 12], [178.9, 0], [179.0, 0], [179.1, 0], [179.2, 0], [179.3, 0], [179.4, 0], [179.5, 0], [179.6, 0], [179.7, 0], [179.8, 0], [179.9, 0], [180.0, 2217], [180.1, 0], [180.2, 0], [180.3, 0], [180.4, 0], [180.5, 0], [180.6, 0], [180.7, 0], [180.8, 0], [180.9, 0], [181.0, 0], [181.1, 0], [181.2, 2328], [181.3, 0], [181.4, 0], [181.5, 0], [181.6, 0], [181.7, 0], [181.8, 0], [181.9, 0], [182.0, 0], [182.1, 0], [182.2, 0], [182.3, 0], [182.4, 0], [182.5, 0], [182.6, 0], [182.7, 0], [182.8, 0], [182.9, 0], [183.0, 0], [183.1, 2233], [183.2, 0], [183.3, 0], [183.4, 0], [183.5, 0], [183.6, 0], [183.7, 0], [183.8, 0], [183.9, 0], [184.0, 0], [184.1, 0], [184.2, 618], [184.3, 0], [184.4, 0], [184.5, 0], [184.6, 0], [184.7, 0], [184.8, 0], [184.9, 0], [185.0, 0], [185.1, 0], [185.2, 0], [185.3, 0], [185.4, 4], [185.5, 0], [185.6, 0], [185.7, 0], [185.8, 0], [185.9, 0], [186.0, 0], [186.1, 0], [186.2, 0], [186.3, 0], [186.4, 0], [186.5, 0], [186.6, 2871], [186.7, 0], [186.8, 0], [186.9, 0], [187.0, 0], [187.1, 0], [187.2, 0], [187.3, 0], [187.4, 0], [187.5, 0], [187.6, 0], [187.7, 0], [187.8, 11], [187.9, 0], [188.0, 0], [188.1, 0], [188.2, 0], [188.3, 0], [188.4, 0], [188.5, 0], [188.6, 0], [188.7, 0], [188.8, 0], [188.9, 2299], [189.0, 0], [189.1, 0], [189.2, 0], [189.3, 0], [189.4, 0], [189.5, 0], [189.6, 0], [189.7, 0], [189.8, 0], [189.9, 0], [190.0, 2340], [190.1, 0], [190.2, 0], [190.3, 0], [190.4, 0], [190.5, 0], [190.6, 0], [190.7, 0], [190.8, 0], [190.9, 0], [191.0, 0], [191.1, 0], [191.2, 0], [191.3, 0], [191.4, 0], [191.5, 0], [191.6, 0], [191.7, 0], [191.8, 0], [191.9, 0], [192.0, 0], [192.1, 0], [192.2, 0], [192.3, 0], [192.4, 0], [192.5, 0], [192.6, 0], [192.7, 0], [192.8, 0], [192.9, 0], [193.0, 0], [193.1, 0], [193.2, 0]]
demo/routing/crossbar/take-01/record-start.jsonadded+31
@@ -0,0 +1,31 @@+{+  "_hint": "Native window recording (WGC): background-capturable, no picker. Stop with desktop_record_stop {recordingId}; pull the MP4 with pull_file.",+  "audio": false,+  "audioNote": null,+  "audioRate": 0,+  "codec": "h264",+  "durationMs": 663,+  "encoder": "NVIDIA H.264 Encoder MFT",+  "error": "",+  "fps": 30,+  "hardwareEncoder": true,+  "height": 1540,+  "hwnd": 8916576,+  "kind": "window",+  "maxDurationMs": 600000,+  "path": "C:/Users/john/AppData/Local/Temp/adom-bridge-recordings/window-8916576-20260905-213451.mp4",+  "recordingId": "rec-82c3309937024e1b90b9a253e8af200b",+  "status": "ok",+  "success": true,+  "timeoutSeconds": 15,+  "title": "fusion-crossbar-24* (jlauerhub) - Autodesk Fusion (Trial ends in 16 days) ",+  "width": 2564,+  "data": {+    "height": 1540,+    "kind": "window",+    "path": "C:\\Users\\john\\AppData\\Local\\Temp\\adom-bridge-recordings\\window-8916576-20260905-213451.mp4",+    "recordingId": "rec-82c3309937024e1b90b9a253e8af200b",+    "width": 2564+  },+  "message": "Recording window \"fusion-crossbar-24* (jlauerhub) - Autodesk Fusion (Trial ends in 16 days) \" -> C:\\Users\\john\\AppData\\Local\\Temp\\adom-bridge-recordings\\window-8916576-20260905-213451.mp4 (2564x1540 @ 30fps h264)"+}
demo/routing/crossbar/take-01/record-stop.jsonadded+28
@@ -0,0 +1,28 @@+{+  "_hint": "The MP4 is finalized (moov written). pull_file {path} brings it to the caller; the janitor prunes the recordings dir by age/size, so pull it promptly.",+  "audio": false,+  "audioFrames": 0,+  "autoStopped": false,+  "bytes": 284769737,+  "durationMs": 477,+  "elapsedMs": 206642,+  "error": "",+  "fileExists": true,+  "frames": 5800,+  "height": 1540,+  "kind": "window",+  "path": "C:/Users/john/AppData/Local/Temp/adom-bridge-recordings/window-8916576-20260905-213451.mp4",+  "recordingId": "rec-82c3309937024e1b90b9a253e8af200b",+  "status": "ok",+  "success": true,+  "timeoutSeconds": 30,+  "width": 2564,+  "data": {+    "bytes": 284769737,+    "elapsedMs": 206642,+    "frames": 5800,+    "path": "C:\\Users\\john\\AppData\\Local\\Temp\\adom-bridge-recordings\\window-8916576-20260905-213451.mp4",+    "recordingId": "rec-82c3309937024e1b90b9a253e8af200b"+  },+  "message": "Stopped recording rec-82c3309937024e1b90b9a253e8af200b: 5800 frames, 206642 ms, 284769737 bytes -> C:\\Users\\john\\AppData\\Local\\Temp\\adom-bridge-recordings\\window-8916576-20260905-213451.mp4"+}
demo/routing/crossbar/video-verification.jsonadded+34
@@ -0,0 +1,34 @@+{+  "fullDecodePassed": true,+  "expectedDurationSeconds": 41.65555555555556,+  "actualDurationSeconds": 41.666667,+  "sourceConstant30FpsVerified": true,+  "selectedSourceFrames": 3299,+  "speed": 3,+  "holdSeconds": 5,+  "output": {+    "programs": [],+    "streams": [+      {+        "width": 1920,+        "height": 1080,+        "pix_fmt": "yuv420p",+        "r_frame_rate": "30/1",+        "nb_frames": "1250"+      }+    ],+    "format": {+      "duration": "41.666667",+      "size": "1568684"+    }+  },+  "verifiedCopperMutations": 168,+  "continuousRevisionChain": true,+  "visualReview": {+    "initialUnroutedFrame": true,+    "sequentialProgression": true,+    "captionTransitions": true,+    "finalCopperAndErrorsZero": true+  },+  "sha256": "f1ae07c26c2dbf91541ba71a97f4470018798170104fc375fe0d86c101972077"+}
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "fusion-bridge",-  "version": "1.10.0-dev.routing.1",+  "version": "1.10.0-dev.routing.2",   "type": "app",   "description": "This package installs the bridge's SKILLS into your container so your AI knows how to drive it; Adom Bridge loads the bridge runtime itself from the release zip.",   "dependencies": {
rust/Cargo.lock+5−5
@@ -10,7 +10,7 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"  [[package]] name = "adom-fusion-bridge"-version = "1.10.0-dev.routing.1"+version = "1.10.0-dev.routing.2" dependencies = [  "base64",  "chrono",@@ -273,7 +273,7 @@ dependencies = [  [[package]] name = "fusion-core"-version = "1.10.0-dev.routing.1"+version = "1.10.0-dev.routing.2" dependencies = [  "serde",  "serde_json",@@ -283,7 +283,7 @@ dependencies = [  [[package]] name = "fusion-lbr"-version = "1.10.0-dev.routing.1"+version = "1.10.0-dev.routing.2" dependencies = [  "regex",  "roxmltree",@@ -295,14 +295,14 @@ dependencies = [  [[package]] name = "fusion-os-mac"-version = "1.10.0-dev.routing.1"+version = "1.10.0-dev.routing.2" dependencies = [  "fusion-core", ]  [[package]] name = "fusion-os-win"-version = "1.10.0-dev.routing.1"+version = "1.10.0-dev.routing.2" dependencies = [  "fusion-core",  "windows-sys 0.59.0",
rust/Cargo.toml+1−1
@@ -4,7 +4,7 @@ members = ["core", "lbr", "os-win", "os-mac", "bridge"]  # One version for the whole bridge, in lockstep with BRIDGE_VERSION (tools/release.sh bumps both). [workspace.package]-version = "1.10.0-dev.routing.1"+version = "1.10.0-dev.routing.2" edition = "2021" license = "MIT" 
rust/bridge/src/routing_script.py+9
@@ -187,6 +187,15 @@ def plan(board,args):             if outgoing!=current:                 planned.append({'kind':'via','net':net,'at':xy,'diameter':dia,'drill':drill,'extent':'1-16'})             current=outgoing; previous=xy+    # Multiple branches can name the same layer transition. Emit one physical via.+    unique=[]; seen_vias=set()+    for item in planned:+        if item['kind']=='via':+            key=(tuple(item['at']),item['diameter'],item['drill'],item['extent'])+            if key in seen_vias: continue+            seen_vias.add(key)+        unique.append(item)+    planned=unique     if not planned or len(planned)>512: fail('invalid_path','Need 1..512 nonzero copper items')     def rule(name,default):         node=board.find("designrules/param[@name='%s']"%name)
skills/fusion-routing/SKILL.md+3
@@ -31,3 +31,6 @@ approved ones. Require `drc.checked`, `drc.clean`, and no remaining nets before claiming a connected, DRC-clean result. Save/export the final board separately.  See `demo/routing/README.md` for the tested scope, fixture, recorder and evidence.++For the 24-net crossover, see `demo/routing/crossbar/README.md`. Identical+via transitions shared by branches of one request produce one planned via.
tests/test_routing.py+17
@@ -22,6 +22,23 @@ class RoutingTests(unittest.TestCase):             self.assertGreater(len(p['items']),0)             if a['net']=='NET_3':self.assertEqual(2,sum(x['kind']=='via' for x in p['items']))             if a['net']=='NET_6':self.assertEqual(5,len(p['items']))+    def test_crossbar_all_nets_and_shared_vias(self):+        import json+        board=ET.parse(ROOT/'demo/routing/crossbar/fusion-crossbar-24.brd').find('drawing/board')+        totals={'segment':0,'via':0}+        for args in json.loads((ROOT/'demo/routing/crossbar/plan.json').read_text()):+            plan=r.plan(board,args)+            self.assertEqual(2,sum(i['kind']=='via' for i in plan['items']))+            self.assertEqual(5,sum(i['kind']=='segment' for i in plan['items']))+            signal=board.find("signals/signal[@name='%s']"%args['net'])+            for item in plan['items']:+                totals[item['kind']]+=1+                if item['kind']=='segment':+                    ET.SubElement(signal,'wire',x1=str(item['start'][0]),y1=str(item['start'][1]),x2=str(item['end'][0]),y2=str(item['end'][1]),width=str(item['width']),layer=str(item['layer']))+                else:+                    ET.SubElement(signal,'via',x=str(item['at'][0]),y=str(item['at'][1]),diameter=str(item['diameter']),drill=str(item['drill']),extent=item['extent'])+        self.assertEqual({'segment':120,'via':48},totals)+     def test_wrong_net_pad(self):         self.args['points'][0]={'pad':'J1.2'};self.rejected('net_mismatch')     def test_injected_command(self):
tools/install-routing-dev.ps1+1−1
@@ -1,7 +1,7 @@ param(     [Parameter(Mandatory=$true)][string]$Cache,     [Parameter(Mandatory=$true)][string]$Staged,-    [string]$Version='1.10.0-dev.routing.1'+    [string]$Version='1.10.0-dev.routing.2' ) $ErrorActionPreference='Stop' if (!(Test-Path "$cache/.dev-pin")) { throw 'Fusion bridge is not dev-pinned' }