@tscircuit/props 0.0.436 → 0.0.438
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.
- package/README.md +92 -7
- package/dist/index.d.ts +1179 -7
- package/dist/index.js +207 -172
- package/dist/index.js.map +1 -1
- package/lib/components/currentsource.ts +58 -0
- package/lib/components/group.ts +8 -0
- package/lib/index.ts +1 -0
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/typecheck.ts","../lib/common/direction.ts","../lib/common/portHints.ts","../lib/common/layout.ts","../lib/common/distance.ts","../lib/common/cadModel.ts","../lib/common/point3.ts","../lib/common/footprintProp.ts","../lib/common/pcbStyle.ts","../lib/common/schStyle.ts","../lib/common/symbolProp.ts","../lib/generated/footprinter-autocomplete.ts","../lib/common/schematicOrientation.ts","../lib/common/schematicPinDefinitions.ts","../lib/common/schematicPinStyle.ts","../lib/common/schematicPinLabel.ts","../lib/common/schematicSize.ts","../lib/common/ninePointAnchor.ts","../lib/common/point.ts","../lib/components/board.ts","../lib/components/group.ts","../lib/manual-edits/manual-edit-events/base_manual_edit_event.ts","../lib/manual-edits/manual-edit-events/edit_pcb_component_location_event.ts","../lib/manual-edits/manual-edit-events/edit_trace_hint_event.ts","../lib/manual-edits/manual-edit-events/edit_schematic_component_location_event.ts","../lib/manual-edits/manual-edit-events/edit_pcb_group_location_event.ts","../lib/manual-edits/manual-edit-events/edit_schematic_group_location_event.ts","../lib/manual-edits/manual_edit_event.ts","../lib/manual-edits/manual_edits_file.ts","../lib/manual-edits/manual_pcb_placement.ts","../lib/manual-edits/manual_trace_hint.ts","../lib/manual-edits/manual_schematic_placement.ts","../lib/common/connectionsProp.ts","../lib/components/panel.ts","../lib/components/subpanel.ts","../lib/components/breakout.ts","../lib/components/chip.ts","../lib/components/pinout.ts","../lib/components/jumper.ts","../lib/components/solderjumper.ts","../lib/components/connector.ts","../lib/components/interconnect.ts","../lib/components/fuse.ts","../lib/components/platedhole.ts","../lib/components/resistor.ts","../lib/components/potentiometer.ts","../lib/components/crystal.ts","../lib/components/resonator.ts","../lib/components/stampboard.ts","../lib/components/capacitor.ts","../lib/components/net.ts","../lib/components/fiducial.ts","../lib/components/constrainedlayout.ts","../lib/components/constraint.ts","../lib/components/cutout.ts","../lib/components/smtpad.ts","../lib/components/solderpaste.ts","../lib/components/hole.ts","../lib/components/trace.ts","../lib/components/footprint.ts","../lib/components/symbol.ts","../lib/components/battery.ts","../lib/components/pin-header.ts","../lib/common/pcbOrientation.ts","../lib/components/netalias.ts","../lib/components/netlabel.ts","../lib/components/push-button.ts","../lib/components/subcircuit.ts","../lib/components/analogsimulation.ts","../lib/components/transistor.ts","../lib/components/mosfet.ts","../lib/components/inductor.ts","../lib/components/diode.ts","../lib/components/led.ts","../lib/components/switch.ts","../lib/components/fabrication-note-text.ts","../lib/components/fabrication-note-rect.ts","../lib/components/fabrication-note-path.ts","../lib/components/fabrication-note-dimension.ts","../lib/components/pcb-trace.ts","../lib/components/via.ts","../lib/components/testpoint.ts","../lib/components/breakoutpoint.ts","../lib/components/pcb-keepout.ts","../lib/components/courtyard-rect.ts","../lib/components/courtyard-outline.ts","../lib/components/copper-pour.ts","../lib/components/cadassembly.ts","../lib/components/cadmodel.ts","../lib/components/power-source.ts","../lib/components/voltagesource.ts","../lib/components/voltageprobe.ts","../lib/components/schematic-arc.ts","../lib/components/toolingrail.ts","../lib/components/schematic-box.ts","../lib/components/schematic-circle.ts","../lib/components/schematic-rect.ts","../lib/components/schematic-line.ts","../lib/components/schematic-text.ts","../lib/common/fivePointAnchor.ts","../lib/components/schematic-path.ts","../lib/components/schematic-table.ts","../lib/components/schematic-row.ts","../lib/components/schematic-cell.ts","../lib/components/copper-text.ts","../lib/components/silkscreen-text.ts","../lib/components/silkscreen-path.ts","../lib/components/silkscreen-line.ts","../lib/components/silkscreen-rect.ts","../lib/components/silkscreen-circle.ts","../lib/components/trace-hint.ts","../lib/components/port.ts","../lib/components/pcb-note-text.ts","../lib/components/pcb-note-rect.ts","../lib/components/pcb-note-path.ts","../lib/components/pcb-note-line.ts","../lib/components/pcb-note-dimension.ts","../lib/platformConfig.ts","../lib/projectConfig.ts"],"sourcesContent":["import type { TypeEqual } from \"ts-expect\"\n\ntype IsNever<T> = [T] extends [never] ? true : false\n\ntype GetMismatchedProps<T1, T2> = {\n [K in keyof T1 & keyof T2]: T1[K] extends T2[K]\n ? T2[K] extends T1[K]\n ? never\n : K\n : K\n}[keyof T1 & keyof T2]\n\nexport const expectTypesMatch = <\n const T1,\n const T2,\n T3 = Exclude<keyof T1, keyof T2>,\n T4 = Exclude<keyof T2, keyof T1>,\n T5 = GetMismatchedProps<T1, T2>,\n>(\n shouldBe: IsNever<T3> extends true\n ? IsNever<T4> extends true\n ? IsNever<T5> extends true\n ? TypeEqual<T1, T2>\n : `property ${T5 extends string ? T5 : \"\"} has mismatched types`\n : `extra props ${T4 extends string ? T4 : \"\"}`\n : `missing props ${T3 extends string ? T3 : \"\"}`,\n): void => {}\n\n// ------ TESTS -------\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: number\n b: number\n }\n>(\"extra props b\")\n\nexpectTypesMatch<\n {\n a: number\n b: number\n },\n {\n a: number\n }\n>(\"missing props b\")\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: number\n }\n>(true)\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: string\n }\n>(\"property a has mismatched types\")\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nexport const direction = z.enum([\"up\", \"down\", \"left\", \"right\"])\nexport type Direction = \"up\" | \"down\" | \"left\" | \"right\"\n\nexport type DirectionAlongEdge =\n | \"top-to-bottom\"\n | \"left-to-right\"\n | \"bottom-to-top\"\n | \"right-to-left\"\n\nexport const directionAlongEdge = z.enum([\n \"top-to-bottom\",\n \"left-to-right\",\n \"bottom-to-top\",\n \"right-to-left\",\n])\n\nexpectTypesMatch<Direction, z.infer<typeof direction>>(true)\nexpectTypesMatch<DirectionAlongEdge, z.infer<typeof directionAlongEdge>>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const portHints = z.array(z.string().or(z.number()))\nexport type PortHints = (string | number)[]\n\nexpectTypesMatch<PortHints, z.infer<typeof portHints>>(true)\n","import {\n type LayerRefInput,\n distance,\n layer_ref,\n rotation,\n supplier_name,\n} from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { pcbCoordinate } from \"./distance\"\nimport { z } from \"zod\"\nimport { type CadModelProp, cadModelProp } from \"./cadModel\"\nimport { type FootprintProp, footprintProp } from \"./footprintProp\"\nimport { pcbStyle, type PcbStyle } from \"./pcbStyle\"\nimport { schStyle, type SchStyle } from \"./schStyle\"\nimport { type SymbolProp, symbolProp } from \"./symbolProp\"\n\nexport type PcbPositionMode =\n | \"relative_to_group_anchor\"\n | \"auto\"\n | \"relative_to_board_anchor\"\n | \"relative_to_component_anchor\"\n\n/** @deprecated Use {@link PcbPositionMode} instead. */\nexport type PositionMode = PcbPositionMode\n\nexport interface PcbLayoutProps {\n pcbX?: string | number\n pcbY?: string | number\n /**\n * Position the left, right, top, or bottom edge of the component. Setting any of these\n * properties changes the anchor used for pcb positioning to the specified edge.\n */\n pcbLeftEdgeX?: string | number\n pcbRightEdgeX?: string | number\n pcbTopEdgeY?: string | number\n pcbBottomEdgeY?: string | number\n pcbOffsetX?: string | number\n pcbOffsetY?: string | number\n pcbRotation?: string | number\n pcbPositionAnchor?: string\n pcbPositionMode?: PcbPositionMode\n layer?: LayerRefInput\n pcbMarginTop?: string | number\n pcbMarginRight?: string | number\n pcbMarginBottom?: string | number\n pcbMarginLeft?: string | number\n pcbMarginX?: string | number\n pcbMarginY?: string | number\n pcbStyle?: PcbStyle\n /**\n * If true, pcbX/pcbY will be interpreted relative to the parent group\n */\n pcbRelative?: boolean\n /**\n * If true, both pcb and schematic coordinates will be interpreted relative to the parent group\n */\n relative?: boolean\n}\n\nexport interface CommonLayoutProps {\n pcbX?: string | number\n pcbY?: string | number\n /**\n * Position the left, right, top, or bottom edge of the component. Setting any of these\n * properties changes the anchor used for pcb positioning to the specified edge.\n */\n pcbLeftEdgeX?: string | number\n pcbRightEdgeX?: string | number\n pcbTopEdgeY?: string | number\n pcbBottomEdgeY?: string | number\n pcbOffsetX?: string | number\n pcbOffsetY?: string | number\n pcbRotation?: string | number\n pcbPositionAnchor?: string\n pcbPositionMode?: PcbPositionMode\n\n pcbMarginTop?: string | number\n pcbMarginRight?: string | number\n pcbMarginBottom?: string | number\n pcbMarginLeft?: string | number\n pcbMarginX?: string | number\n pcbMarginY?: string | number\n pcbStyle?: PcbStyle\n\n schMarginTop?: string | number\n schMarginRight?: string | number\n schMarginBottom?: string | number\n schMarginLeft?: string | number\n schMarginX?: string | number\n schMarginY?: string | number\n\n schX?: string | number\n schY?: string | number\n schRotation?: string | number\n\n layer?: LayerRefInput\n footprint?: FootprintProp\n symbol?: SymbolProp\n schStyle?: SchStyle\n\n /**\n * If true, X/Y coordinates will be interpreted relative to the parent group\n */\n relative?: boolean\n\n /**\n * If true, schX/schY will be interpreted relative to the parent group\n */\n schRelative?: boolean\n\n /**\n * If true, pcbX/pcbY will be interpreted relative to the parent group\n */\n pcbRelative?: boolean\n}\n\nexport const pcbLayoutProps = z.object({\n pcbX: pcbCoordinate.optional(),\n pcbY: pcbCoordinate.optional(),\n pcbLeftEdgeX: pcbCoordinate.optional(),\n pcbRightEdgeX: pcbCoordinate.optional(),\n pcbTopEdgeY: pcbCoordinate.optional(),\n pcbBottomEdgeY: pcbCoordinate.optional(),\n pcbOffsetX: distance.optional(),\n pcbOffsetY: distance.optional(),\n pcbRotation: rotation.optional(),\n pcbPositionAnchor: z.string().optional(),\n pcbPositionMode: z\n .enum([\n \"relative_to_group_anchor\",\n \"auto\",\n \"relative_to_board_anchor\",\n \"relative_to_component_anchor\",\n ])\n .optional(),\n layer: layer_ref.optional(),\n pcbMarginTop: distance.optional(),\n pcbMarginRight: distance.optional(),\n pcbMarginBottom: distance.optional(),\n pcbMarginLeft: distance.optional(),\n pcbMarginX: distance.optional(),\n pcbMarginY: distance.optional(),\n pcbStyle: pcbStyle.optional(),\n pcbRelative: z.boolean().optional(),\n relative: z.boolean().optional(),\n})\ntype InferredPcbLayoutProps = z.input<typeof pcbLayoutProps>\nexpectTypesMatch<PcbLayoutProps, InferredPcbLayoutProps>(true)\n\nexport const commonLayoutProps = z.object({\n pcbX: pcbCoordinate.optional(),\n pcbY: pcbCoordinate.optional(),\n pcbLeftEdgeX: pcbCoordinate.optional(),\n pcbRightEdgeX: pcbCoordinate.optional(),\n pcbTopEdgeY: pcbCoordinate.optional(),\n pcbBottomEdgeY: pcbCoordinate.optional(),\n pcbOffsetX: distance.optional(),\n pcbOffsetY: distance.optional(),\n pcbRotation: rotation.optional(),\n pcbPositionAnchor: z.string().optional(),\n pcbPositionMode: z\n .enum([\n \"relative_to_group_anchor\",\n \"auto\",\n \"relative_to_board_anchor\",\n \"relative_to_component_anchor\",\n ])\n .optional(),\n pcbMarginTop: distance.optional(),\n pcbMarginRight: distance.optional(),\n pcbMarginBottom: distance.optional(),\n pcbMarginLeft: distance.optional(),\n pcbMarginX: distance.optional(),\n pcbMarginY: distance.optional(),\n pcbStyle: pcbStyle.optional(),\n schMarginTop: distance.optional(),\n schMarginRight: distance.optional(),\n schMarginBottom: distance.optional(),\n schMarginLeft: distance.optional(),\n schMarginX: distance.optional(),\n schMarginY: distance.optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n layer: layer_ref.optional(),\n footprint: footprintProp.optional(),\n symbol: symbolProp.optional(),\n schStyle: schStyle.optional(),\n relative: z.boolean().optional(),\n schRelative: z.boolean().optional(),\n pcbRelative: z.boolean().optional(),\n})\n\ntype InferredCommonLayoutProps = z.input<typeof commonLayoutProps>\nexpectTypesMatch<CommonLayoutProps, InferredCommonLayoutProps>(true)\n\nexport type SupplierName =\n | \"jlcpcb\"\n | \"macrofab\"\n | \"pcbway\"\n | \"digikey\"\n | \"mouser\"\n | \"lcsc\"\nexport type SupplierPartNumbers = { [k in SupplierName]?: string[] }\nexport interface SupplierProps {\n supplierPartNumbers?: SupplierPartNumbers\n}\nexport const supplierProps = z.object({\n supplierPartNumbers: z.record(supplier_name, z.array(z.string())).optional(),\n})\n\nexpectTypesMatch<SupplierProps, z.input<typeof supplierProps>>(true)\n\nexport interface PinAttributeMap {\n providesPower?: boolean\n requiresPower?: boolean\n providesGround?: boolean\n requiresGround?: boolean\n providesVoltage?: string | number\n requiresVoltage?: string | number\n doNotConnect?: boolean\n includeInBoardPinout?: boolean\n highlightColor?: string\n mustBeConnected?: boolean\n}\n\nexport const pinAttributeMap = z.object({\n providesPower: z.boolean().optional(),\n requiresPower: z.boolean().optional(),\n providesGround: z.boolean().optional(),\n requiresGround: z.boolean().optional(),\n providesVoltage: z.union([z.string(), z.number()]).optional(),\n requiresVoltage: z.union([z.string(), z.number()]).optional(),\n doNotConnect: z.boolean().optional(),\n includeInBoardPinout: z.boolean().optional(),\n highlightColor: z.string().optional(),\n mustBeConnected: z.boolean().optional(),\n})\n\nexpectTypesMatch<PinAttributeMap, z.input<typeof pinAttributeMap>>(true)\n\nexport interface CommonComponentProps<PinLabel extends string = string>\n extends CommonLayoutProps {\n key?: any\n name: string\n pinAttributes?: Record<PinLabel, PinAttributeMap>\n supplierPartNumbers?: SupplierPartNumbers\n cadModel?: CadModelProp\n children?: any\n symbolName?: string\n doNotPlace?: boolean\n /**\n * Does this component take up all the space within its bounds on a layer. This is generally true\n * except for when separated pin headers are being represented by a single component (in which case,\n * chips can be placed between the pin headers) or for tall modules where chips fit underneath.\n */\n obstructsWithinBounds?: boolean\n /**\n * Whether to show this component's CAD model as translucent in the 3D viewer.\n */\n showAsTranslucentModel?: boolean\n}\n\nexport const commonComponentProps = commonLayoutProps\n .merge(supplierProps)\n .extend({\n key: z.any().optional(),\n name: z.string(),\n cadModel: cadModelProp.optional(),\n children: z.any().optional(),\n symbolName: z.string().optional(),\n doNotPlace: z.boolean().optional(),\n obstructsWithinBounds: z\n .boolean()\n .optional()\n .describe(\n \"Does this component take up all the space within its bounds on a layer. This is generally true except for when separated pin headers are being represented by a single component (in which case, chips can be placed between the pin headers) or for tall modules where chips fit underneath\",\n ),\n showAsTranslucentModel: z\n .boolean()\n .optional()\n .describe(\n \"Whether to show this component's CAD model as translucent in the 3D viewer.\",\n ),\n pinAttributes: z.record(z.string(), pinAttributeMap).optional(),\n })\n\ntype InferredCommonComponentProps = z.input<typeof commonComponentProps>\nexpectTypesMatch<CommonComponentProps, InferredCommonComponentProps>(true)\n\nexport const componentProps = commonComponentProps\nexport type ComponentProps = z.input<typeof componentProps>\n\nexport const lrPins = [\"pin1\", \"left\", \"pin2\", \"right\"] as const\nexport const lrPolarPins = [\n \"pin1\",\n \"left\",\n \"anode\",\n \"pos\",\n \"pin2\",\n \"right\",\n \"cathode\",\n \"neg\",\n] as const\n\nexport const distanceOrMultiplier = distance.or(z.enum([\"2x\", \"3x\", \"4x\"]))\n","import { distance as baseDistance, length } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport type Distance = number | string\n\nconst calcString = z.string().regex(/^calc\\(.*\\)$/)\n\nexport const distance = baseDistance\nexport const pcbCoordinate = calcString.or(baseDistance)\n\nexport { length }\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { distance, type Distance } from \"./distance\"\nimport { point3 } from \"./point3\"\nimport type { ReactElement } from \"react\"\n\nexport const rotationPoint3 = z.object({\n x: z.union([z.number(), z.string()]),\n y: z.union([z.number(), z.string()]),\n z: z.union([z.number(), z.string()]),\n})\n\nexport interface CadModelBase {\n rotationOffset?:\n | number\n | { x: number | string; y: number | string; z: number | string }\n positionOffset?: {\n x: number | string\n y: number | string\n z: number | string\n }\n size?: { x: number | string; y: number | string; z: number | string }\n modelUnitToMmScale?: Distance\n zOffsetFromSurface?: Distance\n}\n\nexport const cadModelBase = z.object({\n rotationOffset: z.number().or(rotationPoint3).optional(),\n positionOffset: point3.optional(),\n size: point3.optional(),\n modelUnitToMmScale: distance.optional(),\n zOffsetFromSurface: distance.optional(),\n})\n\nexpectTypesMatch<CadModelBase, z.input<typeof cadModelBase>>(true)\n\nexport interface CadModelStl extends CadModelBase {\n stlUrl: string\n}\nexport const cadModelStl = cadModelBase.extend({\n stlUrl: z.string(),\n})\n\nexport interface CadModelObj extends CadModelBase {\n objUrl: string\n mtlUrl?: string\n}\nexport const cadModelObj = cadModelBase.extend({\n objUrl: z.string(),\n mtlUrl: z.string().optional(),\n})\n\nexport interface CadModelGltf extends CadModelBase {\n gltfUrl: string\n}\nexport const cadModelGltf = cadModelBase.extend({\n gltfUrl: z.string(),\n})\n\nexport interface CadModelGlb extends CadModelBase {\n glbUrl: string\n}\nexport const cadModelGlb = cadModelBase.extend({\n glbUrl: z.string(),\n})\n\nexport interface CadModelStep extends CadModelBase {\n stepUrl: string\n}\nexport const cadModelStep = cadModelBase.extend({\n stepUrl: z.string(),\n})\n\nexport interface CadModelWrl extends CadModelBase {\n wrlUrl: string\n}\nexport const cadModelWrl = cadModelBase.extend({\n wrlUrl: z.string(),\n})\n\nexport interface CadModelJscad extends CadModelBase {\n jscad: Record<string, any>\n}\nexport const cadModelJscad = cadModelBase.extend({\n jscad: z.record(z.any()),\n})\n\nexport type CadModelProp =\n | null\n | string\n | ReactElement\n | CadModelStl\n | CadModelObj\n | CadModelGltf\n | CadModelGlb\n | CadModelStep\n | CadModelWrl\n | CadModelJscad\n\nexport const cadModelProp = z.union([\n z.null(),\n z.string(),\n z.custom<ReactElement>((v) => {\n return v && typeof v === \"object\" && \"type\" in v && \"props\" in v\n }),\n cadModelStl,\n cadModelObj,\n cadModelGltf,\n cadModelGlb,\n cadModelStep,\n cadModelWrl,\n cadModelJscad,\n])\n\ntype InferredCadModelProp = z.input<typeof cadModelProp>\nexpectTypesMatch<CadModelProp, InferredCadModelProp>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const point3 = z.object({\n x: distance,\n y: distance,\n z: distance,\n})\n","import type { LayerRef } from \"circuit-json\"\nimport type { ReactElement } from \"react\"\nimport { z } from \"zod\"\nimport { type AutocompleteString } from \"./autocomplete\"\nimport type { KicadAutocompleteStringPath } from \"../generated/kicad-autocomplete\"\nimport type { FootprinterStringExample } from \"../generated/footprinter-autocomplete\"\n\n/**\n * This is an abbreviated definition of the soup elements that you can find here:\n * https://docs.tscircuit.com/api-reference/advanced/soup#pcb-smtpad\n */\nexport type FootprintSoupElements = {\n type: \"pcb_smtpad\" | \"pcb_plated_hole\"\n x: string | number\n y: string | number\n layer?: LayerRef\n holeDiameter?: string | number\n outerDiameter?: string | number\n shape?: \"circle\" | \"rect\"\n width?: string | number\n height?: string | number\n portHints?: string[]\n}\n\nexport type BasicFootprint =\n | \"0402\"\n | \"0603\"\n | \"0805\"\n | \"1206\"\n | \"1210\"\n | \"dip\"\n | \"axial\"\n | \"soic\"\n | \"bga\"\n | \"tssop\"\n | \"stampboard\"\n | \"stampreceiver\"\n | \"hc49\"\n | \"to92\"\n | \"to220\"\n | \"ssop\"\n | \"qfp\"\n | \"qfn\"\n | \"sot23\"\n | \"sot23_5\"\n | \"sot223\"\n | \"pinrow\"\n\ntype FootprinterStringAutocomplete = BasicFootprint | FootprinterStringExample\n\nexport type FootprintProp =\n | AutocompleteString<FootprinterStringAutocomplete>\n | KicadAutocompleteStringPath\n | ReactElement\n | FootprintSoupElements[]\n\nexport const footprintProp = z.custom<FootprintProp>((v) => true)\n","import { distance } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface PcbStyle {\n silkscreenFontSize?: string | number\n viaPadDiameter?: string | number\n viaHoleDiameter?: string | number\n silkscreenTextPosition?:\n | \"centered\"\n | \"outside\"\n | \"none\"\n | {\n offsetX: number\n offsetY: number\n }\n silkscreenTextVisibility?: \"hidden\" | \"visible\" | \"inherit\"\n}\n\nexport const pcbStyle = z.object({\n silkscreenFontSize: distance.optional(),\n viaPadDiameter: distance.optional(),\n viaHoleDiameter: distance.optional(),\n silkscreenTextPosition: z\n .union([\n z.enum([\"centered\", \"outside\", \"none\"]),\n z.object({\n offsetX: z.number(),\n offsetY: z.number(),\n }),\n ])\n .optional(),\n silkscreenTextVisibility: z.enum([\"hidden\", \"visible\", \"inherit\"]).optional(),\n})\n\nexpectTypesMatch<PcbStyle, z.input<typeof pcbStyle>>(true)\n","import { distance } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface SchStyle {\n defaultPassiveSize?: \"xs\" | \"sm\" | \"md\" | string | number\n defaultCapacitorOrientation?: \"vertical\" | \"none\"\n}\n\nexport const schStyle = z.object({\n defaultPassiveSize: z\n .union([z.enum([\"xs\", \"sm\", \"md\"]), distance])\n .optional(),\n defaultCapacitorOrientation: z.enum([\"vertical\", \"none\"]).optional(),\n})\n\nexpectTypesMatch<SchStyle, z.input<typeof schStyle>>(true)\n","import type { ReactElement } from \"react\"\nimport { z } from \"zod\"\n\nexport type SymbolProp = string | ReactElement\n\nexport const symbolProp = z.custom<SymbolProp>((v) => true)\n","import type { AutocompleteString } from \"../common/autocomplete\"\n\nexport const footprinterStringExamples = [\n \"0402_p1.02mm_pw0.54mm_ph0.64mm_w1.56mm_h0.64mm\",\n \"0603_p1.65mm_pw0.8mm_ph0.95mm_w2.45mm_h0.95mm\",\n \"0805_p1.825mm_pw1.025mm_ph1.4mm_w2.85mm_h1.4mm\",\n \"1206_p2.925mm_pw1.125mm_ph1.75mm_w4.05mm_h1.75mm\",\n \"1210_p2.925mm_pw1.125mm_ph2.65mm_w4.05mm_h2.65mm\",\n \"dip6_w7.62mm_p2.54mm_id1mm_od1.5mm\",\n \"axial_p2.54mm_id0.7mm_od1.4mm\",\n \"soic8_w5.3mm_p1.27mm_pw0.6mm_pl1mm\",\n \"bga64_grid8x8_p0.8mm_ball0.47mm_pad0.38mm_tlorigin\",\n \"tssop8_w7.1mm_p0.65mm_pl1.35mm_pw0.4mm_legsoutside\",\n \"stampboard_w22.58mm_left20_right20_top2_bottom2_p2.54mm_pw1.6mm_pl2.4mm_innerholeedgedistance1.61mm_silkscreenlabelmargin0.1mm\",\n \"stampreceiver_w22.58mm_left20_right20_top2_bottom2_p2.54mm_pw1.6mm_pl3.2mm_innerholeedgedistance1.61mm\",\n \"hc49_p4.88mm_id0.8mm_od1.5mm_w5.6mm_h3.5mm\",\n \"to92_p1.27mm_id0.72mm_od0.95mm_w4.5mm_h4.5mm\",\n \"to220_3_p2.6mm_id1mm_od1.9mm_w13mm_h7mm\",\n \"ssop8_w3.9mm_p1.27mm_pw0.6mm_pl1mm\",\n \"qfp64_w10mm_h10mm_p0.5mm_pw0.25mm_pl1mm_legsoutside\",\n \"qfn64_w10mm_h10mm_p0.5mm_pw0.25mm_pl0.875mm\",\n \"sot23_w1.92mm_h2.74mm_p0.95mm_pl0.8mm_pw0.764mm\",\n \"sot23_5_w1.92mm_h2.74mm_p0.95mm_pl0.8mm_pw0.764mm\",\n \"sot223_w8.5mm_h6.9mm_p2.3mm_pl2mm_pw1.5mm\",\n \"pinrow6_rows1_p2.54mm_id1mm_od1.5mm_male\",\n] as const\n\nexport type FootprinterStringExample =\n (typeof footprinterStringExamples)[number]\n\nexport type FootprinterAutocompleteString =\n AutocompleteString<FootprinterStringExample>\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport const schematicOrientation = z\n .enum([\n \"vertical\",\n \"horizontal\",\n \"pos_top\",\n \"pos_bottom\",\n \"pos_left\",\n \"pos_right\",\n \"neg_top\",\n \"neg_bottom\",\n \"neg_left\",\n \"neg_right\",\n ])\n .describe(\n \"horizontal means pins go 1->2 rightward and vertical means pins go 1->2 downward (generally, positive on top)\",\n )\n\nexport type SchematicOrientation =\n | \"vertical\"\n | \"horizontal\"\n | \"pos_top\"\n | \"pos_bottom\"\n | \"pos_left\"\n | \"pos_right\"\n | \"neg_top\"\n | \"neg_bottom\"\n | \"neg_left\"\n | \"neg_right\"\n\nexpectTypesMatch<SchematicOrientation, z.infer<typeof schematicOrientation>>(\n true,\n)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\n/**\n * @deprecated Use SchematicPortArrangementWithPinCounts instead.\n */\nexport interface SchematicPortArrangementWithSizes {\n leftSize?: number\n topSize?: number\n rightSize?: number\n bottomSize?: number\n}\n\n/**\n * Specifies the number of pins on each side of the schematic box component.\n */\nexport interface SchematicPortArrangementWithPinCounts {\n leftPinCount?: number\n topPinCount?: number\n rightPinCount?: number\n bottomPinCount?: number\n}\n\nexport interface PinSideDefinition {\n pins: Array<number | string>\n direction:\n | \"top-to-bottom\"\n | \"left-to-right\"\n | \"bottom-to-top\"\n | \"right-to-left\"\n}\n\nexport interface SchematicPortArrangementWithSides {\n leftSide?: PinSideDefinition\n topSide?: PinSideDefinition\n rightSide?: PinSideDefinition\n bottomSide?: PinSideDefinition\n}\n\nexport interface SchematicPortArrangement\n extends SchematicPortArrangementWithSizes,\n SchematicPortArrangementWithSides,\n SchematicPortArrangementWithPinCounts {}\n\nexport type SchematicPinArrangement = SchematicPortArrangement\nexport type SchematicPinArrangementWithSizes = SchematicPortArrangementWithSizes\nexport type SchematicPinArrangementWithSides = SchematicPortArrangementWithSides\nexport type SchematicPinArrangementWithPinCounts =\n SchematicPortArrangementWithPinCounts\n\nexport const explicitPinSideDefinition = z.object({\n pins: z.array(z.union([z.number(), z.string()])),\n direction: z.union([\n z.literal(\"top-to-bottom\"),\n z.literal(\"left-to-right\"),\n z.literal(\"bottom-to-top\"),\n z.literal(\"right-to-left\"),\n ]),\n})\n\n/**\n * @deprecated Use schematicPinArrangement instead.\n */\nexport const schematicPortArrangement = z.object({\n leftSize: z.number().optional().describe(\"@deprecated, use leftPinCount\"),\n topSize: z.number().optional().describe(\"@deprecated, use topPinCount\"),\n rightSize: z.number().optional().describe(\"@deprecated, use rightPinCount\"),\n bottomSize: z.number().optional().describe(\"@deprecated, use bottomPinCount\"),\n leftPinCount: z.number().optional(),\n rightPinCount: z.number().optional(),\n topPinCount: z.number().optional(),\n bottomPinCount: z.number().optional(),\n leftSide: explicitPinSideDefinition.optional(),\n rightSide: explicitPinSideDefinition.optional(),\n topSide: explicitPinSideDefinition.optional(),\n bottomSide: explicitPinSideDefinition.optional(),\n})\n\nexport const schematicPinArrangement = schematicPortArrangement\n\nexpectTypesMatch<\n SchematicPortArrangement,\n z.input<typeof schematicPortArrangement>\n>(true)\n","import { distance } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type SchematicPinStyle = Record<\n string,\n {\n marginTop?: number | string\n marginRight?: number | string\n marginBottom?: number | string\n marginLeft?: number | string\n\n /** @deprecated use marginLeft */\n leftMargin?: number | string\n /** @deprecated use marginRight */\n rightMargin?: number | string\n /** @deprecated use marginTop */\n topMargin?: number | string\n /** @deprecated use marginBottom */\n bottomMargin?: number | string\n }\n>\n\nexport const schematicPinStyle = z.record(\n z.object({\n marginLeft: distance.optional(),\n marginRight: distance.optional(),\n marginTop: distance.optional(),\n marginBottom: distance.optional(),\n\n leftMargin: distance.optional(),\n rightMargin: distance.optional(),\n topMargin: distance.optional(),\n bottomMargin: distance.optional(),\n }),\n)\n\nexpectTypesMatch<SchematicPinStyle, z.input<typeof schematicPinStyle>>(true)\n","import { z } from \"zod\"\n\n/**\n * Valid pin label string. Must consist only of letters,\n * numbers, or underscores.\n */\nexport const schematicPinLabel = z.string().regex(/^[A-Za-z0-9_]+$/)\nexport type SchematicPinLabel = z.infer<typeof schematicPinLabel>\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const schematicSymbolSize = distance\n .or(z.enum([\"xs\", \"sm\", \"default\", \"md\"]))\n .describe(\"distance between pin1 and pin2 of the schematic symbol\")\n\nexport type SchematicSymbolSize = z.input<typeof schematicSymbolSize>\n","import { z } from \"zod\"\n\nexport const ninePointAnchor = z.enum([\n \"top_left\",\n \"top_center\",\n \"top_right\",\n \"center_left\",\n \"center\",\n \"center_right\",\n \"bottom_left\",\n \"bottom_center\",\n \"bottom_right\",\n])\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const point = z.object({\n x: distance,\n y: distance,\n})\n\nexport type Point = { x: number | string; y: number | string }\n","import type { AutocompleteString } from \"lib/common/autocomplete\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { type Point, point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { subcircuitGroupProps, type SubcircuitGroupProps } from \"./group\"\n\nconst boardColorPresets = [\n \"not_specified\",\n \"green\",\n \"red\",\n \"blue\",\n \"purple\",\n \"black\",\n \"white\",\n \"yellow\",\n] as const\n\nexport type BoardColorPreset = (typeof boardColorPresets)[number]\n\nexport type BoardColor = AutocompleteString<BoardColorPreset>\n\nconst boardColor = z.custom<BoardColor>((value) => typeof value === \"string\")\n\nexport interface BoardProps\n extends Omit<SubcircuitGroupProps, \"subcircuit\" | \"connections\"> {\n title?: string\n material?: \"fr4\" | \"fr1\"\n /** Number of layers for the PCB */\n layers?: 1 | 2 | 4 | 6 | 8\n borderRadius?: Distance\n thickness?: Distance\n boardAnchorPosition?: Point\n anchorAlignment?: z.infer<typeof ninePointAnchor>\n boardAnchorAlignment?: z.infer<typeof ninePointAnchor>\n /** Color applied to both top and bottom solder masks */\n solderMaskColor?: BoardColor\n /** Color of the top solder mask */\n topSolderMaskColor?: BoardColor\n /** Color of the bottom solder mask */\n bottomSolderMaskColor?: BoardColor\n /** Color applied to both top and bottom silkscreens */\n silkscreenColor?: BoardColor\n /** Color of the top silkscreen */\n topSilkscreenColor?: BoardColor\n /** Color of the bottom silkscreen */\n bottomSilkscreenColor?: BoardColor\n /** Whether the board should be assembled on both sides */\n doubleSidedAssembly?: boolean\n /** Whether this board should be omitted from the schematic view */\n schematicDisabled?: boolean\n}\n\nexport const boardProps = subcircuitGroupProps\n .omit({ connections: true })\n .extend({\n material: z.enum([\"fr4\", \"fr1\"]).default(\"fr4\"),\n layers: z\n .union([\n z.literal(1),\n z.literal(2),\n z.literal(4),\n z.literal(6),\n z.literal(8),\n ])\n .default(2),\n borderRadius: distance.optional(),\n thickness: distance.optional(),\n boardAnchorPosition: point.optional(),\n anchorAlignment: ninePointAnchor.optional(),\n boardAnchorAlignment: ninePointAnchor\n .optional()\n .describe(\"Prefer using anchorAlignment when possible\"),\n title: z.string().optional(),\n solderMaskColor: boardColor.optional(),\n topSolderMaskColor: boardColor.optional(),\n bottomSolderMaskColor: boardColor.optional(),\n silkscreenColor: boardColor.optional(),\n topSilkscreenColor: boardColor.optional(),\n bottomSilkscreenColor: boardColor.optional(),\n doubleSidedAssembly: z.boolean().optional().default(false),\n schematicDisabled: z.boolean().optional(),\n })\n\ntype InferredBoardProps = z.input<typeof boardProps>\nexpectTypesMatch<BoardProps, InferredBoardProps>(true)\n","import { layer_ref, length, distance } from \"circuit-json\"\nimport type { AutocompleteString } from \"lib/common/autocomplete\"\nimport type { Distance } from \"lib/common/distance\"\nimport {\n type CommonLayoutProps,\n commonLayoutProps,\n type SupplierPartNumbers,\n} from \"lib/common/layout\"\nimport type { PcbStyle } from \"lib/common/pcbStyle\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { type Point, point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport type { AnySourceComponent, PcbTrace } from \"circuit-json\"\nimport {\n manual_edits_file,\n type ManualEditsFile,\n type ManualEditsFileInput,\n} from \"lib/manual-edits\"\nimport { connectionTarget } from \"lib/common/connectionsProp\"\nimport {\n schematicPinArrangement,\n type SchematicPinArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n schematicPinStyle,\n type SchematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\n\nexport const layoutConfig = z.object({\n layoutMode: z\n .enum([\"grid\", \"flex\", \"match-adapt\", \"relative\", \"none\"])\n .optional(),\n position: z.enum([\"absolute\", \"relative\"]).optional(),\n\n grid: z.boolean().optional(),\n gridCols: z.number().or(z.string()).optional(),\n gridRows: z.number().or(z.string()).optional(),\n gridTemplateRows: z.string().optional(),\n gridTemplateColumns: z.string().optional(),\n gridTemplate: z.string().optional(),\n gridGap: z.number().or(z.string()).optional(),\n gridRowGap: z.number().or(z.string()).optional(),\n gridColumnGap: z.number().or(z.string()).optional(),\n\n flex: z.boolean().or(z.string()).optional(),\n flexDirection: z.enum([\"row\", \"column\"]).optional(),\n alignItems: z.enum([\"start\", \"center\", \"end\", \"stretch\"]).optional(),\n justifyContent: z\n .enum([\n \"start\",\n \"center\",\n \"end\",\n \"stretch\",\n \"space-between\",\n \"space-around\",\n \"space-evenly\",\n ])\n .optional(),\n flexRow: z.boolean().optional(),\n flexColumn: z.boolean().optional(),\n gap: z.number().or(z.string()).optional(),\n\n pack: z\n .boolean()\n .optional()\n .describe(\"Pack the contents of this group using a packing strategy\"),\n packOrderStrategy: z\n .enum([\n \"largest_to_smallest\",\n \"first_to_last\",\n \"highest_to_lowest_pin_count\",\n ])\n .optional(),\n packPlacementStrategy: z\n .enum([\"shortest_connection_along_outline\"])\n .optional(),\n\n padding: length.optional(),\n paddingLeft: length.optional(),\n paddingRight: length.optional(),\n paddingTop: length.optional(),\n paddingBottom: length.optional(),\n paddingX: length.optional(),\n paddingY: length.optional(),\n\n width: length.optional(),\n height: length.optional(),\n\n matchAdapt: z.boolean().optional(),\n matchAdaptTemplate: z.any().optional(),\n})\n\nexport interface LayoutConfig {\n layoutMode?: \"grid\" | \"flex\" | \"match-adapt\" | \"relative\" | \"none\"\n position?: \"absolute\" | \"relative\"\n\n grid?: boolean\n gridCols?: number | string\n gridRows?: number | string\n gridTemplateRows?: string\n gridTemplateColumns?: string\n gridTemplate?: string\n gridGap?: number | string\n gridRowGap?: number | string\n gridColumnGap?: number | string\n\n flex?: boolean | string\n flexDirection?: \"row\" | \"column\"\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\"\n justifyContent?:\n | \"start\"\n | \"center\"\n | \"end\"\n | \"stretch\"\n | \"space-between\"\n | \"space-around\"\n | \"space-evenly\"\n flexRow?: boolean\n flexColumn?: boolean\n gap?: number | string\n\n pack?: boolean\n packOrderStrategy?:\n | \"largest_to_smallest\"\n | \"first_to_last\"\n | \"highest_to_lowest_pin_count\"\n packPlacementStrategy?: \"shortest_connection_along_outline\"\n\n padding?: Distance\n paddingLeft?: Distance\n paddingRight?: Distance\n paddingTop?: Distance\n paddingBottom?: Distance\n paddingX?: Distance\n paddingY?: Distance\n\n width?: Distance\n height?: Distance\n\n matchAdapt?: boolean\n matchAdaptTemplate?: any\n}\n\nexpectTypesMatch<LayoutConfig, z.input<typeof layoutConfig>>(true)\n\nexport interface Border {\n strokeWidth?: Distance\n dashed?: boolean\n solid?: boolean\n}\n\nexport const border = z.object({\n strokeWidth: length.optional(),\n dashed: z.boolean().optional(),\n solid: z.boolean().optional(),\n})\n\nexport interface BaseGroupProps extends CommonLayoutProps, LayoutConfig {\n name?: string\n key?: any\n children?: any\n\n pcbStyle?: PcbStyle\n\n /**\n * Title to display above this group in the schematic view\n */\n schTitle?: string\n\n /**\n * If true, render this group as a single schematic box\n */\n showAsSchematicBox?: boolean\n\n /**\n * Mapping of external pin names to internal connection targets\n */\n connections?: Connections\n\n /**\n * Arrangement for pins when rendered as a schematic box\n */\n schPinArrangement?: SchematicPinArrangement\n\n /**\n * Spacing between pins when rendered as a schematic box\n */\n schPinSpacing?: Distance\n\n /**\n * Styles to apply to individual pins in the schematic box representation\n */\n schPinStyle?: SchematicPinStyle\n\n pcbWidth?: Distance\n pcbHeight?: Distance\n minTraceWidth?: Distance\n schWidth?: Distance\n schHeight?: Distance\n\n pcbLayout?: LayoutConfig\n schLayout?: LayoutConfig\n cellBorder?: Border | null\n border?: Border | null\n schPadding?: Distance\n schPaddingLeft?: Distance\n schPaddingRight?: Distance\n schPaddingTop?: Distance\n schPaddingBottom?: Distance\n\n pcbPadding?: Distance\n pcbPaddingLeft?: Distance\n pcbPaddingRight?: Distance\n pcbPaddingTop?: Distance\n pcbPaddingBottom?: Distance\n /**\n * Anchor to use when interpreting pcbX/pcbY/pcbOffsetX/pcbOffsetY relative to pcbPosition\n */\n pcbAnchorAlignment?: AutocompleteString<z.infer<typeof ninePointAnchor>>\n\n /** @deprecated Use `pcbGrid` */\n grid?: boolean\n /** @deprecated Use `pcbFlex` */\n flex?: boolean | string\n\n pcbGrid?: boolean\n pcbGridCols?: number | string\n pcbGridRows?: number | string\n pcbGridTemplateRows?: string\n pcbGridTemplateColumns?: string\n pcbGridTemplate?: string\n pcbGridGap?: number | string\n pcbGridRowGap?: number | string\n pcbGridColumnGap?: number | string\n\n pcbFlex?: boolean | string\n pcbFlexGap?: number | string\n pcbFlexDirection?: \"row\" | \"column\"\n pcbAlignItems?: \"start\" | \"center\" | \"end\" | \"stretch\"\n pcbJustifyContent?:\n | \"start\"\n | \"center\"\n | \"end\"\n | \"stretch\"\n | \"space-between\"\n | \"space-around\"\n | \"space-evenly\"\n pcbFlexRow?: boolean\n pcbFlexColumn?: boolean\n pcbGap?: number | string\n pcbPack?: boolean\n pcbPackGap?: number | string\n\n schGrid?: boolean\n schGridCols?: number | string\n schGridRows?: number | string\n schGridTemplateRows?: string\n schGridTemplateColumns?: string\n schGridTemplate?: string\n schGridGap?: number | string\n schGridRowGap?: number | string\n schGridColumnGap?: number | string\n\n schFlex?: boolean | string\n schFlexGap?: number | string\n schFlexDirection?: \"row\" | \"column\"\n schAlignItems?: \"start\" | \"center\" | \"end\" | \"stretch\"\n schJustifyContent?:\n | \"start\"\n | \"center\"\n | \"end\"\n | \"stretch\"\n | \"space-between\"\n | \"space-around\"\n | \"space-evenly\"\n schFlexRow?: boolean\n schFlexColumn?: boolean\n schGap?: number | string\n schPack?: boolean\n schMatchAdapt?: boolean\n}\n\nexport type PartsEngine = {\n findPart: (params: {\n sourceComponent: AnySourceComponent\n footprinterString?: string\n }) => Promise<SupplierPartNumbers> | SupplierPartNumbers\n}\n\nexport interface PcbRouteCache {\n pcbTraces: PcbTrace[]\n cacheKey: string\n}\n\nexport interface AutorouterConfig {\n serverUrl?: string\n inputFormat?: \"simplified\" | \"circuit-json\"\n serverMode?: \"job\" | \"solve-endpoint\"\n serverCacheEnabled?: boolean\n cache?: PcbRouteCache\n traceClearance?: Distance\n groupMode?:\n | \"sequential_trace\"\n | \"subcircuit\"\n | /** @deprecated Use \"sequential_trace\" */ \"sequential-trace\"\n local?: boolean\n algorithmFn?: (simpleRouteJson: any) => Promise<any>\n preset?:\n | \"sequential_trace\"\n | \"subcircuit\"\n | \"auto\"\n | \"auto_local\"\n | \"auto_cloud\"\n | \"freerouting\"\n | \"laser_prefab\" // Prefabricated PCB with laser copper ablation\n | /** @deprecated Use \"sequential_trace\" */ \"sequential-trace\"\n | /** @deprecated Use \"auto_local\" */ \"auto-local\"\n | /** @deprecated Use \"auto_cloud\" */ \"auto-cloud\"\n}\n\nexport type AutorouterPreset =\n | \"sequential_trace\"\n | \"subcircuit\"\n | \"auto\"\n | \"auto_local\"\n | \"auto_cloud\"\n | \"freerouting\"\n | \"laser_prefab\"\n | \"sequential-trace\"\n | \"auto-local\"\n | \"auto-cloud\"\n\nexport type AutorouterProp =\n | AutorouterConfig\n | AutocompleteString<AutorouterPreset>\n\nconst pcbAnchorAlignmentAutocomplete = z.custom<\n AutocompleteString<z.infer<typeof ninePointAnchor>>\n>((value) => typeof value === \"string\")\n\nexport const autorouterConfig = z.object({\n serverUrl: z.string().optional(),\n inputFormat: z.enum([\"simplified\", \"circuit-json\"]).optional(),\n serverMode: z.enum([\"job\", \"solve-endpoint\"]).optional(),\n serverCacheEnabled: z.boolean().optional(),\n cache: z.custom<PcbRouteCache>((v) => true).optional(),\n traceClearance: length.optional(),\n groupMode: z\n .enum([\"sequential_trace\", \"subcircuit\", \"sequential-trace\"])\n .optional(),\n algorithmFn: z\n .custom<(simpleRouteJson: any) => Promise<any>>(\n (v) => typeof v === \"function\" || v === undefined,\n )\n .optional(),\n preset: z\n .enum([\n \"sequential_trace\",\n \"subcircuit\",\n \"auto\",\n \"auto_local\",\n \"auto_cloud\",\n \"freerouting\",\n \"laser_prefab\",\n \"sequential-trace\",\n \"auto-local\",\n \"auto-cloud\",\n ])\n .optional(),\n local: z.boolean().optional(),\n})\n\nexport const autorouterPreset = z.union([\n z.literal(\"sequential_trace\"),\n z.literal(\"subcircuit\"),\n z.literal(\"auto\"),\n z.literal(\"auto_local\"),\n z.literal(\"auto_cloud\"),\n z.literal(\"freerouting\"),\n z.literal(\"laser_prefab\"), // Prefabricated PCB with laser copper ablation\n z.literal(\"sequential-trace\"),\n z.literal(\"auto-local\"),\n z.literal(\"auto-cloud\"),\n])\n\nconst autorouterString = z.string() as z.ZodType<\n AutocompleteString<AutorouterPreset>\n>\n\nexport const autorouterProp: z.ZodType<AutorouterProp> = z.union([\n autorouterConfig,\n autorouterPreset,\n autorouterString,\n])\n\nexport interface SubcircuitGroupProps extends BaseGroupProps {\n manualEdits?: ManualEditsFileInput\n routingDisabled?: boolean\n bomDisabled?: boolean\n defaultTraceWidth?: Distance\n minTraceWidth?: Distance\n pcbRouteCache?: PcbRouteCache\n\n autorouter?: AutorouterProp\n\n /**\n * Serialized circuit JSON describing a precompiled subcircuit\n */\n circuitJson?: any[]\n\n /**\n * If true, we'll automatically layout the schematic for this group. Must be\n * a subcircuit (currently). This is eventually going to be replaced with more\n * sophisticated layout options/modes and will be enabled by default.\n */\n schAutoLayoutEnabled?: boolean\n\n /**\n * If true, net labels will automatically be created for complex traces\n */\n schTraceAutoLabelEnabled?: boolean\n\n /** Maximum length a trace can span on the schematic */\n schMaxTraceDistance?: Distance\n\n partsEngine?: PartsEngine\n\n /** When autosizing, the board will be made square */\n square?: boolean\n /** Desired empty area of the board e.g. \"22mm^2\" or \"20%\" */\n emptyArea?: string\n /** Desired filled area of the board e.g. \"22mm^2\" or \"20%\" */\n filledArea?: string\n\n width?: number | string\n height?: number | string\n outline?: Point[]\n outlineOffsetX?: number | string\n outlineOffsetY?: number | string\n}\n\nexport interface SubcircuitGroupPropsWithBool extends SubcircuitGroupProps {\n subcircuit: true\n}\n\nexport interface NonSubcircuitGroupProps extends BaseGroupProps {\n subcircuit?: false | undefined\n}\n\nexport type GroupProps = SubcircuitGroupPropsWithBool | NonSubcircuitGroupProps\n\nexport const baseGroupProps = commonLayoutProps.extend({\n name: z.string().optional(),\n children: z.any().optional(),\n schTitle: z.string().optional(),\n key: z.any().optional(),\n showAsSchematicBox: z.boolean().optional(),\n connections: z.record(z.string(), connectionTarget.optional()).optional(),\n schPinArrangement: schematicPinArrangement.optional(),\n schPinSpacing: length.optional(),\n schPinStyle: schematicPinStyle.optional(),\n\n ...layoutConfig.shape,\n grid: layoutConfig.shape.grid.describe(\"@deprecated use pcbGrid\"),\n flex: layoutConfig.shape.flex.describe(\"@deprecated use pcbFlex\"),\n pcbGrid: z.boolean().optional(),\n pcbGridCols: z.number().or(z.string()).optional(),\n pcbGridRows: z.number().or(z.string()).optional(),\n pcbGridTemplateRows: z.string().optional(),\n pcbGridTemplateColumns: z.string().optional(),\n pcbGridTemplate: z.string().optional(),\n pcbGridGap: z.number().or(z.string()).optional(),\n pcbGridRowGap: z.number().or(z.string()).optional(),\n pcbGridColumnGap: z.number().or(z.string()).optional(),\n pcbFlex: z.boolean().or(z.string()).optional(),\n pcbFlexGap: z.number().or(z.string()).optional(),\n pcbFlexDirection: z.enum([\"row\", \"column\"]).optional(),\n pcbAlignItems: z.enum([\"start\", \"center\", \"end\", \"stretch\"]).optional(),\n pcbJustifyContent: z\n .enum([\n \"start\",\n \"center\",\n \"end\",\n \"stretch\",\n \"space-between\",\n \"space-around\",\n \"space-evenly\",\n ])\n .optional(),\n pcbFlexRow: z.boolean().optional(),\n pcbFlexColumn: z.boolean().optional(),\n pcbGap: z.number().or(z.string()).optional(),\n pcbPack: z.boolean().optional(),\n pcbPackGap: z.number().or(z.string()).optional(),\n\n schGrid: z.boolean().optional(),\n schGridCols: z.number().or(z.string()).optional(),\n schGridRows: z.number().or(z.string()).optional(),\n schGridTemplateRows: z.string().optional(),\n schGridTemplateColumns: z.string().optional(),\n schGridTemplate: z.string().optional(),\n schGridGap: z.number().or(z.string()).optional(),\n schGridRowGap: z.number().or(z.string()).optional(),\n schGridColumnGap: z.number().or(z.string()).optional(),\n\n schFlex: z.boolean().or(z.string()).optional(),\n schFlexGap: z.number().or(z.string()).optional(),\n schFlexDirection: z.enum([\"row\", \"column\"]).optional(),\n schAlignItems: z.enum([\"start\", \"center\", \"end\", \"stretch\"]).optional(),\n schJustifyContent: z\n .enum([\n \"start\",\n \"center\",\n \"end\",\n \"stretch\",\n \"space-between\",\n \"space-around\",\n \"space-evenly\",\n ])\n .optional(),\n schFlexRow: z.boolean().optional(),\n schFlexColumn: z.boolean().optional(),\n schGap: z.number().or(z.string()).optional(),\n schPack: z.boolean().optional(),\n schMatchAdapt: z.boolean().optional(),\n pcbWidth: length.optional(),\n pcbHeight: length.optional(),\n minTraceWidth: length.optional(),\n schWidth: length.optional(),\n schHeight: length.optional(),\n pcbLayout: layoutConfig.optional(),\n schLayout: layoutConfig.optional(),\n cellBorder: border.nullable().optional(),\n border: border.nullable().optional(),\n schPadding: length.optional(),\n schPaddingLeft: length.optional(),\n schPaddingRight: length.optional(),\n schPaddingTop: length.optional(),\n schPaddingBottom: length.optional(),\n pcbPadding: length.optional(),\n pcbPaddingLeft: length.optional(),\n pcbPaddingRight: length.optional(),\n pcbPaddingTop: length.optional(),\n pcbPaddingBottom: length.optional(),\n pcbAnchorAlignment: pcbAnchorAlignmentAutocomplete.optional(),\n})\n\nexport const partsEngine = z.custom<PartsEngine>((v) => \"findPart\" in v)\n\nexport const subcircuitGroupProps = baseGroupProps.extend({\n manualEdits: manual_edits_file.optional(),\n schAutoLayoutEnabled: z.boolean().optional(),\n schTraceAutoLabelEnabled: z.boolean().optional(),\n schMaxTraceDistance: distance.optional(),\n routingDisabled: z.boolean().optional(),\n bomDisabled: z.boolean().optional(),\n defaultTraceWidth: length.optional(),\n minTraceWidth: length.optional(),\n partsEngine: partsEngine.optional(),\n pcbRouteCache: z.custom<PcbRouteCache>((v) => true).optional(),\n autorouter: autorouterProp.optional(),\n square: z.boolean().optional(),\n emptyArea: z.string().optional(),\n filledArea: z.string().optional(),\n width: distance.optional(),\n height: distance.optional(),\n outline: z.array(point).optional(),\n outlineOffsetX: distance.optional(),\n outlineOffsetY: distance.optional(),\n circuitJson: z.array(z.any()).optional(),\n})\n\nexport const subcircuitGroupPropsWithBool = subcircuitGroupProps.extend({\n subcircuit: z.literal(true),\n})\n\nexport const groupProps = z.discriminatedUnion(\"subcircuit\", [\n baseGroupProps.extend({ subcircuit: z.literal(false).optional() }),\n subcircuitGroupPropsWithBool,\n])\n\ntype InferredBaseGroupProps = z.input<typeof baseGroupProps>\ntype InferredSubcircuitGroupPropsWithBool = z.input<\n typeof subcircuitGroupPropsWithBool\n>\n\nexpectTypesMatch<AutorouterProp, z.input<typeof autorouterProp>>(true)\n\nexpectTypesMatch<BaseGroupProps, InferredBaseGroupProps>(true)\nexpectTypesMatch<\n SubcircuitGroupPropsWithBool,\n InferredSubcircuitGroupPropsWithBool\n>(true)\n\ntype InferredGroupProps = z.input<typeof groupProps>\nexpectTypesMatch<GroupProps, InferredGroupProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport const base_manual_edit_event = z.object({\n edit_event_id: z.string(),\n in_progress: z.boolean().optional(),\n created_at: z.number(),\n})\n\nexport interface BaseManualEditEvent {\n edit_event_id: string\n in_progress?: boolean\n created_at: number\n}\n\nexport type BaseManualEditEventInput = z.input<typeof base_manual_edit_event>\n\nexpectTypesMatch<BaseManualEditEvent, z.infer<typeof base_manual_edit_event>>(\n true,\n)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_pcb_component_location_event = base_manual_edit_event.extend({\n pcb_edit_event_type: z\n .literal(\"edit_component_location\")\n .describe(\"deprecated\"),\n edit_event_type: z.literal(\"edit_pcb_component_location\"),\n pcb_component_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n})\n\n/** @deprecated use edit_pcb_component_location_event instead */\nexport const edit_component_location_event = edit_pcb_component_location_event\n\nexport interface EditPcbComponentLocationEvent extends BaseManualEditEvent {\n edit_event_type: \"edit_pcb_component_location\"\n /** @deprecated */\n pcb_edit_event_type: \"edit_component_location\"\n pcb_component_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditPcbComponentLocationEventInput = z.input<\n typeof edit_pcb_component_location_event\n>\n\nexpectTypesMatch<\n EditPcbComponentLocationEvent,\n z.infer<typeof edit_pcb_component_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_trace_hint_event = base_manual_edit_event.extend({\n pcb_edit_event_type: z.literal(\"edit_trace_hint\").describe(\"deprecated\"),\n edit_event_type: z.literal(\"edit_pcb_trace_hint\").optional(),\n pcb_port_id: z.string(),\n pcb_trace_hint_id: z.string().optional(),\n route: z.array(\n z.object({ x: z.number(), y: z.number(), via: z.boolean().optional() }),\n ),\n})\n\nexport interface EditTraceHintEvent extends BaseManualEditEvent {\n /** @deprecated */\n pcb_edit_event_type: \"edit_trace_hint\"\n edit_event_type?: \"edit_pcb_trace_hint\"\n pcb_port_id: string\n pcb_trace_hint_id?: string\n route: Array<{ x: number; y: number; via?: boolean }>\n}\n\nexport type EditTraceHintEventInput = z.input<typeof edit_trace_hint_event>\n\nexpectTypesMatch<EditTraceHintEvent, z.infer<typeof edit_trace_hint_event>>(\n true,\n)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_schematic_component_location_event =\n base_manual_edit_event.extend({\n edit_event_type: z.literal(\"edit_schematic_component_location\"),\n schematic_component_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n })\n\nexport interface EditSchematicComponentLocationEvent\n extends BaseManualEditEvent {\n edit_event_type: \"edit_schematic_component_location\"\n schematic_component_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditSchematicComponentLocationEventInput = z.input<\n typeof edit_schematic_component_location_event\n>\n\nexpectTypesMatch<\n EditSchematicComponentLocationEvent,\n z.infer<typeof edit_schematic_component_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_pcb_group_location_event = base_manual_edit_event.extend({\n edit_event_type: z.literal(\"edit_pcb_group_location\"),\n pcb_group_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n})\n\nexport interface EditPcbGroupLocationEvent extends BaseManualEditEvent {\n edit_event_type: \"edit_pcb_group_location\"\n pcb_group_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditPcbGroupLocationEventInput = z.input<\n typeof edit_pcb_group_location_event\n>\n\nexpectTypesMatch<\n EditPcbGroupLocationEvent,\n z.infer<typeof edit_pcb_group_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_schematic_group_location_event =\n base_manual_edit_event.extend({\n edit_event_type: z.literal(\"edit_schematic_group_location\"),\n schematic_group_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n })\n\nexport interface EditSchematicGroupLocationEvent extends BaseManualEditEvent {\n edit_event_type: \"edit_schematic_group_location\"\n schematic_group_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditSchematicGroupLocationEventInput = z.input<\n typeof edit_schematic_group_location_event\n>\n\nexpectTypesMatch<\n EditSchematicGroupLocationEvent,\n z.infer<typeof edit_schematic_group_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n edit_pcb_component_location_event,\n type EditPcbComponentLocationEvent,\n} from \"./manual-edit-events/edit_pcb_component_location_event\"\nimport {\n edit_schematic_component_location_event,\n type EditSchematicComponentLocationEvent,\n} from \"./manual-edit-events/edit_schematic_component_location_event\"\nimport {\n edit_trace_hint_event,\n type EditTraceHintEvent,\n} from \"./manual-edit-events/edit_trace_hint_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport type ManualEditEvent =\n | EditPcbComponentLocationEvent\n | EditTraceHintEvent\n | EditSchematicComponentLocationEvent\n\nexport const manual_edit_event = z.union([\n edit_pcb_component_location_event,\n edit_trace_hint_event,\n edit_schematic_component_location_event,\n])\n\nexport type ManualEditEventInput = z.input<typeof manual_edit_event>\ntype InferredManualEditEvent = z.infer<typeof manual_edit_event>\n\nexpectTypesMatch<ManualEditEvent, InferredManualEditEvent>(true)\n","import { z } from \"zod\"\nimport {\n manual_pcb_placement,\n type ManualPcbPlacement,\n} from \"./manual_pcb_placement\"\nimport { manual_edit_event } from \"./manual_edit_event\"\nimport { manual_trace_hint, type ManualTraceHint } from \"./manual_trace_hint\"\nimport {\n manual_schematic_placement,\n type ManualSchematicPlacement,\n} from \"./manual_schematic_placement\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_edits_file = z.object({\n pcb_placements: z.array(manual_pcb_placement).optional(),\n manual_trace_hints: z.array(manual_trace_hint).optional(),\n schematic_placements: z.array(manual_schematic_placement).optional(),\n})\n\nexport interface ManualEditsFile {\n pcb_placements?: ManualPcbPlacement[]\n manual_trace_hints?: ManualTraceHint[]\n schematic_placements?: ManualSchematicPlacement[]\n}\n\nexport type ManualEditsFileInput = z.input<typeof manual_edits_file>\n\nexpectTypesMatch<ManualEditsFile, z.infer<typeof manual_edits_file>>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_pcb_placement = z.object({\n selector: z.string(),\n relative_to: z\n .string()\n .optional()\n .default(\"group_center\")\n .describe(\"Can be a selector or 'group_center'\"),\n center: point,\n})\n\nexport interface ManualPcbPlacement {\n selector: string\n relative_to: string\n center: Point\n}\n\nexport type ManualPcbPlacementInput = z.input<typeof manual_pcb_placement>\ntype InferredManualPcbPlacement = z.infer<typeof manual_pcb_placement>\n\nexpectTypesMatch<ManualPcbPlacement, InferredManualPcbPlacement>(true)\n","import { z } from \"zod\"\nimport { layer_ref, route_hint_point, type RouteHintPoint } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_trace_hint = z.object({\n pcb_port_selector: z.string(),\n offsets: z.array(route_hint_point),\n})\n\nexport interface ManualTraceHint {\n pcb_port_selector: string\n offsets: Array<RouteHintPoint>\n}\n\nexport type ManualTraceHintInput = z.input<typeof manual_trace_hint>\n\nexpectTypesMatch<ManualTraceHint, z.infer<typeof manual_trace_hint>>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_schematic_placement = z.object({\n selector: z.string(),\n relative_to: z\n .string()\n .optional()\n .default(\"group_center\")\n .describe(\"Can be a selector or 'group_center'\"),\n center: point,\n})\n\nexport interface ManualSchematicPlacement {\n selector: string\n relative_to: string\n center: Point\n}\n\nexport type ManualSchematicPlacementInput = z.input<\n typeof manual_schematic_placement\n>\ntype InferredManualSchematicPlacement = z.infer<\n typeof manual_schematic_placement\n>\n\nexpectTypesMatch<ManualSchematicPlacement, InferredManualSchematicPlacement>(\n true,\n)\n","import { z } from \"zod\"\n\nexport const connectionTarget = z\n .string()\n .or(z.array(z.string()).readonly())\n .or(z.array(z.string()))\n\nexport const createConnectionsProp = <T extends readonly [string, ...string[]]>(\n labels: T,\n) => {\n return z.record(z.enum(labels), connectionTarget)\n}\n","import { distance, type Distance } from \"lib/common/distance\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { baseGroupProps, type BaseGroupProps } from \"./group\"\n\nexport interface PanelProps\n extends Omit<BaseGroupProps, \"height\" | \"layoutMode\" | \"width\"> {\n width?: Distance\n height?: Distance\n children?: BaseGroupProps[\"children\"]\n anchorAlignment?: z.infer<typeof ninePointAnchor>\n /**\n * If true, prevent a solder mask from being applied to this panel.\n */\n noSolderMask?: boolean\n /** Method for panelization */\n panelizationMethod?: \"tab-routing\" | \"none\"\n /** Gap between boards in a panel */\n boardGap?: Distance\n layoutMode?: \"grid\" | \"pack\" | \"none\"\n row?: number\n col?: number\n cellWidth?: Distance\n cellHeight?: Distance\n tabWidth?: Distance\n tabLength?: Distance\n mouseBites?: boolean\n edgePadding?: Distance\n edgePaddingLeft?: Distance\n edgePaddingRight?: Distance\n edgePaddingTop?: Distance\n edgePaddingBottom?: Distance\n}\n\nexport const panelProps = baseGroupProps\n .omit({\n width: true,\n height: true,\n layoutMode: true,\n children: true,\n })\n .extend({\n width: distance.optional(),\n height: distance.optional(),\n children: z.any().optional(),\n anchorAlignment: ninePointAnchor.optional(),\n noSolderMask: z.boolean().optional(),\n panelizationMethod: z.enum([\"tab-routing\", \"none\"]).optional(),\n boardGap: distance.optional(),\n layoutMode: z.enum([\"grid\", \"pack\", \"none\"]).optional(),\n row: z.number().optional(),\n col: z.number().optional(),\n cellWidth: distance.optional(),\n cellHeight: distance.optional(),\n tabWidth: distance.optional(),\n tabLength: distance.optional(),\n mouseBites: z.boolean().optional(),\n edgePadding: distance.optional(),\n edgePaddingLeft: distance.optional(),\n edgePaddingRight: distance.optional(),\n edgePaddingTop: distance.optional(),\n edgePaddingBottom: distance.optional(),\n })\n\ntype InferredPanelProps = z.input<typeof panelProps>\nexpectTypesMatch<PanelProps, InferredPanelProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { panelProps, type PanelProps } from \"./panel\"\n\nexport interface SubpanelProps extends PanelProps {}\n\nexport const subpanelProps = panelProps\n\ntype InferredSubpanelProps = z.input<typeof subpanelProps>\nexpectTypesMatch<SubpanelProps, InferredSubpanelProps>(true)\n","import { distance } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { subcircuitGroupProps, type SubcircuitGroupProps } from \"./group\"\n\nexport interface BreakoutProps\n extends Omit<SubcircuitGroupProps, \"subcircuit\"> {\n padding?: Distance\n paddingLeft?: Distance\n paddingRight?: Distance\n paddingTop?: Distance\n paddingBottom?: Distance\n}\n\nexport const breakoutProps = subcircuitGroupProps.extend({\n padding: distance.optional(),\n paddingLeft: distance.optional(),\n paddingRight: distance.optional(),\n paddingTop: distance.optional(),\n paddingBottom: distance.optional(),\n})\n\ntype InferredBreakoutProps = z.input<typeof breakoutProps>\nexpectTypesMatch<BreakoutProps, InferredBreakoutProps>(true)\n","import { distance, supplier_name } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n type SupplierPartNumbers,\n} from \"lib/common/layout\"\nimport {\n type SchematicPortArrangement,\n schematicPortArrangement as schematicPinArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport {\n schematicPinLabel,\n type SchematicPinLabel,\n} from \"lib/common/schematicPinLabel\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { z } from \"zod\"\n\nexport type PinLabelsProp<\n PinNumber extends string = string,\n PinLabel extends string = string,\n> = Record<PinNumber, PinLabel | readonly PinLabel[] | PinLabel[]>\n\nexport type PinLabelFromPinLabelMap<PinLabelMap extends PinLabelsProp> =\n PinLabelMap extends PinLabelsProp<infer PinNumber, infer PinLabel>\n ? PinLabel\n : never\n\nexport interface PinCompatibleVariant {\n manufacturerPartNumber?: string\n supplierPartNumber?: SupplierPartNumbers\n}\n\nexport interface ChipPropsSU<\n PinLabel extends SchematicPinLabel = SchematicPinLabel,\n> extends CommonComponentProps<PinLabel> {\n manufacturerPartNumber?: string\n pinLabels?: PinLabelsProp<SchematicPinLabel, PinLabel>\n /**\n * Whether to show pin aliases in the schematic\n */\n showPinAliases?: boolean\n /**\n * Labels for PCB pins\n */\n pcbPinLabels?: Record<string, string>\n schPinArrangement?: SchematicPortArrangement\n /** @deprecated Use schPinArrangement instead. */\n schPortArrangement?: SchematicPortArrangement\n pinCompatibleVariants?: PinCompatibleVariant[]\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: Distance\n schWidth?: Distance\n schHeight?: Distance\n noSchematicRepresentation?: boolean\n internallyConnectedPins?: (string | number)[][]\n externallyConnectedPins?: string[][]\n connections?: Connections<PinLabel>\n}\n\nexport type ChipProps<PinLabelMap extends PinLabelsProp | string = string> =\n ChipPropsSU<\n PinLabelMap extends PinLabelsProp\n ? PinLabelFromPinLabelMap<PinLabelMap> | keyof PinLabelMap\n : PinLabelMap\n >\n\n/**\n * Get the pin labels for a component\n *\n * const pinLabels = { pin1: \"VCC\", pin2: \"GND\", pin3: \"DATA\" } as const\n * export const MyChip = (props: ChipProps<typeof pinLabels>) => {\n * // ...\n * }\n * type MyChipPinLabels = ChipPinLabels<typeof MyChip>\n * // MyChipPinLabels is \"VCC\" | \"GND\" | \"DATA\"\n *\n */\nexport type ChipPinLabels<T extends (props: ChipProps<any>) => any> =\n T extends (props: infer Props) => any\n ? Props extends ChipProps<infer PinLabelMap>\n ? PinLabelMap extends PinLabelsProp\n ? PinLabelFromPinLabelMap<PinLabelMap>\n : PinLabelMap extends string\n ? PinLabelMap\n : never\n : never\n : never\n\n/**\n * Get the connection prop type for a component\n *\n * const pinLabels = { pin1: \"VCC\", pin2: \"GND\", pin3: \"DATA\" } as const\n * export const MyChip = (props: ChipProps<typeof pinLabels>) => {\n * // ...\n * }\n * const connections: ChipConnections<typeof MyChip> = {\n * VCC: \"...\",\n * GND: \"...\",\n * DATA: \"...\",\n * }\n *\n */\nexport type ChipConnections<T extends (props: ChipProps<any>) => any> = {\n [K in ChipPinLabels<T>]: string\n}\n\nconst connectionTarget = z\n .string()\n .or(z.array(z.string()).readonly())\n .or(z.array(z.string()))\n\nconst connectionsProp = z\n .custom<Connections>()\n .pipe(z.record(z.string(), connectionTarget))\n\nexport const pinLabelsProp = z.record(\n schematicPinLabel,\n schematicPinLabel\n .or(z.array(schematicPinLabel).readonly())\n .or(z.array(schematicPinLabel)),\n)\n\nexpectTypesMatch<PinLabelsProp, z.input<typeof pinLabelsProp>>(true)\n\nexport const pinCompatibleVariant = z.object({\n manufacturerPartNumber: z.string().optional(),\n supplierPartNumber: z.record(supplier_name, z.array(z.string())).optional(),\n})\n\nexport const chipProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: pinLabelsProp.optional(),\n showPinAliases: z.boolean().optional(),\n pcbPinLabels: z.record(z.string(), z.string()).optional(),\n internallyConnectedPins: z\n .array(z.array(z.union([z.string(), z.number()])))\n .optional(),\n externallyConnectedPins: z.array(z.array(z.string())).optional(),\n schPinArrangement: schematicPinArrangement.optional(),\n schPortArrangement: schematicPinArrangement.optional(),\n pinCompatibleVariants: z.array(pinCompatibleVariant).optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n noSchematicRepresentation: z.boolean().optional(),\n connections: connectionsProp.optional(),\n})\n\n/**\n * @deprecated Use ChipProps instead.\n */\nexport const bugProps = chipProps\nexport type InferredChipProps = z.input<typeof chipProps>\n\n// Chip props are too complex to match up with zod types, we typecheck\n// them separately in the test files\nexpectTypesMatch<InferredChipProps, ChipPropsSU<string>>(true)\n","import {\n chipProps,\n type ChipProps,\n type PinLabelsProp,\n} from \"lib/components/chip\"\nimport type { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const pinoutProps = chipProps\nexport interface PinoutProps<\n PinLabelMap extends PinLabelsProp | string = string,\n> extends ChipProps<PinLabelMap> {}\n\ntype InferredPinoutProps = z.input<typeof pinoutProps>\nexpectTypesMatch<InferredPinoutProps, PinoutProps>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicPinArrangement,\n type SchematicPortArrangement,\n schematicPortArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { connectionTarget } from \"lib/common/connectionsProp\"\nimport {\n schematicPinLabel,\n type SchematicPinLabel,\n} from \"lib/common/schematicPinLabel\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface JumperProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<\n number | SchematicPinLabel,\n SchematicPinLabel | SchematicPinLabel[]\n >\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: number | string\n schWidth?: number | string\n schHeight?: number | string\n schDirection?: \"left\" | \"right\"\n schPinArrangement?: SchematicPortArrangement\n /**\n * @deprecated Use schPinArrangement instead.\n */\n schPortArrangement?: SchematicPortArrangement\n /**\n * Labels for PCB pins\n */\n pcbPinLabels?: Record<string, string>\n /**\n * Number of pins on the jumper (2 or 3)\n */\n pinCount?: 2 | 3\n /**\n * Groups of pins that are internally connected\n * e.g., [[\"1\",\"2\"], [\"2\",\"3\"]]\n */\n internallyConnectedPins?: (string | number)[][]\n /**\n * Connections to other components\n */\n connections?: Connections<string>\n}\n\nexport const jumperProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z\n .record(\n z.number().or(schematicPinLabel),\n schematicPinLabel.or(z.array(schematicPinLabel)),\n )\n .optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n schDirection: z.enum([\"left\", \"right\"]).optional(),\n schPinArrangement: schematicPinArrangement.optional(),\n schPortArrangement: schematicPortArrangement.optional(),\n pcbPinLabels: z.record(z.string(), z.string()).optional(),\n pinCount: z.union([z.literal(2), z.literal(3)]).optional(),\n internallyConnectedPins: z\n .array(z.array(z.union([z.string(), z.number()])))\n .optional(),\n connections: z\n .custom<Connections>()\n .pipe(z.record(z.string(), connectionTarget))\n .optional(),\n})\n\ntype InferredJumperProps = z.input<typeof jumperProps>\nexpectTypesMatch<JumperProps, InferredJumperProps>(true)\n","import { jumperProps, type JumperProps } from \"./jumper\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface SolderJumperProps extends JumperProps {\n /**\n * Pins that are bridged with solder by default\n */\n bridgedPins?: string[][]\n /**\n * If true, all pins are connected with cuttable traces\n */\n bridged?: boolean\n}\n\nexport const solderjumperProps = jumperProps.extend({\n bridgedPins: z.array(z.array(z.string())).optional(),\n bridged: z.boolean().optional(),\n})\n\ntype InferredSolderJumperProps = z.input<typeof solderjumperProps>\nexpectTypesMatch<SolderJumperProps, InferredSolderJumperProps>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n type SchematicPortArrangement,\n schematicPortArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport {\n schematicPinLabel,\n type SchematicPinLabel,\n} from \"lib/common/schematicPinLabel\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ConnectorProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<\n number | SchematicPinLabel,\n SchematicPinLabel | SchematicPinLabel[]\n >\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: number | string\n schWidth?: number | string\n schHeight?: number | string\n schDirection?: \"left\" | \"right\"\n schPortArrangement?: SchematicPortArrangement\n /**\n * Groups of pins that are internally connected\n * e.g., [[\"1\",\"2\"], [\"2\",\"3\"]]\n */\n internallyConnectedPins?: (string | number)[][]\n /**\n * Connector standard, e.g. usb_c, m2\n */\n standard?: \"usb_c\" | \"m2\"\n}\n\nexport const connectorProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z\n .record(\n z.number().or(schematicPinLabel),\n schematicPinLabel.or(z.array(schematicPinLabel)),\n )\n .optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n schDirection: z.enum([\"left\", \"right\"]).optional(),\n schPortArrangement: schematicPortArrangement.optional(),\n internallyConnectedPins: z\n .array(z.array(z.union([z.string(), z.number()])))\n .optional(),\n standard: z.enum([\"usb_c\", \"m2\"]).optional(),\n})\n\ntype InferredConnectorProps = z.input<typeof connectorProps>\nexpectTypesMatch<ConnectorProps, InferredConnectorProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicPinLabel,\n type SchematicPinLabel,\n} from \"lib/common/schematicPinLabel\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface InterconnectProps extends CommonComponentProps {\n standard?: \"TSC0001_36P_XALT_2025_11\" | \"0805\" | \"0603\" | \"1206\"\n pinLabels?: Record<\n number | SchematicPinLabel,\n SchematicPinLabel | SchematicPinLabel[]\n >\n /**\n * Groups of pins that are internally connected\n * e.g., [[\"1\",\"2\"], [\"2\",\"3\"]]\n */\n internallyConnectedPins?: (string | number)[][]\n}\n\nexport const interconnectProps = commonComponentProps.extend({\n standard: z\n .enum([\"TSC0001_36P_XALT_2025_11\", \"0805\", \"0603\", \"1206\"])\n .optional(),\n pinLabels: z\n .record(\n z.number().or(schematicPinLabel),\n schematicPinLabel.or(z.array(schematicPinLabel)),\n )\n .optional(),\n internallyConnectedPins: z\n .array(z.array(z.union([z.string(), z.number()])))\n .optional(),\n})\n\ntype InferredInterconnectProps = z.input<typeof interconnectProps>\nexpectTypesMatch<InterconnectProps, InferredInterconnectProps>(true)\n","import { z } from \"zod\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\n\n/**\n * Pin labels for fuse component\n */\nexport const fusePinLabels = [\"pin1\", \"pin2\"] as const\n\nexport type FusePinLabels = (typeof fusePinLabels)[number]\n\nexport interface FuseProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n /**\n * Current rating of the fuse in amperes\n */\n currentRating: number | string\n\n /**\n * Voltage rating of the fuse\n */\n voltageRating?: number | string\n\n /**\n * Whether to show ratings on schematic\n */\n schShowRatings?: boolean\n\n schOrientation?: SchematicOrientation\n\n /**\n * Connections to other components\n */\n connections?: Connections<PinLabel>\n}\n\n/**\n * Schema for validating fuse props\n */\nexport const fuseProps = commonComponentProps.extend({\n currentRating: z.union([z.number(), z.string()]),\n voltageRating: z.union([z.number(), z.string()]).optional(),\n schShowRatings: z.boolean().optional(),\n schOrientation: schematicOrientation.optional(),\n connections: z\n .record(\n z.string(),\n z.union([\n z.string(),\n z.array(z.string()).readonly(),\n z.array(z.string()),\n ]),\n )\n .optional(),\n})\n\nexport type InferredFuseProps = z.input<typeof fuseProps>\n","import { distance } from \"circuit-json\"\nimport type { PcbLayoutProps } from \"lib/common/layout\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { type PortHints, portHints } from \"lib/common/portHints\"\nimport { point, type Point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport type { Distance } from \"lib/common/distance\"\n\nexport interface CirclePlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"circle\"\n holeDiameter: number | string\n outerDiameter: number | string\n padDiameter?: number | string\n portHints?: PortHints\n solderMaskMargin?: Distance\n coveredWithSolderMask?: boolean\n}\n\nexport interface OvalPlatedHoleProps extends Omit<PcbLayoutProps, \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"oval\"\n outerWidth: number | string\n outerHeight: number | string\n holeWidth: number | string\n holeHeight: number | string\n portHints?: PortHints\n solderMaskMargin?: Distance\n\n /** @deprecated use holeWidth */\n innerWidth?: number | string\n /** @deprecated use holeHeight */\n innerHeight?: number | string\n coveredWithSolderMask?: boolean\n}\n\nexport interface PillPlatedHoleProps extends Omit<PcbLayoutProps, \"layer\"> {\n name?: string\n rectPad?: boolean\n connectsTo?: string | string[]\n shape: \"pill\"\n outerWidth: number | string\n outerHeight: number | string\n holeWidth: number | string\n holeHeight: number | string\n holeOffsetX?: number | string\n holeOffsetY?: number | string\n\n /** @deprecated use holeWidth */\n innerWidth?: number | string\n /** @deprecated use holeHeight */\n innerHeight?: number | string\n\n portHints?: PortHints\n solderMaskMargin?: Distance\n coveredWithSolderMask?: boolean\n}\n\nexport interface CircularHoleWithRectPlatedProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"circular_hole_with_rect_pad\"\n holeDiameter: number | string\n rectPadWidth: number | string\n rectPadHeight: number | string\n rectBorderRadius?: number | string\n holeShape?: \"circle\"\n padShape?: \"rect\"\n portHints?: PortHints\n holeOffsetX?: number | string\n holeOffsetY?: number | string\n solderMaskMargin?: Distance\n coveredWithSolderMask?: boolean\n}\n\nexport interface PillWithRectPadPlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"pill_hole_with_rect_pad\"\n holeShape?: \"pill\"\n padShape?: \"rect\"\n holeWidth: number | string\n holeHeight: number | string\n rectPadWidth: number | string\n rectPadHeight: number | string\n portHints?: PortHints\n holeOffsetX?: number | string\n holeOffsetY?: number | string\n solderMaskMargin?: Distance\n coveredWithSolderMask?: boolean\n}\n\nexport interface HoleWithPolygonPadPlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"hole_with_polygon_pad\"\n holeShape: \"circle\" | \"oval\" | \"pill\" | \"rotated_pill\"\n holeDiameter?: number | string\n holeWidth?: number | string\n holeHeight?: number | string\n padOutline: Point[]\n holeOffsetX: number | string\n holeOffsetY: number | string\n portHints?: PortHints\n solderMaskMargin?: Distance\n coveredWithSolderMask?: boolean\n}\n\nexport type PlatedHoleProps =\n | CirclePlatedHoleProps\n | OvalPlatedHoleProps\n | PillPlatedHoleProps\n | CircularHoleWithRectPlatedProps\n | PillWithRectPadPlatedHoleProps\n | HoleWithPolygonPadPlatedHoleProps\n\nconst distanceHiddenUndefined = z\n .custom<z.input<typeof distance>>()\n .transform((a) => {\n if (a === undefined) return undefined\n return distance.parse(a)\n })\n\nexport const platedHoleProps = z\n .discriminatedUnion(\"shape\", [\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"circle\"),\n holeDiameter: distance,\n outerDiameter: distance,\n padDiameter: distance.optional().describe(\"Diameter of the copper pad\"),\n portHints: portHints.optional(),\n solderMaskMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n }),\n pcbLayoutProps.omit({ layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"oval\"),\n outerWidth: distance,\n outerHeight: distance,\n holeWidth: distanceHiddenUndefined,\n holeHeight: distanceHiddenUndefined,\n innerWidth: distance.optional().describe(\"DEPRECATED use holeWidth\"),\n innerHeight: distance.optional().describe(\"DEPRECATED use holeHeight\"),\n portHints: portHints.optional(),\n solderMaskMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n }),\n pcbLayoutProps.omit({ layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"pill\"),\n rectPad: z.boolean().optional(),\n outerWidth: distance,\n outerHeight: distance,\n holeWidth: distanceHiddenUndefined,\n holeHeight: distanceHiddenUndefined,\n innerWidth: distance.optional().describe(\"DEPRECATED use holeWidth\"),\n innerHeight: distance.optional().describe(\"DEPRECATED use holeHeight\"),\n portHints: portHints.optional(),\n holeOffsetX: distance.optional(),\n holeOffsetY: distance.optional(),\n solderMaskMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"circular_hole_with_rect_pad\"),\n holeDiameter: distance,\n rectPadWidth: distance,\n rectPadHeight: distance,\n rectBorderRadius: distance.optional(),\n holeShape: z.literal(\"circle\").optional(),\n padShape: z.literal(\"rect\").optional(),\n portHints: portHints.optional(),\n holeOffsetX: distance.optional(),\n holeOffsetY: distance.optional(),\n solderMaskMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"pill_hole_with_rect_pad\"),\n holeShape: z.literal(\"pill\").optional(),\n padShape: z.literal(\"rect\").optional(),\n holeWidth: distance,\n holeHeight: distance,\n rectPadWidth: distance,\n rectPadHeight: distance,\n portHints: portHints.optional(),\n holeOffsetX: distance.optional(),\n holeOffsetY: distance.optional(),\n solderMaskMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"hole_with_polygon_pad\"),\n holeShape: z.enum([\"circle\", \"oval\", \"pill\", \"rotated_pill\"]),\n holeDiameter: distance.optional(),\n holeWidth: distance.optional(),\n holeHeight: distance.optional(),\n padOutline: z.array(point),\n holeOffsetX: distance,\n holeOffsetY: distance,\n portHints: portHints.optional(),\n solderMaskMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n }),\n ])\n .refine((a) => {\n if (\"innerWidth\" in a && a.innerWidth !== undefined) {\n a.holeWidth ??= a.innerWidth\n }\n if (\"innerHeight\" in a && a.innerHeight !== undefined) {\n a.holeHeight ??= a.innerHeight\n }\n return a\n })\n\ntype InferredPlatedHoleProps = z.input<typeof platedHoleProps>\n\nexpectTypesMatch<PlatedHoleProps, InferredPlatedHoleProps>(true)\n","import { resistance } from \"circuit-json\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport {\n schematicSymbolSize,\n type SchematicSymbolSize,\n} from \"lib/common/schematicSize\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { z } from \"zod\"\n\nexport const resistorPinLabels = [\"pin1\", \"pin2\", \"pos\", \"neg\"] as const\nexport type ResistorPinLabels = (typeof resistorPinLabels)[number]\n\nexport interface ResistorProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n resistance: number | string\n pullupFor?: string\n pullupTo?: string\n pulldownFor?: string\n pulldownTo?: string\n schOrientation?: SchematicOrientation\n schSize?: SchematicSymbolSize\n connections?: Connections<ResistorPinLabels>\n}\n\nexport const resistorProps = commonComponentProps.extend({\n resistance,\n\n pullupFor: z.string().optional(),\n pullupTo: z.string().optional(),\n\n pulldownFor: z.string().optional(),\n pulldownTo: z.string().optional(),\n\n schOrientation: schematicOrientation.optional(),\n schSize: schematicSymbolSize.optional(),\n\n connections: createConnectionsProp(resistorPinLabels).optional(),\n})\nexport const resistorPins = lrPins\n\ntype InferredResistorProps = z.input<typeof resistorProps>\nexpectTypesMatch<ResistorProps, InferredResistorProps>(true)\n","import { resistance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type PotentiometerPinVariant = \"two_pin\" | \"three_pin\"\n\nexport interface PotentiometerProps extends CommonComponentProps {\n maxResistance: number | string\n pinVariant?: PotentiometerPinVariant\n}\n\nexport const potentiometerProps = commonComponentProps.extend({\n maxResistance: resistance,\n pinVariant: z.enum([\"two_pin\", \"three_pin\"]).optional(),\n})\n\ntype InferredPotentiometerProps = z.input<typeof potentiometerProps>\nexpectTypesMatch<PotentiometerProps, InferredPotentiometerProps>(true)\n","import { frequency, capacitance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type PinVariant = \"two_pin\" | \"four_pin\"\n\nexport const crystalPins = lrPins\nexport type CrystalPinLabels = (typeof crystalPins)[number]\n\nexport interface CrystalProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n frequency: number | string\n loadCapacitance: number | string\n manufacturerPartNumber?: string\n mpn?: string\n pinVariant?: PinVariant\n schOrientation?: SchematicOrientation\n connections?: Connections<CrystalPinLabels>\n}\n\nexport const crystalProps = commonComponentProps.extend({\n frequency: frequency,\n loadCapacitance: capacitance,\n manufacturerPartNumber: z.string().optional(),\n mpn: z.string().optional(),\n pinVariant: z.enum([\"two_pin\", \"four_pin\"]).optional(),\n schOrientation: schematicOrientation.optional(),\n connections: createConnectionsProp(crystalPins).optional(),\n})\n\ntype InferredCrystalProps = z.input<typeof crystalProps>\nexpectTypesMatch<CrystalProps, InferredCrystalProps>(true)\n","import { frequency, capacitance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type ResonatorPinVariant = \"no_ground\" | \"ground_pin\" | \"two_ground_pins\"\n\nexport interface ResonatorProps extends CommonComponentProps {\n frequency: number | string\n loadCapacitance: number | string\n pinVariant?: ResonatorPinVariant\n}\n\nexport const resonatorProps = commonComponentProps.extend({\n frequency: frequency,\n loadCapacitance: capacitance,\n pinVariant: z.enum([\"no_ground\", \"ground_pin\", \"two_ground_pins\"]).optional(),\n})\n\ntype InferredResonatorProps = z.input<typeof resonatorProps>\nexpectTypesMatch<ResonatorProps, InferredResonatorProps>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { boardProps, type BoardProps } from \"lib/components/board\"\n\nexport interface StampboardProps extends BoardProps {\n leftPinCount?: number\n rightPinCount?: number\n topPinCount?: number\n bottomPinCount?: number\n leftPins?: string[]\n rightPins?: string[]\n topPins?: string[]\n bottomPins?: string[]\n pinPitch?: number | string\n innerHoles?: boolean\n}\n\nexport const stampboardProps = boardProps.extend({\n leftPinCount: z.number().optional(),\n rightPinCount: z.number().optional(),\n topPinCount: z.number().optional(),\n bottomPinCount: z.number().optional(),\n leftPins: z.array(z.string()).optional(),\n rightPins: z.array(z.string()).optional(),\n topPins: z.array(z.string()).optional(),\n bottomPins: z.array(z.string()).optional(),\n pinPitch: distance.optional(),\n innerHoles: z.boolean().optional(),\n})\n\ntype InferredStampboardProps = z.input<typeof stampboardProps>\nexpectTypesMatch<StampboardProps, InferredStampboardProps>(true)\n","import { capacitance, voltage } from \"circuit-json\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPolarPins,\n} from \"lib/common/layout\"\nimport {\n schematicSymbolSize,\n type SchematicSymbolSize,\n} from \"lib/common/schematicSize\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { z } from \"zod\"\n\nexport const capacitorPinLabels = [\n \"pin1\",\n \"pin2\",\n \"pos\",\n \"neg\",\n \"anode\",\n \"cathode\",\n] as const\nexport type CapacitorPinLabels = (typeof capacitorPinLabels)[number]\n\nexport interface CapacitorProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n capacitance: number | string\n maxVoltageRating?: number | string\n schShowRatings?: boolean\n polarized?: boolean\n decouplingFor?: string\n decouplingTo?: string\n bypassFor?: string\n bypassTo?: string\n maxDecouplingTraceLength?: number\n schOrientation?: SchematicOrientation\n schSize?: SchematicSymbolSize\n connections?: Connections<CapacitorPinLabels>\n}\n\nexport const capacitorProps = commonComponentProps.extend({\n capacitance,\n maxVoltageRating: voltage.optional(),\n schShowRatings: z.boolean().optional().default(false),\n polarized: z.boolean().optional().default(false),\n decouplingFor: z.string().optional(),\n decouplingTo: z.string().optional(),\n bypassFor: z.string().optional(),\n bypassTo: z.string().optional(),\n maxDecouplingTraceLength: z.number().optional(),\n schOrientation: schematicOrientation.optional(),\n schSize: schematicSymbolSize.optional(),\n connections: createConnectionsProp(capacitorPinLabels).optional(),\n})\nexport const capacitorPins = lrPolarPins\n\nexpectTypesMatch<CapacitorProps, z.input<typeof capacitorProps>>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface NetProps {\n name: string\n connectsTo?: string | string[]\n highlightColor?: string\n isPowerNet?: boolean\n isGroundNet?: boolean\n}\n\nexport const netProps = z.object({\n name: z.string(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n highlightColor: z.string().optional(),\n isPowerNet: z.boolean().optional(),\n isGroundNet: z.boolean().optional(),\n})\n\ntype InferredNetProps = z.input<typeof netProps>\nexpectTypesMatch<NetProps, InferredNetProps>(true)\n","import { distance, type Distance } from \"lib/common/distance\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface FiducialProps extends CommonComponentProps {\n soldermaskPullback?: Distance\n padDiameter?: Distance\n}\n\nexport const fiducialProps = commonComponentProps.extend({\n soldermaskPullback: distance.optional(),\n padDiameter: distance.optional(),\n})\n\ntype InferredFiducialProps = z.input<typeof fiducialProps>\nexpectTypesMatch<FiducialProps, InferredFiducialProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ConstrainedLayoutProps {\n name?: string\n pcbOnly?: boolean\n schOnly?: boolean\n}\n\nexport const constrainedLayoutProps = z.object({\n name: z.string().optional(),\n pcbOnly: z.boolean().optional(),\n schOnly: z.boolean().optional(),\n})\n\nexport type InferredConstrainedLayoutProps = z.input<\n typeof constrainedLayoutProps\n>\n\nexpectTypesMatch<InferredConstrainedLayoutProps, ConstrainedLayoutProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport type { Distance } from \"lib/common/distance\"\nimport { distance } from \"lib/common/distance\"\nimport { z } from \"zod\"\n\nexport type PcbXDistConstraint = {\n pcb?: true\n xDist: Distance\n\n /**\n * Selector for left component, e.g. \".U1\" or \".R1\", you can also specify the\n * edge or center of the component e.g. \".R1 leftedge\", \".R1 center\"\n */\n left: string\n\n /**\n * Selector for right component, e.g. \".U1\" or \".R1\", you can also specify the\n * edge or center of the component e.g. \".R1 leftedge\", \".R1 center\"\n */\n right: string\n\n /**\n * If true, the provided distance is the distance between the closest edges of\n * the left and right components\n */\n edgeToEdge?: true\n\n /**\n * If true, the provided distance is the distance between the centers of the\n * left and right components\n */\n centerToCenter?: true\n}\n\nexport type PcbYDistConstraint = {\n pcb?: true\n yDist: Distance\n\n /**\n * Selector for top component, e.g. \".U1\" or \".R1\", you can also specify the\n * edge or center of the component e.g. \".R1 topedge\", \".R1 center\"\n */\n top: string\n\n /**\n * Selector for bottom component, e.g. \".U1\" or \".R1\", you can also specify the\n * edge or center of the component e.g. \".R1 bottomedge\", \".R1 center\"\n */\n bottom: string\n\n edgeToEdge?: true\n centerToCenter?: true\n}\n\nexport type PcbSameYConstraint = {\n pcb?: true\n sameY?: true\n\n /**\n * Selector for components, e.g. [\".U1\", \".R1\"], you can also specify the\n * edge or center of the component e.g. [\".R1 leftedge\", \".U1 center\"]\n */\n for: string[]\n}\n\nexport type PcbSameXConstraint = {\n pcb?: true\n sameX?: true\n /**\n * Selector for components, e.g. [\".U1\", \".R1\"], you can also specify the\n * edge or center of the component e.g. [\".R1 leftedge\", \".U1 center\"]\n */\n for: string[]\n}\n\nexport type ConstraintProps =\n | PcbXDistConstraint\n | PcbYDistConstraint\n | PcbSameYConstraint\n | PcbSameXConstraint\n\n// -----------------------------------------------------------------------------\n// Zod\n// -----------------------------------------------------------------------------\n\nexport const pcbXDistConstraintProps = z.object({\n pcb: z.literal(true).optional(),\n xDist: distance,\n left: z.string(),\n right: z.string(),\n\n edgeToEdge: z.literal(true).optional(),\n centerToCenter: z.literal(true).optional(),\n})\nexpectTypesMatch<PcbXDistConstraint, z.input<typeof pcbXDistConstraintProps>>(\n true,\n)\n\nexport const pcbYDistConstraintProps = z.object({\n pcb: z.literal(true).optional(),\n yDist: distance,\n top: z.string(),\n bottom: z.string(),\n\n edgeToEdge: z.literal(true).optional(),\n centerToCenter: z.literal(true).optional(),\n})\nexpectTypesMatch<PcbYDistConstraint, z.input<typeof pcbYDistConstraintProps>>(\n true,\n)\n\nexport const pcbSameYConstraintProps = z.object({\n pcb: z.literal(true).optional(),\n sameY: z.literal(true).optional(),\n for: z.array(z.string()),\n})\nexpectTypesMatch<PcbSameYConstraint, z.input<typeof pcbSameYConstraintProps>>(\n true,\n)\n\nexport const pcbSameXConstraintProps = z.object({\n pcb: z.literal(true).optional(),\n sameX: z.literal(true).optional(),\n for: z.array(z.string()),\n})\nexpectTypesMatch<PcbSameXConstraint, z.input<typeof pcbSameXConstraintProps>>(\n true,\n)\n\nexport const constraintProps = z.union([\n pcbXDistConstraintProps,\n pcbYDistConstraintProps,\n pcbSameYConstraintProps,\n pcbSameXConstraintProps,\n])\n\nexpectTypesMatch<ConstraintProps, z.input<typeof constraintProps>>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { point, type Point } from \"lib/common/point\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectCutoutProps\n extends Omit<PcbLayoutProps, \"layer\" | \"pcbRotation\"> {\n name?: string\n shape: \"rect\"\n width: Distance\n height: Distance\n}\n\nexport const rectCutoutProps = pcbLayoutProps\n .omit({\n layer: true,\n pcbRotation: true,\n })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n })\nexpectTypesMatch<RectCutoutProps, z.input<typeof rectCutoutProps>>(true)\n\nexport interface CircleCutoutProps\n extends Omit<PcbLayoutProps, \"layer\" | \"pcbRotation\"> {\n name?: string\n shape: \"circle\"\n radius: Distance\n}\n\nexport const circleCutoutProps = pcbLayoutProps\n .omit({\n layer: true,\n pcbRotation: true,\n })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"circle\"),\n radius: distance,\n })\nexpectTypesMatch<CircleCutoutProps, z.input<typeof circleCutoutProps>>(true)\n\nexport interface PolygonCutoutProps\n extends Omit<PcbLayoutProps, \"layer\" | \"pcbRotation\"> {\n name?: string\n shape: \"polygon\"\n points: Point[]\n}\n\nexport const polygonCutoutProps = pcbLayoutProps\n .omit({\n layer: true,\n pcbRotation: true,\n })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"polygon\"),\n points: z.array(point),\n })\nexpectTypesMatch<PolygonCutoutProps, z.input<typeof polygonCutoutProps>>(true)\n\nexport type CutoutProps =\n | RectCutoutProps\n | CircleCutoutProps\n | PolygonCutoutProps\n\nexport const cutoutProps = z.discriminatedUnion(\"shape\", [\n rectCutoutProps,\n circleCutoutProps,\n polygonCutoutProps,\n])\n\nexport type CutoutPropsInput = z.input<typeof cutoutProps>\n","import {\n pcbLayoutProps,\n type CommonLayoutProps,\n type PcbLayoutProps,\n} from \"lib/common/layout\"\nimport { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { portHints, type PortHints } from \"lib/common/portHints\"\nimport { point, type Point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"rect\"\n width: Distance\n height: Distance\n rectBorderRadius?: Distance\n cornerRadius?: Distance\n portHints?: PortHints\n coveredWithSolderMask?: boolean\n solderMaskMargin?: Distance\n}\n\nexport interface RotatedRectSmtPadProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"rotated_rect\"\n width: Distance\n height: Distance\n cornerRadius?: Distance\n ccwRotation: number\n portHints?: PortHints\n coveredWithSolderMask?: boolean\n solderMaskMargin?: Distance\n}\n\nexport interface CircleSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"circle\"\n radius: Distance\n portHints?: PortHints\n coveredWithSolderMask?: boolean\n solderMaskMargin?: Distance\n}\n\nexport interface PillSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"pill\"\n width: Distance\n height: Distance\n radius: Distance\n portHints?: PortHints\n coveredWithSolderMask?: boolean\n solderMaskMargin?: Distance\n}\n\nexport interface PolygonSmtPadProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"polygon\"\n points: Point[]\n portHints?: PortHints\n coveredWithSolderMask?: boolean\n solderMaskMargin?: Distance\n}\n\nexport type SmtPadProps =\n | RectSmtPadProps\n | CircleSmtPadProps\n | RotatedRectSmtPadProps\n | PillSmtPadProps\n | PolygonSmtPadProps\n\n// ----------------------------------------------------------------------------\n// Zod\n// ----------------------------------------------------------------------------\n\nexport const rectSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n rectBorderRadius: distance.optional(),\n cornerRadius: distance.optional(),\n portHints: portHints.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n solderMaskMargin: distance.optional(),\n })\ntype InferredRectSmtPadProps = z.input<typeof rectSmtPadProps>\nexpectTypesMatch<InferredRectSmtPadProps, RectSmtPadProps>(true)\n\nexport const rotatedRectSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"rotated_rect\"),\n width: distance,\n height: distance,\n ccwRotation: z.number(),\n cornerRadius: distance.optional(),\n portHints: portHints.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n solderMaskMargin: distance.optional(),\n })\ntype InferredRotatedRectSmtPadProps = z.input<typeof rotatedRectSmtPadProps>\nexpectTypesMatch<InferredRotatedRectSmtPadProps, RotatedRectSmtPadProps>(true)\n\nexport const circleSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"circle\"),\n radius: distance,\n portHints: portHints.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n solderMaskMargin: distance.optional(),\n })\ntype InferredCircleSmtPadProps = z.input<typeof circleSmtPadProps>\nexpectTypesMatch<InferredCircleSmtPadProps, CircleSmtPadProps>(true)\n\nexport const pillSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"pill\"),\n width: distance,\n height: distance,\n radius: distance,\n portHints: portHints.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n solderMaskMargin: distance.optional(),\n })\ntype InferredPillSmtPadProps = z.input<typeof pillSmtPadProps>\nexpectTypesMatch<InferredPillSmtPadProps, PillSmtPadProps>(true)\n\nexport const polygonSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"polygon\"),\n points: z.array(point),\n portHints: portHints.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n solderMaskMargin: distance.optional(),\n })\ntype InferredPolygonSmtPadProps = z.input<typeof polygonSmtPadProps>\nexpectTypesMatch<InferredPolygonSmtPadProps, PolygonSmtPadProps>(true)\n\nexport const smtPadProps = z.discriminatedUnion(\"shape\", [\n circleSmtPadProps,\n rectSmtPadProps,\n rotatedRectSmtPadProps,\n pillSmtPadProps,\n polygonSmtPadProps,\n])\n\nexport type InferredSmtPadProps = z.input<typeof smtPadProps>\nexpectTypesMatch<InferredSmtPadProps, SmtPadProps>(true)\n","import { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { boolean, string, z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectSolderPasteProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"rect\"\n width: Distance\n height: Distance\n}\n\nexport interface CircleSolderPasteProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"circle\"\n radius: Distance\n}\n\nexport type SolderPasteProps = RectSolderPasteProps | CircleSolderPasteProps\n\n// zod\n\nexport const rectSolderPasteProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n })\ntype InferredRectSolderPasteProps = z.input<typeof rectSolderPasteProps>\nexpectTypesMatch<InferredRectSolderPasteProps, RectSolderPasteProps>(true)\n\nexport const circleSolderPasteProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"circle\"),\n radius: distance,\n })\ntype InferredCircleSolderPasteProps = z.input<typeof circleSolderPasteProps>\nexpectTypesMatch<InferredCircleSolderPasteProps, CircleSolderPasteProps>(true)\n\nexport const solderPasteProps = z.union([\n circleSolderPasteProps,\n rectSolderPasteProps,\n])\n\nexport type InferredSolderPasteProps = z.input<typeof solderPasteProps>\nexpectTypesMatch<InferredSolderPasteProps, SolderPasteProps>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface CircleHoleProps extends PcbLayoutProps {\n name?: string\n shape?: \"circle\"\n diameter?: Distance\n radius?: Distance\n solderMaskMargin?: Distance\n coveredWithSolderMask?: boolean\n}\n\nexport interface PillHoleProps extends PcbLayoutProps {\n name?: string\n shape: \"pill\"\n width: Distance\n height: Distance\n solderMaskMargin?: Distance\n coveredWithSolderMask?: boolean\n}\n\nexport interface RectHoleProps extends PcbLayoutProps {\n name?: string\n shape: \"rect\"\n width: Distance\n height: Distance\n solderMaskMargin?: Distance\n coveredWithSolderMask?: boolean\n}\n\nexport type HoleProps = CircleHoleProps | PillHoleProps | RectHoleProps\n\nconst circleHoleProps = pcbLayoutProps\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"circle\").optional(),\n diameter: distance.optional(),\n radius: distance.optional(),\n solderMaskMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n })\n .transform((d) => ({\n ...d,\n diameter: d.diameter ?? 2 * d.radius!,\n radius: d.radius ?? d.diameter! / 2,\n }))\n\nconst pillHoleProps = pcbLayoutProps.extend({\n name: z.string().optional(),\n shape: z.literal(\"pill\"),\n width: distance,\n height: distance,\n solderMaskMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n})\n\nconst rectHoleProps = pcbLayoutProps.extend({\n name: z.string().optional(),\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n solderMaskMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n})\n\nexport const holeProps = z.union([\n circleHoleProps,\n pillHoleProps,\n rectHoleProps,\n])\n\nexport type InferredHoleProps = z.input<typeof holeProps>\n\nexpectTypesMatch<HoleProps, InferredHoleProps>(true)\n","import { distance, route_hint_point } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { point } from \"../common/point\"\n\nexport const portRef = z.union([\n z.string(),\n z.custom<{ getPortSelector: () => string }>((v) =>\n Boolean(v.getPortSelector),\n ),\n])\n\nconst pcbPath = z.array(z.union([point, z.string()]))\n\nconst baseTraceProps = z.object({\n key: z.string().optional(),\n thickness: distance.optional(),\n width: distance.optional().describe(\"Alias for trace thickness\"),\n schematicRouteHints: z.array(point).optional(),\n pcbRouteHints: z.array(route_hint_point).optional(),\n pcbPathRelativeTo: z.string().optional(),\n pcbPath: pcbPath.optional(),\n pcbPaths: z.array(pcbPath).optional(),\n pcbStraightLine: z\n .boolean()\n .optional()\n .describe(\"Draw a straight pcb trace between the connected points\"),\n schDisplayLabel: z.string().optional(),\n schStroke: z.string().optional(),\n highlightColor: z.string().optional(),\n maxLength: distance.optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n})\n\nexport const traceProps = z.union([\n baseTraceProps.extend({\n path: z.array(portRef),\n }),\n baseTraceProps.extend({\n from: portRef,\n to: portRef,\n }),\n])\n\nexport type TraceProps = z.input<typeof traceProps>\n","import { type LayerRef, layer_ref } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface FootprintProps {\n children?: any\n /**\n * The layer that the footprint is designed for. If you set this to \"top\"\n * then it means the children were intended to represent the top layer. If\n * the <chip /> with this footprint is moved to the bottom layer, then the\n * components will be mirrored.\n *\n * Generally, you shouldn't set this except where it can help prevent\n * confusion because you have a complex multi-layer footprint. Default is\n * \"top\" and this is most intuitive.\n */\n originalLayer?: LayerRef\n /**\n * Serialized circuit JSON describing a precompiled footprint\n */\n circuitJson?: any[]\n}\n\nexport const footprintProps = z.object({\n children: z.any().optional(),\n originalLayer: layer_ref.default(\"top\").optional(),\n circuitJson: z.array(z.any()).optional(),\n})\n\nexport type FootprintPropsInput = z.input<typeof footprintProps>\ntype InferredFootprintProps = z.infer<typeof footprintProps>\nexpectTypesMatch<InferredFootprintProps, FootprintProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface SymbolProps {\n /**\n * The facing direction that the symbol is designed for. If you set this to \"right\",\n * then it means the children were intended to represent the symbol facing right.\n * Generally, you shouldn't set this except where it can help prevent confusion\n * because you have a complex symbol. Default is \"right\" and this is most intuitive.\n */\n originalFacingDirection?: \"up\" | \"down\" | \"left\" | \"right\"\n}\n\nexport const symbolProps = z.object({\n originalFacingDirection: z\n .enum([\"up\", \"down\", \"left\", \"right\"])\n .default(\"right\")\n .optional(),\n})\n\nexport type SymbolPropsInput = z.input<typeof symbolProps>\ntype InferredSymbolProps = z.infer<typeof symbolProps>\nexpectTypesMatch<InferredSymbolProps, SymbolProps>(true)\n","import { voltage } from \"circuit-json\"\nimport { z } from \"zod\"\nimport {\n commonComponentProps,\n lrPins,\n lrPolarPins,\n type CommonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\n/** @deprecated use battery_capacity from circuit-json when circuit-json is updated */\nconst capacity = z\n .number()\n .or(z.string().endsWith(\"mAh\"))\n .transform((v) => {\n if (typeof v === \"string\") {\n const valString = v.replace(\"mAh\", \"\")\n const num = Number.parseFloat(valString)\n if (Number.isNaN(num)) {\n throw new Error(\"Invalid capacity\")\n }\n return num\n }\n return v\n })\n .describe(\"Battery capacity in mAh\")\n\nexport interface BatteryProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n capacity?: number | string\n voltage?: number | string\n standard?: \"AA\" | \"AAA\" | \"9V\" | \"CR2032\" | \"18650\" | \"C\"\n schOrientation?: SchematicOrientation\n}\n\nexport const batteryProps = commonComponentProps.extend({\n capacity: capacity.optional(),\n voltage: voltage.optional(),\n standard: z.enum([\"AA\", \"AAA\", \"9V\", \"CR2032\", \"18650\", \"C\"]).optional(),\n schOrientation: schematicOrientation.optional(),\n})\nexport const batteryPins = lrPolarPins\nexport type BatteryPinLabels = (typeof batteryPins)[number]\n\nexpectTypesMatch<BatteryProps, z.input<typeof batteryProps>>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicPinArrangement,\n type SchematicPinArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { connectionTarget } from \"lib/common/connectionsProp\"\nimport {\n schematicPinLabel,\n type SchematicPinLabel,\n} from \"lib/common/schematicPinLabel\"\nimport {\n pcbOrientation as pcbOrientationProp,\n type PcbOrientation,\n} from \"lib/common/pcbOrientation\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface PinHeaderProps extends CommonComponentProps {\n /**\n * Number of pins in the header\n */\n pinCount: number\n\n /**\n * Distance between pins\n */\n pitch?: number | string\n\n /**\n * Schematic facing direction\n */\n schFacingDirection?: \"up\" | \"down\" | \"left\" | \"right\"\n\n /**\n * Whether the header is male, female, or unpopulated\n */\n gender?: \"male\" | \"female\" | \"unpopulated\"\n\n /**\n * Whether to show pin labels in silkscreen\n */\n showSilkscreenPinLabels?: boolean\n\n /**\n * Labels for PCB pins\n */\n pcbPinLabels?: Record<string, string>\n\n /**\n * Whether the header has two rows of pins\n */\n doubleRow?: boolean\n\n /**\n * If true, the header is a right-angle style connector\n */\n rightAngle?: boolean\n\n /**\n * Orientation of the header on the PCB\n */\n pcbOrientation?: PcbOrientation\n\n /**\n * Diameter of the through-hole for each pin\n */\n holeDiameter?: number | string\n\n /**\n * Diameter of the plated area around each hole\n */\n platedDiameter?: number | string\n\n /**\n * Labels for each pin\n */\n pinLabels?: Record<string, SchematicPinLabel> | SchematicPinLabel[]\n\n /**\n * Connections to other components\n */\n connections?: Connections<string>\n\n /**\n * Direction the header is facing\n */\n facingDirection?: \"left\" | \"right\"\n\n /**\n * Pin arrangement in schematic view\n */\n schPinArrangement?: SchematicPinArrangement\n\n /**\n * Schematic pin style (margins, etc)\n */\n schPinStyle?: SchematicPinStyle\n\n /**\n * Schematic pin spacing\n */\n schPinSpacing?: number | string\n\n /**\n * Schematic width\n */\n schWidth?: number | string\n\n /**\n * Schematic height\n */\n schHeight?: number | string\n}\n\nexport const pinHeaderProps = commonComponentProps.extend({\n pinCount: z.number(),\n pitch: distance.optional(),\n schFacingDirection: z.enum([\"up\", \"down\", \"left\", \"right\"]).optional(),\n gender: z.enum([\"male\", \"female\", \"unpopulated\"]).optional().default(\"male\"),\n showSilkscreenPinLabels: z.boolean().optional(),\n pcbPinLabels: z.record(z.string(), z.string()).optional(),\n doubleRow: z.boolean().optional(),\n rightAngle: z.boolean().optional(),\n pcbOrientation: pcbOrientationProp.optional(),\n holeDiameter: distance.optional(),\n platedDiameter: distance.optional(),\n pinLabels: z\n .record(z.string(), schematicPinLabel)\n .or(z.array(schematicPinLabel))\n .optional(),\n connections: z\n .custom<Connections>()\n .pipe(z.record(z.string(), connectionTarget))\n .optional(),\n facingDirection: z.enum([\"left\", \"right\"]).optional(),\n schPinArrangement: schematicPinArrangement.optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n})\n\ntype InferredPinHeaderProps = z.input<typeof pinHeaderProps>\nexpectTypesMatch<PinHeaderProps, InferredPinHeaderProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport const pcbOrientation = z\n .enum([\"vertical\", \"horizontal\"])\n .describe(\n \"vertical means pins go 1->2 downward and horizontal means pins go 1->2 rightward\",\n )\n\nexport type PcbOrientation = \"vertical\" | \"horizontal\"\n\nexpectTypesMatch<PcbOrientation, z.infer<typeof pcbOrientation>>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { distance } from \"lib/common/distance\"\nimport { rotation } from \"circuit-json\"\n\n/**\n * @deprecated Use NetLabelProps instead.\n */\nexport interface NetAliasProps {\n net?: string\n connection?: string\n schX?: number | string\n schY?: number | string\n schRotation?: number | string\n anchorSide?: \"left\" | \"top\" | \"right\" | \"bottom\"\n}\n\n/** @deprecated Use netLabelProps instead. */\nexport const netAliasProps = z.object({\n net: z.string().optional(),\n connection: z.string().optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n anchorSide: z.enum([\"left\", \"top\", \"right\", \"bottom\"]).optional(),\n})\n\ntype InferredNetAliasProps = z.input<typeof netAliasProps>\nexpectTypesMatch<NetAliasProps, InferredNetAliasProps>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { distance } from \"lib/common/distance\"\nimport { rotation } from \"circuit-json\"\n\nexport interface NetLabelProps {\n net?: string\n connection?: string\n connectsTo?: string | string[]\n schX?: number | string\n schY?: number | string\n schRotation?: number | string\n anchorSide?: \"left\" | \"top\" | \"right\" | \"bottom\"\n}\n\nexport const netLabelProps = z.object({\n net: z.string().optional(),\n connection: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n anchorSide: z.enum([\"left\", \"top\", \"right\", \"bottom\"]).optional(),\n})\n\ntype InferredNetLabelProps = z.input<typeof netLabelProps>\nexpectTypesMatch<NetLabelProps, InferredNetLabelProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { chipProps, type ChipProps, type PinLabelsProp } from \"./chip\"\n\nexport type PushButtonProps<T extends PinLabelsProp | string = string> =\n ChipProps<T>\n\nexport const pushButtonProps = chipProps.extend({})\n\nexpectTypesMatch<PushButtonProps, z.input<typeof pushButtonProps>>(true)\n","import type { SubcircuitGroupProps } from \"./group\"\nimport { subcircuitGroupProps } from \"./group\"\nimport type { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport type SubcircuitProps = SubcircuitGroupProps\n\nexport const subcircuitProps = subcircuitGroupProps\n\ntype InferredSubcircuitProps = z.input<typeof subcircuitProps>\nexpectTypesMatch<SubcircuitProps, InferredSubcircuitProps>(true)\n","import { ms } from \"circuit-json\"\nimport type { AutocompleteString } from \"lib/common/autocomplete\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface AnalogSimulationProps {\n simulationType?: \"spice_transient_analysis\"\n duration?: number | string\n timePerStep?: number | string\n spiceEngine?: AutocompleteString<\"spicey\" | \"ngspice\">\n}\n\nconst spiceEngine = z.custom<AutocompleteString<\"spicey\" | \"ngspice\">>(\n (value) => typeof value === \"string\",\n)\n\nexport const analogSimulationProps = z.object({\n simulationType: z\n .literal(\"spice_transient_analysis\")\n .default(\"spice_transient_analysis\"),\n duration: ms.optional(),\n timePerStep: ms.optional(),\n spiceEngine: spiceEngine.optional(),\n})\n\nexpectTypesMatch<AnalogSimulationProps, z.input<typeof analogSimulationProps>>(\n true,\n)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\n\nexport const transistorPinsLabels = [\n \"pin1\",\n \"pin2\",\n \"pin3\",\n \"emitter\",\n \"collector\",\n \"base\",\n \"gate\",\n \"source\",\n \"drain\",\n] as const\nexport type transistorPinsLabels = (typeof transistorPinsLabels)[number]\n\nexport interface TransistorProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n type: \"npn\" | \"pnp\" | \"bjt\" | \"jfet\" | \"mosfet\" | \"igbt\"\n connections?: Connections<transistorPinsLabels>\n}\n\nexport const transistorProps = commonComponentProps.extend({\n type: z.enum([\"npn\", \"pnp\", \"bjt\", \"jfet\", \"mosfet\", \"igbt\"]),\n connections: createConnectionsProp(transistorPinsLabels).optional(),\n})\n\nexport const transistorPins = [\n \"pin1\",\n \"emitter\",\n \"pin2\",\n \"collector\",\n \"pin3\",\n \"base\",\n] as const\nexport type TransistorPinLabels = (typeof transistorPins)[number]\n\ntype InferredTransistorProps = z.input<typeof transistorProps>\nexpectTypesMatch<TransistorProps, InferredTransistorProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"../common/layout\"\nimport { expectTypesMatch } from \"../typecheck\"\nimport { z } from \"zod\"\n\nexport interface MosfetProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n channelType: \"n\" | \"p\"\n mosfetMode: \"enhancement\" | \"depletion\"\n}\n\nexport const mosfetProps = commonComponentProps.extend({\n channelType: z.enum([\"n\", \"p\"]),\n mosfetMode: z.enum([\"enhancement\", \"depletion\"]),\n})\n\nexport const mosfetPins = [\n \"pin1\",\n \"drain\",\n \"pin2\",\n \"source\",\n \"pin3\",\n \"gate\",\n] as const\nexport type MosfetPinLabels = (typeof mosfetPins)[number]\n\ntype InferredMosfetProps = z.input<typeof mosfetProps>\nexpectTypesMatch<MosfetProps, InferredMosfetProps>(true)\n","import { inductance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport const inductorPins = lrPins\nexport type InductorPinLabels = (typeof inductorPins)[number]\n\nexport interface InductorProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n inductance: number | string\n maxCurrentRating?: number | string\n schOrientation?: SchematicOrientation\n connections?: Connections<InductorPinLabels>\n}\n\nexport const inductorProps = commonComponentProps.extend({\n inductance,\n maxCurrentRating: z.union([z.string(), z.number()]).optional(),\n schOrientation: schematicOrientation.optional(),\n connections: createConnectionsProp(inductorPins).optional(),\n})\n\ntype InferredInductorProps = z.input<typeof inductorProps>\n\nexpectTypesMatch<InductorProps, InferredInductorProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n lrPolarPins,\n} from \"lib/common/layout\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\n\nconst diodeConnectionKeys = z.enum([\n \"anode\",\n \"cathode\",\n \"pin1\",\n \"pin2\",\n \"pos\",\n \"neg\",\n])\n\nconst connectionTarget = z\n .string()\n .or(z.array(z.string()).readonly())\n .or(z.array(z.string()))\n\nconst connectionsProp = z.record(diodeConnectionKeys, connectionTarget)\n\nconst diodeVariant = z.enum([\n \"standard\",\n \"schottky\",\n \"zener\",\n \"avalanche\",\n \"photo\",\n \"tvs\",\n])\n\nexport const diodeProps = commonComponentProps\n .extend({\n connections: connectionsProp.optional(),\n variant: diodeVariant.optional().default(\"standard\"),\n standard: z.boolean().optional(),\n schottky: z.boolean().optional(),\n zener: z.boolean().optional(),\n avalanche: z.boolean().optional(),\n photo: z.boolean().optional(),\n tvs: z.boolean().optional(),\n schOrientation: schematicOrientation.optional(),\n })\n .superRefine((data, ctx) => {\n // Check if multiple boolean flags are set directly\n const enabledFlags = [\n data.standard,\n data.schottky,\n data.zener,\n data.avalanche,\n data.photo,\n data.tvs,\n ].filter(Boolean).length\n\n if (enabledFlags > 1) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Exactly one diode variant must be enabled\",\n path: [],\n })\n return z.INVALID\n }\n })\n .transform((data) => {\n // Set all variant flags to false initially\n const result = {\n ...data,\n standard: false,\n schottky: false,\n zener: false,\n avalanche: false,\n photo: false,\n tvs: false,\n }\n\n if (data.standard) result.standard = true\n else if (data.schottky) result.schottky = true\n else if (data.zener) result.zener = true\n else if (data.photo) result.photo = true\n else if (data.tvs) result.tvs = true\n else {\n switch (data.variant) {\n case \"standard\":\n result.standard = true\n break\n case \"schottky\":\n result.schottky = true\n break\n case \"zener\":\n result.zener = true\n break\n case \"avalanche\":\n result.avalanche = true\n break\n case \"photo\":\n result.photo = true\n break\n case \"tvs\":\n result.tvs = true\n break\n default:\n result.standard = true\n }\n }\n\n return result\n })\n\nexport const diodePins = lrPolarPins\nexport type DiodePinLabels = (typeof diodePins)[number]\n\nexport interface DiodeProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n connections?: {\n anode?: string | string[] | readonly string[]\n cathode?: string | string[] | readonly string[]\n pin1?: string | string[] | readonly string[]\n pin2?: string | string[] | readonly string[]\n pos?: string | string[] | readonly string[]\n neg?: string | string[] | readonly string[]\n }\n variant?: \"standard\" | \"schottky\" | \"zener\" | \"avalanche\" | \"photo\" | \"tvs\"\n standard?: boolean\n schottky?: boolean\n zener?: boolean\n avalanche?: boolean\n photo?: boolean\n tvs?: boolean\n schOrientation?: SchematicOrientation\n}\n\nexport type InferredDiodeProps = z.input<typeof diodeProps>\nexpectTypesMatch<InferredDiodeProps, DiodeProps>(true)\n","import { commonComponentProps, lrPolarPins } from \"lib/common/layout\"\nimport { schematicOrientation } from \"lib/common/schematicOrientation\"\nimport { z } from \"zod\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\n\nexport type LedPinLabels = (typeof lrPolarPins)[number]\n\nexport const ledProps = commonComponentProps.extend({\n color: z.string().optional(),\n wavelength: z.string().optional(),\n schDisplayValue: z.string().optional(),\n schOrientation: schematicOrientation.optional(),\n connections: createConnectionsProp(lrPolarPins).optional(),\n laser: z.boolean().optional(),\n})\nexport const ledPins = lrPolarPins\nexport type LedProps = z.input<typeof ledProps>\n","import { ms, frequency } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { connectionTarget } from \"lib/common/connectionsProp\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nimport { z } from \"zod\"\n\nexport interface SwitchProps extends CommonComponentProps {\n type?: \"spst\" | \"spdt\" | \"dpst\" | \"dpdt\"\n isNormallyClosed?: boolean\n spdt?: boolean\n spst?: boolean\n dpst?: boolean\n dpdt?: boolean\n simSwitchFrequency?: number | string\n simCloseAt?: number | string\n simOpenAt?: number | string\n simStartClosed?: boolean\n simStartOpen?: boolean\n connections?: Connections<string>\n}\n\nexport const switchProps = commonComponentProps\n .extend({\n type: z.enum([\"spst\", \"spdt\", \"dpst\", \"dpdt\"]).optional(),\n isNormallyClosed: z.boolean().optional().default(false),\n spst: z.boolean().optional(),\n spdt: z.boolean().optional(),\n dpst: z.boolean().optional(),\n dpdt: z.boolean().optional(),\n simSwitchFrequency: frequency.optional(),\n simCloseAt: ms.optional(),\n simOpenAt: ms.optional(),\n simStartClosed: z.boolean().optional(),\n simStartOpen: z.boolean().optional(),\n connections: z\n .custom<Connections<string>>()\n .pipe(z.record(z.string(), connectionTarget))\n .optional(),\n })\n .transform((props) => {\n const updatedProps: SwitchProps = { ...props }\n\n if (updatedProps.dpdt) {\n updatedProps.type = \"dpdt\"\n } else if (updatedProps.spst) {\n updatedProps.type = \"spst\"\n } else if (updatedProps.spdt) {\n updatedProps.type = \"spdt\"\n } else if (updatedProps.dpst) {\n updatedProps.type = \"dpst\"\n }\n\n switch (updatedProps.type) {\n case \"spdt\":\n updatedProps.spdt = true\n break\n case \"spst\":\n updatedProps.spst = true\n break\n case \"dpst\":\n updatedProps.dpst = true\n break\n case \"dpdt\":\n updatedProps.dpdt = true\n break\n }\n\n return updatedProps\n })\n\nexport type InferredSwitchProps = z.infer<typeof switchProps>\nexpectTypesMatch<SwitchProps, InferredSwitchProps>(true)\n","import { length } from \"circuit-json\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface FabricationNoteTextProps extends PcbLayoutProps {\n text: string\n anchorAlignment?:\n | \"center\"\n | \"top_left\"\n | \"top_right\"\n | \"bottom_left\"\n | \"bottom_right\"\n font?: \"tscircuit2024\"\n fontSize?: string | number\n color?: string\n}\n\nexport const fabricationNoteTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n color: z.string().optional(),\n})\n\nexpectTypesMatch<\n FabricationNoteTextProps,\n z.input<typeof fabricationNoteTextProps>\n>(true)\n\nexport type FabricationNoteTextPropsInput = z.input<\n typeof fabricationNoteTextProps\n>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const fabricationNoteRectProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n width: distance,\n height: distance,\n strokeWidth: distance.optional(),\n isFilled: z.boolean().optional(),\n hasStroke: z.boolean().optional(),\n isStrokeDashed: z.boolean().optional(),\n color: z.string().optional(),\n cornerRadius: distance.optional(),\n })\nexport type FabricationNoteRectProps = z.input<typeof fabricationNoteRectProps>\n","import { length, route_hint_point } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const fabricationNotePathProps = pcbLayoutProps\n .omit({\n pcbLeftEdgeX: true,\n pcbRightEdgeX: true,\n pcbTopEdgeY: true,\n pcbBottomEdgeY: true,\n pcbX: true,\n pcbY: true,\n pcbOffsetX: true,\n pcbOffsetY: true,\n pcbRotation: true,\n })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n color: z.string().optional(),\n })\nexport type FabricationNotePathProps = z.input<typeof fabricationNotePathProps>\n","import { distance, length } from \"circuit-json\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { point, type Point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nconst dimensionTarget = z.union([z.string(), point])\n\nexport interface FabricationNoteDimensionProps\n extends Omit<\n PcbLayoutProps,\n | \"pcbLeftEdgeX\"\n | \"pcbRightEdgeX\"\n | \"pcbTopEdgeY\"\n | \"pcbBottomEdgeY\"\n | \"pcbX\"\n | \"pcbY\"\n | \"pcbOffsetX\"\n | \"pcbOffsetY\"\n | \"pcbRotation\"\n > {\n from: string | Point\n to: string | Point\n text?: string\n offset?: string | number\n font?: \"tscircuit2024\"\n fontSize?: string | number\n color?: string\n arrowSize?: string | number\n units?: \"in\" | \"mm\"\n outerEdgeToEdge?: true\n centerToCenter?: true\n innerEdgeToEdge?: true\n}\n\nexport const fabricationNoteDimensionProps = pcbLayoutProps\n .omit({\n pcbLeftEdgeX: true,\n pcbRightEdgeX: true,\n pcbTopEdgeY: true,\n pcbBottomEdgeY: true,\n pcbX: true,\n pcbY: true,\n pcbOffsetX: true,\n pcbOffsetY: true,\n pcbRotation: true,\n })\n .extend({\n from: dimensionTarget,\n to: dimensionTarget,\n text: z.string().optional(),\n offset: distance.optional(),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n color: z.string().optional(),\n arrowSize: distance.optional(),\n units: z.enum([\"in\", \"mm\"]).optional(),\n outerEdgeToEdge: z.literal(true).optional(),\n centerToCenter: z.literal(true).optional(),\n innerEdgeToEdge: z.literal(true).optional(),\n })\n\nexpectTypesMatch<\n FabricationNoteDimensionProps,\n z.input<typeof fabricationNoteDimensionProps>\n>(true)\n\nexport type FabricationNoteDimensionPropsInput = z.input<\n typeof fabricationNoteDimensionProps\n>\n","import { distance, route_hint_point } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const pcbTraceProps = z.object({\n layer: z.string().optional(),\n thickness: distance.optional(),\n route: z.array(route_hint_point),\n})\nexport type PcbTraceProps = z.input<typeof pcbTraceProps>\n","import { distance, layer_ref, type LayerRefInput } from \"circuit-json\"\nimport { commonLayoutProps, type CommonLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ViaProps extends CommonLayoutProps {\n name?: string\n fromLayer: LayerRefInput\n toLayer: LayerRefInput\n holeDiameter?: number | string\n outerDiameter?: number | string\n connectsTo?: string | string[]\n netIsAssignable?: boolean\n}\n\nexport const viaProps = commonLayoutProps.extend({\n name: z.string().optional(),\n fromLayer: layer_ref,\n toLayer: layer_ref,\n holeDiameter: distance.optional(),\n outerDiameter: distance.optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n netIsAssignable: z.boolean().optional(),\n})\nexport type InferredViaProps = z.input<typeof viaProps>\nexpectTypesMatch<ViaProps, InferredViaProps>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { connectionTarget } from \"lib/common/connectionsProp\"\n\nexport const testpointPins = [\"pin1\"] as const\nexport type TestpointPinLabels = (typeof testpointPins)[number]\n\nconst testpointConnectionsProp = z\n .object({\n pin1: connectionTarget,\n })\n .strict()\n\nexport type TestpointConnections = z.infer<typeof testpointConnectionsProp>\n\nexport interface TestpointProps extends CommonComponentProps {\n /**\n * The footprint variant of the testpoint either a surface pad or through-hole\n */\n footprintVariant?: \"pad\" | \"through_hole\"\n /**\n * The shape of the pad if using a pad variant\n */\n padShape?: \"rect\" | \"circle\"\n /**\n * Diameter of the copper pad (applies to both SMD pads and plated holes)\n */\n padDiameter?: number | string\n /**\n * Diameter of the hole if using a through-hole testpoint\n */\n holeDiameter?: number | string\n /**\n * Width of the pad when padShape is rect\n */\n width?: number | string\n /**\n * Height of the pad when padShape is rect\n */\n height?: number | string\n connections?: TestpointConnections\n}\n\nexport const testpointProps = commonComponentProps\n .extend({\n connections: testpointConnectionsProp.optional(),\n footprintVariant: z.enum([\"pad\", \"through_hole\"]).optional(),\n padShape: z.enum([\"rect\", \"circle\"]).optional().default(\"circle\"),\n padDiameter: distance.optional(),\n holeDiameter: distance.optional(),\n width: distance.optional(),\n height: distance.optional(),\n })\n .refine(\n (props) =>\n props.footprintVariant !== \"through_hole\" ||\n props.holeDiameter !== undefined,\n { message: \"holeDiameter is required for through_hole testpoints\" },\n )\n\nexport type InferredTestpointProps = z.input<typeof testpointProps>\nexpectTypesMatch<TestpointProps, InferredTestpointProps>(true)\n","import { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface BreakoutPointProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n connection: string\n}\n\nexport const breakoutPointProps = pcbLayoutProps\n .omit({ pcbRotation: true, layer: true })\n .extend({\n connection: z.string(),\n })\n\ntype InferredBreakoutPointProps = z.input<typeof breakoutPointProps>\nexpectTypesMatch<BreakoutPointProps, InferredBreakoutPointProps>(true)\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const pcbKeepoutProps = z.union([\n pcbLayoutProps.omit({ pcbRotation: true }).extend({\n shape: z.literal(\"circle\"),\n radius: distance,\n }),\n pcbLayoutProps.extend({\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n }),\n])\nexport type PcbKeepoutProps = z.input<typeof pcbKeepoutProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const courtyardRectProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n width: distance,\n height: distance,\n strokeWidth: distance.optional(),\n isFilled: z.boolean().optional(),\n hasStroke: z.boolean().optional(),\n isStrokeDashed: z.boolean().optional(),\n color: z.string().optional(),\n })\nexport type CourtyardRectProps = z.input<typeof courtyardRectProps>\n","import { length } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { point } from \"lib/common/point\"\nimport { z } from \"zod\"\n\nexport const courtyardOutlineProps = pcbLayoutProps\n .omit({\n pcbLeftEdgeX: true,\n pcbRightEdgeX: true,\n pcbTopEdgeY: true,\n pcbBottomEdgeY: true,\n pcbX: true,\n pcbY: true,\n pcbOffsetX: true,\n pcbOffsetY: true,\n pcbRotation: true,\n })\n .extend({\n outline: z.array(point),\n strokeWidth: length.optional(),\n isClosed: z.boolean().optional(),\n isStrokeDashed: z.boolean().optional(),\n color: z.string().optional(),\n })\nexport type CourtyardOutlineProps = z.input<typeof courtyardOutlineProps>\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { layer_ref, type LayerRefInput } from \"circuit-json\"\n\nexport interface CopperPourProps {\n name?: string\n layer: LayerRefInput\n connectsTo: string\n padMargin?: Distance\n traceMargin?: Distance\n clearance?: Distance\n boardEdgeMargin?: Distance\n cutoutMargin?: Distance\n coveredWithSolderMask?: boolean\n}\n\nexport const copperPourProps = z.object({\n name: z.string().optional(),\n layer: layer_ref,\n connectsTo: z.string(),\n padMargin: distance.optional(),\n traceMargin: distance.optional(),\n clearance: distance.optional(),\n boardEdgeMargin: distance.optional(),\n cutoutMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional().default(true),\n})\n\nexpectTypesMatch<CopperPourProps, z.input<typeof copperPourProps>>(true)\n\nexport type CopperPourPropsInput = z.input<typeof copperPourProps>\n","import { type LayerRef, layer_ref } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface CadAssemblyProps {\n /**\n * The layer that the CAD assembly is designed for. If you set this to \"top\"\n * then it means the children were intended to represent the top layer. If\n * the <chip /> with this assembly is moved to the bottom layer, then the\n * components will be mirrored.\n *\n * Generally, you shouldn't set this except where it can help prevent\n * confusion because you have a complex multi-layer assembly. Default is\n * \"top\" and this is most intuitive.\n */\n originalLayer?: LayerRef\n\n children?: any\n}\n\nexport const cadassemblyProps = z.object({\n originalLayer: layer_ref.default(\"top\").optional(),\n children: z.any().optional(),\n})\n\nexport type CadAssemblyPropsInput = z.input<typeof cadassemblyProps>\ntype InferredCadAssemblyProps = z.infer<typeof cadassemblyProps>\nexpectTypesMatch<InferredCadAssemblyProps, CadAssemblyProps>(true)\n","import { distance, pcbCoordinate, type Distance } from \"lib/common/distance\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { cadModelBase, type CadModelBase } from \"../common/cadModel\"\nimport { z } from \"zod\"\n\nexport interface CadModelProps extends CadModelBase {\n modelUrl: string\n stepUrl?: string\n pcbX?: Distance\n pcbY?: Distance\n pcbLeftEdgeX?: Distance\n pcbRightEdgeX?: Distance\n pcbTopEdgeY?: Distance\n pcbBottomEdgeY?: Distance\n pcbOffsetX?: Distance\n pcbOffsetY?: Distance\n pcbZ?: Distance\n}\n\nconst pcbPosition = z.object({\n pcbX: pcbCoordinate.optional(),\n pcbY: pcbCoordinate.optional(),\n pcbLeftEdgeX: pcbCoordinate.optional(),\n pcbRightEdgeX: pcbCoordinate.optional(),\n pcbTopEdgeY: pcbCoordinate.optional(),\n pcbBottomEdgeY: pcbCoordinate.optional(),\n pcbOffsetX: distance.optional(),\n pcbOffsetY: distance.optional(),\n pcbZ: distance.optional(),\n})\n\nconst cadModelBaseWithUrl = cadModelBase.extend({\n modelUrl: z.string(),\n stepUrl: z.string().optional(),\n})\n\nconst cadModelObject = cadModelBaseWithUrl.merge(pcbPosition)\nexpectTypesMatch<CadModelProps, z.input<typeof cadModelObject>>(true)\n\nexport const cadmodelProps = z.union([z.null(), z.string(), cadModelObject])\n\nexport type CadModelPropsInput = z.input<typeof cadmodelProps>\n","import { voltage } from \"circuit-json\"\nimport { commonComponentProps } from \"lib/common/layout\"\nimport type { z } from \"zod\"\n\nexport const powerSourceProps = commonComponentProps.extend({\n voltage,\n})\nexport type PowerSourceProps = z.input<typeof powerSourceProps>\n","import { frequency, rotation, voltage } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPolarPins,\n} from \"lib/common/layout\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type WaveShape = \"sinewave\" | \"square\" | \"triangle\" | \"sawtooth\"\n\nexport const voltageSourcePinLabels = [\"pin1\", \"pin2\", \"pos\", \"neg\"] as const\nexport type VoltageSourcePinLabels = (typeof voltageSourcePinLabels)[number]\n\nexport interface VoltageSourceProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n voltage?: number | string\n frequency?: number | string\n peakToPeakVoltage?: number | string\n waveShape?: WaveShape\n phase?: number | string\n dutyCycle?: number | string\n connections?: Connections<VoltageSourcePinLabels>\n}\n\nconst percentage = z\n .union([z.string(), z.number()])\n .transform((val) => {\n if (typeof val === \"string\") {\n if (val.endsWith(\"%\")) {\n return parseFloat(val.slice(0, -1)) / 100\n }\n return parseFloat(val)\n }\n return val\n })\n .pipe(\n z\n .number()\n .min(0, \"Duty cycle must be non-negative\")\n .max(1, \"Duty cycle cannot be greater than 100%\"),\n )\n\nexport const voltageSourceProps = commonComponentProps.extend({\n voltage: voltage.optional(),\n frequency: frequency.optional(),\n peakToPeakVoltage: voltage.optional(),\n waveShape: z.enum([\"sinewave\", \"square\", \"triangle\", \"sawtooth\"]).optional(),\n phase: rotation.optional(),\n dutyCycle: percentage.optional(),\n connections: createConnectionsProp(voltageSourcePinLabels).optional(),\n})\n\nexport const voltageSourcePins = lrPolarPins\n\ntype InferredVoltageSourceProps = z.input<typeof voltageSourceProps>\nexpectTypesMatch<VoltageSourceProps, InferredVoltageSourceProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface VoltageProbeProps extends Omit<CommonComponentProps, \"name\"> {\n name?: string\n connectsTo: string\n referenceTo?: string\n color?: string\n}\n\nexport const voltageProbeProps = commonComponentProps\n .omit({ name: true })\n .extend({\n name: z.string().optional(),\n connectsTo: z.string(),\n referenceTo: z.string().optional(),\n color: z.string().optional(),\n })\n\nexpectTypesMatch<VoltageProbeProps, z.input<typeof voltageProbeProps>>(true)\n","import { distance, point, rotation } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Point } from \"lib/common/point\"\nimport type { Distance } from \"lib/common/distance\"\n\nexport const schematicArcProps = z.object({\n center: point,\n radius: distance,\n startAngleDegrees: rotation,\n endAngleDegrees: rotation,\n direction: z\n .enum([\"clockwise\", \"counterclockwise\"])\n .default(\"counterclockwise\"),\n strokeWidth: distance.optional(),\n color: z.string().optional(),\n isDashed: z.boolean().optional().default(false),\n})\n\nexport interface SchematicArcProps {\n center: Point\n radius: Distance\n startAngleDegrees: number | string\n endAngleDegrees: number | string\n direction?: \"clockwise\" | \"counterclockwise\"\n strokeWidth?: Distance\n color?: string\n isDashed?: boolean\n}\n\nexport type InferredSchematicArcProps = z.input<typeof schematicArcProps>\n\nexpectTypesMatch<SchematicArcProps, z.input<typeof schematicArcProps>>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ToolingrailProps {\n children?: any\n}\n\nexport const toolingrailProps = z.object({\n children: z.any().optional(),\n})\n\ntype InferredToolingrailProps = z.input<typeof toolingrailProps>\nexpectTypesMatch<ToolingrailProps, InferredToolingrailProps>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Distance } from \"lib/common/distance\"\n\nexport const schematicBoxProps = z\n .object({\n schX: distance.optional(),\n schY: distance.optional(),\n width: distance.optional(),\n height: distance.optional(),\n overlay: z.array(z.string()).optional(),\n\n padding: distance.optional(),\n paddingLeft: distance.optional(),\n paddingRight: distance.optional(),\n paddingTop: distance.optional(),\n paddingBottom: distance.optional(),\n\n title: z.string().optional(),\n titleAlignment: ninePointAnchor.default(\"top_left\"),\n titleColor: z.string().optional(),\n titleFontSize: distance.optional(),\n titleInside: z.boolean().default(false),\n strokeStyle: z.enum([\"solid\", \"dashed\"]).default(\"solid\"),\n })\n .refine(\n (elm) =>\n (elm.width !== undefined && elm.height !== undefined) ||\n (Array.isArray(elm.overlay) && elm.overlay.length > 0),\n {\n message:\n \"Must provide either both `width` and `height`, or a non-empty `overlay` array.\",\n },\n )\n .refine(\n (elm) =>\n !(\n elm.width !== undefined &&\n elm.height !== undefined &&\n Array.isArray(elm.overlay) &&\n elm.overlay.length > 0\n ),\n {\n message:\n \"Cannot provide both `width`/`height` and `overlay` at the same time.\",\n },\n )\n\nexport interface SchematicBoxProps {\n schX?: Distance\n schY?: Distance\n width?: Distance\n height?: Distance\n overlay?: string[]\n padding?: Distance\n paddingLeft?: Distance\n paddingRight?: Distance\n paddingTop?: Distance\n paddingBottom?: Distance\n title?: string\n titleAlignment?: z.infer<typeof ninePointAnchor>\n titleColor?: string\n titleFontSize?: Distance\n titleInside?: boolean\n strokeStyle?: \"solid\" | \"dashed\"\n}\n\nexport type InferredSchematicBoxProps = z.input<typeof schematicBoxProps>\n\nexpectTypesMatch<SchematicBoxProps, z.input<typeof schematicBoxProps>>(true)\n","import { distance, point } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Point } from \"lib/common/point\"\nimport type { Distance } from \"lib/common/distance\"\n\nexport const schematicCircleProps = z.object({\n center: point,\n radius: distance,\n strokeWidth: distance.optional(),\n color: z.string().optional(),\n isFilled: z.boolean().optional().default(false),\n fillColor: z.string().optional(),\n isDashed: z.boolean().optional().default(false),\n})\n\nexport interface SchematicCircleProps {\n center: Point\n radius: Distance\n strokeWidth?: Distance\n color?: string\n isFilled?: boolean\n fillColor?: string\n isDashed?: boolean\n}\n\nexport type InferredSchematicCircleProps = z.input<typeof schematicCircleProps>\n\nexpectTypesMatch<SchematicCircleProps, z.input<typeof schematicCircleProps>>(\n true,\n)\n","import { distance, point, rotation } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Distance } from \"lib/common/distance\"\n\nexport const schematicRectProps = z.object({\n schX: distance.optional(),\n schY: distance.optional(),\n width: distance,\n height: distance,\n rotation: rotation.default(0),\n strokeWidth: distance.optional(),\n color: z.string().optional(),\n isFilled: z.boolean().optional().default(false),\n fillColor: z.string().optional(),\n isDashed: z.boolean().optional().default(false),\n cornerRadius: distance.optional(),\n})\n\nexport interface SchematicRectProps {\n schX?: Distance\n schY?: Distance\n width: Distance\n height: Distance\n rotation?: number | string\n strokeWidth?: Distance\n color?: string\n isFilled?: boolean\n fillColor?: string\n isDashed?: boolean\n cornerRadius?: Distance\n}\n\nexport type InferredSchematicRectProps = z.input<typeof schematicRectProps>\n\nexpectTypesMatch<SchematicRectProps, z.input<typeof schematicRectProps>>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Distance } from \"lib/common/distance\"\n\nexport const schematicLineProps = z.object({\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n strokeWidth: distance.optional(),\n color: z.string().optional(),\n isDashed: z.boolean().optional().default(false),\n})\n\nexport interface SchematicLineProps {\n x1: Distance\n y1: Distance\n x2: Distance\n y2: Distance\n strokeWidth?: Distance\n color?: string\n isDashed?: boolean\n}\n\nexport type InferredSchematicLineProps = z.input<typeof schematicLineProps>\n\nexpectTypesMatch<SchematicLineProps, z.input<typeof schematicLineProps>>(true)\n","import { distance, rotation } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { fivePointAnchor } from \"lib/common/fivePointAnchor\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Distance } from \"lib/common/distance\"\n\nexport const schematicTextProps = z.object({\n schX: distance.optional(),\n schY: distance.optional(),\n text: z.string(),\n fontSize: z.number().default(1),\n anchor: z\n .union([fivePointAnchor.describe(\"legacy\"), ninePointAnchor])\n .default(\"center\"),\n color: z.string().default(\"#000000\"),\n schRotation: rotation.default(0),\n})\n\nexport interface SchematicTextProps {\n schX?: Distance\n schY?: Distance\n text: string\n fontSize?: number\n anchor?: z.infer<typeof fivePointAnchor> | z.infer<typeof ninePointAnchor>\n color?: string\n schRotation?: number | string\n}\n\nexport type InferredSchematicTextProps = z.input<typeof schematicTextProps>\n\nexpectTypesMatch<SchematicTextProps, z.input<typeof schematicTextProps>>(true)\n","import { z } from \"zod\"\n\nexport const fivePointAnchor = z.enum([\n \"center\",\n \"left\",\n \"right\",\n \"top\",\n \"bottom\",\n])\n","import { point } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Point } from \"lib/common/point\"\n\nexport const schematicPathProps = z.object({\n points: z.array(point),\n isFilled: z.boolean().optional().default(false),\n fillColor: z.enum([\"red\", \"blue\"]).optional(),\n})\n\nexport interface SchematicPathProps {\n points: Point[]\n isFilled?: boolean\n fillColor?: \"red\" | \"blue\"\n}\n\nexport type InferredSchematicPathProps = z.input<typeof schematicPathProps>\n\nexpectTypesMatch<SchematicPathProps, z.input<typeof schematicPathProps>>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const schematicTableProps = z.object({\n schX: distance.optional(),\n schY: distance.optional(),\n children: z.any().optional(),\n cellPadding: distance.optional(),\n borderWidth: distance.optional(),\n anchor: ninePointAnchor.optional(),\n fontSize: distance.optional(),\n})\n\nexport interface SchematicTableProps {\n schX?: number | string\n schY?: number | string\n children?: any\n cellPadding?: number | string\n borderWidth?: number | string\n anchor?: z.infer<typeof ninePointAnchor>\n fontSize?: number | string\n}\n\nexpectTypesMatch<SchematicTableProps, z.input<typeof schematicTableProps>>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const schematicRowProps = z.object({\n children: z.any().optional(),\n height: distance.optional(),\n})\n\nexport interface SchematicRowProps {\n children?: any\n height?: number | string\n}\n\nexpectTypesMatch<SchematicRowProps, z.input<typeof schematicRowProps>>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const schematicCellProps = z.object({\n children: z.string().optional(),\n horizontalAlign: z.enum([\"left\", \"center\", \"right\"]).optional(),\n verticalAlign: z.enum([\"top\", \"middle\", \"bottom\"]).optional(),\n fontSize: distance.optional(),\n rowSpan: z.number().optional(),\n colSpan: z.number().optional(),\n width: distance.optional(),\n text: z.string().optional(),\n})\n\nexport interface SchematicCellProps {\n children?: string\n horizontalAlign?: \"left\" | \"center\" | \"right\"\n verticalAlign?: \"top\" | \"middle\" | \"bottom\"\n fontSize?: number | string\n rowSpan?: number\n colSpan?: number\n width?: number | string\n text?: string\n}\n\nexpectTypesMatch<SchematicCellProps, z.input<typeof schematicCellProps>>(true)\n","import { layer_ref, length } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { z } from \"zod\"\n\nexport const copperTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: ninePointAnchor.default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n layers: z.array(layer_ref).optional(),\n knockout: z.boolean().optional(),\n mirrored: z.boolean().optional(),\n})\nexport type CopperTextProps = z.input<typeof copperTextProps>\n","import { layer_ref, length } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { z } from \"zod\"\n\nexport const silkscreenTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: ninePointAnchor.default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n /**\n * If true, text will knock out underlying silkscreen\n */\n isKnockout: z.boolean().optional(),\n knockoutPadding: length.optional(),\n knockoutPaddingLeft: length.optional(),\n knockoutPaddingRight: length.optional(),\n knockoutPaddingTop: length.optional(),\n knockoutPaddingBottom: length.optional(),\n layers: z.array(layer_ref).optional(),\n})\nexport type SilkscreenTextProps = z.input<typeof silkscreenTextProps>\n","import { length, route_hint_point } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const silkscreenPathProps = pcbLayoutProps\n .omit({\n pcbLeftEdgeX: true,\n pcbRightEdgeX: true,\n pcbTopEdgeY: true,\n pcbBottomEdgeY: true,\n pcbX: true,\n pcbY: true,\n pcbOffsetX: true,\n pcbOffsetY: true,\n pcbRotation: true,\n })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n })\nexport type SilkscreenPathProps = z.input<typeof silkscreenPathProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport type { z } from \"zod\"\n\nexport const silkscreenLineProps = pcbLayoutProps\n .omit({\n pcbX: true,\n pcbY: true,\n pcbOffsetX: true,\n pcbOffsetY: true,\n pcbRotation: true,\n })\n .extend({\n strokeWidth: distance,\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n })\nexport type SilkscreenLineProps = z.input<typeof silkscreenLineProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const silkscreenRectProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n filled: z.boolean().default(true).optional(),\n stroke: z.enum([\"dashed\", \"solid\", \"none\"]).optional(),\n strokeWidth: distance.optional(),\n width: distance,\n height: distance,\n cornerRadius: distance.optional(),\n })\nexport type SilkscreenRectProps = z.input<typeof silkscreenRectProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const silkscreenCircleProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n isFilled: z.boolean().optional(),\n isOutline: z.boolean().optional(),\n strokeWidth: distance.optional(),\n radius: distance,\n })\nexport type SilkscreenCircleProps = z.input<typeof silkscreenCircleProps>\n","import { distance, layer_ref, route_hint_point } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const routeHintPointProps = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n toLayer: layer_ref.optional(),\n})\n\nexport const traceHintProps = z.object({\n for: z\n .string()\n .optional()\n .describe(\n \"Selector for the port you're targeting, not required if you're inside a trace\",\n ),\n order: z.number().optional(),\n offset: route_hint_point.or(routeHintPointProps).optional(),\n offsets: z\n .array(route_hint_point)\n .or(z.array(routeHintPointProps))\n .optional(),\n traceWidth: z.number().optional(),\n})\n\nexport type TraceHintProps = z.input<typeof traceHintProps>\n","import { direction } from \"lib/common/direction\"\nimport { commonLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const portProps = commonLayoutProps.extend({\n name: z.string(),\n pinNumber: z.number().optional(),\n aliases: z.array(z.string()).optional(),\n direction: direction,\n connectsTo: z.string().or(z.array(z.string())).optional(),\n})\nexport type PortProps = z.input<typeof portProps>\n","import { length } from \"circuit-json\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface PcbNoteTextProps extends PcbLayoutProps {\n text: string\n anchorAlignment?:\n | \"center\"\n | \"top_left\"\n | \"top_right\"\n | \"bottom_left\"\n | \"bottom_right\"\n font?: \"tscircuit2024\"\n fontSize?: string | number\n color?: string\n}\n\nexport const pcbNoteTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n color: z.string().optional(),\n})\n\nexpectTypesMatch<PcbNoteTextProps, z.input<typeof pcbNoteTextProps>>(true)\n\nexport type PcbNoteTextPropsInput = z.input<typeof pcbNoteTextProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface PcbNoteRectProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n width: string | number\n height: string | number\n strokeWidth?: string | number\n isFilled?: boolean\n hasStroke?: boolean\n isStrokeDashed?: boolean\n color?: string\n cornerRadius?: string | number\n}\n\nexport const pcbNoteRectProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n width: distance,\n height: distance,\n strokeWidth: distance.optional(),\n isFilled: z.boolean().optional(),\n hasStroke: z.boolean().optional(),\n isStrokeDashed: z.boolean().optional(),\n color: z.string().optional(),\n cornerRadius: distance.optional(),\n })\n\nexpectTypesMatch<PcbNoteRectProps, z.input<typeof pcbNoteRectProps>>(true)\n\nexport type PcbNoteRectPropsInput = z.input<typeof pcbNoteRectProps>\n","import {\n length,\n route_hint_point,\n type RouteHintPointInput,\n} from \"circuit-json\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface PcbNotePathProps\n extends Omit<\n PcbLayoutProps,\n | \"pcbLeftEdgeX\"\n | \"pcbRightEdgeX\"\n | \"pcbTopEdgeY\"\n | \"pcbBottomEdgeY\"\n | \"pcbX\"\n | \"pcbY\"\n | \"pcbOffsetX\"\n | \"pcbOffsetY\"\n | \"pcbRotation\"\n > {\n route: RouteHintPointInput[]\n strokeWidth?: string | number\n color?: string\n}\n\nexport const pcbNotePathProps = pcbLayoutProps\n .omit({\n pcbLeftEdgeX: true,\n pcbRightEdgeX: true,\n pcbTopEdgeY: true,\n pcbBottomEdgeY: true,\n pcbX: true,\n pcbY: true,\n pcbOffsetX: true,\n pcbOffsetY: true,\n pcbRotation: true,\n })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n color: z.string().optional(),\n })\n\nexpectTypesMatch<PcbNotePathProps, z.input<typeof pcbNotePathProps>>(true)\n\nexport type PcbNotePathPropsInput = z.input<typeof pcbNotePathProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface PcbNoteLineProps\n extends Omit<\n PcbLayoutProps,\n | \"pcbLeftEdgeX\"\n | \"pcbRightEdgeX\"\n | \"pcbTopEdgeY\"\n | \"pcbBottomEdgeY\"\n | \"pcbX\"\n | \"pcbY\"\n | \"pcbOffsetX\"\n | \"pcbOffsetY\"\n | \"pcbRotation\"\n > {\n x1: string | number\n y1: string | number\n x2: string | number\n y2: string | number\n strokeWidth?: string | number\n color?: string\n isDashed?: boolean\n}\n\nexport const pcbNoteLineProps = pcbLayoutProps\n .omit({\n pcbLeftEdgeX: true,\n pcbRightEdgeX: true,\n pcbTopEdgeY: true,\n pcbBottomEdgeY: true,\n pcbX: true,\n pcbY: true,\n pcbOffsetX: true,\n pcbOffsetY: true,\n pcbRotation: true,\n })\n .extend({\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n strokeWidth: distance.optional(),\n color: z.string().optional(),\n isDashed: z.boolean().optional(),\n })\n\nexpectTypesMatch<PcbNoteLineProps, z.input<typeof pcbNoteLineProps>>(true)\n\nexport type PcbNoteLinePropsInput = z.input<typeof pcbNoteLineProps>\n","import { distance, length } from \"circuit-json\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { point, type Point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nconst dimensionTarget = z.union([z.string(), point])\n\nexport interface PcbNoteDimensionProps\n extends Omit<\n PcbLayoutProps,\n | \"pcbLeftEdgeX\"\n | \"pcbRightEdgeX\"\n | \"pcbTopEdgeY\"\n | \"pcbBottomEdgeY\"\n | \"pcbX\"\n | \"pcbY\"\n | \"pcbOffsetX\"\n | \"pcbOffsetY\"\n | \"pcbRotation\"\n > {\n from: string | Point\n to: string | Point\n text?: string\n offset?: string | number\n font?: \"tscircuit2024\"\n fontSize?: string | number\n color?: string\n arrowSize?: string | number\n units?: \"in\" | \"mm\"\n outerEdgeToEdge?: true\n centerToCenter?: true\n innerEdgeToEdge?: true\n}\n\nexport const pcbNoteDimensionProps = pcbLayoutProps\n .omit({\n pcbLeftEdgeX: true,\n pcbRightEdgeX: true,\n pcbTopEdgeY: true,\n pcbBottomEdgeY: true,\n pcbX: true,\n pcbY: true,\n pcbOffsetX: true,\n pcbOffsetY: true,\n pcbRotation: true,\n })\n .extend({\n from: dimensionTarget,\n to: dimensionTarget,\n text: z.string().optional(),\n offset: distance.optional(),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n color: z.string().optional(),\n arrowSize: distance.optional(),\n units: z.enum([\"in\", \"mm\"]).optional(),\n outerEdgeToEdge: z.literal(true).optional(),\n centerToCenter: z.literal(true).optional(),\n innerEdgeToEdge: z.literal(true).optional(),\n })\n\nexpectTypesMatch<PcbNoteDimensionProps, z.input<typeof pcbNoteDimensionProps>>(\n true,\n)\n\nexport type PcbNoteDimensionPropsInput = z.input<typeof pcbNoteDimensionProps>\n","import {\n autorouterProp,\n type AutorouterProp,\n type PartsEngine,\n partsEngine,\n} from \"./components/group\"\nimport type { AutocompleteString } from \"./common/autocomplete\"\nimport { expectTypesMatch } from \"./typecheck\"\nimport { z } from \"zod\"\nimport { type CadModelProp, cadModelProp } from \"./common/cadModel\"\nimport { type PcbStyle, pcbStyle } from \"./common/pcbStyle\"\n\nexport interface FootprintLibraryResult {\n footprintCircuitJson: any[]\n cadModel?: CadModelProp\n}\n\nexport interface FootprintFileParserEntry {\n loadFromUrl: (url: string) => Promise<FootprintLibraryResult>\n}\n\nexport type CircuitJson = any[]\n\nexport interface SpiceEngineSimulationResult {\n engineVersionString?: string\n simulationResultCircuitJson: CircuitJson\n}\n\nexport interface SpiceEngine {\n simulate: (spiceString: string) => Promise<SpiceEngineSimulationResult>\n}\n\nexport type SimpleRouteJson = any\n\nexport interface AutorouterInstance {\n run: () => Promise<void>\n getOutputSimpleRouteJson: () => Promise<SimpleRouteJson>\n}\n\nexport interface AutorouterDefinition {\n createAutorouter: (\n simpleRouteJson: SimpleRouteJson,\n opts?: Record<string, unknown>,\n ) => AutorouterInstance | Promise<AutorouterInstance>\n}\n\nexport interface PlatformConfig {\n partsEngine?: PartsEngine\n\n autorouter?: AutorouterProp\n\n autorouterMap?: Record<string, AutorouterDefinition>\n\n // TODO this follows a subset of the localStorage interface\n localCacheEngine?: any\n\n registryApiUrl?: string\n\n cloudAutorouterUrl?: string\n\n projectName?: string\n projectBaseUrl?: string\n version?: string\n url?: string\n printBoardInformationToSilkscreen?: boolean\n includeBoardFiles?: string[]\n snapshotsDir?: string\n\n defaultSpiceEngine?: AutocompleteString<\"spicey\" | \"ngspice\">\n\n pcbDisabled?: boolean\n schematicDisabled?: boolean\n partsEngineDisabled?: boolean\n\n spiceEngineMap?: Record<string, SpiceEngine>\n\n footprintLibraryMap?: Record<\n string,\n | ((\n path: string,\n options?: { resolvedPcbStyle?: PcbStyle },\n ) => Promise<FootprintLibraryResult>)\n | Record<\n string,\n | any[]\n | ((\n path: string,\n options?: { resolvedPcbStyle?: PcbStyle },\n ) => Promise<FootprintLibraryResult>)\n >\n >\n\n footprintFileParserMap?: Record<string, FootprintFileParserEntry>\n\n resolveProjectStaticFileImportUrl?: (path: string) => Promise<string>\n nodeModulesResolver?: (modulePath: string) => Promise<string | null>\n}\n\nconst unvalidatedCircuitJson = z.array(z.any()).describe(\"Circuit JSON\")\nconst footprintLibraryResult = z.object({\n footprintCircuitJson: z.array(z.any()),\n cadModel: cadModelProp.optional(),\n})\nconst pathToCircuitJsonFn = z\n .function()\n .args(z.string())\n .returns(z.promise(footprintLibraryResult))\n .or(\n z\n .function()\n .args(\n z.string(),\n z.object({ resolvedPcbStyle: pcbStyle.optional() }).optional(),\n )\n .returns(z.promise(footprintLibraryResult)),\n )\n .describe(\"A function that takes a path and returns Circuit JSON\")\n\nconst footprintFileParserEntry = z.object({\n loadFromUrl: z\n .function()\n .args(z.string())\n .returns(z.promise(footprintLibraryResult))\n .describe(\n \"A function that takes a footprint file URL and returns Circuit JSON\",\n ),\n})\n\nconst spiceEngineSimulationResult = z.object({\n engineVersionString: z.string().optional(),\n simulationResultCircuitJson: unvalidatedCircuitJson,\n})\n\nconst spiceEngineZod = z.object({\n simulate: z\n .function()\n .args(z.string())\n .returns(z.promise(spiceEngineSimulationResult))\n .describe(\n \"A function that takes a SPICE string and returns a simulation result\",\n ),\n})\n\nconst defaultSpiceEngine = z.custom<AutocompleteString<\"spicey\" | \"ngspice\">>(\n (value) => typeof value === \"string\",\n)\n\nconst autorouterInstance = z.object({\n run: z\n .function()\n .args()\n .returns(z.promise(z.unknown()))\n .describe(\"Run the autorouter\"),\n getOutputSimpleRouteJson: z\n .function()\n .args()\n .returns(z.promise(z.any()))\n .describe(\"Get the resulting SimpleRouteJson\"),\n})\n\nconst autorouterDefinition = z.object({\n createAutorouter: z\n .function()\n .args(z.any(), z.any().optional())\n .returns(z.union([autorouterInstance, z.promise(autorouterInstance)]))\n .describe(\"Create an autorouter instance\"),\n})\n\nexport const platformConfig = z.object({\n partsEngine: partsEngine.optional(),\n autorouter: autorouterProp.optional(),\n autorouterMap: z.record(z.string(), autorouterDefinition).optional(),\n registryApiUrl: z.string().optional(),\n cloudAutorouterUrl: z.string().optional(),\n projectName: z.string().optional(),\n projectBaseUrl: z.string().optional(),\n version: z.string().optional(),\n url: z.string().optional(),\n printBoardInformationToSilkscreen: z.boolean().optional(),\n includeBoardFiles: z\n .array(z.string())\n .describe(\n 'The board files to automatically build with \"tsci build\", defaults to [\"**/*.circuit.tsx\"]. Can be an array of files or globs',\n )\n .optional(),\n snapshotsDir: z\n .string()\n .describe(\n 'The directory where snapshots are stored for \"tsci snapshot\", defaults to \"tests/__snapshots__\"',\n )\n .optional(),\n defaultSpiceEngine: defaultSpiceEngine.optional(),\n localCacheEngine: z.any().optional(),\n pcbDisabled: z.boolean().optional(),\n schematicDisabled: z.boolean().optional(),\n partsEngineDisabled: z.boolean().optional(),\n spiceEngineMap: z.record(z.string(), spiceEngineZod).optional(),\n footprintLibraryMap: z\n .record(\n z.string(),\n z.union([\n pathToCircuitJsonFn,\n z.record(\n z.string(),\n z.union([unvalidatedCircuitJson, pathToCircuitJsonFn]),\n ),\n ]),\n )\n .optional(),\n footprintFileParserMap: z\n .record(z.string(), footprintFileParserEntry)\n .optional(),\n resolveProjectStaticFileImportUrl: z\n .function()\n .args(z.string())\n .returns(z.promise(z.string()))\n .describe(\n \"A function that returns a string URL for static files for the project\",\n )\n .optional(),\n}) as z.ZodType<PlatformConfig>\n\nexpectTypesMatch<PlatformConfig, z.infer<typeof platformConfig>>(true)\n","import { platformConfig, type PlatformConfig } from \"./platformConfig\"\nimport { expectTypesMatch } from \"./typecheck\"\nimport { z } from \"zod\"\n\nexport interface ProjectConfig\n extends Pick<\n PlatformConfig,\n | \"projectName\"\n | \"projectBaseUrl\"\n | \"version\"\n | \"url\"\n | \"printBoardInformationToSilkscreen\"\n | \"includeBoardFiles\"\n | \"snapshotsDir\"\n | \"defaultSpiceEngine\"\n > {}\n\nconst platformConfigObject = platformConfig as z.ZodObject<any>\n\nexport const projectConfig = platformConfigObject.pick({\n projectName: true,\n projectBaseUrl: true,\n version: true,\n url: true,\n printBoardInformationToSilkscreen: true,\n includeBoardFiles: true,\n snapshotsDir: true,\n defaultSpiceEngine: true,\n}) as z.ZodType<ProjectConfig>\n\nexpectTypesMatch<ProjectConfig, z.infer<typeof projectConfig>>(true)\n"],"mappings":";AAYO,IAAM,mBAAmB,CAO9B,aAOS;AAAC;AAIZ,iBAQE,eAAe;AAEjB,iBAQE,iBAAiB;AAEnB,iBAOE,IAAI;AAEN,iBAOE,iCAAiC;;;ACjEnC,SAAS,SAAS;AACX,IAAM,YAAY,EAAE,KAAK,CAAC,MAAM,QAAQ,QAAQ,OAAO,CAAC;AASxD,IAAM,qBAAqB,EAAE,KAAK;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,iBAAuD,IAAI;AAC3D,iBAAyE,IAAI;;;ACnB7E,SAAS,KAAAA,UAAS;AAGX,IAAM,YAAYC,GAAE,MAAMA,GAAE,OAAO,EAAE,GAAGA,GAAE,OAAO,CAAC,CAAC;AAG1D,iBAAuD,IAAI;;;ACN3D;AAAA,EAEE,YAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;;;ACNP,SAAS,YAAY,cAAc,cAAc;AACjD,SAAS,KAAAC,UAAS;AAIlB,IAAM,aAAaA,GAAE,OAAO,EAAE,MAAM,cAAc;AAE3C,IAAM,WAAW;AACjB,IAAM,gBAAgB,WAAW,GAAG,YAAY;;;ADCvD,SAAS,KAAAC,WAAS;;;AETlB,SAAS,KAAAC,UAAS;;;ACAlB,SAAS,YAAAC,iBAAgB;AACzB,SAAS,KAAAC,UAAS;AAEX,IAAM,SAASA,GAAE,OAAO;AAAA,EAC7B,GAAGD;AAAA,EACH,GAAGA;AAAA,EACH,GAAGA;AACL,CAAC;;;ADDM,IAAM,iBAAiBE,GAAE,OAAO;AAAA,EACrC,GAAGA,GAAE,MAAM,CAACA,GAAE,OAAO,GAAGA,GAAE,OAAO,CAAC,CAAC;AAAA,EACnC,GAAGA,GAAE,MAAM,CAACA,GAAE,OAAO,GAAGA,GAAE,OAAO,CAAC,CAAC;AAAA,EACnC,GAAGA,GAAE,MAAM,CAACA,GAAE,OAAO,GAAGA,GAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAgBM,IAAM,eAAeA,GAAE,OAAO;AAAA,EACnC,gBAAgBA,GAAE,OAAO,EAAE,GAAG,cAAc,EAAE,SAAS;AAAA,EACvD,gBAAgB,OAAO,SAAS;AAAA,EAChC,MAAM,OAAO,SAAS;AAAA,EACtB,oBAAoB,SAAS,SAAS;AAAA,EACtC,oBAAoB,SAAS,SAAS;AACxC,CAAC;AAED,iBAA6D,IAAI;AAK1D,IAAM,cAAc,aAAa,OAAO;AAAA,EAC7C,QAAQA,GAAE,OAAO;AACnB,CAAC;AAMM,IAAM,cAAc,aAAa,OAAO;AAAA,EAC7C,QAAQA,GAAE,OAAO;AAAA,EACjB,QAAQA,GAAE,OAAO,EAAE,SAAS;AAC9B,CAAC;AAKM,IAAM,eAAe,aAAa,OAAO;AAAA,EAC9C,SAASA,GAAE,OAAO;AACpB,CAAC;AAKM,IAAM,cAAc,aAAa,OAAO;AAAA,EAC7C,QAAQA,GAAE,OAAO;AACnB,CAAC;AAKM,IAAM,eAAe,aAAa,OAAO;AAAA,EAC9C,SAASA,GAAE,OAAO;AACpB,CAAC;AAKM,IAAM,cAAc,aAAa,OAAO;AAAA,EAC7C,QAAQA,GAAE,OAAO;AACnB,CAAC;AAKM,IAAM,gBAAgB,aAAa,OAAO;AAAA,EAC/C,OAAOA,GAAE,OAAOA,GAAE,IAAI,CAAC;AACzB,CAAC;AAcM,IAAM,eAAeA,GAAE,MAAM;AAAA,EAClCA,GAAE,KAAK;AAAA,EACPA,GAAE,OAAO;AAAA,EACTA,GAAE,OAAqB,CAAC,MAAM;AAC5B,WAAO,KAAK,OAAO,MAAM,YAAY,UAAU,KAAK,WAAW;AAAA,EACjE,CAAC;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGD,iBAAqD,IAAI;;;AEjHzD,SAAS,KAAAC,UAAS;AAsDX,IAAM,gBAAgBC,GAAE,OAAsB,CAAC,MAAM,IAAI;;;ACxDhE,SAAS,YAAAC,iBAAgB;AAEzB,SAAS,KAAAC,UAAS;AAiBX,IAAM,WAAWA,GAAE,OAAO;AAAA,EAC/B,oBAAoBC,UAAS,SAAS;AAAA,EACtC,gBAAgBA,UAAS,SAAS;AAAA,EAClC,iBAAiBA,UAAS,SAAS;AAAA,EACnC,wBAAwBD,GACrB,MAAM;AAAA,IACLA,GAAE,KAAK,CAAC,YAAY,WAAW,MAAM,CAAC;AAAA,IACtCA,GAAE,OAAO;AAAA,MACP,SAASA,GAAE,OAAO;AAAA,MAClB,SAASA,GAAE,OAAO;AAAA,IACpB,CAAC;AAAA,EACH,CAAC,EACA,SAAS;AAAA,EACZ,0BAA0BA,GAAE,KAAK,CAAC,UAAU,WAAW,SAAS,CAAC,EAAE,SAAS;AAC9E,CAAC;AAED,iBAAqD,IAAI;;;ACnCzD,SAAS,YAAAE,iBAAgB;AAEzB,SAAS,KAAAC,UAAS;AAOX,IAAM,WAAWA,GAAE,OAAO;AAAA,EAC/B,oBAAoBA,GACjB,MAAM,CAACA,GAAE,KAAK,CAAC,MAAM,MAAM,IAAI,CAAC,GAAGC,SAAQ,CAAC,EAC5C,SAAS;AAAA,EACZ,6BAA6BD,GAAE,KAAK,CAAC,YAAY,MAAM,CAAC,EAAE,SAAS;AACrE,CAAC;AAED,iBAAqD,IAAI;;;ACfzD,SAAS,KAAAE,UAAS;AAIX,IAAM,aAAaA,GAAE,OAAmB,CAAC,MAAM,IAAI;;;AP+GnD,IAAM,iBAAiBC,IAAE,OAAO;AAAA,EACrC,MAAM,cAAc,SAAS;AAAA,EAC7B,MAAM,cAAc,SAAS;AAAA,EAC7B,cAAc,cAAc,SAAS;AAAA,EACrC,eAAe,cAAc,SAAS;AAAA,EACtC,aAAa,cAAc,SAAS;AAAA,EACpC,gBAAgB,cAAc,SAAS;AAAA,EACvC,YAAYC,UAAS,SAAS;AAAA,EAC9B,YAAYA,UAAS,SAAS;AAAA,EAC9B,aAAa,SAAS,SAAS;AAAA,EAC/B,mBAAmBD,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,iBAAiBA,IACd,KAAK;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC,EACA,SAAS;AAAA,EACZ,OAAO,UAAU,SAAS;AAAA,EAC1B,cAAcC,UAAS,SAAS;AAAA,EAChC,gBAAgBA,UAAS,SAAS;AAAA,EAClC,iBAAiBA,UAAS,SAAS;AAAA,EACnC,eAAeA,UAAS,SAAS;AAAA,EACjC,YAAYA,UAAS,SAAS;AAAA,EAC9B,YAAYA,UAAS,SAAS;AAAA,EAC9B,UAAU,SAAS,SAAS;AAAA,EAC5B,aAAaD,IAAE,QAAQ,EAAE,SAAS;AAAA,EAClC,UAAUA,IAAE,QAAQ,EAAE,SAAS;AACjC,CAAC;AAED,iBAAyD,IAAI;AAEtD,IAAM,oBAAoBA,IAAE,OAAO;AAAA,EACxC,MAAM,cAAc,SAAS;AAAA,EAC7B,MAAM,cAAc,SAAS;AAAA,EAC7B,cAAc,cAAc,SAAS;AAAA,EACrC,eAAe,cAAc,SAAS;AAAA,EACtC,aAAa,cAAc,SAAS;AAAA,EACpC,gBAAgB,cAAc,SAAS;AAAA,EACvC,YAAYC,UAAS,SAAS;AAAA,EAC9B,YAAYA,UAAS,SAAS;AAAA,EAC9B,aAAa,SAAS,SAAS;AAAA,EAC/B,mBAAmBD,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,iBAAiBA,IACd,KAAK;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC,EACA,SAAS;AAAA,EACZ,cAAcC,UAAS,SAAS;AAAA,EAChC,gBAAgBA,UAAS,SAAS;AAAA,EAClC,iBAAiBA,UAAS,SAAS;AAAA,EACnC,eAAeA,UAAS,SAAS;AAAA,EACjC,YAAYA,UAAS,SAAS;AAAA,EAC9B,YAAYA,UAAS,SAAS;AAAA,EAC9B,UAAU,SAAS,SAAS;AAAA,EAC5B,cAAcA,UAAS,SAAS;AAAA,EAChC,gBAAgBA,UAAS,SAAS;AAAA,EAClC,iBAAiBA,UAAS,SAAS;AAAA,EACnC,eAAeA,UAAS,SAAS;AAAA,EACjC,YAAYA,UAAS,SAAS;AAAA,EAC9B,YAAYA,UAAS,SAAS;AAAA,EAC9B,MAAMA,UAAS,SAAS;AAAA,EACxB,MAAMA,UAAS,SAAS;AAAA,EACxB,aAAa,SAAS,SAAS;AAAA,EAC/B,OAAO,UAAU,SAAS;AAAA,EAC1B,WAAW,cAAc,SAAS;AAAA,EAClC,QAAQ,WAAW,SAAS;AAAA,EAC5B,UAAU,SAAS,SAAS;AAAA,EAC5B,UAAUD,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,aAAaA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAClC,aAAaA,IAAE,QAAQ,EAAE,SAAS;AACpC,CAAC;AAGD,iBAA+D,IAAI;AAa5D,IAAM,gBAAgBA,IAAE,OAAO;AAAA,EACpC,qBAAqBA,IAAE,OAAO,eAAeA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAC7E,CAAC;AAED,iBAA+D,IAAI;AAe5D,IAAM,kBAAkBA,IAAE,OAAO;AAAA,EACtC,eAAeA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,eAAeA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,gBAAgBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,gBAAgBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,iBAAiBA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EAC5D,iBAAiBA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EAC5D,cAAcA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACnC,sBAAsBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC3C,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACpC,iBAAiBA,IAAE,QAAQ,EAAE,SAAS;AACxC,CAAC;AAED,iBAAmE,IAAI;AAwBhE,IAAM,uBAAuB,kBACjC,MAAM,aAAa,EACnB,OAAO;AAAA,EACN,KAAKA,IAAE,IAAI,EAAE,SAAS;AAAA,EACtB,MAAMA,IAAE,OAAO;AAAA,EACf,UAAU,aAAa,SAAS;AAAA,EAChC,UAAUA,IAAE,IAAI,EAAE,SAAS;AAAA,EAC3B,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACjC,uBAAuBA,IACpB,QAAQ,EACR,SAAS,EACT;AAAA,IACC;AAAA,EACF;AAAA,EACF,wBAAwBA,IACrB,QAAQ,EACR,SAAS,EACT;AAAA,IACC;AAAA,EACF;AAAA,EACF,eAAeA,IAAE,OAAOA,IAAE,OAAO,GAAG,eAAe,EAAE,SAAS;AAChE,CAAC;AAGH,iBAAqE,IAAI;AAElE,IAAM,iBAAiB;AAGvB,IAAM,SAAS,CAAC,QAAQ,QAAQ,QAAQ,OAAO;AAC/C,IAAM,cAAc;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,uBAAuBC,UAAS,GAAGD,IAAE,KAAK,CAAC,MAAM,MAAM,IAAI,CAAC,CAAC;;;AQ/SnE,IAAM,4BAA4B;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ACxBA,SAAS,KAAAE,WAAS;AAEX,IAAM,uBAAuBA,IACjC,KAAK;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC,EACA;AAAA,EACC;AACF;AAcF;AAAA,EACE;AACF;;;ACjCA,SAAS,KAAAC,WAAS;AAiDX,IAAM,4BAA4BA,IAAE,OAAO;AAAA,EAChD,MAAMA,IAAE,MAAMA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,CAAC;AAAA,EAC/C,WAAWA,IAAE,MAAM;AAAA,IACjBA,IAAE,QAAQ,eAAe;AAAA,IACzBA,IAAE,QAAQ,eAAe;AAAA,IACzBA,IAAE,QAAQ,eAAe;AAAA,IACzBA,IAAE,QAAQ,eAAe;AAAA,EAC3B,CAAC;AACH,CAAC;AAKM,IAAM,2BAA2BA,IAAE,OAAO;AAAA,EAC/C,UAAUA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,+BAA+B;AAAA,EACxE,SAASA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,8BAA8B;AAAA,EACtE,WAAWA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,gCAAgC;AAAA,EAC1E,YAAYA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,iCAAiC;AAAA,EAC5E,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;AAAA,EACnC,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACpC,UAAU,0BAA0B,SAAS;AAAA,EAC7C,WAAW,0BAA0B,SAAS;AAAA,EAC9C,SAAS,0BAA0B,SAAS;AAAA,EAC5C,YAAY,0BAA0B,SAAS;AACjD,CAAC;AAEM,IAAM,0BAA0B;AAEvC,iBAGE,IAAI;;;ACnFN,SAAS,YAAAC,iBAAgB;AAEzB,SAAS,KAAAC,WAAS;AAqBX,IAAM,oBAAoBA,IAAE;AAAA,EACjCA,IAAE,OAAO;AAAA,IACP,YAAYC,UAAS,SAAS;AAAA,IAC9B,aAAaA,UAAS,SAAS;AAAA,IAC/B,WAAWA,UAAS,SAAS;AAAA,IAC7B,cAAcA,UAAS,SAAS;AAAA,IAEhC,YAAYA,UAAS,SAAS;AAAA,IAC9B,aAAaA,UAAS,SAAS;AAAA,IAC/B,WAAWA,UAAS,SAAS;AAAA,IAC7B,cAAcA,UAAS,SAAS;AAAA,EAClC,CAAC;AACH;AAEA,iBAAuE,IAAI;;;ACrC3E,SAAS,KAAAC,WAAS;AAMX,IAAM,oBAAoBA,IAAE,OAAO,EAAE,MAAM,iBAAiB;;;ACNnE,SAAS,YAAAC,iBAAgB;AACzB,SAAS,KAAAC,WAAS;AAEX,IAAM,sBAAsBD,UAChC,GAAGC,IAAE,KAAK,CAAC,MAAM,MAAM,WAAW,IAAI,CAAC,CAAC,EACxC,SAAS,wDAAwD;;;ACLpE,SAAS,KAAAC,WAAS;AAEX,IAAM,kBAAkBA,IAAE,KAAK;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;;;ACZD,SAAS,YAAAC,iBAAgB;AACzB,SAAS,KAAAC,WAAS;AAEX,IAAM,QAAQA,IAAE,OAAO;AAAA,EAC5B,GAAGD;AAAA,EACH,GAAGA;AACL,CAAC;;;ACDD,SAAS,KAAAE,WAAS;;;ACLlB,SAAoB,UAAAC,SAAQ,YAAAC,iBAAgB;AAY5C,SAAS,KAAAC,WAAS;;;ACXlB,SAAS,KAAAC,WAAS;AAEX,IAAM,yBAAyBA,IAAE,OAAO;AAAA,EAC7C,eAAeA,IAAE,OAAO;AAAA,EACxB,aAAaA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAClC,YAAYA,IAAE,OAAO;AACvB,CAAC;AAUD;AAAA,EACE;AACF;;;ACnBA,SAAS,KAAAC,WAAS;AAOX,IAAM,oCAAoC,uBAAuB,OAAO;AAAA,EAC7E,qBAAqBC,IAClB,QAAQ,yBAAyB,EACjC,SAAS,YAAY;AAAA,EACxB,iBAAiBA,IAAE,QAAQ,6BAA6B;AAAA,EACxD,kBAAkBA,IAAE,OAAO;AAAA,EAC3B,iBAAiBA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,GAAG,GAAGA,IAAE,OAAO,EAAE,CAAC;AAAA,EAC1D,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,GAAG,GAAGA,IAAE,OAAO,EAAE,CAAC;AACvD,CAAC;AAGM,IAAM,gCAAgC;AAe7C,iBAGE,IAAI;;;ACpCN,SAAS,KAAAC,WAAS;AAOX,IAAM,wBAAwB,uBAAuB,OAAO;AAAA,EACjE,qBAAqBC,IAAE,QAAQ,iBAAiB,EAAE,SAAS,YAAY;AAAA,EACvE,iBAAiBA,IAAE,QAAQ,qBAAqB,EAAE,SAAS;AAAA,EAC3D,aAAaA,IAAE,OAAO;AAAA,EACtB,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,OAAOA,IAAE;AAAA,IACPA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,GAAG,GAAGA,IAAE,OAAO,GAAG,KAAKA,IAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAAA,EACxE;AACF,CAAC;AAaD;AAAA,EACE;AACF;;;AC9BA,SAAS,KAAAC,WAAS;AAOX,IAAM,0CACX,uBAAuB,OAAO;AAAA,EAC5B,iBAAiBC,IAAE,QAAQ,mCAAmC;AAAA,EAC9D,wBAAwBA,IAAE,OAAO;AAAA,EACjC,iBAAiBA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,GAAG,GAAGA,IAAE,OAAO,EAAE,CAAC;AAAA,EAC1D,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,GAAG,GAAGA,IAAE,OAAO,EAAE,CAAC;AACvD,CAAC;AAcH,iBAGE,IAAI;;;AC9BN,SAAS,KAAAC,WAAS;AAOX,IAAM,gCAAgC,uBAAuB,OAAO;AAAA,EACzE,iBAAiBC,IAAE,QAAQ,yBAAyB;AAAA,EACpD,cAAcA,IAAE,OAAO;AAAA,EACvB,iBAAiBA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,GAAG,GAAGA,IAAE,OAAO,EAAE,CAAC;AAAA,EAC1D,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,GAAG,GAAGA,IAAE,OAAO,EAAE,CAAC;AACvD,CAAC;AAaD,iBAGE,IAAI;;;AC5BN,SAAS,KAAAC,WAAS;AAOX,IAAM,sCACX,uBAAuB,OAAO;AAAA,EAC5B,iBAAiBC,IAAE,QAAQ,+BAA+B;AAAA,EAC1D,oBAAoBA,IAAE,OAAO;AAAA,EAC7B,iBAAiBA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,GAAG,GAAGA,IAAE,OAAO,EAAE,CAAC;AAAA,EAC1D,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,GAAG,GAAGA,IAAE,OAAO,EAAE,CAAC;AACvD,CAAC;AAaH,iBAGE,IAAI;;;AC7BN,SAAS,KAAAC,WAAS;AAoBX,IAAM,oBAAoBC,IAAE,MAAM;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAKD,iBAA2D,IAAI;;;AC7B/D,SAAS,KAAAC,WAAS;;;ACAlB,SAAS,KAAAC,WAAS;AAClB,SAAS,SAAAC,cAAyB;AAG3B,IAAM,uBAAuBC,IAAE,OAAO;AAAA,EAC3C,UAAUA,IAAE,OAAO;AAAA,EACnB,aAAaA,IACV,OAAO,EACP,SAAS,EACT,QAAQ,cAAc,EACtB,SAAS,qCAAqC;AAAA,EACjD,QAAQC;AACV,CAAC;AAWD,iBAAiE,IAAI;;;ACvBrE,SAAS,KAAAC,WAAS;AAClB,SAAoB,wBAA6C;AAG1D,IAAM,oBAAoBC,IAAE,OAAO;AAAA,EACxC,mBAAmBA,IAAE,OAAO;AAAA,EAC5B,SAASA,IAAE,MAAM,gBAAgB;AACnC,CAAC;AASD,iBAAqE,IAAI;;;AChBzE,SAAS,KAAAC,WAAS;AAClB,SAAS,SAAAC,cAAyB;AAG3B,IAAM,6BAA6BC,IAAE,OAAO;AAAA,EACjD,UAAUA,IAAE,OAAO;AAAA,EACnB,aAAaA,IACV,OAAO,EACP,SAAS,EACT,QAAQ,cAAc,EACtB,SAAS,qCAAqC;AAAA,EACjD,QAAQC;AACV,CAAC;AAeD;AAAA,EACE;AACF;;;AHhBO,IAAM,oBAAoBC,IAAE,OAAO;AAAA,EACxC,gBAAgBA,IAAE,MAAM,oBAAoB,EAAE,SAAS;AAAA,EACvD,oBAAoBA,IAAE,MAAM,iBAAiB,EAAE,SAAS;AAAA,EACxD,sBAAsBA,IAAE,MAAM,0BAA0B,EAAE,SAAS;AACrE,CAAC;AAUD,iBAAqE,IAAI;;;AI3BzE,SAAS,KAAAC,WAAS;AAEX,IAAM,mBAAmBA,IAC7B,OAAO,EACP,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EACjC,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC;AAElB,IAAM,wBAAwB,CACnC,WACG;AACH,SAAOA,IAAE,OAAOA,IAAE,KAAK,MAAM,GAAG,gBAAgB;AAClD;;;AZmBO,IAAM,eAAeC,IAAE,OAAO;AAAA,EACnC,YAAYA,IACT,KAAK,CAAC,QAAQ,QAAQ,eAAe,YAAY,MAAM,CAAC,EACxD,SAAS;AAAA,EACZ,UAAUA,IAAE,KAAK,CAAC,YAAY,UAAU,CAAC,EAAE,SAAS;AAAA,EAEpD,MAAMA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC3B,UAAUA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC7C,UAAUA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC7C,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACtC,qBAAqBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzC,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,EAClC,SAASA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC5C,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC/C,eAAeA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAElD,MAAMA,IAAE,QAAQ,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC1C,eAAeA,IAAE,KAAK,CAAC,OAAO,QAAQ,CAAC,EAAE,SAAS;AAAA,EAClD,YAAYA,IAAE,KAAK,CAAC,SAAS,UAAU,OAAO,SAAS,CAAC,EAAE,SAAS;AAAA,EACnE,gBAAgBA,IACb,KAAK;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC,EACA,SAAS;AAAA,EACZ,SAASA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,YAAYA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACjC,KAAKA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAExC,MAAMA,IACH,QAAQ,EACR,SAAS,EACT,SAAS,0DAA0D;AAAA,EACtE,mBAAmBA,IAChB,KAAK;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC,EACA,SAAS;AAAA,EACZ,uBAAuBA,IACpB,KAAK,CAAC,mCAAmC,CAAC,EAC1C,SAAS;AAAA,EAEZ,SAASC,QAAO,SAAS;AAAA,EACzB,aAAaA,QAAO,SAAS;AAAA,EAC7B,cAAcA,QAAO,SAAS;AAAA,EAC9B,YAAYA,QAAO,SAAS;AAAA,EAC5B,eAAeA,QAAO,SAAS;AAAA,EAC/B,UAAUA,QAAO,SAAS;AAAA,EAC1B,UAAUA,QAAO,SAAS;AAAA,EAE1B,OAAOA,QAAO,SAAS;AAAA,EACvB,QAAQA,QAAO,SAAS;AAAA,EAExB,YAAYD,IAAE,QAAQ,EAAE,SAAS;AAAA,EACjC,oBAAoBA,IAAE,IAAI,EAAE,SAAS;AACvC,CAAC;AAqDD,iBAA6D,IAAI;AAQ1D,IAAM,SAASA,IAAE,OAAO;AAAA,EAC7B,aAAaC,QAAO,SAAS;AAAA,EAC7B,QAAQD,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC7B,OAAOA,IAAE,QAAQ,EAAE,SAAS;AAC9B,CAAC;AAqLD,IAAM,iCAAiCA,IAAE,OAEvC,CAAC,UAAU,OAAO,UAAU,QAAQ;AAE/B,IAAM,mBAAmBA,IAAE,OAAO;AAAA,EACvC,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,aAAaA,IAAE,KAAK,CAAC,cAAc,cAAc,CAAC,EAAE,SAAS;AAAA,EAC7D,YAAYA,IAAE,KAAK,CAAC,OAAO,gBAAgB,CAAC,EAAE,SAAS;AAAA,EACvD,oBAAoBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACzC,OAAOA,IAAE,OAAsB,CAAC,MAAM,IAAI,EAAE,SAAS;AAAA,EACrD,gBAAgBC,QAAO,SAAS;AAAA,EAChC,WAAWD,IACR,KAAK,CAAC,oBAAoB,cAAc,kBAAkB,CAAC,EAC3D,SAAS;AAAA,EACZ,aAAaA,IACV;AAAA,IACC,CAAC,MAAM,OAAO,MAAM,cAAc,MAAM;AAAA,EAC1C,EACC,SAAS;AAAA,EACZ,QAAQA,IACL,KAAK;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC,EACA,SAAS;AAAA,EACZ,OAAOA,IAAE,QAAQ,EAAE,SAAS;AAC9B,CAAC;AAEM,IAAM,mBAAmBA,IAAE,MAAM;AAAA,EACtCA,IAAE,QAAQ,kBAAkB;AAAA,EAC5BA,IAAE,QAAQ,YAAY;AAAA,EACtBA,IAAE,QAAQ,MAAM;AAAA,EAChBA,IAAE,QAAQ,YAAY;AAAA,EACtBA,IAAE,QAAQ,YAAY;AAAA,EACtBA,IAAE,QAAQ,aAAa;AAAA,EACvBA,IAAE,QAAQ,cAAc;AAAA;AAAA,EACxBA,IAAE,QAAQ,kBAAkB;AAAA,EAC5BA,IAAE,QAAQ,YAAY;AAAA,EACtBA,IAAE,QAAQ,YAAY;AACxB,CAAC;AAED,IAAM,mBAAmBA,IAAE,OAAO;AAI3B,IAAM,iBAA4CA,IAAE,MAAM;AAAA,EAC/D;AAAA,EACA;AAAA,EACA;AACF,CAAC;AA0DM,IAAM,iBAAiB,kBAAkB,OAAO;AAAA,EACrD,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,UAAUA,IAAE,IAAI,EAAE,SAAS;AAAA,EAC3B,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,KAAKA,IAAE,IAAI,EAAE,SAAS;AAAA,EACtB,oBAAoBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACzC,aAAaA,IAAE,OAAOA,IAAE,OAAO,GAAG,iBAAiB,SAAS,CAAC,EAAE,SAAS;AAAA,EACxE,mBAAmB,wBAAwB,SAAS;AAAA,EACpD,eAAeC,QAAO,SAAS;AAAA,EAC/B,aAAa,kBAAkB,SAAS;AAAA,EAExC,GAAG,aAAa;AAAA,EAChB,MAAM,aAAa,MAAM,KAAK,SAAS,yBAAyB;AAAA,EAChE,MAAM,aAAa,MAAM,KAAK,SAAS,yBAAyB;AAAA,EAChE,SAASD,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,aAAaA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAChD,aAAaA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAChD,qBAAqBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzC,wBAAwBA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC/C,eAAeA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAClD,kBAAkBA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACrD,SAASA,IAAE,QAAQ,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC7C,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC/C,kBAAkBA,IAAE,KAAK,CAAC,OAAO,QAAQ,CAAC,EAAE,SAAS;AAAA,EACrD,eAAeA,IAAE,KAAK,CAAC,SAAS,UAAU,OAAO,SAAS,CAAC,EAAE,SAAS;AAAA,EACtE,mBAAmBA,IAChB,KAAK;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC,EACA,SAAS;AAAA,EACZ,YAAYA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACjC,eAAeA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,QAAQA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC3C,SAASA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAE/C,SAASA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,aAAaA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAChD,aAAaA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAChD,qBAAqBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzC,wBAAwBA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC/C,eAAeA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAClD,kBAAkBA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAErD,SAASA,IAAE,QAAQ,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC7C,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC/C,kBAAkBA,IAAE,KAAK,CAAC,OAAO,QAAQ,CAAC,EAAE,SAAS;AAAA,EACrD,eAAeA,IAAE,KAAK,CAAC,SAAS,UAAU,OAAO,SAAS,CAAC,EAAE,SAAS;AAAA,EACtE,mBAAmBA,IAChB,KAAK;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC,EACA,SAAS;AAAA,EACZ,YAAYA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACjC,eAAeA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,QAAQA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC3C,SAASA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,eAAeA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,UAAUC,QAAO,SAAS;AAAA,EAC1B,WAAWA,QAAO,SAAS;AAAA,EAC3B,eAAeA,QAAO,SAAS;AAAA,EAC/B,UAAUA,QAAO,SAAS;AAAA,EAC1B,WAAWA,QAAO,SAAS;AAAA,EAC3B,WAAW,aAAa,SAAS;AAAA,EACjC,WAAW,aAAa,SAAS;AAAA,EACjC,YAAY,OAAO,SAAS,EAAE,SAAS;AAAA,EACvC,QAAQ,OAAO,SAAS,EAAE,SAAS;AAAA,EACnC,YAAYA,QAAO,SAAS;AAAA,EAC5B,gBAAgBA,QAAO,SAAS;AAAA,EAChC,iBAAiBA,QAAO,SAAS;AAAA,EACjC,eAAeA,QAAO,SAAS;AAAA,EAC/B,kBAAkBA,QAAO,SAAS;AAAA,EAClC,YAAYA,QAAO,SAAS;AAAA,EAC5B,gBAAgBA,QAAO,SAAS;AAAA,EAChC,iBAAiBA,QAAO,SAAS;AAAA,EACjC,eAAeA,QAAO,SAAS;AAAA,EAC/B,kBAAkBA,QAAO,SAAS;AAAA,EAClC,oBAAoB,+BAA+B,SAAS;AAC9D,CAAC;AAEM,IAAM,cAAcD,IAAE,OAAoB,CAAC,MAAM,cAAc,CAAC;AAEhE,IAAM,uBAAuB,eAAe,OAAO;AAAA,EACxD,aAAa,kBAAkB,SAAS;AAAA,EACxC,sBAAsBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC3C,0BAA0BA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC/C,qBAAqBE,UAAS,SAAS;AAAA,EACvC,iBAAiBF,IAAE,QAAQ,EAAE,SAAS;AAAA,EACtC,aAAaA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAClC,mBAAmBC,QAAO,SAAS;AAAA,EACnC,eAAeA,QAAO,SAAS;AAAA,EAC/B,aAAa,YAAY,SAAS;AAAA,EAClC,eAAeD,IAAE,OAAsB,CAAC,MAAM,IAAI,EAAE,SAAS;AAAA,EAC7D,YAAY,eAAe,SAAS;AAAA,EACpC,QAAQA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC7B,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,OAAOE,UAAS,SAAS;AAAA,EACzB,QAAQA,UAAS,SAAS;AAAA,EAC1B,SAASF,IAAE,MAAM,KAAK,EAAE,SAAS;AAAA,EACjC,gBAAgBE,UAAS,SAAS;AAAA,EAClC,gBAAgBA,UAAS,SAAS;AAAA,EAClC,aAAaF,IAAE,MAAMA,IAAE,IAAI,CAAC,EAAE,SAAS;AACzC,CAAC;AAEM,IAAM,+BAA+B,qBAAqB,OAAO;AAAA,EACtE,YAAYA,IAAE,QAAQ,IAAI;AAC5B,CAAC;AAEM,IAAM,aAAaA,IAAE,mBAAmB,cAAc;AAAA,EAC3D,eAAe,OAAO,EAAE,YAAYA,IAAE,QAAQ,KAAK,EAAE,SAAS,EAAE,CAAC;AAAA,EACjE;AACF,CAAC;AAOD,iBAAiE,IAAI;AAErE,iBAAyD,IAAI;AAC7D,iBAGE,IAAI;AAGN,iBAAiD,IAAI;;;AD9jBrD,IAAM,aAAaG,IAAE,OAAmB,CAAC,UAAU,OAAO,UAAU,QAAQ;AA+BrE,IAAM,aAAa,qBACvB,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,UAAUA,IAAE,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,QAAQ,KAAK;AAAA,EAC9C,QAAQA,IACL,MAAM;AAAA,IACLA,IAAE,QAAQ,CAAC;AAAA,IACXA,IAAE,QAAQ,CAAC;AAAA,IACXA,IAAE,QAAQ,CAAC;AAAA,IACXA,IAAE,QAAQ,CAAC;AAAA,IACXA,IAAE,QAAQ,CAAC;AAAA,EACb,CAAC,EACA,QAAQ,CAAC;AAAA,EACZ,cAAc,SAAS,SAAS;AAAA,EAChC,WAAW,SAAS,SAAS;AAAA,EAC7B,qBAAqB,MAAM,SAAS;AAAA,EACpC,iBAAiB,gBAAgB,SAAS;AAAA,EAC1C,sBAAsB,gBACnB,SAAS,EACT,SAAS,4CAA4C;AAAA,EACxD,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,iBAAiB,WAAW,SAAS;AAAA,EACrC,oBAAoB,WAAW,SAAS;AAAA,EACxC,uBAAuB,WAAW,SAAS;AAAA,EAC3C,iBAAiB,WAAW,SAAS;AAAA,EACrC,oBAAoB,WAAW,SAAS;AAAA,EACxC,uBAAuB,WAAW,SAAS;AAAA,EAC3C,qBAAqBA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EACzD,mBAAmBA,IAAE,QAAQ,EAAE,SAAS;AAC1C,CAAC;AAGH,iBAAiD,IAAI;;;AcnFrD,SAAS,KAAAC,WAAS;AAgCX,IAAM,aAAa,eACvB,KAAK;AAAA,EACJ,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,UAAU;AACZ,CAAC,EACA,OAAO;AAAA,EACN,OAAO,SAAS,SAAS;AAAA,EACzB,QAAQ,SAAS,SAAS;AAAA,EAC1B,UAAUC,IAAE,IAAI,EAAE,SAAS;AAAA,EAC3B,iBAAiB,gBAAgB,SAAS;AAAA,EAC1C,cAAcA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACnC,oBAAoBA,IAAE,KAAK,CAAC,eAAe,MAAM,CAAC,EAAE,SAAS;AAAA,EAC7D,UAAU,SAAS,SAAS;AAAA,EAC5B,YAAYA,IAAE,KAAK,CAAC,QAAQ,QAAQ,MAAM,CAAC,EAAE,SAAS;AAAA,EACtD,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzB,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzB,WAAW,SAAS,SAAS;AAAA,EAC7B,YAAY,SAAS,SAAS;AAAA,EAC9B,UAAU,SAAS,SAAS;AAAA,EAC5B,WAAW,SAAS,SAAS;AAAA,EAC7B,YAAYA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACjC,aAAa,SAAS,SAAS;AAAA,EAC/B,iBAAiB,SAAS,SAAS;AAAA,EACnC,kBAAkB,SAAS,SAAS;AAAA,EACpC,gBAAgB,SAAS,SAAS;AAAA,EAClC,mBAAmB,SAAS,SAAS;AACvC,CAAC;AAGH,iBAAiD,IAAI;;;ACjErD,OAAkB;AAKX,IAAM,gBAAgB;AAG7B,iBAAuD,IAAI;;;ACT3D,SAAS,YAAAC,kBAAgB;AAGzB,OAAkB;AAYX,IAAM,gBAAgB,qBAAqB,OAAO;AAAA,EACvD,SAASC,WAAS,SAAS;AAAA,EAC3B,aAAaA,WAAS,SAAS;AAAA,EAC/B,cAAcA,WAAS,SAAS;AAAA,EAChC,YAAYA,WAAS,SAAS;AAAA,EAC9B,eAAeA,WAAS,SAAS;AACnC,CAAC;AAGD,iBAAuD,IAAI;;;ACxB3D,SAAS,YAAAC,YAAU,iBAAAC,sBAAqB;AAqBxC,SAAS,KAAAC,WAAS;AA2FlB,IAAMC,oBAAmBD,IACtB,OAAO,EACP,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EACjC,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC;AAEzB,IAAM,kBAAkBA,IACrB,OAAoB,EACpB,KAAKA,IAAE,OAAOA,IAAE,OAAO,GAAGC,iBAAgB,CAAC;AAEvC,IAAM,gBAAgBD,IAAE;AAAA,EAC7B;AAAA,EACA,kBACG,GAAGA,IAAE,MAAM,iBAAiB,EAAE,SAAS,CAAC,EACxC,GAAGA,IAAE,MAAM,iBAAiB,CAAC;AAClC;AAEA,iBAA+D,IAAI;AAE5D,IAAM,uBAAuBA,IAAE,OAAO;AAAA,EAC3C,wBAAwBA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,oBAAoBA,IAAE,OAAOE,gBAAeF,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAC5E,CAAC;AAEM,IAAM,YAAY,qBAAqB,OAAO;AAAA,EACnD,wBAAwBA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,WAAW,cAAc,SAAS;AAAA,EAClC,gBAAgBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,cAAcA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACxD,yBAAyBA,IACtB,MAAMA,IAAE,MAAMA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAChD,SAAS;AAAA,EACZ,yBAAyBA,IAAE,MAAMA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EAC/D,mBAAmB,yBAAwB,SAAS;AAAA,EACpD,oBAAoB,yBAAwB,SAAS;AAAA,EACrD,uBAAuBA,IAAE,MAAM,oBAAoB,EAAE,SAAS;AAAA,EAC9D,aAAa,kBAAkB,SAAS;AAAA,EACxC,eAAeG,WAAS,SAAS;AAAA,EACjC,UAAUA,WAAS,SAAS;AAAA,EAC5B,WAAWA,WAAS,SAAS;AAAA,EAC7B,2BAA2BH,IAAE,QAAQ,EAAE,SAAS;AAAA,EAChD,aAAa,gBAAgB,SAAS;AACxC,CAAC;AAKM,IAAM,WAAW;AAKxB,iBAAyD,IAAI;;;AC3JtD,IAAM,cAAc;AAM3B,iBAAmD,IAAI;;;ACdvD,SAAS,YAAAI,kBAAgB;AAqBzB,SAAS,KAAAC,WAAS;AAqCX,IAAM,cAAc,qBAAqB,OAAO;AAAA,EACrD,wBAAwBA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,WAAWA,IACR;AAAA,IACCA,IAAE,OAAO,EAAE,GAAG,iBAAiB;AAAA,IAC/B,kBAAkB,GAAGA,IAAE,MAAM,iBAAiB,CAAC;AAAA,EACjD,EACC,SAAS;AAAA,EACZ,aAAa,kBAAkB,SAAS;AAAA,EACxC,eAAeC,WAAS,SAAS;AAAA,EACjC,UAAUA,WAAS,SAAS;AAAA,EAC5B,WAAWA,WAAS,SAAS;AAAA,EAC7B,cAAcD,IAAE,KAAK,CAAC,QAAQ,OAAO,CAAC,EAAE,SAAS;AAAA,EACjD,mBAAmB,wBAAwB,SAAS;AAAA,EACpD,oBAAoB,yBAAyB,SAAS;AAAA,EACtD,cAAcA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACxD,UAAUA,IAAE,MAAM,CAACA,IAAE,QAAQ,CAAC,GAAGA,IAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS;AAAA,EACzD,yBAAyBA,IACtB,MAAMA,IAAE,MAAMA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAChD,SAAS;AAAA,EACZ,aAAaA,IACV,OAAoB,EACpB,KAAKA,IAAE,OAAOA,IAAE,OAAO,GAAG,gBAAgB,CAAC,EAC3C,SAAS;AACd,CAAC;AAGD,iBAAmD,IAAI;;;ACnFvD,SAAS,KAAAE,WAAS;AAaX,IAAM,oBAAoB,YAAY,OAAO;AAAA,EAClD,aAAaA,IAAE,MAAMA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EACnD,SAASA,IAAE,QAAQ,EAAE,SAAS;AAChC,CAAC;AAGD,iBAA+D,IAAI;;;ACrBnE,SAAS,YAAAC,kBAAgB;AAkBzB,SAAS,KAAAC,WAAS;AAyBX,IAAM,iBAAiB,qBAAqB,OAAO;AAAA,EACxD,wBAAwBA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,WAAWA,IACR;AAAA,IACCA,IAAE,OAAO,EAAE,GAAG,iBAAiB;AAAA,IAC/B,kBAAkB,GAAGA,IAAE,MAAM,iBAAiB,CAAC;AAAA,EACjD,EACC,SAAS;AAAA,EACZ,aAAa,kBAAkB,SAAS;AAAA,EACxC,eAAeC,WAAS,SAAS;AAAA,EACjC,UAAUA,WAAS,SAAS;AAAA,EAC5B,WAAWA,WAAS,SAAS;AAAA,EAC7B,cAAcD,IAAE,KAAK,CAAC,QAAQ,OAAO,CAAC,EAAE,SAAS;AAAA,EACjD,oBAAoB,yBAAyB,SAAS;AAAA,EACtD,yBAAyBA,IACtB,MAAMA,IAAE,MAAMA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAChD,SAAS;AAAA,EACZ,UAAUA,IAAE,KAAK,CAAC,SAAS,IAAI,CAAC,EAAE,SAAS;AAC7C,CAAC;AAGD,iBAAyD,IAAI;;;ACvD7D,SAAS,KAAAE,WAAS;AAeX,IAAM,oBAAoB,qBAAqB,OAAO;AAAA,EAC3D,UAAUA,IACP,KAAK,CAAC,4BAA4B,QAAQ,QAAQ,MAAM,CAAC,EACzD,SAAS;AAAA,EACZ,WAAWA,IACR;AAAA,IACCA,IAAE,OAAO,EAAE,GAAG,iBAAiB;AAAA,IAC/B,kBAAkB,GAAGA,IAAE,MAAM,iBAAiB,CAAC;AAAA,EACjD,EACC,SAAS;AAAA,EACZ,yBAAyBA,IACtB,MAAMA,IAAE,MAAMA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAChD,SAAS;AACd,CAAC;AAGD,iBAA+D,IAAI;;;ACxCnE,SAAS,KAAAC,WAAS;AAcX,IAAM,gBAAgB,CAAC,QAAQ,MAAM;AAgCrC,IAAM,YAAY,qBAAqB,OAAO;AAAA,EACnD,eAAeC,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC;AAAA,EAC/C,eAAeA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EAC1D,gBAAgBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,gBAAgB,qBAAqB,SAAS;AAAA,EAC9C,aAAaA,IACV;AAAA,IACCA,IAAE,OAAO;AAAA,IACTA,IAAE,MAAM;AAAA,MACNA,IAAE,OAAO;AAAA,MACTA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,MAC7BA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,IACpB,CAAC;AAAA,EACH,EACC,SAAS;AACd,CAAC;;;AC7DD,SAAS,YAAAC,kBAAgB;AAMzB,SAAS,KAAAC,WAAS;AAqHlB,IAAM,0BAA0BA,IAC7B,OAAiC,EACjC,UAAU,CAAC,MAAM;AAChB,MAAI,MAAM,OAAW,QAAO;AAC5B,SAAOC,WAAS,MAAM,CAAC;AACzB,CAAC;AAEI,IAAM,kBAAkBD,IAC5B,mBAAmB,SAAS;AAAA,EAC3B,eAAe,KAAK,EAAE,aAAa,MAAM,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,IAC7D,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,IACxD,OAAOA,IAAE,QAAQ,QAAQ;AAAA,IACzB,cAAcC;AAAA,IACd,eAAeA;AAAA,IACf,aAAaA,WAAS,SAAS,EAAE,SAAS,4BAA4B;AAAA,IACtE,WAAW,UAAU,SAAS;AAAA,IAC9B,kBAAkBA,WAAS,SAAS;AAAA,IACpC,uBAAuBD,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9C,CAAC;AAAA,EACD,eAAe,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,IAC1C,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,IACxD,OAAOA,IAAE,QAAQ,MAAM;AAAA,IACvB,YAAYC;AAAA,IACZ,aAAaA;AAAA,IACb,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,YAAYA,WAAS,SAAS,EAAE,SAAS,0BAA0B;AAAA,IACnE,aAAaA,WAAS,SAAS,EAAE,SAAS,2BAA2B;AAAA,IACrE,WAAW,UAAU,SAAS;AAAA,IAC9B,kBAAkBA,WAAS,SAAS;AAAA,IACpC,uBAAuBD,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9C,CAAC;AAAA,EACD,eAAe,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,IAC1C,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,IACxD,OAAOA,IAAE,QAAQ,MAAM;AAAA,IACvB,SAASA,IAAE,QAAQ,EAAE,SAAS;AAAA,IAC9B,YAAYC;AAAA,IACZ,aAAaA;AAAA,IACb,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,YAAYA,WAAS,SAAS,EAAE,SAAS,0BAA0B;AAAA,IACnE,aAAaA,WAAS,SAAS,EAAE,SAAS,2BAA2B;AAAA,IACrE,WAAW,UAAU,SAAS;AAAA,IAC9B,aAAaA,WAAS,SAAS;AAAA,IAC/B,aAAaA,WAAS,SAAS;AAAA,IAC/B,kBAAkBA,WAAS,SAAS;AAAA,IACpC,uBAAuBD,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9C,CAAC;AAAA,EACD,eAAe,KAAK,EAAE,aAAa,MAAM,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,IAC7D,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,IACxD,OAAOA,IAAE,QAAQ,6BAA6B;AAAA,IAC9C,cAAcC;AAAA,IACd,cAAcA;AAAA,IACd,eAAeA;AAAA,IACf,kBAAkBA,WAAS,SAAS;AAAA,IACpC,WAAWD,IAAE,QAAQ,QAAQ,EAAE,SAAS;AAAA,IACxC,UAAUA,IAAE,QAAQ,MAAM,EAAE,SAAS;AAAA,IACrC,WAAW,UAAU,SAAS;AAAA,IAC9B,aAAaC,WAAS,SAAS;AAAA,IAC/B,aAAaA,WAAS,SAAS;AAAA,IAC/B,kBAAkBA,WAAS,SAAS;AAAA,IACpC,uBAAuBD,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9C,CAAC;AAAA,EACD,eAAe,KAAK,EAAE,aAAa,MAAM,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,IAC7D,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,IACxD,OAAOA,IAAE,QAAQ,yBAAyB;AAAA,IAC1C,WAAWA,IAAE,QAAQ,MAAM,EAAE,SAAS;AAAA,IACtC,UAAUA,IAAE,QAAQ,MAAM,EAAE,SAAS;AAAA,IACrC,WAAWC;AAAA,IACX,YAAYA;AAAA,IACZ,cAAcA;AAAA,IACd,eAAeA;AAAA,IACf,WAAW,UAAU,SAAS;AAAA,IAC9B,aAAaA,WAAS,SAAS;AAAA,IAC/B,aAAaA,WAAS,SAAS;AAAA,IAC/B,kBAAkBA,WAAS,SAAS;AAAA,IACpC,uBAAuBD,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9C,CAAC;AAAA,EACD,eAAe,KAAK,EAAE,aAAa,MAAM,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,IAC7D,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,IACxD,OAAOA,IAAE,QAAQ,uBAAuB;AAAA,IACxC,WAAWA,IAAE,KAAK,CAAC,UAAU,QAAQ,QAAQ,cAAc,CAAC;AAAA,IAC5D,cAAcC,WAAS,SAAS;AAAA,IAChC,WAAWA,WAAS,SAAS;AAAA,IAC7B,YAAYA,WAAS,SAAS;AAAA,IAC9B,YAAYD,IAAE,MAAM,KAAK;AAAA,IACzB,aAAaC;AAAA,IACb,aAAaA;AAAA,IACb,WAAW,UAAU,SAAS;AAAA,IAC9B,kBAAkBA,WAAS,SAAS;AAAA,IACpC,uBAAuBD,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9C,CAAC;AACH,CAAC,EACA,OAAO,CAAC,MAAM;AACb,MAAI,gBAAgB,KAAK,EAAE,eAAe,QAAW;AACnD,MAAE,cAAc,EAAE;AAAA,EACpB;AACA,MAAI,iBAAiB,KAAK,EAAE,gBAAgB,QAAW;AACrD,MAAE,eAAe,EAAE;AAAA,EACrB;AACA,SAAO;AACT,CAAC;AAIH,iBAA2D,IAAI;;;AC1O/D,SAAS,kBAAkB;AAiB3B,SAAS,KAAAE,WAAS;AAEX,IAAM,oBAAoB,CAAC,QAAQ,QAAQ,OAAO,KAAK;AAevD,IAAM,gBAAgB,qBAAqB,OAAO;AAAA,EACvD;AAAA,EAEA,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAE9B,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAEhC,gBAAgB,qBAAqB,SAAS;AAAA,EAC9C,SAAS,oBAAoB,SAAS;AAAA,EAEtC,aAAa,sBAAsB,iBAAiB,EAAE,SAAS;AACjE,CAAC;AACM,IAAM,eAAe;AAG5B,iBAAuD,IAAI;;;ACnD3D,SAAS,cAAAC,mBAAkB;AAO3B,SAAS,KAAAC,WAAS;AASX,IAAM,qBAAqB,qBAAqB,OAAO;AAAA,EAC5D,eAAeC;AAAA,EACf,YAAYD,IAAE,KAAK,CAAC,WAAW,WAAW,CAAC,EAAE,SAAS;AACxD,CAAC;AAGD,iBAAiE,IAAI;;;ACtBrE,SAAS,WAAW,mBAAmB;AAavC,SAAS,KAAAE,WAAS;AAIX,IAAM,cAAc;AAcpB,IAAM,eAAe,qBAAqB,OAAO;AAAA,EACtD;AAAA,EACA,iBAAiB;AAAA,EACjB,wBAAwBA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzB,YAAYA,IAAE,KAAK,CAAC,WAAW,UAAU,CAAC,EAAE,SAAS;AAAA,EACrD,gBAAgB,qBAAqB,SAAS;AAAA,EAC9C,aAAa,sBAAsB,WAAW,EAAE,SAAS;AAC3D,CAAC;AAGD,iBAAqD,IAAI;;;AC1CzD,SAAS,aAAAC,YAAW,eAAAC,oBAAmB;AAMvC,SAAS,KAAAC,WAAS;AAUX,IAAM,iBAAiB,qBAAqB,OAAO;AAAA,EACxD,WAAWC;AAAA,EACX,iBAAiBC;AAAA,EACjB,YAAYF,IAAE,KAAK,CAAC,aAAa,cAAc,iBAAiB,CAAC,EAAE,SAAS;AAC9E,CAAC;AAGD,iBAAyD,IAAI;;;ACvB7D,SAAS,YAAAG,kBAAgB;AACzB,SAAS,KAAAC,WAAS;AAiBX,IAAM,kBAAkB,WAAW,OAAO;AAAA,EAC/C,cAAcC,IAAE,OAAO,EAAE,SAAS;AAAA,EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;AAAA,EACnC,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACpC,UAAUA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACvC,WAAWA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACxC,SAASA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACtC,YAAYA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACzC,UAAUC,WAAS,SAAS;AAAA,EAC5B,YAAYD,IAAE,QAAQ,EAAE,SAAS;AACnC,CAAC;AAGD,iBAA2D,IAAI;;;AChC/D,SAAS,eAAAE,cAAa,eAAe;AAiBrC,SAAS,KAAAC,WAAS;AAEX,IAAM,qBAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAmBO,IAAM,iBAAiB,qBAAqB,OAAO;AAAA,EACxD,aAAAC;AAAA,EACA,kBAAkB,QAAQ,SAAS;AAAA,EACnC,gBAAgBD,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EACpD,WAAWA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAC/C,eAAeA,IAAE,OAAO,EAAE,SAAS;AAAA,EACnC,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,EAClC,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,0BAA0BA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9C,gBAAgB,qBAAqB,SAAS;AAAA,EAC9C,SAAS,oBAAoB,SAAS;AAAA,EACtC,aAAa,sBAAsB,kBAAkB,EAAE,SAAS;AAClE,CAAC;AACM,IAAM,gBAAgB;AAE7B,iBAAiE,IAAI;;;AC7DrE,SAAS,KAAAE,WAAS;AAWX,IAAM,WAAWC,IAAE,OAAO;AAAA,EAC/B,MAAMA,IAAE,OAAO;AAAA,EACf,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EACxD,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACpC,YAAYA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACjC,aAAaA,IAAE,QAAQ,EAAE,SAAS;AACpC,CAAC;AAGD,iBAA6C,IAAI;;;ACdjD,OAAkB;AAOX,IAAM,gBAAgB,qBAAqB,OAAO;AAAA,EACvD,oBAAoB,SAAS,SAAS;AAAA,EACtC,aAAa,SAAS,SAAS;AACjC,CAAC;AAGD,iBAAuD,IAAI;;;AClB3D,SAAS,KAAAC,WAAS;AAQX,IAAM,yBAAyBA,IAAE,OAAO;AAAA,EAC7C,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,SAASA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,SAASA,IAAE,QAAQ,EAAE,SAAS;AAChC,CAAC;AAMD,iBAAyE,IAAI;;;AChB7E,SAAS,KAAAC,WAAS;AAkFX,IAAM,0BAA0BA,IAAE,OAAO;AAAA,EAC9C,KAAKA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EAC9B,OAAO;AAAA,EACP,MAAMA,IAAE,OAAO;AAAA,EACf,OAAOA,IAAE,OAAO;AAAA,EAEhB,YAAYA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EACrC,gBAAgBA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAC3C,CAAC;AACD;AAAA,EACE;AACF;AAEO,IAAM,0BAA0BA,IAAE,OAAO;AAAA,EAC9C,KAAKA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EAC9B,OAAO;AAAA,EACP,KAAKA,IAAE,OAAO;AAAA,EACd,QAAQA,IAAE,OAAO;AAAA,EAEjB,YAAYA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EACrC,gBAAgBA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAC3C,CAAC;AACD;AAAA,EACE;AACF;AAEO,IAAM,0BAA0BA,IAAE,OAAO;AAAA,EAC9C,KAAKA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EAC9B,OAAOA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EAChC,KAAKA,IAAE,MAAMA,IAAE,OAAO,CAAC;AACzB,CAAC;AACD;AAAA,EACE;AACF;AAEO,IAAM,0BAA0BA,IAAE,OAAO;AAAA,EAC9C,KAAKA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EAC9B,OAAOA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EAChC,KAAKA,IAAE,MAAMA,IAAE,OAAO,CAAC;AACzB,CAAC;AACD;AAAA,EACE;AACF;AAEO,IAAM,kBAAkBA,IAAE,MAAM;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,iBAAmE,IAAI;;;ACxIvE,SAAS,KAAAC,WAAS;AAcX,IAAM,kBAAkB,eAC5B,KAAK;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AACf,CAAC,EACA,OAAO;AAAA,EACN,MAAMC,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,MAAM;AAAA,EACvB,OAAO;AAAA,EACP,QAAQ;AACV,CAAC;AACH,iBAAmE,IAAI;AAShE,IAAM,oBAAoB,eAC9B,KAAK;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AACf,CAAC,EACA,OAAO;AAAA,EACN,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,QAAQ;AAAA,EACzB,QAAQ;AACV,CAAC;AACH,iBAAuE,IAAI;AASpE,IAAM,qBAAqB,eAC/B,KAAK;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AACf,CAAC,EACA,OAAO;AAAA,EACN,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,SAAS;AAAA,EAC1B,QAAQA,IAAE,MAAM,KAAK;AACvB,CAAC;AACH,iBAAyE,IAAI;AAOtE,IAAM,cAAcA,IAAE,mBAAmB,SAAS;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AACF,CAAC;;;ACrED,SAAS,KAAAC,WAAS;AAwEX,IAAM,kBAAkB,eAC5B,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,MAAMC,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,MAAM;AAAA,EACvB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,kBAAkB,SAAS,SAAS;AAAA,EACpC,cAAc,SAAS,SAAS;AAAA,EAChC,WAAW,UAAU,SAAS;AAAA,EAC9B,uBAAuBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC5C,kBAAkB,SAAS,SAAS;AACtC,CAAC;AAEH,iBAA2D,IAAI;AAExD,IAAM,yBAAyB,eACnC,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,cAAc;AAAA,EAC/B,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,aAAaA,IAAE,OAAO;AAAA,EACtB,cAAc,SAAS,SAAS;AAAA,EAChC,WAAW,UAAU,SAAS;AAAA,EAC9B,uBAAuBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC5C,kBAAkB,SAAS,SAAS;AACtC,CAAC;AAEH,iBAAyE,IAAI;AAEtE,IAAM,oBAAoB,eAC9B,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,QAAQ;AAAA,EACzB,QAAQ;AAAA,EACR,WAAW,UAAU,SAAS;AAAA,EAC9B,uBAAuBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC5C,kBAAkB,SAAS,SAAS;AACtC,CAAC;AAEH,iBAA+D,IAAI;AAE5D,IAAM,kBAAkB,eAC5B,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,MAAM;AAAA,EACvB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,WAAW,UAAU,SAAS;AAAA,EAC9B,uBAAuBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC5C,kBAAkB,SAAS,SAAS;AACtC,CAAC;AAEH,iBAA2D,IAAI;AAExD,IAAM,qBAAqB,eAC/B,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,SAAS;AAAA,EAC1B,QAAQA,IAAE,MAAM,KAAK;AAAA,EACrB,WAAW,UAAU,SAAS;AAAA,EAC9B,uBAAuBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC5C,kBAAkB,SAAS,SAAS;AACtC,CAAC;AAEH,iBAAiE,IAAI;AAE9D,IAAM,cAAcA,IAAE,mBAAmB,SAAS;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGD,iBAAmD,IAAI;;;AC7JvD,SAA0B,KAAAC,WAAS;AAoB5B,IAAM,uBAAuB,eACjC,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,OAAOC,IAAE,QAAQ,MAAM;AAAA,EACvB,OAAO;AAAA,EACP,QAAQ;AACV,CAAC;AAEH,iBAAqE,IAAI;AAElE,IAAM,yBAAyB,eACnC,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,OAAOA,IAAE,QAAQ,QAAQ;AAAA,EACzB,QAAQ;AACV,CAAC;AAEH,iBAAyE,IAAI;AAEtE,IAAM,mBAAmBA,IAAE,MAAM;AAAA,EACtC;AAAA,EACA;AACF,CAAC;AAGD,iBAA6D,IAAI;;;AC/CjE,SAAS,KAAAC,WAAS;AAkClB,IAAM,kBAAkB,eACrB,OAAO;AAAA,EACN,MAAMC,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,QAAQ,EAAE,SAAS;AAAA,EACpC,UAAU,SAAS,SAAS;AAAA,EAC5B,QAAQ,SAAS,SAAS;AAAA,EAC1B,kBAAkB,SAAS,SAAS;AAAA,EACpC,uBAAuBA,IAAE,QAAQ,EAAE,SAAS;AAC9C,CAAC,EACA,UAAU,CAAC,OAAO;AAAA,EACjB,GAAG;AAAA,EACH,UAAU,EAAE,YAAY,IAAI,EAAE;AAAA,EAC9B,QAAQ,EAAE,UAAU,EAAE,WAAY;AACpC,EAAE;AAEJ,IAAM,gBAAgB,eAAe,OAAO;AAAA,EAC1C,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,MAAM;AAAA,EACvB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,kBAAkB,SAAS,SAAS;AAAA,EACpC,uBAAuBA,IAAE,QAAQ,EAAE,SAAS;AAC9C,CAAC;AAED,IAAM,gBAAgB,eAAe,OAAO;AAAA,EAC1C,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,MAAM;AAAA,EACvB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,kBAAkB,SAAS,SAAS;AAAA,EACpC,uBAAuBA,IAAE,QAAQ,EAAE,SAAS;AAC9C,CAAC;AAEM,IAAM,YAAYA,IAAE,MAAM;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAID,iBAA+C,IAAI;;;AC3EnD,SAAS,YAAAC,YAAU,oBAAAC,yBAAwB;AAC3C,SAAS,KAAAC,WAAS;AAGX,IAAM,UAAUC,IAAE,MAAM;AAAA,EAC7BA,IAAE,OAAO;AAAA,EACTA,IAAE;AAAA,IAA0C,CAAC,MAC3C,QAAQ,EAAE,eAAe;AAAA,EAC3B;AACF,CAAC;AAED,IAAM,UAAUA,IAAE,MAAMA,IAAE,MAAM,CAAC,OAAOA,IAAE,OAAO,CAAC,CAAC,CAAC;AAEpD,IAAM,iBAAiBA,IAAE,OAAO;AAAA,EAC9B,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzB,WAAWC,WAAS,SAAS;AAAA,EAC7B,OAAOA,WAAS,SAAS,EAAE,SAAS,2BAA2B;AAAA,EAC/D,qBAAqBD,IAAE,MAAM,KAAK,EAAE,SAAS;AAAA,EAC7C,eAAeA,IAAE,MAAME,iBAAgB,EAAE,SAAS;AAAA,EAClD,mBAAmBF,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,SAAS,QAAQ,SAAS;AAAA,EAC1B,UAAUA,IAAE,MAAM,OAAO,EAAE,SAAS;AAAA,EACpC,iBAAiBA,IACd,QAAQ,EACR,SAAS,EACT,SAAS,wDAAwD;AAAA,EACpE,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACpC,WAAWC,WAAS,SAAS;AAAA,EAC7B,YAAYD,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAC1D,CAAC;AAEM,IAAM,aAAaA,IAAE,MAAM;AAAA,EAChC,eAAe,OAAO;AAAA,IACpB,MAAMA,IAAE,MAAM,OAAO;AAAA,EACvB,CAAC;AAAA,EACD,eAAe,OAAO;AAAA,IACpB,MAAM;AAAA,IACN,IAAI;AAAA,EACN,CAAC;AACH,CAAC;;;ACzCD,SAAwB,aAAAG,kBAAiB;AAEzC,SAAS,KAAAC,WAAS;AAqBX,IAAM,iBAAiBA,IAAE,OAAO;AAAA,EACrC,UAAUA,IAAE,IAAI,EAAE,SAAS;AAAA,EAC3B,eAAeC,WAAU,QAAQ,KAAK,EAAE,SAAS;AAAA,EACjD,aAAaD,IAAE,MAAMA,IAAE,IAAI,CAAC,EAAE,SAAS;AACzC,CAAC;AAID,iBAAyD,IAAI;;;AC9B7D,SAAS,KAAAE,WAAS;AAYX,IAAM,cAAcA,IAAE,OAAO;AAAA,EAClC,yBAAyBA,IACtB,KAAK,CAAC,MAAM,QAAQ,QAAQ,OAAO,CAAC,EACpC,QAAQ,OAAO,EACf,SAAS;AACd,CAAC;AAID,iBAAmD,IAAI;;;ACtBvD,SAAS,WAAAC,gBAAe;AACxB,SAAS,KAAAC,WAAS;AAclB,IAAM,WAAWC,IACd,OAAO,EACP,GAAGA,IAAE,OAAO,EAAE,SAAS,KAAK,CAAC,EAC7B,UAAU,CAAC,MAAM;AAChB,MAAI,OAAO,MAAM,UAAU;AACzB,UAAM,YAAY,EAAE,QAAQ,OAAO,EAAE;AACrC,UAAM,MAAM,OAAO,WAAW,SAAS;AACvC,QAAI,OAAO,MAAM,GAAG,GAAG;AACrB,YAAM,IAAI,MAAM,kBAAkB;AAAA,IACpC;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT,CAAC,EACA,SAAS,yBAAyB;AAU9B,IAAM,eAAe,qBAAqB,OAAO;AAAA,EACtD,UAAU,SAAS,SAAS;AAAA,EAC5B,SAASC,SAAQ,SAAS;AAAA,EAC1B,UAAUD,IAAE,KAAK,CAAC,MAAM,OAAO,MAAM,UAAU,SAAS,GAAG,CAAC,EAAE,SAAS;AAAA,EACvE,gBAAgB,qBAAqB,SAAS;AAChD,CAAC;AACM,IAAM,cAAc;AAG3B,iBAA6D,IAAI;;;AChDjE,SAAS,YAAAE,kBAAgB;;;ACCzB,SAAS,KAAAC,WAAS;AAEX,IAAM,iBAAiBA,IAC3B,KAAK,CAAC,YAAY,YAAY,CAAC,EAC/B;AAAA,EACC;AACF;AAIF,iBAAiE,IAAI;;;ADarE,SAAS,KAAAC,WAAS;AAmGX,IAAM,iBAAiB,qBAAqB,OAAO;AAAA,EACxD,UAAUA,IAAE,OAAO;AAAA,EACnB,OAAOC,WAAS,SAAS;AAAA,EACzB,oBAAoBD,IAAE,KAAK,CAAC,MAAM,QAAQ,QAAQ,OAAO,CAAC,EAAE,SAAS;AAAA,EACrE,QAAQA,IAAE,KAAK,CAAC,QAAQ,UAAU,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,MAAM;AAAA,EAC3E,yBAAyBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9C,cAAcA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACxD,WAAWA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,YAAYA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACjC,gBAAgB,eAAmB,SAAS;AAAA,EAC5C,cAAcC,WAAS,SAAS;AAAA,EAChC,gBAAgBA,WAAS,SAAS;AAAA,EAClC,WAAWD,IACR,OAAOA,IAAE,OAAO,GAAG,iBAAiB,EACpC,GAAGA,IAAE,MAAM,iBAAiB,CAAC,EAC7B,SAAS;AAAA,EACZ,aAAaA,IACV,OAAoB,EACpB,KAAKA,IAAE,OAAOA,IAAE,OAAO,GAAG,gBAAgB,CAAC,EAC3C,SAAS;AAAA,EACZ,iBAAiBA,IAAE,KAAK,CAAC,QAAQ,OAAO,CAAC,EAAE,SAAS;AAAA,EACpD,mBAAmB,wBAAwB,SAAS;AAAA,EACpD,aAAa,kBAAkB,SAAS;AAAA,EACxC,eAAeC,WAAS,SAAS;AAAA,EACjC,UAAUA,WAAS,SAAS;AAAA,EAC5B,WAAWA,WAAS,SAAS;AAC/B,CAAC;AAGD,iBAAyD,IAAI;;;AExJ7D,SAAS,KAAAC,WAAS;AAGlB,SAAS,YAAAC,iBAAgB;AAelB,IAAM,gBAAgBC,IAAE,OAAO;AAAA,EACpC,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzB,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,MAAM,SAAS,SAAS;AAAA,EACxB,MAAM,SAAS,SAAS;AAAA,EACxB,aAAaD,UAAS,SAAS;AAAA,EAC/B,YAAYC,IAAE,KAAK,CAAC,QAAQ,OAAO,SAAS,QAAQ,CAAC,EAAE,SAAS;AAClE,CAAC;AAGD,iBAAuD,IAAI;;;AC5B3D,SAAS,KAAAC,WAAS;AAGlB,SAAS,YAAAC,iBAAgB;AAYlB,IAAM,gBAAgBC,IAAE,OAAO;AAAA,EACpC,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzB,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EACxD,MAAM,SAAS,SAAS;AAAA,EACxB,MAAM,SAAS,SAAS;AAAA,EACxB,aAAaD,UAAS,SAAS;AAAA,EAC/B,YAAYC,IAAE,KAAK,CAAC,QAAQ,OAAO,SAAS,QAAQ,CAAC,EAAE,SAAS;AAClE,CAAC;AAGD,iBAAuD,IAAI;;;ACzB3D,OAAkB;AAMX,IAAM,kBAAkB,UAAU,OAAO,CAAC,CAAC;AAElD,iBAAmE,IAAI;;;ACFhE,IAAM,kBAAkB;AAG/B,iBAA2D,IAAI;;;ACV/D,SAAS,UAAU;AAGnB,SAAS,KAAAC,WAAS;AASlB,IAAM,cAAcA,IAAE;AAAA,EACpB,CAAC,UAAU,OAAO,UAAU;AAC9B;AAEO,IAAM,wBAAwBA,IAAE,OAAO;AAAA,EAC5C,gBAAgBA,IACb,QAAQ,0BAA0B,EAClC,QAAQ,0BAA0B;AAAA,EACrC,UAAU,GAAG,SAAS;AAAA,EACtB,aAAa,GAAG,SAAS;AAAA,EACzB,aAAa,YAAY,SAAS;AACpC,CAAC;AAED;AAAA,EACE;AACF;;;ACtBA,SAAS,KAAAC,WAAS;AAIX,IAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AASO,IAAM,kBAAkB,qBAAqB,OAAO;AAAA,EACzD,MAAMC,IAAE,KAAK,CAAC,OAAO,OAAO,OAAO,QAAQ,UAAU,MAAM,CAAC;AAAA,EAC5D,aAAa,sBAAsB,oBAAoB,EAAE,SAAS;AACpE,CAAC;AAEM,IAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIA,iBAA2D,IAAI;;;ACvC/D,SAAS,KAAAC,WAAS;AAQX,IAAM,cAAc,qBAAqB,OAAO;AAAA,EACrD,aAAaA,IAAE,KAAK,CAAC,KAAK,GAAG,CAAC;AAAA,EAC9B,YAAYA,IAAE,KAAK,CAAC,eAAe,WAAW,CAAC;AACjD,CAAC;AAEM,IAAM,aAAa;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIA,iBAAmD,IAAI;;;AC7BvD,SAAS,kBAAkB;AAa3B,SAAS,KAAAC,WAAS;AAEX,IAAM,eAAe;AAWrB,IAAM,gBAAgB,qBAAqB,OAAO;AAAA,EACvD;AAAA,EACA,kBAAkBA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EAC7D,gBAAgB,qBAAqB,SAAS;AAAA,EAC9C,aAAa,sBAAsB,YAAY,EAAE,SAAS;AAC5D,CAAC;AAID,iBAAuD,IAAI;;;AC9B3D,SAAS,KAAAC,WAAS;AAOlB,IAAM,sBAAsBC,IAAE,KAAK;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAMC,oBAAmBD,IACtB,OAAO,EACP,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EACjC,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC;AAEzB,IAAME,mBAAkBF,IAAE,OAAO,qBAAqBC,iBAAgB;AAEtE,IAAM,eAAeD,IAAE,KAAK;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,aAAa,qBACvB,OAAO;AAAA,EACN,aAAaE,iBAAgB,SAAS;AAAA,EACtC,SAAS,aAAa,SAAS,EAAE,QAAQ,UAAU;AAAA,EACnD,UAAUF,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,UAAUA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,OAAOA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC5B,WAAWA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,OAAOA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC5B,KAAKA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC1B,gBAAgB,qBAAqB,SAAS;AAChD,CAAC,EACA,YAAY,CAAC,MAAM,QAAQ;AAE1B,QAAM,eAAe;AAAA,IACnB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP,EAAE,OAAO,OAAO,EAAE;AAElB,MAAI,eAAe,GAAG;AACpB,QAAI,SAAS;AAAA,MACX,MAAMA,IAAE,aAAa;AAAA,MACrB,SAAS;AAAA,MACT,MAAM,CAAC;AAAA,IACT,CAAC;AACD,WAAOA,IAAE;AAAA,EACX;AACF,CAAC,EACA,UAAU,CAAC,SAAS;AAEnB,QAAM,SAAS;AAAA,IACb,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA,IACV,OAAO;AAAA,IACP,WAAW;AAAA,IACX,OAAO;AAAA,IACP,KAAK;AAAA,EACP;AAEA,MAAI,KAAK,SAAU,QAAO,WAAW;AAAA,WAC5B,KAAK,SAAU,QAAO,WAAW;AAAA,WACjC,KAAK,MAAO,QAAO,QAAQ;AAAA,WAC3B,KAAK,MAAO,QAAO,QAAQ;AAAA,WAC3B,KAAK,IAAK,QAAO,MAAM;AAAA,OAC3B;AACH,YAAQ,KAAK,SAAS;AAAA,MACpB,KAAK;AACH,eAAO,WAAW;AAClB;AAAA,MACF,KAAK;AACH,eAAO,WAAW;AAClB;AAAA,MACF,KAAK;AACH,eAAO,QAAQ;AACf;AAAA,MACF,KAAK;AACH,eAAO,YAAY;AACnB;AAAA,MACF,KAAK;AACH,eAAO,QAAQ;AACf;AAAA,MACF,KAAK;AACH,eAAO,MAAM;AACb;AAAA,MACF;AACE,eAAO,WAAW;AAAA,IACtB;AAAA,EACF;AAEA,SAAO;AACT,CAAC;AAEI,IAAM,YAAY;AAwBzB,iBAAiD,IAAI;;;ACxIrD,SAAS,KAAAG,WAAS;AAKX,IAAM,WAAW,qBAAqB,OAAO;AAAA,EAClD,OAAOC,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,gBAAgB,qBAAqB,SAAS;AAAA,EAC9C,aAAa,sBAAsB,WAAW,EAAE,SAAS;AAAA,EACzD,OAAOA,IAAE,QAAQ,EAAE,SAAS;AAC9B,CAAC;AACM,IAAM,UAAU;;;ACfvB,SAAS,MAAAC,KAAI,aAAAC,kBAAiB;AAS9B,SAAS,KAAAC,WAAS;AAiBX,IAAM,cAAc,qBACxB,OAAO;AAAA,EACN,MAAMA,IAAE,KAAK,CAAC,QAAQ,QAAQ,QAAQ,MAAM,CAAC,EAAE,SAAS;AAAA,EACxD,kBAAkBA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EACtD,MAAMA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC3B,MAAMA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC3B,MAAMA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC3B,MAAMA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC3B,oBAAoBC,WAAU,SAAS;AAAA,EACvC,YAAYC,IAAG,SAAS;AAAA,EACxB,WAAWA,IAAG,SAAS;AAAA,EACvB,gBAAgBF,IAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,cAAcA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACnC,aAAaA,IACV,OAA4B,EAC5B,KAAKA,IAAE,OAAOA,IAAE,OAAO,GAAG,gBAAgB,CAAC,EAC3C,SAAS;AACd,CAAC,EACA,UAAU,CAAC,UAAU;AACpB,QAAM,eAA4B,EAAE,GAAG,MAAM;AAE7C,MAAI,aAAa,MAAM;AACrB,iBAAa,OAAO;AAAA,EACtB,WAAW,aAAa,MAAM;AAC5B,iBAAa,OAAO;AAAA,EACtB,WAAW,aAAa,MAAM;AAC5B,iBAAa,OAAO;AAAA,EACtB,WAAW,aAAa,MAAM;AAC5B,iBAAa,OAAO;AAAA,EACtB;AAEA,UAAQ,aAAa,MAAM;AAAA,IACzB,KAAK;AACH,mBAAa,OAAO;AACpB;AAAA,IACF,KAAK;AACH,mBAAa,OAAO;AACpB;AAAA,IACF,KAAK;AACH,mBAAa,OAAO;AACpB;AAAA,IACF,KAAK;AACH,mBAAa,OAAO;AACpB;AAAA,EACJ;AAEA,SAAO;AACT,CAAC;AAGH,iBAAmD,IAAI;;;AC5EvD,SAAS,UAAAG,eAAc;AAGvB,SAAS,KAAAC,WAAS;AAeX,IAAM,2BAA2B,eAAe,OAAO;AAAA,EAC5D,MAAMA,IAAE,OAAO;AAAA,EACf,iBAAiBA,IACd,KAAK,CAAC,UAAU,YAAY,aAAa,eAAe,cAAc,CAAC,EACvE,QAAQ,QAAQ;AAAA,EACnB,MAAMA,IAAE,KAAK,CAAC,eAAe,CAAC,EAAE,SAAS;AAAA,EACzC,UAAUC,QAAO,SAAS;AAAA,EAC1B,OAAOD,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAED,iBAGE,IAAI;;;AC/BN,SAAS,YAAAE,kBAAgB;AAEzB,SAAS,KAAAC,WAAS;AAEX,IAAM,2BAA2B,eACrC,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,OAAOC;AAAA,EACP,QAAQA;AAAA,EACR,aAAaA,WAAS,SAAS;AAAA,EAC/B,UAAUD,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,WAAWA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,gBAAgBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,cAAcC,WAAS,SAAS;AAClC,CAAC;;;ACfH,SAAS,UAAAC,SAAQ,oBAAAC,yBAAwB;AAEzC,SAAS,KAAAC,WAAS;AAEX,IAAM,2BAA2B,eACrC,KAAK;AAAA,EACJ,cAAc;AAAA,EACd,eAAe;AAAA,EACf,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AACf,CAAC,EACA,OAAO;AAAA,EACN,OAAOA,IAAE,MAAMC,iBAAgB;AAAA,EAC/B,aAAaC,QAAO,SAAS;AAAA,EAC7B,OAAOF,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;;;ACpBH,SAAS,YAAAG,YAAU,UAAAC,eAAc;AAIjC,SAAS,KAAAC,WAAS;AAElB,IAAM,kBAAkBA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAG,KAAK,CAAC;AA6B5C,IAAM,gCAAgC,eAC1C,KAAK;AAAA,EACJ,cAAc;AAAA,EACd,eAAe;AAAA,EACf,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AACf,CAAC,EACA,OAAO;AAAA,EACN,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,QAAQC,WAAS,SAAS;AAAA,EAC1B,MAAMD,IAAE,KAAK,CAAC,eAAe,CAAC,EAAE,SAAS;AAAA,EACzC,UAAUE,QAAO,SAAS;AAAA,EAC1B,OAAOF,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,WAAWC,WAAS,SAAS;AAAA,EAC7B,OAAOD,IAAE,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,SAAS;AAAA,EACrC,iBAAiBA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EAC1C,gBAAgBA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EACzC,iBAAiBA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAC5C,CAAC;AAEH,iBAGE,IAAI;;;ACjEN,SAAS,YAAAG,YAAU,oBAAAC,yBAAwB;AAC3C,SAAS,KAAAC,WAAS;AAEX,IAAM,gBAAgBA,IAAE,OAAO;AAAA,EACpC,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,WAAWF,WAAS,SAAS;AAAA,EAC7B,OAAOE,IAAE,MAAMD,iBAAgB;AACjC,CAAC;;;ACPD,SAAS,YAAAE,YAAU,aAAAC,kBAAqC;AAGxD,SAAS,KAAAC,WAAS;AAYX,IAAM,WAAW,kBAAkB,OAAO;AAAA,EAC/C,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,WAAWC;AAAA,EACX,SAASA;AAAA,EACT,cAAcC,WAAS,SAAS;AAAA,EAChC,eAAeA,WAAS,SAAS;AAAA,EACjC,YAAYF,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EACxD,iBAAiBA,IAAE,QAAQ,EAAE,SAAS;AACxC,CAAC;AAED,iBAA6C,IAAI;;;ACzBjD,SAAS,YAAAG,kBAAgB;AAMzB,SAAS,KAAAC,WAAS;AAGX,IAAM,gBAAgB,CAAC,MAAM;AAGpC,IAAM,2BAA2BC,IAC9B,OAAO;AAAA,EACN,MAAM;AACR,CAAC,EACA,OAAO;AAgCH,IAAM,iBAAiB,qBAC3B,OAAO;AAAA,EACN,aAAa,yBAAyB,SAAS;AAAA,EAC/C,kBAAkBA,IAAE,KAAK,CAAC,OAAO,cAAc,CAAC,EAAE,SAAS;AAAA,EAC3D,UAAUA,IAAE,KAAK,CAAC,QAAQ,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,QAAQ;AAAA,EAChE,aAAaC,WAAS,SAAS;AAAA,EAC/B,cAAcA,WAAS,SAAS;AAAA,EAChC,OAAOA,WAAS,SAAS;AAAA,EACzB,QAAQA,WAAS,SAAS;AAC5B,CAAC,EACA;AAAA,EACC,CAAC,UACC,MAAM,qBAAqB,kBAC3B,MAAM,iBAAiB;AAAA,EACzB,EAAE,SAAS,uDAAuD;AACpE;AAGF,iBAAyD,IAAI;;;AChE7D,SAAS,KAAAC,WAAS;AAOX,IAAM,qBAAqB,eAC/B,KAAK,EAAE,aAAa,MAAM,OAAO,KAAK,CAAC,EACvC,OAAO;AAAA,EACN,YAAYA,IAAE,OAAO;AACvB,CAAC;AAGH,iBAAiE,IAAI;;;AChBrE,SAAS,YAAAC,kBAAgB;AAEzB,SAAS,KAAAC,WAAS;AAEX,IAAM,kBAAkBA,IAAE,MAAM;AAAA,EACrC,eAAe,KAAK,EAAE,aAAa,KAAK,CAAC,EAAE,OAAO;AAAA,IAChD,OAAOA,IAAE,QAAQ,QAAQ;AAAA,IACzB,QAAQC;AAAA,EACV,CAAC;AAAA,EACD,eAAe,OAAO;AAAA,IACpB,OAAOD,IAAE,QAAQ,MAAM;AAAA,IACvB,OAAOC;AAAA,IACP,QAAQA;AAAA,EACV,CAAC;AACH,CAAC;;;ACdD,SAAS,YAAAC,kBAAgB;AAEzB,SAAS,KAAAC,WAAS;AAEX,IAAM,qBAAqB,eAC/B,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,OAAOC;AAAA,EACP,QAAQA;AAAA,EACR,aAAaA,WAAS,SAAS;AAAA,EAC/B,UAAUD,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,WAAWA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,gBAAgBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;;;ACdH,SAAS,UAAAE,eAAc;AAGvB,SAAS,KAAAC,WAAS;AAEX,IAAM,wBAAwB,eAClC,KAAK;AAAA,EACJ,cAAc;AAAA,EACd,eAAe;AAAA,EACf,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AACf,CAAC,EACA,OAAO;AAAA,EACN,SAASA,IAAE,MAAM,KAAK;AAAA,EACtB,aAAaC,QAAO,SAAS;AAAA,EAC7B,UAAUD,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,gBAAgBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;;;ACvBH,SAAS,KAAAE,WAAS;AAGlB,SAAS,aAAAC,kBAAqC;AAcvC,IAAM,kBAAkBC,IAAE,OAAO;AAAA,EACtC,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOD;AAAA,EACP,YAAYC,IAAE,OAAO;AAAA,EACrB,WAAW,SAAS,SAAS;AAAA,EAC7B,aAAa,SAAS,SAAS;AAAA,EAC/B,WAAW,SAAS,SAAS;AAAA,EAC7B,iBAAiB,SAAS,SAAS;AAAA,EACnC,cAAc,SAAS,SAAS;AAAA,EAChC,uBAAuBA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI;AAC5D,CAAC;AAED,iBAAmE,IAAI;;;AC7BvE,SAAwB,aAAAC,kBAAiB;AAEzC,SAAS,KAAAC,WAAS;AAkBX,IAAM,mBAAmBA,IAAE,OAAO;AAAA,EACvC,eAAeC,WAAU,QAAQ,KAAK,EAAE,SAAS;AAAA,EACjD,UAAUD,IAAE,IAAI,EAAE,SAAS;AAC7B,CAAC;AAID,iBAA6D,IAAI;;;ACxBjE,SAAS,KAAAE,WAAS;AAgBlB,IAAM,cAAcA,IAAE,OAAO;AAAA,EAC3B,MAAM,cAAc,SAAS;AAAA,EAC7B,MAAM,cAAc,SAAS;AAAA,EAC7B,cAAc,cAAc,SAAS;AAAA,EACrC,eAAe,cAAc,SAAS;AAAA,EACtC,aAAa,cAAc,SAAS;AAAA,EACpC,gBAAgB,cAAc,SAAS;AAAA,EACvC,YAAY,SAAS,SAAS;AAAA,EAC9B,YAAY,SAAS,SAAS;AAAA,EAC9B,MAAM,SAAS,SAAS;AAC1B,CAAC;AAED,IAAM,sBAAsB,aAAa,OAAO;AAAA,EAC9C,UAAUA,IAAE,OAAO;AAAA,EACnB,SAASA,IAAE,OAAO,EAAE,SAAS;AAC/B,CAAC;AAED,IAAM,iBAAiB,oBAAoB,MAAM,WAAW;AAC5D,iBAAgE,IAAI;AAE7D,IAAM,gBAAgBA,IAAE,MAAM,CAACA,IAAE,KAAK,GAAGA,IAAE,OAAO,GAAG,cAAc,CAAC;;;ACvC3E,SAAS,WAAAC,gBAAe;AAIjB,IAAM,mBAAmB,qBAAqB,OAAO;AAAA,EAC1D,SAAAC;AACF,CAAC;;;ACND,SAAS,aAAAC,YAAW,YAAAC,WAAU,WAAAC,gBAAe;AAS7C,SAAS,KAAAC,WAAS;AAIX,IAAM,yBAAyB,CAAC,QAAQ,QAAQ,OAAO,KAAK;AAcnE,IAAM,aAAaA,IAChB,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,EAC9B,UAAU,CAAC,QAAQ;AAClB,MAAI,OAAO,QAAQ,UAAU;AAC3B,QAAI,IAAI,SAAS,GAAG,GAAG;AACrB,aAAO,WAAW,IAAI,MAAM,GAAG,EAAE,CAAC,IAAI;AAAA,IACxC;AACA,WAAO,WAAW,GAAG;AAAA,EACvB;AACA,SAAO;AACT,CAAC,EACA;AAAA,EACCA,IACG,OAAO,EACP,IAAI,GAAG,iCAAiC,EACxC,IAAI,GAAG,wCAAwC;AACpD;AAEK,IAAM,qBAAqB,qBAAqB,OAAO;AAAA,EAC5D,SAASC,SAAQ,SAAS;AAAA,EAC1B,WAAWC,WAAU,SAAS;AAAA,EAC9B,mBAAmBD,SAAQ,SAAS;AAAA,EACpC,WAAWD,IAAE,KAAK,CAAC,YAAY,UAAU,YAAY,UAAU,CAAC,EAAE,SAAS;AAAA,EAC3E,OAAOG,UAAS,SAAS;AAAA,EACzB,WAAW,WAAW,SAAS;AAAA,EAC/B,aAAa,sBAAsB,sBAAsB,EAAE,SAAS;AACtE,CAAC;AAEM,IAAM,oBAAoB;AAGjC,iBAAiE,IAAI;;;ACrDrE,SAAS,KAAAC,WAAS;AASX,IAAM,oBAAoB,qBAC9B,KAAK,EAAE,MAAM,KAAK,CAAC,EACnB,OAAO;AAAA,EACN,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,YAAYA,IAAE,OAAO;AAAA,EACrB,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAEH,iBAAuE,IAAI;;;ACvB3E,SAAS,YAAAC,YAAU,SAAAC,QAAO,YAAAC,iBAAgB;AAC1C,SAAS,KAAAC,WAAS;AAKX,IAAM,oBAAoBC,IAAE,OAAO;AAAA,EACxC,QAAQC;AAAA,EACR,QAAQC;AAAA,EACR,mBAAmBC;AAAA,EACnB,iBAAiBA;AAAA,EACjB,WAAWH,IACR,KAAK,CAAC,aAAa,kBAAkB,CAAC,EACtC,QAAQ,kBAAkB;AAAA,EAC7B,aAAaE,WAAS,SAAS;AAAA,EAC/B,OAAOF,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,UAAUA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAChD,CAAC;AAeD,iBAAuE,IAAI;;;AC/B3E,SAAS,KAAAI,WAAS;AAMX,IAAM,mBAAmBA,IAAE,OAAO;AAAA,EACvC,UAAUA,IAAE,IAAI,EAAE,SAAS;AAC7B,CAAC;AAGD,iBAA6D,IAAI;;;ACZjE,SAAS,YAAAC,kBAAgB;AACzB,SAAS,KAAAC,WAAS;AAKX,IAAM,oBAAoBC,IAC9B,OAAO;AAAA,EACN,MAAMC,WAAS,SAAS;AAAA,EACxB,MAAMA,WAAS,SAAS;AAAA,EACxB,OAAOA,WAAS,SAAS;AAAA,EACzB,QAAQA,WAAS,SAAS;AAAA,EAC1B,SAASD,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAEtC,SAASC,WAAS,SAAS;AAAA,EAC3B,aAAaA,WAAS,SAAS;AAAA,EAC/B,cAAcA,WAAS,SAAS;AAAA,EAChC,YAAYA,WAAS,SAAS;AAAA,EAC9B,eAAeA,WAAS,SAAS;AAAA,EAEjC,OAAOD,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,gBAAgB,gBAAgB,QAAQ,UAAU;AAAA,EAClD,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,eAAeC,WAAS,SAAS;AAAA,EACjC,aAAaD,IAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACtC,aAAaA,IAAE,KAAK,CAAC,SAAS,QAAQ,CAAC,EAAE,QAAQ,OAAO;AAC1D,CAAC,EACA;AAAA,EACC,CAAC,QACE,IAAI,UAAU,UAAa,IAAI,WAAW,UAC1C,MAAM,QAAQ,IAAI,OAAO,KAAK,IAAI,QAAQ,SAAS;AAAA,EACtD;AAAA,IACE,SACE;AAAA,EACJ;AACF,EACC;AAAA,EACC,CAAC,QACC,EACE,IAAI,UAAU,UACd,IAAI,WAAW,UACf,MAAM,QAAQ,IAAI,OAAO,KACzB,IAAI,QAAQ,SAAS;AAAA,EAEzB;AAAA,IACE,SACE;AAAA,EACJ;AACF;AAuBF,iBAAuE,IAAI;;;ACvE3E,SAAS,YAAAE,YAAU,SAAAC,cAAa;AAChC,SAAS,KAAAC,WAAS;AAKX,IAAM,uBAAuBC,IAAE,OAAO;AAAA,EAC3C,QAAQC;AAAA,EACR,QAAQC;AAAA,EACR,aAAaA,WAAS,SAAS;AAAA,EAC/B,OAAOF,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,UAAUA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAC9C,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,UAAUA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAChD,CAAC;AAcD;AAAA,EACE;AACF;;;AC9BA,SAAS,YAAAG,YAAiB,YAAAC,iBAAgB;AAC1C,SAAS,KAAAC,WAAS;AAIX,IAAM,qBAAqBC,IAAE,OAAO;AAAA,EACzC,MAAMC,WAAS,SAAS;AAAA,EACxB,MAAMA,WAAS,SAAS;AAAA,EACxB,OAAOA;AAAA,EACP,QAAQA;AAAA,EACR,UAAUC,UAAS,QAAQ,CAAC;AAAA,EAC5B,aAAaD,WAAS,SAAS;AAAA,EAC/B,OAAOD,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,UAAUA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAC9C,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,UAAUA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAC9C,cAAcC,WAAS,SAAS;AAClC,CAAC;AAkBD,iBAAyE,IAAI;;;ACnC7E,SAAS,YAAAE,kBAAgB;AACzB,SAAS,KAAAC,WAAS;AAIX,IAAM,qBAAqBC,IAAE,OAAO;AAAA,EACzC,IAAIC;AAAA,EACJ,IAAIA;AAAA,EACJ,IAAIA;AAAA,EACJ,IAAIA;AAAA,EACJ,aAAaA,WAAS,SAAS;AAAA,EAC/B,OAAOD,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,UAAUA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAChD,CAAC;AAcD,iBAAyE,IAAI;;;AC3B7E,SAAS,YAAAE,YAAU,YAAAC,iBAAgB;AACnC,SAAS,KAAAC,WAAS;;;ACDlB,SAAS,KAAAC,WAAS;AAEX,IAAM,kBAAkBA,IAAE,KAAK;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;;;ADDM,IAAM,qBAAqBC,IAAE,OAAO;AAAA,EACzC,MAAMC,WAAS,SAAS;AAAA,EACxB,MAAMA,WAAS,SAAS;AAAA,EACxB,MAAMD,IAAE,OAAO;AAAA,EACf,UAAUA,IAAE,OAAO,EAAE,QAAQ,CAAC;AAAA,EAC9B,QAAQA,IACL,MAAM,CAAC,gBAAgB,SAAS,QAAQ,GAAG,eAAe,CAAC,EAC3D,QAAQ,QAAQ;AAAA,EACnB,OAAOA,IAAE,OAAO,EAAE,QAAQ,SAAS;AAAA,EACnC,aAAaE,UAAS,QAAQ,CAAC;AACjC,CAAC;AAcD,iBAAyE,IAAI;;;AE/B7E,SAAS,SAAAC,cAAa;AACtB,SAAS,KAAAC,WAAS;AAIX,IAAM,qBAAqBC,IAAE,OAAO;AAAA,EACzC,QAAQA,IAAE,MAAMC,MAAK;AAAA,EACrB,UAAUD,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAC9C,WAAWA,IAAE,KAAK,CAAC,OAAO,MAAM,CAAC,EAAE,SAAS;AAC9C,CAAC;AAUD,iBAAyE,IAAI;;;ACnB7E,SAAS,YAAAE,kBAAgB;AACzB,SAAS,KAAAC,WAAS;AAIX,IAAM,sBAAsBC,IAAE,OAAO;AAAA,EAC1C,MAAMC,WAAS,SAAS;AAAA,EACxB,MAAMA,WAAS,SAAS;AAAA,EACxB,UAAUD,IAAE,IAAI,EAAE,SAAS;AAAA,EAC3B,aAAaC,WAAS,SAAS;AAAA,EAC/B,aAAaA,WAAS,SAAS;AAAA,EAC/B,QAAQ,gBAAgB,SAAS;AAAA,EACjC,UAAUA,WAAS,SAAS;AAC9B,CAAC;AAYD,iBAA2E,IAAI;;;ACzB/E,SAAS,YAAAC,kBAAgB;AACzB,SAAS,KAAAC,WAAS;AAGX,IAAM,oBAAoBC,IAAE,OAAO;AAAA,EACxC,UAAUA,IAAE,IAAI,EAAE,SAAS;AAAA,EAC3B,QAAQC,WAAS,SAAS;AAC5B,CAAC;AAOD,iBAAuE,IAAI;;;ACd3E,SAAS,YAAAC,kBAAgB;AACzB,SAAS,KAAAC,WAAS;AAGX,IAAM,qBAAqBC,IAAE,OAAO;AAAA,EACzC,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,iBAAiBA,IAAE,KAAK,CAAC,QAAQ,UAAU,OAAO,CAAC,EAAE,SAAS;AAAA,EAC9D,eAAeA,IAAE,KAAK,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,SAAS;AAAA,EAC5D,UAAUC,WAAS,SAAS;AAAA,EAC5B,SAASD,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,OAAOC,WAAS,SAAS;AAAA,EACzB,MAAMD,IAAE,OAAO,EAAE,SAAS;AAC5B,CAAC;AAaD,iBAAyE,IAAI;;;AC1B7E,SAAS,aAAAE,YAAW,UAAAC,eAAc;AAGlC,SAAS,KAAAC,YAAS;AAEX,IAAM,kBAAkB,eAAe,OAAO;AAAA,EACnD,MAAMA,KAAE,OAAO;AAAA,EACf,iBAAiB,gBAAgB,QAAQ,QAAQ;AAAA,EACjD,MAAMA,KAAE,KAAK,CAAC,eAAe,CAAC,EAAE,SAAS;AAAA,EACzC,UAAUC,QAAO,SAAS;AAAA,EAC1B,QAAQD,KAAE,MAAME,UAAS,EAAE,SAAS;AAAA,EACpC,UAAUF,KAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,UAAUA,KAAE,QAAQ,EAAE,SAAS;AACjC,CAAC;;;ACbD,SAAS,aAAAG,YAAW,UAAAC,eAAc;AAGlC,SAAS,KAAAC,YAAS;AAEX,IAAM,sBAAsB,eAAe,OAAO;AAAA,EACvD,MAAMA,KAAE,OAAO;AAAA,EACf,iBAAiB,gBAAgB,QAAQ,QAAQ;AAAA,EACjD,MAAMA,KAAE,KAAK,CAAC,eAAe,CAAC,EAAE,SAAS;AAAA,EACzC,UAAUC,QAAO,SAAS;AAAA;AAAA;AAAA;AAAA,EAI1B,YAAYD,KAAE,QAAQ,EAAE,SAAS;AAAA,EACjC,iBAAiBC,QAAO,SAAS;AAAA,EACjC,qBAAqBA,QAAO,SAAS;AAAA,EACrC,sBAAsBA,QAAO,SAAS;AAAA,EACtC,oBAAoBA,QAAO,SAAS;AAAA,EACpC,uBAAuBA,QAAO,SAAS;AAAA,EACvC,QAAQD,KAAE,MAAME,UAAS,EAAE,SAAS;AACtC,CAAC;;;ACpBD,SAAS,UAAAC,SAAQ,oBAAAC,yBAAwB;AAEzC,SAAS,KAAAC,YAAS;AAEX,IAAM,sBAAsB,eAChC,KAAK;AAAA,EACJ,cAAc;AAAA,EACd,eAAe;AAAA,EACf,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AACf,CAAC,EACA,OAAO;AAAA,EACN,OAAOA,KAAE,MAAMC,iBAAgB;AAAA,EAC/B,aAAaC,QAAO,SAAS;AAC/B,CAAC;;;ACnBH,SAAS,YAAAC,kBAAgB;AAIlB,IAAM,sBAAsB,eAChC,KAAK;AAAA,EACJ,MAAM;AAAA,EACN,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AACf,CAAC,EACA,OAAO;AAAA,EACN,aAAaC;AAAA,EACb,IAAIA;AAAA,EACJ,IAAIA;AAAA,EACJ,IAAIA;AAAA,EACJ,IAAIA;AACN,CAAC;;;AClBH,SAAS,YAAAC,kBAAgB;AAEzB,SAAS,KAAAC,YAAS;AAEX,IAAM,sBAAsB,eAChC,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,QAAQA,KAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EAC3C,QAAQA,KAAE,KAAK,CAAC,UAAU,SAAS,MAAM,CAAC,EAAE,SAAS;AAAA,EACrD,aAAaC,WAAS,SAAS;AAAA,EAC/B,OAAOA;AAAA,EACP,QAAQA;AAAA,EACR,cAAcA,WAAS,SAAS;AAClC,CAAC;;;ACbH,SAAS,YAAAC,kBAAgB;AAEzB,SAAS,KAAAC,YAAS;AAEX,IAAM,wBAAwB,eAClC,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,UAAUA,KAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,WAAWA,KAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,aAAaC,WAAS,SAAS;AAAA,EAC/B,QAAQA;AACV,CAAC;;;ACXH,SAAS,YAAAC,YAAU,aAAAC,aAAW,oBAAAC,yBAAwB;AACtD,SAAS,KAAAC,YAAS;AAEX,IAAM,sBAAsBA,KAAE,OAAO;AAAA,EAC1C,GAAGH;AAAA,EACH,GAAGA;AAAA,EACH,KAAKG,KAAE,QAAQ,EAAE,SAAS;AAAA,EAC1B,SAASF,YAAU,SAAS;AAC9B,CAAC;AAEM,IAAM,iBAAiBE,KAAE,OAAO;AAAA,EACrC,KAAKA,KACF,OAAO,EACP,SAAS,EACT;AAAA,IACC;AAAA,EACF;AAAA,EACF,OAAOA,KAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,QAAQD,kBAAiB,GAAG,mBAAmB,EAAE,SAAS;AAAA,EAC1D,SAASC,KACN,MAAMD,iBAAgB,EACtB,GAAGC,KAAE,MAAM,mBAAmB,CAAC,EAC/B,SAAS;AAAA,EACZ,YAAYA,KAAE,OAAO,EAAE,SAAS;AAClC,CAAC;;;ACtBD,SAAS,KAAAC,YAAS;AAEX,IAAM,YAAY,kBAAkB,OAAO;AAAA,EAChD,MAAMA,KAAE,OAAO;AAAA,EACf,WAAWA,KAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,SAASA,KAAE,MAAMA,KAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACtC;AAAA,EACA,YAAYA,KAAE,OAAO,EAAE,GAAGA,KAAE,MAAMA,KAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAC1D,CAAC;;;ACVD,SAAS,UAAAC,gBAAc;AAGvB,SAAS,KAAAC,YAAS;AAeX,IAAM,mBAAmB,eAAe,OAAO;AAAA,EACpD,MAAMA,KAAE,OAAO;AAAA,EACf,iBAAiBA,KACd,KAAK,CAAC,UAAU,YAAY,aAAa,eAAe,cAAc,CAAC,EACvE,QAAQ,QAAQ;AAAA,EACnB,MAAMA,KAAE,KAAK,CAAC,eAAe,CAAC,EAAE,SAAS;AAAA,EACzC,UAAUC,SAAO,SAAS;AAAA,EAC1B,OAAOD,KAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAED,iBAAqE,IAAI;;;AC5BzE,SAAS,YAAAE,kBAAgB;AAGzB,SAAS,KAAAC,YAAS;AAaX,IAAM,mBAAmB,eAC7B,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,OAAOC;AAAA,EACP,QAAQA;AAAA,EACR,aAAaA,WAAS,SAAS;AAAA,EAC/B,UAAUD,KAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,WAAWA,KAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,gBAAgBA,KAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,OAAOA,KAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,cAAcC,WAAS,SAAS;AAClC,CAAC;AAEH,iBAAqE,IAAI;;;AC7BzE;AAAA,EACE,UAAAC;AAAA,EACA,oBAAAC;AAAA,OAEK;AAGP,SAAS,KAAAC,YAAS;AAoBX,IAAM,mBAAmB,eAC7B,KAAK;AAAA,EACJ,cAAc;AAAA,EACd,eAAe;AAAA,EACf,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AACf,CAAC,EACA,OAAO;AAAA,EACN,OAAOA,KAAE,MAAMC,iBAAgB;AAAA,EAC/B,aAAaC,SAAO,SAAS;AAAA,EAC7B,OAAOF,KAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAEH,iBAAqE,IAAI;;;AC7CzE,SAAS,YAAAG,kBAAgB;AAGzB,SAAS,KAAAC,YAAS;AAwBX,IAAM,mBAAmB,eAC7B,KAAK;AAAA,EACJ,cAAc;AAAA,EACd,eAAe;AAAA,EACf,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AACf,CAAC,EACA,OAAO;AAAA,EACN,IAAIC;AAAA,EACJ,IAAIA;AAAA,EACJ,IAAIA;AAAA,EACJ,IAAIA;AAAA,EACJ,aAAaA,WAAS,SAAS;AAAA,EAC/B,OAAOD,KAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,UAAUA,KAAE,QAAQ,EAAE,SAAS;AACjC,CAAC;AAEH,iBAAqE,IAAI;;;ACjDzE,SAAS,YAAAE,YAAU,UAAAC,gBAAc;AAIjC,SAAS,KAAAC,YAAS;AAElB,IAAMC,mBAAkBD,KAAE,MAAM,CAACA,KAAE,OAAO,GAAG,KAAK,CAAC;AA6B5C,IAAM,wBAAwB,eAClC,KAAK;AAAA,EACJ,cAAc;AAAA,EACd,eAAe;AAAA,EACf,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AACf,CAAC,EACA,OAAO;AAAA,EACN,MAAMC;AAAA,EACN,IAAIA;AAAA,EACJ,MAAMD,KAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,QAAQE,WAAS,SAAS;AAAA,EAC1B,MAAMF,KAAE,KAAK,CAAC,eAAe,CAAC,EAAE,SAAS;AAAA,EACzC,UAAUG,SAAO,SAAS;AAAA,EAC1B,OAAOH,KAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,WAAWE,WAAS,SAAS;AAAA,EAC7B,OAAOF,KAAE,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,SAAS;AAAA,EACrC,iBAAiBA,KAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EAC1C,gBAAgBA,KAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EACzC,iBAAiBA,KAAE,QAAQ,IAAI,EAAE,SAAS;AAC5C,CAAC;AAEH;AAAA,EACE;AACF;;;ACxDA,SAAS,KAAAI,YAAS;AA0FlB,IAAM,yBAAyBC,KAAE,MAAMA,KAAE,IAAI,CAAC,EAAE,SAAS,cAAc;AACvE,IAAM,yBAAyBA,KAAE,OAAO;AAAA,EACtC,sBAAsBA,KAAE,MAAMA,KAAE,IAAI,CAAC;AAAA,EACrC,UAAU,aAAa,SAAS;AAClC,CAAC;AACD,IAAM,sBAAsBA,KACzB,SAAS,EACT,KAAKA,KAAE,OAAO,CAAC,EACf,QAAQA,KAAE,QAAQ,sBAAsB,CAAC,EACzC;AAAA,EACCA,KACG,SAAS,EACT;AAAA,IACCA,KAAE,OAAO;AAAA,IACTA,KAAE,OAAO,EAAE,kBAAkB,SAAS,SAAS,EAAE,CAAC,EAAE,SAAS;AAAA,EAC/D,EACC,QAAQA,KAAE,QAAQ,sBAAsB,CAAC;AAC9C,EACC,SAAS,uDAAuD;AAEnE,IAAM,2BAA2BA,KAAE,OAAO;AAAA,EACxC,aAAaA,KACV,SAAS,EACT,KAAKA,KAAE,OAAO,CAAC,EACf,QAAQA,KAAE,QAAQ,sBAAsB,CAAC,EACzC;AAAA,IACC;AAAA,EACF;AACJ,CAAC;AAED,IAAM,8BAA8BA,KAAE,OAAO;AAAA,EAC3C,qBAAqBA,KAAE,OAAO,EAAE,SAAS;AAAA,EACzC,6BAA6B;AAC/B,CAAC;AAED,IAAM,iBAAiBA,KAAE,OAAO;AAAA,EAC9B,UAAUA,KACP,SAAS,EACT,KAAKA,KAAE,OAAO,CAAC,EACf,QAAQA,KAAE,QAAQ,2BAA2B,CAAC,EAC9C;AAAA,IACC;AAAA,EACF;AACJ,CAAC;AAED,IAAM,qBAAqBA,KAAE;AAAA,EAC3B,CAAC,UAAU,OAAO,UAAU;AAC9B;AAEA,IAAM,qBAAqBA,KAAE,OAAO;AAAA,EAClC,KAAKA,KACF,SAAS,EACT,KAAK,EACL,QAAQA,KAAE,QAAQA,KAAE,QAAQ,CAAC,CAAC,EAC9B,SAAS,oBAAoB;AAAA,EAChC,0BAA0BA,KACvB,SAAS,EACT,KAAK,EACL,QAAQA,KAAE,QAAQA,KAAE,IAAI,CAAC,CAAC,EAC1B,SAAS,mCAAmC;AACjD,CAAC;AAED,IAAM,uBAAuBA,KAAE,OAAO;AAAA,EACpC,kBAAkBA,KACf,SAAS,EACT,KAAKA,KAAE,IAAI,GAAGA,KAAE,IAAI,EAAE,SAAS,CAAC,EAChC,QAAQA,KAAE,MAAM,CAAC,oBAAoBA,KAAE,QAAQ,kBAAkB,CAAC,CAAC,CAAC,EACpE,SAAS,+BAA+B;AAC7C,CAAC;AAEM,IAAM,iBAAiBA,KAAE,OAAO;AAAA,EACrC,aAAa,YAAY,SAAS;AAAA,EAClC,YAAY,eAAe,SAAS;AAAA,EACpC,eAAeA,KAAE,OAAOA,KAAE,OAAO,GAAG,oBAAoB,EAAE,SAAS;AAAA,EACnE,gBAAgBA,KAAE,OAAO,EAAE,SAAS;AAAA,EACpC,oBAAoBA,KAAE,OAAO,EAAE,SAAS;AAAA,EACxC,aAAaA,KAAE,OAAO,EAAE,SAAS;AAAA,EACjC,gBAAgBA,KAAE,OAAO,EAAE,SAAS;AAAA,EACpC,SAASA,KAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,KAAKA,KAAE,OAAO,EAAE,SAAS;AAAA,EACzB,mCAAmCA,KAAE,QAAQ,EAAE,SAAS;AAAA,EACxD,mBAAmBA,KAChB,MAAMA,KAAE,OAAO,CAAC,EAChB;AAAA,IACC;AAAA,EACF,EACC,SAAS;AAAA,EACZ,cAAcA,KACX,OAAO,EACP;AAAA,IACC;AAAA,EACF,EACC,SAAS;AAAA,EACZ,oBAAoB,mBAAmB,SAAS;AAAA,EAChD,kBAAkBA,KAAE,IAAI,EAAE,SAAS;AAAA,EACnC,aAAaA,KAAE,QAAQ,EAAE,SAAS;AAAA,EAClC,mBAAmBA,KAAE,QAAQ,EAAE,SAAS;AAAA,EACxC,qBAAqBA,KAAE,QAAQ,EAAE,SAAS;AAAA,EAC1C,gBAAgBA,KAAE,OAAOA,KAAE,OAAO,GAAG,cAAc,EAAE,SAAS;AAAA,EAC9D,qBAAqBA,KAClB;AAAA,IACCA,KAAE,OAAO;AAAA,IACTA,KAAE,MAAM;AAAA,MACN;AAAA,MACAA,KAAE;AAAA,QACAA,KAAE,OAAO;AAAA,QACTA,KAAE,MAAM,CAAC,wBAAwB,mBAAmB,CAAC;AAAA,MACvD;AAAA,IACF,CAAC;AAAA,EACH,EACC,SAAS;AAAA,EACZ,wBAAwBA,KACrB,OAAOA,KAAE,OAAO,GAAG,wBAAwB,EAC3C,SAAS;AAAA,EACZ,mCAAmCA,KAChC,SAAS,EACT,KAAKA,KAAE,OAAO,CAAC,EACf,QAAQA,KAAE,QAAQA,KAAE,OAAO,CAAC,CAAC,EAC7B;AAAA,IACC;AAAA,EACF,EACC,SAAS;AACd,CAAC;AAED,iBAAiE,IAAI;;;AC5NrE,OAAkB;AAelB,IAAM,uBAAuB;AAEtB,IAAM,gBAAgB,qBAAqB,KAAK;AAAA,EACrD,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,KAAK;AAAA,EACL,mCAAmC;AAAA,EACnC,mBAAmB;AAAA,EACnB,cAAc;AAAA,EACd,oBAAoB;AACtB,CAAC;AAED,iBAA+D,IAAI;","names":["z","z","distance","z","z","z","distance","z","z","z","z","distance","z","distance","distance","z","distance","z","z","distance","z","z","distance","z","distance","z","distance","z","z","distance","z","z","length","distance","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","point","z","point","z","z","z","point","z","point","z","z","z","length","distance","z","z","z","distance","distance","distance","supplier_name","z","connectionTarget","supplier_name","distance","distance","z","distance","z","distance","z","distance","z","z","z","distance","z","distance","z","resistance","z","resistance","z","frequency","capacitance","z","frequency","capacitance","distance","z","z","distance","capacitance","z","capacitance","z","z","z","z","z","z","z","z","z","z","z","z","distance","route_hint_point","z","z","distance","route_hint_point","layer_ref","z","layer_ref","z","voltage","z","z","voltage","distance","z","z","distance","z","rotation","z","z","rotation","z","z","z","z","z","z","z","z","connectionTarget","connectionsProp","z","z","ms","frequency","z","frequency","ms","length","z","length","distance","z","distance","length","route_hint_point","z","route_hint_point","length","distance","length","z","distance","length","distance","route_hint_point","z","distance","layer_ref","z","layer_ref","distance","distance","z","z","distance","z","distance","z","distance","distance","z","distance","length","z","length","z","layer_ref","z","layer_ref","z","layer_ref","z","voltage","voltage","frequency","rotation","voltage","z","voltage","frequency","rotation","z","distance","point","rotation","z","z","point","distance","rotation","z","distance","z","z","distance","distance","point","z","z","point","distance","distance","rotation","z","z","distance","rotation","distance","z","z","distance","distance","rotation","z","z","z","distance","rotation","point","z","z","point","distance","z","z","distance","distance","z","z","distance","distance","z","z","distance","layer_ref","length","z","length","layer_ref","layer_ref","length","z","length","layer_ref","length","route_hint_point","z","route_hint_point","length","distance","distance","distance","z","distance","distance","z","distance","distance","layer_ref","route_hint_point","z","z","length","z","length","distance","z","distance","length","route_hint_point","z","route_hint_point","length","distance","z","distance","distance","length","z","dimensionTarget","distance","length","z","z"]}
|
|
1
|
+
{"version":3,"sources":["../lib/typecheck.ts","../lib/common/direction.ts","../lib/common/portHints.ts","../lib/common/layout.ts","../lib/common/distance.ts","../lib/common/cadModel.ts","../lib/common/point3.ts","../lib/common/footprintProp.ts","../lib/common/pcbStyle.ts","../lib/common/schStyle.ts","../lib/common/symbolProp.ts","../lib/generated/footprinter-autocomplete.ts","../lib/common/schematicOrientation.ts","../lib/common/schematicPinDefinitions.ts","../lib/common/schematicPinStyle.ts","../lib/common/schematicPinLabel.ts","../lib/common/schematicSize.ts","../lib/common/ninePointAnchor.ts","../lib/common/point.ts","../lib/components/board.ts","../lib/components/group.ts","../lib/manual-edits/manual-edit-events/base_manual_edit_event.ts","../lib/manual-edits/manual-edit-events/edit_pcb_component_location_event.ts","../lib/manual-edits/manual-edit-events/edit_trace_hint_event.ts","../lib/manual-edits/manual-edit-events/edit_schematic_component_location_event.ts","../lib/manual-edits/manual-edit-events/edit_pcb_group_location_event.ts","../lib/manual-edits/manual-edit-events/edit_schematic_group_location_event.ts","../lib/manual-edits/manual_edit_event.ts","../lib/manual-edits/manual_edits_file.ts","../lib/manual-edits/manual_pcb_placement.ts","../lib/manual-edits/manual_trace_hint.ts","../lib/manual-edits/manual_schematic_placement.ts","../lib/common/connectionsProp.ts","../lib/components/panel.ts","../lib/components/subpanel.ts","../lib/components/breakout.ts","../lib/components/chip.ts","../lib/components/pinout.ts","../lib/components/jumper.ts","../lib/components/solderjumper.ts","../lib/components/connector.ts","../lib/components/interconnect.ts","../lib/components/fuse.ts","../lib/components/platedhole.ts","../lib/components/resistor.ts","../lib/components/potentiometer.ts","../lib/components/crystal.ts","../lib/components/resonator.ts","../lib/components/stampboard.ts","../lib/components/capacitor.ts","../lib/components/net.ts","../lib/components/fiducial.ts","../lib/components/constrainedlayout.ts","../lib/components/constraint.ts","../lib/components/cutout.ts","../lib/components/smtpad.ts","../lib/components/solderpaste.ts","../lib/components/hole.ts","../lib/components/trace.ts","../lib/components/footprint.ts","../lib/components/symbol.ts","../lib/components/battery.ts","../lib/components/pin-header.ts","../lib/common/pcbOrientation.ts","../lib/components/netalias.ts","../lib/components/netlabel.ts","../lib/components/push-button.ts","../lib/components/subcircuit.ts","../lib/components/analogsimulation.ts","../lib/components/transistor.ts","../lib/components/mosfet.ts","../lib/components/inductor.ts","../lib/components/diode.ts","../lib/components/led.ts","../lib/components/switch.ts","../lib/components/fabrication-note-text.ts","../lib/components/fabrication-note-rect.ts","../lib/components/fabrication-note-path.ts","../lib/components/fabrication-note-dimension.ts","../lib/components/pcb-trace.ts","../lib/components/via.ts","../lib/components/testpoint.ts","../lib/components/breakoutpoint.ts","../lib/components/pcb-keepout.ts","../lib/components/courtyard-rect.ts","../lib/components/courtyard-outline.ts","../lib/components/copper-pour.ts","../lib/components/cadassembly.ts","../lib/components/cadmodel.ts","../lib/components/power-source.ts","../lib/components/voltagesource.ts","../lib/components/currentsource.ts","../lib/components/voltageprobe.ts","../lib/components/schematic-arc.ts","../lib/components/toolingrail.ts","../lib/components/schematic-box.ts","../lib/components/schematic-circle.ts","../lib/components/schematic-rect.ts","../lib/components/schematic-line.ts","../lib/components/schematic-text.ts","../lib/common/fivePointAnchor.ts","../lib/components/schematic-path.ts","../lib/components/schematic-table.ts","../lib/components/schematic-row.ts","../lib/components/schematic-cell.ts","../lib/components/copper-text.ts","../lib/components/silkscreen-text.ts","../lib/components/silkscreen-path.ts","../lib/components/silkscreen-line.ts","../lib/components/silkscreen-rect.ts","../lib/components/silkscreen-circle.ts","../lib/components/trace-hint.ts","../lib/components/port.ts","../lib/components/pcb-note-text.ts","../lib/components/pcb-note-rect.ts","../lib/components/pcb-note-path.ts","../lib/components/pcb-note-line.ts","../lib/components/pcb-note-dimension.ts","../lib/platformConfig.ts","../lib/projectConfig.ts"],"sourcesContent":["import type { TypeEqual } from \"ts-expect\"\n\ntype IsNever<T> = [T] extends [never] ? true : false\n\ntype GetMismatchedProps<T1, T2> = {\n [K in keyof T1 & keyof T2]: T1[K] extends T2[K]\n ? T2[K] extends T1[K]\n ? never\n : K\n : K\n}[keyof T1 & keyof T2]\n\nexport const expectTypesMatch = <\n const T1,\n const T2,\n T3 = Exclude<keyof T1, keyof T2>,\n T4 = Exclude<keyof T2, keyof T1>,\n T5 = GetMismatchedProps<T1, T2>,\n>(\n shouldBe: IsNever<T3> extends true\n ? IsNever<T4> extends true\n ? IsNever<T5> extends true\n ? TypeEqual<T1, T2>\n : `property ${T5 extends string ? T5 : \"\"} has mismatched types`\n : `extra props ${T4 extends string ? T4 : \"\"}`\n : `missing props ${T3 extends string ? T3 : \"\"}`,\n): void => {}\n\n// ------ TESTS -------\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: number\n b: number\n }\n>(\"extra props b\")\n\nexpectTypesMatch<\n {\n a: number\n b: number\n },\n {\n a: number\n }\n>(\"missing props b\")\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: number\n }\n>(true)\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: string\n }\n>(\"property a has mismatched types\")\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nexport const direction = z.enum([\"up\", \"down\", \"left\", \"right\"])\nexport type Direction = \"up\" | \"down\" | \"left\" | \"right\"\n\nexport type DirectionAlongEdge =\n | \"top-to-bottom\"\n | \"left-to-right\"\n | \"bottom-to-top\"\n | \"right-to-left\"\n\nexport const directionAlongEdge = z.enum([\n \"top-to-bottom\",\n \"left-to-right\",\n \"bottom-to-top\",\n \"right-to-left\",\n])\n\nexpectTypesMatch<Direction, z.infer<typeof direction>>(true)\nexpectTypesMatch<DirectionAlongEdge, z.infer<typeof directionAlongEdge>>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const portHints = z.array(z.string().or(z.number()))\nexport type PortHints = (string | number)[]\n\nexpectTypesMatch<PortHints, z.infer<typeof portHints>>(true)\n","import {\n type LayerRefInput,\n distance,\n layer_ref,\n rotation,\n supplier_name,\n} from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { pcbCoordinate } from \"./distance\"\nimport { z } from \"zod\"\nimport { type CadModelProp, cadModelProp } from \"./cadModel\"\nimport { type FootprintProp, footprintProp } from \"./footprintProp\"\nimport { pcbStyle, type PcbStyle } from \"./pcbStyle\"\nimport { schStyle, type SchStyle } from \"./schStyle\"\nimport { type SymbolProp, symbolProp } from \"./symbolProp\"\n\nexport type PcbPositionMode =\n | \"relative_to_group_anchor\"\n | \"auto\"\n | \"relative_to_board_anchor\"\n | \"relative_to_component_anchor\"\n\n/** @deprecated Use {@link PcbPositionMode} instead. */\nexport type PositionMode = PcbPositionMode\n\nexport interface PcbLayoutProps {\n pcbX?: string | number\n pcbY?: string | number\n /**\n * Position the left, right, top, or bottom edge of the component. Setting any of these\n * properties changes the anchor used for pcb positioning to the specified edge.\n */\n pcbLeftEdgeX?: string | number\n pcbRightEdgeX?: string | number\n pcbTopEdgeY?: string | number\n pcbBottomEdgeY?: string | number\n pcbOffsetX?: string | number\n pcbOffsetY?: string | number\n pcbRotation?: string | number\n pcbPositionAnchor?: string\n pcbPositionMode?: PcbPositionMode\n layer?: LayerRefInput\n pcbMarginTop?: string | number\n pcbMarginRight?: string | number\n pcbMarginBottom?: string | number\n pcbMarginLeft?: string | number\n pcbMarginX?: string | number\n pcbMarginY?: string | number\n pcbStyle?: PcbStyle\n /**\n * If true, pcbX/pcbY will be interpreted relative to the parent group\n */\n pcbRelative?: boolean\n /**\n * If true, both pcb and schematic coordinates will be interpreted relative to the parent group\n */\n relative?: boolean\n}\n\nexport interface CommonLayoutProps {\n pcbX?: string | number\n pcbY?: string | number\n /**\n * Position the left, right, top, or bottom edge of the component. Setting any of these\n * properties changes the anchor used for pcb positioning to the specified edge.\n */\n pcbLeftEdgeX?: string | number\n pcbRightEdgeX?: string | number\n pcbTopEdgeY?: string | number\n pcbBottomEdgeY?: string | number\n pcbOffsetX?: string | number\n pcbOffsetY?: string | number\n pcbRotation?: string | number\n pcbPositionAnchor?: string\n pcbPositionMode?: PcbPositionMode\n\n pcbMarginTop?: string | number\n pcbMarginRight?: string | number\n pcbMarginBottom?: string | number\n pcbMarginLeft?: string | number\n pcbMarginX?: string | number\n pcbMarginY?: string | number\n pcbStyle?: PcbStyle\n\n schMarginTop?: string | number\n schMarginRight?: string | number\n schMarginBottom?: string | number\n schMarginLeft?: string | number\n schMarginX?: string | number\n schMarginY?: string | number\n\n schX?: string | number\n schY?: string | number\n schRotation?: string | number\n\n layer?: LayerRefInput\n footprint?: FootprintProp\n symbol?: SymbolProp\n schStyle?: SchStyle\n\n /**\n * If true, X/Y coordinates will be interpreted relative to the parent group\n */\n relative?: boolean\n\n /**\n * If true, schX/schY will be interpreted relative to the parent group\n */\n schRelative?: boolean\n\n /**\n * If true, pcbX/pcbY will be interpreted relative to the parent group\n */\n pcbRelative?: boolean\n}\n\nexport const pcbLayoutProps = z.object({\n pcbX: pcbCoordinate.optional(),\n pcbY: pcbCoordinate.optional(),\n pcbLeftEdgeX: pcbCoordinate.optional(),\n pcbRightEdgeX: pcbCoordinate.optional(),\n pcbTopEdgeY: pcbCoordinate.optional(),\n pcbBottomEdgeY: pcbCoordinate.optional(),\n pcbOffsetX: distance.optional(),\n pcbOffsetY: distance.optional(),\n pcbRotation: rotation.optional(),\n pcbPositionAnchor: z.string().optional(),\n pcbPositionMode: z\n .enum([\n \"relative_to_group_anchor\",\n \"auto\",\n \"relative_to_board_anchor\",\n \"relative_to_component_anchor\",\n ])\n .optional(),\n layer: layer_ref.optional(),\n pcbMarginTop: distance.optional(),\n pcbMarginRight: distance.optional(),\n pcbMarginBottom: distance.optional(),\n pcbMarginLeft: distance.optional(),\n pcbMarginX: distance.optional(),\n pcbMarginY: distance.optional(),\n pcbStyle: pcbStyle.optional(),\n pcbRelative: z.boolean().optional(),\n relative: z.boolean().optional(),\n})\ntype InferredPcbLayoutProps = z.input<typeof pcbLayoutProps>\nexpectTypesMatch<PcbLayoutProps, InferredPcbLayoutProps>(true)\n\nexport const commonLayoutProps = z.object({\n pcbX: pcbCoordinate.optional(),\n pcbY: pcbCoordinate.optional(),\n pcbLeftEdgeX: pcbCoordinate.optional(),\n pcbRightEdgeX: pcbCoordinate.optional(),\n pcbTopEdgeY: pcbCoordinate.optional(),\n pcbBottomEdgeY: pcbCoordinate.optional(),\n pcbOffsetX: distance.optional(),\n pcbOffsetY: distance.optional(),\n pcbRotation: rotation.optional(),\n pcbPositionAnchor: z.string().optional(),\n pcbPositionMode: z\n .enum([\n \"relative_to_group_anchor\",\n \"auto\",\n \"relative_to_board_anchor\",\n \"relative_to_component_anchor\",\n ])\n .optional(),\n pcbMarginTop: distance.optional(),\n pcbMarginRight: distance.optional(),\n pcbMarginBottom: distance.optional(),\n pcbMarginLeft: distance.optional(),\n pcbMarginX: distance.optional(),\n pcbMarginY: distance.optional(),\n pcbStyle: pcbStyle.optional(),\n schMarginTop: distance.optional(),\n schMarginRight: distance.optional(),\n schMarginBottom: distance.optional(),\n schMarginLeft: distance.optional(),\n schMarginX: distance.optional(),\n schMarginY: distance.optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n layer: layer_ref.optional(),\n footprint: footprintProp.optional(),\n symbol: symbolProp.optional(),\n schStyle: schStyle.optional(),\n relative: z.boolean().optional(),\n schRelative: z.boolean().optional(),\n pcbRelative: z.boolean().optional(),\n})\n\ntype InferredCommonLayoutProps = z.input<typeof commonLayoutProps>\nexpectTypesMatch<CommonLayoutProps, InferredCommonLayoutProps>(true)\n\nexport type SupplierName =\n | \"jlcpcb\"\n | \"macrofab\"\n | \"pcbway\"\n | \"digikey\"\n | \"mouser\"\n | \"lcsc\"\nexport type SupplierPartNumbers = { [k in SupplierName]?: string[] }\nexport interface SupplierProps {\n supplierPartNumbers?: SupplierPartNumbers\n}\nexport const supplierProps = z.object({\n supplierPartNumbers: z.record(supplier_name, z.array(z.string())).optional(),\n})\n\nexpectTypesMatch<SupplierProps, z.input<typeof supplierProps>>(true)\n\nexport interface PinAttributeMap {\n providesPower?: boolean\n requiresPower?: boolean\n providesGround?: boolean\n requiresGround?: boolean\n providesVoltage?: string | number\n requiresVoltage?: string | number\n doNotConnect?: boolean\n includeInBoardPinout?: boolean\n highlightColor?: string\n mustBeConnected?: boolean\n}\n\nexport const pinAttributeMap = z.object({\n providesPower: z.boolean().optional(),\n requiresPower: z.boolean().optional(),\n providesGround: z.boolean().optional(),\n requiresGround: z.boolean().optional(),\n providesVoltage: z.union([z.string(), z.number()]).optional(),\n requiresVoltage: z.union([z.string(), z.number()]).optional(),\n doNotConnect: z.boolean().optional(),\n includeInBoardPinout: z.boolean().optional(),\n highlightColor: z.string().optional(),\n mustBeConnected: z.boolean().optional(),\n})\n\nexpectTypesMatch<PinAttributeMap, z.input<typeof pinAttributeMap>>(true)\n\nexport interface CommonComponentProps<PinLabel extends string = string>\n extends CommonLayoutProps {\n key?: any\n name: string\n pinAttributes?: Record<PinLabel, PinAttributeMap>\n supplierPartNumbers?: SupplierPartNumbers\n cadModel?: CadModelProp\n children?: any\n symbolName?: string\n doNotPlace?: boolean\n /**\n * Does this component take up all the space within its bounds on a layer. This is generally true\n * except for when separated pin headers are being represented by a single component (in which case,\n * chips can be placed between the pin headers) or for tall modules where chips fit underneath.\n */\n obstructsWithinBounds?: boolean\n /**\n * Whether to show this component's CAD model as translucent in the 3D viewer.\n */\n showAsTranslucentModel?: boolean\n}\n\nexport const commonComponentProps = commonLayoutProps\n .merge(supplierProps)\n .extend({\n key: z.any().optional(),\n name: z.string(),\n cadModel: cadModelProp.optional(),\n children: z.any().optional(),\n symbolName: z.string().optional(),\n doNotPlace: z.boolean().optional(),\n obstructsWithinBounds: z\n .boolean()\n .optional()\n .describe(\n \"Does this component take up all the space within its bounds on a layer. This is generally true except for when separated pin headers are being represented by a single component (in which case, chips can be placed between the pin headers) or for tall modules where chips fit underneath\",\n ),\n showAsTranslucentModel: z\n .boolean()\n .optional()\n .describe(\n \"Whether to show this component's CAD model as translucent in the 3D viewer.\",\n ),\n pinAttributes: z.record(z.string(), pinAttributeMap).optional(),\n })\n\ntype InferredCommonComponentProps = z.input<typeof commonComponentProps>\nexpectTypesMatch<CommonComponentProps, InferredCommonComponentProps>(true)\n\nexport const componentProps = commonComponentProps\nexport type ComponentProps = z.input<typeof componentProps>\n\nexport const lrPins = [\"pin1\", \"left\", \"pin2\", \"right\"] as const\nexport const lrPolarPins = [\n \"pin1\",\n \"left\",\n \"anode\",\n \"pos\",\n \"pin2\",\n \"right\",\n \"cathode\",\n \"neg\",\n] as const\n\nexport const distanceOrMultiplier = distance.or(z.enum([\"2x\", \"3x\", \"4x\"]))\n","import { distance as baseDistance, length } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport type Distance = number | string\n\nconst calcString = z.string().regex(/^calc\\(.*\\)$/)\n\nexport const distance = baseDistance\nexport const pcbCoordinate = calcString.or(baseDistance)\n\nexport { length }\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { distance, type Distance } from \"./distance\"\nimport { point3 } from \"./point3\"\nimport type { ReactElement } from \"react\"\n\nexport const rotationPoint3 = z.object({\n x: z.union([z.number(), z.string()]),\n y: z.union([z.number(), z.string()]),\n z: z.union([z.number(), z.string()]),\n})\n\nexport interface CadModelBase {\n rotationOffset?:\n | number\n | { x: number | string; y: number | string; z: number | string }\n positionOffset?: {\n x: number | string\n y: number | string\n z: number | string\n }\n size?: { x: number | string; y: number | string; z: number | string }\n modelUnitToMmScale?: Distance\n zOffsetFromSurface?: Distance\n}\n\nexport const cadModelBase = z.object({\n rotationOffset: z.number().or(rotationPoint3).optional(),\n positionOffset: point3.optional(),\n size: point3.optional(),\n modelUnitToMmScale: distance.optional(),\n zOffsetFromSurface: distance.optional(),\n})\n\nexpectTypesMatch<CadModelBase, z.input<typeof cadModelBase>>(true)\n\nexport interface CadModelStl extends CadModelBase {\n stlUrl: string\n}\nexport const cadModelStl = cadModelBase.extend({\n stlUrl: z.string(),\n})\n\nexport interface CadModelObj extends CadModelBase {\n objUrl: string\n mtlUrl?: string\n}\nexport const cadModelObj = cadModelBase.extend({\n objUrl: z.string(),\n mtlUrl: z.string().optional(),\n})\n\nexport interface CadModelGltf extends CadModelBase {\n gltfUrl: string\n}\nexport const cadModelGltf = cadModelBase.extend({\n gltfUrl: z.string(),\n})\n\nexport interface CadModelGlb extends CadModelBase {\n glbUrl: string\n}\nexport const cadModelGlb = cadModelBase.extend({\n glbUrl: z.string(),\n})\n\nexport interface CadModelStep extends CadModelBase {\n stepUrl: string\n}\nexport const cadModelStep = cadModelBase.extend({\n stepUrl: z.string(),\n})\n\nexport interface CadModelWrl extends CadModelBase {\n wrlUrl: string\n}\nexport const cadModelWrl = cadModelBase.extend({\n wrlUrl: z.string(),\n})\n\nexport interface CadModelJscad extends CadModelBase {\n jscad: Record<string, any>\n}\nexport const cadModelJscad = cadModelBase.extend({\n jscad: z.record(z.any()),\n})\n\nexport type CadModelProp =\n | null\n | string\n | ReactElement\n | CadModelStl\n | CadModelObj\n | CadModelGltf\n | CadModelGlb\n | CadModelStep\n | CadModelWrl\n | CadModelJscad\n\nexport const cadModelProp = z.union([\n z.null(),\n z.string(),\n z.custom<ReactElement>((v) => {\n return v && typeof v === \"object\" && \"type\" in v && \"props\" in v\n }),\n cadModelStl,\n cadModelObj,\n cadModelGltf,\n cadModelGlb,\n cadModelStep,\n cadModelWrl,\n cadModelJscad,\n])\n\ntype InferredCadModelProp = z.input<typeof cadModelProp>\nexpectTypesMatch<CadModelProp, InferredCadModelProp>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const point3 = z.object({\n x: distance,\n y: distance,\n z: distance,\n})\n","import type { LayerRef } from \"circuit-json\"\nimport type { ReactElement } from \"react\"\nimport { z } from \"zod\"\nimport { type AutocompleteString } from \"./autocomplete\"\nimport type { KicadAutocompleteStringPath } from \"../generated/kicad-autocomplete\"\nimport type { FootprinterStringExample } from \"../generated/footprinter-autocomplete\"\n\n/**\n * This is an abbreviated definition of the soup elements that you can find here:\n * https://docs.tscircuit.com/api-reference/advanced/soup#pcb-smtpad\n */\nexport type FootprintSoupElements = {\n type: \"pcb_smtpad\" | \"pcb_plated_hole\"\n x: string | number\n y: string | number\n layer?: LayerRef\n holeDiameter?: string | number\n outerDiameter?: string | number\n shape?: \"circle\" | \"rect\"\n width?: string | number\n height?: string | number\n portHints?: string[]\n}\n\nexport type BasicFootprint =\n | \"0402\"\n | \"0603\"\n | \"0805\"\n | \"1206\"\n | \"1210\"\n | \"dip\"\n | \"axial\"\n | \"soic\"\n | \"bga\"\n | \"tssop\"\n | \"stampboard\"\n | \"stampreceiver\"\n | \"hc49\"\n | \"to92\"\n | \"to220\"\n | \"ssop\"\n | \"qfp\"\n | \"qfn\"\n | \"sot23\"\n | \"sot23_5\"\n | \"sot223\"\n | \"pinrow\"\n\ntype FootprinterStringAutocomplete = BasicFootprint | FootprinterStringExample\n\nexport type FootprintProp =\n | AutocompleteString<FootprinterStringAutocomplete>\n | KicadAutocompleteStringPath\n | ReactElement\n | FootprintSoupElements[]\n\nexport const footprintProp = z.custom<FootprintProp>((v) => true)\n","import { distance } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface PcbStyle {\n silkscreenFontSize?: string | number\n viaPadDiameter?: string | number\n viaHoleDiameter?: string | number\n silkscreenTextPosition?:\n | \"centered\"\n | \"outside\"\n | \"none\"\n | {\n offsetX: number\n offsetY: number\n }\n silkscreenTextVisibility?: \"hidden\" | \"visible\" | \"inherit\"\n}\n\nexport const pcbStyle = z.object({\n silkscreenFontSize: distance.optional(),\n viaPadDiameter: distance.optional(),\n viaHoleDiameter: distance.optional(),\n silkscreenTextPosition: z\n .union([\n z.enum([\"centered\", \"outside\", \"none\"]),\n z.object({\n offsetX: z.number(),\n offsetY: z.number(),\n }),\n ])\n .optional(),\n silkscreenTextVisibility: z.enum([\"hidden\", \"visible\", \"inherit\"]).optional(),\n})\n\nexpectTypesMatch<PcbStyle, z.input<typeof pcbStyle>>(true)\n","import { distance } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface SchStyle {\n defaultPassiveSize?: \"xs\" | \"sm\" | \"md\" | string | number\n defaultCapacitorOrientation?: \"vertical\" | \"none\"\n}\n\nexport const schStyle = z.object({\n defaultPassiveSize: z\n .union([z.enum([\"xs\", \"sm\", \"md\"]), distance])\n .optional(),\n defaultCapacitorOrientation: z.enum([\"vertical\", \"none\"]).optional(),\n})\n\nexpectTypesMatch<SchStyle, z.input<typeof schStyle>>(true)\n","import type { ReactElement } from \"react\"\nimport { z } from \"zod\"\n\nexport type SymbolProp = string | ReactElement\n\nexport const symbolProp = z.custom<SymbolProp>((v) => true)\n","import type { AutocompleteString } from \"../common/autocomplete\"\n\nexport const footprinterStringExamples = [\n \"0402_p1.02mm_pw0.54mm_ph0.64mm_w1.56mm_h0.64mm\",\n \"0603_p1.65mm_pw0.8mm_ph0.95mm_w2.45mm_h0.95mm\",\n \"0805_p1.825mm_pw1.025mm_ph1.4mm_w2.85mm_h1.4mm\",\n \"1206_p2.925mm_pw1.125mm_ph1.75mm_w4.05mm_h1.75mm\",\n \"1210_p2.925mm_pw1.125mm_ph2.65mm_w4.05mm_h2.65mm\",\n \"dip6_w7.62mm_p2.54mm_id1mm_od1.5mm\",\n \"axial_p2.54mm_id0.7mm_od1.4mm\",\n \"soic8_w5.3mm_p1.27mm_pw0.6mm_pl1mm\",\n \"bga64_grid8x8_p0.8mm_ball0.47mm_pad0.38mm_tlorigin\",\n \"tssop8_w7.1mm_p0.65mm_pl1.35mm_pw0.4mm_legsoutside\",\n \"stampboard_w22.58mm_left20_right20_top2_bottom2_p2.54mm_pw1.6mm_pl2.4mm_innerholeedgedistance1.61mm_silkscreenlabelmargin0.1mm\",\n \"stampreceiver_w22.58mm_left20_right20_top2_bottom2_p2.54mm_pw1.6mm_pl3.2mm_innerholeedgedistance1.61mm\",\n \"hc49_p4.88mm_id0.8mm_od1.5mm_w5.6mm_h3.5mm\",\n \"to92_p1.27mm_id0.72mm_od0.95mm_w4.5mm_h4.5mm\",\n \"to220_3_p2.6mm_id1mm_od1.9mm_w13mm_h7mm\",\n \"ssop8_w3.9mm_p1.27mm_pw0.6mm_pl1mm\",\n \"qfp64_w10mm_h10mm_p0.5mm_pw0.25mm_pl1mm_legsoutside\",\n \"qfn64_w10mm_h10mm_p0.5mm_pw0.25mm_pl0.875mm\",\n \"sot23_w1.92mm_h2.74mm_p0.95mm_pl0.8mm_pw0.764mm\",\n \"sot23_5_w1.92mm_h2.74mm_p0.95mm_pl0.8mm_pw0.764mm\",\n \"sot223_w8.5mm_h6.9mm_p2.3mm_pl2mm_pw1.5mm\",\n \"pinrow6_rows1_p2.54mm_id1mm_od1.5mm_male\",\n] as const\n\nexport type FootprinterStringExample =\n (typeof footprinterStringExamples)[number]\n\nexport type FootprinterAutocompleteString =\n AutocompleteString<FootprinterStringExample>\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport const schematicOrientation = z\n .enum([\n \"vertical\",\n \"horizontal\",\n \"pos_top\",\n \"pos_bottom\",\n \"pos_left\",\n \"pos_right\",\n \"neg_top\",\n \"neg_bottom\",\n \"neg_left\",\n \"neg_right\",\n ])\n .describe(\n \"horizontal means pins go 1->2 rightward and vertical means pins go 1->2 downward (generally, positive on top)\",\n )\n\nexport type SchematicOrientation =\n | \"vertical\"\n | \"horizontal\"\n | \"pos_top\"\n | \"pos_bottom\"\n | \"pos_left\"\n | \"pos_right\"\n | \"neg_top\"\n | \"neg_bottom\"\n | \"neg_left\"\n | \"neg_right\"\n\nexpectTypesMatch<SchematicOrientation, z.infer<typeof schematicOrientation>>(\n true,\n)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\n/**\n * @deprecated Use SchematicPortArrangementWithPinCounts instead.\n */\nexport interface SchematicPortArrangementWithSizes {\n leftSize?: number\n topSize?: number\n rightSize?: number\n bottomSize?: number\n}\n\n/**\n * Specifies the number of pins on each side of the schematic box component.\n */\nexport interface SchematicPortArrangementWithPinCounts {\n leftPinCount?: number\n topPinCount?: number\n rightPinCount?: number\n bottomPinCount?: number\n}\n\nexport interface PinSideDefinition {\n pins: Array<number | string>\n direction:\n | \"top-to-bottom\"\n | \"left-to-right\"\n | \"bottom-to-top\"\n | \"right-to-left\"\n}\n\nexport interface SchematicPortArrangementWithSides {\n leftSide?: PinSideDefinition\n topSide?: PinSideDefinition\n rightSide?: PinSideDefinition\n bottomSide?: PinSideDefinition\n}\n\nexport interface SchematicPortArrangement\n extends SchematicPortArrangementWithSizes,\n SchematicPortArrangementWithSides,\n SchematicPortArrangementWithPinCounts {}\n\nexport type SchematicPinArrangement = SchematicPortArrangement\nexport type SchematicPinArrangementWithSizes = SchematicPortArrangementWithSizes\nexport type SchematicPinArrangementWithSides = SchematicPortArrangementWithSides\nexport type SchematicPinArrangementWithPinCounts =\n SchematicPortArrangementWithPinCounts\n\nexport const explicitPinSideDefinition = z.object({\n pins: z.array(z.union([z.number(), z.string()])),\n direction: z.union([\n z.literal(\"top-to-bottom\"),\n z.literal(\"left-to-right\"),\n z.literal(\"bottom-to-top\"),\n z.literal(\"right-to-left\"),\n ]),\n})\n\n/**\n * @deprecated Use schematicPinArrangement instead.\n */\nexport const schematicPortArrangement = z.object({\n leftSize: z.number().optional().describe(\"@deprecated, use leftPinCount\"),\n topSize: z.number().optional().describe(\"@deprecated, use topPinCount\"),\n rightSize: z.number().optional().describe(\"@deprecated, use rightPinCount\"),\n bottomSize: z.number().optional().describe(\"@deprecated, use bottomPinCount\"),\n leftPinCount: z.number().optional(),\n rightPinCount: z.number().optional(),\n topPinCount: z.number().optional(),\n bottomPinCount: z.number().optional(),\n leftSide: explicitPinSideDefinition.optional(),\n rightSide: explicitPinSideDefinition.optional(),\n topSide: explicitPinSideDefinition.optional(),\n bottomSide: explicitPinSideDefinition.optional(),\n})\n\nexport const schematicPinArrangement = schematicPortArrangement\n\nexpectTypesMatch<\n SchematicPortArrangement,\n z.input<typeof schematicPortArrangement>\n>(true)\n","import { distance } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type SchematicPinStyle = Record<\n string,\n {\n marginTop?: number | string\n marginRight?: number | string\n marginBottom?: number | string\n marginLeft?: number | string\n\n /** @deprecated use marginLeft */\n leftMargin?: number | string\n /** @deprecated use marginRight */\n rightMargin?: number | string\n /** @deprecated use marginTop */\n topMargin?: number | string\n /** @deprecated use marginBottom */\n bottomMargin?: number | string\n }\n>\n\nexport const schematicPinStyle = z.record(\n z.object({\n marginLeft: distance.optional(),\n marginRight: distance.optional(),\n marginTop: distance.optional(),\n marginBottom: distance.optional(),\n\n leftMargin: distance.optional(),\n rightMargin: distance.optional(),\n topMargin: distance.optional(),\n bottomMargin: distance.optional(),\n }),\n)\n\nexpectTypesMatch<SchematicPinStyle, z.input<typeof schematicPinStyle>>(true)\n","import { z } from \"zod\"\n\n/**\n * Valid pin label string. Must consist only of letters,\n * numbers, or underscores.\n */\nexport const schematicPinLabel = z.string().regex(/^[A-Za-z0-9_]+$/)\nexport type SchematicPinLabel = z.infer<typeof schematicPinLabel>\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const schematicSymbolSize = distance\n .or(z.enum([\"xs\", \"sm\", \"default\", \"md\"]))\n .describe(\"distance between pin1 and pin2 of the schematic symbol\")\n\nexport type SchematicSymbolSize = z.input<typeof schematicSymbolSize>\n","import { z } from \"zod\"\n\nexport const ninePointAnchor = z.enum([\n \"top_left\",\n \"top_center\",\n \"top_right\",\n \"center_left\",\n \"center\",\n \"center_right\",\n \"bottom_left\",\n \"bottom_center\",\n \"bottom_right\",\n])\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const point = z.object({\n x: distance,\n y: distance,\n})\n\nexport type Point = { x: number | string; y: number | string }\n","import type { AutocompleteString } from \"lib/common/autocomplete\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { type Point, point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { subcircuitGroupProps, type SubcircuitGroupProps } from \"./group\"\n\nconst boardColorPresets = [\n \"not_specified\",\n \"green\",\n \"red\",\n \"blue\",\n \"purple\",\n \"black\",\n \"white\",\n \"yellow\",\n] as const\n\nexport type BoardColorPreset = (typeof boardColorPresets)[number]\n\nexport type BoardColor = AutocompleteString<BoardColorPreset>\n\nconst boardColor = z.custom<BoardColor>((value) => typeof value === \"string\")\n\nexport interface BoardProps\n extends Omit<SubcircuitGroupProps, \"subcircuit\" | \"connections\"> {\n title?: string\n material?: \"fr4\" | \"fr1\"\n /** Number of layers for the PCB */\n layers?: 1 | 2 | 4 | 6 | 8\n borderRadius?: Distance\n thickness?: Distance\n boardAnchorPosition?: Point\n anchorAlignment?: z.infer<typeof ninePointAnchor>\n boardAnchorAlignment?: z.infer<typeof ninePointAnchor>\n /** Color applied to both top and bottom solder masks */\n solderMaskColor?: BoardColor\n /** Color of the top solder mask */\n topSolderMaskColor?: BoardColor\n /** Color of the bottom solder mask */\n bottomSolderMaskColor?: BoardColor\n /** Color applied to both top and bottom silkscreens */\n silkscreenColor?: BoardColor\n /** Color of the top silkscreen */\n topSilkscreenColor?: BoardColor\n /** Color of the bottom silkscreen */\n bottomSilkscreenColor?: BoardColor\n /** Whether the board should be assembled on both sides */\n doubleSidedAssembly?: boolean\n /** Whether this board should be omitted from the schematic view */\n schematicDisabled?: boolean\n}\n\nexport const boardProps = subcircuitGroupProps\n .omit({ connections: true })\n .extend({\n material: z.enum([\"fr4\", \"fr1\"]).default(\"fr4\"),\n layers: z\n .union([\n z.literal(1),\n z.literal(2),\n z.literal(4),\n z.literal(6),\n z.literal(8),\n ])\n .default(2),\n borderRadius: distance.optional(),\n thickness: distance.optional(),\n boardAnchorPosition: point.optional(),\n anchorAlignment: ninePointAnchor.optional(),\n boardAnchorAlignment: ninePointAnchor\n .optional()\n .describe(\"Prefer using anchorAlignment when possible\"),\n title: z.string().optional(),\n solderMaskColor: boardColor.optional(),\n topSolderMaskColor: boardColor.optional(),\n bottomSolderMaskColor: boardColor.optional(),\n silkscreenColor: boardColor.optional(),\n topSilkscreenColor: boardColor.optional(),\n bottomSilkscreenColor: boardColor.optional(),\n doubleSidedAssembly: z.boolean().optional().default(false),\n schematicDisabled: z.boolean().optional(),\n })\n\ntype InferredBoardProps = z.input<typeof boardProps>\nexpectTypesMatch<BoardProps, InferredBoardProps>(true)\n","import { layer_ref, length, distance } from \"circuit-json\"\nimport type { AutocompleteString } from \"lib/common/autocomplete\"\nimport type { Distance } from \"lib/common/distance\"\nimport {\n type CommonLayoutProps,\n commonLayoutProps,\n type SupplierPartNumbers,\n} from \"lib/common/layout\"\nimport type { PcbStyle } from \"lib/common/pcbStyle\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { type Point, point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport type { AnySourceComponent, PcbTrace } from \"circuit-json\"\nimport {\n manual_edits_file,\n type ManualEditsFile,\n type ManualEditsFileInput,\n} from \"lib/manual-edits\"\nimport { connectionTarget } from \"lib/common/connectionsProp\"\nimport {\n schematicPinArrangement,\n type SchematicPinArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n schematicPinStyle,\n type SchematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\n\nexport const layoutConfig = z.object({\n layoutMode: z\n .enum([\"grid\", \"flex\", \"match-adapt\", \"relative\", \"none\"])\n .optional(),\n position: z.enum([\"absolute\", \"relative\"]).optional(),\n\n grid: z.boolean().optional(),\n gridCols: z.number().or(z.string()).optional(),\n gridRows: z.number().or(z.string()).optional(),\n gridTemplateRows: z.string().optional(),\n gridTemplateColumns: z.string().optional(),\n gridTemplate: z.string().optional(),\n gridGap: z.number().or(z.string()).optional(),\n gridRowGap: z.number().or(z.string()).optional(),\n gridColumnGap: z.number().or(z.string()).optional(),\n\n flex: z.boolean().or(z.string()).optional(),\n flexDirection: z.enum([\"row\", \"column\"]).optional(),\n alignItems: z.enum([\"start\", \"center\", \"end\", \"stretch\"]).optional(),\n justifyContent: z\n .enum([\n \"start\",\n \"center\",\n \"end\",\n \"stretch\",\n \"space-between\",\n \"space-around\",\n \"space-evenly\",\n ])\n .optional(),\n flexRow: z.boolean().optional(),\n flexColumn: z.boolean().optional(),\n gap: z.number().or(z.string()).optional(),\n\n pack: z\n .boolean()\n .optional()\n .describe(\"Pack the contents of this group using a packing strategy\"),\n packOrderStrategy: z\n .enum([\n \"largest_to_smallest\",\n \"first_to_last\",\n \"highest_to_lowest_pin_count\",\n ])\n .optional(),\n packPlacementStrategy: z\n .enum([\"shortest_connection_along_outline\"])\n .optional(),\n\n padding: length.optional(),\n paddingLeft: length.optional(),\n paddingRight: length.optional(),\n paddingTop: length.optional(),\n paddingBottom: length.optional(),\n paddingX: length.optional(),\n paddingY: length.optional(),\n\n width: length.optional(),\n height: length.optional(),\n\n matchAdapt: z.boolean().optional(),\n matchAdaptTemplate: z.any().optional(),\n})\n\nexport interface LayoutConfig {\n layoutMode?: \"grid\" | \"flex\" | \"match-adapt\" | \"relative\" | \"none\"\n position?: \"absolute\" | \"relative\"\n\n grid?: boolean\n gridCols?: number | string\n gridRows?: number | string\n gridTemplateRows?: string\n gridTemplateColumns?: string\n gridTemplate?: string\n gridGap?: number | string\n gridRowGap?: number | string\n gridColumnGap?: number | string\n\n flex?: boolean | string\n flexDirection?: \"row\" | \"column\"\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\"\n justifyContent?:\n | \"start\"\n | \"center\"\n | \"end\"\n | \"stretch\"\n | \"space-between\"\n | \"space-around\"\n | \"space-evenly\"\n flexRow?: boolean\n flexColumn?: boolean\n gap?: number | string\n\n pack?: boolean\n packOrderStrategy?:\n | \"largest_to_smallest\"\n | \"first_to_last\"\n | \"highest_to_lowest_pin_count\"\n packPlacementStrategy?: \"shortest_connection_along_outline\"\n\n padding?: Distance\n paddingLeft?: Distance\n paddingRight?: Distance\n paddingTop?: Distance\n paddingBottom?: Distance\n paddingX?: Distance\n paddingY?: Distance\n\n width?: Distance\n height?: Distance\n\n matchAdapt?: boolean\n matchAdaptTemplate?: any\n}\n\nexpectTypesMatch<LayoutConfig, z.input<typeof layoutConfig>>(true)\n\nexport interface Border {\n strokeWidth?: Distance\n dashed?: boolean\n solid?: boolean\n}\n\nexport const border = z.object({\n strokeWidth: length.optional(),\n dashed: z.boolean().optional(),\n solid: z.boolean().optional(),\n})\n\nexport interface BaseGroupProps extends CommonLayoutProps, LayoutConfig {\n name?: string\n key?: any\n children?: any\n\n pcbStyle?: PcbStyle\n\n /**\n * Title to display above this group in the schematic view\n */\n schTitle?: string\n\n /**\n * If true, render this group as a single schematic box\n */\n showAsSchematicBox?: boolean\n\n /**\n * Mapping of external pin names to internal connection targets\n */\n connections?: Connections\n\n /**\n * Arrangement for pins when rendered as a schematic box\n */\n schPinArrangement?: SchematicPinArrangement\n\n /**\n * Spacing between pins when rendered as a schematic box\n */\n schPinSpacing?: Distance\n\n /**\n * Styles to apply to individual pins in the schematic box representation\n */\n schPinStyle?: SchematicPinStyle\n\n pcbWidth?: Distance\n pcbHeight?: Distance\n minTraceWidth?: Distance\n schWidth?: Distance\n schHeight?: Distance\n\n pcbLayout?: LayoutConfig\n schLayout?: LayoutConfig\n cellBorder?: Border | null\n border?: Border | null\n schPadding?: Distance\n schPaddingLeft?: Distance\n schPaddingRight?: Distance\n schPaddingTop?: Distance\n schPaddingBottom?: Distance\n\n pcbPadding?: Distance\n pcbPaddingLeft?: Distance\n pcbPaddingRight?: Distance\n pcbPaddingTop?: Distance\n pcbPaddingBottom?: Distance\n /**\n * Anchor to use when interpreting pcbX/pcbY/pcbOffsetX/pcbOffsetY relative to pcbPosition\n */\n pcbAnchorAlignment?: AutocompleteString<z.infer<typeof ninePointAnchor>>\n\n /** @deprecated Use `pcbGrid` */\n grid?: boolean\n /** @deprecated Use `pcbFlex` */\n flex?: boolean | string\n\n pcbGrid?: boolean\n pcbGridCols?: number | string\n pcbGridRows?: number | string\n pcbGridTemplateRows?: string\n pcbGridTemplateColumns?: string\n pcbGridTemplate?: string\n pcbGridGap?: number | string\n pcbGridRowGap?: number | string\n pcbGridColumnGap?: number | string\n\n pcbFlex?: boolean | string\n pcbFlexGap?: number | string\n pcbFlexDirection?: \"row\" | \"column\"\n pcbAlignItems?: \"start\" | \"center\" | \"end\" | \"stretch\"\n pcbJustifyContent?:\n | \"start\"\n | \"center\"\n | \"end\"\n | \"stretch\"\n | \"space-between\"\n | \"space-around\"\n | \"space-evenly\"\n pcbFlexRow?: boolean\n pcbFlexColumn?: boolean\n pcbGap?: number | string\n pcbPack?: boolean\n pcbPackGap?: number | string\n\n schGrid?: boolean\n schGridCols?: number | string\n schGridRows?: number | string\n schGridTemplateRows?: string\n schGridTemplateColumns?: string\n schGridTemplate?: string\n schGridGap?: number | string\n schGridRowGap?: number | string\n schGridColumnGap?: number | string\n\n schFlex?: boolean | string\n schFlexGap?: number | string\n schFlexDirection?: \"row\" | \"column\"\n schAlignItems?: \"start\" | \"center\" | \"end\" | \"stretch\"\n schJustifyContent?:\n | \"start\"\n | \"center\"\n | \"end\"\n | \"stretch\"\n | \"space-between\"\n | \"space-around\"\n | \"space-evenly\"\n schFlexRow?: boolean\n schFlexColumn?: boolean\n schGap?: number | string\n schPack?: boolean\n schMatchAdapt?: boolean\n}\n\nexport type PartsEngine = {\n findPart: (params: {\n sourceComponent: AnySourceComponent\n footprinterString?: string\n }) => Promise<SupplierPartNumbers> | SupplierPartNumbers\n}\n\nexport interface PcbRouteCache {\n pcbTraces: PcbTrace[]\n cacheKey: string\n}\n\nexport interface AutorouterConfig {\n serverUrl?: string\n inputFormat?: \"simplified\" | \"circuit-json\"\n serverMode?: \"job\" | \"solve-endpoint\"\n serverCacheEnabled?: boolean\n cache?: PcbRouteCache\n traceClearance?: Distance\n groupMode?:\n | \"sequential_trace\"\n | \"subcircuit\"\n | /** @deprecated Use \"sequential_trace\" */ \"sequential-trace\"\n local?: boolean\n algorithmFn?: (simpleRouteJson: any) => Promise<any>\n preset?:\n | \"sequential_trace\"\n | \"subcircuit\"\n | \"auto\"\n | \"auto_local\"\n | \"auto_cloud\"\n | \"tscircuit_beta\"\n | \"freerouting\"\n | \"laser_prefab\" // Prefabricated PCB with laser copper ablation\n | /** @deprecated Use \"sequential_trace\" */ \"sequential-trace\"\n | /** @deprecated Use \"auto_local\" */ \"auto-local\"\n | /** @deprecated Use \"auto_cloud\" */ \"auto-cloud\"\n}\n\nexport type AutorouterPreset =\n | \"sequential_trace\"\n | \"subcircuit\"\n | \"auto\"\n | \"auto_local\"\n | \"auto_cloud\"\n | \"tscircuit_beta\"\n | \"freerouting\"\n | \"laser_prefab\"\n | \"sequential-trace\"\n | \"auto-local\"\n | \"auto-cloud\"\n\nexport type AutorouterProp =\n | AutorouterConfig\n | AutocompleteString<AutorouterPreset>\n\nconst pcbAnchorAlignmentAutocomplete = z.custom<\n AutocompleteString<z.infer<typeof ninePointAnchor>>\n>((value) => typeof value === \"string\")\n\nexport const autorouterConfig = z.object({\n serverUrl: z.string().optional(),\n inputFormat: z.enum([\"simplified\", \"circuit-json\"]).optional(),\n serverMode: z.enum([\"job\", \"solve-endpoint\"]).optional(),\n serverCacheEnabled: z.boolean().optional(),\n cache: z.custom<PcbRouteCache>((v) => true).optional(),\n traceClearance: length.optional(),\n groupMode: z\n .enum([\"sequential_trace\", \"subcircuit\", \"sequential-trace\"])\n .optional(),\n algorithmFn: z\n .custom<(simpleRouteJson: any) => Promise<any>>(\n (v) => typeof v === \"function\" || v === undefined,\n )\n .optional(),\n preset: z\n .enum([\n \"sequential_trace\",\n \"subcircuit\",\n \"auto\",\n \"auto_local\",\n \"auto_cloud\",\n \"tscircuit_beta\",\n \"freerouting\",\n \"laser_prefab\",\n \"sequential-trace\",\n \"auto-local\",\n \"auto-cloud\",\n ])\n .optional(),\n local: z.boolean().optional(),\n})\n\nexport const autorouterPreset = z.union([\n z.literal(\"sequential_trace\"),\n z.literal(\"subcircuit\"),\n z.literal(\"auto\"),\n z.literal(\"auto_local\"),\n z.literal(\"auto_cloud\"),\n z.literal(\"tscircuit_beta\"),\n z.literal(\"freerouting\"),\n z.literal(\"laser_prefab\"), // Prefabricated PCB with laser copper ablation\n z.literal(\"sequential-trace\"),\n z.literal(\"auto-local\"),\n z.literal(\"auto-cloud\"),\n])\n\nconst autorouterString = z.string() as z.ZodType<\n AutocompleteString<AutorouterPreset>\n>\n\nexport const autorouterProp: z.ZodType<AutorouterProp> = z.union([\n autorouterConfig,\n autorouterPreset,\n autorouterString,\n])\n\nexport const autorouterEffortLevel = z.enum([\"1x\", \"2x\", \"5x\", \"10x\", \"100x\"])\n\nexport interface SubcircuitGroupProps extends BaseGroupProps {\n manualEdits?: ManualEditsFileInput\n routingDisabled?: boolean\n bomDisabled?: boolean\n defaultTraceWidth?: Distance\n minTraceWidth?: Distance\n pcbRouteCache?: PcbRouteCache\n\n autorouter?: AutorouterProp\n autorouterEffortLevel?: \"1x\" | \"2x\" | \"5x\" | \"10x\" | \"100x\"\n\n /**\n * Serialized circuit JSON describing a precompiled subcircuit\n */\n circuitJson?: any[]\n\n /**\n * If true, we'll automatically layout the schematic for this group. Must be\n * a subcircuit (currently). This is eventually going to be replaced with more\n * sophisticated layout options/modes and will be enabled by default.\n */\n schAutoLayoutEnabled?: boolean\n\n /**\n * If true, net labels will automatically be created for complex traces\n */\n schTraceAutoLabelEnabled?: boolean\n\n /** Maximum length a trace can span on the schematic */\n schMaxTraceDistance?: Distance\n\n partsEngine?: PartsEngine\n\n /** When autosizing, the board will be made square */\n square?: boolean\n /** Desired empty area of the board e.g. \"22mm^2\" or \"20%\" */\n emptyArea?: string\n /** Desired filled area of the board e.g. \"22mm^2\" or \"20%\" */\n filledArea?: string\n\n width?: number | string\n height?: number | string\n outline?: Point[]\n outlineOffsetX?: number | string\n outlineOffsetY?: number | string\n}\n\nexport interface SubcircuitGroupPropsWithBool extends SubcircuitGroupProps {\n subcircuit: true\n}\n\nexport interface NonSubcircuitGroupProps extends BaseGroupProps {\n subcircuit?: false | undefined\n}\n\nexport type GroupProps = SubcircuitGroupPropsWithBool | NonSubcircuitGroupProps\n\nexport const baseGroupProps = commonLayoutProps.extend({\n name: z.string().optional(),\n children: z.any().optional(),\n schTitle: z.string().optional(),\n key: z.any().optional(),\n showAsSchematicBox: z.boolean().optional(),\n connections: z.record(z.string(), connectionTarget.optional()).optional(),\n schPinArrangement: schematicPinArrangement.optional(),\n schPinSpacing: length.optional(),\n schPinStyle: schematicPinStyle.optional(),\n\n ...layoutConfig.shape,\n grid: layoutConfig.shape.grid.describe(\"@deprecated use pcbGrid\"),\n flex: layoutConfig.shape.flex.describe(\"@deprecated use pcbFlex\"),\n pcbGrid: z.boolean().optional(),\n pcbGridCols: z.number().or(z.string()).optional(),\n pcbGridRows: z.number().or(z.string()).optional(),\n pcbGridTemplateRows: z.string().optional(),\n pcbGridTemplateColumns: z.string().optional(),\n pcbGridTemplate: z.string().optional(),\n pcbGridGap: z.number().or(z.string()).optional(),\n pcbGridRowGap: z.number().or(z.string()).optional(),\n pcbGridColumnGap: z.number().or(z.string()).optional(),\n pcbFlex: z.boolean().or(z.string()).optional(),\n pcbFlexGap: z.number().or(z.string()).optional(),\n pcbFlexDirection: z.enum([\"row\", \"column\"]).optional(),\n pcbAlignItems: z.enum([\"start\", \"center\", \"end\", \"stretch\"]).optional(),\n pcbJustifyContent: z\n .enum([\n \"start\",\n \"center\",\n \"end\",\n \"stretch\",\n \"space-between\",\n \"space-around\",\n \"space-evenly\",\n ])\n .optional(),\n pcbFlexRow: z.boolean().optional(),\n pcbFlexColumn: z.boolean().optional(),\n pcbGap: z.number().or(z.string()).optional(),\n pcbPack: z.boolean().optional(),\n pcbPackGap: z.number().or(z.string()).optional(),\n\n schGrid: z.boolean().optional(),\n schGridCols: z.number().or(z.string()).optional(),\n schGridRows: z.number().or(z.string()).optional(),\n schGridTemplateRows: z.string().optional(),\n schGridTemplateColumns: z.string().optional(),\n schGridTemplate: z.string().optional(),\n schGridGap: z.number().or(z.string()).optional(),\n schGridRowGap: z.number().or(z.string()).optional(),\n schGridColumnGap: z.number().or(z.string()).optional(),\n\n schFlex: z.boolean().or(z.string()).optional(),\n schFlexGap: z.number().or(z.string()).optional(),\n schFlexDirection: z.enum([\"row\", \"column\"]).optional(),\n schAlignItems: z.enum([\"start\", \"center\", \"end\", \"stretch\"]).optional(),\n schJustifyContent: z\n .enum([\n \"start\",\n \"center\",\n \"end\",\n \"stretch\",\n \"space-between\",\n \"space-around\",\n \"space-evenly\",\n ])\n .optional(),\n schFlexRow: z.boolean().optional(),\n schFlexColumn: z.boolean().optional(),\n schGap: z.number().or(z.string()).optional(),\n schPack: z.boolean().optional(),\n schMatchAdapt: z.boolean().optional(),\n pcbWidth: length.optional(),\n pcbHeight: length.optional(),\n minTraceWidth: length.optional(),\n schWidth: length.optional(),\n schHeight: length.optional(),\n pcbLayout: layoutConfig.optional(),\n schLayout: layoutConfig.optional(),\n cellBorder: border.nullable().optional(),\n border: border.nullable().optional(),\n schPadding: length.optional(),\n schPaddingLeft: length.optional(),\n schPaddingRight: length.optional(),\n schPaddingTop: length.optional(),\n schPaddingBottom: length.optional(),\n pcbPadding: length.optional(),\n pcbPaddingLeft: length.optional(),\n pcbPaddingRight: length.optional(),\n pcbPaddingTop: length.optional(),\n pcbPaddingBottom: length.optional(),\n pcbAnchorAlignment: pcbAnchorAlignmentAutocomplete.optional(),\n})\n\nexport const partsEngine = z.custom<PartsEngine>((v) => \"findPart\" in v)\n\nexport const subcircuitGroupProps = baseGroupProps.extend({\n manualEdits: manual_edits_file.optional(),\n schAutoLayoutEnabled: z.boolean().optional(),\n schTraceAutoLabelEnabled: z.boolean().optional(),\n schMaxTraceDistance: distance.optional(),\n routingDisabled: z.boolean().optional(),\n bomDisabled: z.boolean().optional(),\n defaultTraceWidth: length.optional(),\n minTraceWidth: length.optional(),\n partsEngine: partsEngine.optional(),\n pcbRouteCache: z.custom<PcbRouteCache>((v) => true).optional(),\n autorouter: autorouterProp.optional(),\n autorouterEffortLevel: autorouterEffortLevel.optional(),\n square: z.boolean().optional(),\n emptyArea: z.string().optional(),\n filledArea: z.string().optional(),\n width: distance.optional(),\n height: distance.optional(),\n outline: z.array(point).optional(),\n outlineOffsetX: distance.optional(),\n outlineOffsetY: distance.optional(),\n circuitJson: z.array(z.any()).optional(),\n})\n\nexport const subcircuitGroupPropsWithBool = subcircuitGroupProps.extend({\n subcircuit: z.literal(true),\n})\n\nexport const groupProps = z.discriminatedUnion(\"subcircuit\", [\n baseGroupProps.extend({ subcircuit: z.literal(false).optional() }),\n subcircuitGroupPropsWithBool,\n])\n\ntype InferredBaseGroupProps = z.input<typeof baseGroupProps>\ntype InferredSubcircuitGroupPropsWithBool = z.input<\n typeof subcircuitGroupPropsWithBool\n>\n\nexpectTypesMatch<AutorouterProp, z.input<typeof autorouterProp>>(true)\n\nexpectTypesMatch<BaseGroupProps, InferredBaseGroupProps>(true)\nexpectTypesMatch<\n SubcircuitGroupPropsWithBool,\n InferredSubcircuitGroupPropsWithBool\n>(true)\n\ntype InferredGroupProps = z.input<typeof groupProps>\nexpectTypesMatch<GroupProps, InferredGroupProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport const base_manual_edit_event = z.object({\n edit_event_id: z.string(),\n in_progress: z.boolean().optional(),\n created_at: z.number(),\n})\n\nexport interface BaseManualEditEvent {\n edit_event_id: string\n in_progress?: boolean\n created_at: number\n}\n\nexport type BaseManualEditEventInput = z.input<typeof base_manual_edit_event>\n\nexpectTypesMatch<BaseManualEditEvent, z.infer<typeof base_manual_edit_event>>(\n true,\n)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_pcb_component_location_event = base_manual_edit_event.extend({\n pcb_edit_event_type: z\n .literal(\"edit_component_location\")\n .describe(\"deprecated\"),\n edit_event_type: z.literal(\"edit_pcb_component_location\"),\n pcb_component_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n})\n\n/** @deprecated use edit_pcb_component_location_event instead */\nexport const edit_component_location_event = edit_pcb_component_location_event\n\nexport interface EditPcbComponentLocationEvent extends BaseManualEditEvent {\n edit_event_type: \"edit_pcb_component_location\"\n /** @deprecated */\n pcb_edit_event_type: \"edit_component_location\"\n pcb_component_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditPcbComponentLocationEventInput = z.input<\n typeof edit_pcb_component_location_event\n>\n\nexpectTypesMatch<\n EditPcbComponentLocationEvent,\n z.infer<typeof edit_pcb_component_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_trace_hint_event = base_manual_edit_event.extend({\n pcb_edit_event_type: z.literal(\"edit_trace_hint\").describe(\"deprecated\"),\n edit_event_type: z.literal(\"edit_pcb_trace_hint\").optional(),\n pcb_port_id: z.string(),\n pcb_trace_hint_id: z.string().optional(),\n route: z.array(\n z.object({ x: z.number(), y: z.number(), via: z.boolean().optional() }),\n ),\n})\n\nexport interface EditTraceHintEvent extends BaseManualEditEvent {\n /** @deprecated */\n pcb_edit_event_type: \"edit_trace_hint\"\n edit_event_type?: \"edit_pcb_trace_hint\"\n pcb_port_id: string\n pcb_trace_hint_id?: string\n route: Array<{ x: number; y: number; via?: boolean }>\n}\n\nexport type EditTraceHintEventInput = z.input<typeof edit_trace_hint_event>\n\nexpectTypesMatch<EditTraceHintEvent, z.infer<typeof edit_trace_hint_event>>(\n true,\n)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_schematic_component_location_event =\n base_manual_edit_event.extend({\n edit_event_type: z.literal(\"edit_schematic_component_location\"),\n schematic_component_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n })\n\nexport interface EditSchematicComponentLocationEvent\n extends BaseManualEditEvent {\n edit_event_type: \"edit_schematic_component_location\"\n schematic_component_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditSchematicComponentLocationEventInput = z.input<\n typeof edit_schematic_component_location_event\n>\n\nexpectTypesMatch<\n EditSchematicComponentLocationEvent,\n z.infer<typeof edit_schematic_component_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_pcb_group_location_event = base_manual_edit_event.extend({\n edit_event_type: z.literal(\"edit_pcb_group_location\"),\n pcb_group_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n})\n\nexport interface EditPcbGroupLocationEvent extends BaseManualEditEvent {\n edit_event_type: \"edit_pcb_group_location\"\n pcb_group_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditPcbGroupLocationEventInput = z.input<\n typeof edit_pcb_group_location_event\n>\n\nexpectTypesMatch<\n EditPcbGroupLocationEvent,\n z.infer<typeof edit_pcb_group_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_schematic_group_location_event =\n base_manual_edit_event.extend({\n edit_event_type: z.literal(\"edit_schematic_group_location\"),\n schematic_group_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n })\n\nexport interface EditSchematicGroupLocationEvent extends BaseManualEditEvent {\n edit_event_type: \"edit_schematic_group_location\"\n schematic_group_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditSchematicGroupLocationEventInput = z.input<\n typeof edit_schematic_group_location_event\n>\n\nexpectTypesMatch<\n EditSchematicGroupLocationEvent,\n z.infer<typeof edit_schematic_group_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n edit_pcb_component_location_event,\n type EditPcbComponentLocationEvent,\n} from \"./manual-edit-events/edit_pcb_component_location_event\"\nimport {\n edit_schematic_component_location_event,\n type EditSchematicComponentLocationEvent,\n} from \"./manual-edit-events/edit_schematic_component_location_event\"\nimport {\n edit_trace_hint_event,\n type EditTraceHintEvent,\n} from \"./manual-edit-events/edit_trace_hint_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport type ManualEditEvent =\n | EditPcbComponentLocationEvent\n | EditTraceHintEvent\n | EditSchematicComponentLocationEvent\n\nexport const manual_edit_event = z.union([\n edit_pcb_component_location_event,\n edit_trace_hint_event,\n edit_schematic_component_location_event,\n])\n\nexport type ManualEditEventInput = z.input<typeof manual_edit_event>\ntype InferredManualEditEvent = z.infer<typeof manual_edit_event>\n\nexpectTypesMatch<ManualEditEvent, InferredManualEditEvent>(true)\n","import { z } from \"zod\"\nimport {\n manual_pcb_placement,\n type ManualPcbPlacement,\n} from \"./manual_pcb_placement\"\nimport { manual_edit_event } from \"./manual_edit_event\"\nimport { manual_trace_hint, type ManualTraceHint } from \"./manual_trace_hint\"\nimport {\n manual_schematic_placement,\n type ManualSchematicPlacement,\n} from \"./manual_schematic_placement\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_edits_file = z.object({\n pcb_placements: z.array(manual_pcb_placement).optional(),\n manual_trace_hints: z.array(manual_trace_hint).optional(),\n schematic_placements: z.array(manual_schematic_placement).optional(),\n})\n\nexport interface ManualEditsFile {\n pcb_placements?: ManualPcbPlacement[]\n manual_trace_hints?: ManualTraceHint[]\n schematic_placements?: ManualSchematicPlacement[]\n}\n\nexport type ManualEditsFileInput = z.input<typeof manual_edits_file>\n\nexpectTypesMatch<ManualEditsFile, z.infer<typeof manual_edits_file>>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_pcb_placement = z.object({\n selector: z.string(),\n relative_to: z\n .string()\n .optional()\n .default(\"group_center\")\n .describe(\"Can be a selector or 'group_center'\"),\n center: point,\n})\n\nexport interface ManualPcbPlacement {\n selector: string\n relative_to: string\n center: Point\n}\n\nexport type ManualPcbPlacementInput = z.input<typeof manual_pcb_placement>\ntype InferredManualPcbPlacement = z.infer<typeof manual_pcb_placement>\n\nexpectTypesMatch<ManualPcbPlacement, InferredManualPcbPlacement>(true)\n","import { z } from \"zod\"\nimport { layer_ref, route_hint_point, type RouteHintPoint } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_trace_hint = z.object({\n pcb_port_selector: z.string(),\n offsets: z.array(route_hint_point),\n})\n\nexport interface ManualTraceHint {\n pcb_port_selector: string\n offsets: Array<RouteHintPoint>\n}\n\nexport type ManualTraceHintInput = z.input<typeof manual_trace_hint>\n\nexpectTypesMatch<ManualTraceHint, z.infer<typeof manual_trace_hint>>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_schematic_placement = z.object({\n selector: z.string(),\n relative_to: z\n .string()\n .optional()\n .default(\"group_center\")\n .describe(\"Can be a selector or 'group_center'\"),\n center: point,\n})\n\nexport interface ManualSchematicPlacement {\n selector: string\n relative_to: string\n center: Point\n}\n\nexport type ManualSchematicPlacementInput = z.input<\n typeof manual_schematic_placement\n>\ntype InferredManualSchematicPlacement = z.infer<\n typeof manual_schematic_placement\n>\n\nexpectTypesMatch<ManualSchematicPlacement, InferredManualSchematicPlacement>(\n true,\n)\n","import { z } from \"zod\"\n\nexport const connectionTarget = z\n .string()\n .or(z.array(z.string()).readonly())\n .or(z.array(z.string()))\n\nexport const createConnectionsProp = <T extends readonly [string, ...string[]]>(\n labels: T,\n) => {\n return z.record(z.enum(labels), connectionTarget)\n}\n","import { distance, type Distance } from \"lib/common/distance\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { baseGroupProps, type BaseGroupProps } from \"./group\"\n\nexport interface PanelProps\n extends Omit<BaseGroupProps, \"height\" | \"layoutMode\" | \"width\"> {\n width?: Distance\n height?: Distance\n children?: BaseGroupProps[\"children\"]\n anchorAlignment?: z.infer<typeof ninePointAnchor>\n /**\n * If true, prevent a solder mask from being applied to this panel.\n */\n noSolderMask?: boolean\n /** Method for panelization */\n panelizationMethod?: \"tab-routing\" | \"none\"\n /** Gap between boards in a panel */\n boardGap?: Distance\n layoutMode?: \"grid\" | \"pack\" | \"none\"\n row?: number\n col?: number\n cellWidth?: Distance\n cellHeight?: Distance\n tabWidth?: Distance\n tabLength?: Distance\n mouseBites?: boolean\n edgePadding?: Distance\n edgePaddingLeft?: Distance\n edgePaddingRight?: Distance\n edgePaddingTop?: Distance\n edgePaddingBottom?: Distance\n}\n\nexport const panelProps = baseGroupProps\n .omit({\n width: true,\n height: true,\n layoutMode: true,\n children: true,\n })\n .extend({\n width: distance.optional(),\n height: distance.optional(),\n children: z.any().optional(),\n anchorAlignment: ninePointAnchor.optional(),\n noSolderMask: z.boolean().optional(),\n panelizationMethod: z.enum([\"tab-routing\", \"none\"]).optional(),\n boardGap: distance.optional(),\n layoutMode: z.enum([\"grid\", \"pack\", \"none\"]).optional(),\n row: z.number().optional(),\n col: z.number().optional(),\n cellWidth: distance.optional(),\n cellHeight: distance.optional(),\n tabWidth: distance.optional(),\n tabLength: distance.optional(),\n mouseBites: z.boolean().optional(),\n edgePadding: distance.optional(),\n edgePaddingLeft: distance.optional(),\n edgePaddingRight: distance.optional(),\n edgePaddingTop: distance.optional(),\n edgePaddingBottom: distance.optional(),\n })\n\ntype InferredPanelProps = z.input<typeof panelProps>\nexpectTypesMatch<PanelProps, InferredPanelProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { panelProps, type PanelProps } from \"./panel\"\n\nexport interface SubpanelProps extends PanelProps {}\n\nexport const subpanelProps = panelProps\n\ntype InferredSubpanelProps = z.input<typeof subpanelProps>\nexpectTypesMatch<SubpanelProps, InferredSubpanelProps>(true)\n","import { distance } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { subcircuitGroupProps, type SubcircuitGroupProps } from \"./group\"\n\nexport interface BreakoutProps\n extends Omit<SubcircuitGroupProps, \"subcircuit\"> {\n padding?: Distance\n paddingLeft?: Distance\n paddingRight?: Distance\n paddingTop?: Distance\n paddingBottom?: Distance\n}\n\nexport const breakoutProps = subcircuitGroupProps.extend({\n padding: distance.optional(),\n paddingLeft: distance.optional(),\n paddingRight: distance.optional(),\n paddingTop: distance.optional(),\n paddingBottom: distance.optional(),\n})\n\ntype InferredBreakoutProps = z.input<typeof breakoutProps>\nexpectTypesMatch<BreakoutProps, InferredBreakoutProps>(true)\n","import { distance, supplier_name } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n type SupplierPartNumbers,\n} from \"lib/common/layout\"\nimport {\n type SchematicPortArrangement,\n schematicPortArrangement as schematicPinArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport {\n schematicPinLabel,\n type SchematicPinLabel,\n} from \"lib/common/schematicPinLabel\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { z } from \"zod\"\n\nexport type PinLabelsProp<\n PinNumber extends string = string,\n PinLabel extends string = string,\n> = Record<PinNumber, PinLabel | readonly PinLabel[] | PinLabel[]>\n\nexport type PinLabelFromPinLabelMap<PinLabelMap extends PinLabelsProp> =\n PinLabelMap extends PinLabelsProp<infer PinNumber, infer PinLabel>\n ? PinLabel\n : never\n\nexport interface PinCompatibleVariant {\n manufacturerPartNumber?: string\n supplierPartNumber?: SupplierPartNumbers\n}\n\nexport interface ChipPropsSU<\n PinLabel extends SchematicPinLabel = SchematicPinLabel,\n> extends CommonComponentProps<PinLabel> {\n manufacturerPartNumber?: string\n pinLabels?: PinLabelsProp<SchematicPinLabel, PinLabel>\n /**\n * Whether to show pin aliases in the schematic\n */\n showPinAliases?: boolean\n /**\n * Labels for PCB pins\n */\n pcbPinLabels?: Record<string, string>\n schPinArrangement?: SchematicPortArrangement\n /** @deprecated Use schPinArrangement instead. */\n schPortArrangement?: SchematicPortArrangement\n pinCompatibleVariants?: PinCompatibleVariant[]\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: Distance\n schWidth?: Distance\n schHeight?: Distance\n noSchematicRepresentation?: boolean\n internallyConnectedPins?: (string | number)[][]\n externallyConnectedPins?: string[][]\n connections?: Connections<PinLabel>\n}\n\nexport type ChipProps<PinLabelMap extends PinLabelsProp | string = string> =\n ChipPropsSU<\n PinLabelMap extends PinLabelsProp\n ? PinLabelFromPinLabelMap<PinLabelMap> | keyof PinLabelMap\n : PinLabelMap\n >\n\n/**\n * Get the pin labels for a component\n *\n * const pinLabels = { pin1: \"VCC\", pin2: \"GND\", pin3: \"DATA\" } as const\n * export const MyChip = (props: ChipProps<typeof pinLabels>) => {\n * // ...\n * }\n * type MyChipPinLabels = ChipPinLabels<typeof MyChip>\n * // MyChipPinLabels is \"VCC\" | \"GND\" | \"DATA\"\n *\n */\nexport type ChipPinLabels<T extends (props: ChipProps<any>) => any> =\n T extends (props: infer Props) => any\n ? Props extends ChipProps<infer PinLabelMap>\n ? PinLabelMap extends PinLabelsProp\n ? PinLabelFromPinLabelMap<PinLabelMap>\n : PinLabelMap extends string\n ? PinLabelMap\n : never\n : never\n : never\n\n/**\n * Get the connection prop type for a component\n *\n * const pinLabels = { pin1: \"VCC\", pin2: \"GND\", pin3: \"DATA\" } as const\n * export const MyChip = (props: ChipProps<typeof pinLabels>) => {\n * // ...\n * }\n * const connections: ChipConnections<typeof MyChip> = {\n * VCC: \"...\",\n * GND: \"...\",\n * DATA: \"...\",\n * }\n *\n */\nexport type ChipConnections<T extends (props: ChipProps<any>) => any> = {\n [K in ChipPinLabels<T>]: string\n}\n\nconst connectionTarget = z\n .string()\n .or(z.array(z.string()).readonly())\n .or(z.array(z.string()))\n\nconst connectionsProp = z\n .custom<Connections>()\n .pipe(z.record(z.string(), connectionTarget))\n\nexport const pinLabelsProp = z.record(\n schematicPinLabel,\n schematicPinLabel\n .or(z.array(schematicPinLabel).readonly())\n .or(z.array(schematicPinLabel)),\n)\n\nexpectTypesMatch<PinLabelsProp, z.input<typeof pinLabelsProp>>(true)\n\nexport const pinCompatibleVariant = z.object({\n manufacturerPartNumber: z.string().optional(),\n supplierPartNumber: z.record(supplier_name, z.array(z.string())).optional(),\n})\n\nexport const chipProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: pinLabelsProp.optional(),\n showPinAliases: z.boolean().optional(),\n pcbPinLabels: z.record(z.string(), z.string()).optional(),\n internallyConnectedPins: z\n .array(z.array(z.union([z.string(), z.number()])))\n .optional(),\n externallyConnectedPins: z.array(z.array(z.string())).optional(),\n schPinArrangement: schematicPinArrangement.optional(),\n schPortArrangement: schematicPinArrangement.optional(),\n pinCompatibleVariants: z.array(pinCompatibleVariant).optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n noSchematicRepresentation: z.boolean().optional(),\n connections: connectionsProp.optional(),\n})\n\n/**\n * @deprecated Use ChipProps instead.\n */\nexport const bugProps = chipProps\nexport type InferredChipProps = z.input<typeof chipProps>\n\n// Chip props are too complex to match up with zod types, we typecheck\n// them separately in the test files\nexpectTypesMatch<InferredChipProps, ChipPropsSU<string>>(true)\n","import {\n chipProps,\n type ChipProps,\n type PinLabelsProp,\n} from \"lib/components/chip\"\nimport type { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const pinoutProps = chipProps\nexport interface PinoutProps<\n PinLabelMap extends PinLabelsProp | string = string,\n> extends ChipProps<PinLabelMap> {}\n\ntype InferredPinoutProps = z.input<typeof pinoutProps>\nexpectTypesMatch<InferredPinoutProps, PinoutProps>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicPinArrangement,\n type SchematicPortArrangement,\n schematicPortArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { connectionTarget } from \"lib/common/connectionsProp\"\nimport {\n schematicPinLabel,\n type SchematicPinLabel,\n} from \"lib/common/schematicPinLabel\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface JumperProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<\n number | SchematicPinLabel,\n SchematicPinLabel | SchematicPinLabel[]\n >\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: number | string\n schWidth?: number | string\n schHeight?: number | string\n schDirection?: \"left\" | \"right\"\n schPinArrangement?: SchematicPortArrangement\n /**\n * @deprecated Use schPinArrangement instead.\n */\n schPortArrangement?: SchematicPortArrangement\n /**\n * Labels for PCB pins\n */\n pcbPinLabels?: Record<string, string>\n /**\n * Number of pins on the jumper (2 or 3)\n */\n pinCount?: 2 | 3\n /**\n * Groups of pins that are internally connected\n * e.g., [[\"1\",\"2\"], [\"2\",\"3\"]]\n */\n internallyConnectedPins?: (string | number)[][]\n /**\n * Connections to other components\n */\n connections?: Connections<string>\n}\n\nexport const jumperProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z\n .record(\n z.number().or(schematicPinLabel),\n schematicPinLabel.or(z.array(schematicPinLabel)),\n )\n .optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n schDirection: z.enum([\"left\", \"right\"]).optional(),\n schPinArrangement: schematicPinArrangement.optional(),\n schPortArrangement: schematicPortArrangement.optional(),\n pcbPinLabels: z.record(z.string(), z.string()).optional(),\n pinCount: z.union([z.literal(2), z.literal(3)]).optional(),\n internallyConnectedPins: z\n .array(z.array(z.union([z.string(), z.number()])))\n .optional(),\n connections: z\n .custom<Connections>()\n .pipe(z.record(z.string(), connectionTarget))\n .optional(),\n})\n\ntype InferredJumperProps = z.input<typeof jumperProps>\nexpectTypesMatch<JumperProps, InferredJumperProps>(true)\n","import { jumperProps, type JumperProps } from \"./jumper\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface SolderJumperProps extends JumperProps {\n /**\n * Pins that are bridged with solder by default\n */\n bridgedPins?: string[][]\n /**\n * If true, all pins are connected with cuttable traces\n */\n bridged?: boolean\n}\n\nexport const solderjumperProps = jumperProps.extend({\n bridgedPins: z.array(z.array(z.string())).optional(),\n bridged: z.boolean().optional(),\n})\n\ntype InferredSolderJumperProps = z.input<typeof solderjumperProps>\nexpectTypesMatch<SolderJumperProps, InferredSolderJumperProps>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n type SchematicPortArrangement,\n schematicPortArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport {\n schematicPinLabel,\n type SchematicPinLabel,\n} from \"lib/common/schematicPinLabel\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ConnectorProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<\n number | SchematicPinLabel,\n SchematicPinLabel | SchematicPinLabel[]\n >\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: number | string\n schWidth?: number | string\n schHeight?: number | string\n schDirection?: \"left\" | \"right\"\n schPortArrangement?: SchematicPortArrangement\n /**\n * Groups of pins that are internally connected\n * e.g., [[\"1\",\"2\"], [\"2\",\"3\"]]\n */\n internallyConnectedPins?: (string | number)[][]\n /**\n * Connector standard, e.g. usb_c, m2\n */\n standard?: \"usb_c\" | \"m2\"\n}\n\nexport const connectorProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z\n .record(\n z.number().or(schematicPinLabel),\n schematicPinLabel.or(z.array(schematicPinLabel)),\n )\n .optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n schDirection: z.enum([\"left\", \"right\"]).optional(),\n schPortArrangement: schematicPortArrangement.optional(),\n internallyConnectedPins: z\n .array(z.array(z.union([z.string(), z.number()])))\n .optional(),\n standard: z.enum([\"usb_c\", \"m2\"]).optional(),\n})\n\ntype InferredConnectorProps = z.input<typeof connectorProps>\nexpectTypesMatch<ConnectorProps, InferredConnectorProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicPinLabel,\n type SchematicPinLabel,\n} from \"lib/common/schematicPinLabel\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface InterconnectProps extends CommonComponentProps {\n standard?: \"TSC0001_36P_XALT_2025_11\" | \"0805\" | \"0603\" | \"1206\"\n pinLabels?: Record<\n number | SchematicPinLabel,\n SchematicPinLabel | SchematicPinLabel[]\n >\n /**\n * Groups of pins that are internally connected\n * e.g., [[\"1\",\"2\"], [\"2\",\"3\"]]\n */\n internallyConnectedPins?: (string | number)[][]\n}\n\nexport const interconnectProps = commonComponentProps.extend({\n standard: z\n .enum([\"TSC0001_36P_XALT_2025_11\", \"0805\", \"0603\", \"1206\"])\n .optional(),\n pinLabels: z\n .record(\n z.number().or(schematicPinLabel),\n schematicPinLabel.or(z.array(schematicPinLabel)),\n )\n .optional(),\n internallyConnectedPins: z\n .array(z.array(z.union([z.string(), z.number()])))\n .optional(),\n})\n\ntype InferredInterconnectProps = z.input<typeof interconnectProps>\nexpectTypesMatch<InterconnectProps, InferredInterconnectProps>(true)\n","import { z } from \"zod\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\n\n/**\n * Pin labels for fuse component\n */\nexport const fusePinLabels = [\"pin1\", \"pin2\"] as const\n\nexport type FusePinLabels = (typeof fusePinLabels)[number]\n\nexport interface FuseProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n /**\n * Current rating of the fuse in amperes\n */\n currentRating: number | string\n\n /**\n * Voltage rating of the fuse\n */\n voltageRating?: number | string\n\n /**\n * Whether to show ratings on schematic\n */\n schShowRatings?: boolean\n\n schOrientation?: SchematicOrientation\n\n /**\n * Connections to other components\n */\n connections?: Connections<PinLabel>\n}\n\n/**\n * Schema for validating fuse props\n */\nexport const fuseProps = commonComponentProps.extend({\n currentRating: z.union([z.number(), z.string()]),\n voltageRating: z.union([z.number(), z.string()]).optional(),\n schShowRatings: z.boolean().optional(),\n schOrientation: schematicOrientation.optional(),\n connections: z\n .record(\n z.string(),\n z.union([\n z.string(),\n z.array(z.string()).readonly(),\n z.array(z.string()),\n ]),\n )\n .optional(),\n})\n\nexport type InferredFuseProps = z.input<typeof fuseProps>\n","import { distance } from \"circuit-json\"\nimport type { PcbLayoutProps } from \"lib/common/layout\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { type PortHints, portHints } from \"lib/common/portHints\"\nimport { point, type Point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport type { Distance } from \"lib/common/distance\"\n\nexport interface CirclePlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"circle\"\n holeDiameter: number | string\n outerDiameter: number | string\n padDiameter?: number | string\n portHints?: PortHints\n solderMaskMargin?: Distance\n coveredWithSolderMask?: boolean\n}\n\nexport interface OvalPlatedHoleProps extends Omit<PcbLayoutProps, \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"oval\"\n outerWidth: number | string\n outerHeight: number | string\n holeWidth: number | string\n holeHeight: number | string\n portHints?: PortHints\n solderMaskMargin?: Distance\n\n /** @deprecated use holeWidth */\n innerWidth?: number | string\n /** @deprecated use holeHeight */\n innerHeight?: number | string\n coveredWithSolderMask?: boolean\n}\n\nexport interface PillPlatedHoleProps extends Omit<PcbLayoutProps, \"layer\"> {\n name?: string\n rectPad?: boolean\n connectsTo?: string | string[]\n shape: \"pill\"\n outerWidth: number | string\n outerHeight: number | string\n holeWidth: number | string\n holeHeight: number | string\n holeOffsetX?: number | string\n holeOffsetY?: number | string\n\n /** @deprecated use holeWidth */\n innerWidth?: number | string\n /** @deprecated use holeHeight */\n innerHeight?: number | string\n\n portHints?: PortHints\n solderMaskMargin?: Distance\n coveredWithSolderMask?: boolean\n}\n\nexport interface CircularHoleWithRectPlatedProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"circular_hole_with_rect_pad\"\n holeDiameter: number | string\n rectPadWidth: number | string\n rectPadHeight: number | string\n rectBorderRadius?: number | string\n holeShape?: \"circle\"\n padShape?: \"rect\"\n portHints?: PortHints\n holeOffsetX?: number | string\n holeOffsetY?: number | string\n solderMaskMargin?: Distance\n coveredWithSolderMask?: boolean\n}\n\nexport interface PillWithRectPadPlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"pill_hole_with_rect_pad\"\n holeShape?: \"pill\"\n padShape?: \"rect\"\n holeWidth: number | string\n holeHeight: number | string\n rectPadWidth: number | string\n rectPadHeight: number | string\n portHints?: PortHints\n holeOffsetX?: number | string\n holeOffsetY?: number | string\n solderMaskMargin?: Distance\n coveredWithSolderMask?: boolean\n}\n\nexport interface HoleWithPolygonPadPlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"hole_with_polygon_pad\"\n holeShape: \"circle\" | \"oval\" | \"pill\" | \"rotated_pill\"\n holeDiameter?: number | string\n holeWidth?: number | string\n holeHeight?: number | string\n padOutline: Point[]\n holeOffsetX: number | string\n holeOffsetY: number | string\n portHints?: PortHints\n solderMaskMargin?: Distance\n coveredWithSolderMask?: boolean\n}\n\nexport type PlatedHoleProps =\n | CirclePlatedHoleProps\n | OvalPlatedHoleProps\n | PillPlatedHoleProps\n | CircularHoleWithRectPlatedProps\n | PillWithRectPadPlatedHoleProps\n | HoleWithPolygonPadPlatedHoleProps\n\nconst distanceHiddenUndefined = z\n .custom<z.input<typeof distance>>()\n .transform((a) => {\n if (a === undefined) return undefined\n return distance.parse(a)\n })\n\nexport const platedHoleProps = z\n .discriminatedUnion(\"shape\", [\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"circle\"),\n holeDiameter: distance,\n outerDiameter: distance,\n padDiameter: distance.optional().describe(\"Diameter of the copper pad\"),\n portHints: portHints.optional(),\n solderMaskMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n }),\n pcbLayoutProps.omit({ layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"oval\"),\n outerWidth: distance,\n outerHeight: distance,\n holeWidth: distanceHiddenUndefined,\n holeHeight: distanceHiddenUndefined,\n innerWidth: distance.optional().describe(\"DEPRECATED use holeWidth\"),\n innerHeight: distance.optional().describe(\"DEPRECATED use holeHeight\"),\n portHints: portHints.optional(),\n solderMaskMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n }),\n pcbLayoutProps.omit({ layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"pill\"),\n rectPad: z.boolean().optional(),\n outerWidth: distance,\n outerHeight: distance,\n holeWidth: distanceHiddenUndefined,\n holeHeight: distanceHiddenUndefined,\n innerWidth: distance.optional().describe(\"DEPRECATED use holeWidth\"),\n innerHeight: distance.optional().describe(\"DEPRECATED use holeHeight\"),\n portHints: portHints.optional(),\n holeOffsetX: distance.optional(),\n holeOffsetY: distance.optional(),\n solderMaskMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"circular_hole_with_rect_pad\"),\n holeDiameter: distance,\n rectPadWidth: distance,\n rectPadHeight: distance,\n rectBorderRadius: distance.optional(),\n holeShape: z.literal(\"circle\").optional(),\n padShape: z.literal(\"rect\").optional(),\n portHints: portHints.optional(),\n holeOffsetX: distance.optional(),\n holeOffsetY: distance.optional(),\n solderMaskMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"pill_hole_with_rect_pad\"),\n holeShape: z.literal(\"pill\").optional(),\n padShape: z.literal(\"rect\").optional(),\n holeWidth: distance,\n holeHeight: distance,\n rectPadWidth: distance,\n rectPadHeight: distance,\n portHints: portHints.optional(),\n holeOffsetX: distance.optional(),\n holeOffsetY: distance.optional(),\n solderMaskMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"hole_with_polygon_pad\"),\n holeShape: z.enum([\"circle\", \"oval\", \"pill\", \"rotated_pill\"]),\n holeDiameter: distance.optional(),\n holeWidth: distance.optional(),\n holeHeight: distance.optional(),\n padOutline: z.array(point),\n holeOffsetX: distance,\n holeOffsetY: distance,\n portHints: portHints.optional(),\n solderMaskMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n }),\n ])\n .refine((a) => {\n if (\"innerWidth\" in a && a.innerWidth !== undefined) {\n a.holeWidth ??= a.innerWidth\n }\n if (\"innerHeight\" in a && a.innerHeight !== undefined) {\n a.holeHeight ??= a.innerHeight\n }\n return a\n })\n\ntype InferredPlatedHoleProps = z.input<typeof platedHoleProps>\n\nexpectTypesMatch<PlatedHoleProps, InferredPlatedHoleProps>(true)\n","import { resistance } from \"circuit-json\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport {\n schematicSymbolSize,\n type SchematicSymbolSize,\n} from \"lib/common/schematicSize\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { z } from \"zod\"\n\nexport const resistorPinLabels = [\"pin1\", \"pin2\", \"pos\", \"neg\"] as const\nexport type ResistorPinLabels = (typeof resistorPinLabels)[number]\n\nexport interface ResistorProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n resistance: number | string\n pullupFor?: string\n pullupTo?: string\n pulldownFor?: string\n pulldownTo?: string\n schOrientation?: SchematicOrientation\n schSize?: SchematicSymbolSize\n connections?: Connections<ResistorPinLabels>\n}\n\nexport const resistorProps = commonComponentProps.extend({\n resistance,\n\n pullupFor: z.string().optional(),\n pullupTo: z.string().optional(),\n\n pulldownFor: z.string().optional(),\n pulldownTo: z.string().optional(),\n\n schOrientation: schematicOrientation.optional(),\n schSize: schematicSymbolSize.optional(),\n\n connections: createConnectionsProp(resistorPinLabels).optional(),\n})\nexport const resistorPins = lrPins\n\ntype InferredResistorProps = z.input<typeof resistorProps>\nexpectTypesMatch<ResistorProps, InferredResistorProps>(true)\n","import { resistance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type PotentiometerPinVariant = \"two_pin\" | \"three_pin\"\n\nexport interface PotentiometerProps extends CommonComponentProps {\n maxResistance: number | string\n pinVariant?: PotentiometerPinVariant\n}\n\nexport const potentiometerProps = commonComponentProps.extend({\n maxResistance: resistance,\n pinVariant: z.enum([\"two_pin\", \"three_pin\"]).optional(),\n})\n\ntype InferredPotentiometerProps = z.input<typeof potentiometerProps>\nexpectTypesMatch<PotentiometerProps, InferredPotentiometerProps>(true)\n","import { frequency, capacitance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type PinVariant = \"two_pin\" | \"four_pin\"\n\nexport const crystalPins = lrPins\nexport type CrystalPinLabels = (typeof crystalPins)[number]\n\nexport interface CrystalProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n frequency: number | string\n loadCapacitance: number | string\n manufacturerPartNumber?: string\n mpn?: string\n pinVariant?: PinVariant\n schOrientation?: SchematicOrientation\n connections?: Connections<CrystalPinLabels>\n}\n\nexport const crystalProps = commonComponentProps.extend({\n frequency: frequency,\n loadCapacitance: capacitance,\n manufacturerPartNumber: z.string().optional(),\n mpn: z.string().optional(),\n pinVariant: z.enum([\"two_pin\", \"four_pin\"]).optional(),\n schOrientation: schematicOrientation.optional(),\n connections: createConnectionsProp(crystalPins).optional(),\n})\n\ntype InferredCrystalProps = z.input<typeof crystalProps>\nexpectTypesMatch<CrystalProps, InferredCrystalProps>(true)\n","import { frequency, capacitance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type ResonatorPinVariant = \"no_ground\" | \"ground_pin\" | \"two_ground_pins\"\n\nexport interface ResonatorProps extends CommonComponentProps {\n frequency: number | string\n loadCapacitance: number | string\n pinVariant?: ResonatorPinVariant\n}\n\nexport const resonatorProps = commonComponentProps.extend({\n frequency: frequency,\n loadCapacitance: capacitance,\n pinVariant: z.enum([\"no_ground\", \"ground_pin\", \"two_ground_pins\"]).optional(),\n})\n\ntype InferredResonatorProps = z.input<typeof resonatorProps>\nexpectTypesMatch<ResonatorProps, InferredResonatorProps>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { boardProps, type BoardProps } from \"lib/components/board\"\n\nexport interface StampboardProps extends BoardProps {\n leftPinCount?: number\n rightPinCount?: number\n topPinCount?: number\n bottomPinCount?: number\n leftPins?: string[]\n rightPins?: string[]\n topPins?: string[]\n bottomPins?: string[]\n pinPitch?: number | string\n innerHoles?: boolean\n}\n\nexport const stampboardProps = boardProps.extend({\n leftPinCount: z.number().optional(),\n rightPinCount: z.number().optional(),\n topPinCount: z.number().optional(),\n bottomPinCount: z.number().optional(),\n leftPins: z.array(z.string()).optional(),\n rightPins: z.array(z.string()).optional(),\n topPins: z.array(z.string()).optional(),\n bottomPins: z.array(z.string()).optional(),\n pinPitch: distance.optional(),\n innerHoles: z.boolean().optional(),\n})\n\ntype InferredStampboardProps = z.input<typeof stampboardProps>\nexpectTypesMatch<StampboardProps, InferredStampboardProps>(true)\n","import { capacitance, voltage } from \"circuit-json\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPolarPins,\n} from \"lib/common/layout\"\nimport {\n schematicSymbolSize,\n type SchematicSymbolSize,\n} from \"lib/common/schematicSize\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { z } from \"zod\"\n\nexport const capacitorPinLabels = [\n \"pin1\",\n \"pin2\",\n \"pos\",\n \"neg\",\n \"anode\",\n \"cathode\",\n] as const\nexport type CapacitorPinLabels = (typeof capacitorPinLabels)[number]\n\nexport interface CapacitorProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n capacitance: number | string\n maxVoltageRating?: number | string\n schShowRatings?: boolean\n polarized?: boolean\n decouplingFor?: string\n decouplingTo?: string\n bypassFor?: string\n bypassTo?: string\n maxDecouplingTraceLength?: number\n schOrientation?: SchematicOrientation\n schSize?: SchematicSymbolSize\n connections?: Connections<CapacitorPinLabels>\n}\n\nexport const capacitorProps = commonComponentProps.extend({\n capacitance,\n maxVoltageRating: voltage.optional(),\n schShowRatings: z.boolean().optional().default(false),\n polarized: z.boolean().optional().default(false),\n decouplingFor: z.string().optional(),\n decouplingTo: z.string().optional(),\n bypassFor: z.string().optional(),\n bypassTo: z.string().optional(),\n maxDecouplingTraceLength: z.number().optional(),\n schOrientation: schematicOrientation.optional(),\n schSize: schematicSymbolSize.optional(),\n connections: createConnectionsProp(capacitorPinLabels).optional(),\n})\nexport const capacitorPins = lrPolarPins\n\nexpectTypesMatch<CapacitorProps, z.input<typeof capacitorProps>>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface NetProps {\n name: string\n connectsTo?: string | string[]\n highlightColor?: string\n isPowerNet?: boolean\n isGroundNet?: boolean\n}\n\nexport const netProps = z.object({\n name: z.string(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n highlightColor: z.string().optional(),\n isPowerNet: z.boolean().optional(),\n isGroundNet: z.boolean().optional(),\n})\n\ntype InferredNetProps = z.input<typeof netProps>\nexpectTypesMatch<NetProps, InferredNetProps>(true)\n","import { distance, type Distance } from \"lib/common/distance\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface FiducialProps extends CommonComponentProps {\n soldermaskPullback?: Distance\n padDiameter?: Distance\n}\n\nexport const fiducialProps = commonComponentProps.extend({\n soldermaskPullback: distance.optional(),\n padDiameter: distance.optional(),\n})\n\ntype InferredFiducialProps = z.input<typeof fiducialProps>\nexpectTypesMatch<FiducialProps, InferredFiducialProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ConstrainedLayoutProps {\n name?: string\n pcbOnly?: boolean\n schOnly?: boolean\n}\n\nexport const constrainedLayoutProps = z.object({\n name: z.string().optional(),\n pcbOnly: z.boolean().optional(),\n schOnly: z.boolean().optional(),\n})\n\nexport type InferredConstrainedLayoutProps = z.input<\n typeof constrainedLayoutProps\n>\n\nexpectTypesMatch<InferredConstrainedLayoutProps, ConstrainedLayoutProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport type { Distance } from \"lib/common/distance\"\nimport { distance } from \"lib/common/distance\"\nimport { z } from \"zod\"\n\nexport type PcbXDistConstraint = {\n pcb?: true\n xDist: Distance\n\n /**\n * Selector for left component, e.g. \".U1\" or \".R1\", you can also specify the\n * edge or center of the component e.g. \".R1 leftedge\", \".R1 center\"\n */\n left: string\n\n /**\n * Selector for right component, e.g. \".U1\" or \".R1\", you can also specify the\n * edge or center of the component e.g. \".R1 leftedge\", \".R1 center\"\n */\n right: string\n\n /**\n * If true, the provided distance is the distance between the closest edges of\n * the left and right components\n */\n edgeToEdge?: true\n\n /**\n * If true, the provided distance is the distance between the centers of the\n * left and right components\n */\n centerToCenter?: true\n}\n\nexport type PcbYDistConstraint = {\n pcb?: true\n yDist: Distance\n\n /**\n * Selector for top component, e.g. \".U1\" or \".R1\", you can also specify the\n * edge or center of the component e.g. \".R1 topedge\", \".R1 center\"\n */\n top: string\n\n /**\n * Selector for bottom component, e.g. \".U1\" or \".R1\", you can also specify the\n * edge or center of the component e.g. \".R1 bottomedge\", \".R1 center\"\n */\n bottom: string\n\n edgeToEdge?: true\n centerToCenter?: true\n}\n\nexport type PcbSameYConstraint = {\n pcb?: true\n sameY?: true\n\n /**\n * Selector for components, e.g. [\".U1\", \".R1\"], you can also specify the\n * edge or center of the component e.g. [\".R1 leftedge\", \".U1 center\"]\n */\n for: string[]\n}\n\nexport type PcbSameXConstraint = {\n pcb?: true\n sameX?: true\n /**\n * Selector for components, e.g. [\".U1\", \".R1\"], you can also specify the\n * edge or center of the component e.g. [\".R1 leftedge\", \".U1 center\"]\n */\n for: string[]\n}\n\nexport type ConstraintProps =\n | PcbXDistConstraint\n | PcbYDistConstraint\n | PcbSameYConstraint\n | PcbSameXConstraint\n\n// -----------------------------------------------------------------------------\n// Zod\n// -----------------------------------------------------------------------------\n\nexport const pcbXDistConstraintProps = z.object({\n pcb: z.literal(true).optional(),\n xDist: distance,\n left: z.string(),\n right: z.string(),\n\n edgeToEdge: z.literal(true).optional(),\n centerToCenter: z.literal(true).optional(),\n})\nexpectTypesMatch<PcbXDistConstraint, z.input<typeof pcbXDistConstraintProps>>(\n true,\n)\n\nexport const pcbYDistConstraintProps = z.object({\n pcb: z.literal(true).optional(),\n yDist: distance,\n top: z.string(),\n bottom: z.string(),\n\n edgeToEdge: z.literal(true).optional(),\n centerToCenter: z.literal(true).optional(),\n})\nexpectTypesMatch<PcbYDistConstraint, z.input<typeof pcbYDistConstraintProps>>(\n true,\n)\n\nexport const pcbSameYConstraintProps = z.object({\n pcb: z.literal(true).optional(),\n sameY: z.literal(true).optional(),\n for: z.array(z.string()),\n})\nexpectTypesMatch<PcbSameYConstraint, z.input<typeof pcbSameYConstraintProps>>(\n true,\n)\n\nexport const pcbSameXConstraintProps = z.object({\n pcb: z.literal(true).optional(),\n sameX: z.literal(true).optional(),\n for: z.array(z.string()),\n})\nexpectTypesMatch<PcbSameXConstraint, z.input<typeof pcbSameXConstraintProps>>(\n true,\n)\n\nexport const constraintProps = z.union([\n pcbXDistConstraintProps,\n pcbYDistConstraintProps,\n pcbSameYConstraintProps,\n pcbSameXConstraintProps,\n])\n\nexpectTypesMatch<ConstraintProps, z.input<typeof constraintProps>>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { point, type Point } from \"lib/common/point\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectCutoutProps\n extends Omit<PcbLayoutProps, \"layer\" | \"pcbRotation\"> {\n name?: string\n shape: \"rect\"\n width: Distance\n height: Distance\n}\n\nexport const rectCutoutProps = pcbLayoutProps\n .omit({\n layer: true,\n pcbRotation: true,\n })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n })\nexpectTypesMatch<RectCutoutProps, z.input<typeof rectCutoutProps>>(true)\n\nexport interface CircleCutoutProps\n extends Omit<PcbLayoutProps, \"layer\" | \"pcbRotation\"> {\n name?: string\n shape: \"circle\"\n radius: Distance\n}\n\nexport const circleCutoutProps = pcbLayoutProps\n .omit({\n layer: true,\n pcbRotation: true,\n })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"circle\"),\n radius: distance,\n })\nexpectTypesMatch<CircleCutoutProps, z.input<typeof circleCutoutProps>>(true)\n\nexport interface PolygonCutoutProps\n extends Omit<PcbLayoutProps, \"layer\" | \"pcbRotation\"> {\n name?: string\n shape: \"polygon\"\n points: Point[]\n}\n\nexport const polygonCutoutProps = pcbLayoutProps\n .omit({\n layer: true,\n pcbRotation: true,\n })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"polygon\"),\n points: z.array(point),\n })\nexpectTypesMatch<PolygonCutoutProps, z.input<typeof polygonCutoutProps>>(true)\n\nexport type CutoutProps =\n | RectCutoutProps\n | CircleCutoutProps\n | PolygonCutoutProps\n\nexport const cutoutProps = z.discriminatedUnion(\"shape\", [\n rectCutoutProps,\n circleCutoutProps,\n polygonCutoutProps,\n])\n\nexport type CutoutPropsInput = z.input<typeof cutoutProps>\n","import {\n pcbLayoutProps,\n type CommonLayoutProps,\n type PcbLayoutProps,\n} from \"lib/common/layout\"\nimport { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { portHints, type PortHints } from \"lib/common/portHints\"\nimport { point, type Point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"rect\"\n width: Distance\n height: Distance\n rectBorderRadius?: Distance\n cornerRadius?: Distance\n portHints?: PortHints\n coveredWithSolderMask?: boolean\n solderMaskMargin?: Distance\n}\n\nexport interface RotatedRectSmtPadProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"rotated_rect\"\n width: Distance\n height: Distance\n cornerRadius?: Distance\n ccwRotation: number\n portHints?: PortHints\n coveredWithSolderMask?: boolean\n solderMaskMargin?: Distance\n}\n\nexport interface CircleSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"circle\"\n radius: Distance\n portHints?: PortHints\n coveredWithSolderMask?: boolean\n solderMaskMargin?: Distance\n}\n\nexport interface PillSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"pill\"\n width: Distance\n height: Distance\n radius: Distance\n portHints?: PortHints\n coveredWithSolderMask?: boolean\n solderMaskMargin?: Distance\n}\n\nexport interface PolygonSmtPadProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"polygon\"\n points: Point[]\n portHints?: PortHints\n coveredWithSolderMask?: boolean\n solderMaskMargin?: Distance\n}\n\nexport type SmtPadProps =\n | RectSmtPadProps\n | CircleSmtPadProps\n | RotatedRectSmtPadProps\n | PillSmtPadProps\n | PolygonSmtPadProps\n\n// ----------------------------------------------------------------------------\n// Zod\n// ----------------------------------------------------------------------------\n\nexport const rectSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n rectBorderRadius: distance.optional(),\n cornerRadius: distance.optional(),\n portHints: portHints.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n solderMaskMargin: distance.optional(),\n })\ntype InferredRectSmtPadProps = z.input<typeof rectSmtPadProps>\nexpectTypesMatch<InferredRectSmtPadProps, RectSmtPadProps>(true)\n\nexport const rotatedRectSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"rotated_rect\"),\n width: distance,\n height: distance,\n ccwRotation: z.number(),\n cornerRadius: distance.optional(),\n portHints: portHints.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n solderMaskMargin: distance.optional(),\n })\ntype InferredRotatedRectSmtPadProps = z.input<typeof rotatedRectSmtPadProps>\nexpectTypesMatch<InferredRotatedRectSmtPadProps, RotatedRectSmtPadProps>(true)\n\nexport const circleSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"circle\"),\n radius: distance,\n portHints: portHints.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n solderMaskMargin: distance.optional(),\n })\ntype InferredCircleSmtPadProps = z.input<typeof circleSmtPadProps>\nexpectTypesMatch<InferredCircleSmtPadProps, CircleSmtPadProps>(true)\n\nexport const pillSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"pill\"),\n width: distance,\n height: distance,\n radius: distance,\n portHints: portHints.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n solderMaskMargin: distance.optional(),\n })\ntype InferredPillSmtPadProps = z.input<typeof pillSmtPadProps>\nexpectTypesMatch<InferredPillSmtPadProps, PillSmtPadProps>(true)\n\nexport const polygonSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"polygon\"),\n points: z.array(point),\n portHints: portHints.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n solderMaskMargin: distance.optional(),\n })\ntype InferredPolygonSmtPadProps = z.input<typeof polygonSmtPadProps>\nexpectTypesMatch<InferredPolygonSmtPadProps, PolygonSmtPadProps>(true)\n\nexport const smtPadProps = z.discriminatedUnion(\"shape\", [\n circleSmtPadProps,\n rectSmtPadProps,\n rotatedRectSmtPadProps,\n pillSmtPadProps,\n polygonSmtPadProps,\n])\n\nexport type InferredSmtPadProps = z.input<typeof smtPadProps>\nexpectTypesMatch<InferredSmtPadProps, SmtPadProps>(true)\n","import { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { boolean, string, z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectSolderPasteProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"rect\"\n width: Distance\n height: Distance\n}\n\nexport interface CircleSolderPasteProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"circle\"\n radius: Distance\n}\n\nexport type SolderPasteProps = RectSolderPasteProps | CircleSolderPasteProps\n\n// zod\n\nexport const rectSolderPasteProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n })\ntype InferredRectSolderPasteProps = z.input<typeof rectSolderPasteProps>\nexpectTypesMatch<InferredRectSolderPasteProps, RectSolderPasteProps>(true)\n\nexport const circleSolderPasteProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"circle\"),\n radius: distance,\n })\ntype InferredCircleSolderPasteProps = z.input<typeof circleSolderPasteProps>\nexpectTypesMatch<InferredCircleSolderPasteProps, CircleSolderPasteProps>(true)\n\nexport const solderPasteProps = z.union([\n circleSolderPasteProps,\n rectSolderPasteProps,\n])\n\nexport type InferredSolderPasteProps = z.input<typeof solderPasteProps>\nexpectTypesMatch<InferredSolderPasteProps, SolderPasteProps>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface CircleHoleProps extends PcbLayoutProps {\n name?: string\n shape?: \"circle\"\n diameter?: Distance\n radius?: Distance\n solderMaskMargin?: Distance\n coveredWithSolderMask?: boolean\n}\n\nexport interface PillHoleProps extends PcbLayoutProps {\n name?: string\n shape: \"pill\"\n width: Distance\n height: Distance\n solderMaskMargin?: Distance\n coveredWithSolderMask?: boolean\n}\n\nexport interface RectHoleProps extends PcbLayoutProps {\n name?: string\n shape: \"rect\"\n width: Distance\n height: Distance\n solderMaskMargin?: Distance\n coveredWithSolderMask?: boolean\n}\n\nexport type HoleProps = CircleHoleProps | PillHoleProps | RectHoleProps\n\nconst circleHoleProps = pcbLayoutProps\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"circle\").optional(),\n diameter: distance.optional(),\n radius: distance.optional(),\n solderMaskMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n })\n .transform((d) => ({\n ...d,\n diameter: d.diameter ?? 2 * d.radius!,\n radius: d.radius ?? d.diameter! / 2,\n }))\n\nconst pillHoleProps = pcbLayoutProps.extend({\n name: z.string().optional(),\n shape: z.literal(\"pill\"),\n width: distance,\n height: distance,\n solderMaskMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n})\n\nconst rectHoleProps = pcbLayoutProps.extend({\n name: z.string().optional(),\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n solderMaskMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional(),\n})\n\nexport const holeProps = z.union([\n circleHoleProps,\n pillHoleProps,\n rectHoleProps,\n])\n\nexport type InferredHoleProps = z.input<typeof holeProps>\n\nexpectTypesMatch<HoleProps, InferredHoleProps>(true)\n","import { distance, route_hint_point } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { point } from \"../common/point\"\n\nexport const portRef = z.union([\n z.string(),\n z.custom<{ getPortSelector: () => string }>((v) =>\n Boolean(v.getPortSelector),\n ),\n])\n\nconst pcbPath = z.array(z.union([point, z.string()]))\n\nconst baseTraceProps = z.object({\n key: z.string().optional(),\n thickness: distance.optional(),\n width: distance.optional().describe(\"Alias for trace thickness\"),\n schematicRouteHints: z.array(point).optional(),\n pcbRouteHints: z.array(route_hint_point).optional(),\n pcbPathRelativeTo: z.string().optional(),\n pcbPath: pcbPath.optional(),\n pcbPaths: z.array(pcbPath).optional(),\n pcbStraightLine: z\n .boolean()\n .optional()\n .describe(\"Draw a straight pcb trace between the connected points\"),\n schDisplayLabel: z.string().optional(),\n schStroke: z.string().optional(),\n highlightColor: z.string().optional(),\n maxLength: distance.optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n})\n\nexport const traceProps = z.union([\n baseTraceProps.extend({\n path: z.array(portRef),\n }),\n baseTraceProps.extend({\n from: portRef,\n to: portRef,\n }),\n])\n\nexport type TraceProps = z.input<typeof traceProps>\n","import { type LayerRef, layer_ref } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface FootprintProps {\n children?: any\n /**\n * The layer that the footprint is designed for. If you set this to \"top\"\n * then it means the children were intended to represent the top layer. If\n * the <chip /> with this footprint is moved to the bottom layer, then the\n * components will be mirrored.\n *\n * Generally, you shouldn't set this except where it can help prevent\n * confusion because you have a complex multi-layer footprint. Default is\n * \"top\" and this is most intuitive.\n */\n originalLayer?: LayerRef\n /**\n * Serialized circuit JSON describing a precompiled footprint\n */\n circuitJson?: any[]\n}\n\nexport const footprintProps = z.object({\n children: z.any().optional(),\n originalLayer: layer_ref.default(\"top\").optional(),\n circuitJson: z.array(z.any()).optional(),\n})\n\nexport type FootprintPropsInput = z.input<typeof footprintProps>\ntype InferredFootprintProps = z.infer<typeof footprintProps>\nexpectTypesMatch<InferredFootprintProps, FootprintProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface SymbolProps {\n /**\n * The facing direction that the symbol is designed for. If you set this to \"right\",\n * then it means the children were intended to represent the symbol facing right.\n * Generally, you shouldn't set this except where it can help prevent confusion\n * because you have a complex symbol. Default is \"right\" and this is most intuitive.\n */\n originalFacingDirection?: \"up\" | \"down\" | \"left\" | \"right\"\n}\n\nexport const symbolProps = z.object({\n originalFacingDirection: z\n .enum([\"up\", \"down\", \"left\", \"right\"])\n .default(\"right\")\n .optional(),\n})\n\nexport type SymbolPropsInput = z.input<typeof symbolProps>\ntype InferredSymbolProps = z.infer<typeof symbolProps>\nexpectTypesMatch<InferredSymbolProps, SymbolProps>(true)\n","import { voltage } from \"circuit-json\"\nimport { z } from \"zod\"\nimport {\n commonComponentProps,\n lrPins,\n lrPolarPins,\n type CommonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\n/** @deprecated use battery_capacity from circuit-json when circuit-json is updated */\nconst capacity = z\n .number()\n .or(z.string().endsWith(\"mAh\"))\n .transform((v) => {\n if (typeof v === \"string\") {\n const valString = v.replace(\"mAh\", \"\")\n const num = Number.parseFloat(valString)\n if (Number.isNaN(num)) {\n throw new Error(\"Invalid capacity\")\n }\n return num\n }\n return v\n })\n .describe(\"Battery capacity in mAh\")\n\nexport interface BatteryProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n capacity?: number | string\n voltage?: number | string\n standard?: \"AA\" | \"AAA\" | \"9V\" | \"CR2032\" | \"18650\" | \"C\"\n schOrientation?: SchematicOrientation\n}\n\nexport const batteryProps = commonComponentProps.extend({\n capacity: capacity.optional(),\n voltage: voltage.optional(),\n standard: z.enum([\"AA\", \"AAA\", \"9V\", \"CR2032\", \"18650\", \"C\"]).optional(),\n schOrientation: schematicOrientation.optional(),\n})\nexport const batteryPins = lrPolarPins\nexport type BatteryPinLabels = (typeof batteryPins)[number]\n\nexpectTypesMatch<BatteryProps, z.input<typeof batteryProps>>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicPinArrangement,\n type SchematicPinArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { connectionTarget } from \"lib/common/connectionsProp\"\nimport {\n schematicPinLabel,\n type SchematicPinLabel,\n} from \"lib/common/schematicPinLabel\"\nimport {\n pcbOrientation as pcbOrientationProp,\n type PcbOrientation,\n} from \"lib/common/pcbOrientation\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface PinHeaderProps extends CommonComponentProps {\n /**\n * Number of pins in the header\n */\n pinCount: number\n\n /**\n * Distance between pins\n */\n pitch?: number | string\n\n /**\n * Schematic facing direction\n */\n schFacingDirection?: \"up\" | \"down\" | \"left\" | \"right\"\n\n /**\n * Whether the header is male, female, or unpopulated\n */\n gender?: \"male\" | \"female\" | \"unpopulated\"\n\n /**\n * Whether to show pin labels in silkscreen\n */\n showSilkscreenPinLabels?: boolean\n\n /**\n * Labels for PCB pins\n */\n pcbPinLabels?: Record<string, string>\n\n /**\n * Whether the header has two rows of pins\n */\n doubleRow?: boolean\n\n /**\n * If true, the header is a right-angle style connector\n */\n rightAngle?: boolean\n\n /**\n * Orientation of the header on the PCB\n */\n pcbOrientation?: PcbOrientation\n\n /**\n * Diameter of the through-hole for each pin\n */\n holeDiameter?: number | string\n\n /**\n * Diameter of the plated area around each hole\n */\n platedDiameter?: number | string\n\n /**\n * Labels for each pin\n */\n pinLabels?: Record<string, SchematicPinLabel> | SchematicPinLabel[]\n\n /**\n * Connections to other components\n */\n connections?: Connections<string>\n\n /**\n * Direction the header is facing\n */\n facingDirection?: \"left\" | \"right\"\n\n /**\n * Pin arrangement in schematic view\n */\n schPinArrangement?: SchematicPinArrangement\n\n /**\n * Schematic pin style (margins, etc)\n */\n schPinStyle?: SchematicPinStyle\n\n /**\n * Schematic pin spacing\n */\n schPinSpacing?: number | string\n\n /**\n * Schematic width\n */\n schWidth?: number | string\n\n /**\n * Schematic height\n */\n schHeight?: number | string\n}\n\nexport const pinHeaderProps = commonComponentProps.extend({\n pinCount: z.number(),\n pitch: distance.optional(),\n schFacingDirection: z.enum([\"up\", \"down\", \"left\", \"right\"]).optional(),\n gender: z.enum([\"male\", \"female\", \"unpopulated\"]).optional().default(\"male\"),\n showSilkscreenPinLabels: z.boolean().optional(),\n pcbPinLabels: z.record(z.string(), z.string()).optional(),\n doubleRow: z.boolean().optional(),\n rightAngle: z.boolean().optional(),\n pcbOrientation: pcbOrientationProp.optional(),\n holeDiameter: distance.optional(),\n platedDiameter: distance.optional(),\n pinLabels: z\n .record(z.string(), schematicPinLabel)\n .or(z.array(schematicPinLabel))\n .optional(),\n connections: z\n .custom<Connections>()\n .pipe(z.record(z.string(), connectionTarget))\n .optional(),\n facingDirection: z.enum([\"left\", \"right\"]).optional(),\n schPinArrangement: schematicPinArrangement.optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n})\n\ntype InferredPinHeaderProps = z.input<typeof pinHeaderProps>\nexpectTypesMatch<PinHeaderProps, InferredPinHeaderProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport const pcbOrientation = z\n .enum([\"vertical\", \"horizontal\"])\n .describe(\n \"vertical means pins go 1->2 downward and horizontal means pins go 1->2 rightward\",\n )\n\nexport type PcbOrientation = \"vertical\" | \"horizontal\"\n\nexpectTypesMatch<PcbOrientation, z.infer<typeof pcbOrientation>>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { distance } from \"lib/common/distance\"\nimport { rotation } from \"circuit-json\"\n\n/**\n * @deprecated Use NetLabelProps instead.\n */\nexport interface NetAliasProps {\n net?: string\n connection?: string\n schX?: number | string\n schY?: number | string\n schRotation?: number | string\n anchorSide?: \"left\" | \"top\" | \"right\" | \"bottom\"\n}\n\n/** @deprecated Use netLabelProps instead. */\nexport const netAliasProps = z.object({\n net: z.string().optional(),\n connection: z.string().optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n anchorSide: z.enum([\"left\", \"top\", \"right\", \"bottom\"]).optional(),\n})\n\ntype InferredNetAliasProps = z.input<typeof netAliasProps>\nexpectTypesMatch<NetAliasProps, InferredNetAliasProps>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { distance } from \"lib/common/distance\"\nimport { rotation } from \"circuit-json\"\n\nexport interface NetLabelProps {\n net?: string\n connection?: string\n connectsTo?: string | string[]\n schX?: number | string\n schY?: number | string\n schRotation?: number | string\n anchorSide?: \"left\" | \"top\" | \"right\" | \"bottom\"\n}\n\nexport const netLabelProps = z.object({\n net: z.string().optional(),\n connection: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n anchorSide: z.enum([\"left\", \"top\", \"right\", \"bottom\"]).optional(),\n})\n\ntype InferredNetLabelProps = z.input<typeof netLabelProps>\nexpectTypesMatch<NetLabelProps, InferredNetLabelProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { chipProps, type ChipProps, type PinLabelsProp } from \"./chip\"\n\nexport type PushButtonProps<T extends PinLabelsProp | string = string> =\n ChipProps<T>\n\nexport const pushButtonProps = chipProps.extend({})\n\nexpectTypesMatch<PushButtonProps, z.input<typeof pushButtonProps>>(true)\n","import type { SubcircuitGroupProps } from \"./group\"\nimport { subcircuitGroupProps } from \"./group\"\nimport type { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport type SubcircuitProps = SubcircuitGroupProps\n\nexport const subcircuitProps = subcircuitGroupProps\n\ntype InferredSubcircuitProps = z.input<typeof subcircuitProps>\nexpectTypesMatch<SubcircuitProps, InferredSubcircuitProps>(true)\n","import { ms } from \"circuit-json\"\nimport type { AutocompleteString } from \"lib/common/autocomplete\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface AnalogSimulationProps {\n simulationType?: \"spice_transient_analysis\"\n duration?: number | string\n timePerStep?: number | string\n spiceEngine?: AutocompleteString<\"spicey\" | \"ngspice\">\n}\n\nconst spiceEngine = z.custom<AutocompleteString<\"spicey\" | \"ngspice\">>(\n (value) => typeof value === \"string\",\n)\n\nexport const analogSimulationProps = z.object({\n simulationType: z\n .literal(\"spice_transient_analysis\")\n .default(\"spice_transient_analysis\"),\n duration: ms.optional(),\n timePerStep: ms.optional(),\n spiceEngine: spiceEngine.optional(),\n})\n\nexpectTypesMatch<AnalogSimulationProps, z.input<typeof analogSimulationProps>>(\n true,\n)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\n\nexport const transistorPinsLabels = [\n \"pin1\",\n \"pin2\",\n \"pin3\",\n \"emitter\",\n \"collector\",\n \"base\",\n \"gate\",\n \"source\",\n \"drain\",\n] as const\nexport type transistorPinsLabels = (typeof transistorPinsLabels)[number]\n\nexport interface TransistorProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n type: \"npn\" | \"pnp\" | \"bjt\" | \"jfet\" | \"mosfet\" | \"igbt\"\n connections?: Connections<transistorPinsLabels>\n}\n\nexport const transistorProps = commonComponentProps.extend({\n type: z.enum([\"npn\", \"pnp\", \"bjt\", \"jfet\", \"mosfet\", \"igbt\"]),\n connections: createConnectionsProp(transistorPinsLabels).optional(),\n})\n\nexport const transistorPins = [\n \"pin1\",\n \"emitter\",\n \"pin2\",\n \"collector\",\n \"pin3\",\n \"base\",\n] as const\nexport type TransistorPinLabels = (typeof transistorPins)[number]\n\ntype InferredTransistorProps = z.input<typeof transistorProps>\nexpectTypesMatch<TransistorProps, InferredTransistorProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"../common/layout\"\nimport { expectTypesMatch } from \"../typecheck\"\nimport { z } from \"zod\"\n\nexport interface MosfetProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n channelType: \"n\" | \"p\"\n mosfetMode: \"enhancement\" | \"depletion\"\n}\n\nexport const mosfetProps = commonComponentProps.extend({\n channelType: z.enum([\"n\", \"p\"]),\n mosfetMode: z.enum([\"enhancement\", \"depletion\"]),\n})\n\nexport const mosfetPins = [\n \"pin1\",\n \"drain\",\n \"pin2\",\n \"source\",\n \"pin3\",\n \"gate\",\n] as const\nexport type MosfetPinLabels = (typeof mosfetPins)[number]\n\ntype InferredMosfetProps = z.input<typeof mosfetProps>\nexpectTypesMatch<MosfetProps, InferredMosfetProps>(true)\n","import { inductance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport const inductorPins = lrPins\nexport type InductorPinLabels = (typeof inductorPins)[number]\n\nexport interface InductorProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n inductance: number | string\n maxCurrentRating?: number | string\n schOrientation?: SchematicOrientation\n connections?: Connections<InductorPinLabels>\n}\n\nexport const inductorProps = commonComponentProps.extend({\n inductance,\n maxCurrentRating: z.union([z.string(), z.number()]).optional(),\n schOrientation: schematicOrientation.optional(),\n connections: createConnectionsProp(inductorPins).optional(),\n})\n\ntype InferredInductorProps = z.input<typeof inductorProps>\n\nexpectTypesMatch<InductorProps, InferredInductorProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n lrPolarPins,\n} from \"lib/common/layout\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\n\nconst diodeConnectionKeys = z.enum([\n \"anode\",\n \"cathode\",\n \"pin1\",\n \"pin2\",\n \"pos\",\n \"neg\",\n])\n\nconst connectionTarget = z\n .string()\n .or(z.array(z.string()).readonly())\n .or(z.array(z.string()))\n\nconst connectionsProp = z.record(diodeConnectionKeys, connectionTarget)\n\nconst diodeVariant = z.enum([\n \"standard\",\n \"schottky\",\n \"zener\",\n \"avalanche\",\n \"photo\",\n \"tvs\",\n])\n\nexport const diodeProps = commonComponentProps\n .extend({\n connections: connectionsProp.optional(),\n variant: diodeVariant.optional().default(\"standard\"),\n standard: z.boolean().optional(),\n schottky: z.boolean().optional(),\n zener: z.boolean().optional(),\n avalanche: z.boolean().optional(),\n photo: z.boolean().optional(),\n tvs: z.boolean().optional(),\n schOrientation: schematicOrientation.optional(),\n })\n .superRefine((data, ctx) => {\n // Check if multiple boolean flags are set directly\n const enabledFlags = [\n data.standard,\n data.schottky,\n data.zener,\n data.avalanche,\n data.photo,\n data.tvs,\n ].filter(Boolean).length\n\n if (enabledFlags > 1) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Exactly one diode variant must be enabled\",\n path: [],\n })\n return z.INVALID\n }\n })\n .transform((data) => {\n // Set all variant flags to false initially\n const result = {\n ...data,\n standard: false,\n schottky: false,\n zener: false,\n avalanche: false,\n photo: false,\n tvs: false,\n }\n\n if (data.standard) result.standard = true\n else if (data.schottky) result.schottky = true\n else if (data.zener) result.zener = true\n else if (data.photo) result.photo = true\n else if (data.tvs) result.tvs = true\n else {\n switch (data.variant) {\n case \"standard\":\n result.standard = true\n break\n case \"schottky\":\n result.schottky = true\n break\n case \"zener\":\n result.zener = true\n break\n case \"avalanche\":\n result.avalanche = true\n break\n case \"photo\":\n result.photo = true\n break\n case \"tvs\":\n result.tvs = true\n break\n default:\n result.standard = true\n }\n }\n\n return result\n })\n\nexport const diodePins = lrPolarPins\nexport type DiodePinLabels = (typeof diodePins)[number]\n\nexport interface DiodeProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n connections?: {\n anode?: string | string[] | readonly string[]\n cathode?: string | string[] | readonly string[]\n pin1?: string | string[] | readonly string[]\n pin2?: string | string[] | readonly string[]\n pos?: string | string[] | readonly string[]\n neg?: string | string[] | readonly string[]\n }\n variant?: \"standard\" | \"schottky\" | \"zener\" | \"avalanche\" | \"photo\" | \"tvs\"\n standard?: boolean\n schottky?: boolean\n zener?: boolean\n avalanche?: boolean\n photo?: boolean\n tvs?: boolean\n schOrientation?: SchematicOrientation\n}\n\nexport type InferredDiodeProps = z.input<typeof diodeProps>\nexpectTypesMatch<InferredDiodeProps, DiodeProps>(true)\n","import { commonComponentProps, lrPolarPins } from \"lib/common/layout\"\nimport { schematicOrientation } from \"lib/common/schematicOrientation\"\nimport { z } from \"zod\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\n\nexport type LedPinLabels = (typeof lrPolarPins)[number]\n\nexport const ledProps = commonComponentProps.extend({\n color: z.string().optional(),\n wavelength: z.string().optional(),\n schDisplayValue: z.string().optional(),\n schOrientation: schematicOrientation.optional(),\n connections: createConnectionsProp(lrPolarPins).optional(),\n laser: z.boolean().optional(),\n})\nexport const ledPins = lrPolarPins\nexport type LedProps = z.input<typeof ledProps>\n","import { ms, frequency } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { connectionTarget } from \"lib/common/connectionsProp\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nimport { z } from \"zod\"\n\nexport interface SwitchProps extends CommonComponentProps {\n type?: \"spst\" | \"spdt\" | \"dpst\" | \"dpdt\"\n isNormallyClosed?: boolean\n spdt?: boolean\n spst?: boolean\n dpst?: boolean\n dpdt?: boolean\n simSwitchFrequency?: number | string\n simCloseAt?: number | string\n simOpenAt?: number | string\n simStartClosed?: boolean\n simStartOpen?: boolean\n connections?: Connections<string>\n}\n\nexport const switchProps = commonComponentProps\n .extend({\n type: z.enum([\"spst\", \"spdt\", \"dpst\", \"dpdt\"]).optional(),\n isNormallyClosed: z.boolean().optional().default(false),\n spst: z.boolean().optional(),\n spdt: z.boolean().optional(),\n dpst: z.boolean().optional(),\n dpdt: z.boolean().optional(),\n simSwitchFrequency: frequency.optional(),\n simCloseAt: ms.optional(),\n simOpenAt: ms.optional(),\n simStartClosed: z.boolean().optional(),\n simStartOpen: z.boolean().optional(),\n connections: z\n .custom<Connections<string>>()\n .pipe(z.record(z.string(), connectionTarget))\n .optional(),\n })\n .transform((props) => {\n const updatedProps: SwitchProps = { ...props }\n\n if (updatedProps.dpdt) {\n updatedProps.type = \"dpdt\"\n } else if (updatedProps.spst) {\n updatedProps.type = \"spst\"\n } else if (updatedProps.spdt) {\n updatedProps.type = \"spdt\"\n } else if (updatedProps.dpst) {\n updatedProps.type = \"dpst\"\n }\n\n switch (updatedProps.type) {\n case \"spdt\":\n updatedProps.spdt = true\n break\n case \"spst\":\n updatedProps.spst = true\n break\n case \"dpst\":\n updatedProps.dpst = true\n break\n case \"dpdt\":\n updatedProps.dpdt = true\n break\n }\n\n return updatedProps\n })\n\nexport type InferredSwitchProps = z.infer<typeof switchProps>\nexpectTypesMatch<SwitchProps, InferredSwitchProps>(true)\n","import { length } from \"circuit-json\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface FabricationNoteTextProps extends PcbLayoutProps {\n text: string\n anchorAlignment?:\n | \"center\"\n | \"top_left\"\n | \"top_right\"\n | \"bottom_left\"\n | \"bottom_right\"\n font?: \"tscircuit2024\"\n fontSize?: string | number\n color?: string\n}\n\nexport const fabricationNoteTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n color: z.string().optional(),\n})\n\nexpectTypesMatch<\n FabricationNoteTextProps,\n z.input<typeof fabricationNoteTextProps>\n>(true)\n\nexport type FabricationNoteTextPropsInput = z.input<\n typeof fabricationNoteTextProps\n>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const fabricationNoteRectProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n width: distance,\n height: distance,\n strokeWidth: distance.optional(),\n isFilled: z.boolean().optional(),\n hasStroke: z.boolean().optional(),\n isStrokeDashed: z.boolean().optional(),\n color: z.string().optional(),\n cornerRadius: distance.optional(),\n })\nexport type FabricationNoteRectProps = z.input<typeof fabricationNoteRectProps>\n","import { length, route_hint_point } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const fabricationNotePathProps = pcbLayoutProps\n .omit({\n pcbLeftEdgeX: true,\n pcbRightEdgeX: true,\n pcbTopEdgeY: true,\n pcbBottomEdgeY: true,\n pcbX: true,\n pcbY: true,\n pcbOffsetX: true,\n pcbOffsetY: true,\n pcbRotation: true,\n })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n color: z.string().optional(),\n })\nexport type FabricationNotePathProps = z.input<typeof fabricationNotePathProps>\n","import { distance, length } from \"circuit-json\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { point, type Point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nconst dimensionTarget = z.union([z.string(), point])\n\nexport interface FabricationNoteDimensionProps\n extends Omit<\n PcbLayoutProps,\n | \"pcbLeftEdgeX\"\n | \"pcbRightEdgeX\"\n | \"pcbTopEdgeY\"\n | \"pcbBottomEdgeY\"\n | \"pcbX\"\n | \"pcbY\"\n | \"pcbOffsetX\"\n | \"pcbOffsetY\"\n | \"pcbRotation\"\n > {\n from: string | Point\n to: string | Point\n text?: string\n offset?: string | number\n font?: \"tscircuit2024\"\n fontSize?: string | number\n color?: string\n arrowSize?: string | number\n units?: \"in\" | \"mm\"\n outerEdgeToEdge?: true\n centerToCenter?: true\n innerEdgeToEdge?: true\n}\n\nexport const fabricationNoteDimensionProps = pcbLayoutProps\n .omit({\n pcbLeftEdgeX: true,\n pcbRightEdgeX: true,\n pcbTopEdgeY: true,\n pcbBottomEdgeY: true,\n pcbX: true,\n pcbY: true,\n pcbOffsetX: true,\n pcbOffsetY: true,\n pcbRotation: true,\n })\n .extend({\n from: dimensionTarget,\n to: dimensionTarget,\n text: z.string().optional(),\n offset: distance.optional(),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n color: z.string().optional(),\n arrowSize: distance.optional(),\n units: z.enum([\"in\", \"mm\"]).optional(),\n outerEdgeToEdge: z.literal(true).optional(),\n centerToCenter: z.literal(true).optional(),\n innerEdgeToEdge: z.literal(true).optional(),\n })\n\nexpectTypesMatch<\n FabricationNoteDimensionProps,\n z.input<typeof fabricationNoteDimensionProps>\n>(true)\n\nexport type FabricationNoteDimensionPropsInput = z.input<\n typeof fabricationNoteDimensionProps\n>\n","import { distance, route_hint_point } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const pcbTraceProps = z.object({\n layer: z.string().optional(),\n thickness: distance.optional(),\n route: z.array(route_hint_point),\n})\nexport type PcbTraceProps = z.input<typeof pcbTraceProps>\n","import { distance, layer_ref, type LayerRefInput } from \"circuit-json\"\nimport { commonLayoutProps, type CommonLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ViaProps extends CommonLayoutProps {\n name?: string\n fromLayer: LayerRefInput\n toLayer: LayerRefInput\n holeDiameter?: number | string\n outerDiameter?: number | string\n connectsTo?: string | string[]\n netIsAssignable?: boolean\n}\n\nexport const viaProps = commonLayoutProps.extend({\n name: z.string().optional(),\n fromLayer: layer_ref,\n toLayer: layer_ref,\n holeDiameter: distance.optional(),\n outerDiameter: distance.optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n netIsAssignable: z.boolean().optional(),\n})\nexport type InferredViaProps = z.input<typeof viaProps>\nexpectTypesMatch<ViaProps, InferredViaProps>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { connectionTarget } from \"lib/common/connectionsProp\"\n\nexport const testpointPins = [\"pin1\"] as const\nexport type TestpointPinLabels = (typeof testpointPins)[number]\n\nconst testpointConnectionsProp = z\n .object({\n pin1: connectionTarget,\n })\n .strict()\n\nexport type TestpointConnections = z.infer<typeof testpointConnectionsProp>\n\nexport interface TestpointProps extends CommonComponentProps {\n /**\n * The footprint variant of the testpoint either a surface pad or through-hole\n */\n footprintVariant?: \"pad\" | \"through_hole\"\n /**\n * The shape of the pad if using a pad variant\n */\n padShape?: \"rect\" | \"circle\"\n /**\n * Diameter of the copper pad (applies to both SMD pads and plated holes)\n */\n padDiameter?: number | string\n /**\n * Diameter of the hole if using a through-hole testpoint\n */\n holeDiameter?: number | string\n /**\n * Width of the pad when padShape is rect\n */\n width?: number | string\n /**\n * Height of the pad when padShape is rect\n */\n height?: number | string\n connections?: TestpointConnections\n}\n\nexport const testpointProps = commonComponentProps\n .extend({\n connections: testpointConnectionsProp.optional(),\n footprintVariant: z.enum([\"pad\", \"through_hole\"]).optional(),\n padShape: z.enum([\"rect\", \"circle\"]).optional().default(\"circle\"),\n padDiameter: distance.optional(),\n holeDiameter: distance.optional(),\n width: distance.optional(),\n height: distance.optional(),\n })\n .refine(\n (props) =>\n props.footprintVariant !== \"through_hole\" ||\n props.holeDiameter !== undefined,\n { message: \"holeDiameter is required for through_hole testpoints\" },\n )\n\nexport type InferredTestpointProps = z.input<typeof testpointProps>\nexpectTypesMatch<TestpointProps, InferredTestpointProps>(true)\n","import { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface BreakoutPointProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n connection: string\n}\n\nexport const breakoutPointProps = pcbLayoutProps\n .omit({ pcbRotation: true, layer: true })\n .extend({\n connection: z.string(),\n })\n\ntype InferredBreakoutPointProps = z.input<typeof breakoutPointProps>\nexpectTypesMatch<BreakoutPointProps, InferredBreakoutPointProps>(true)\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const pcbKeepoutProps = z.union([\n pcbLayoutProps.omit({ pcbRotation: true }).extend({\n shape: z.literal(\"circle\"),\n radius: distance,\n }),\n pcbLayoutProps.extend({\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n }),\n])\nexport type PcbKeepoutProps = z.input<typeof pcbKeepoutProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const courtyardRectProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n width: distance,\n height: distance,\n strokeWidth: distance.optional(),\n isFilled: z.boolean().optional(),\n hasStroke: z.boolean().optional(),\n isStrokeDashed: z.boolean().optional(),\n color: z.string().optional(),\n })\nexport type CourtyardRectProps = z.input<typeof courtyardRectProps>\n","import { length } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { point } from \"lib/common/point\"\nimport { z } from \"zod\"\n\nexport const courtyardOutlineProps = pcbLayoutProps\n .omit({\n pcbLeftEdgeX: true,\n pcbRightEdgeX: true,\n pcbTopEdgeY: true,\n pcbBottomEdgeY: true,\n pcbX: true,\n pcbY: true,\n pcbOffsetX: true,\n pcbOffsetY: true,\n pcbRotation: true,\n })\n .extend({\n outline: z.array(point),\n strokeWidth: length.optional(),\n isClosed: z.boolean().optional(),\n isStrokeDashed: z.boolean().optional(),\n color: z.string().optional(),\n })\nexport type CourtyardOutlineProps = z.input<typeof courtyardOutlineProps>\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { layer_ref, type LayerRefInput } from \"circuit-json\"\n\nexport interface CopperPourProps {\n name?: string\n layer: LayerRefInput\n connectsTo: string\n padMargin?: Distance\n traceMargin?: Distance\n clearance?: Distance\n boardEdgeMargin?: Distance\n cutoutMargin?: Distance\n coveredWithSolderMask?: boolean\n}\n\nexport const copperPourProps = z.object({\n name: z.string().optional(),\n layer: layer_ref,\n connectsTo: z.string(),\n padMargin: distance.optional(),\n traceMargin: distance.optional(),\n clearance: distance.optional(),\n boardEdgeMargin: distance.optional(),\n cutoutMargin: distance.optional(),\n coveredWithSolderMask: z.boolean().optional().default(true),\n})\n\nexpectTypesMatch<CopperPourProps, z.input<typeof copperPourProps>>(true)\n\nexport type CopperPourPropsInput = z.input<typeof copperPourProps>\n","import { type LayerRef, layer_ref } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface CadAssemblyProps {\n /**\n * The layer that the CAD assembly is designed for. If you set this to \"top\"\n * then it means the children were intended to represent the top layer. If\n * the <chip /> with this assembly is moved to the bottom layer, then the\n * components will be mirrored.\n *\n * Generally, you shouldn't set this except where it can help prevent\n * confusion because you have a complex multi-layer assembly. Default is\n * \"top\" and this is most intuitive.\n */\n originalLayer?: LayerRef\n\n children?: any\n}\n\nexport const cadassemblyProps = z.object({\n originalLayer: layer_ref.default(\"top\").optional(),\n children: z.any().optional(),\n})\n\nexport type CadAssemblyPropsInput = z.input<typeof cadassemblyProps>\ntype InferredCadAssemblyProps = z.infer<typeof cadassemblyProps>\nexpectTypesMatch<InferredCadAssemblyProps, CadAssemblyProps>(true)\n","import { distance, pcbCoordinate, type Distance } from \"lib/common/distance\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { cadModelBase, type CadModelBase } from \"../common/cadModel\"\nimport { z } from \"zod\"\n\nexport interface CadModelProps extends CadModelBase {\n modelUrl: string\n stepUrl?: string\n pcbX?: Distance\n pcbY?: Distance\n pcbLeftEdgeX?: Distance\n pcbRightEdgeX?: Distance\n pcbTopEdgeY?: Distance\n pcbBottomEdgeY?: Distance\n pcbOffsetX?: Distance\n pcbOffsetY?: Distance\n pcbZ?: Distance\n}\n\nconst pcbPosition = z.object({\n pcbX: pcbCoordinate.optional(),\n pcbY: pcbCoordinate.optional(),\n pcbLeftEdgeX: pcbCoordinate.optional(),\n pcbRightEdgeX: pcbCoordinate.optional(),\n pcbTopEdgeY: pcbCoordinate.optional(),\n pcbBottomEdgeY: pcbCoordinate.optional(),\n pcbOffsetX: distance.optional(),\n pcbOffsetY: distance.optional(),\n pcbZ: distance.optional(),\n})\n\nconst cadModelBaseWithUrl = cadModelBase.extend({\n modelUrl: z.string(),\n stepUrl: z.string().optional(),\n})\n\nconst cadModelObject = cadModelBaseWithUrl.merge(pcbPosition)\nexpectTypesMatch<CadModelProps, z.input<typeof cadModelObject>>(true)\n\nexport const cadmodelProps = z.union([z.null(), z.string(), cadModelObject])\n\nexport type CadModelPropsInput = z.input<typeof cadmodelProps>\n","import { voltage } from \"circuit-json\"\nimport { commonComponentProps } from \"lib/common/layout\"\nimport type { z } from \"zod\"\n\nexport const powerSourceProps = commonComponentProps.extend({\n voltage,\n})\nexport type PowerSourceProps = z.input<typeof powerSourceProps>\n","import { frequency, rotation, voltage } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPolarPins,\n} from \"lib/common/layout\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type WaveShape = \"sinewave\" | \"square\" | \"triangle\" | \"sawtooth\"\n\nexport const voltageSourcePinLabels = [\"pin1\", \"pin2\", \"pos\", \"neg\"] as const\nexport type VoltageSourcePinLabels = (typeof voltageSourcePinLabels)[number]\n\nexport interface VoltageSourceProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n voltage?: number | string\n frequency?: number | string\n peakToPeakVoltage?: number | string\n waveShape?: WaveShape\n phase?: number | string\n dutyCycle?: number | string\n connections?: Connections<VoltageSourcePinLabels>\n}\n\nconst percentage = z\n .union([z.string(), z.number()])\n .transform((val) => {\n if (typeof val === \"string\") {\n if (val.endsWith(\"%\")) {\n return parseFloat(val.slice(0, -1)) / 100\n }\n return parseFloat(val)\n }\n return val\n })\n .pipe(\n z\n .number()\n .min(0, \"Duty cycle must be non-negative\")\n .max(1, \"Duty cycle cannot be greater than 100%\"),\n )\n\nexport const voltageSourceProps = commonComponentProps.extend({\n voltage: voltage.optional(),\n frequency: frequency.optional(),\n peakToPeakVoltage: voltage.optional(),\n waveShape: z.enum([\"sinewave\", \"square\", \"triangle\", \"sawtooth\"]).optional(),\n phase: rotation.optional(),\n dutyCycle: percentage.optional(),\n connections: createConnectionsProp(voltageSourcePinLabels).optional(),\n})\n\nexport const voltageSourcePins = lrPolarPins\n\ntype InferredVoltageSourceProps = z.input<typeof voltageSourceProps>\nexpectTypesMatch<VoltageSourceProps, InferredVoltageSourceProps>(true)\n","import { frequency, rotation, current } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPolarPins,\n} from \"lib/common/layout\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { type WaveShape } from \"./voltagesource\"\n\nexport const currentSourcePinLabels = [\"pin1\", \"pin2\", \"pos\", \"neg\"] as const\nexport type CurrentSourcePinLabels = (typeof currentSourcePinLabels)[number]\n\nexport interface CurrentSourceProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n current?: number | string\n frequency?: number | string\n peakToPeakCurrent?: number | string\n waveShape?: WaveShape\n phase?: number | string\n dutyCycle?: number | string\n connections?: Connections<CurrentSourcePinLabels>\n}\n\nconst percentage = z\n .union([z.string(), z.number()])\n .transform((val) => {\n if (typeof val === \"string\") {\n if (val.endsWith(\"%\")) {\n return parseFloat(val.slice(0, -1)) / 100\n }\n return parseFloat(val)\n }\n return val\n })\n .pipe(\n z\n .number()\n .min(0, \"Duty cycle must be non-negative\")\n .max(1, \"Duty cycle cannot be greater than 100%\"),\n )\n\nexport const currentSourceProps = commonComponentProps.extend({\n current: current.optional(),\n frequency: frequency.optional(),\n peakToPeakCurrent: current.optional(),\n waveShape: z.enum([\"sinewave\", \"square\", \"triangle\", \"sawtooth\"]).optional(),\n phase: rotation.optional(),\n dutyCycle: percentage.optional(),\n connections: createConnectionsProp(currentSourcePinLabels).optional(),\n})\n\nexport const currentSourcePins = lrPolarPins\n\ntype InferredCurrentSourceProps = z.input<typeof currentSourceProps>\nexpectTypesMatch<CurrentSourceProps, InferredCurrentSourceProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface VoltageProbeProps extends Omit<CommonComponentProps, \"name\"> {\n name?: string\n connectsTo: string\n referenceTo?: string\n color?: string\n}\n\nexport const voltageProbeProps = commonComponentProps\n .omit({ name: true })\n .extend({\n name: z.string().optional(),\n connectsTo: z.string(),\n referenceTo: z.string().optional(),\n color: z.string().optional(),\n })\n\nexpectTypesMatch<VoltageProbeProps, z.input<typeof voltageProbeProps>>(true)\n","import { distance, point, rotation } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Point } from \"lib/common/point\"\nimport type { Distance } from \"lib/common/distance\"\n\nexport const schematicArcProps = z.object({\n center: point,\n radius: distance,\n startAngleDegrees: rotation,\n endAngleDegrees: rotation,\n direction: z\n .enum([\"clockwise\", \"counterclockwise\"])\n .default(\"counterclockwise\"),\n strokeWidth: distance.optional(),\n color: z.string().optional(),\n isDashed: z.boolean().optional().default(false),\n})\n\nexport interface SchematicArcProps {\n center: Point\n radius: Distance\n startAngleDegrees: number | string\n endAngleDegrees: number | string\n direction?: \"clockwise\" | \"counterclockwise\"\n strokeWidth?: Distance\n color?: string\n isDashed?: boolean\n}\n\nexport type InferredSchematicArcProps = z.input<typeof schematicArcProps>\n\nexpectTypesMatch<SchematicArcProps, z.input<typeof schematicArcProps>>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ToolingrailProps {\n children?: any\n}\n\nexport const toolingrailProps = z.object({\n children: z.any().optional(),\n})\n\ntype InferredToolingrailProps = z.input<typeof toolingrailProps>\nexpectTypesMatch<ToolingrailProps, InferredToolingrailProps>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Distance } from \"lib/common/distance\"\n\nexport const schematicBoxProps = z\n .object({\n schX: distance.optional(),\n schY: distance.optional(),\n width: distance.optional(),\n height: distance.optional(),\n overlay: z.array(z.string()).optional(),\n\n padding: distance.optional(),\n paddingLeft: distance.optional(),\n paddingRight: distance.optional(),\n paddingTop: distance.optional(),\n paddingBottom: distance.optional(),\n\n title: z.string().optional(),\n titleAlignment: ninePointAnchor.default(\"top_left\"),\n titleColor: z.string().optional(),\n titleFontSize: distance.optional(),\n titleInside: z.boolean().default(false),\n strokeStyle: z.enum([\"solid\", \"dashed\"]).default(\"solid\"),\n })\n .refine(\n (elm) =>\n (elm.width !== undefined && elm.height !== undefined) ||\n (Array.isArray(elm.overlay) && elm.overlay.length > 0),\n {\n message:\n \"Must provide either both `width` and `height`, or a non-empty `overlay` array.\",\n },\n )\n .refine(\n (elm) =>\n !(\n elm.width !== undefined &&\n elm.height !== undefined &&\n Array.isArray(elm.overlay) &&\n elm.overlay.length > 0\n ),\n {\n message:\n \"Cannot provide both `width`/`height` and `overlay` at the same time.\",\n },\n )\n\nexport interface SchematicBoxProps {\n schX?: Distance\n schY?: Distance\n width?: Distance\n height?: Distance\n overlay?: string[]\n padding?: Distance\n paddingLeft?: Distance\n paddingRight?: Distance\n paddingTop?: Distance\n paddingBottom?: Distance\n title?: string\n titleAlignment?: z.infer<typeof ninePointAnchor>\n titleColor?: string\n titleFontSize?: Distance\n titleInside?: boolean\n strokeStyle?: \"solid\" | \"dashed\"\n}\n\nexport type InferredSchematicBoxProps = z.input<typeof schematicBoxProps>\n\nexpectTypesMatch<SchematicBoxProps, z.input<typeof schematicBoxProps>>(true)\n","import { distance, point } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Point } from \"lib/common/point\"\nimport type { Distance } from \"lib/common/distance\"\n\nexport const schematicCircleProps = z.object({\n center: point,\n radius: distance,\n strokeWidth: distance.optional(),\n color: z.string().optional(),\n isFilled: z.boolean().optional().default(false),\n fillColor: z.string().optional(),\n isDashed: z.boolean().optional().default(false),\n})\n\nexport interface SchematicCircleProps {\n center: Point\n radius: Distance\n strokeWidth?: Distance\n color?: string\n isFilled?: boolean\n fillColor?: string\n isDashed?: boolean\n}\n\nexport type InferredSchematicCircleProps = z.input<typeof schematicCircleProps>\n\nexpectTypesMatch<SchematicCircleProps, z.input<typeof schematicCircleProps>>(\n true,\n)\n","import { distance, point, rotation } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Distance } from \"lib/common/distance\"\n\nexport const schematicRectProps = z.object({\n schX: distance.optional(),\n schY: distance.optional(),\n width: distance,\n height: distance,\n rotation: rotation.default(0),\n strokeWidth: distance.optional(),\n color: z.string().optional(),\n isFilled: z.boolean().optional().default(false),\n fillColor: z.string().optional(),\n isDashed: z.boolean().optional().default(false),\n cornerRadius: distance.optional(),\n})\n\nexport interface SchematicRectProps {\n schX?: Distance\n schY?: Distance\n width: Distance\n height: Distance\n rotation?: number | string\n strokeWidth?: Distance\n color?: string\n isFilled?: boolean\n fillColor?: string\n isDashed?: boolean\n cornerRadius?: Distance\n}\n\nexport type InferredSchematicRectProps = z.input<typeof schematicRectProps>\n\nexpectTypesMatch<SchematicRectProps, z.input<typeof schematicRectProps>>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Distance } from \"lib/common/distance\"\n\nexport const schematicLineProps = z.object({\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n strokeWidth: distance.optional(),\n color: z.string().optional(),\n isDashed: z.boolean().optional().default(false),\n})\n\nexport interface SchematicLineProps {\n x1: Distance\n y1: Distance\n x2: Distance\n y2: Distance\n strokeWidth?: Distance\n color?: string\n isDashed?: boolean\n}\n\nexport type InferredSchematicLineProps = z.input<typeof schematicLineProps>\n\nexpectTypesMatch<SchematicLineProps, z.input<typeof schematicLineProps>>(true)\n","import { distance, rotation } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { fivePointAnchor } from \"lib/common/fivePointAnchor\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Distance } from \"lib/common/distance\"\n\nexport const schematicTextProps = z.object({\n schX: distance.optional(),\n schY: distance.optional(),\n text: z.string(),\n fontSize: z.number().default(1),\n anchor: z\n .union([fivePointAnchor.describe(\"legacy\"), ninePointAnchor])\n .default(\"center\"),\n color: z.string().default(\"#000000\"),\n schRotation: rotation.default(0),\n})\n\nexport interface SchematicTextProps {\n schX?: Distance\n schY?: Distance\n text: string\n fontSize?: number\n anchor?: z.infer<typeof fivePointAnchor> | z.infer<typeof ninePointAnchor>\n color?: string\n schRotation?: number | string\n}\n\nexport type InferredSchematicTextProps = z.input<typeof schematicTextProps>\n\nexpectTypesMatch<SchematicTextProps, z.input<typeof schematicTextProps>>(true)\n","import { z } from \"zod\"\n\nexport const fivePointAnchor = z.enum([\n \"center\",\n \"left\",\n \"right\",\n \"top\",\n \"bottom\",\n])\n","import { point } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Point } from \"lib/common/point\"\n\nexport const schematicPathProps = z.object({\n points: z.array(point),\n isFilled: z.boolean().optional().default(false),\n fillColor: z.enum([\"red\", \"blue\"]).optional(),\n})\n\nexport interface SchematicPathProps {\n points: Point[]\n isFilled?: boolean\n fillColor?: \"red\" | \"blue\"\n}\n\nexport type InferredSchematicPathProps = z.input<typeof schematicPathProps>\n\nexpectTypesMatch<SchematicPathProps, z.input<typeof schematicPathProps>>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const schematicTableProps = z.object({\n schX: distance.optional(),\n schY: distance.optional(),\n children: z.any().optional(),\n cellPadding: distance.optional(),\n borderWidth: distance.optional(),\n anchor: ninePointAnchor.optional(),\n fontSize: distance.optional(),\n})\n\nexport interface SchematicTableProps {\n schX?: number | string\n schY?: number | string\n children?: any\n cellPadding?: number | string\n borderWidth?: number | string\n anchor?: z.infer<typeof ninePointAnchor>\n fontSize?: number | string\n}\n\nexpectTypesMatch<SchematicTableProps, z.input<typeof schematicTableProps>>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const schematicRowProps = z.object({\n children: z.any().optional(),\n height: distance.optional(),\n})\n\nexport interface SchematicRowProps {\n children?: any\n height?: number | string\n}\n\nexpectTypesMatch<SchematicRowProps, z.input<typeof schematicRowProps>>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const schematicCellProps = z.object({\n children: z.string().optional(),\n horizontalAlign: z.enum([\"left\", \"center\", \"right\"]).optional(),\n verticalAlign: z.enum([\"top\", \"middle\", \"bottom\"]).optional(),\n fontSize: distance.optional(),\n rowSpan: z.number().optional(),\n colSpan: z.number().optional(),\n width: distance.optional(),\n text: z.string().optional(),\n})\n\nexport interface SchematicCellProps {\n children?: string\n horizontalAlign?: \"left\" | \"center\" | \"right\"\n verticalAlign?: \"top\" | \"middle\" | \"bottom\"\n fontSize?: number | string\n rowSpan?: number\n colSpan?: number\n width?: number | string\n text?: string\n}\n\nexpectTypesMatch<SchematicCellProps, z.input<typeof schematicCellProps>>(true)\n","import { layer_ref, length } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { z } from \"zod\"\n\nexport const copperTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: ninePointAnchor.default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n layers: z.array(layer_ref).optional(),\n knockout: z.boolean().optional(),\n mirrored: z.boolean().optional(),\n})\nexport type CopperTextProps = z.input<typeof copperTextProps>\n","import { layer_ref, length } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { z } from \"zod\"\n\nexport const silkscreenTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: ninePointAnchor.default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n /**\n * If true, text will knock out underlying silkscreen\n */\n isKnockout: z.boolean().optional(),\n knockoutPadding: length.optional(),\n knockoutPaddingLeft: length.optional(),\n knockoutPaddingRight: length.optional(),\n knockoutPaddingTop: length.optional(),\n knockoutPaddingBottom: length.optional(),\n layers: z.array(layer_ref).optional(),\n})\nexport type SilkscreenTextProps = z.input<typeof silkscreenTextProps>\n","import { length, route_hint_point } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const silkscreenPathProps = pcbLayoutProps\n .omit({\n pcbLeftEdgeX: true,\n pcbRightEdgeX: true,\n pcbTopEdgeY: true,\n pcbBottomEdgeY: true,\n pcbX: true,\n pcbY: true,\n pcbOffsetX: true,\n pcbOffsetY: true,\n pcbRotation: true,\n })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n })\nexport type SilkscreenPathProps = z.input<typeof silkscreenPathProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport type { z } from \"zod\"\n\nexport const silkscreenLineProps = pcbLayoutProps\n .omit({\n pcbX: true,\n pcbY: true,\n pcbOffsetX: true,\n pcbOffsetY: true,\n pcbRotation: true,\n })\n .extend({\n strokeWidth: distance,\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n })\nexport type SilkscreenLineProps = z.input<typeof silkscreenLineProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const silkscreenRectProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n filled: z.boolean().default(true).optional(),\n stroke: z.enum([\"dashed\", \"solid\", \"none\"]).optional(),\n strokeWidth: distance.optional(),\n width: distance,\n height: distance,\n cornerRadius: distance.optional(),\n })\nexport type SilkscreenRectProps = z.input<typeof silkscreenRectProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const silkscreenCircleProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n isFilled: z.boolean().optional(),\n isOutline: z.boolean().optional(),\n strokeWidth: distance.optional(),\n radius: distance,\n })\nexport type SilkscreenCircleProps = z.input<typeof silkscreenCircleProps>\n","import { distance, layer_ref, route_hint_point } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const routeHintPointProps = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n toLayer: layer_ref.optional(),\n})\n\nexport const traceHintProps = z.object({\n for: z\n .string()\n .optional()\n .describe(\n \"Selector for the port you're targeting, not required if you're inside a trace\",\n ),\n order: z.number().optional(),\n offset: route_hint_point.or(routeHintPointProps).optional(),\n offsets: z\n .array(route_hint_point)\n .or(z.array(routeHintPointProps))\n .optional(),\n traceWidth: z.number().optional(),\n})\n\nexport type TraceHintProps = z.input<typeof traceHintProps>\n","import { direction } from \"lib/common/direction\"\nimport { commonLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const portProps = commonLayoutProps.extend({\n name: z.string(),\n pinNumber: z.number().optional(),\n aliases: z.array(z.string()).optional(),\n direction: direction,\n connectsTo: z.string().or(z.array(z.string())).optional(),\n})\nexport type PortProps = z.input<typeof portProps>\n","import { length } from \"circuit-json\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface PcbNoteTextProps extends PcbLayoutProps {\n text: string\n anchorAlignment?:\n | \"center\"\n | \"top_left\"\n | \"top_right\"\n | \"bottom_left\"\n | \"bottom_right\"\n font?: \"tscircuit2024\"\n fontSize?: string | number\n color?: string\n}\n\nexport const pcbNoteTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n color: z.string().optional(),\n})\n\nexpectTypesMatch<PcbNoteTextProps, z.input<typeof pcbNoteTextProps>>(true)\n\nexport type PcbNoteTextPropsInput = z.input<typeof pcbNoteTextProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface PcbNoteRectProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n width: string | number\n height: string | number\n strokeWidth?: string | number\n isFilled?: boolean\n hasStroke?: boolean\n isStrokeDashed?: boolean\n color?: string\n cornerRadius?: string | number\n}\n\nexport const pcbNoteRectProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n width: distance,\n height: distance,\n strokeWidth: distance.optional(),\n isFilled: z.boolean().optional(),\n hasStroke: z.boolean().optional(),\n isStrokeDashed: z.boolean().optional(),\n color: z.string().optional(),\n cornerRadius: distance.optional(),\n })\n\nexpectTypesMatch<PcbNoteRectProps, z.input<typeof pcbNoteRectProps>>(true)\n\nexport type PcbNoteRectPropsInput = z.input<typeof pcbNoteRectProps>\n","import {\n length,\n route_hint_point,\n type RouteHintPointInput,\n} from \"circuit-json\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface PcbNotePathProps\n extends Omit<\n PcbLayoutProps,\n | \"pcbLeftEdgeX\"\n | \"pcbRightEdgeX\"\n | \"pcbTopEdgeY\"\n | \"pcbBottomEdgeY\"\n | \"pcbX\"\n | \"pcbY\"\n | \"pcbOffsetX\"\n | \"pcbOffsetY\"\n | \"pcbRotation\"\n > {\n route: RouteHintPointInput[]\n strokeWidth?: string | number\n color?: string\n}\n\nexport const pcbNotePathProps = pcbLayoutProps\n .omit({\n pcbLeftEdgeX: true,\n pcbRightEdgeX: true,\n pcbTopEdgeY: true,\n pcbBottomEdgeY: true,\n pcbX: true,\n pcbY: true,\n pcbOffsetX: true,\n pcbOffsetY: true,\n pcbRotation: true,\n })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n color: z.string().optional(),\n })\n\nexpectTypesMatch<PcbNotePathProps, z.input<typeof pcbNotePathProps>>(true)\n\nexport type PcbNotePathPropsInput = z.input<typeof pcbNotePathProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface PcbNoteLineProps\n extends Omit<\n PcbLayoutProps,\n | \"pcbLeftEdgeX\"\n | \"pcbRightEdgeX\"\n | \"pcbTopEdgeY\"\n | \"pcbBottomEdgeY\"\n | \"pcbX\"\n | \"pcbY\"\n | \"pcbOffsetX\"\n | \"pcbOffsetY\"\n | \"pcbRotation\"\n > {\n x1: string | number\n y1: string | number\n x2: string | number\n y2: string | number\n strokeWidth?: string | number\n color?: string\n isDashed?: boolean\n}\n\nexport const pcbNoteLineProps = pcbLayoutProps\n .omit({\n pcbLeftEdgeX: true,\n pcbRightEdgeX: true,\n pcbTopEdgeY: true,\n pcbBottomEdgeY: true,\n pcbX: true,\n pcbY: true,\n pcbOffsetX: true,\n pcbOffsetY: true,\n pcbRotation: true,\n })\n .extend({\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n strokeWidth: distance.optional(),\n color: z.string().optional(),\n isDashed: z.boolean().optional(),\n })\n\nexpectTypesMatch<PcbNoteLineProps, z.input<typeof pcbNoteLineProps>>(true)\n\nexport type PcbNoteLinePropsInput = z.input<typeof pcbNoteLineProps>\n","import { distance, length } from \"circuit-json\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { point, type Point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nconst dimensionTarget = z.union([z.string(), point])\n\nexport interface PcbNoteDimensionProps\n extends Omit<\n PcbLayoutProps,\n | \"pcbLeftEdgeX\"\n | \"pcbRightEdgeX\"\n | \"pcbTopEdgeY\"\n | \"pcbBottomEdgeY\"\n | \"pcbX\"\n | \"pcbY\"\n | \"pcbOffsetX\"\n | \"pcbOffsetY\"\n | \"pcbRotation\"\n > {\n from: string | Point\n to: string | Point\n text?: string\n offset?: string | number\n font?: \"tscircuit2024\"\n fontSize?: string | number\n color?: string\n arrowSize?: string | number\n units?: \"in\" | \"mm\"\n outerEdgeToEdge?: true\n centerToCenter?: true\n innerEdgeToEdge?: true\n}\n\nexport const pcbNoteDimensionProps = pcbLayoutProps\n .omit({\n pcbLeftEdgeX: true,\n pcbRightEdgeX: true,\n pcbTopEdgeY: true,\n pcbBottomEdgeY: true,\n pcbX: true,\n pcbY: true,\n pcbOffsetX: true,\n pcbOffsetY: true,\n pcbRotation: true,\n })\n .extend({\n from: dimensionTarget,\n to: dimensionTarget,\n text: z.string().optional(),\n offset: distance.optional(),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n color: z.string().optional(),\n arrowSize: distance.optional(),\n units: z.enum([\"in\", \"mm\"]).optional(),\n outerEdgeToEdge: z.literal(true).optional(),\n centerToCenter: z.literal(true).optional(),\n innerEdgeToEdge: z.literal(true).optional(),\n })\n\nexpectTypesMatch<PcbNoteDimensionProps, z.input<typeof pcbNoteDimensionProps>>(\n true,\n)\n\nexport type PcbNoteDimensionPropsInput = z.input<typeof pcbNoteDimensionProps>\n","import {\n autorouterProp,\n type AutorouterProp,\n type PartsEngine,\n partsEngine,\n} from \"./components/group\"\nimport type { AutocompleteString } from \"./common/autocomplete\"\nimport { expectTypesMatch } from \"./typecheck\"\nimport { z } from \"zod\"\nimport { type CadModelProp, cadModelProp } from \"./common/cadModel\"\nimport { type PcbStyle, pcbStyle } from \"./common/pcbStyle\"\n\nexport interface FootprintLibraryResult {\n footprintCircuitJson: any[]\n cadModel?: CadModelProp\n}\n\nexport interface FootprintFileParserEntry {\n loadFromUrl: (url: string) => Promise<FootprintLibraryResult>\n}\n\nexport type CircuitJson = any[]\n\nexport interface SpiceEngineSimulationResult {\n engineVersionString?: string\n simulationResultCircuitJson: CircuitJson\n}\n\nexport interface SpiceEngine {\n simulate: (spiceString: string) => Promise<SpiceEngineSimulationResult>\n}\n\nexport type SimpleRouteJson = any\n\nexport interface AutorouterInstance {\n run: () => Promise<void>\n getOutputSimpleRouteJson: () => Promise<SimpleRouteJson>\n}\n\nexport interface AutorouterDefinition {\n createAutorouter: (\n simpleRouteJson: SimpleRouteJson,\n opts?: Record<string, unknown>,\n ) => AutorouterInstance | Promise<AutorouterInstance>\n}\n\nexport interface PlatformConfig {\n partsEngine?: PartsEngine\n\n autorouter?: AutorouterProp\n\n autorouterMap?: Record<string, AutorouterDefinition>\n\n // TODO this follows a subset of the localStorage interface\n localCacheEngine?: any\n\n registryApiUrl?: string\n\n cloudAutorouterUrl?: string\n\n projectName?: string\n projectBaseUrl?: string\n version?: string\n url?: string\n printBoardInformationToSilkscreen?: boolean\n includeBoardFiles?: string[]\n snapshotsDir?: string\n\n defaultSpiceEngine?: AutocompleteString<\"spicey\" | \"ngspice\">\n\n pcbDisabled?: boolean\n schematicDisabled?: boolean\n partsEngineDisabled?: boolean\n\n spiceEngineMap?: Record<string, SpiceEngine>\n\n footprintLibraryMap?: Record<\n string,\n | ((\n path: string,\n options?: { resolvedPcbStyle?: PcbStyle },\n ) => Promise<FootprintLibraryResult>)\n | Record<\n string,\n | any[]\n | ((\n path: string,\n options?: { resolvedPcbStyle?: PcbStyle },\n ) => Promise<FootprintLibraryResult>)\n >\n >\n\n footprintFileParserMap?: Record<string, FootprintFileParserEntry>\n\n resolveProjectStaticFileImportUrl?: (path: string) => Promise<string>\n nodeModulesResolver?: (modulePath: string) => Promise<string | null>\n}\n\nconst unvalidatedCircuitJson = z.array(z.any()).describe(\"Circuit JSON\")\nconst footprintLibraryResult = z.object({\n footprintCircuitJson: z.array(z.any()),\n cadModel: cadModelProp.optional(),\n})\nconst pathToCircuitJsonFn = z\n .function()\n .args(z.string())\n .returns(z.promise(footprintLibraryResult))\n .or(\n z\n .function()\n .args(\n z.string(),\n z.object({ resolvedPcbStyle: pcbStyle.optional() }).optional(),\n )\n .returns(z.promise(footprintLibraryResult)),\n )\n .describe(\"A function that takes a path and returns Circuit JSON\")\n\nconst footprintFileParserEntry = z.object({\n loadFromUrl: z\n .function()\n .args(z.string())\n .returns(z.promise(footprintLibraryResult))\n .describe(\n \"A function that takes a footprint file URL and returns Circuit JSON\",\n ),\n})\n\nconst spiceEngineSimulationResult = z.object({\n engineVersionString: z.string().optional(),\n simulationResultCircuitJson: unvalidatedCircuitJson,\n})\n\nconst spiceEngineZod = z.object({\n simulate: z\n .function()\n .args(z.string())\n .returns(z.promise(spiceEngineSimulationResult))\n .describe(\n \"A function that takes a SPICE string and returns a simulation result\",\n ),\n})\n\nconst defaultSpiceEngine = z.custom<AutocompleteString<\"spicey\" | \"ngspice\">>(\n (value) => typeof value === \"string\",\n)\n\nconst autorouterInstance = z.object({\n run: z\n .function()\n .args()\n .returns(z.promise(z.unknown()))\n .describe(\"Run the autorouter\"),\n getOutputSimpleRouteJson: z\n .function()\n .args()\n .returns(z.promise(z.any()))\n .describe(\"Get the resulting SimpleRouteJson\"),\n})\n\nconst autorouterDefinition = z.object({\n createAutorouter: z\n .function()\n .args(z.any(), z.any().optional())\n .returns(z.union([autorouterInstance, z.promise(autorouterInstance)]))\n .describe(\"Create an autorouter instance\"),\n})\n\nexport const platformConfig = z.object({\n partsEngine: partsEngine.optional(),\n autorouter: autorouterProp.optional(),\n autorouterMap: z.record(z.string(), autorouterDefinition).optional(),\n registryApiUrl: z.string().optional(),\n cloudAutorouterUrl: z.string().optional(),\n projectName: z.string().optional(),\n projectBaseUrl: z.string().optional(),\n version: z.string().optional(),\n url: z.string().optional(),\n printBoardInformationToSilkscreen: z.boolean().optional(),\n includeBoardFiles: z\n .array(z.string())\n .describe(\n 'The board files to automatically build with \"tsci build\", defaults to [\"**/*.circuit.tsx\"]. Can be an array of files or globs',\n )\n .optional(),\n snapshotsDir: z\n .string()\n .describe(\n 'The directory where snapshots are stored for \"tsci snapshot\", defaults to \"tests/__snapshots__\"',\n )\n .optional(),\n defaultSpiceEngine: defaultSpiceEngine.optional(),\n localCacheEngine: z.any().optional(),\n pcbDisabled: z.boolean().optional(),\n schematicDisabled: z.boolean().optional(),\n partsEngineDisabled: z.boolean().optional(),\n spiceEngineMap: z.record(z.string(), spiceEngineZod).optional(),\n footprintLibraryMap: z\n .record(\n z.string(),\n z.union([\n pathToCircuitJsonFn,\n z.record(\n z.string(),\n z.union([unvalidatedCircuitJson, pathToCircuitJsonFn]),\n ),\n ]),\n )\n .optional(),\n footprintFileParserMap: z\n .record(z.string(), footprintFileParserEntry)\n .optional(),\n resolveProjectStaticFileImportUrl: z\n .function()\n .args(z.string())\n .returns(z.promise(z.string()))\n .describe(\n \"A function that returns a string URL for static files for the project\",\n )\n .optional(),\n}) as z.ZodType<PlatformConfig>\n\nexpectTypesMatch<PlatformConfig, z.infer<typeof platformConfig>>(true)\n","import { platformConfig, type PlatformConfig } from \"./platformConfig\"\nimport { expectTypesMatch } from \"./typecheck\"\nimport { z } from \"zod\"\n\nexport interface ProjectConfig\n extends Pick<\n PlatformConfig,\n | \"projectName\"\n | \"projectBaseUrl\"\n | \"version\"\n | \"url\"\n | \"printBoardInformationToSilkscreen\"\n | \"includeBoardFiles\"\n | \"snapshotsDir\"\n | \"defaultSpiceEngine\"\n > {}\n\nconst platformConfigObject = platformConfig as z.ZodObject<any>\n\nexport const projectConfig = platformConfigObject.pick({\n projectName: true,\n projectBaseUrl: true,\n version: true,\n url: true,\n printBoardInformationToSilkscreen: true,\n includeBoardFiles: true,\n snapshotsDir: true,\n defaultSpiceEngine: true,\n}) as z.ZodType<ProjectConfig>\n\nexpectTypesMatch<ProjectConfig, z.infer<typeof projectConfig>>(true)\n"],"mappings":"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","names":["z","z","distance","z","z","z","distance","z","z","z","z","distance","z","distance","distance","z","distance","z","z","distance","z","z","distance","z","distance","z","distance","z","z","distance","z","z","length","distance","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","point","z","point","z","z","z","point","z","point","z","z","z","length","distance","z","z","z","distance","distance","distance","supplier_name","z","connectionTarget","supplier_name","distance","distance","z","distance","z","distance","z","distance","z","z","z","distance","z","distance","z","resistance","z","resistance","z","frequency","capacitance","z","frequency","capacitance","distance","z","z","distance","capacitance","z","capacitance","z","z","z","z","z","z","z","z","z","z","z","z","distance","route_hint_point","z","z","distance","route_hint_point","layer_ref","z","layer_ref","z","voltage","z","z","voltage","distance","z","z","distance","z","rotation","z","z","rotation","z","z","z","z","z","z","z","z","connectionTarget","connectionsProp","z","z","ms","frequency","z","frequency","ms","length","z","length","distance","z","distance","length","route_hint_point","z","route_hint_point","length","distance","length","z","distance","length","distance","route_hint_point","z","distance","layer_ref","z","layer_ref","distance","distance","z","z","distance","z","distance","z","distance","distance","z","distance","length","z","length","z","layer_ref","z","layer_ref","z","layer_ref","z","voltage","voltage","frequency","rotation","voltage","z","voltage","frequency","rotation","frequency","rotation","z","percentage","z","frequency","rotation","z","distance","point","rotation","z","z","point","distance","rotation","z","distance","z","z","distance","distance","point","z","z","point","distance","distance","rotation","z","z","distance","rotation","distance","z","z","distance","distance","rotation","z","z","z","distance","rotation","point","z","z","point","distance","z","z","distance","distance","z","z","distance","distance","z","z","distance","layer_ref","length","z","length","layer_ref","layer_ref","length","z","length","layer_ref","length","route_hint_point","z","route_hint_point","length","distance","distance","distance","z","distance","distance","z","distance","distance","layer_ref","route_hint_point","z","z","length","z","length","distance","z","distance","length","route_hint_point","z","route_hint_point","length","distance","z","distance","distance","length","z","dimensionTarget","distance","length","z","z"]}
|