@tscircuit/schematic-trace-solver 0.0.148 → 0.0.150

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/.agents/skills/schematic-trace-visualization/SKILL.md +7 -2
  2. package/dist/index.d.ts +31 -2
  3. package/dist/index.js +127 -46
  4. package/lib/solvers/InlineNetLabelSolver/InlineNetLabelSolver.ts +115 -6
  5. package/lib/solvers/NetLabelPlacementSolver/NetLabelPlacementSolver.ts +17 -1
  6. package/lib/solvers/NetLabelPlacementSolver/SingleNetLabelPlacementSolver/SingleNetLabelPlacementSolver.ts +2 -0
  7. package/lib/solvers/NetLabelPlacementSolver/SingleNetLabelPlacementSolver/solvePortOnlyPin.ts +2 -0
  8. package/lib/types/InputProblem.ts +27 -1
  9. package/package.json +8 -1
  10. package/site/examples/example51.page.tsx +4 -0
  11. package/tests/assets/example51.json +5102 -0
  12. package/tests/bug-reports/bug-report-20260706T213649Z/__snapshots__/bug-report-20260706T213649Z.snap.svg +751 -5
  13. package/tests/bug-reports/bug-report-20260706T220324Z/__snapshots__/bug-report-20260706T220324Z.snap.svg +660 -5
  14. package/tests/bug-reports/bug-report-20260707T020342Z/__snapshots__/bug-report-20260707T020342Z.snap.svg +44 -5
  15. package/tests/bug-reports/bug-report-20260707T092615Z/__snapshots__/bug-report-20260707T092615Z.snap.svg +394 -5
  16. package/tests/bug-reports/bug-report-20260707T134549Z/__snapshots__/bug-report-20260707T134549Z.snap.svg +170 -5
  17. package/tests/bug-reports/bug-report-20260707T134722Z/__snapshots__/bug-report-20260707T134722Z.snap.svg +79 -5
  18. package/tests/bug-reports/bug-report-20260707T140410Z/__snapshots__/bug-report-20260707T140410Z.snap.svg +219 -5
  19. package/tests/bug-reports/bug-report-20260707T141025Z/__snapshots__/bug-report-20260707T141025Z.snap.svg +65 -5
  20. package/tests/bug-reports/bug-report-20260707T141421Z/__snapshots__/bug-report-20260707T141421Z.snap.svg +142 -5
  21. package/tests/bug-reports/bug-report-20260707T230831Z/__snapshots__/bug-report-20260707T230831Z.snap.svg +100 -5
  22. package/tests/bug-reports/bug-report-20260708T053736Z/__snapshots__/bug-report-20260708T053736Z.snap.svg +23 -5
  23. package/tests/bug-reports/bug-report-20260708T055430Z/__snapshots__/bug-report-20260708T055430Z.snap.svg +58 -5
  24. package/tests/bug-reports/bug-report-20260708T095725Z/__snapshots__/bug-report-20260708T095725Z.snap.svg +86 -5
  25. package/tests/bug-reports/bug-report-20260716T144856Z/__snapshots__/bug-report-20260716T144856Z.snap.svg +226 -5
  26. package/tests/bug-reports/bug-report-20260717T022934Z/__snapshots__/bug-report-20260717T022934Z.snap.svg +191 -5
  27. package/tests/bug-reports/bug-report-20260717T031704Z/__snapshots__/bug-report-20260717T031704Z.snap.svg +30 -5
  28. package/tests/bug-reports/bug-report-20260717T042845Z/__snapshots__/bug-report-20260717T042845Z.snap.svg +37 -5
  29. package/tests/bug-reports/bug-report-20260721T221026Z/__snapshots__/bug-report-20260721T221026Z.snap.svg +580 -2
  30. package/tests/bug-reports/bug-report-20260724T175257Z/__snapshots__/bug-report-20260724T175257Z.snap.svg +44 -5
  31. package/tests/bug-reports/bug-report-20260728T144234Z/__snapshots__/bug-report-20260728T144234Z.snap.svg +107 -5
  32. package/tests/bug-reports/bug-report-20260728T225606Z/__snapshots__/bug-report-20260728T225606Z.snap.svg +114 -5
  33. package/tests/bug-reports/bug-report-20260730T061837Z/__snapshots__/bug-report-20260730T061837Z.snap.svg +121 -5
  34. package/tests/bug-reports/bug-report-20260731T052229Z/__snapshots__/bug-report-20260731T052229Z.snap.svg +51 -5
  35. package/tests/bug-reports/bug-report-20260804T095800Z/__snapshots__/bug-report-20260804T095800Z.snap.svg +212 -5
  36. package/tests/bug-reports/bug-report-20260804T171919Z/__snapshots__/bug-report-20260804T171919Z.snap.svg +569 -5
  37. package/tests/bug-reports/bug-report-20260804T225912Z/__snapshots__/bug-report-20260804T225912Z.snap.svg +37 -5
  38. package/tests/bug-reports/bug-report-20260805T061316Z/__snapshots__/bug-report-20260805T061316Z.snap.svg +289 -5
  39. package/tests/bug-reports/bug-report-20260806T061548Z/__snapshots__/bug-report-20260806T061548Z.snap.svg +289 -5
  40. package/tests/bug-reports/bug-report-20260806T093501Z/__snapshots__/bug-report-20260806T093501Z.snap.svg +149 -5
  41. package/tests/bug-reports/bug-report-20260811T075142Z/__snapshots__/bug-report-20260811T075142Z.snap.svg +93 -5
  42. package/tests/bug-reports/bug-report-20260815T073240Z/__snapshots__/bug-report-20260815T073240Z.snap.svg +79 -5
  43. package/tests/bug-reports/bug-report-20260819T091818Z/__snapshots__/bug-report-20260819T091818Z.snap.svg +244 -2
  44. package/tests/examples/__snapshots__/example01.snap.svg +44 -5
  45. package/tests/examples/__snapshots__/example02.snap.svg +51 -5
  46. package/tests/examples/__snapshots__/example03.snap.svg +86 -5
  47. package/tests/examples/__snapshots__/example04.snap.svg +30 -5
  48. package/tests/examples/__snapshots__/example05.snap.svg +30 -5
  49. package/tests/examples/__snapshots__/example06.snap.svg +30 -5
  50. package/tests/examples/__snapshots__/example07.snap.svg +58 -5
  51. package/tests/examples/__snapshots__/example08.snap.svg +37 -5
  52. package/tests/examples/__snapshots__/example09.snap.svg +149 -5
  53. package/tests/examples/__snapshots__/example10.snap.svg +65 -5
  54. package/tests/examples/__snapshots__/example11.snap.svg +51 -5
  55. package/tests/examples/__snapshots__/example12.snap.svg +51 -5
  56. package/tests/examples/__snapshots__/example13.snap.svg +72 -5
  57. package/tests/examples/__snapshots__/example14.snap.svg +79 -5
  58. package/tests/examples/__snapshots__/example15.snap.svg +86 -5
  59. package/tests/examples/__snapshots__/example16.snap.svg +51 -5
  60. package/tests/examples/__snapshots__/example17.snap.svg +51 -5
  61. package/tests/examples/__snapshots__/example18.snap.svg +58 -5
  62. package/tests/examples/__snapshots__/example19.snap.svg +44 -5
  63. package/tests/examples/__snapshots__/example20.snap.svg +44 -5
  64. package/tests/examples/__snapshots__/example21.snap.svg +72 -5
  65. package/tests/examples/__snapshots__/example22.snap.svg +51 -5
  66. package/tests/examples/__snapshots__/example23.snap.svg +51 -5
  67. package/tests/examples/__snapshots__/example24.snap.svg +51 -5
  68. package/tests/examples/__snapshots__/example25.snap.svg +86 -5
  69. package/tests/examples/__snapshots__/example26.snap.svg +51 -5
  70. package/tests/examples/__snapshots__/example27.snap.svg +72 -5
  71. package/tests/examples/__snapshots__/example28.snap.svg +44 -5
  72. package/tests/examples/__snapshots__/example29.snap.svg +324 -5
  73. package/tests/examples/__snapshots__/example30.snap.svg +107 -5
  74. package/tests/examples/__snapshots__/example31.snap.svg +37 -5
  75. package/tests/examples/__snapshots__/example32.snap.svg +149 -5
  76. package/tests/examples/__snapshots__/example33.snap.svg +93 -5
  77. package/tests/examples/__snapshots__/example34.snap.svg +51 -5
  78. package/tests/examples/__snapshots__/example35.snap.svg +58 -5
  79. package/tests/examples/__snapshots__/example36.snap.svg +44 -5
  80. package/tests/examples/__snapshots__/example37.snap.svg +72 -5
  81. package/tests/examples/__snapshots__/example38.snap.svg +30 -5
  82. package/tests/examples/__snapshots__/example39.snap.svg +37 -5
  83. package/tests/examples/__snapshots__/example40.snap.svg +100 -5
  84. package/tests/examples/__snapshots__/example41.snap.svg +44 -5
  85. package/tests/examples/__snapshots__/example42.snap.svg +65 -5
  86. package/tests/examples/__snapshots__/example43.snap.svg +58 -5
  87. package/tests/examples/__snapshots__/example44.snap.svg +107 -5
  88. package/tests/examples/__snapshots__/example45.snap.svg +51 -5
  89. package/tests/examples/__snapshots__/example46.snap.svg +93 -5
  90. package/tests/examples/__snapshots__/example47.snap.svg +93 -5
  91. package/tests/examples/__snapshots__/example48.snap.svg +65 -5
  92. package/tests/examples/__snapshots__/example49.snap.svg +177 -5
  93. package/tests/examples/__snapshots__/example50.snap.svg +93 -5
  94. package/tests/examples/__snapshots__/example51.snap.svg +952 -0
  95. package/tests/examples/example51.test.ts +12 -0
  96. package/tests/fixtures/convertSolverOutputToCircuitJson.test.ts +219 -0
  97. package/tests/fixtures/convertSolverOutputToCircuitJson.ts +1058 -0
  98. package/tests/fixtures/matcher.ts +45 -8
  99. package/tests/repros/__snapshots__/board-1273-trace-overlap-cycle.snap.svg +762 -2
  100. package/tests/repros/__snapshots__/board-15984-same-net-junction.snap.svg +111 -2
  101. package/tests/repros/__snapshots__/board1096-usb-label-overlap-iteration.snap.svg +167 -2
  102. package/tests/repros/__snapshots__/bugreport-001-gnd-overlap.snap.svg +65 -5
  103. package/tests/repros/__snapshots__/manufacturePartNumber-text-box.snap.svg +30 -5
  104. package/tests/repros/__snapshots__/netlabel-connector-through-rail-label.snap.svg +79 -5
  105. package/tests/repros/__snapshots__/repro-atmega328p-fault-pullup.snap.svg +65 -5
  106. package/tests/repros/__snapshots__/repro-atmega328p-missing-gnd-netlabel.snap.svg +149 -5
  107. package/tests/repros/__snapshots__/repro-board-589-regulator-section.snap.svg +55 -2
  108. package/tests/repros/__snapshots__/repro-board-648-esp12f-section.snap.svg +160 -2
  109. package/tests/repros/__snapshots__/repro-bq24074-battery-charger.snap.svg +135 -5
  110. package/tests/repros/__snapshots__/repro-bq25895-cross-net-trace-overlap.snap.svg +69 -2
  111. package/tests/repros/__snapshots__/repro-cc2340r5.snap.svg +86 -5
  112. package/tests/repros/__snapshots__/repro-core-555-power-cross-net-overlap.snap.svg +44 -5
  113. package/tests/repros/__snapshots__/repro-core-subcircuit-missing-ground.snap.svg +44 -5
  114. package/tests/repros/__snapshots__/repro-core-tb67s579ftg-inline-label-routing.snap.svg +260 -0
  115. package/tests/repros/__snapshots__/repro-example35-minimize-trace-crossing.snap.svg +335 -2
  116. package/tests/repros/__snapshots__/repro-ground-label-on-lower-rail-end.snap.svg +48 -2
  117. package/tests/repros/__snapshots__/repro-ina237-current-monitor.snap.svg +149 -5
  118. package/tests/repros/__snapshots__/repro-missing-trace-netlabel.snap.svg +72 -5
  119. package/tests/repros/__snapshots__/repro-netlabel-collision-687.snap.svg +100 -5
  120. package/tests/repros/__snapshots__/repro-netlabel-overlap-trace.snap.svg +51 -5
  121. package/tests/repros/__snapshots__/repro-nrf52810-clock-routing.snap.svg +90 -2
  122. package/tests/repros/__snapshots__/repro-power-group-rail-labels.snap.svg +37 -5
  123. package/tests/repros/__snapshots__/repro-rectifier-trace-overlap.snap.svg +44 -5
  124. package/tests/repros/__snapshots__/repro-rp2040-gamepad-trace-alignment.snap.svg +237 -2
  125. package/tests/repros/__snapshots__/repro-rp2040-usb-cc2-ground-overlap.snap.svg +72 -5
  126. package/tests/repros/__snapshots__/repro-rp2040-v3v3-label-placement.snap.svg +51 -5
  127. package/tests/repros/__snapshots__/repro-rp2040-zero-crystal-fallback-netlabels.snap.svg +30 -5
  128. package/tests/repros/__snapshots__/repro-ti-power-output-section.snap.svg +79 -5
  129. package/tests/repros/__snapshots__/repro-tida010076-j4-ground-bus.snap.svg +27 -2
  130. package/tests/repros/__snapshots__/repro-tida010076-page02.snap.svg +1150 -5
  131. package/tests/repros/__snapshots__/repro-tps61222-trace-intersection.snap.svg +51 -5
  132. package/tests/repros/__snapshots__/repro-type-c-16pin-self-connection.snap.svg +30 -5
  133. package/tests/repros/__snapshots__/repro-type-c-16pin-to-resistor.snap.svg +30 -5
  134. package/tests/repros/__snapshots__/repro-type-c-vbus-led-ground-label.snap.svg +44 -5
  135. package/tests/repros/__snapshots__/repro-usb-power-vbus-label-detour.snap.svg +685 -2
  136. package/tests/repros/__snapshots__/repro-vcc-pin1-detour.snap.svg +27 -2
  137. package/tests/repros/__snapshots__/repro129-host-custom-symbol-passives.snap.svg +51 -5
  138. package/tests/repros/__snapshots__/repro130-bq27441-fuel-gauge-trace-through-c1.snap.svg +100 -5
  139. package/tests/repros/__snapshots__/repro161-power-section-autolayout.snap.svg +107 -5
  140. package/tests/repros/__snapshots__/repro47-endpoint-obstacle-detour.snap.svg +51 -5
  141. package/tests/repros/__snapshots__/repro48-555-timer-vcc-rail-label.snap.svg +104 -2
  142. package/tests/repros/__snapshots__/repro5-escape-padded-text-obstacles.snap.svg +30 -5
  143. package/tests/repros/__snapshots__/repro51-overlap-junction-crossing.snap.svg +65 -5
  144. package/tests/repros/__snapshots__/repro84-stacked-gnd-label-orientation.snap.svg +27 -2
  145. package/tests/repros/__snapshots__/small-variant-resistor-facing-direction.snap.svg +58 -5
  146. package/tests/repros/__snapshots__/trace-overlap-box-resistor.snap.svg +37 -5
  147. package/tests/repros/assets/repro-core-tb67s579ftg-inline-label-routing.input.json +900 -0
  148. package/tests/repros/repro-core-tb67s579ftg-inline-label-routing.test.ts +40 -0
  149. package/tests/solvers/InlineNetLabelSolver/__snapshots__/fallback-net-label-width.snap.svg +25 -7
  150. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label-anchored-label-clearance.snap.svg +34 -2
  151. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label-port-stub.snap.svg +23 -5
  152. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label-two-pin-net.snap.svg +23 -5
  153. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label01.snap.svg +23 -5
  154. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label02.snap.svg +23 -5
  155. package/tests/solvers/InlineNetLabelSolver/__snapshots__/terminal-stub-trace-clearance.snap.svg +71 -0
  156. package/tests/solvers/InlineNetLabelSolver/fallback-net-label-width.test.ts +10 -1
  157. package/tests/solvers/InlineNetLabelSolver/terminal-stub-trace-clearance.test.ts +102 -0
  158. package/tests/solvers/SchematicTraceSingleLineSolver2/__snapshots__/SchematicTraceSingleLineSolver2_01-example17-d1_1-u1_1.snap.svg +23 -5
  159. package/tests/solvers/SchematicTraceSingleLineSolver2/__snapshots__/SchematicTraceSingleLineSolver2_repro47-short-opposing-pins.snap.svg +20 -2
  160. package/tests/solvers/TraceCleanupSolver/__snapshots__/TraceCleanupSolver.snap.svg +44 -5
  161. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/__snapshots__/TraceLabelOverlapAvoidanceSolver.snap.svg +79 -5
  162. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/sub-solver/__snapshots__/MergedNetLabelObstacles.snap.svg +44 -5
  163. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/sub-solver/__snapshots__/OverlapAvoidanceStepSolver.snap.svg +23 -5
  164. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/sub-solver/__snapshots__/SingleOverlapSolver.snap.svg +30 -5
@@ -1,4 +1,6 @@
1
- <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="-3.5005768910000006,1.4489565000000004 -0.5005768910000006,1.4489565000000004" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 285.40568444070533,225.88837130377448" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5005768910000006,1.4489565000000004 2.4994231089999994,1.4489565000000004" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 492.7323680008618,225.88837130377448" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-0.5005768910000006,1.4489565000000004 2.4994231089999994,1.4489565000000004" data-type="line" data-label="" points="285.40568444070533,225.88837130377448 492.7323680008618,225.88837130377448" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5005768910000006,1.4489565000000004 -3.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 78.07900088054879,433.215054863931" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5005768910000006,1.4489565000000004 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 285.40568444070533,433.215054863931" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5005768910000006,-1.5510434999999996 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,433.215054863931 285.40568444070533,433.215054863931" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5005768910000006,1.4485175000000003 -2.4994231089999994,-1.5514824999999997" data-type="line" data-label="" points="354.59431555929467,225.9187101084688 147.26763199913816,433.2453936686253" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5005768910000006,1.4485175000000003 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="354.59431555929467,225.9187101084688 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-2.4994231089999994,-1.5514824999999997 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="147.26763199913816,433.2453936686253 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="3.5005768910000006,1.4485175000000003 0.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.9209991194512,225.9187101084688 354.59431555929467,433.2453936686253" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="3.5005768910000006,1.4485175000000003 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.9209991194512,225.9187101084688 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5005768910000006,-1.5514824999999997 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="354.59431555929467,433.2453936686253 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5005768910000006,-1.5510434999999996 -3.7005768910000008,-1.5510434999999996 -3.7005768910000008,-1.9246184999999991 -0.7005768910000008,-1.9246184999999991 -0.7005768910000008,-1.5510434999999996 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,433.215054863931 64.25722197653835,433.215054863931 64.25722197653835,459.03241013425946 271.58390553669483,459.03241013425946 271.58390553669483,433.215054863931 285.40568444070533,433.215054863931" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.5005768910000006,1.4489565000000004 -3.5005768910000006,1.6489565000000006 -4.051576891000001,1.6489565000000006 -4.051576891000001,1.0753815000000009 -0.7005768910000008,1.0753815000000009 -0.7005768910000008,1.4489565000000004 -0.5005768910000006,1.4489565000000004" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 78.07900088054879,212.06659239976403 40,212.06659239976403 40,251.70572657410293 271.58390553669483,251.70572657410293 271.58390553669483,225.88837130377448 285.40568444070533,225.88837130377448" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="3.5005768910000006,1.4485175000000003 4.051576891000001,1.4485175000000003 4.051576891000001,-1.3514824999999995 3.5005768910000006,-1.3514824999999995 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.9209991194512,225.9187101084688 600,225.9187101084688 600,419.42361476461485 561.9209991194512,419.42361476461485 561.9209991194512,433.2453936686253" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-3" data-y="1.5" x="78.07900088054878" y="206.83767522258796" width="69.18863111858937" height="31.04627244750455" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="0" data-y="1.5" x="285.40568444070533" y="206.83767522258796" width="69.18863111858934" height="31.04627244750455" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="3" data-y="1.5" x="492.73236800086187" y="206.83767522258796" width="69.18863111858934" height="31.04627244750455" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="schematic_component_3" data-x="-3" data-y="-1.5" x="78.07900088054878" y="414.16435878274444" width="69.18863111858937" height="31.046272447504577" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="schematic_component_4" data-x="0" data-y="-1.5" x="285.40568444070533" y="414.16435878274444" width="69.18863111858934" height="31.046272447504577" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="schematic_component_5" data-x="3" data-y="-1.5" x="492.73236800086187" y="414.16435878274444" width="69.18863111858934" height="31.046272447504577" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="netId: PIN1
1
+ <svg width="2416" height="1200" viewBox="0 0 2416 1200" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Solver debug visualization on the left and Circuit JSON schematic on the right">
2
+ <g transform="translate(0, 0) scale(1.875, 1.875) translate(0, 0)">
3
+ <rect width="100%" height="100%" fill="white"/><g><polyline data-points="-3.5005768910000006,1.4489565000000004 -0.5005768910000006,1.4489565000000004" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 285.40568444070533,225.88837130377448" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5005768910000006,1.4489565000000004 2.4994231089999994,1.4489565000000004" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 492.7323680008618,225.88837130377448" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-0.5005768910000006,1.4489565000000004 2.4994231089999994,1.4489565000000004" data-type="line" data-label="" points="285.40568444070533,225.88837130377448 492.7323680008618,225.88837130377448" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5005768910000006,1.4489565000000004 -3.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 78.07900088054879,433.215054863931" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5005768910000006,1.4489565000000004 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 285.40568444070533,433.215054863931" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5005768910000006,-1.5510434999999996 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,433.215054863931 285.40568444070533,433.215054863931" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5005768910000006,1.4485175000000003 -2.4994231089999994,-1.5514824999999997" data-type="line" data-label="" points="354.59431555929467,225.9187101084688 147.26763199913816,433.2453936686253" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5005768910000006,1.4485175000000003 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="354.59431555929467,225.9187101084688 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-2.4994231089999994,-1.5514824999999997 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="147.26763199913816,433.2453936686253 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="3.5005768910000006,1.4485175000000003 0.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.9209991194512,225.9187101084688 354.59431555929467,433.2453936686253" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="3.5005768910000006,1.4485175000000003 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.9209991194512,225.9187101084688 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5005768910000006,-1.5514824999999997 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="354.59431555929467,433.2453936686253 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5005768910000006,-1.5510434999999996 -3.7005768910000008,-1.5510434999999996 -3.7005768910000008,-1.9246184999999991 -0.7005768910000008,-1.9246184999999991 -0.7005768910000008,-1.5510434999999996 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,433.215054863931 64.25722197653835,433.215054863931 64.25722197653835,459.03241013425946 271.58390553669483,459.03241013425946 271.58390553669483,433.215054863931 285.40568444070533,433.215054863931" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.5005768910000006,1.4489565000000004 -3.5005768910000006,1.6489565000000006 -4.051576891000001,1.6489565000000006 -4.051576891000001,1.0753815000000009 -0.7005768910000008,1.0753815000000009 -0.7005768910000008,1.4489565000000004 -0.5005768910000006,1.4489565000000004" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 78.07900088054879,212.06659239976403 40,212.06659239976403 40,251.70572657410293 271.58390553669483,251.70572657410293 271.58390553669483,225.88837130377448 285.40568444070533,225.88837130377448" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="3.5005768910000006,1.4485175000000003 4.051576891000001,1.4485175000000003 4.051576891000001,-1.3514824999999995 3.5005768910000006,-1.3514824999999995 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.9209991194512,225.9187101084688 600,225.9187101084688 600,419.42361476461485 561.9209991194512,419.42361476461485 561.9209991194512,433.2453936686253" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-3" data-y="1.5" x="78.07900088054878" y="206.83767522258796" width="69.18863111858937" height="31.04627244750455" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="0" data-y="1.5" x="285.40568444070533" y="206.83767522258796" width="69.18863111858934" height="31.04627244750455" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="3" data-y="1.5" x="492.73236800086187" y="206.83767522258796" width="69.18863111858934" height="31.04627244750455" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="schematic_component_3" data-x="-3" data-y="-1.5" x="78.07900088054878" y="414.16435878274444" width="69.18863111858937" height="31.046272447504577" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="schematic_component_4" data-x="0" data-y="-1.5" x="285.40568444070533" y="414.16435878274444" width="69.18863111858934" height="31.046272447504577" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="schematic_component_5" data-x="3" data-y="-1.5" x="492.73236800086187" y="414.16435878274444" width="69.18863111858934" height="31.046272447504577" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="netId: PIN1
2
4
  globalConnNetId: connectivity_net0" data-x="-3.7005768910000008" data-y="1.8739565000000007" x="57.346332524533125" y="180.96758986574054" width="13.821778904010444" height="31.099002534023498" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="netId: PIN1
3
5
  globalConnNetId: connectivity_net0" data-x="2.2734231089999994" data-y="1.4489565000000004" x="461.5642565723183" y="218.97748185176926" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="netId: PIN2
4
6
  globalConnNetId: connectivity_net1" data-x="-3.7265768910000006" data-y="1.4489565000000004" x="46.91088945200521" y="218.97748185176926" width="31.099002534023526" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="netId: PIN2
@@ -50,7 +52,7 @@ orientation: x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="35
50
52
  const h = svg.getElementById('crosshair-h');
51
53
  const v = svg.getElementById('crosshair-v');
52
54
  const coords = svg.getElementById('coordinates');
53
-
55
+
54
56
  crosshair.style.display = 'block';
55
57
  h.setAttribute('x1', '0');
56
58
  h.setAttribute('x2', '640');
@@ -69,13 +71,13 @@ orientation: x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="35
69
71
  // y' = (y - ty) / sy
70
72
  const sx = matrix.a;
71
73
  const sy = matrix.d;
72
- const tx = matrix.e;
74
+ const tx = matrix.e;
73
75
  const ty = matrix.f;
74
76
  const realPoint = {
75
77
  x: (x - tx) / sx,
76
78
  y: (y - ty) / sy // Flip y back since we used negative scale
77
79
  }
78
-
80
+
79
81
  coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
80
82
  coords.setAttribute('x', (x + 5).toString());
81
83
  coords.setAttribute('y', (y - 5).toString());
@@ -83,4 +85,83 @@ orientation: x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="35
83
85
  document.currentScript.parentElement.addEventListener('mouseleave', () => {
84
86
  document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
85
87
  });
86
- ]]></script></svg>
88
+ ]]></script>
89
+ </g>
90
+ <g transform="translate(1216, 200)">
91
+ <style>
92
+ .boundary { fill: rgb(245, 241, 237); }
93
+ .schematic-boundary { fill: none; stroke: #fff; }
94
+ .component { fill: none; stroke: rgb(132, 0, 0); }
95
+ .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
96
+ .component-pin { fill: none; stroke: rgb(132, 0, 0); }
97
+ .text { font-family: sans-serif; fill: rgb(0, 150, 0); }
98
+ .pin-number { fill: rgb(169, 0, 0); }
99
+ .port-label { fill: rgb(0, 100, 100); }
100
+ .component-name { fill: rgb(0, 100, 100); }
101
+
102
+ </style><rect class="boundary" x="0" y="0" width="1200" height="800"/><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><path d="M 143.55948311806884 606.8872307365 L 117.48146620288878 606.8872307365 L 117.48146620288878 655.5977065819417 L 508.6517199305888 655.5977065819417 L 508.6517199305888 606.8872307365 L 534.7297368457688 606.8872307365" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="20.862413532144px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 143.55948311806884 606.8872307365 L 117.48146620288878 606.8872307365 L 117.48146620288878 655.5977065819417 L 508.6517199305888 655.5977065819417 L 508.6517199305888 606.8872307365 L 534.7297368457688 606.8872307365" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.607801691518px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"><path d="M 143.55948311806884 215.71697700879992 L 143.55948311806884 189.6389600936199 L 71.71454651674787 189.6389600936199 L 71.71454651674787 264.42745285424166 L 508.6517199305888 264.42745285424166 L 508.6517199305888 215.71697700879992 L 534.7297368457688 215.71697700879992" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="20.862413532144px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 143.55948311806884 215.71697700879992 L 143.55948311806884 189.6389600936199 L 71.71454651674787 189.6389600936199 L 71.71454651674787 264.42745285424166 L 508.6517199305888 264.42745285424166 L 508.6517199305888 215.71697700879992 L 534.7297368457688 215.71697700879992" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.607801691518px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"><path d="M 1056.4405168819312 215.77421825592873 L 1128.2854534832522 215.77421825592873 L 1128.2854534832522 580.8664550684487 L 1056.4405168819312 580.8664550684487 L 1056.4405168819312 606.9444719836288" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="20.862413532144px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 1056.4405168819312 215.77421825592873 L 1128.2854534832522 215.77421825592873 L 1128.2854534832522 580.8664550684487 L 1056.4405168819312 580.8664550684487 L 1056.4405168819312 606.9444719836288" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.607801691518px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"/><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_0__stack1"><rect class="component chip sch-component-body" x="195.71551694842884" y="179.77338551443833" width="26.228458647742286" height="58.57605042462336" stroke-width="2.607801691518px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="195.71551694842884" y="179.77338551443833" width="26.228458647742286" height="58.57605042462336" fill="transparent"/><text class="sch-text" x="208.82974627229999" y="209.06141072675" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="19.525350141541125px" transform="rotate(0, 208.82974627229999, 209.06141072675)">PIN1_PIN2</text><line class="component-pin sch-component-pin sch-port-line" x1="195.71551694842884" y1="215.71697700879992" x2="143.55948311806884" y2="215.71697700879992" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_0_0__stack1"><rect x="140.95168142655083" y="213.1091753172819" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="169.63750003324884" y="213.1091753172819" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">1</text><line class="component-pin sch-component-pin sch-port-line" x1="195.71551694842884" y1="215.71697700879992" x2="146.16728480958682" y2="215.71697700879992" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_0_1__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="143.55948311806884" cy="215.71697700879992" r="2.607801691518" stroke-width="2.607801691518px"/><rect x="140.95168142655083" y="213.1091753172819" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="169.63750003324884" y="213.1091753172819" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="221.94397559617113" y1="215.77421825592873" x2="271.49220773501315" y2="215.77421825592873" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_0_2__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="274.10000942653113" cy="215.77421825592873" r="2.607801691518" stroke-width="2.607801691518px"/><rect x="271.49220773501315" y="213.16641656441072" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="248.02199251135113" y="213.16641656441072" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="221.94397559617113" y1="215.77421825592873" x2="271.49220773501315" y2="215.77421825592873" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_0_3__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="274.10000942653113" cy="215.77421825592873" r="2.607801691518" stroke-width="2.607801691518px"/><rect x="271.49220773501315" y="213.16641656441072" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="248.02199251135113" y="213.16641656441072" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">4</text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_1__stack1"><rect class="component chip sch-component-body" x="586.8857706761288" y="179.77338551443833" width="26.2284586477424" height="58.57605042462336" stroke-width="2.607801691518px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="586.8857706761288" y="179.77338551443833" width="26.2284586477424" height="58.57605042462336" fill="transparent"/><text class="sch-text" x="600" y="209.06141072675" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="19.525350141541125px" transform="rotate(0, 600, 209.06141072675)">PIN1_PIN3</text><line class="component-pin sch-component-pin sch-port-line" x1="586.8857706761288" y1="215.71697700879992" x2="534.7297368457688" y2="215.71697700879992" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_1_0__stack1"><rect x="532.1219351542508" y="213.1091753172819" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="560.8077537609488" y="213.1091753172819" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">1</text><line class="component-pin sch-component-pin sch-port-line" x1="586.8857706761288" y1="215.71697700879992" x2="537.3375385372868" y2="215.71697700879992" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_1_1__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="534.7297368457688" cy="215.71697700879992" r="2.607801691518" stroke-width="2.607801691518px"/><rect x="532.1219351542508" y="213.1091753172819" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="560.8077537609488" y="213.1091753172819" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="613.1142293238712" y1="215.77421825592873" x2="662.6624614627132" y2="215.77421825592873" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_1_2__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="665.2702631542312" cy="215.77421825592873" r="2.607801691518" stroke-width="2.607801691518px"/><rect x="662.6624614627132" y="213.16641656441072" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="639.1922462390512" y="213.16641656441072" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="613.1142293238712" y1="215.77421825592873" x2="662.6624614627132" y2="215.77421825592873" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_1_3__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="665.2702631542312" cy="215.77421825592873" r="2.607801691518" stroke-width="2.607801691518px"/><rect x="662.6624614627132" y="213.16641656441072" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="639.1922462390512" y="213.16641656441072" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">4</text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_2__stack1"><rect class="component chip sch-component-body" x="978.0560244038288" y="179.77338551443833" width="26.2284586477424" height="58.57605042462336" stroke-width="2.607801691518px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="978.0560244038288" y="179.77338551443833" width="26.2284586477424" height="58.57605042462336" fill="transparent"/><text class="sch-text" x="991.1702537277" y="209.06141072675" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="19.525350141541125px" transform="rotate(0, 991.1702537277, 209.06141072675)">PIN1_PIN4</text><line class="component-pin sch-component-pin sch-port-line" x1="978.0560244038288" y1="215.71697700879992" x2="928.5077922649868" y2="215.71697700879992" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_2_0__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="925.8999905734688" cy="215.71697700879992" r="2.607801691518" stroke-width="2.607801691518px"/><rect x="923.2921888819508" y="213.1091753172819" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="951.9780074886489" y="213.1091753172819" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">1</text><line class="component-pin sch-component-pin sch-port-line" x1="978.0560244038288" y1="215.71697700879992" x2="928.5077922649868" y2="215.71697700879992" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_2_1__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="925.8999905734688" cy="215.71697700879992" r="2.607801691518" stroke-width="2.607801691518px"/><rect x="923.2921888819508" y="213.1091753172819" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="951.9780074886489" y="213.1091753172819" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="1004.2844830515712" y1="215.77421825592873" x2="1053.8327151904132" y2="215.77421825592873" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_2_2__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="1056.4405168819312" cy="215.77421825592873" r="2.607801691518" stroke-width="2.607801691518px"/><rect x="1053.8327151904132" y="213.16641656441072" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="1030.362499966751" y="213.16641656441072" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="1004.2844830515712" y1="215.77421825592873" x2="1056.4405168819312" y2="215.77421825592873" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_2_3__stack1"><rect x="1053.8327151904132" y="213.16641656441072" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="1030.362499966751" y="213.16641656441072" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">4</text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_3__stack1"><rect class="component chip sch-component-body" x="195.71551694842884" y="570.9436392421384" width="26.228458647742286" height="58.576050424623304" stroke-width="2.607801691518px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="195.71551694842884" y="570.9436392421384" width="26.228458647742286" height="58.576050424623304" fill="transparent"/><text class="sch-text" x="208.82974627229999" y="600.2316644544501" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="19.525350141541125px" transform="rotate(0, 208.82974627229999, 600.2316644544501)">PIN2_PIN3</text><line class="component-pin sch-component-pin sch-port-line" x1="195.71551694842884" y1="606.8872307365" x2="146.16728480958682" y2="606.8872307365" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_3_0__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="143.55948311806884" cy="606.8872307365" r="2.607801691518" stroke-width="2.607801691518px"/><rect x="140.95168142655083" y="604.279429044982" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="169.63750003324884" y="604.279429044982" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">1</text><line class="component-pin sch-component-pin sch-port-line" x1="195.71551694842884" y1="606.8872307365" x2="143.55948311806884" y2="606.8872307365" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_3_1__stack1"><rect x="140.95168142655083" y="604.279429044982" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="169.63750003324884" y="604.279429044982" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="221.94397559617113" y1="606.9444719836288" x2="271.49220773501315" y2="606.9444719836288" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_3_2__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="274.10000942653113" cy="606.9444719836288" r="2.607801691518" stroke-width="2.607801691518px"/><rect x="271.49220773501315" y="604.3366702921107" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="248.02199251135113" y="604.3366702921107" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="221.94397559617113" y1="606.9444719836288" x2="271.49220773501315" y2="606.9444719836288" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_3_3__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="274.10000942653113" cy="606.9444719836288" r="2.607801691518" stroke-width="2.607801691518px"/><rect x="271.49220773501315" y="604.3366702921107" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="248.02199251135113" y="604.3366702921107" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">4</text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_4__stack1"><rect class="component chip sch-component-body" x="586.8857706761288" y="570.9436392421384" width="26.2284586477424" height="58.576050424623304" stroke-width="2.607801691518px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="586.8857706761288" y="570.9436392421384" width="26.2284586477424" height="58.576050424623304" fill="transparent"/><text class="sch-text" x="600" y="600.2316644544501" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="19.525350141541125px" transform="rotate(0, 600, 600.2316644544501)">PIN2_PIN4</text><line class="component-pin sch-component-pin sch-port-line" x1="586.8857706761288" y1="606.8872307365" x2="537.3375385372868" y2="606.8872307365" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_4_0__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="534.7297368457688" cy="606.8872307365" r="2.607801691518" stroke-width="2.607801691518px"/><rect x="532.1219351542508" y="604.279429044982" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="560.8077537609488" y="604.279429044982" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">1</text><line class="component-pin sch-component-pin sch-port-line" x1="586.8857706761288" y1="606.8872307365" x2="534.7297368457688" y2="606.8872307365" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_4_1__stack1"><rect x="532.1219351542508" y="604.279429044982" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="560.8077537609488" y="604.279429044982" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="613.1142293238712" y1="606.9444719836288" x2="662.6624614627132" y2="606.9444719836288" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_4_2__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="665.2702631542312" cy="606.9444719836288" r="2.607801691518" stroke-width="2.607801691518px"/><rect x="662.6624614627132" y="604.3366702921107" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="639.1922462390512" y="604.3366702921107" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="613.1142293238712" y1="606.9444719836288" x2="662.6624614627132" y2="606.9444719836288" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_4_3__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="665.2702631542312" cy="606.9444719836288" r="2.607801691518" stroke-width="2.607801691518px"/><rect x="662.6624614627132" y="604.3366702921107" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="639.1922462390512" y="604.3366702921107" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">4</text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_5__stack1"><rect class="component chip sch-component-body" x="978.0560244038288" y="570.9436392421384" width="26.2284586477424" height="58.576050424623304" stroke-width="2.607801691518px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="978.0560244038288" y="570.9436392421384" width="26.2284586477424" height="58.576050424623304" fill="transparent"/><text class="sch-text" x="991.1702537277" y="600.2316644544501" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="19.525350141541125px" transform="rotate(0, 991.1702537277, 600.2316644544501)">PIN3_PIN4</text><line class="component-pin sch-component-pin sch-port-line" x1="978.0560244038288" y1="606.8872307365" x2="928.5077922649868" y2="606.8872307365" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_5_0__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="925.8999905734688" cy="606.8872307365" r="2.607801691518" stroke-width="2.607801691518px"/><rect x="923.2921888819508" y="604.279429044982" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="951.9780074886489" y="604.279429044982" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">1</text><line class="component-pin sch-component-pin sch-port-line" x1="978.0560244038288" y1="606.8872307365" x2="928.5077922649868" y2="606.8872307365" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_5_1__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="925.8999905734688" cy="606.8872307365" r="2.607801691518" stroke-width="2.607801691518px"/><rect x="923.2921888819508" y="604.279429044982" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="951.9780074886489" y="604.279429044982" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="1004.2844830515712" y1="606.9444719836288" x2="1053.8327151904132" y2="606.9444719836288" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_5_2__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="1056.4405168819312" cy="606.9444719836288" r="2.607801691518" stroke-width="2.607801691518px"/><rect x="1053.8327151904132" y="604.3366702921107" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="1030.362499966751" y="604.3366702921107" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="1004.2844830515712" y1="606.9444719836288" x2="1056.4405168819312" y2="606.9444719836288" stroke-width="2.607801691518px"/><g class="sch-port" data-schematic-port-id="source_port_5_3__stack1"><rect x="1053.8327151904132" y="604.3366702921107" width="5.215603383036" height="5.215603383036" opacity="0"/></g><text class="pin-number sch-pin-number" x="1030.362499966751" y="604.3366702921107" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.558512686385px" transform="">4</text></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="143.55948311806884" cy="215.71697700879992" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="143.55948311806884" cy="215.71697700879992" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_2__stack1"><circle cx="274.10000942653113" cy="215.77421825592873" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_3__stack1"><circle cx="274.10000942653113" cy="215.77421825592873" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_0__stack1"><circle cx="534.7297368457688" cy="215.71697700879992" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_1__stack1"><circle cx="534.7297368457688" cy="215.71697700879992" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_2__stack1"><circle cx="665.2702631542312" cy="215.77421825592873" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_3__stack1"><circle cx="665.2702631542312" cy="215.77421825592873" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_0__stack1"><circle cx="925.8999905734688" cy="215.71697700879992" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_1__stack1"><circle cx="925.8999905734688" cy="215.71697700879992" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_2__stack1"><circle cx="1056.4405168819312" cy="215.77421825592873" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_3__stack1"><circle cx="1056.4405168819312" cy="215.77421825592873" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_3_0__stack1"><circle cx="143.55948311806884" cy="606.8872307365" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_3_1__stack1"><circle cx="143.55948311806884" cy="606.8872307365" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_3_2__stack1"><circle cx="274.10000942653113" cy="606.9444719836288" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_3_3__stack1"><circle cx="274.10000942653113" cy="606.9444719836288" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_4_0__stack1"><circle cx="534.7297368457688" cy="606.8872307365" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_4_1__stack1"><circle cx="534.7297368457688" cy="606.8872307365" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_4_2__stack1"><circle cx="665.2702631542312" cy="606.9444719836288" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_4_3__stack1"><circle cx="665.2702631542312" cy="606.9444719836288" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_5_0__stack1"><circle cx="925.8999905734688" cy="606.8872307365" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_5_1__stack1"><circle cx="925.8999905734688" cy="606.8872307365" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_5_2__stack1"><circle cx="1056.4405168819312" cy="606.9444719836288" r="5.215603383036" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_5_3__stack1"><circle cx="1056.4405168819312" cy="606.9444719836288" r="5.215603383036" fill="red" opacity="0"/></g><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" d="
103
+ M 117.48146620288878,189.6389600936199
104
+ L 104.44245774529878,182.59789552652128
105
+ L 104.44245774529878,137.88278918929265
106
+ L 130.52047466047878,137.88278918929265
107
+ L 130.52047466047878,182.59789552652128
108
+ Z
109
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.607801691518px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" x="117.48146620288878" y="177.90385248178887" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="23.470215223662px" transform="rotate(-90 117.48146620288878 177.90385248178887)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" d="
110
+ M 925.8999905734688,215.71697700879992
111
+ L 918.8589260063702,228.75598546638992
112
+ L 874.1438196691415,228.75598546638992
113
+ L 874.1438196691415,202.67796855120991
114
+ L 918.8589260063702,202.67796855120991
115
+ Z
116
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.607801691518px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" x="914.1648829616378" y="215.71697700879992" fill="rgb(132, 0, 0)" text-anchor="end" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="23.470215223662px" transform="">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" d="
117
+ M 143.55948311806884,215.71697700879992
118
+ L 136.51841855097024,228.75598546638992
119
+ L 91.8033122137416,228.75598546638992
120
+ L 91.8033122137416,202.67796855120991
121
+ L 136.51841855097024,202.67796855120991
122
+ Z
123
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.607801691518px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" x="131.82437550623783" y="215.71697700879992" fill="rgb(132, 0, 0)" text-anchor="end" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="23.470215223662px" transform="">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" d="
124
+ M 117.48146620288878,606.8872307365
125
+ L 104.44245774529878,599.8461661694014
126
+ L 104.44245774529878,555.1310598321727
127
+ L 130.52047466047878,555.1310598321727
128
+ L 130.52047466047878,599.8461661694014
129
+ Z
130
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.607801691518px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" x="117.48146620288878" y="595.152123124669" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="23.470215223662px" transform="rotate(-90 117.48146620288878 595.152123124669)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" d="
131
+ M 665.2702631542312,215.77421825592873
132
+ L 672.3113277213298,202.73520979833873
133
+ L 717.0264340585584,202.73520979833873
134
+ L 717.0264340585584,228.81322671351873
135
+ L 672.3113277213298,228.81322671351873
136
+ Z
137
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.607801691518px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" x="677.0053707660622" y="215.77421825592873" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="23.470215223662px" transform="">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_5__stack1" d="
138
+ M 274.10000942653113,606.9444719836288
139
+ L 281.14107399362973,593.9054635260388
140
+ L 325.85618033085836,593.9054635260388
141
+ L 325.85618033085836,619.9834804412187
142
+ L 281.14107399362973,619.9834804412187
143
+ Z
144
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.607801691518px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_5__stack1" x="285.8351170383621" y="606.9444719836288" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="23.470215223662px" transform="">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_6__stack1" d="
145
+ M 1056.4405168819312,606.9444719836288
146
+ L 1063.4815814490298,593.9054635260388
147
+ L 1108.1966877862585,593.9054635260388
148
+ L 1108.1966877862585,619.9834804412187
149
+ L 1063.4815814490298,619.9834804412187
150
+ Z
151
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.607801691518px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_6__stack1" x="1068.1756244937621" y="606.9444719836288" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="23.470215223662px" transform="">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_7__stack1" d="
152
+ M 1082.518533797111,215.77421825592873
153
+ L 1069.4795253395212,208.73315368883013
154
+ L 1069.4795253395212,164.0180473516015
155
+ L 1095.557542254701,164.0180473516015
156
+ L 1095.557542254701,208.73315368883013
157
+ Z
158
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.607801691518px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_7__stack1" x="1082.518533797111" y="204.03911064409772" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="23.470215223662px" transform="rotate(-90 1082.518533797111 204.03911064409772)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_8__stack1" d="
159
+ M 665.2702631542312,606.9444719836288
160
+ L 672.3113277213298,593.9054635260388
161
+ L 717.0264340585584,593.9054635260388
162
+ L 717.0264340585584,619.9834804412187
163
+ L 672.3113277213298,619.9834804412187
164
+ Z
165
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.607801691518px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_8__stack1" x="677.0053707660622" y="606.9444719836288" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="23.470215223662px" transform="">XX</text>
166
+ </g>
167
+ </svg>
@@ -1,4 +1,6 @@
1
- <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="0.30397715550000004,0.5800832909999993 0.31067575550000137,-0.5800832909999993" data-type="line" data-label="" points="376.82474681593334,221.07952010516527 378.69086877497443,544.2832245830261" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.30397715550000004,0.5800832909999993 0.30397715550000004,0.7800832909999993 0.6467558855000002,0.7800832909999993 0.6467558855000002,-0.7800832909999993 0.31067575550000137,-0.7800832909999993 0.31067575550000137,-0.5800832909999993" data-type="line" data-label="" points="376.82474681593334,221.07952010516527 376.82474681593334,165.36274468819136 472.3173744015611,165.36274468819136 472.3173744015611,600 378.69086877497443,600 378.69086877497443,544.2832245830261" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="167.68262559843902" y="221.07952010516524" width="248.91797338614813" height="323.20370447786087" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0035895831821428554"/></g><g><rect data-type="rect" data-label="netId: V3_3
1
+ <svg width="2416" height="1200" viewBox="0 0 2416 1200" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Solver debug visualization on the left and Circuit JSON schematic on the right">
2
+ <g transform="translate(0, 0) scale(1.875, 1.875) translate(0, 0)">
3
+ <rect width="100%" height="100%" fill="white"/><g><polyline data-points="0.30397715550000004,0.5800832909999993 0.31067575550000137,-0.5800832909999993" data-type="line" data-label="" points="376.82474681593334,221.07952010516527 378.69086877497443,544.2832245830261" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.30397715550000004,0.5800832909999993 0.30397715550000004,0.7800832909999993 0.6467558855000002,0.7800832909999993 0.6467558855000002,-0.7800832909999993 0.31067575550000137,-0.7800832909999993 0.31067575550000137,-0.5800832909999993" data-type="line" data-label="" points="376.82474681593334,221.07952010516527 376.82474681593334,165.36274468819136 472.3173744015611,165.36274468819136 472.3173744015611,600 378.69086877497443,600 378.69086877497443,544.2832245830261" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="167.68262559843902" y="221.07952010516524" width="248.91797338614813" height="323.20370447786087" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0035895831821428554"/></g><g><rect data-type="rect" data-label="netId: V3_3
2
4
  globalConnNetId: connectivity_net0" data-x="0.30397715550000004" data-y="1.0050832909999994" x="348.96635910744635" y="40.00000000000004" width="55.71677541697392" height="125.36274468819127" fill="#ef444466" stroke="#ef4444" stroke-width="0.0035895831821428554"/></g><g><circle data-type="point" data-label="Q1.1
3
5
  y+" data-x="0.30397715550000004" data-y="0.5800832909999993" cx="376.82474681593334" cy="221.07952010516527" r="3" fill="hsl(315, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="Q1.2
4
6
  y-" data-x="0.31067575550000137" data-y="-0.5800832909999993" cx="378.69086877497443" cy="544.2832245830261" r="3" fill="hsl(316, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="Q1.3
@@ -13,7 +15,7 @@ orientation: y+" data-x="0.30397715550000004" data-y="0.7800832909999993" cx="37
13
15
  const h = svg.getElementById('crosshair-h');
14
16
  const v = svg.getElementById('crosshair-v');
15
17
  const coords = svg.getElementById('coordinates');
16
-
18
+
17
19
  crosshair.style.display = 'block';
18
20
  h.setAttribute('x1', '0');
19
21
  h.setAttribute('x2', '640');
@@ -32,13 +34,13 @@ orientation: y+" data-x="0.30397715550000004" data-y="0.7800832909999993" cx="37
32
34
  // y' = (y - ty) / sy
33
35
  const sx = matrix.a;
34
36
  const sy = matrix.d;
35
- const tx = matrix.e;
37
+ const tx = matrix.e;
36
38
  const ty = matrix.f;
37
39
  const realPoint = {
38
40
  x: (x - tx) / sx,
39
41
  y: (y - ty) / sy // Flip y back since we used negative scale
40
42
  }
41
-
43
+
42
44
  coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
43
45
  coords.setAttribute('x', (x + 5).toString());
44
46
  coords.setAttribute('y', (y - 5).toString());
@@ -46,4 +48,27 @@ orientation: y+" data-x="0.30397715550000004" data-y="0.7800832909999993" cx="37
46
48
  document.currentScript.parentElement.addEventListener('mouseleave', () => {
47
49
  document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
48
50
  });
49
- ]]></script></svg>
51
+ ]]></script>
52
+ </g>
53
+ <g transform="translate(1216, 200)">
54
+ <style>
55
+ .boundary { fill: rgb(245, 241, 237); }
56
+ .schematic-boundary { fill: none; stroke: #fff; }
57
+ .component { fill: none; stroke: rgb(132, 0, 0); }
58
+ .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
59
+ .component-pin { fill: none; stroke: rgb(132, 0, 0); }
60
+ .text { font-family: sans-serif; fill: rgb(0, 150, 0); }
61
+ .pin-number { fill: rgb(169, 0, 0); }
62
+ .port-label { fill: rgb(0, 100, 100); }
63
+ .component-name { fill: rgb(0, 100, 100); }
64
+
65
+ </style><rect class="boundary" x="0" y="0" width="1200" height="800"/><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><path d="M 660.9164076876353 291.82491150098633 L 660.9164076876353 238.61750087118637 L 752.1082508989921 238.61750087118637 L 752.1082508989921 653.6796207680136 L 662.6984834918596 653.6796207680136 L 662.6984834918596 600.4722101382137" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="42.56592850384px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 660.9164076876353 291.82491150098633 L 660.9164076876353 238.61750087118637 L 752.1082508989921 238.61750087118637 L 752.1082508989921 653.6796207680136 L 662.6984834918596 653.6796207680136 L 662.6984834918596 600.4722101382137" stroke="rgb(0, 150, 0)" fill="none" stroke-width="5.32074106298px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"/><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_0__stack1"><rect class="component chip sch-component-body" x="566.74536835635" y="398.2397327605863" width="26.603705314900026" height="95.81765611802734" stroke-width="5.32074106298px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="566.74536835635" y="398.2397327605863" width="26.603705314900026" height="95.81765611802734" fill="transparent"/><text class="sch-text" x="580.0472210138" y="446.1485608196" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="47.88666956682px" transform="rotate(0, 580.0472210138, 446.1485608196)">Q1</text><line class="component-pin sch-component-pin sch-port-line" x1="660.9164076876353" y1="398.2397327605863" x2="660.9164076876353" y2="291.82491150098633" stroke-width="5.32074106298px"/><g class="sch-port" data-schematic-port-id="source_port_0_0__stack1"><rect x="655.5956666246553" y="286.5041704380063" width="10.64148212596" height="10.64148212596" opacity="0"/></g><text class="pin-number sch-pin-number" x="655.5956666246553" y="345.0323221307864" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="39.905557972349996px" transform="rotate(-90 655.5956666246553 345.0323221307864)">1</text><line class="component-pin sch-component-pin sch-port-line" x1="662.6984834918596" y1="494.05738887861366" x2="662.6984834918596" y2="600.4722101382137" stroke-width="5.32074106298px"/><g class="sch-port" data-schematic-port-id="source_port_0_1__stack1"><rect x="657.3777424288796" y="595.1514690752336" width="10.64148212596" height="10.64148212596" opacity="0"/></g><text class="pin-number sch-pin-number" x="657.3777424288796" y="547.2647995084136" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="39.905557972349996px" transform="rotate(-90 657.3777424288796 547.2647995084136)">2</text><line class="component-pin sch-component-pin sch-port-line" x1="566.74536835635" y1="473.41902149895475" x2="466.51434282138797" y2="473.41902149895475" stroke-width="5.32074106298px"/><g class="sch-port" data-schematic-port-id="source_port_0_2__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="461.19360175840797" cy="473.41902149895475" r="5.32074106298" stroke-width="5.32074106298px"/><rect x="455.87286069542796" y="468.09828043597474" width="10.64148212596" height="10.64148212596" opacity="0"/></g><text class="pin-number sch-pin-number" x="513.969485057379" y="468.09828043597474" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="39.905557972349996px" transform="">3</text></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="660.9164076876353" cy="291.82491150098633" r="10.64148212596" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="662.6984834918596" cy="600.4722101382137" r="10.64148212596" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_2__stack1"><circle cx="461.19360175840797" cy="473.41902149895475" r="10.64148212596" fill="red" opacity="0"/></g><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" d="
66
+ M 660.9164076876353,238.61750087118637
67
+ L 634.3127023727353,224.25150000114036
68
+ L 634.3127023727353,133.01852657457664
69
+ L 687.5201130025354,133.01852657457664
70
+ L 687.5201130025354,224.25150000114036
71
+ Z
72
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="5.32074106298px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" x="660.9164076876353" y="214.67416608777637" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="47.88666956682px" transform="rotate(-90 660.9164076876353 214.67416608777637)">XX</text>
73
+ </g>
74
+ </svg>
@@ -1,4 +1,6 @@
1
- <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="2.52012455,0.9994877000000013 -0.9,0.7999999999999999" data-type="line" data-label="" points="504.16055269230765,223.1320938461537 135.8394473076923,244.61538461538464" fill="none" stroke="hsl(248, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="2.5201245500000002,0.9994877000000013 2.7201245500000004,0.9994877000000013 2.7201245500000004,2.7 -1.1,2.7 -1.1,0.7999999999999999 -0.9,0.7999999999999999" data-type="line" data-label="" points="504.1605526923077,223.1320938461537 525.6990142307693,223.1320938461537 525.6990142307693,40 114.30098576923073,40 114.30098576923073,244.61538461538464 135.8394473076923,244.61538461538464" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="135.8394473076923" y="61.53846153846155" width="193.8461538461538" height="538.4615384615385" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.009285714285714286"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="2" data-y="1" x="392.1337265384616" y="193.58589076923084" width="112.02682615384612" height="58.98206461538453" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.009285714285714286"/></g><g><rect data-type="rect" data-label="netId: .LED1 &gt; port.right to .U1 &gt; .pin20
1
+ <svg width="2416" height="1200" viewBox="0 0 2416 1200" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Solver debug visualization on the left and Circuit JSON schematic on the right">
2
+ <g transform="translate(0, 0) scale(1.875, 1.875) translate(0, 0)">
3
+ <rect width="100%" height="100%" fill="white"/><g><polyline data-points="2.52012455,0.9994877000000013 -0.9,0.7999999999999999" data-type="line" data-label="" points="504.16055269230765,223.1320938461537 135.8394473076923,244.61538461538464" fill="none" stroke="hsl(248, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="2.5201245500000002,0.9994877000000013 2.7201245500000004,0.9994877000000013 2.7201245500000004,2.7 -1.1,2.7 -1.1,0.7999999999999999 -0.9,0.7999999999999999" data-type="line" data-label="" points="504.1605526923077,223.1320938461537 525.6990142307693,223.1320938461537 525.6990142307693,40 114.30098576923073,40 114.30098576923073,244.61538461538464 135.8394473076923,244.61538461538464" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="135.8394473076923" y="61.53846153846155" width="193.8461538461538" height="538.4615384615385" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.009285714285714286"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="2" data-y="1" x="392.1337265384616" y="193.58589076923084" width="112.02682615384612" height="58.98206461538453" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.009285714285714286"/></g><g><rect data-type="rect" data-label="netId: .LED1 &gt; port.right to .U1 &gt; .pin20
2
4
  globalConnNetId: connectivity_net0" data-x="2.6201245500000003" data-y="0.7744877000000013" x="504.16055269230765" y="223.13209384615368" width="21.538461538461604" height="48.46153846153848" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.009285714285714286"/></g><g><circle data-type="point" data-label="U1.1
3
5
  x+" data-x="0.9" data-y="1.2" cx="329.6856011538461" cy="201.53846153846155" r="3" fill="hsl(319, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U1.2
4
6
  x+" data-x="0.9" data-y="0.3999999999999999" cx="329.6856011538461" cy="287.69230769230774" r="3" fill="hsl(320, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U1.3
@@ -38,7 +40,7 @@ orientation: y-" data-x="2.6201245500000003" data-y="0.9994877000000013" cx="514
38
40
  const h = svg.getElementById('crosshair-h');
39
41
  const v = svg.getElementById('crosshair-v');
40
42
  const coords = svg.getElementById('coordinates');
41
-
43
+
42
44
  crosshair.style.display = 'block';
43
45
  h.setAttribute('x1', '0');
44
46
  h.setAttribute('x2', '640');
@@ -57,13 +59,13 @@ orientation: y-" data-x="2.6201245500000003" data-y="0.9994877000000013" cx="514
57
59
  // y' = (y - ty) / sy
58
60
  const sx = matrix.a;
59
61
  const sy = matrix.d;
60
- const tx = matrix.e;
62
+ const tx = matrix.e;
61
63
  const ty = matrix.f;
62
64
  const realPoint = {
63
65
  x: (x - tx) / sx,
64
66
  y: (y - ty) / sy // Flip y back since we used negative scale
65
67
  }
66
-
68
+
67
69
  coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
68
70
  coords.setAttribute('x', (x + 5).toString());
69
71
  coords.setAttribute('y', (y - 5).toString());
@@ -71,4 +73,27 @@ orientation: y-" data-x="2.6201245500000003" data-y="0.9994877000000013" cx="514
71
73
  document.currentScript.parentElement.addEventListener('mouseleave', () => {
72
74
  document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
73
75
  });
74
- ]]></script></svg>
76
+ ]]></script>
77
+ </g>
78
+ <g transform="translate(1216, 200)">
79
+ <style>
80
+ .boundary { fill: rgb(245, 241, 237); }
81
+ .schematic-boundary { fill: none; stroke: #fff; }
82
+ .component { fill: none; stroke: rgb(132, 0, 0); }
83
+ .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
84
+ .component-pin { fill: none; stroke: rgb(132, 0, 0); }
85
+ .text { font-family: sans-serif; fill: rgb(0, 150, 0); }
86
+ .pin-number { fill: rgb(169, 0, 0); }
87
+ .port-label { fill: rgb(0, 100, 100); }
88
+ .component-name { fill: rgb(0, 100, 100); }
89
+
90
+ </style><rect class="boundary" x="0" y="0" width="1200" height="800"/><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><path d="M 818.8879712 288.06557439999983 L 844.4879712000001 288.06557439999983 L 844.4879712000001 70.39999999999998 L 355.5120288 70.39999999999998 L 355.5120288 313.6 L 381.1120288 313.6" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="20.48px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 818.8879712 288.06557439999983 L 844.4879712000001 288.06557439999983 L 844.4879712000001 70.39999999999998 L 355.5120288 70.39999999999998 L 355.5120288 313.6 L 381.1120288 313.6" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.56px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"/><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_0__stack1"><rect class="component chip sch-component-body" x="432.3120288" y="96" width="128" height="640" stroke-width="2.56px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="432.3120288" y="96" width="128" height="640" fill="transparent"/><text class="sch-text" x="496.3120288" y="416" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="23.04px" transform="rotate(0, 496.3120288, 416)">U1</text><line class="component-pin sch-component-pin sch-port-line" x1="560.3120288" y1="262.4" x2="608.9520288" y2="262.4" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_0__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="611.5120288" cy="262.4" r="2.56" stroke-width="2.56px"/><rect x="608.9520288000001" y="259.84" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="585.9120288" y="259.84000000000003" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">1</text><line class="component-pin sch-component-pin sch-port-line" x1="560.3120288" y1="364.8" x2="608.9520288" y2="364.8" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_1__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="611.5120288" cy="364.8" r="2.56" stroke-width="2.56px"/><rect x="608.9520288000001" y="362.24" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="585.9120288" y="362.24" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="560.3120288" y1="339.20000000000005" x2="608.9520288" y2="339.20000000000005" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_2__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="611.5120288" cy="339.20000000000005" r="2.56" stroke-width="2.56px"/><rect x="608.9520288000001" y="336.64000000000004" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="585.9120288" y="336.64" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="432.3120288" y1="364.8" x2="383.6720288" y2="364.8" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_3__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="381.1120288" cy="364.8" r="2.56" stroke-width="2.56px"/><rect x="378.5520288" y="362.24" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="406.7120288" y="362.24" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">4</text><line class="component-pin sch-component-pin sch-port-line" x1="560.3120288" y1="288" x2="608.9520288" y2="288" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_4__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="611.5120288" cy="288" r="2.56" stroke-width="2.56px"/><rect x="608.9520288000001" y="285.44" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="585.9120288" y="285.44000000000005" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">5</text><line class="component-pin sch-component-pin sch-port-line" x1="560.3120288" y1="441.6" x2="608.9520288" y2="441.6" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_5__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="611.5120288" cy="441.6" r="2.56" stroke-width="2.56px"/><rect x="608.9520288000001" y="439.04" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="585.9120288" y="439.04" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">6</text><line class="component-pin sch-component-pin sch-port-line" x1="432.3120288" y1="518.4" x2="383.6720288" y2="518.4" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_6__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="381.1120288" cy="518.4" r="2.56" stroke-width="2.56px"/><rect x="378.5520288" y="515.84" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="406.7120288" y="515.8399999999999" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">7</text><line class="component-pin sch-component-pin sch-port-line" x1="560.3120288" y1="390.4" x2="608.9520288" y2="390.4" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_7__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="611.5120288" cy="390.4" r="2.56" stroke-width="2.56px"/><rect x="608.9520288000001" y="387.84" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="585.9120288" y="387.84000000000003" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">9</text><line class="component-pin sch-component-pin sch-port-line" x1="560.3120288" y1="416" x2="608.9520288" y2="416" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_8__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="611.5120288" cy="416" r="2.56" stroke-width="2.56px"/><rect x="608.9520288000001" y="413.44" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="585.9120288" y="413.44" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">10</text><line class="component-pin sch-component-pin sch-port-line" x1="560.3120288" y1="313.6" x2="608.9520288" y2="313.6" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_9__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="611.5120288" cy="313.6" r="2.56" stroke-width="2.56px"/><rect x="608.9520288000001" y="311.04" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="585.9120288" y="311.04" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">11</text><line class="component-pin sch-component-pin sch-port-line" x1="560.3120288" y1="569.6" x2="608.9520288" y2="569.6" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_10__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="611.5120288" cy="569.6" r="2.56" stroke-width="2.56px"/><rect x="608.9520288000001" y="567.0400000000001" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="585.9120288" y="567.04" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">12</text><line class="component-pin sch-component-pin sch-port-line" x1="560.3120288" y1="544" x2="608.9520288" y2="544" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_11__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="611.5120288" cy="544" r="2.56" stroke-width="2.56px"/><rect x="608.9520288000001" y="541.44" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="585.9120288" y="541.44" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">13</text><line class="component-pin sch-component-pin sch-port-line" x1="560.3120288" y1="518.4" x2="608.9520288" y2="518.4" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_12__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="611.5120288" cy="518.4" r="2.56" stroke-width="2.56px"/><rect x="608.9520288000001" y="515.84" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="585.9120288" y="515.84" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">14</text><line class="component-pin sch-component-pin sch-port-line" x1="432.3120288" y1="288" x2="383.6720288" y2="288" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_13__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="381.1120288" cy="288" r="2.56" stroke-width="2.56px"/><rect x="378.5520288" y="285.44" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="406.7120288" y="285.44" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">15</text><line class="component-pin sch-component-pin sch-port-line" x1="432.3120288" y1="262.4" x2="383.6720288" y2="262.4" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_14__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="381.1120288" cy="262.4" r="2.56" stroke-width="2.56px"/><rect x="378.5520288" y="259.84" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="406.7120288" y="259.84000000000003" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">16</text><line class="component-pin sch-component-pin sch-port-line" x1="432.3120288" y1="339.20000000000005" x2="383.6720288" y2="339.20000000000005" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_15__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="381.1120288" cy="339.20000000000005" r="2.56" stroke-width="2.56px"/><rect x="378.5520288" y="336.64000000000004" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="406.7120288" y="336.64" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">17</text><line class="component-pin sch-component-pin sch-port-line" x1="432.3120288" y1="544" x2="383.6720288" y2="544" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_16__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="381.1120288" cy="544" r="2.56" stroke-width="2.56px"/><rect x="378.5520288" y="541.44" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="406.7120288" y="541.4399999999999" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">18</text><line class="component-pin sch-component-pin sch-port-line" x1="432.3120288" y1="441.6" x2="383.6720288" y2="441.6" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_17__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="381.1120288" cy="441.6" r="2.56" stroke-width="2.56px"/><rect x="378.5520288" y="439.04" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="406.7120288" y="439.04" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">19</text><line class="component-pin sch-component-pin sch-port-line" x1="432.3120288" y1="313.6" x2="381.1120288" y2="313.6" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_18__stack1"><rect x="378.5520288" y="311.04" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="406.7120288" y="311.04" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">20</text><line class="component-pin sch-component-pin sch-port-line" x1="432.3120288" y1="569.6" x2="383.6720288" y2="569.6" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_19__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="381.1120288" cy="569.6" r="2.56" stroke-width="2.56px"/><rect x="378.5520288" y="567.0400000000001" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="406.7120288" y="567.04" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">21</text><line class="component-pin sch-component-pin sch-port-line" x1="560.3120288" y1="492.79999999999995" x2="608.9520288" y2="492.79999999999995" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_20__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="611.5120288" cy="492.79999999999995" r="2.56" stroke-width="2.56px"/><rect x="608.9520288000001" y="490.23999999999995" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="585.9120288" y="490.24" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">22</text><line class="component-pin sch-component-pin sch-port-line" x1="560.3120288" y1="467.2" x2="608.9520288" y2="467.2" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_21__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="611.5120288" cy="467.2" r="2.56" stroke-width="2.56px"/><rect x="608.9520288000001" y="464.64" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="585.9120288" y="464.64" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">23</text><line class="component-pin sch-component-pin sch-port-line" x1="432.3120288" y1="492.79999999999995" x2="383.6720288" y2="492.79999999999995" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_22__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="381.1120288" cy="492.79999999999995" r="2.56" stroke-width="2.56px"/><rect x="378.5520288" y="490.23999999999995" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="406.7120288" y="490.24" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">25</text><line class="component-pin sch-component-pin sch-port-line" x1="432.3120288" y1="467.2" x2="383.6720288" y2="467.2" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_23__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="381.1120288" cy="467.2" r="2.56" stroke-width="2.56px"/><rect x="378.5520288" y="464.64" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="406.7120288" y="464.64" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">26</text><line class="component-pin sch-component-pin sch-port-line" x1="432.3120288" y1="390.4" x2="383.6720288" y2="390.4" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_24__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="381.1120288" cy="390.4" r="2.56" stroke-width="2.56px"/><rect x="378.5520288" y="387.84" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="406.7120288" y="387.84000000000003" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">27</text><line class="component-pin sch-component-pin sch-port-line" x1="432.3120288" y1="416" x2="383.6720288" y2="416" stroke-width="2.56px"/><g class="sch-port" data-schematic-port-id="source_port_0_25__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="381.1120288" cy="416" r="2.56" stroke-width="2.56px"/><rect x="378.5520288" y="413.44" width="5.12" height="5.12" opacity="0"/></g><text class="pin-number sch-pin-number" x="406.7120288" y="413.44" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="19.2px" transform="">28</text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_1__stack1"><rect class="component-overlay sch-component-overlay" x="685.7360864000001" y="248.48199615173093" width="133.15194938790864" height="56.712867331887026" fill="transparent"/><path class="sch-component-symbol-path" d="M 769.5724989775722 287.93442560000017 L 736.284511630595 305.19486348361795" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.56px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 768.3396105573138 287.93442560000017 L 818.8880357879087 287.93442560000017" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.56px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 736.284511630595 271.9068761366408 L 769.5724989775722 287.93442560000017" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.56px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 736.284511630595 305.19486348361795 L 736.284511630595 271.9068761366408" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.56px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 769.5724989775722 271.9068761366408 L 769.5724989775722 305.19486348361795" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.56px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 736.284511630595 287.93442560000017 L 685.7360864000001 287.93442560000017" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.56px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 772.038275818089 252.18066141250617 L 783.1342716004148 250.94777299224776 L 779.4356063396395 262.0437687745735" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.56px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 762.1751684560218 266.9753224556071 L 763.4080568762802 266.9753224556071 L 778.2027179193811 254.646438253023 L 778.2027179193811 254.646438253023" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.56px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 749.8462842534376 249.71488457198933 L 762.1751684560218 248.48199615173093 L 757.243614774988 259.5779919340566" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.56px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 739.9831768913702 264.5095456150903 L 741.2160653116287 263.2766571948319 L 757.243614774988 252.18066141250617 L 757.243614774988 252.18066141250617" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.56px" stroke-linecap="round"/><text class="sch-component-text" x="752.3120610939544" y="313.82508242542684" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="23.04px"></text><text class="sch-component-name sch-component-text" x="752.3120610939544" y="237.38600036940522" stroke="rgb(245, 241, 237)" stroke-width="2.56px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="ideographic" font-size="23.04px">LED1</text><circle class="component-pin sch-component-pin" cx="685.7360864000001" cy="287.93442560000017" r="2.56px" stroke-width="2.56px" fill="none" stroke="rgb(132, 0, 0)"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="611.5120288" cy="262.4" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="611.5120288" cy="364.8" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_2__stack1"><circle cx="611.5120288" cy="339.20000000000005" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_3__stack1"><circle cx="381.1120288" cy="364.8" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_4__stack1"><circle cx="611.5120288" cy="288" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_5__stack1"><circle cx="611.5120288" cy="441.6" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_6__stack1"><circle cx="381.1120288" cy="518.4" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_7__stack1"><circle cx="611.5120288" cy="390.4" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_8__stack1"><circle cx="611.5120288" cy="416" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_9__stack1"><circle cx="611.5120288" cy="313.6" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_10__stack1"><circle cx="611.5120288" cy="569.6" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_11__stack1"><circle cx="611.5120288" cy="544" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_12__stack1"><circle cx="611.5120288" cy="518.4" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_13__stack1"><circle cx="381.1120288" cy="288" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_14__stack1"><circle cx="381.1120288" cy="262.4" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_15__stack1"><circle cx="381.1120288" cy="339.20000000000005" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_16__stack1"><circle cx="381.1120288" cy="544" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_17__stack1"><circle cx="381.1120288" cy="441.6" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_18__stack1"><circle cx="381.1120288" cy="313.6" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_19__stack1"><circle cx="381.1120288" cy="569.6" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_20__stack1"><circle cx="611.5120288" cy="492.79999999999995" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_21__stack1"><circle cx="611.5120288" cy="467.2" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_22__stack1"><circle cx="381.1120288" cy="492.79999999999995" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_23__stack1"><circle cx="381.1120288" cy="467.2" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_24__stack1"><circle cx="381.1120288" cy="390.4" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_25__stack1"><circle cx="381.1120288" cy="416" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_0__stack1"><circle cx="683.1920610939544" cy="287.93442560000017" r="5.12" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_1__stack1"><circle cx="816.3439458939542" cy="288.06557439999983" r="5.12" fill="red" opacity="0"/></g><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" d="
91
+ M 831.6879712,288.06557439999983
92
+ L 844.4879712,294.9775743999998
93
+ L 844.4879712,338.8730410666665
94
+ L 818.8879712,338.8730410666665
95
+ L 818.8879712,294.9775743999998
96
+ Z
97
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.56px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" x="831.6879712" y="299.5855743999998" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="23.04px" transform="rotate(90 831.6879712 299.5855743999998)">XX</text>
98
+ </g>
99
+ </svg>
@@ -1,4 +1,6 @@
1
- <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="-3.5512907000000005,0.0002732499999993365 2.4487906999999995,-0.00027334999999961695" data-type="line" data-label="" points="62.695035460992926,318.8552397163121 516.6019026004727,318.89659007092195" fill="none" stroke="hsl(72, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-3.5512907000000005,0.0002732499999993365 -3.7512907000000006,0.0002732499999993365 -3.7512907000000006,0.20027324999999935 2.2487906999999994,0.20027324999999935 2.2487906999999994,-0.00027334999999961695 2.4487906999999987,-0.00027334999999961695" data-type="line" data-label="" points="62.695035460992926,318.8552397163121 47.565011820330994,318.8552397163121 47.565011820330994,303.72521607565017 501.4718789598108,303.72521607565017 501.4718789598108,318.89659007092195 516.6019026004726,318.89659007092195" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-3" data-y="0" x="62.69503546099291" y="304.1653408983452" width="83.41041323877076" height="29.421140425531803" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013218750000000003"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="3" data-y="0" x="516.6019026004728" y="287.10220709219846" width="83.39809739952727" height="63.547408037825335" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013218750000000003"/></g><g><rect data-type="rect" data-label="netId: .R1 &gt; .pin1 to .C1 &gt; .pin1
1
+ <svg width="2416" height="1200" viewBox="0 0 2416 1200" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Solver debug visualization on the left and Circuit JSON schematic on the right">
2
+ <g transform="translate(0, 0) scale(1.875, 1.875) translate(0, 0)">
3
+ <rect width="100%" height="100%" fill="white"/><g><polyline data-points="-3.5512907000000005,0.0002732499999993365 2.4487906999999995,-0.00027334999999961695" data-type="line" data-label="" points="62.695035460992926,318.8552397163121 516.6019026004727,318.89659007092195" fill="none" stroke="hsl(72, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-3.5512907000000005,0.0002732499999993365 -3.7512907000000006,0.0002732499999993365 -3.7512907000000006,0.20027324999999935 2.2487906999999994,0.20027324999999935 2.2487906999999994,-0.00027334999999961695 2.4487906999999987,-0.00027334999999961695" data-type="line" data-label="" points="62.695035460992926,318.8552397163121 47.565011820330994,318.8552397163121 47.565011820330994,303.72521607565017 501.4718789598108,303.72521607565017 501.4718789598108,318.89659007092195 516.6019026004726,318.89659007092195" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-3" data-y="0" x="62.69503546099291" y="304.1653408983452" width="83.41041323877076" height="29.421140425531803" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013218750000000003"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="3" data-y="0" x="516.6019026004728" y="287.10220709219846" width="83.39809739952727" height="63.547408037825335" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013218750000000003"/></g><g><rect data-type="rect" data-label="netId: .R1 &gt; .pin1 to .C1 &gt; .pin1
2
4
  globalConnNetId: connectivity_net0" data-x="-3.7512907000000006" data-y="-0.22472675000000067" x="40" y="318.8552397163121" width="15.130023640661989" height="34.04255319148939" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.013218750000000003"/></g><g><circle data-type="point" data-label="R1.1
3
5
  x-" data-x="-3.5512907000000005" data-y="0.0002732499999993365" cx="62.695035460992926" cy="318.8552397163121" r="3" fill="hsl(226, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R1.2
4
6
  x+" data-x="-2.4487092999999995" data-y="-0.0002732499999993365" cx="146.10544869976368" cy="318.89658250591015" r="3" fill="hsl(227, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="C1.1
@@ -14,7 +16,7 @@ orientation: y-" data-x="-3.7512907000000006" data-y="0.0002732499999993365" cx=
14
16
  const h = svg.getElementById('crosshair-h');
15
17
  const v = svg.getElementById('crosshair-v');
16
18
  const coords = svg.getElementById('coordinates');
17
-
19
+
18
20
  crosshair.style.display = 'block';
19
21
  h.setAttribute('x1', '0');
20
22
  h.setAttribute('x2', '640');
@@ -33,13 +35,13 @@ orientation: y-" data-x="-3.7512907000000006" data-y="0.0002732499999993365" cx=
33
35
  // y' = (y - ty) / sy
34
36
  const sx = matrix.a;
35
37
  const sy = matrix.d;
36
- const tx = matrix.e;
38
+ const tx = matrix.e;
37
39
  const ty = matrix.f;
38
40
  const realPoint = {
39
41
  x: (x - tx) / sx,
40
42
  y: (y - ty) / sy // Flip y back since we used negative scale
41
43
  }
42
-
44
+
43
45
  coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
44
46
  coords.setAttribute('x', (x + 5).toString());
45
47
  coords.setAttribute('y', (y - 5).toString());
@@ -47,4 +49,27 @@ orientation: y-" data-x="-3.7512907000000006" data-y="0.0002732499999993365" cx=
47
49
  document.currentScript.parentElement.addEventListener('mouseleave', () => {
48
50
  document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
49
51
  });
50
- ]]></script></svg>
52
+ ]]></script>
53
+ </g>
54
+ <g transform="translate(1216, 200)">
55
+ <style>
56
+ .boundary { fill: rgb(245, 241, 237); }
57
+ .schematic-boundary { fill: none; stroke: #fff; }
58
+ .component { fill: none; stroke: rgb(132, 0, 0); }
59
+ .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
60
+ .component-pin { fill: none; stroke: rgb(132, 0, 0); }
61
+ .text { font-family: sans-serif; fill: rgb(0, 150, 0); }
62
+ .pin-number { fill: rgb(169, 0, 0); }
63
+ .port-label { fill: rgb(0, 100, 100); }
64
+ .component-name { fill: rgb(0, 100, 100); }
65
+
66
+ </style><rect class="boundary" x="0" y="0" width="1200" height="800"/><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><path d="M 116.34543525247466 399.9602607622717 L 87.25907643937467 399.9602607622717 L 87.25907643937467 370.8739019491717 L 959.8616789804115 370.8739019491717 L 959.8616789804115 400.03975378090774 L 988.9480377935114 400.03975378090774" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="23.26908705048px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 116.34543525247466 399.9602607622717 L 87.25907643937467 399.9602607622717 L 87.25907643937467 370.8739019491717 L 959.8616789804115 370.8739019491717 L 959.8616789804115 400.03975378090774 L 988.9480377935114 400.03975378090774" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.90863588131px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"/><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_0__stack1"><rect class="component-overlay sch-component-overlay" x="116.34543525247467" y="378.58555100233815" width="160.35041080220208" height="42.74941951986705" fill="transparent"/><path class="sch-component-symbol-path" d="M 116.34543525247467 399.9602607622717 L 143.07584873320175 399.9602607622717" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.90863588131px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 249.96543257394964 399.9602607622717 L 276.69584605467674 399.9602607622717" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.90863588131px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 143.07584873320175 378.58555100233815 L 249.96543257394964 378.58555100233815 L 249.96543257394964 421.3349705222052 L 143.07584873320175 421.3349705222052 L 143.07584873320175 378.58555100233815" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.90863588131px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="196.5206406535757" y="357.2001512150178" stroke="rgb(245, 241, 237)" stroke-width="2.90863588131px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="ideographic" font-size="26.177722931789997px">R1</text><text class="sch-component-text" x="196.5206406535757" y="442.72037030952555" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="26.177722931789997px"></text><circle class="component-pin sch-component-pin" cx="276.69584605467674" cy="399.9602607622717" r="2.90863588131px" stroke-width="2.90863588131px" fill="none" stroke="rgb(132, 0, 0)"/></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_1__stack1"><rect class="component-overlay sch-component-overlay" x="988.94801807923" y="357.2011061216859" width="160.32673452345853" height="85.51828019481275" fill="transparent"/><path class="sch-component-symbol-path" d="M 1149.2747526026885 399.96024621909226 L 1085.144058793305 399.96024621909226" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.90863588131px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 1053.0787118886135 399.96024621909226 L 988.94801807923 399.96024621909226" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.90863588131px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 1085.144058793305 357.2011061216859 L 1085.144058793305 442.7193863164986" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.90863588131px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 1053.0787118886135 357.2011061216859 L 1053.0787118886135 442.7193863164986" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.90863588131px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="1069.1113853409593" y="335.82955240970887" stroke="rgb(245, 241, 237)" stroke-width="2.90863588131px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="ideographic" font-size="26.177722931789997px">C1</text><text class="sch-component-text" x="1069.1113853409593" y="464.09094002847564" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="26.177722931789997px"></text><circle class="component-pin sch-component-pin" cx="1149.2747526026885" cy="399.96024621909226" r="2.90863588131px" stroke-width="2.90863588131px" fill="none" stroke="rgb(132, 0, 0)"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="152.8911024339257" cy="399.9602607622717" r="5.81727176262" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="313.24149353917653" cy="400.0397392377283" r="5.81727176262" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_0__stack1"><circle cx="952.4142087514323" cy="400.03975378090774" r="5.81727176262" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_1__stack1"><circle cx="1112.7409235606092" cy="399.96024621909226" r="5.81727176262" fill="red" opacity="0"/></g><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" d="
67
+ M 87.25907643937467,399.9602607622717
68
+ L 101.80225584592466,407.81357764180865
69
+ L 101.80225584592466,457.6869875533375
70
+ L 72.71589703282467,457.6869875533375
71
+ L 72.71589703282467,407.81357764180865
72
+ Z
73
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.90863588131px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" x="87.25907643937467" y="413.04912222816665" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="26.177722931789997px" transform="rotate(90 87.25907643937467 413.04912222816665)">XX</text>
74
+ </g>
75
+ </svg>