@tscircuit/runframe 0.0.144 → 0.0.145
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/dist/standalone.min.js +1 -1
- package/package.json +2 -2
package/dist/standalone.min.js
CHANGED
|
@@ -12862,7 +12862,7 @@ ${l.join(`
|
|
|
12862
12862
|
`).replace(/d 0\./g,"d 1."),f=c.replace(/newmtl[\s\S]*?endmtl/g,""),h=new GGt;h.setMaterialOptions({invertTrProperty:!0});const v=h.parse(u.replace(/Kd\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/g,"Kd $2 $2 $2"),"test.mtl"),x=new JGt;return x.setMaterials(v),x.parse(f)}catch(l){return l}}function o(){if(n.has(r)){const l=n.get(r);return l.result?Promise.resolve(l.result.clone()):l.promise.then(c=>c.clone())}const s=a().then(l=>(l instanceof Error||n.set(r,{...n.get(r),result:l}),l));return n.set(r,{promise:s,result:null}),s}return o().then(s=>{i||t(s)}).catch(s=>{console.error(s)}),()=>{i=!0}},[r]),e}function cYt({url:r,position:e,rotation:t,onHover:n,isHovered:i}){const a=lYt(r);return a?a instanceof Error?_t.jsx(NO,{isHovered:i,onHover:n,children:_t.jsxs("mesh",{position:e,children:[_t.jsx("boxGeometry",{args:[.5,.5,.5]}),_t.jsx("meshStandardMaterial",{transparent:!0,color:"red",opacity:.5}),_t.jsx("meshBasicMaterial",{color:"red"})]})}):_t.jsx(NO,{isHovered:i,onHover:n,children:_t.jsx("primitive",{rotation:t,position:e,object:a})}):_t.jsx(NO,{isHovered:i,onHover:n,children:_t.jsxs("mesh",{position:e,children:[_t.jsx("boxGeometry",{args:[.5,.5,.5]}),_t.jsx("meshStandardMaterial",{transparent:!0,color:"red",opacity:.25})]})})}var uYt=z5(PGe()),IGe=({jscadPlan:r,positionOffset:e,rotationOffset:t,onHover:n,isHovered:i})=>{const{threeGeom:a,material:o}=Ct.useMemo(()=>{const s=mPe.executeJscadOperations(uYt.default,r),l=nLt(s),c=new UL({vertexColors:!0,side:q3});return{threeGeom:l,material:c}},[r]);return Ct.useMemo(()=>{if(i){const s=new Tl(o.color.getHex());o.emissive.copy(s),o.emissive.setRGB(0,0,1),o.emissiveIntensity=.2}else o.emissiveIntensity=0},[i,o]),a?_t.jsx(NO,{isHovered:i,onHover:n,position:e,children:_t.jsx("mesh",{geometry:a,material:o,position:e,rotation:t})}):null},{createJSCADRoot:fYt}=uRt(mPe.jscadPlanner),dYt=({positionOffset:r,footprint:e,rotationOffset:t,onHover:n,isHovered:i})=>{const a=Ct.useMemo(()=>{if(!e)return null;const o=[];return fYt(o).render(_t.jsx(Vjt,{footprint:e})),o},[e]);return a?_t.jsx(_t.Fragment,{children:a.map((o,s)=>_t.jsx(IGe,{positionOffset:r,rotationOffset:t,jscadPlan:o,onHover:n,isHovered:i},s))}):null},pYt=(...r)=>r,hYt=({cad_component:r,onHover:e=()=>{},isHovered:t=!1})=>{const n=r.model_obj_url??r.model_stl_url,i=r.rotation?pYt(r.rotation.x*Math.PI/180,r.rotation.y*Math.PI/180,r.rotation.z*Math.PI/180):void 0;if(n)return _t.jsx(cYt,{url:n,position:r.position?[r.position.x,r.position.y,r.position.z]:void 0,rotation:i,onHover:e,isHovered:t},r.cad_component_id);if(r.model_jscad)return _t.jsx(IGe,{jscadPlan:r.model_jscad,rotationOffset:i,onHover:e,isHovered:t},r.cad_component_id);if(r.footprinter_string)return _t.jsx(dYt,{positionOffset:r.position?[r.position.x,r.position.y,r.position.z]:void 0,rotationOffset:i,footprint:r.footprinter_string,onHover:e,isHovered:t})},mYt=class extends od.Component{constructor(r){super(r),this.state={hasError:!1,error:null}}static getDerivedStateFromError(r){return{hasError:!0,error:r}}render(){return this.state.hasError&&this.state.error?this.props.fallback({error:this.state.error}):this.props.children}},vYt=({error:r,cad_component:e})=>{let t=[0,0,0];return e!=null&&e.position&&(t=[e.position.x,e.position.y,e.position.z],t=t.map(n=>Number.isNaN(n)?0:n)),_t.jsxs("group",{position:t,children:[_t.jsxs("mesh",{renderOrder:-99999,rotation:[Math.PI/4,Math.PI/4,0],ref:n=>{n&&(n.renderOrder=999999)},children:[_t.jsx("boxGeometry",{args:[.5,.5,.5]}),_t.jsx("meshStandardMaterial",{depthTest:!1,transparent:!0,color:"red",opacity:.5})]}),_t.jsxs(H6,{scale:[.1,.1,.1],color:"red",anchorX:"center",anchorY:"middle",depthOffset:-99999,children:[r.toString().slice(0,50),"..."]})]})},yYt=Ct.forwardRef(({soup:r,children:e,autoRotateDisabled:t},n)=>{const[i,a]=Ct.useState(null);if(r??(r=LGt(e)),!r)return null;const o=Ct.useMemo(()=>r.some(u=>u.type==="pcb_board")?jGt(r):null,[r]),{stls:s,loading:l}=HGt(o),c=K5.su(r).cad_component.list();return _t.jsxs(aYt,{ref:n,hoveredComponent:i,autoRotateDisabled:t,children:[s.map(({stlUrl:u,color:f},h)=>_t.jsx(eYt,{stlUrl:u,color:f,opacity:h===0?.95:1},u)),c.map(u=>_t.jsx(mYt,{fallback:({error:f})=>_t.jsx(vYt,{cad_component:u,error:f}),children:_t.jsx(hYt,{onHover:f=>{var v;if(f||a(null),!f.mousePosition)return;const h=(v=K5.su(r).source_component.getUsing({source_component_id:u.source_component_id}))==null?void 0:v.name;a({cad_component_id:u.cad_component_id,name:h??"<unknown>",mousePosition:f.mousePosition})},cad_component:u,isHovered:(i==null?void 0:i.cad_component_id)===u.cad_component_id},u.cad_component_id)},u.cad_component_id))]})}),gYt=z5(NGt());z5(PGe()),(0,gYt.default)("tscircuit:3d-viewer:convert-circuit-json-to-3d-svg");var BGe={Hz:{baseUnit:"Hz",variants:{MHz:1e6,kHz:1e3,Hz:1}},g:{baseUnit:"g",variants:{kg:1e3,g:1}},Ω:{baseUnit:"Ω",variants:{mΩ:.001,Ω:1,kΩ:1e3,KΩ:1e3,MΩ:1e6,GΩ:1e9,TΩ:1e12}},V:{baseUnit:"V",variants:{mV:.001,V:1,kV:1e3,KV:1e3,MV:1e6,GV:1e9,TV:1e12}},A:{baseUnit:"A",variants:{µA:1e-6,mA:.001,ma:.001,A:1,kA:1e3,MA:1e6}},F:{baseUnit:"F",variants:{pF:1e-12,nF:1e-9,µF:1e-6,uF:1e-6,mF:.001,F:1}},ml:{baseUnit:"ml",variants:{ml:1,mL:1,l:1e3,L:1e3}},deg:{baseUnit:"deg",variants:{rad:180/Math.PI}},ms:{baseUnit:"ms",variants:{s:1e3}},mm:{baseUnit:"mm",variants:{nm:1e-6,µm:.001,um:.001,mm:1,cm:10,dm:100,m:1e3,km:1e6,in:25.4,ft:304.8,IN:25.4,FT:304.8,yd:914.4,mi:1609344,mil:.0254}}},aue=new Set;for(const[r,e]of Object.entries(BGe)){aue.add(r);for(const t of Object.keys(e.variants))aue.add(t)}function _Yt(r){for(const[e,t]of Object.entries(BGe))if(r in t.variants)return{baseUnit:t.baseUnit,conversionFactor:t.variants[r]};return{baseUnit:r,conversionFactor:1}}var jGe={tera:1e12,T:1e12,giga:1e9,G:1e9,mega:1e6,M:1e6,kilo:1e3,k:1e3,deci:.1,d:.1,centi:.01,c:.01,milli:.001,m:.001,micro:1e-6,u:1e-6,µ:1e-6,nano:1e-9,n:1e-9,pico:1e-12,p:1e-12},W4=r=>{var s;if(typeof r>"u")return{parsedUnit:null,unitOfValue:null,value:null};if(typeof r=="string"&&r.match(/^-?[\d\.]+$/))return{value:Number.parseFloat(r),parsedUnit:null,unitOfValue:null};if(typeof r=="number")return{value:r,parsedUnit:null,unitOfValue:null};if(typeof r=="object"&&"x"in r&&"y"in r){const{parsedUnit:l,unitOfValue:c}=W4(r.x);return{parsedUnit:l,unitOfValue:c,value:{x:W4(r.x).value,y:W4(r.y).value}}}const t=(s=r.toString().split("").reverse().join("").match(/[^\d\s]+/))==null?void 0:s[0];if(!t)throw new Error(`Could not determine unit: "${r}"`);const n=t.split("").reverse().join(""),i=r.slice(0,-n.length);if(n in jGe&&!aue.has(n)){const l=jGe[n];return{parsedUnit:null,unitOfValue:null,value:Number.parseFloat(i)*l}}const{baseUnit:a,conversionFactor:o}=_Yt(n);return{parsedUnit:n,unitOfValue:a,value:o*Number.parseFloat(i)}},hw=j.string().or(j.number()).transform(r=>W4(r).value),mw=j.string().or(j.number()).transform(r=>W4(r).value).transform(r=>Number.parseFloat(r.toPrecision(12))),oue=j.string().or(j.number()).transform(r=>W4(r).value),LO=j.string().or(j.number()).transform(r=>W4(r).value),X9=j.string().or(j.number()).transform(r=>W4(r).value),zO=j.string().or(j.number()).transform(r=>W4(r).value),Ui=X9,xYt=j.string().or(j.number()).transform(r=>W4(r).value),bYt=j.string().or(j.number()).transform(r=>W4(r).value),Z4=j.string().or(j.number()).transform(r=>typeof r=="number"?r:r.endsWith("deg")?Number.parseFloat(r.split("deg")[0]):r.endsWith("rad")?Number.parseFloat(r.split("rad")[0])*180/Math.PI:Number.parseFloat(r)),VGe=j.number().or(j.string().endsWith("mAh")).transform(r=>{if(typeof r=="string"){const e=r.replace("mAh",""),t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error("Invalid capacity");return t}return r}).describe("Battery capacity in mAh"),Xv=j.object({x:Ui,y:Ui}),SYt=Xv,vw=j.object({x:Ui,y:Ui,z:Ui}),EYt=vw,sue=j.object({width:j.number(),height:j.number()}),J1=r=>j.string().optional().default(()=>`${r}_${I7(10)}`),lue=j.enum(["jlcpcb","macrofab","pcbway","digikey","mouser","lcsc"]),r5=j.object({type:j.literal("source_component"),ftype:j.string().optional(),source_component_id:j.string(),name:j.string(),manufacturer_part_number:j.string().optional(),supplier_part_numbers:j.record(lue,j.array(j.string())).optional(),display_value:j.string().optional()}),cue=r5.extend({ftype:j.literal("simple_capacitor"),capacitance:mw,display_capacitance:j.string().optional(),max_decoupling_trace_length:Ui.optional()}),uue=r5.extend({ftype:j.literal("simple_resistor"),resistance:hw,display_resistance:j.string().optional()}),OO=r5.extend({ftype:j.literal("simple_diode")}),HGe=r5.extend({ftype:j.literal("simple_ground")}),fue=r5.extend({ftype:j.literal("simple_bug")}).describe("@deprecated"),due=r5.extend({ftype:j.literal("simple_chip")}),pue=OO.extend({ftype:j.literal("led")}),hue=r5.extend({ftype:j.literal("simple_power_source"),voltage:LO}),mue=r5.extend({ftype:j.literal("simple_battery"),capacity:VGe}),vue=r5.extend({ftype:j.literal("simple_inductor"),inductance:oue}),yue=r5.extend({ftype:j.literal("simple_push_button")}),gue=r5.extend({ftype:j.literal("simple_potentiometer"),max_resistance:hw}),qGe=r5.extend({ftype:j.literal("simple_crystal"),frequency:j.number().describe("Frequency in Hz"),load_capacitance:j.number().optional().describe("Load capacitance in pF")}),_ue=r5.extend({ftype:j.literal("simple_pin_header"),pin_count:j.number(),gender:j.enum(["male","female"]).optional().default("male")}),xue=r5.extend({ftype:j.literal("simple_resonator"),load_capacitance:mw,equivalent_series_resistance:hw.optional(),frequency:zO}),bue=r5.extend({ftype:j.literal("simple_transistor"),transistor_type:j.enum(["npn","pnp"])}),Sue=r5.extend({ftype:j.literal("simple_mosfet"),channel_type:j.enum(["n","p"]),mosfet_mode:j.enum(["enhancement","depletion"])}),$Ge=j.union([uue,cue,OO,HGe,due,fue,pue,hue,mue,vue,yue,gue,qGe,_ue,xue,bue,Sue]),GGe=j.object({type:j.literal("source_port"),pin_number:j.number().optional(),port_hints:j.array(j.string()).optional(),name:j.string(),source_port_id:j.string(),source_component_id:j.string()}),YGe=j.object({type:j.literal("source_trace"),source_trace_id:j.string(),connected_source_port_ids:j.array(j.string()),connected_source_net_ids:j.array(j.string()),subcircuit_connectivity_map_key:j.string().optional(),max_length:j.number().optional(),display_name:j.string().optional()}),XGe=j.object({type:j.literal("source_group"),source_group_id:j.string(),subcircuit_id:j.string().optional(),parent_subcircuit_id:j.string().optional(),is_subcircuit:j.boolean().optional(),name:j.string().optional()}),WGe=j.object({type:j.literal("source_net"),source_net_id:j.string(),name:j.string(),member_source_group_ids:j.array(j.string()),is_power:j.boolean().optional(),is_ground:j.boolean().optional(),is_digital_signal:j.boolean().optional(),is_analog_signal:j.boolean().optional(),trace_width:j.number().optional()}),ZGe=j.object({type:j.literal("schematic_box"),schematic_component_id:j.string(),width:Ui,height:Ui,x:Ui,y:Ui}).describe("Draws a box on the schematic"),QGe=j.object({type:j.literal("schematic_path"),schematic_component_id:j.string(),fill_color:j.enum(["red","blue"]).optional(),is_filled:j.boolean().optional(),points:j.array(Xv)}),KGe=j.record(j.object({left_margin:X9.optional(),right_margin:X9.optional(),top_margin:X9.optional(),bottom_margin:X9.optional()})),JGe=j.object({left_size:j.number(),right_size:j.number(),top_size:j.number().optional(),bottom_size:j.number().optional()}),eYe=j.object({left_side:j.object({pins:j.array(j.number()),direction:j.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),right_side:j.object({pins:j.array(j.number()),direction:j.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),top_side:j.object({pins:j.array(j.number()),direction:j.enum(["left-to-right","right-to-left"]).optional()}).optional(),bottom_side:j.object({pins:j.array(j.number()),direction:j.enum(["left-to-right","right-to-left"]).optional()}).optional()}),tYe=j.union([JGe,eYe]),nYe=j.object({type:j.literal("schematic_component"),rotation:Z4.default(0),size:sue,center:Xv,source_component_id:j.string(),schematic_component_id:j.string(),pin_spacing:X9.optional(),pin_styles:KGe.optional(),box_width:X9.optional(),symbol_name:j.string().optional(),port_arrangement:tYe.optional(),port_labels:j.record(j.string()).optional(),symbol_display_value:j.string().optional()}),rYe=j.object({type:j.literal("schematic_line"),schematic_component_id:j.string(),x1:Ui,x2:Ui,y1:Ui,y2:Ui}),iYe=j.object({type:j.literal("schematic_trace"),schematic_trace_id:j.string(),source_trace_id:j.string(),junctions:j.array(j.object({x:j.number(),y:j.number()})),edges:j.array(j.object({from:j.object({x:j.number(),y:j.number()}),to:j.object({x:j.number(),y:j.number()}),is_crossing:j.boolean().optional(),from_schematic_port_id:j.string().optional(),to_schematic_port_id:j.string().optional()}))}),aYe=j.object({type:j.literal("schematic_text"),schematic_component_id:j.string(),schematic_text_id:j.string(),text:j.string(),position:j.object({x:Ui,y:Ui}),rotation:j.number().default(0),anchor:j.enum(["center","left","right","top","bottom"]).default("center"),color:j.string().default("#000000")}),oYe=j.object({type:j.literal("schematic_port"),schematic_port_id:j.string(),source_port_id:j.string(),schematic_component_id:j.string().optional(),center:Xv,facing_direction:j.enum(["up","down","left","right"]).optional(),distance_from_component_edge:j.number().optional(),side_of_component:j.enum(["top","bottom","left","right"]).optional(),true_ccw_index:j.number().optional(),pin_number:j.number().optional(),display_pin_label:j.string().optional()}).describe("Defines a port on a schematic component"),sYe=j.object({type:j.literal("schematic_net_label"),source_net_id:j.string(),center:Xv,anchor_position:Xv.optional(),anchor_side:j.enum(["top","bottom","left","right"]),text:j.string(),symbol_name:j.string().optional()}),lYe=j.object({type:j.literal("schematic_error"),schematic_error_id:j.string(),error_type:j.literal("schematic_port_not_found"),message:j.string()}).describe("Defines a schematic error on the schematic"),UO=j.object({type:j.literal("schematic_debug_object"),label:j.string().optional()}),cYe=UO.extend({shape:j.literal("rect"),center:Xv,size:sue}),uYe=UO.extend({shape:j.literal("line"),start:Xv,end:Xv}),fYe=UO.extend({shape:j.literal("point"),center:Xv}),dYe=j.discriminatedUnion("shape",[cYe,uYe,fYe]),pYe=j.object({type:j.literal("schematic_voltage_probe"),schematic_voltage_probe_id:j.string(),position:Xv,schematic_trace_id:j.string(),voltage:LO.optional()}).describe("Defines a voltage probe measurement point on a schematic trace"),hYe=["top","bottom","inner1","inner2","inner3","inner4","inner5","inner6"],Eue=j.enum(hYe),Wv=Eue.or(j.object({name:Eue})).transform(r=>typeof r=="string"?r:r.name),yw=j.enum(["top","bottom"]),mYe=j.object({x:Ui,y:Ui,via:j.boolean().optional(),via_to_layer:Wv.optional()}),wYt=j.array(mYe),RS=j.object({x:Ui,y:Ui,via:j.boolean().optional(),to_layer:Wv.optional(),trace_width:Ui.optional()}),vYe=j.object({type:j.literal("pcb_component"),pcb_component_id:J1("pcb_component"),source_component_id:j.string(),center:Xv,layer:Wv,rotation:Z4,width:X9,height:X9,subcircuit_id:j.string().optional()}).describe("Defines a component on the PCB"),yYe=j.object({type:j.literal("pcb_hole"),pcb_hole_id:J1("pcb_hole"),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),hole_shape:j.enum(["circle","square"]),hole_diameter:j.number(),x:Ui,y:Ui}),TYt=yYe.describe("Defines a circular or square hole on the PCB"),gYe=j.object({type:j.literal("pcb_hole"),pcb_hole_id:J1("pcb_hole"),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),hole_shape:j.literal("oval"),hole_width:j.number(),hole_height:j.number(),x:Ui,y:Ui}),MYt=gYe.describe("Defines an oval hole on the PCB"),_Ye=yYe.or(gYe),CYt=j.object({type:j.literal("pcb_plated_hole"),shape:j.literal("circle"),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),outer_diameter:j.number(),hole_diameter:j.number(),x:Ui,y:Ui,layers:j.array(Wv),port_hints:j.array(j.string()).optional(),pcb_component_id:j.string().optional(),pcb_port_id:j.string().optional(),pcb_plated_hole_id:J1("pcb_plated_hole")}),RYt=j.object({type:j.literal("pcb_plated_hole"),shape:j.enum(["oval","pill"]),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),outer_width:j.number(),outer_height:j.number(),hole_width:j.number(),hole_height:j.number(),x:Ui,y:Ui,layers:j.array(Wv),port_hints:j.array(j.string()).optional(),pcb_component_id:j.string().optional(),pcb_port_id:j.string().optional(),pcb_plated_hole_id:J1("pcb_plated_hole")}),AYt=j.object({type:j.literal("pcb_plated_hole"),shape:j.literal("circular_hole_with_rect_pad"),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),hole_shape:j.literal("circle"),pad_shape:j.literal("rect"),hole_diameter:j.number(),rect_pad_width:j.number(),rect_pad_height:j.number(),x:Ui,y:Ui,layers:j.array(Wv),port_hints:j.array(j.string()).optional(),pcb_component_id:j.string().optional(),pcb_port_id:j.string().optional(),pcb_plated_hole_id:J1("pcb_plated_hole")}),xYe=j.union([CYt,RYt,AYt]),bYe=j.object({type:j.literal("pcb_port"),pcb_port_id:J1("pcb_port"),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),source_port_id:j.string(),pcb_component_id:j.string(),x:Ui,y:Ui,layers:j.array(Wv)}).describe("Defines a port on the PCB"),PYt=j.object({type:j.literal("pcb_smtpad"),shape:j.literal("circle"),pcb_smtpad_id:J1("pcb_smtpad"),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),x:Ui,y:Ui,radius:j.number(),layer:Wv,port_hints:j.array(j.string()).optional(),pcb_component_id:j.string().optional(),pcb_port_id:j.string().optional()}),DYt=j.object({type:j.literal("pcb_smtpad"),shape:j.literal("rect"),pcb_smtpad_id:J1("pcb_smtpad"),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),x:Ui,y:Ui,width:j.number(),height:j.number(),layer:Wv,port_hints:j.array(j.string()).optional(),pcb_component_id:j.string().optional(),pcb_port_id:j.string().optional()}),NYt=j.object({type:j.literal("pcb_smtpad"),shape:j.literal("rotated_rect"),pcb_smtpad_id:J1("pcb_smtpad"),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),x:Ui,y:Ui,width:j.number(),height:j.number(),ccw_rotation:Z4,layer:Wv,port_hints:j.array(j.string()).optional(),pcb_component_id:j.string().optional(),pcb_port_id:j.string().optional()}),SYe=j.object({type:j.literal("pcb_smtpad"),shape:j.literal("pill"),pcb_smtpad_id:J1("pcb_smtpad"),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),x:Ui,y:Ui,width:j.number(),height:j.number(),radius:j.number(),layer:Wv,port_hints:j.array(j.string()).optional(),pcb_component_id:j.string().optional(),pcb_port_id:j.string().optional()}),EYe=j.union([PYt,DYt,NYt,SYe]).describe("Defines an SMT pad on the PCB"),LYt=j.object({type:j.literal("pcb_solder_paste"),shape:j.literal("circle"),pcb_solder_paste_id:J1("pcb_solder_paste"),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),x:Ui,y:Ui,radius:j.number(),layer:Wv,pcb_component_id:j.string().optional(),pcb_smtpad_id:j.string().optional()}),zYt=j.object({type:j.literal("pcb_solder_paste"),shape:j.literal("rect"),pcb_solder_paste_id:J1("pcb_solder_paste"),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),x:Ui,y:Ui,width:j.number(),height:j.number(),layer:Wv,pcb_component_id:j.string().optional(),pcb_smtpad_id:j.string().optional()}),wYe=j.union([LYt,zYt]).describe("Defines solderpaste on the PCB"),TYe=j.object({type:j.literal("pcb_text"),pcb_text_id:J1("pcb_text"),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),text:j.string(),center:Xv,layer:Wv,width:X9,height:X9,lines:j.number(),align:j.enum(["bottom-left"])}).describe("Defines text on the PCB"),MYe=j.object({route_type:j.literal("wire"),x:Ui,y:Ui,width:Ui,start_pcb_port_id:j.string().optional(),end_pcb_port_id:j.string().optional(),layer:Wv}),CYe=j.object({route_type:j.literal("via"),x:Ui,y:Ui,from_layer:j.string(),to_layer:j.string()}),OYt=j.union([MYe,CYe]),RYe=j.object({type:j.literal("pcb_trace"),source_trace_id:j.string().optional(),pcb_component_id:j.string().optional(),pcb_trace_id:J1("pcb_trace"),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),route_thickness_mode:j.enum(["constant","interpolated"]).default("constant").optional(),route_order_index:j.number().optional(),should_round_corners:j.boolean().optional(),trace_length:j.number().optional(),route:j.array(j.union([j.object({route_type:j.literal("wire"),x:Ui,y:Ui,width:Ui,start_pcb_port_id:j.string().optional(),end_pcb_port_id:j.string().optional(),layer:Wv}),j.object({route_type:j.literal("via"),x:Ui,y:Ui,from_layer:j.string(),to_layer:j.string()})]))}).describe("Defines a trace on the PCB"),AYe=j.object({type:j.literal("pcb_trace_error"),pcb_trace_error_id:J1("pcb_trace_error"),error_type:j.literal("pcb_trace_error"),message:j.string(),center:Xv.optional(),pcb_trace_id:j.string(),source_trace_id:j.string(),pcb_component_ids:j.array(j.string()),pcb_port_ids:j.array(j.string())}).describe("Defines a trace error on the PCB"),PYe=j.object({type:j.literal("pcb_port_not_matched_error"),pcb_error_id:J1("pcb_error"),message:j.string(),pcb_component_ids:j.array(j.string())}).describe("Defines a trace error on the PCB where a port is not matched"),DYe=j.object({type:j.literal("pcb_via"),pcb_via_id:J1("pcb_via"),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),x:Ui,y:Ui,outer_diameter:Ui.default("0.6mm"),hole_diameter:Ui.default("0.25mm"),from_layer:Wv.optional(),to_layer:Wv.optional(),layers:j.array(Wv),pcb_trace_id:j.string().optional()}).describe("Defines a via on the PCB"),NYe=j.object({type:j.literal("pcb_board"),pcb_board_id:J1("pcb_board"),is_subcircuit:j.boolean().optional(),subcircuit_id:j.string().optional(),width:X9,height:X9,center:Xv,thickness:X9.optional().default(1.4),num_layers:j.number().optional().default(4),outline:j.array(Xv).optional()}).describe("Defines the board outline of the PCB"),LYe=j.object({type:j.literal("pcb_placement_error"),pcb_placement_error_id:J1("pcb_placement_error"),message:j.string()}).describe("Defines a placement error on the PCB"),zYe=j.object({type:j.literal("pcb_trace_hint"),pcb_trace_hint_id:J1("pcb_trace_hint"),pcb_port_id:j.string(),pcb_component_id:j.string(),route:j.array(RS)}).describe("A hint that can be used during generation of a PCB trace"),OYe=j.object({type:j.literal("pcb_silkscreen_line"),pcb_silkscreen_line_id:J1("pcb_silkscreen_line"),pcb_component_id:j.string(),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),stroke_width:Ui.default("0.1mm"),x1:Ui,y1:Ui,x2:Ui,y2:Ui,layer:yw}).describe("Defines a silkscreen line on the PCB"),UYe=j.object({type:j.literal("pcb_silkscreen_path"),pcb_silkscreen_path_id:J1("pcb_silkscreen_path"),pcb_component_id:j.string(),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),layer:yw,route:j.array(Xv),stroke_width:X9}).describe("Defines a silkscreen path on the PCB"),kYe=j.object({type:j.literal("pcb_silkscreen_text"),pcb_silkscreen_text_id:J1("pcb_silkscreen_text"),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),font:j.literal("tscircuit2024").default("tscircuit2024"),font_size:Ui.default("0.2mm"),pcb_component_id:j.string(),text:j.string(),ccw_rotation:j.number().optional(),layer:Wv,is_mirrored:j.boolean().default(!1).optional(),anchor_position:Xv.default({x:0,y:0}),anchor_alignment:j.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center")}).describe("Defines silkscreen text on the PCB"),FYe=j.object({type:j.literal("pcb_silkscreen_rect"),pcb_silkscreen_rect_id:J1("pcb_silkscreen_rect"),pcb_component_id:j.string(),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),center:Xv,width:X9,height:X9,layer:Wv}).describe("Defines a silkscreen rect on the PCB"),IYe=j.object({type:j.literal("pcb_silkscreen_circle"),pcb_silkscreen_circle_id:J1("pcb_silkscreen_circle"),pcb_component_id:j.string(),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),center:Xv,radius:X9,layer:yw}).describe("Defines a silkscreen circle on the PCB"),BYe=j.object({type:j.literal("pcb_silkscreen_oval"),pcb_silkscreen_oval_id:J1("pcb_silkscreen_oval"),pcb_component_id:j.string(),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),center:Xv,radius_x:Ui,radius_y:Ui,layer:yw}).describe("Defines a silkscreen oval on the PCB"),jYe=j.object({type:j.literal("pcb_fabrication_note_text"),pcb_fabrication_note_text_id:J1("pcb_fabrication_note_text"),subcircuit_id:j.string().optional(),pcb_group_id:j.string().optional(),font:j.literal("tscircuit2024").default("tscircuit2024"),font_size:Ui.default("1mm"),pcb_component_id:j.string(),text:j.string(),layer:yw,anchor_position:Xv.default({x:0,y:0}),anchor_alignment:j.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),color:j.string().optional()}).describe("Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators"),VYe=j.object({type:j.literal("pcb_fabrication_note_path"),pcb_fabrication_note_path_id:J1("pcb_fabrication_note_path"),pcb_component_id:j.string(),subcircuit_id:j.string().optional(),layer:Wv,route:j.array(Xv),stroke_width:X9,color:j.string().optional()}).describe("Defines a fabrication path on the PCB for fabricators or assemblers"),HYe=j.object({type:j.literal("pcb_keepout"),shape:j.literal("rect"),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),center:Xv,width:Ui,height:Ui,pcb_keepout_id:j.string(),layers:j.array(j.string()),description:j.string().optional()}).or(j.object({type:j.literal("pcb_keepout"),shape:j.literal("circle"),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),center:Xv,radius:Ui,pcb_keepout_id:j.string(),layers:j.array(j.string()),description:j.string().optional()})),qYe=j.object({type:j.literal("pcb_missing_footprint_error"),pcb_missing_footprint_error_id:J1("pcb_missing_footprint_error"),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),error_type:j.literal("pcb_missing_footprint_error"),source_component_id:j.string(),message:j.string()}).describe("Defines a missing footprint error on the PCB"),$Ye=j.object({type:j.literal("pcb_manual_edit_conflict_error"),pcb_error_id:J1("pcb_manual_edit_conflict_error"),message:j.string(),pcb_component_id:j.string(),pcb_group_id:j.string().optional(),subcircuit_id:j.string().optional(),source_component_id:j.string()}).describe("Error emitted when a component has both manual placement and explicit pcbX/pcbY coordinates"),GYe=j.object({type:j.literal("pcb_group"),pcb_group_id:J1("pcb_group"),source_group_id:j.string(),is_subcircuit:j.boolean().optional(),subcircuit_id:j.string().optional(),width:X9,height:X9,center:Xv,pcb_component_ids:j.array(j.string()),name:j.string().optional(),description:j.string().optional()}).describe("Defines a group of components on the PCB"),YYe=j.object({type:j.literal("cad_component"),cad_component_id:j.string(),pcb_component_id:j.string(),source_component_id:j.string(),position:vw,rotation:vw.optional(),size:vw.optional(),layer:Wv.optional(),footprinter_string:j.string().optional(),model_obj_url:j.string().optional(),model_stl_url:j.string().optional(),model_3mf_url:j.string().optional(),model_jscad:j.any().optional()}).describe("Defines a component on the PCB"),XYe=j.union([YGe,GGe,$Ge,pue,WGe,XGe,fue,due,cue,OO,uue,hue,mue,vue,_ue,xue,bue,Sue,gue,yue,vYe,_Ye,qYe,$Ye,xYe,HYe,bYe,TYe,RYe,DYe,EYe,wYe,NYe,GYe,zYe,OYe,UYe,kYe,FYe,IYe,BYe,AYe,LYe,PYe,VYe,jYe,ZGe,aYe,rYe,nYe,oYe,iYe,QGe,lYe,sYe,dYe,pYe,YYe]),WYe=XYe;const UYt=Object.freeze(Object.defineProperty({__proto__:null,all_layers:hYe,any_circuit_element:XYe,any_soup_element:WYe,any_source_component:$Ge,battery_capacity:VGe,cad_component:YYe,capacitance:mw,current:xYt,distance:Ui,frequency:zO,getZodPrefixedIdWithDefault:J1,inductance:oue,layer_ref:Wv,layer_string:Eue,length:X9,pcb_board:NYe,pcb_component:vYe,pcb_fabrication_note_path:VYe,pcb_fabrication_note_text:jYe,pcb_group:GYe,pcb_hole:_Ye,pcb_hole_circle_or_square_shape:TYt,pcb_hole_oval_shape:MYt,pcb_keepout:HYe,pcb_manual_edit_conflict_error:$Ye,pcb_missing_footprint_error:qYe,pcb_placement_error:LYe,pcb_plated_hole:xYe,pcb_port:bYe,pcb_port_not_matched_error:PYe,pcb_route_hint:mYe,pcb_route_hints:wYt,pcb_silkscreen_circle:IYe,pcb_silkscreen_line:OYe,pcb_silkscreen_oval:BYe,pcb_silkscreen_path:UYe,pcb_silkscreen_rect:FYe,pcb_silkscreen_text:kYe,pcb_smtpad:EYe,pcb_smtpad_pill:SYe,pcb_solder_paste:wYe,pcb_text:TYe,pcb_trace:RYe,pcb_trace_error:AYe,pcb_trace_hint:zYe,pcb_trace_route_point:OYt,pcb_trace_route_point_via:CYe,pcb_trace_route_point_wire:MYe,pcb_via:DYe,point:Xv,point3:vw,port_arrangement:tYe,position:SYt,position3:EYt,resistance:hw,rotation:Z4,route_hint_point:RS,schematic_box:ZGe,schematic_component:nYe,schematic_component_port_arrangement_by_sides:eYe,schematic_component_port_arrangement_by_size:JGe,schematic_debug_line:uYe,schematic_debug_object:dYe,schematic_debug_object_base:UO,schematic_debug_point:fYe,schematic_debug_rect:cYe,schematic_error:lYe,schematic_line:rYe,schematic_net_label:sYe,schematic_path:QGe,schematic_pin_styles:KGe,schematic_port:oYe,schematic_text:aYe,schematic_trace:iYe,schematic_voltage_probe:pYe,size:sue,source_component_base:r5,source_group:XGe,source_led:pue,source_net:WGe,source_port:GGe,source_simple_battery:mue,source_simple_bug:fue,source_simple_capacitor:cue,source_simple_chip:due,source_simple_crystal:qGe,source_simple_diode:OO,source_simple_ground:HGe,source_simple_inductor:vue,source_simple_mosfet:Sue,source_simple_pin_header:_ue,source_simple_potentiometer:gue,source_simple_power_source:hue,source_simple_push_button:yue,source_simple_resistor:uue,source_simple_resonator:xue,source_simple_transistor:bue,source_trace:YGe,supplier_name:lue,time:bYt,visible_layer:yw,voltage:LO},Symbol.toStringTag,{value:"Module"}));function wue(r){if(r.length===0)return{minX:0,maxX:0,minY:0,maxY:0};let e=1/0,t=-1/0,n=1/0,i=-1/0;const a=o=>{e=Math.min(e,o.x),t=Math.max(t,o.x),n=Math.min(n,o.y),i=Math.max(i,o.y)};return r.forEach(o=>{switch(o.type){case"path":o.points.forEach(a);break;case"text":a({x:o.x,y:o.y});break;case"circle":{const{x:s,y:l,radius:c}=o;a({x:s-c,y:l-c}),a({x:s+c,y:l+c});break}case"box":{const{x:s,y:l,width:c,height:u}=o,f=c/2,h=u/2;a({x:s-f,y:l-h}),a({x:s+f,y:l+h});break}}}),{minX:e,maxX:t,minY:n,maxY:i}}function ym(r){let e=r.size;if(!e){const t=wue(r.primitives);e={width:t.maxX-t.minX,height:t.maxY-t.minY}}return{...r,size:e}}var kYt={paths:{path11:{type:"path",points:[{x:-.5274831500000005,y:.03018695000000049},{x:-.30105415000000013,y:.03018695000000049}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2932119499999999,y:.03018695000000049},{x:.5339524499999997,y:.03018695000000049}],color:"primary",fill:!1},"path11-5-5":{type:"path",points:[{x:.09765764999999949,y:.12845085000000034},{x:-.0011297500000011507,y:-.06303624999999946},{x:-.10778645000000164,y:.12845085000000034}],color:"primary",fill:!1},path17:{type:"path",points:[{x:-.002934749999999875,y:-.13606674999999946},{x:.06869635000000063,y:-.11019914999999947}],color:"primary",fill:!1},path18:{type:"path",points:[{x:.06869635000000063,y:-.11019914999999947},{x:.1403274500000009,y:-.13606674999999946}],color:"primary",fill:!1},path19:{type:"path",points:[{x:-.1461968499999997,y:-.13606674999999946},{x:-.07456574999999921,y:-.11019914999999947}],color:"primary",fill:!1},path20:{type:"path",points:[{x:-.07456575000000054,y:-.11019914999999947},{x:-.0029346500000002607,y:-.13606674999999946}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17328624999999942,y:.39216264999999995},bottom1:{type:"text",text:"{VAL}",x:-.00661455000000033,y:-.40216264999999995}},refblocks:{left1:{x:-.5413984499999998,y:.029334149999999948},right1:{x:.54139845,y:.030330549999999734}},bounds:{minX:-.5695568909999997,maxX:.569556891,minY:-.5021626499999999,maxY:.39216264999999995,width:1.1391137819999997,height:.5443252999999999,centerX:11102230246251565e-32,centerY:.05499999999999999},circles:{path1:{type:"circle",x:-.0037626500000000895,y:.03731525000000002,radius:.28854213,color:"primary",fill:!1}}},{paths:FYt,bounds:kO,refblocks:ZYe,circles:IYt}=kYt,QYe=ym({primitives:[...Object.values(FYt),...Object.values(IYt),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"}],ports:[{...ZYe.left1,labels:["1"]},{...ZYe.right1,labels:["2"]}],size:{width:kO.width,height:kO.height},center:{x:kO.centerX,y:kO.centerY}}),BYt=(r,e="right")=>{switch(e){case"down":switch(r){case"middle_top":return"middle_right";case"middle_bottom":return"middle_left";case"middle_left":return"middle_bottom";case"middle_right":return"middle_top"}break;case"up":switch(r){case"middle_top":return"middle_left";case"middle_bottom":return"middle_right";case"middle_left":return"middle_top";case"middle_right":return"middle_bottom"}break;case"left":switch(r){case"middle_top":return"middle_bottom";case"middle_bottom":return"middle_top";case"middle_left":return"middle_right";case"middle_right":return"middle_left"}break;case"right":return r}return r},jYt=(r,e)=>{const{primitives:t,center:n,ports:i,size:a}=r,o=l4({a:1,b:0,c:0,d:-1,e:0,f:2*n.y}),s=t.map(c=>{switch(c={...c},c.type){case"path":return{...c,points:c.points.map(v=>li(o,v))};case"text":const u=li(o,{x:c.x,y:c.y}),f={top_left:"bottom_left",top_right:"bottom_right",bottom_left:"top_left",bottom_right:"top_right",center:"center",middle_top:"middle_bottom",middle_bottom:"middle_top",middle_left:"middle_left",middle_right:"middle_right"};return{...c,x:u.x,y:u.y,anchor:f[c.anchor]};case"circle":case"box":const h=li(o,{x:c.x,y:c.y});return{...c,x:h.x,y:h.y}}}),l=i.map(c=>({...c,...li(o,c)}));return{primitives:s,center:n,ports:l,size:a,...e}},KYe=(r,e)=>{const{primitives:t,center:n,ports:i,size:a}=r,o=l4({a:-1,b:0,c:0,d:1,e:0,f:2*n.x}),s=t.map(c=>{switch(c={...c},c.type){case"path":return{...c,points:c.points.map(v=>li(o,v))};case"text":const u=li(o,{x:c.x,y:c.y}),f={top_left:"top_right",top_right:"top_left",bottom_left:"bottom_right",bottom_right:"bottom_left",center:"center",middle_top:"middle_top",middle_bottom:"middle_bottom",middle_left:"middle_right",middle_right:"middle_left"};return{...c,x:u.x,y:u.y,anchor:f[c.anchor]};case"circle":case"box":const h=li(o,{x:c.x,y:c.y});return{...c,x:h.x,y:h.y}}}),l=i.map(c=>({...c,...li(o,c)}));return{primitives:s,center:n,ports:l,size:a,...e}},aR=(r,e)=>{const{newOrientation:t,overrides:n}=e,i={up:Math.PI/2,right:0,down:-Math.PI/2,left:-Math.PI},a=M5(t?i[t]:Math.PI/2,r.center.x,r.center.y),{primitives:o,center:s,size:l,ports:c}=r,u=o.map(v=>{switch(v={...v},v.type){case"path":return{...v,points:v.points.map(b=>li(a,b))};case"text":const x=li(a,{x:v.x,y:v.y});return v.anchor=BYt(v.anchor,t??"right"),{...v,x:x.x,y:x.y};case"circle":const E=li(a,{x:v.x,y:v.y});return{...v,x:E.x,y:E.y};case"box":const S=li(a,{x:v.x,y:v.y});return{...v,x:S.x,y:S.y,width:v.height,height:v.width}}}),f=c.map(v=>({...v,...li(a,v)})),h=wue(u);return{primitives:u,center:s,ports:f,size:{width:h.maxX-h.minX,height:h.maxY-h.minY},...n}},_0=(r,e="down",t={})=>aR(r,{newOrientation:e,overrides:t}),VYt=aR(QYe,{newOrientation:"up"}),HYt=VYt,qYt={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.0390362999999998},{x:-.1199943999999995,y:-.09325540000000054}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1199943999999995,y:.17132800000000015},{x:.14458890000000002,y:.0390362999999998}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1199943999999995,y:-.09325539999999921},{x:-.1199943999999995,y:.17132800000000015}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.14458890000000002,y:.17132800000000015},{x:.14458890000000002,y:-.09325539999999921}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.12219909999999956,y:.0390362999999998},{x:-.5168693999999996,y:.0390362999999998}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5233797000000002,y:.03895110000000024},{x:.1496715999999998,y:.03895110000000024}],color:"primary",fill:!1},"path43-8":{type:"path",points:[{x:.14339119999999994,y:.17181090000000032},{x:.07768859999999966,y:.19542900000000052}],color:"primary",fill:!1},"path43-8-3":{type:"path",points:[{x:.21083259999999981,y:-.1180321000000002},{x:.14512999999999954,y:-.094414}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999996715,y:.26884529999999995},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999977319,y:-.27884529999999996}},refblocks:{left1:{x:-.5191471000000001,y:.03992070000000081},right1:{x:.5191470999999999,y:.03889609999999988}},bounds:{minX:-.5473055410000001,maxX:.5473055409999998,minY:-.37884529999999994,maxY:.26884529999999995,width:1.094611082,height:.2976905999999999,centerX:-11102230246251565e-32,centerY:.05499999999999999},circles:{}},{paths:$Yt,texts:JYe,bounds:FO,refblocks:eXe,circles:GYt}=qYt,tXe=ym({primitives:[...Object.values($Yt),...Object.values(GYt),{...JYe.top1,anchor:"middle_bottom"},{...JYe.bottom1,anchor:"middle_top"}],ports:[{...eXe.left1,labels:["1"]},{...eXe.right1,labels:["2"]}],size:{width:FO.width,height:FO.height},center:{x:FO.centerX,y:FO.centerY}}),YYt=aR(tXe,{newOrientation:"down"}),XYt=YYt,WYt={paths:{path43:{type:"path",points:[{x:-.05901489999999909,y:.18831315000000015},{x:-.05869489999999833,y:-.11814524999999954}],color:"primary",fill:!1},"path43-6":{type:"path",points:[{x:.015375000000000805,y:.12533125000000034},{x:.016669000000000933,y:-.05562075000000033}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.06443049999999961,y:.032673549999999496},{x:-.4368029,y:.032673549999999496}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.4350822999999997,y:.03438825000000034},{x:.028285099999999952,y:.03438825000000034}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.027835099999999446,y:.26564474999999943},bottom1:{type:"text",text:"{VAL}",x:-.028373699999999502,y:-.27564474999999966}},refblocks:{left1:{x:-.4458008,y:.033557849999999334},right1:{x:.4458008,y:.03343344999999931}},bounds:{minX:-.473959241,maxX:.473959241,minY:-.37564474999999964,maxY:.26564474999999943,width:.947918482,height:.2912894999999991,centerX:0,centerY:.055000000000000104},circles:{}},{paths:ZYt,texts:nXe,bounds:IO,refblocks:rXe,circles:QYt}=WYt,iXe=ym({primitives:[...Object.values(ZYt),...Object.values(QYt),{...nXe.top1,anchor:"middle_bottom"},{...nXe.bottom1,anchor:"middle_top"}],ports:[{...rXe.left1,labels:["1"]},{...rXe.right1,labels:["2"]}],size:{width:IO.width,height:IO.height},center:{x:IO.centerX,y:IO.centerY}}),KYt=aR(iXe,{newOrientation:"up"}),BO={paths:{path1:{type:"path",points:[{x:-.511850799999999,y:.04616140000000257},{x:-.24726749999999953,y:.04616140000000257}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.2818991000000013,y:.04616140000000257},{x:.5464825000000006,y:.04616140000000257}],color:"primary",fill:!1},path3:{type:"path",points:[{x:.0173157000000006,y:.17845310000000225},{x:.2818990000000001,y:.17845310000000225},{x:.2818990000000001,y:-.0861302999999971},{x:-.24726770000000053,y:-.0861302999999971},{x:-.24726770000000053,y:.17845310000000225},{x:.017315699999998824,y:.17845310000000225}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0014247999999992267,y:.2499980000000015},bottom1:{type:"text",text:"{VAL}",x:-.0004627999999997634,y:-.24999799999999972}},refblocks:{left1:{x:-.5337907000000002,y:.04580520000000021},right1:{x:.5337907000000004,y:.04525870000000154}},bounds:{minX:-.5619491410000002,maxX:.5619491410000004,minY:-.24999799999999972,maxY:.2499980000000015,width:1.1238982820000005,height:.4999960000000012,centerX:11102230246251565e-32,centerY:8881784197001252e-31},circles:{}},JYt=class{constructor(e){rr(this,"symbol");this.symbol=JSON.parse(JSON.stringify(e)),this.symbol.size=this.computeSize()}changeTextAnchor(e,t){return this.symbol={...this.symbol,primitives:this.symbol.primitives.map(n=>n.type==="text"&&n.text===e?{...n,anchor:t}:n)},this}labelPort(e,t){return this.symbol={...this.symbol,ports:this.symbol.ports.map(n=>n.labels.includes(e)?{...n,labels:t}:n)},this}rotateRightFacingSymbol(e){return this.symbol=aR(this.symbol,{newOrientation:e}),this}computeSize(){const e=wue(this.symbol.primitives);return{width:e.maxX-e.minX,height:e.maxY-e.minY}}build(){return{...this.symbol,size:this.computeSize()}}},Ph=r=>new JYt({...r,primitives:r.primitives??[...Object.values(r.paths??{}),...Object.values(r.texts??{}),...Object.values(r.circles??{}),...Object.values(r.rects??{})],ports:r.ports??Object.entries(r.refblocks).flatMap(([e,t])=>[{...t,labels:[e]}]),center:r.center??{x:r.bounds.centerX,y:r.bounds.centerY}}),{paths:eXt,texts:myn,bounds:aXe,refblocks:oXe,circles:tXt}=BO,nXt=Ph({primitives:[...Object.values(eXt),...Object.values(tXt),{type:"text",text:"{REF}",x:-.16,y:.2294553499999995},{type:"text",text:"{VAL}",x:.16,y:.2294553499999995}],ports:[{...oXe.left1,labels:["1"]},{...oXe.right1,labels:["2"]}],center:{x:aXe.centerX,y:aXe.centerY}}).changeTextAnchor("{VAL}","middle_bottom").rotateRightFacingSymbol("down").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_left").build(),{paths:rXt,texts:vyn,bounds:sXe,refblocks:lXe,circles:iXt}=BO,aXt=Ph({primitives:[...Object.values(rXt),...Object.values(iXt),{type:"text",text:"{REF}",x:0,y:.2294553499999995},{type:"text",text:"{VAL}",x:0,y:-.1594553499999995}],ports:[{...lXe.left1,labels:["1"]},{...lXe.right1,labels:["2"]}],center:{x:sXe.centerX,y:sXe.centerY}}).changeTextAnchor("{VAL}","middle_top").rotateRightFacingSymbol("right").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),{paths:oXt,texts:yyn,bounds:cXe,refblocks:uXe,circles:sXt}=BO,lXt=Ph({primitives:[...Object.values(oXt),...Object.values(sXt),{type:"text",text:"{REF}",x:0,y:.2294553499999995},{type:"text",text:"{VAL}",x:0,y:-.1594553499999995}],ports:[{...uXe.left1,labels:["1"]},{...uXe.right1,labels:["2"]}],center:{x:cXe.centerX,y:cXe.centerY}}).changeTextAnchor("{VAL}","middle_top").rotateRightFacingSymbol("right").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),{paths:cXt,texts:gyn,bounds:fXe,refblocks:dXe,circles:uXt}=BO,fXt=Ph({primitives:[...Object.values(cXt),...Object.values(uXt),{type:"text",text:"{REF}",x:-.16,y:.2294553499999995},{type:"text",text:"{VAL}",x:.16,y:.2294553499999995}],ports:[{...dXe.left1,labels:["1"]},{...dXe.right1,labels:["2"]}],center:{x:fXe.centerX,y:fXe.centerY}}).changeTextAnchor("{VAL}","middle_bottom").rotateRightFacingSymbol("down").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_left").build(),Tue={paths:{path27:{type:"path",points:[{x:.5229378000000002,y:.017283050000003186},{x:.07314620000000005,y:.017283050000003186}],color:"primary",fill:!1},path28:{type:"path",points:[{x:-.0856037999999999,y:.017283050000003186},{x:-.5353954999999999,y:.017283050000003186}],color:"primary",fill:!1},path29:{type:"path",points:[{x:.0731461999999996,y:.2818663500000014},{x:.07314620000000005,y:-.24730024999999856}],color:"primary",fill:!1},path30:{type:"path",points:[{x:-.0856037999999999,y:.2818663500000014},{x:-.0856037999999999,y:-.24730024999999856}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.012864500000000056,y:.4200086500000033},bottom1:{type:"text",text:"{VAL}",x:-.003850500000000423,y:-.42000864999999976}},refblocks:{left1:{x:-.5512093000000005,y:.01638025000000276},right1:{x:.5512093,y:.016926950000001995}},bounds:{minX:-.5793677410000004,maxX:.579367741,minY:-.42000864999999976,maxY:.4200086500000033,width:1.1587354820000004,height:.8400173000000031,centerX:-2220446049250313e-31,centerY:17763568394002505e-31},circles:{}},{paths:dXt,texts:_yn,bounds:jO,refblocks:pXe,circles:pXt}=Tue,hXt=Ph({primitives:[...Object.values(dXt),...Object.values(pXt),{type:"text",text:"{REF}",x:-.2,y:.2094553499999995},{type:"text",text:"{VAL}",x:.2,y:.2094553499999995}],ports:[{...pXe.left1,labels:["1"]},{...pXe.right1,labels:["2"]}],size:{width:jO.width,height:jO.height},center:{x:jO.centerX,y:jO.centerY}}).changeTextAnchor("{VAL}","top_left").rotateRightFacingSymbol("down").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","bottom_left").build(),hXe=Ph(Tue).rotateRightFacingSymbol("right").changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),mXt=Ph(hXe).changeTextAnchor("{VAL}","middle_top").rotateRightFacingSymbol("left").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_top").build(),Mue={paths:{"path27-5":{type:"path",points:[{x:.5229378000000007,y:.017283050000003186},{x:.001333100000000531,y:.017283050000003186}],color:"primary",fill:!1},"path28-5":{type:"path",points:[{x:-.08560379999999945,y:.017283050000003186},{x:-.5353954999999995,y:.017283050000003186}],color:"primary",fill:!1},"path30-7":{type:"path",points:[{x:-.0024798999999995353,y:.28420285000000334},{x:-.0024798999999995353,y:-.247479349999999}],color:"primary",fill:!1},path8704:{type:"path",points:[{x:-.1433630999999993,y:-.24400714999999806},{x:-.1433630999999993,y:-.24400714999999806},{x:-.14262848833929928,y:-.24277205092349807},{x:-.1418975396743993,y:-.2415360290679981},{x:-.14117026348109932,y:-.24029908349449816},{x:-.14044666923519933,y:-.23906121326399818},{x:-.13972676641249931,y:-.2378224174374982},{x:-.1390105644887993,y:-.23658269507599822},{x:-.13829807293989932,y:-.2353420452404983},{x:-.13758930124159935,y:-.23410046699199832},{x:-.13688425886969938,y:-.23285795939149836},{x:-.13618295529999938,y:-.23161452149999842},{x:-.13548540000829937,y:-.23037015237849842},{x:-.13479160247039934,y:-.22912485108799843},{x:-.13410157216209936,y:-.22787861668949844},{x:-.1334153185591994,y:-.22663144824399842},{x:-.13273285113749936,y:-.22538334481249844},{x:-.13205417937279937,y:-.22413430545599844},{x:-.1313793127408994,y:-.2228843292354985},{x:-.1307082607175994,y:-.22163341521199847},{x:-.13004103277869938,y:-.2203815624464985},{x:-.1293776383999994,y:-.21912876999999853},{x:-.12871808705729942,y:-.21787503693349855},{x:-.12806238822639943,y:-.21662036230799855},{x:-.12741055138309942,y:-.21536474518449858},{x:-.12676258600319942,y:-.21410818462399858},{x:-.12611850156249946,y:-.21285067968749863},{x:-.12547830753679945,y:-.21159222943599865},{x:-.12484201340189946,y:-.21033283293049862},{x:-.12420962863359947,y:-.20907248923199864},{x:-.12358116270769948,y:-.20781119740149864},{x:-.12295662509999947,y:-.20654895649999866},{x:-.12233602528629947,y:-.20528576558849868},{x:-.12171937274239948,y:-.20402162372799865},{x:-.12110667694409948,y:-.20275652997949864},{x:-.12049794736719947,y:-.2014904834039986},{x:-.11989319348749948,y:-.20022348306249865},{x:-.11929242478079949,y:-.19895552801599864},{x:-.11869565072289952,y:-.19768661732549864},{x:-.11810288078959952,y:-.19641675005199866},{x:-.11751412445669952,y:-.19514592525649863},{x:-.1169293911999995,y:-.1938741419999986},{x:-.11634869049529953,y:-.19260139934349865},{x:-.11577203181839951,y:-.1913276963479986},{x:-.11519942464509951,y:-.1900530320744986},{x:-.11463087845119951,y:-.18877740558399858},{x:-.11406640271249952,y:-.1875008159374986},{x:-.11350600690479953,y:-.18622326219599858},{x:-.11294970050389953,y:-.18494474342049858},{x:-.11239749298559953,y:-.1836652586719986},{x:-.11184939382569953,y:-.18238480701149856},{x:-.11130541249999952,y:-.18110338749999852},{x:-.11076555848429954,y:-.17982099919849853},{x:-.11022984125439952,y:-.1785376411679985},{x:-.10969827028609953,y:-.1772533124694985},{x:-.10917085505519954,y:-.17596801216399852},{x:-.10864760503749954,y:-.17468173931249847},{x:-.10812852970879953,y:-.17339449297599843},{x:-.10761363854489954,y:-.17210627221549843},{x:-.10710294102159955,y:-.17081707609199845},{x:-.10659644661469955,y:-.16952690366649845},{x:-.10609416479999954,y:-.1682357539999984},{x:-.10559610505329955,y:-.1669436261534984},{x:-.10510227685039954,y:-.1656505191879984},{x:-.10461268966709955,y:-.16435643216449838},{x:-.10412735297919956,y:-.16306136414399838},{x:-.10364627626249956,y:-.16176531418749837},{x:-.10316946899279957,y:-.16046828135599833},{x:-.10269694064589956,y:-.15917026471049833},{x:-.10222870069759955,y:-.1578712633119983},{x:-.10176475862369955,y:-.1565712762214983},{x:-.10130512389999956,y:-.1552703024999983},{x:-.10084980600229956,y:-.15396834120849828},{x:-.10039881440639958,y:-.15266539140799829},{x:-.09995215858809957,y:-.15136145215949826},{x:-.09950984802319957,y:-.15005652252399826},{x:-.09907189218749957,y:-.14875060156249825},{x:-.09863830055679956,y:-.14744368833599825},{x:-.09820908260689958,y:-.14613578190549825},{x:-.09778424781359957,y:-.14482688133199823},{x:-.09736380565269957,y:-.1435169856764982},{x:-.09694776559999957,y:-.1422060939999982},{x:-.09653613713129958,y:-.1408942053634982},{x:-.09612892972239956,y:-.13958131882799818},{x:-.09572615284909958,y:-.13826743345449818},{x:-.09532781598719958,y:-.13695254830399817},{x:-.09493392861249958,y:-.13563666243749817},{x:-.09454450020079957,y:-.13431977491599817},{x:-.09415954022789956,y:-.13300188480049818},{x:-.09377905816959958,y:-.13168299115199816},{x:-.09340306350169958,y:-.13036309303149818},{x:-.09303156569999958,y:-.12904218949999818},{x:-.09266457424029959,y:-.12772027961849816},{x:-.09230209859839958,y:-.12639736244799815},{x:-.09194414825009957,y:-.12507343704949817},{x:-.09159073267119958,y:-.12374850248399819},{x:-.09124186133749958,y:-.12242255781249818},{x:-.09089754372479958,y:-.12109560209599818},{x:-.09055778930889957,y:-.11976763439549819},{x:-.09022260756559956,y:-.11843865377199818},{x:-.08989200797069956,y:-.11710865928649819},{x:-.08956599999999959,y:-.11577764999999829},{x:-.08956599999999959,y:-.11577764999999829},{x:-.08916166532269958,y:-.1141015840276983},{x:-.08876332646159957,y:-.11242441110159831},{x:-.08837097017289958,y:-.11074614170789834},{x:-.08798458321279957,y:-.10906678633279836},{x:-.08760415233749957,y:-.10738635546249836},{x:-.08722966430319957,y:-.10570485958319836},{x:-.08686110586609956,y:-.10402230918109837},{x:-.08649846378239957,y:-.10233871474239843},{x:-.0861417248082996,y:-.10065408675329846},{x:-.08579087569999959,y:-.09896843569999846},{x:-.08544590321369959,y:-.09728177206869845},{x:-.08510679410559958,y:-.09559410634559845},{x:-.08477353513189957,y:-.09390544901689848},{x:-.08444611304879956,y:-.09221581056879849},{x:-.08412451461249956,y:-.0905252014874985},{x:-.08380872657919955,y:-.0888336322591985},{x:-.08349873570509957,y:-.08714111337009853},{x:-.08319452874639957,y:-.08544765530639854},{x:-.08289609245929955,y:-.08375326855429854},{x:-.08260341359999955,y:-.08205796359999856},{x:-.08231647892469955,y:-.08036175092969856},{x:-.08203527518959956,y:-.07866464102959857},{x:-.08175978915089956,y:-.07696664438589859},{x:-.08149000756479956,y:-.07526777148479862},{x:-.08122591718749958,y:-.07356803281249863},{x:-.08096750477519957,y:-.07186743885519864},{x:-.08071475708409956,y:-.07016600009909864},{x:-.08046766087039958,y:-.06846372703039866},{x:-.08022620289029957,y:-.06676063013529866},{x:-.07999036989999955,y:-.06505671989999867},{x:-.07976014865569958,y:-.06335200681069868},{x:-.07953552591359955,y:-.061646501353598705},{x:-.07931648842989956,y:-.0599402140148987},{x:-.07910302296079955,y:-.0582331552807987},{x:-.07889511626249955,y:-.05652533563749871},{x:-.07869275509119955,y:-.05481676557119872},{x:-.07849592620309954,y:-.053107455568098726},{x:-.07830461635439954,y:-.05139741611439873},{x:-.07811881230129955,y:-.049686657696298736},{x:-.07793850079999953,y:-.04797519079999873},{x:-.07776366860669955,y:-.04626302591169874},{x:-.07759430247759955,y:-.04455017351759874},{x:-.07743038916889955,y:-.042836644103898744},{x:-.07727191543679954,y:-.04112244815679875},{x:-.07711886803749955,y:-.039407596162498754},{x:-.07697123372719955,y:-.03769209860719875},{x:-.07682899926209953,y:-.035975965977098755},{x:-.07669215139839955,y:-.03425920875839876},{x:-.07656067689229953,y:-.032541837437298764},{x:-.07643456249999953,y:-.03082386249999876},{x:-.07631379497769952,y:-.029105294432698766},{x:-.07619836108159952,y:-.02738614372159877},{x:-.07608824756789952,y:-.02566642085289876},{x:-.07598344119279953,y:-.023946136312798766},{x:-.07588392871249951,y:-.02222530058749876},{x:-.0757896968831995,y:-.020503924163198756},{x:-.07570073246109951,y:-.01878201752609876},{x:-.07561702220239952,y:-.017059591162398753},{x:-.07553855286329951,y:-.015336655558298754},{x:-.07546531119999951,y:-.01361322119999875},{x:-.07539728396869952,y:-.011889298573698748},{x:-.07533445792559951,y:-.010164898165598747},{x:-.07527681982689952,y:-.008440030461898743},{x:-.07522435642879952,y:-.006714705948798734},{x:-.07517705448749952,y:-.004988935112498731},{x:-.07513490075919951,y:-.0032627284391987255},{x:-.07509788200009951,y:-.0015360964150987165},{x:-.07506598496639952,y:.0001909504736012889},{x:-.0750391964142995,y:.0019184017407012956},{x:-.07501750309999951,y:.003646246900001303},{x:-.07500089177969951,y:.00537447546530131},{x:-.07498934920959952,y:.00710307695040132},{x:-.0749828621458995,y:.00883204086910133},{x:-.0749814173447995,y:.010561356735201338},{x:-.07498500156249951,y:.012291014062501347},{x:-.0749936015551995,y:.014021002364801359},{x:-.07500720407909953,y:.015751311155901372},{x:-.07502579589039951,y:.017481929949601384},{x:-.0750493637452995,y:.01921284825970139},{x:-.07507789439999951,y:.0209440556000014},{x:-.0751113746106995,y:.022675541484301412},{x:-.0751497911335995,y:.024407295426401427},{x:-.07519313072489951,y:.02613930694010145},{x:-.07524138014079951,y:.027871565539201462},{x:-.07529452613749951,y:.029604060737501478},{x:-.07535255547119951,y:.031336782048801484},{x:-.0754154548980995,y:.0330697189869015},{x:-.07548321117439952,y:.03480286106560152},{x:-.07555581105629952,y:.03653619779870154},{x:-.07563324129999952,y:.038269718700001565},{x:-.07571548866169951,y:.04000341328330158},{x:-.07580253989759951,y:.04173727106240159},{x:-.07589438176389952,y:.043471281551101616},{x:-.07599100101679952,y:.04520543426320164},{x:-.07609238441249952,y:.04693971871250166},{x:-.07619851870719953,y:.048674124412801674},{x:-.07630939065709953,y:.0504086408779017},{x:-.07642498701839952,y:.05214325762160172},{x:-.07654529454729952,y:.05387796415770175},{x:-.07667029999999952,y:.055612750000001654},{x:-.07667029999999952,y:.055612750000001654},{x:-.07680210846969952,y:.05708314936460168},{x:-.07693595411759954,y:.05855396299680169},{x:-.07707186730189955,y:.06002517220420173},{x:-.07720987838079954,y:.06149675829440175},{x:-.07735001771249954,y:.06296870257500178},{x:-.07749231565519954,y:.06444098635360178},{x:-.07763680256709955,y:.0659135909378018},{x:-.07778350880639956,y:.06738649763520185},{x:-.07793246473129956,y:.06885968775340187},{x:-.07808370069999958,y:.07033314260000188},{x:-.07823724707069958,y:.07180684348260188},{x:-.07839313420159956,y:.07328077170880191},{x:-.07855139245089958,y:.07475490858620194},{x:-.07871205217679958,y:.07622923542240194},{x:-.07887514373749958,y:.07770373352500196},{x:-.07904069749119959,y:.07917838420160196},{x:-.07920874379609959,y:.080653168759802},{x:-.07937931301039959,y:.082128068507202},{x:-.07955243549229958,y:.08360306475140203},{x:-.0797281415999996,y:.085078138800002},{x:-.0799064616916996,y:.08655327196060203},{x:-.08008742612559962,y:.08802844554080204},{x:-.08027106525989962,y:.08950364084820207},{x:-.08045740945279962,y:.09097883919040207},{x:-.08064648906249965,y:.0924540218750021},{x:-.08083833444719964,y:.0939291702096021},{x:-.08103297596509963,y:.09540426550180209},{x:-.08123044397439966,y:.09687928905920212},{x:-.08143076883329967,y:.09835422218940212},{x:-.08163398089999965,y:.09982904620000212},{x:-.08184011053269966,y:.10130374239860213},{x:-.08204918808959966,y:.10277829209280215},{x:-.08226124392889968,y:.10425267659020215},{x:-.08247630840879966,y:.10572687719840214},{x:-.08269441188749967,y:.10720087522500214},{x:-.08291558472319968,y:.10867465197760214},{x:-.0831398572740997,y:.11014818876380215},{x:-.08336725989839969,y:.11162146689120216},{x:-.0835978229542997,y:.11309446766740217},{x:-.0838315767999997,y:.11456717240000215},{x:-.08406855179369971,y:.11603956239660215},{x:-.0843087782935997,y:.11751161896480215},{x:-.08455228665789971,y:.11898332341220215},{x:-.0847991072447997,y:.12045465704640215},{x:-.08504927041249971,y:.12192560117500215},{x:-.0853028065191997,y:.12339613710560214},{x:-.08555974592309973,y:.12486624614580213},{x:-.08582011898239973,y:.12633590960320215},{x:-.08608395605529973,y:.12780510878540213},{x:-.08635128749999971,y:.1292738250000021},{x:-.08662214367469973,y:.1307420395546021},{x:-.08689655493759973,y:.1322097337568021},{x:-.08717455164689972,y:.13367688891420207},{x:-.08745616416079972,y:.13514348633440207},{x:-.08774142283749972,y:.13660950732500204},{x:-.08803035803519974,y:.13807493319360203},{x:-.08832300011209973,y:.13953974524780205},{x:-.08861937942639975,y:.14100392479520202},{x:-.08891952633629974,y:.14246745314340203},{x:-.08922347119999974,y:.14393031160000203},{x:-.08953124437569973,y:.145392481472602},{x:-.08984287622159975,y:.14685394406880198},{x:-.09015839709589976,y:.148314680696202},{x:-.09047783735679976,y:.149774672662402},{x:-.09080122736249976,y:.15123390127500197},{x:-.09112859747119977,y:.15269234784160193},{x:-.09145997804109976,y:.15414999366980195},{x:-.09179539943039977,y:.15560682006720195},{x:-.09213489199729977,y:.1570628083414019},{x:-.09247848609999976,y:.1585179398000019},{x:-.09282621209669975,y:.1599721957506019},{x:-.09317810034559978,y:.1614255575008019},{x:-.09353418120489977,y:.16287800635820185},{x:-.09389448503279976,y:.16432952363040182},{x:-.09425904218749978,y:.16578009062500182},{x:-.09462788302719977,y:.1672296886496018},{x:-.09500103791009978,y:.1686782990118018},{x:-.09537853719439979,y:.17012590301920177},{x:-.09576041123829979,y:.17157248197940175},{x:-.09614669039999979,y:.17301801720000176},{x:-.09653740503769978,y:.17446248998860173},{x:-.0969325855095998,y:.17590588165280172},{x:-.09733226217389979,y:.17734817350020168},{x:-.09773646538879979,y:.1787893468384017},{x:-.0981452255124998,y:.18022938297500168},{x:-.0985585729031998,y:.18166826321760166},{x:-.09897653791909979,y:.1831059688738016},{x:-.09939915091839979,y:.1845424812512016},{x:-.0998264422592998,y:.1859777816574016},{x:-.1002584422999998,y:.1874118514000016},{x:-.1006951813986998,y:.18884467178660155},{x:-.1011366899135998,y:.19027622412480152},{x:-.10158299820289979,y:.19170648972220153},{x:-.1020341366247998,y:.1931354498864015},{x:-.1024901355374998,y:.1945630859250015},{x:-.1029510252991998,y:.19598937914560147},{x:-.10341683626809982,y:.19741431085580147},{x:-.1038875988023998,y:.19883786236320142},{x:-.1043633432602998,y:.20026001497540138},{x:-.10484409999999977,y:.2016807500000013},{x:-.10484409999999977,y:.2016807500000013},{x:-.10512829034499978,y:.20251255364660126},{x:-.10541452131999979,y:.2033439212528012},{x:-.10570279283499981,y:.2041748478182012},{x:-.10599310479999982,y:.20500532834240115},{x:-.10628545712499982,y:.20583535782500112},{x:-.10657984971999983,y:.20666493126560112},{x:-.10687628249499985,y:.2074940436638011},{x:-.10717475535999986,y:.20832269001920106},{x:-.10747526822499989,y:.2091508653314011},{x:-.1077778209999999,y:.20997856460000103},{x:-.10808241359499988,y:.21080578282460102},{x:-.10838904591999989,y:.21163251500480096},{x:-.10869771788499989,y:.212458756140201},{x:-.10900842939999988,y:.21328450123040094},{x:-.10932118037499987,y:.21410974527500093},{x:-.10963597071999989,y:.21493448327360093},{x:-.10995280034499992,y:.21575871022580093},{x:-.1102716691599999,y:.2165824211312009},{x:-.1105925770749999,y:.21740561098940095},{x:-.11091552399999992,y:.21822827480000093},{x:-.1112405098449999,y:.2190504075626009},{x:-.11156753451999993,y:.21987200427680093},{x:-.11189659793499994,y:.22069305994220095},{x:-.11222769999999993,y:.22151356955840096},{x:-.11256084062499995,y:.222333528125001},{x:-.11289601971999996,y:.223152930641601},{x:-.11323323719499996,y:.223971772107801},{x:-.11357249295999995,y:.22479004752320103},{x:-.11391378692499997,y:.22560775188740104},{x:-.11425711899999995,y:.22642488020000104},{x:-.11460248909499995,y:.22724142746060105},{x:-.11494989711999995,y:.2280573886688011},{x:-.11529934298499996,y:.22887275882420108},{x:-.11565082659999995,y:.22968753292640107},{x:-.11600434787499994,y:.23050170597500114},{x:-.11635990671999996,y:.23131527296960114},{x:-.11671750304499996,y:.23212822890980117},{x:-.11707713675999995,y:.23294056879520117},{x:-.11743880777499995,y:.2337522876254012},{x:-.11780251599999993,y:.2345633804000012},{x:-.11816826134499994,y:.23537384211860124},{x:-.11853604371999993,y:.23618366778080127},{x:-.11890586303499992,y:.2369928523862013},{x:-.11927771919999992,y:.23780139093440128},{x:-.11965161212499995,y:.23860927842500138},{x:-.12002754171999992,y:.23941650985760138},{x:-.12040550789499993,y:.24022308023180142},{x:-.12078551055999992,y:.24102898454720142},{x:-.12116754962499991,y:.24183421780340145},{x:-.12155162499999989,y:.24263877500000142},{x:-.1219377365949999,y:.2434426511366015},{x:-.1223258843199999,y:.2442458412128015},{x:-.1227160680849999,y:.24504834022820154},{x:-.12310828779999988,y:.24585014318240156},{x:-.12350254337499987,y:.24665124507500158},{x:-.12389883471999988,y:.24745164090560162},{x:-.12429716174499987,y:.24825132567380165},{x:-.12469752435999987,y:.2490502943792017},{x:-.12509992247499988,y:.2498485420214017},{x:-.12550435599999984,y:.25064606360000175},{x:-.12591082484499985,y:.25144285411460177},{x:-.12631932891999986,y:.2522389085648018},{x:-.12672986813499987,y:.25303422195020187},{x:-.12714244239999986,y:.25382878927040187},{x:-.12755705162499986,y:.25462260552500193},{x:-.12797369571999986,y:.25541566571360197},{x:-.12839237459499983,y:.256207964835802},{x:-.12881308815999984,y:.256999497891202},{x:-.12923583632499985,y:.2577902598794021},{x:-.12966061899999984,y:.2585802458000021},{x:-.13008743609499984,y:.25936945065260214},{x:-.13051628751999986,y:.2601578694368022},{x:-.13094717318499982,y:.26094549715220217},{x:-.13138009299999984,y:.26173232879840225},{x:-.13181504687499984,y:.2625183593750023},{x:-.13225203471999986,y:.2633035838816023},{x:-.13269105644499984,y:.26408799731780236},{x:-.13313211195999985,y:.26487159468320237},{x:-.13357520117499982,y:.2656543709774024},{x:-.13402032399999986,y:.26643632120000244},{x:-.13446748034499983,y:.26721744035060246},{x:-.13491667011999983,y:.26799772342880246},{x:-.13536789323499984,y:.2687771654342025},{x:-.13582114959999986,y:.2695557613664026},{x:-.13627643912499987,y:.27033350622500263},{x:-.13673376171999985,y:.27111039500960266},{x:-.13719311729499983,y:.2718864227198026},{x:-.13765450575999985,y:.2726615843552027},{x:-.13811792702499986,y:.2734358749154028},{x:-.1385833809999999,y:.2742092894000028},{x:-.13905086759499988,y:.2749818228086028},{x:-.1395203867199999,y:.2757534701408028},{x:-.1399919382849999,y:.27652422639620283},{x:-.14046552219999991,y:.27729408657440285},{x:-.1409411383749999,y:.2780630456750029},{x:-.1414187867199999,y:.2788310986976029},{x:-.14189846714499993,y:.27959824064180294},{x:-.14238017955999993,y:.2803644665072029},{x:-.1428639238749999,y:.28112977129340294},{x:-.1433496999999999,y:.28189415000000295}],color:"primary",fill:!1},"rect1577-4":{type:"path",points:[{x:.26345180000000035,y:.2455934500000012},{x:.12298460000000011,y:.2455934500000012},{x:.12298460000000011,y:.2505664500000009},{x:.26345180000000035,y:.2505664500000009}],color:"primary",fill:!0},"rect1577-4-7":{type:"path",points:[{x:.19576130000000003,y:.31834525000000014},{x:.19576130000000003,y:.17787805000000034},{x:.1907882999999999,y:.17787805000000034},{x:.1907882999999999,y:.31834525000000014}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.012864499999999612,y:.4200086500000033},bottom1:{type:"text",text:"{VAL}",x:-.003850499999999979,y:-.42000864999999976}},refblocks:{left1:{x:-.5512093,y:.016380250000000984},right1:{x:.5512093,y:.016926950000001995}},bounds:{minX:-.579367741,maxX:.579367741,minY:-.42000864999999976,maxY:.4200086500000033,width:1.158735482,height:.8400173000000031,centerX:0,centerY:17763568394002505e-31},circles:{}},{paths:vXt,texts:xyn,bounds:VO,refblocks:mXe,circles:yXt}=Mue,gXt=Ph({primitives:[...Object.values(vXt),...Object.values(yXt),{type:"text",text:"{REF}",x:-.2,y:.2094553499999995},{type:"text",text:"{VAL}",x:.3,y:.2094553499999995}],ports:[{...mXe.left1,labels:["1"]},{...mXe.right1,labels:["2"]}],size:{width:VO.width,height:VO.height},center:{x:VO.centerX,y:VO.centerY}}).changeTextAnchor("{VAL}","top_left").rotateRightFacingSymbol("down").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","bottom_left").build(),vXe=Ph(Mue).changeTextAnchor("{VAL}","middle_top").rotateRightFacingSymbol("right").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),_Xt=Ph(vXe).changeTextAnchor("{VAL}","middle_top").rotateRightFacingSymbol("left").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_top").build(),{paths:xXt,texts:byn,bounds:HO,refblocks:yXe,circles:bXt}=Mue,SXt=Ph({primitives:[...Object.values(xXt),...Object.values(bXt),{type:"text",text:"{REF}",x:.1,y:-.2094553499999995},{type:"text",text:"{VAL}",x:-.2,y:-.2094553499999995}],ports:[{...yXe.left1,labels:["1"]},{...yXe.right1,labels:["2"]}],size:{width:HO.width,height:HO.height},center:{x:HO.centerX,y:HO.centerY}}).changeTextAnchor("{VAL}","top_left").rotateRightFacingSymbol("up").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","bottom_left").build(),{paths:EXt,texts:Syn,bounds:qO,refblocks:gXe,circles:wXt}=Tue,TXt=Ph({primitives:[...Object.values(EXt),...Object.values(wXt),{type:"text",text:"{REF}",x:.2,y:-.2094553499999995},{type:"text",text:"{VAL}",x:-.2,y:-.2094553499999995}],ports:[{...gXe.left1,labels:["1"]},{...gXe.right1,labels:["2"]}],size:{width:qO.width,height:qO.height},center:{x:qO.centerX,y:qO.centerY}}).changeTextAnchor("{VAL}","top_left").rotateRightFacingSymbol("up").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","bottom_left").build(),_Xe={paths:{path11:{type:"path",points:[{x:-.5274831500000005,y:.02897970000000072},{x:-.30105415000000013,y:.02897970000000072}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2932119499999999,y:.02897970000000072},{x:.5339524499999997,y:.02897970000000072}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.2932119499999999,y:.2923763000000008},{x:.2932119499999999,y:-.23441689999999937}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.021208049999999812,y:.3692298999999999},bottom1:{type:"text",text:"{VAL}",x:-.00661455000000033,y:-.3692298999999999}},refblocks:{left1:{x:-.5413984499999998,y:.028126900000000177},right1:{x:.54139845,y:.029123299999999963}},bounds:{minX:-.5695568909999997,maxX:.569556891,minY:-.3692298999999999,maxY:.3692298999999999,width:1.1391137819999997,height:.7384597999999998,centerX:11102230246251565e-32,centerY:0},circles:{path1:{type:"circle",x:-.0037626500000000895,y:.03610800000000025,radius:.28854213,color:"primary",fill:!1}}},MXt=Ph(_Xe).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),CXt=Ph(_Xe).rotateRightFacingSymbol("down").changeTextAnchor("{VAL}","middle_right").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_left").build(),RXt={paths:{path27:{type:"path",points:[{x:.52188525,y:-.010083950000000286},{x:.1314137500000001,y:-.010083950000000286}],color:"primary",fill:!1},path29:{type:"path",points:[{x:.12501034999999971,y:.25449935000000146},{x:.12501035000000016,y:-.2746672499999985}],color:"primary",fill:!1},"path29-2":{type:"path",points:[{x:.07157854999999946,y:.253778650000001},{x:.07157854999999991,y:-.27538794999999716}],color:"primary",fill:!1},path30:{type:"path",points:[{x:-.13957305000000053,y:.25449935000000146},{x:-.1395730500000001,y:-.2746672499999985}],color:"primary",fill:!1},"path29-5":{type:"path",points:[{x:-.08349325000000052,y:.25541165000000277},{x:-.08349325000000007,y:-.27375494999999894}],color:"primary",fill:!1},"path29-2-7":{type:"path",points:[{x:.07147894999999993,y:.2552525499999998},{x:-.0829032500000002,y:.2552525499999998}],color:"primary",fill:!1},"path29-2-7-6":{type:"path",points:[{x:.07107315000000014,y:-.27817384999999817},{x:-.08330905,y:-.27817384999999817}],color:"primary",fill:!1},path43:{type:"path",points:[{x:-.21327535000000042,y:.31803495000000304},{x:.19712464999999968,y:.31807695}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.003324649999999707,y:.694594949999999},{x:.003324649999999707,y:.3310069500000008},{x:.003324649999999707,y:.3209089500000015}],color:"primary",fill:!1},"path43-8":{type:"path",points:[{x:-.21327535000000042,y:.3180639499999991},{x:-.21327535000000042,y:.2498769499999991}],color:"primary",fill:!1},"path43-8-8":{type:"path",points:[{x:.19712464999999968,y:.31807695},{x:.19712464999999968,y:.24987695000000443}],color:"primary",fill:!1},"path43-9":{type:"path",points:[{x:.19226054999999942,y:-.3468980499999983},{x:-.21813945000000068,y:-.3469400500000006}],color:"primary",fill:!1},"path44-0-5":{type:"path",points:[{x:-.024339450000000262,y:-.7234580499999996},{x:-.024339450000000262,y:-.3598700499999996},{x:-.024339450000000262,y:-.34977205000000033}],color:"primary",fill:!1},"path43-8-1":{type:"path",points:[{x:.19226054999999942,y:-.3469270499999997},{x:.19226054999999942,y:-.2787400499999979}],color:"primary",fill:!1},"path43-8-8-9":{type:"path",points:[{x:-.21813955000000096,y:-.34694015},{x:-.21813955000000096,y:-.27874015000000085}],color:"primary",fill:!1},path28:{type:"path",points:[{x:-.14368304999999992,y:-.010083950000000286},{x:-.5364480500000002,y:-.010083950000000286}],color:"primary",fill:!1}},texts:{left1:{type:"text",text:"{REF}",x:-.38155925000000046,y:.09576035000000083},right1:{type:"text",text:"{VAL}",x:.3369813499999994,y:-.17868404999999754}},refblocks:{top1:{x:.0032092499999998303,y:.7114137500000002},bottom1:{x:-.02355145000000025,y:-.7114137500000002},left1:{x:-.5415391500000004,y:-.00607074999999746},right1:{x:.5415391499999997,y:-.012221549999997805}},bounds:{minX:-.5696975910000004,maxX:.5696975909999997,minY:-.7395721910000002,maxY:.7395721910000002,width:1.1393951820000001,height:1.4791443820000003,centerX:-33306690738754696e-32,centerY:0},circles:{}},xXe=Ph(RXt).labelPort("top1",["2","gnd1"]).labelPort("bottom1",["4","gnd2"]).labelPort("left1",["1"]).labelPort("right1",["3"]).changeTextAnchor("{REF}","bottom_right").changeTextAnchor("{VAL}","top_left").build(),AXt=Ph(xXe).rotateRightFacingSymbol("up").changeTextAnchor("{REF}","top_right").changeTextAnchor("{VAL}","bottom_left").build(),bXe={paths:{path27:{type:"path",points:[{x:.5229378000000002,y:-.012283099999995883},{x:.13246630000000037,y:-.012283099999995883}],color:"primary",fill:!1},path28:{type:"path",points:[{x:-.14263049999999966,y:-.012283099999995883},{x:-.5353954999999999,y:-.012283099999995883}],color:"primary",fill:!1},path29:{type:"path",points:[{x:.12606289999999998,y:-.2768663999999976},{x:.12606290000000042,y:.2523002000000023}],color:"primary",fill:!1},"path29-2":{type:"path",points:[{x:.07263109999999973,y:-.27614569999999716},{x:.07263110000000017,y:.253020900000001}],color:"primary",fill:!1},path30:{type:"path",points:[{x:-.13852050000000027,y:-.2768663999999976},{x:-.13852049999999982,y:.2523002000000023}],color:"primary",fill:!1},"path29-5":{type:"path",points:[{x:-.08244070000000026,y:-.27777869999999893},{x:-.08244069999999981,y:.2513879000000028}],color:"primary",fill:!1},"path29-2-7":{type:"path",points:[{x:.07253150000000019,y:-.27761959999999597},{x:-.08185069999999994,y:-.27761959999999597}],color:"primary",fill:!1},"path29-2-7-6":{type:"path",points:[{x:.0721257000000004,y:.255806800000002},{x:-.08225649999999973,y:.255806800000002}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.012864500000000056,y:-.4150086999999978},bottom1:{type:"text",text:"{VAL}",x:-.003850500000000423,y:.4250087000000011}},refblocks:{left1:{x:-.5512093000000002,y:-.011380399999998403},right1:{x:.5512093,y:-.011926899999997076}},bounds:{minX:-.5793677410000002,maxX:.579367741,minY:-.5150086999999978,maxY:.4250087000000011,width:1.1587354820000002,height:1,centerX:-11102230246251565e-32,centerY:-.04499999999999832},circles:{}},PXt=Ph(bXe).changeTextAnchor("{VAL}","middle_bottom").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_top").build(),DXt=Ph(bXe).rotateRightFacingSymbol("down").changeTextAnchor("{VAL}","middle_left").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_right").build(),Cue={paths:{path11:{type:"path",points:[{x:1.9942486145,y:-1.6422072295000003},{x:2.0984258145,y:-1.6428272295000004}],color:"primary",fill:!1},"path40-0":{type:"path",points:[{x:2.1030704145000003,y:-1.4809259295000001},{x:2.1026604145,y:-1.8041042295}],color:"primary",fill:!1},"path40-0-5":{type:"path",points:[{x:2.2218770145,y:-1.4969414295},{x:2.1063461145,y:-1.5757354295000003}],color:"primary",fill:!1},"path40-0-5-0":{type:"path",points:[{x:2.2286252145,y:-1.7819395295000002},{x:2.1136540145000002,y:-1.7033263295}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:2.2273251145,y:-1.4948802295},{x:2.2284101145,y:-1.1518438295000002}],color:"primary",fill:!1},"path12-1-5-3":{type:"path",points:[{x:2.2276017145,y:-1.9567437295},{x:2.2281317145,y:-1.7888340295000003}],color:"primary",fill:!1},"arrow-2":{type:"path",points:[{x:2.1704797145,y:-1.6991380295000003},{x:2.1275815145,y:-1.7604028295000003},{x:2.1917009144999997,y:-1.7601828295000004}],color:"primary",fill:!1},path1:{type:"path",points:[{x:1.5978828145000001,y:-1.5020091295000002},{x:1.8597023145000002,y:-1.5035561295000002}],color:"primary",fill:!1},path2:{type:"path",points:[{x:1.8686937145000002,y:-1.3411936295000002},{x:1.8682837145,y:-1.6643719295000001}],color:"primary",fill:!1},path3:{type:"path",points:[{x:1.9875004145000004,y:-1.3572092295000002},{x:1.8719693145,y:-1.4360031295000002}],color:"primary",fill:!1},path4:{type:"path",points:[{x:1.9942486145,y:-1.6422072295000003},{x:1.8792773145000001,y:-1.5635940295000004}],color:"primary",fill:!1},"arrow-1":{type:"path",points:[{x:1.9361028144999999,y:-1.5594057295000003},{x:1.8932048145,y:-1.6206705295000003},{x:1.9573242144999998,y:-1.6204505295000005}],color:"primary",fill:!1},path9:{type:"path",points:[{x:1.9943087144999998,y:-1.3539494295000003},{x:2.2269582145,y:-1.3556534295000002}],color:"primary",fill:!1}},texts:{bottom1:{type:"text",text:"{VAL}",x:1.8805772145,y:-1.9423669295000003},right1:{type:"text",text:"{REF}",x:1.8845380145,y:-1.1387692295000003}},refblocks:{right1:{x:2.2278617145000004,y:-1.9651412295000004},right2:{x:1.5977076145000002,y:-1.5027827295000002},right3:{x:2.2278680145,y:-1.1403971295000002}},bounds:{minX:1.5810976555000003,maxX:2.3461148445,minY:-1.9817511885000003,maxY:-1.1237871705000002,width:.7650171889999999,height:.8579640180000001,centerX:1.9636062500000002,centerY:-1.5527691795000003},circles:{"path1-0":{type:"circle",x:2.0463372145000003,y:-1.5363384295000002,radius:.29977763,color:"primary",fill:!1}}},NXt=Ph(Cue).changeTextAnchor("{VAL}","middle_top").labelPort("right2",["1"]).labelPort("right3",["2"]).labelPort("right1",["3"]).changeTextAnchor("{REF}","middle_bottom").build();Cue.bounds.width+=.3;var LXt=Ph(Cue).rotateRightFacingSymbol("down").changeTextAnchor("{VAL}","middle_right").labelPort("right2",["1"]).labelPort("right3",["2"]).labelPort("right1",["3"]).changeTextAnchor("{REF}","middle_left").build(),zXt={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1},path2:{type:"path",points:[{x:-.12447409999999959,y:.0852510999999998},{x:.11626639999999999,y:.0852510999999998}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.4472267999999995},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.3470985000000004},left1:{type:"text",text:"A",x:0,y:-.1}},refblocks:{left1:{x:-.5446330999999993,y:0},right1:{x:.5381638000000004,y:0}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:-.08525110000000002,maxY:.0852510999999998,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:-11102230246251565e-32},circles:{path1:{type:"circle",x:0,y:0,radius:.28854213,color:"primary",fill:!1}}},{paths:OXt,texts:UXt,bounds:$O,refblocks:SXe,circles:kXt}=zXt,Rue=ym({primitives:[...Object.values(OXt),...Object.values(kXt),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"},{...UXt.left1,x:0,y:.01,anchor:"center",fontSize:.3}],ports:[{...SXe.left1,labels:["1"]},{...SXe.right1,labels:["2"]}],size:{width:$O.width,height:$O.height},center:{x:$O.centerX,y:$O.centerY}});function FXt(r){return typeof r=="object"&&r!==null&&r.type==="path"&&Array.isArray(r.points)&&typeof r.color=="string"}function IXt(r){return typeof r=="object"&&r!==null&&r.type==="text"&&typeof r.text=="string"&&typeof r.x=="number"&&typeof r.y=="number"&&typeof r.anchor=="string"}var{6:Aue,2:Pue,...BXt}=Rue.primitives;FXt(Pue)&&Pue.points.map(r=>{r.y+=.05}),IXt(Aue)&&(Aue.y+=.025);function jXt(r){return typeof r=="object"}var EXe=_0({...Rue,primitives:Object.values(BXt).filter(jXt)}),VXt={...EXe,primitives:[...EXe.primitives,Aue,Pue]},HXt={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1},"path11-5-5":{type:"path",points:[{x:.09442299999999992,y:-.13438304999999984},{x:-.004364400000000712,y:.05710404999999996},{x:-.1110211000000012,y:-.13438304999999984}],color:"primary",fill:!1},path2:{type:"path",points:[{x:-.12447409999999959,y:.13438304999999984},{x:.11626639999999999,y:.13438304999999984}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.39809484999999944},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.39623045000000046}},refblocks:{left1:{x:-.5446330999999993,y:0},right1:{x:.5381638000000004,y:0}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:-.13438304999999984,maxY:.13438304999999984,width:1.0614356000000003,height:1,centerX:0,centerY:0},circles:{path1:{type:"circle",x:0,y:0,radius:.28854213,color:"primary",fill:!1}}},{paths:qXt,texts:Eyn,bounds:GO,refblocks:wXe,circles:$Xt}=HXt,Due=ym({primitives:[...Object.values(qXt),...Object.values($Xt),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"}],ports:[{...wXe.left1,labels:["1"]},{...wXe.right1,labels:["2"]}],size:{width:GO.width,height:GO.height},center:{x:GO.centerX,y:GO.centerY}}),{2:GXt,3:YXt,...XXt}=Due.primitives;function WXt(r){return typeof r=="object"}var TXe=_0({...Due,primitives:Object.values(XXt).filter(WXt)}),ZXt={...TXe,primitives:[...TXe.primitives,GXt,YXt]},QXt={paths:{path11:{type:"path",points:[{x:-.5176700499999997,y:.041745050000000505},{x:-.10888805000000024,y:.041745050000000505}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.1031184499999993,y:.041745050000000505},{x:.5246894499999994,y:.041745050000000505}],color:"primary",fill:!1},"path11-0":{type:"path",points:[{x:-.09343985000000021,y:-.14620634999999882},{x:-.0930998500000002,y:.2583405500000009}],color:"primary",fill:!1},"path11-0-3":{type:"path",points:[{x:.08519034999999908,y:-.14503384999999902},{x:.08553034999999909,y:.2595130500000007}],color:"primary",fill:!1},"path11-0-9":{type:"path",points:[{x:-.08315755000000014,y:.055934450000000524},{x:-.08415755000000047,y:-.14678124999999964},{x:.08653524999999984,y:-.05104664999999953},{x:-.08126175000000035,y:.05647715000000031}],color:"primary",fill:!0},"path11-0-9-0":{type:"path",points:[{x:.07661224999999927,y:.256654450000001},{x:.07761224999999983,y:.05393885000000109},{x:-.0930805500000007,y:.1496734500000012},{x:.07471644999999949,y:.25719715000000143}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.0316381500000007,y:.41683614999999996},bottom1:{type:"text",text:"{VAL}",x:-.03022294999999975,y:-.41683614999999996}},refblocks:{left1:{x:-.54139845,y:.04089205000000051},right1:{x:.5413984499999995,y:.04188845000000008}},bounds:{minX:-.569556891,maxX:.5695568909999995,minY:-.41683614999999996,maxY:.41683614999999996,width:1.1391137819999995,height:.8336722999999999,centerX:-2220446049250313e-31,centerY:0},circles:{path1:{type:"circle",x:-.0037626500000003116,y:.048873150000000365,radius:.28854213,color:"primary",fill:!1}}},MXe=Ph(QXt).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),CXe=_0(MXe),RXe=CXe.primitives.filter(r=>r.type==="text"),KXt=RXe.find(r=>r.text==="{REF}"),JXt=RXe.find(r=>r.text==="{VAL}");KXt.y=0,JXt.y=0;var eWt=CXe,tWt={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.04403629999999836},{x:-.1199943999999995,y:-.08825540000000132}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1199943999999995,y:.1763280000000016},{x:.14458890000000002,y:.04403629999999836}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1199943999999995,y:-.08825539999999776},{x:-.1199943999999995,y:.1763280000000016}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.14458890000000002,y:.1763280000000016},{x:.14458890000000002,y:-.08825539999999776}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.12219909999999956,y:.04403629999999836},{x:-.5168693999999996,y:.04403629999999836}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5233797,y:.04395110000000102},{x:.14967160000000002,y:.04395110000000102}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999996715,y:.27384529999999785},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999999524,y:-.2738453000000014}},refblocks:{left1:{x:-.5191471000000001,y:.0449206999999987},right1:{x:.5191471000000001,y:.043896100000001326}},bounds:{minX:-.5473055410000001,maxX:.5473055410000001,minY:-.2738453000000014,maxY:.27384529999999785,width:1.0946110820000001,height:.5476905999999993,centerX:0,centerY:-17763568394002505e-31},circles:{}},YO=Ph(tWt).labelPort("left1",["1","pos"]).labelPort("right1",["2","neg"]).changeTextAnchor("{REF}","middle_bottom").changeTextAnchor("{VAL}","middle_top").build(),nWt=_0(YO,"down"),rWt=_0(YO,"left"),iWt=_0(YO,"up"),aWt={paths:{path1:{type:"path",points:[{x:-.3543580999999998,y:.22373490000000018},{x:-.1279290999999998,y:.22373490000000018}],color:"primary",fill:!1},"path-1-3":{type:"path",points:[{x:-.11341659999999987,y:.2240546000000001},{x:.1031012,y:.354}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.10434800000000011,y:.127178},{x:.345089,y:.127178}],color:"primary",fill:!1},path3:{type:"path",points:[{x:.12008600000000014,y:.36383770000000015},{x:.360827,y:.36383770000000015}],color:"primary",fill:!1},path4:{type:"path",points:[{x:-.3543580999999998,y:-.17811849999999985},{x:-.1279290999999998,y:-.17811849999999985}],color:"primary",fill:!1},"path4-6":{type:"path",points:[{x:-.11341659999999987,y:-.1777987999999997},{x:.1031012,y:-.04780299999999982}],color:"primary",fill:!1},path5:{type:"path",points:[{x:.10434800000000011,y:-.2746754},{x:.345089,y:-.2746754}],color:"primary",fill:!1},path6:{type:"path",points:[{x:.12008600000000014,y:-.038015699999999875},{x:.360827,y:-.038015699999999875}],color:"primary",fill:!1},"path1-4-join":{type:"path",points:[{x:-.020896399999999815,y:-.10273049999999984},{x:-.025476399999999844,y:.2768100000000002}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0862317999999998,y:.46447740000000026},bottom1:{type:"text",text:"{VAL}",x:-.0862317999999998,y:-.4244773999999998}},refblocks:{top1:{x:-.11569089999999993,y:.22373490000000018},top2:{x:.10744680000000018,y:.36383770000000015},top3:{x:.10744750000000014,y:.12717810000000007},bottom1:{x:-.11569089999999993,y:-.17811849999999985},bottom2:{x:.10744750000000014,y:-.2746754},left1:{x:-.3682734999999999,y:.22373490000000018},left2:{x:-.3682734999999999,y:-.17811849999999985},right1:{x:.36827350000000014,y:.36383770000000015},right2:{x:.36827350000000014,y:.12717810000000007},right3:{x:.36827350000000014,y:-.038015699999999875},right4:{x:.10744680000000018,y:-.038015699999999875},right5:{x:.36827350000000014,y:-.2746754}},bounds:{minX:-.3964319409999999,maxX:.3964319410000001,minY:-.4744773999999998,maxY:.5644774000000002,width:1,height:1.0389548,centerX:-11102230246251565e-32,centerY:.045000000000000207},circles:{}},{paths:oWt,texts:AXe,bounds:XO,refblocks:gw,circles:sWt}=aWt,PXe=ym({primitives:[...Object.values(oWt),...Object.values(sWt),{...AXe.top1,anchor:"middle_bottom"},{...AXe.bottom1,anchor:"middle_top"}],ports:[{...gw.left1,labels:["1"]},{...gw.left2,labels:["4"]},{...gw.right1,labels:["3"]},{...gw.right2,labels:["2"]},{...gw.right3,labels:["6"]},{...gw.right5,labels:["5"]}],size:{width:XO.width,height:XO.height},center:{x:XO.centerX,y:XO.centerY}}),DXe=_0(PXe),NXe=DXe.primitives.filter(r=>r.type==="text"),Nue=NXe.find(r=>r.text==="{VAL}");Nue.anchor="middle_right",Nue.x=-.37,Nue.y=.12;var Lue=NXe.find(r=>r.text==="{REF}");Lue.anchor="middle_left",Lue.x=.37,Lue.y=.12;var lWt=DXe,LXe={paths:{path11:{type:"path",points:[{x:-.3622268000000006,y:.06287995000000057},{x:-.1357978000000004,y:.06287995000000057}],color:"primary",fill:!1},"path11-0":{type:"path",points:[{x:-.12009950000000069,y:.061349450000000916},{x:.10307889999999986,y:.2010388500000011}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.12795640000000064,y:.06287995000000057},{x:.36869780000000096,y:.06287995000000057}],color:"primary",fill:!1},"path11-5":{type:"path",points:[{x:-.3622270999999999,y:-.16866424999999907},{x:-.1357980999999997,y:-.16866424999999907}],color:"primary",fill:!1},"path11-0-3":{type:"path",points:[{x:-.12009979999999998,y:-.17019474999999962},{x:.10307860000000058,y:-.03050534999999921}],color:"primary",fill:!1},"path12-0":{type:"path",points:[{x:.12795610000000002,y:-.16866424999999907},{x:.3686968000000006,y:-.16866424999999907}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.1958158999999995,y:.39716265000000006},bottom1:{type:"text",text:"{VAL}",x:-.029144200000000398,y:-.39716264999999984}},refblocks:{bottom1:{x:-.12356020000000001,y:-.17345394999999963},bottom2:{x:.1153169000000005,y:-.17345394999999963},left1:{x:-.37614279999999956,y:-.16951715000000012},left2:{x:-.12356020000000001,y:.05809054999999996},left3:{x:-.37614279999999956,y:.06202735000000037},right1:{x:.37614279999999933,y:-.16852074999999966},right2:{x:.1153169000000005,y:.05809054999999996},right3:{x:.37614279999999933,y:.06302374999999993}},bounds:{minX:-.40430124099999953,maxX:.4043012409999993,minY:-.39716264999999984,maxY:.39716265000000006,width:.8086024819999988,height:.7943252999999999,centerX:-11102230246251565e-32,centerY:11102230246251565e-32},circles:{}};LXe.bounds.width+=.2;var{paths:cWt,texts:zXe,bounds:WO,refblocks:ZO,circles:uWt}=LXe,OXe=ym({primitives:[...Object.values(cWt),...Object.values(uWt),{...zXe.top1,anchor:"middle_bottom",x:0},{...zXe.bottom1,anchor:"middle_top",x:0}],ports:[{...ZO.left1,labels:["1","left1"]},{...ZO.left3,labels:["3","left3"]},{...ZO.right1,labels:["2","right1"]},{...ZO.right3,labels:["4","right3"]}],size:{width:WO.width,height:WO.height},center:{x:WO.centerX,y:WO.centerY}}),UXe=_0(OXe),kXe=UXe.primitives.filter(r=>r.type==="text"),zue=kXe.find(r=>r.text==="{VAL}");zue.anchor="middle_right",zue.x=-.35,zue.y=0;var Oue=kXe.find(r=>r.text==="{REF}");Oue.anchor="middle_left",Oue.x=.3,Oue.y=0;var fWt=UXe,dWt={paths:{path11:{type:"path",points:[{x:-.541495829500001,y:.044368009536419395},{x:-.21998262950000114,y:.044368009536419395}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.14450697049999905,y:.052237309536419474},{x:.46379767049999976,y:.052237309536419474}],color:"primary",fill:!1},"path12-6":{type:"path",points:[{x:.13965347050000032,y:-.14937819046358025},{x:.13854747050000027,y:.2538388095364199}],color:"primary",fill:!1},"path11-0-9":{type:"path",points:[{x:-.212703829500001,y:.2732984095364195},{x:-.2147708295000006,y:-.1493854904635803},{x:.13782137049999887,y:.050231709536419755},{x:-.2087893295000005,y:.27442980953642016}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.08906882950000083,y:.38011220953641867},bottom1:{type:"text",text:"{VAL}",x:-.0685314901614209,y:-.38011220953641844},right1:{type:"text",text:"",x:.5884896704999998,y:-.3288545904635811}},refblocks:{left1:{x:-.5603312294999999,y:.04351520953641885},right1:{x:.47524967049999955,y:.05238090953641872}},bounds:{minX:-.5884896704999999,maxX:.5884896704999998,minY:-.38011220953641844,maxY:.38011220953641867,width:1.1769793409999996,height:.7602244190728371,centerX:-5551115123125783e-32,centerY:11102230246251565e-32},circles:{}},FXe=Ph(dWt).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),pWt=_0(FXe),hWt={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.36197569999999946},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.43234960000000044},left1:{type:"text",text:"Hz",x:0,y:-.035}},refblocks:{left1:{x:-.5446330999999993,y:.000852800000000542},right1:{x:.5381638000000004,y:-.00014359999999924433}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:0,maxY:0,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:0},circles:{path1:{type:"circle",x:-.006997299999999651,y:-.007128299999999532,radius:.28854213,color:"primary",fill:!1}}},{paths:mWt,texts:vWt,bounds:QO,refblocks:IXe,circles:yWt}=hWt,Uue=ym({primitives:[...Object.values(mWt),...Object.values(yWt),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"},{...vWt.left1,x:0,y:.01,anchor:"center",fontSize:.2}],ports:[{...IXe.left1,labels:["1"]},{...IXe.right1,labels:["2"]}],size:{width:QO.width,height:QO.height},center:{x:QO.centerX,y:QO.centerY}}),{5:gWt,..._Wt}=Uue.primitives;function xWt(r){return typeof r=="object"}var BXe=_0({...Uue,primitives:Object.values(_Wt).filter(xWt)}),bWt={...BXe,primitives:[...BXe.primitives,gWt]},SWt={paths:{path10:{type:"path",points:[{x:-.5283037500000001,y:.036413650000000075},{x:.5300302500000003,y:.036413650000000075}],color:"primary",fill:!1},path14:{type:"path",points:[{x:.0008652499999994845,y:.16870534999999975},{x:.2654482499999995,y:.16870534999999975},{x:.2654482499999995,y:-.0958780499999996},{x:-.2637187499999998,y:-.0958780499999996},{x:-.2637187499999998,y:.16870534999999975},{x:.0008652499999994845,y:.16870534999999975}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.008263949999999909,y:.23591724999999997},bottom1:{type:"text",text:"{VAL}",x:-.1716539500000005,y:-.23591724999999997}},refblocks:{left1:{x:-.5345548500000001,y:.03946054999999937},right1:{x:.5345548500000001,y:.0352561499999986}},bounds:{minX:-.5627132910000001,maxX:.5627132910000001,minY:-.23591724999999997,maxY:.23591724999999997,width:1.1254265820000002,height:.47183449999999993,centerX:0,centerY:0},circles:{}},{paths:EWt,texts:wWt,bounds:KO,refblocks:jXe}=SWt,VXe=ym({primitives:[...Object.values(EWt),{...wWt.top1,anchor:"middle_bottom"},{type:"text",text:"{VAL}",x:0,y:-.2,anchor:"middle_top"}],ports:[{...jXe.left1,labels:["1"]},{...jXe.right1,labels:["2"]}],size:{width:KO.width,height:KO.height},center:{x:KO.centerX,y:KO.centerY}}),TWt=_0(VXe),MWt={paths:{path1:{type:"path",points:[{x:-.33997010000000016,y:.4545300000000001},{x:-.03997010000000012,y:.4545300000000001}],color:"primary",fill:!1},path2:{type:"path",points:[{x:-.02032289999999981,y:.25053000000000014},{x:-.020322900000000033,y:.65053}],color:"primary",fill:!1},path3:{type:"path",points:[{x:.050000000000000044,y:.3005300000000002},{x:.050000000000000044,y:.60053}],color:"primary",fill:!1},path4:{type:"path",points:[{x:.1499999999999997,y:.40053000000000005},{x:.1499999999999997,y:.5005300000000001}],color:"primary",fill:!1}},texts:{bottom1:{type:"text",text:"{REF}",x:-.44999999999999996,y:-.6505299999999998},right1:{type:"text",text:"{VAL}",x:.44999999999999973,y:.35053}},refblocks:{top1:{x:-.33997010000000016,y:.4545300000000001},top2:{x:.17000000000000015,y:.4535300000000002}},bounds:{minX:-.44999999999999996,maxX:.44999999999999973,minY:-.6505299999999998,maxY:.65053,width:.8999999999999997,height:1.3010599999999999,centerX:-11102230246251565e-32,centerY:11102230246251565e-32},circles:{}},{paths:CWt,circles:RWt,bounds:wyn,refblocks:AWt}=MWt,PWt=ym({primitives:[...Object.values(CWt),...Object.values(RWt),{type:"text",text:"{REF}",x:-.1,y:.8,anchor:"middle_bottom"},{type:"text",text:"{VAL}",x:-.1,y:.1,anchor:"middle_top"}],ports:[{...AWt.top1,labels:["1"]}],size:{width:1,height:1},center:{x:0,y:.4}}),HXe=PWt,DWt=Ph(HXe).rotateRightFacingSymbol("down").build(),qXe={paths:{path11:{type:"path",points:[{x:-.49895505000000084,y:.035186950000000605},{x:-.177441850000001,y:.035186950000000605}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.18704774999999918,y:.043056250000000684},{x:.5063384499999999,y:.043056250000000684}],color:"primary",fill:!1},"path11-0-9":{type:"path",points:[{x:-.3067105499999998,y:.19836805000000046},{x:-.3084575500000002,y:-.10569684999999973},{x:-.01040014999999972,y:.03790115000000038},{x:-.3034011499999991,y:.1991819500000005}],color:"primary",fill:!0},"path11-0-9-5":{type:"path",points:[{x:.3324594500000002,y:.19920585000000046},{x:.33420945000000013,y:-.10485904999999973},{x:.03615254999999973,y:.03873895000000038},{x:.32915344999999974,y:.2000197500000005}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:.042716749999999415,y:.3158462499999999},bottom1:{type:"text",text:"{VAL}",x:.035355149999999336,y:-.3158462499999999}},refblocks:{left1:{x:-.5177904499999998,y:.03433415000000006},right1:{x:.5177904499999997,y:.04319984999999993}},bounds:{minX:-.5459488909999998,maxX:.5459488909999997,minY:-.3158462499999999,maxY:.3158462499999999,width:1.0918977819999993,height:.6316924999999998,centerX:-5551115123125783e-32,centerY:0},circles:{}},NWt=Ph(qXe).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),LWt=Ph(qXe).rotateRightFacingSymbol("down").changeTextAnchor("{VAL}","middle_right").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_left").build(),zWt={paths:{path11:{type:"path",points:[{x:-.3850944445000005,y:.0010025000000009054},{x:-.006525044499999799,y:-.0016204999999989145}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.07415065550000066,y:.19027400000000116},{x:.07322065550000101,y:-.17787549999999852}],color:"primary",fill:!1},path42:{type:"path",points:[{x:.01002445549999953,y:-.12022799999999911},{x:.01002445549999953,y:.1443554000000009}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.28374995550000004,y:-.2462579999999992},{x:.2831499554999999,y:-.5425888999999995}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.28423665550000043,y:.5370061000000012},{x:.2836366555000003,y:.2678117000000011}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.1731829554999995,y:-.2153930999999989},{x:.2780310554999992,y:-.23045039999999894},{x:.2324710554999987,y:-.14155709999999888}],color:"primary",fill:!0},path17:{type:"path",points:[{x:.07704605550000054,y:-.08544359999999895},{x:.2325688555000005,y:-.19774119999999895}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.07425025549999931,y:.11255990000000127},{x:.28369465549999884,y:.2606293000000013}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.006566644499999885,y:.35624680000000075},bottom1:{type:"text",text:"{VAL}",x:.020614555499999687,y:-.4202180999999998}},refblocks:{top1:{x:.2843894554999997,y:.5566011000000001},bottom1:{x:.2823318555000005,y:-.5566010999999997},left1:{x:-.3990097444999998,y:.00014970000000036343}},bounds:{minX:-.4271681854999998,maxX:.42716818549999985,minY:-.5847595409999997,maxY:.584759541,width:.8543363709999996,height:1.1695190819999999,centerX:27755575615628914e-33,centerY:16653345369377348e-32},circles:{path1:{type:"circle",x:.13862605549999985,y:.008130800000000438,radius:.28854213,color:"primary",fill:!1}}},$Xe=Ph(zWt).changeTextAnchor("{VAL}","middle_right").labelPort("left1",["3"]).labelPort("top1",["2"]).labelPort("bottom1",["1"]).changeTextAnchor("{REF}","middle_right").build(),kue=_0($Xe),Fue=kue.primitives.find(r=>r.type==="text"&&r.text==="{REF}"),GXe=kue.primitives.find(r=>r.type==="text"&&r.text==="{VAL}");Fue.anchor="middle_left",GXe.anchor="middle_right",Fue.x=.45,Fue.y+=.065,GXe.y+=.065;var OWt=kue,UWt={paths:{"path12-1-8-6-9":{type:"path",points:[{x:.023137150000000162,y:-.022408499999999165},{x:.023137150000000162,y:-.10240850000000101}],color:"primary",fill:!1},"path12-1-5-6":{type:"path",points:[{x:-.48740694999999956,y:-.18547949999999958},{x:-.1731006500000003,y:-.18547949999999958}],color:"primary",fill:!1},"path12-1-5-6-8":{type:"path",points:[{x:.023792949999999813,y:.17183650000000128},{x:.023792949999999813,y:.10518850000000057}],color:"primary",fill:!1},"path12-1-8-0":{type:"path",points:[{x:-.14922445000000018,y:-.032671500000001075},{x:.19549865000000022,y:-.18509050000000116}],color:"primary",fill:!1},"path12-1-0":{type:"path",points:[{x:.19549885000000078,y:-.18509050000000116},{x:.4881437499999999,y:-.18509050000000116}],color:"primary",fill:!1},"path12-1-8-6-9-4":{type:"path",points:[{x:.023137150000000162,y:.11939749999999982},{x:.023137150000000162,y:.017597499999999044}],color:"primary",fill:!1},"path12-1-8-6-9-4-3":{type:"path",points:[{x:.08312335000000015,y:.10724749999999972},{x:.08312335000000015,y:.050463500000001105}],color:"primary",fill:!1},"path12-1-8-6-9-4-3-1":{type:"path",points:[{x:-.03684904999999983,y:.10724749999999972},{x:-.03684904999999983,y:.050463500000001105}],color:"primary",fill:!1},"path12-1-8-6-9-4-4":{type:"path",points:[{x:.08312335000000015,y:.10724749999999972},{x:-.03684904999999983,y:.10724749999999972}],color:"primary",fill:!1},"path14-5":{type:"path",points:[{x:-.011640198644880861,y:.2824489119921765},{x:.01182744133211866,y:.25421423950368016},{x:.035295081309120846,y:.22597956701517674},{x:.05876272128612037,y:.19774489452667865}],color:"primary",fill:!0},"path14-5-3":{type:"path",points:[{x:-.011818241440559873,y:.19775449269853418},{x:.01171692178543804,y:.22592735480803405},{x:.03525208501144128,y:.25410021691753926},{x:.058787248237439194,y:.2822730790270338}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:.010987250000000337,y:.3808714999999978},bottom1:{type:"text",text:"{VAL}",x:.05578094999999994,y:-.3808714999999996}},refblocks:{left1:{x:-.4717985499999999,y:-.1854504999999982},right1:{x:.4717985499999999,y:-.18547650000000182}},bounds:{minX:-.4999569909999999,maxX:.4999569909999999,minY:-.3808714999999996,maxY:.3808714999999978,width:.9999139819999998,height:.7617429999999974,centerX:0,centerY:-8881784197001252e-31},circles:{path9:{type:"circle",x:.02379285000000042,y:.24000550000000054,radius:.059920847,color:"primary",fill:!1}}},YXe=Ph(UWt).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),XXe=_0(YXe),WXe=XXe.primitives.filter(r=>r.type==="text"),Iue=WXe.find(r=>r.text==="{VAL}");Iue.x=-.35,Iue.y=0,Iue.anchor="middle_right";var Bue=WXe.find(r=>r.text==="{REF}");Bue.y=0,Bue.x=.35,Bue.anchor="middle_left";var kWt=XXe,FWt={paths:{path8698:{type:"path",points:[{x:-.20003504999999944,y:-.023826854587889912},{x:-.20252458999999945,y:-.018993393814014044},{x:-.20501412999999943,y:-.014174384106555204},{x:-.2075036699999995,y:-.009384187436300498},{x:-.20999320999999949,y:-.004636988132081332},{x:-.2124827499999995,y:5329457033053167e-20},{x:-.2149722899999995,y:.004673092344940186},{x:-.2174618299999995,y:.009209271428771242},{x:-.21995136999999956,y:.013649213595881985},{x:-.22244090999999955,y:.01798089395292432},{x:-.22493044999999956,y:.022192955076609913},{x:-.22741998999999957,y:.02627477703600152},{x:-.22990952999999958,y:.030216542867918667},{x:-.2323990699999996,y:.03400929910178016},{x:-.2348886099999996,y:.03764501096072756},{x:-.23737814999999962,y:.04111661189869628},{x:-.23986768999999963,y:.04441804716802203},{x:-.24235722999999965,y:.04754431114897349},{x:-.24484676999999966,y:.05049147821106258},{x:-.24733630999999967,y:.053256726915861724},{x:-.24982584999999968,y:.05583835741211009},{x:-.2523153899999997,y:.05823580191586174},{x:-.2548049299999997,y:.060449628211062575},{x:-.2572944699999997,y:.0624815361489735},{x:-.25978400999999973,y:.06433434716802203},{x:-.26227354999999974,y:.06601198689869628},{x:-.26476308999999976,y:.06751946096072757},{x:-.26725262999999977,y:.06886282410178016},{x:-.2697421699999998,y:.07004914286791866},{x:-.2722317099999998,y:.0710864520360015},{x:-.2747212499999998,y:.07198370507660991},{x:-.2772107899999998,y:.07275071895292433},{x:-.27970032999999983,y:.07339811359588198},{x:-.28218986999999984,y:.07393724642877124},{x:-.28467940999999986,y:.07438014234494018},{x:-.28716894999999987,y:.07473941957033053},{x:-.2896584899999999,y:.07502821186791866},{x:-.2921480299999999,y:.07526008756369952},{x:-.2946375699999999,y:.07544896589344477},{x:-.2971271099999999,y:.07560903118598594},{x:-.29961664999999993,y:.07575464541211008},{x:-.3021061874999999,y:.07560903118598594},{x:-.30459572499999993,y:.07544896589344477},{x:-.3070852624999999,y:.07526008756369951},{x:-.30957479999999993,y:.07502821186791866},{x:-.31206433749999984,y:.07473941957033052},{x:-.3145538749999998,y:.07438014234494018},{x:-.31704341249999984,y:.07393724642877124},{x:-.31953294999999987,y:.07339811359588198},{x:-.32202248749999984,y:.07275071895292431},{x:-.3245120249999998,y:.07198370507660991},{x:-.3270015624999998,y:.0710864520360015},{x:-.32949109999999976,y:.07004914286791866},{x:-.33198063749999984,y:.06886282410178016},{x:-.33447017499999976,y:.06751946096072757},{x:-.3369597124999998,y:.06601198689869628},{x:-.33944924999999976,y:.06433434716802203},{x:-.34193878749999973,y:.06248153614897349},{x:-.34442832499999976,y:.06044962821106258},{x:-.3469178624999997,y:.05823580191586174},{x:-.3494073999999997,y:.05583835741211009},{x:-.35189693749999973,y:.053256726915861724},{x:-.35438647499999965,y:.050491478211062576},{x:-.3568760124999997,y:.0475443111489735},{x:-.35936554999999964,y:.04441804716802203},{x:-.3618550874999996,y:.04111661189869628},{x:-.36434462499999964,y:.03764501096072756},{x:-.36683416249999967,y:.03400929910178016},{x:-.3693236999999996,y:.030216542867918673},{x:-.3718132374999996,y:.02627477703600152},{x:-.3743027749999996,y:.022192955076609917},{x:-.37679231249999956,y:.017980893952924324},{x:-.3792818499999996,y:.013649213595881985},{x:-.3817713874999995,y:.00920927142877125},{x:-.38426092499999953,y:.004673092344940191},{x:-.38675046249999956,y:5329457033053514e-20},{x:-.38923999999999953,y:-.004636988132081328},{x:-.39172953749999956,y:-.009384187436300498},{x:-.3942190749999995,y:-.014174384106555197},{x:-.3967086124999995,y:-.01899339381401404},{x:-.3991981499999995,y:-.023826854587889912}],color:"primary",fill:!1},path8700:{type:"path",points:[{x:-.000872049999999458,y:-.02382615458789039},{x:-.0033615874999994412,y:-.01899269131401453},{x:-.0058511249999994245,y:-.014173679106555696},{x:-.008340662499999407,y:-.009383479936300985},{x:-.010830199999999391,y:-.004636278132081827},{x:-.013319737499999373,y:5400707033003174e-20},{x:-.015809274999999356,y:.004673807344939683},{x:-.018298812499999338,y:.009209988928770731},{x:-.020788349999999324,y:.013649933595881476},{x:-.023277887499999306,y:.017981616452923805},{x:-.02576742499999929,y:.022193680076609393},{x:-.02825696249999927,y:.026275504536001},{x:-.030746499999999254,y:.030217272867918137},{x:-.03323603749999924,y:.034010031601779636},{x:-.03572557499999922,y:.03764574596072702},{x:-.038215112499999204,y:.04111734939869574},{x:-.04070464999999919,y:.04441878716802149},{x:-.04319418749999917,y:.04754505364897295},{x:-.045683724999999155,y:.05049222321106203},{x:-.048173262499999134,y:.05325747441586117},{x:-.05066279999999912,y:.055839107412109526},{x:-.053152337499999106,y:.05823655441586117},{x:-.055641874999999084,y:.06045038321106201},{x:-.05813141249999907,y:.06248229364897292},{x:-.06062094999999905,y:.06433510716802145},{x:-.06311048749999904,y:.0660127493986957},{x:-.06560002499999902,y:.06752022596072697},{x:-.068089562499999,y:.06886359160177957},{x:-.07057909999999898,y:.07004991286791806},{x:-.07306863749999896,y:.07108722453600091},{x:-.07555817499999895,y:.0719844800766093},{x:-.07804771249999894,y:.07275149645292371},{x:-.08053724999999892,y:.07339889359588138},{x:-.0830267874999989,y:.07393802892877062},{x:-.08551632499999888,y:.07438092734493956},{x:-.08800586249999887,y:.07474020707032991},{x:-.09049539999999885,y:.07502900186791804},{x:-.09298493749999884,y:.07526088006369888},{x:-.09547447499999881,y:.07544976089344414},{x:-.0979640124999988,y:.0756098286859853},{x:-.10045354999999878,y:.07575544541210943},{x:-.1029430899999988,y:.0756098286859853},{x:-.1054326299999988,y:.07544976089344414},{x:-.10792216999999882,y:.07526088006369887},{x:-.11041170999999883,y:.07502900186791804},{x:-.11290124999999884,y:.0747402070703299},{x:-.11539078999999886,y:.07438092734493956},{x:-.11788032999999885,y:.07393802892877062},{x:-.1203698699999989,y:.07339889359588138},{x:-.12285940999999889,y:.07275149645292371},{x:-.1253489499999989,y:.0719844800766093},{x:-.12783848999999892,y:.07108722453600091},{x:-.13032802999999893,y:.07004991286791806},{x:-.13281756999999894,y:.06886359160177957},{x:-.13530710999999895,y:.06752022596072697},{x:-.13779664999999897,y:.0660127493986957},{x:-.14028618999999898,y:.06433510716802145},{x:-.142775729999999,y:.06248229364897291},{x:-.145265269999999,y:.06045038321106202},{x:-.14775480999999901,y:.05823655441586117},{x:-.15024434999999903,y:.055839107412109526},{x:-.15273388999999904,y:.05325747441586117},{x:-.15522342999999905,y:.05049222321106202},{x:-.15771296999999906,y:.047545053648972956},{x:-.16020250999999908,y:.04441878716802149},{x:-.1626920499999991,y:.04111734939869574},{x:-.1651815899999991,y:.03764574596072702},{x:-.16767112999999914,y:.034010031601779636},{x:-.1701606699999991,y:.03021727286791814},{x:-.17265020999999914,y:.026275504536001},{x:-.17513974999999915,y:.022193680076609396},{x:-.17762928999999916,y:.017981616452923805},{x:-.1801188299999992,y:.013649933595881474},{x:-.18260836999999916,y:.00920998892877074},{x:-.1850979099999992,y:.0046738073449396865},{x:-.1875874499999992,y:5400707033003521e-20},{x:-.19007698999999922,y:-.004636278132081827},{x:-.19256652999999926,y:-.009383479936300985},{x:-.19505606999999922,y:-.01417367910655569},{x:-.19754560999999926,y:-.018992691314014522},{x:-.20003514999999927,y:-.02382615458789039}],color:"primary",fill:!1},path8702:{type:"path",points:[{x:.19829105000000036,y:-.02382615458789039},{x:.19580151000000035,y:-.01899269131401453},{x:.1933119700000003,y:-.014173679106555696},{x:.19082243000000035,y:-.009383479936300985},{x:.1883328900000003,y:-.004636278132081827},{x:.1858433500000003,y:5400707033003174e-20},{x:.18335381000000028,y:.004673807344939683},{x:.18086427000000024,y:.009209988928770731},{x:.1783747300000003,y:.013649933595881476},{x:.17588519000000025,y:.017981616452923805},{x:.17339565000000023,y:.022193680076609393},{x:.17090611000000022,y:.026275504536001},{x:.16841657000000018,y:.030217272867918137},{x:.16592703000000023,y:.034010031601779636},{x:.16343749000000019,y:.03764574596072702},{x:.16094795000000017,y:.04111734939869574},{x:.15845841000000016,y:.04441878716802149},{x:.15596887000000015,y:.04754505364897295},{x:.15347933000000014,y:.05049222321106203},{x:.15098979000000012,y:.05325747441586117},{x:.1485002500000001,y:.055839107412109526},{x:.1460107100000001,y:.05823655441586117},{x:.1435211700000001,y:.06045038321106201},{x:.14103163000000007,y:.06248229364897292},{x:.13854209000000006,y:.06433510716802145},{x:.13605255000000005,y:.0660127493986957},{x:.13356301000000004,y:.06752022596072697},{x:.13107347000000003,y:.06886359160177957},{x:.12858393,y:.07004991286791806},{x:.12609439,y:.07108722453600091},{x:.12360484999999999,y:.0719844800766093},{x:.12111530999999998,y:.07275149645292371},{x:.11862576999999996,y:.07339889359588138},{x:.11613622999999995,y:.07393802892877062},{x:.11364668999999994,y:.07438092734493956},{x:.11115714999999993,y:.07474020707032991},{x:.10866760999999991,y:.07502900186791804},{x:.1061780699999999,y:.07526088006369888},{x:.10368852999999989,y:.07544976089344414},{x:.10119898999999988,y:.0756098286859853},{x:.09870944999999987,y:.07575544541210943},{x:.09621991249999988,y:.0756098286859853},{x:.0937303749999999,y:.07544976089344414},{x:.09124083749999992,y:.07526088006369887},{x:.08875129999999994,y:.07502900186791804},{x:.08626176249999995,y:.0747402070703299},{x:.08377222499999996,y:.07438092734493956},{x:.08128268749999998,y:.07393802892877062},{x:.07879315,y:.07339889359588138},{x:.07630361250000002,y:.07275149645292371},{x:.07381407500000003,y:.0719844800766093},{x:.07132453750000005,y:.07108722453600091},{x:.06883500000000006,y:.07004991286791806},{x:.06634546250000009,y:.06886359160177957},{x:.0638559250000001,y:.06752022596072697},{x:.06136638750000012,y:.0660127493986957},{x:.05887685000000013,y:.06433510716802145},{x:.05638731250000015,y:.06248229364897291},{x:.053897775000000175,y:.06045038321106202},{x:.05140823750000019,y:.05823655441586117},{x:.048918700000000204,y:.055839107412109526},{x:.04642916250000022,y:.05325747441586117},{x:.04393962500000023,y:.05049222321106202},{x:.04145008750000026,y:.047545053648972956},{x:.038960550000000274,y:.04441878716802149},{x:.03647101250000029,y:.04111734939869574},{x:.0339814750000003,y:.03764574596072702},{x:.03149193750000032,y:.034010031601779636},{x:.02900240000000034,y:.03021727286791814},{x:.02651286250000036,y:.026275504536001},{x:.024023325000000373,y:.022193680076609396},{x:.021533787500000387,y:.017981616452923805},{x:.019044250000000405,y:.013649933595881474},{x:.016554712500000426,y:.00920998892877074},{x:.014065175000000442,y:.0046738073449396865},{x:.011575637500000457,y:5400707033003521e-20},{x:.009086100000000473,y:-.004636278132081827},{x:.006596562500000487,y:-.009383479936300985},{x:.004107025000000513,y:-.01417367910655569},{x:.0016174875000005274,y:-.018992691314014522},{x:-.000872049999999458,y:-.02382615458789039}],color:"primary",fill:!1},path8704:{type:"path",points:[{x:.39745405000000034,y:-.02382615458789039},{x:.3949645125000003,y:-.01899269131401453},{x:.39247497500000034,y:-.014173679106555696},{x:.3899854375000004,y:-.009383479936300985},{x:.38749590000000045,y:-.004636278132081827},{x:.3850063625000004,y:5400707033003174e-20},{x:.3825168250000004,y:.004673807344939683},{x:.3800272875000004,y:.009209988928770731},{x:.3775377500000005,y:.013649933595881476},{x:.37504821250000053,y:.017981616452923805},{x:.3725586750000005,y:.022193680076609393},{x:.3700691375000005,y:.026275504536001},{x:.3675796000000005,y:.030217272867918137},{x:.3650900625000006,y:.034010031601779636},{x:.3626005250000006,y:.03764574596072702},{x:.3601109875000006,y:.04111734939869574},{x:.35762145000000056,y:.04441878716802149},{x:.3551319125000006,y:.04754505364897295},{x:.3526423750000007,y:.05049222321106203},{x:.3501528375000007,y:.05325747441586117},{x:.3476633000000007,y:.055839107412109526},{x:.34517376250000065,y:.05823655441586117},{x:.34268422500000073,y:.06045038321106201},{x:.3401946875000007,y:.06248229364897292},{x:.3377051500000008,y:.06433510716802145},{x:.33521561250000076,y:.0660127493986957},{x:.33272607500000073,y:.06752022596072697},{x:.3302365375000008,y:.06886359160177957},{x:.3277470000000008,y:.07004991286791806},{x:.3252574625000008,y:.07108722453600091},{x:.32276792500000084,y:.0719844800766093},{x:.32027838750000087,y:.07275149645292371},{x:.3177888500000009,y:.07339889359588138},{x:.3152993125000009,y:.07393802892877062},{x:.3128097750000009,y:.07438092734493956},{x:.31032023750000093,y:.07474020707032991},{x:.30783070000000096,y:.07502900186791804},{x:.305341162500001,y:.07526088006369888},{x:.30285162500000096,y:.07544976089344414},{x:.300362087500001,y:.0756098286859853},{x:.297872550000001,y:.07575544541210943},{x:.29538301000000095,y:.0756098286859853},{x:.292893470000001,y:.07544976089344414},{x:.290403930000001,y:.07526088006369887},{x:.287914390000001,y:.07502900186791804},{x:.28542485000000095,y:.0747402070703299},{x:.2829353100000009,y:.07438092734493956},{x:.2804457700000009,y:.07393802892877062},{x:.2779562300000009,y:.07339889359588138},{x:.2754666900000009,y:.07275149645292371},{x:.2729771500000009,y:.0719844800766093},{x:.2704876100000009,y:.07108722453600091},{x:.26799807000000087,y:.07004991286791806},{x:.26550853000000085,y:.06886359160177957},{x:.26301899000000084,y:.06752022596072697},{x:.26052945000000083,y:.0660127493986957},{x:.2580399100000008,y:.06433510716802145},{x:.2555503700000008,y:.06248229364897291},{x:.2530608300000008,y:.06045038321106202},{x:.2505712900000008,y:.05823655441586117},{x:.24808175000000077,y:.055839107412109526},{x:.24559221000000075,y:.05325747441586117},{x:.24310267000000074,y:.05049222321106202},{x:.24061313000000073,y:.047545053648972956},{x:.23812359000000072,y:.04441878716802149},{x:.2356340500000007,y:.04111734939869574},{x:.2331445100000007,y:.03764574596072702},{x:.23065497000000068,y:.034010031601779636},{x:.22816543000000067,y:.03021727286791814},{x:.22567589000000066,y:.026275504536001},{x:.22318635000000064,y:.022193680076609396},{x:.22069681000000063,y:.017981616452923805},{x:.21820727000000062,y:.013649933595881474},{x:.2157177300000006,y:.00920998892877074},{x:.2132281900000006,y:.0046738073449396865},{x:.21073865000000058,y:5400707033003521e-20},{x:.20824911000000057,y:-.004636278132081827},{x:.20575957000000056,y:-.009383479936300985},{x:.20327003000000055,y:-.01417367910655569},{x:.20078049000000053,y:-.018992691314014522},{x:.19829095000000052,y:-.02382615458789039}],color:"primary",fill:!1},path8706:{type:"path",points:[{x:-.4023286499999996,y:-.022544054587890106},{x:-.5293590499999994,y:-.022544054587890106}],color:"primary",fill:!1},"path8706-5":{type:"path",points:[{x:.5261604500000003,y:-.027111054587890093},{x:.39913004999999946,y:-.027111054587890093}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0040821499999992295,y:.22997364541210996},bottom1:{type:"text",text:"{VAL}",x:-.004252755294839927,y:-.22997364541210996}},refblocks:{left1:{x:-.5504428500000003,y:-.021272154587890446},right1:{x:.5504428500000005,y:-.026521254587889898}},bounds:{minX:-.5786012910000002,maxX:.5786012910000005,minY:-.22997364541210996,maxY:.22997364541210996,width:1.1572025820000007,height:.4599472908242199,centerX:11102230246251565e-32,centerY:0},circles:{}},{paths:IWt,texts:ZXe,bounds:JO,refblocks:QXe,circles:BWt}=FWt,jue=ym({primitives:[...Object.values(IWt),...Object.values(BWt),{...ZXe.top1,anchor:"middle_bottom"},{...ZXe.bottom1,anchor:"middle_top"}],ports:[{...QXe.left1,labels:["1"]},{...QXe.right1,labels:["2"]}],size:{width:JO.width,height:JO.height},center:{x:JO.centerX,y:JO.centerY}}),KXe=_0(jue,"up"),jWt=jYt(KXe),VWt=KYe(jue),JXe={paths:{path11:{type:"path",points:[{x:-.5274831500000006,y:-.05991764999999982},{x:-.14891374999999996,y:-.06254064999999964}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.13221874999999983,y:-.048856449999999496},{x:-.13236425000000063,y:-.18114814999999918}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.13236425000000063,y:.08343525000000018},{x:.13221874999999983,y:-.048856449999999496}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.13236425000000063,y:-.18114814999999984},{x:-.13236425000000063,y:.08343525000000018}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.13221874999999983,y:.08343525000000018},{x:.13221874999999983,y:-.18114814999999984}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.13582535000000018,y:-.04942524999999942},{x:.533952450000001,y:-.059917649999999156}],color:"primary",fill:!1},"path25-0-9-8":{type:"path",points:[{x:-.02944535000000048,y:.39378525000000053},{x:-.05325954999999993,y:.4660362500000006},{x:-.07725114999999949,y:.39386225000000086}],color:"primary",fill:!0},"path78-6-5-5":{type:"path",points:[{x:-.05361965000000035,y:.27387525000000035},{x:-.053592050000000446,y:.2865022500000003},{x:-.05330205000000077,y:.41436425000000066},{x:-.05311205000000019,y:.4152642500000008}],color:"primary",fill:!1},"path25-0-9-8-2":{type:"path",points:[{x:.06865195000000024,y:.39378525000000053},{x:.044837750000000565,y:.4660362500000006},{x:.02084615000000123,y:.39386225000000086}],color:"primary",fill:!0},"path78-6-5-5-7":{type:"path",points:[{x:.044477650000000146,y:.27387525000000035},{x:.044505250000000274,y:.2865022500000003},{x:.04479524999999995,y:.41436425000000066},{x:.04498525000000053,y:.4152642500000008}],color:"primary",fill:!1},"path43-1":{type:"path",points:[{x:.03124844999999965,y:.05895145000000013},{x:.03124844999999965,y:-.16452955000000036}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:.25206924999999947,y:.3769550499999994},bottom1:{type:"text",text:"{VAL}",x:-.006614550000000552,y:-.4660362500000004}},refblocks:{left1:{x:-.54139845,y:-.060770450000000364},right1:{x:.5413984499999995,y:-.0597740500000008}},bounds:{minX:-.569556891,maxX:.5695568909999995,minY:-.4660362500000004,maxY:.4660362500000006,width:1.1391137819999995,height:.932072500000001,centerX:-2220446049250313e-31,centerY:11102230246251565e-32},circles:{path1:{type:"circle",x:-.0037626500000003116,y:-.05278935000000051,radius:.28854213,color:"primary",fill:!1}}};JXe.bounds.width+=.2;var eWe=Ph(JXe).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),tWe=_0(eWe),HWt=tWe.primitives.filter(r=>r.type==="text"),nWe=HWt.find(r=>r.text==="{VAL}");nWe.x=-.52,nWe.anchor="middle_right";var qWt=tWe,$Wt={paths:{path45:{type:"path",points:[{x:.13585750000000063,y:-.003696399999999045},{x:-.12872579999999934,y:-.13598810000000228}],color:"primary",fill:!1},"path1-8":{type:"path",points:[{x:.12763670000000094,y:-.003920199999999596},{x:.5265564000000009,y:-.003920199999999596}],color:"primary",fill:!1},path46:{type:"path",points:[{x:-.12872579999999934,y:.12859530000000063},{x:.13585750000000063,y:-.003696399999999045}],color:"primary",fill:!1},path47:{type:"path",points:[{x:-.12872579999999934,y:-.13598810000000228},{x:-.12872579999999934,y:.12859530000000063}],color:"primary",fill:!1},path48:{type:"path",points:[{x:.13585750000000063,y:.12859530000000063},{x:.13585750000000063,y:-.13598810000000228}],color:"primary",fill:!1},path49:{type:"path",points:[{x:-.13076959999999938,y:-.003696399999999045},{x:-.5256007999999994,y:-.003696399999999045}],color:"primary",fill:!1},path25:{type:"path",points:[{x:-.1557438999999996,y:.28545279999999806},{x:-.2530861999999994,y:.3023319999999998},{x:-.21878339999999952,y:.20956920000000068}],color:"primary",fill:!0},path78:{type:"path",points:[{x:-.08000449999999937,y:.16590799999999817},{x:-.09202799999999911,y:.1748410000000007},{x:-.2137844999999996,y:.26529680000000155},{x:-.2144144999999993,y:.2662468000000011}],color:"primary",fill:!1},"path25-0":{type:"path",points:[{x:.021722400000000697,y:.30658939999999646},{x:-.07561989999999952,y:.3234685999999982},{x:-.04131709999999922,y:.23070579999999907}],color:"primary",fill:!0},"path78-6":{type:"path",points:[{x:.09746180000000093,y:.18704459999999656},{x:.08543830000000074,y:.19597759999999909},{x:-.0363181999999993,y:.28643339999999995},{x:-.03694819999999943,y:.2873833999999995}],color:"primary",fill:!1}},texts:{bottom1:{type:"text",text:"{VAL}",x:-.009561699999999451,y:-.3234685999999982},right1:{type:"text",text:"{REF}",x:.31464070000000044,y:.22386570000000106}},refblocks:{left1:{x:-.5362092999999997,y:-.004432900000001183},right1:{x:.5362093000000003,y:-.004886400000003732}},bounds:{minX:-.5643677409999996,maxX:.5643677410000003,minY:-.3234685999999982,maxY:.3234685999999982,width:1.128735482,height:.6469371999999964,centerX:33306690738754696e-32,centerY:0},circles:{}},{paths:GWt,texts:rWe,bounds:eU,refblocks:iWe,circles:YWt}=$Wt,tU=ym({primitives:[...Object.values(GWt),...Object.values(YWt),{...rWe.bottom1,anchor:"middle_top"},{...rWe.right1,anchor:"middle_bottom"}],ports:[{...iWe.left1,labels:["1"]},{...iWe.right1,labels:["2"]}],size:{width:eU.width,height:eU.height},center:{x:eU.centerX,y:eU.centerY}}),XWt=_0(tU,"down"),WWt=KYe(tU),Vue=_0(tU,"up"),ZWt={...Vue,primitives:Vue.primitives.map(r=>r.type==="path"&&(r.points.length===3||r.points.length===4)?{...r,points:r.points.map(e=>({x:e.x,y:-e.y+2*Vue.center.y}))}:r)},QWt=ZWt,KWt={paths:{path11:{type:"path",points:[{x:-.5053201665812097,y:-.010839730805804138},{x:-.1829962316128657,y:-.010839730805804138}],color:"primary",fill:!1},"path11-2":{type:"path",points:[{x:-.1674747072814866,y:-.11471502212593476},{x:-.1674747072814866,y:.07736981415388478}],color:"primary",fill:!1},"path11-5":{type:"path",points:[{x:-.1674747072814866,y:-.11632056223474518},{x:.16018133830019532,y:-.11632056223474518}],color:"primary",fill:!1},"path11-5-5":{type:"path",points:[{x:-.1674747072814866,y:.07736981415388478},{x:.16018133830019532,y:.07736981415388478}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.17205869804197382,y:-.010839950577224311},{x:.5116721586832798,y:-.010839950577224311}],color:"primary",fill:!1},"path11-2-1":{type:"path",points:[{x:.16064490317338742,y:-.11622177498145403},{x:.16064490317338742,y:.07727135655772521}],color:"primary",fill:!1},"path25-0-9":{type:"path",points:[{x:-.40391896081308554,y:-.2111951150487743},{x:-.32538818309991635,y:-.1776462385858042},{x:-.33843942905204627,y:-.26928059146906413}],color:"primary",fill:!0},"path78-6-5":{type:"path",points:[{x:-.4470989190253618,y:-.3351265263866847},{x:-.4385525777085817,y:-.32468848279378437},{x:-.3520048317368336,y:-.21897414423109507},{x:-.3516268465799328,y:-.21798517284109487}],color:"primary",fill:!1},"path25-0-9-0":{type:"path",points:[{x:-.30220674110432255,y:-.3403193953841548},{x:-.22367596339115314,y:-.30677051892118534},{x:-.23672720934328306,y:-.3984048718044453}],color:"primary",fill:!0},"path78-6-5-9":{type:"path",points:[{x:-.3453866993165988,y:-.464250806722065},{x:-.3368403579998187,y:-.45381276312916397},{x:-.2502926120280704,y:-.34809842456647466},{x:-.24991462687116983,y:-.34710945317647446}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.1679477702432366,y:-.40859918889256375},bottom1:{type:"text",text:"{VAL}",x:-.006410773639930811,y:.464250806722065}},refblocks:{left1:{x:-.5247194309452994,y:-.009902515585214156},right1:{x:.5247194309452992,y:-.010997416799653603}},bounds:{minX:-.5520103866874645,maxX:.5520103866874643,minY:-.5085991888925637,maxY:.464250806722065,width:1.1040207733749288,height:.6228499956146287,centerX:-11102230246251565e-32,centerY:-.022174191085249373},circles:{path1:{type:"circle",x:-.003646732950281173,y:-.018672603986024328,radius:.2796529289238723,color:"primary",fill:!1}}},{paths:JWt,texts:aWe,bounds:nU,refblocks:oWe,circles:eZt}=KWt,sWe=ym({primitives:[...Object.values(JWt),...Object.values(eZt),{...aWe.top1,anchor:"middle_left",x:0},{...aWe.bottom1,anchor:"middle_left",x:0}],ports:[{...oWe.left1,labels:["1"]},{...oWe.right1,labels:["2"]}],size:{width:nU.width,height:nU.height},center:{x:nU.centerX,y:nU.centerY}}),lWe=_0(sWe),cWe=lWe.primitives.filter(r=>r.type==="text"),Hue=cWe.find(r=>r.text==="{VAL}");Hue.x=-.35,Hue.y=0,Hue.anchor="middle_right";var que=cWe.find(r=>r.text==="{REF}");que.y=0,que.x=.35,que.anchor="middle_left";var tZt=lWe,nZt={paths:{path208:{type:"path",points:[{x:.3843021704999998,y:.13154093999999894},{x:.5165938705000004,y:-.13304206000000107}],color:"primary",fill:!1},path209:{type:"path",points:[{x:.25201047050000014,y:-.13304206000000107},{x:.3843021704999998,y:.13154093999999894}],color:"primary",fill:!1},path210:{type:"path",points:[{x:.5165938705000004,y:-.13304206000000107},{x:.25201047050000014,y:-.13304206000000107}],color:"primary",fill:!1},path211:{type:"path",points:[{x:.25201047050000014,y:.13154093999999894},{x:.5165938705000004,y:.13154093999999894}],color:"primary",fill:!1},path212:{type:"path",points:[{x:.11971887050000074,y:-.39762406000000006},{x:.3843021704999998,y:-.39762406000000006}],color:"primary",fill:!1},path213:{type:"path",points:[{x:.3843021704999998,y:.39612494},{x:.11971887050000074,y:.39612494}],color:"primary",fill:!1},path214:{type:"path",points:[{x:.11971887050000074,y:.5284169399999996},{x:.11971887050000074,y:.18445994}],color:"primary",fill:!1},path215:{type:"path",points:[{x:.11971887050000074,y:-.5299150600000004},{x:.11971887050000074,y:-.0007480600000011606}],color:"primary",fill:!1},path216:{type:"path",points:[{x:.3843021704999998,y:-.39762469000000067},{x:.3843021704999998,y:.3961256399999993}],color:"primary",fill:!1},path217:{type:"path",points:[{x:-.1448644295000001,y:.2638359399999999},{x:-.1448644295000001,y:-.26533006000000015}],color:"primary",fill:!1},path218:{type:"path",points:[{x:-.22423942949999898,y:-.2653310599999994},{x:-.22423942949999898,y:.26383493999999885}],color:"primary",fill:!1},path219:{type:"path",points:[{x:-.5417394294999998,y:-.26533006000000015},{x:-.22423942949999898,y:-.2653320600000004}],color:"primary",fill:!1},path220:{type:"path",points:[{x:-.1448644295000001,y:-.18595506000000128},{x:.11971897050000013,y:-.18595506000000128}],color:"primary",fill:!1},path221:{type:"path",points:[{x:-.1448644295000001,y:.18446093999999924},{x:.11971897050000013,y:.18446093999999924}],color:"primary",fill:!1},path222:{type:"path",points:[{x:-.06548942950000036,y:-.0007480600000011606},{x:.11971887050000074,y:-.0007480600000011606}],color:"primary",fill:!1}},texts:{right1:{type:"text",text:"{VAL}",x:.5715500704999998,y:.02044358999999929},right2:{type:"text",text:"{REF}",x:.5701646705000005,y:.2085436499999993}},refblocks:{top1:{x:.12018067049999992,y:.5432738300000004},bottom1:{x:.11982247050000083,y:-.5432738300000004},left1:{x:-.5433916295000003,y:-.2663988600000007}},bounds:{minX:-.5715500705000003,maxX:.5715500704999998,minY:-.5714322710000004,maxY:.5714322710000004,width:1.1431001410000001,height:1.1428645420000008,centerX:-2220446049250313e-31,centerY:0},circles:{}},{paths:rZt,texts:uWe,bounds:rU,refblocks:$ue}=nZt,fWe=ym({primitives:[...Object.values(rZt),{...uWe.right1,anchor:"middle_left"},{...uWe.right2,anchor:"middle_left"}],ports:[{...$ue.top1,labels:["1"]},{...$ue.bottom1,labels:["2"]},{...$ue.left1,labels:["3"]}],size:{width:rU.width+.4,height:rU.height},center:{x:rU.centerX+.2,y:rU.centerY}}),Gue=_0(fWe),dWe=Gue.primitives.find(r=>r.type==="text"&&r.text==="{REF}"),Yue=Gue.primitives.find(r=>r.type==="text"&&r.text==="{VAL}");dWe.anchor="middle_top",Yue.anchor="middle_top",dWe.x=Yue.x,Yue.y+=.15;var iZt=Gue,aZt={paths:{"path12-1-8-6-9":{type:"path",points:[{x:.005962250000000502,y:.06921149999999976},{x:.005962250000000502,y:-.005086499999999106}],color:"primary",fill:!1},"path12-1-5-6":{type:"path",points:[{x:-.48740705000000073,y:-.09299450000000142},{x:-.17310075000000058,y:-.09299450000000142}],color:"primary",fill:!1},"path12-1-8-0":{type:"path",points:[{x:-.16008695000000017,y:-.010660500000000184},{x:.1719709499999995,y:-.010660500000000184}],color:"primary",fill:!1},"path12-1-0":{type:"path",points:[{x:.1954987499999996,y:-.09260549999999945},{x:.4881436499999996,y:-.09260549999999945}],color:"primary",fill:!1},path2:{type:"path",points:[{x:-.09950044999999985,y:.05839450000000035},{x:-.09950104999999976,y:.06197449999999982},{x:-.09932044999999956,y:.06550449999999941},{x:-.09896044999999987,y:.0690104999999992},{x:-.09860045000000017,y:.07250049999999852},{x:-.09806045000000019,y:.07593049999999835},{x:-.09735344999999995,y:.07929949999999941},{x:-.09663345000000056,y:.08265950000000011},{x:-.09578045000000035,y:.08599949999999978},{x:-.09475245000000054,y:.08924949999999932},{x:-.09379245000000047,y:.09255949999999835},{x:-.09254545000000025,y:.09567949999999925},{x:-.09120844999999989,y:.09877950000000091},{x:-.08986644999999971,y:.10186950000000117},{x:-.08839545000000015,y:.10492949999999901},{x:-.08675845000000049,y:.10783949999999898},{x:-.08506245000000057,y:.11069950000000084},{x:-.08334244999999996,y:.11360950000000081},{x:-.08146945000000017,y:.11638949999999859},{x:-.0795824500000002,y:.11916949999999993},{x:-.07752845000000086,y:.12180949999999946},{x:-.07546944999999994,y:.12442949999999975},{x:-.07325945000000011,y:.12693950000000065},{x:-.07104145000000006,y:.129449499999998},{x:-.06867544999999975,y:.13182950000000027},{x:-.06628845000000005,y:.1341695000000005},{x:-.06379544999999975,y:.1364194999999988},{x:-.06114145000000004,y:.13848950000000038},{x:-.05848745000000033,y:.1405694999999998},{x:-.05584345000000024,y:.14261950000000034},{x:-.05306845000000049,y:.14449950000000022},{x:-.05029345000000074,y:.14639950000000113},{x:-.04738844999999969,y:.14811950000000174},{x:-.04437445000000029,y:.14969949999999876},{x:-.04134744999999995,y:.1513194999999996},{x:-.038316449999999946,y:.15275949999999838},{x:-.03515645000000056,y:.15407949999999992},{x:-.03204444999999989,y:.15536950000000083},{x:-.028770450000000558,y:.15655950000000018},{x:-.025468450000000864,y:.15757949999999887},{x:-.02213745000000067,y:.15863950000000138},{x:-.018790450000000014,y:.15942949999999811},{x:-.01536325000000005,y:.16012949999999826},{x:-.011980249999999693,y:.16082950000000018},{x:-.008442250000000762,y:.16141949999999916},{x:-.004890650000000107,y:.1617494999999991},{x:-.0013406500000003874,y:.16204949999999663},{x:.002252350000000014,y:.16214949999999817},{x:.005893849999999645,y:.16214949999999817},{x:.009534849999998762,y:.16214949999999817},{x:.013136849999999534,y:.16204949999999663},{x:.016683149999999536,y:.1617494999999991},{x:.020231149999998976,y:.1614494999999998},{x:.023727149999999142,y:.16104949999999896},{x:.02715474999999934,y:.16012949999999826},{x:.03057874999999921,y:.15952949999999966},{x:.03395574999999962,y:.15867949999999986},{x:.03725995000000015,y:.15758950000000027},{x:.0405679499999998,y:.15652949999999954},{x:.04379994999999948,y:.15541949999999893},{x:.04695294999999966,y:.15409950000000094},{x:.050101949999999285,y:.15280950000000004},{x:.053191949999999544,y:.1513194999999996},{x:.05617794999999948,y:.1497395000000008},{x:.05916694999999983,y:.14811950000000174},{x:.06206694999999929,y:.14639950000000113},{x:.06487294999999982,y:.1445595000000015},{x:.06767095000000012,y:.14269950000000264},{x:.07038294999999994,y:.14069950000000198},{x:.07299194999999958,y:.1385795000000023},{x:.07560095000000011,y:.13645950000000262},{x:.07809294999999938,y:.13420950000000254},{x:.08047994999999997,y:.13187950000000193},{x:.08287894999999956,y:.1295395000000017},{x:.08515495000000062,y:.12706950000000106},{x:.08729294999999926,y:.12451950000000167},{x:.08944594999999911,y:.12192950000000202},{x:.0914679499999993,y:.11930950000000173},{x:.09337295000000001,y:.1165295000000004},{x:.0971669499999992,y:.11101949999999938},{x:.10043494999999947,y:.10512450000000229},{x:.10311494999999926,y:.09890950000000132},{x:.10444094999999987,y:.09581950000000106},{x:.10564094999999973,y:.09262950000000103},{x:.10667494999999949,y:.08935950000000226},{x:.10769994999999977,y:.08610950000000273},{x:.1085699499999997,y:.08279950000000369},{x:.10927795000000007,y:.07942950000000337},{x:.10999794999999946,y:.07605950000000128},{x:.11051994999999959,y:.07262950000000146},{x:.11088394999999984,y:.06913950000000213},{x:.11124394999999954,y:.0656495000000028},{x:.11142394999999983,y:.062099500000002195},{x:.11142394999999983,y:.05854350000000075},{x:.10483595000000001,y:.05853049999999982},{x:.0982479500000002,y:.058516500000001415},{x:.09164495000000006,y:.058518500000001694},{x:.08505695000000024,y:.05850850000000207},{x:.078453950000001,y:.058509500000001324},{x:.07186595000000029,y:.058496500000000395},{x:.06526295000000104,y:.05849750000000142},{x:.058674950000001225,y:.058485499999999746},{x:.05208695000000052,y:.058473499999999845},{x:.04548395000000127,y:.058475500000000125},{x:.038895950000001456,y:.05846150000000172},{x:.03230795000000075,y:.058448499999999015},{x:.025704950000001503,y:.058453499999998826},{x:.019101950000001366,y:.05845449999999808},{x:.01251395000000155,y:.05844149999999715},{x:.005925950000001734,y:.058427499999998744},{x:-.0006560499999990199,y:.05842149999999968},{x:-.007240049999999165,y:.05841449999999959},{x:-.01382404999999931,y:.05840850000000053},{x:-.020406049999999176,y:.05840250000000147},{x:-.02699004999999932,y:.058394500000002125},{x:-.03357404999999947,y:.05838950000000409},{x:-.04015604999999933,y:.05838350000000503},{x:-.04674004999999948,y:.05837450000000466},{x:-.05332205000000023,y:.058368500000005596},{x:-.05990605000000038,y:.058360500000006255},{x:-.06649005000000052,y:.058355500000006444},{x:-.07307205000000039,y:.05834950000000738},{x:-.07965605000000053,y:.05834150000000804},{x:-.08624005000000068,y:.05833550000000898},{x:-.09282205000000143,y:.05833050000001094}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:.01254745000000046,y:.26612850000000243},bottom1:{type:"text",text:"{VAL}",x:-.16130964999999975,y:-.2661284999999989}},refblocks:{left1:{x:-.4717985499999999,y:-.09296750000000031},right1:{x:.4717985499999999,y:-.09299249999999937}},bounds:{minX:-.4999569909999999,maxX:.4999569909999999,minY:-.2661284999999989,maxY:.26612850000000243,width:.9999139819999998,height:.5322570000000013,centerX:0,centerY:17763568394002505e-31},circles:{}},{paths:oZt,texts:pWe,bounds:iU,refblocks:hWe,circles:sZt}=aZt,mWe=ym({primitives:[...Object.values(oZt),...Object.values(sZt),{...pWe.top1,anchor:"middle_bottom",x:0},{...pWe.bottom1,anchor:"middle_top",x:0}],ports:[{...hWe.left1,labels:["1"]},{...hWe.right1,labels:["2"]}],size:{width:iU.width,height:iU.height},center:{x:iU.centerX+.006,y:iU.centerY+.06}}),Xue=_0(mWe),oR=Xue.primitives.find(r=>r.type==="text"&&r.text==="{REF}"),aU=Xue.primitives.find(r=>r.type==="text"&&r.text==="{VAL}");oR.anchor="middle_left",aU.anchor="middle_right",oR.x=oR.x-.03,oR.y=oR.y,aU.x=aU.x,aU.y=0;var lZt=Xue,cZt={paths:{path11:{type:"path",points:[{x:-.39274354450000026,y:.10329954999999957},{x:.05111245549999932,y:.1059225499999994}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.09373835550000087,y:-.18559775000000034},{x:.09280835550000122,y:.18255174999999935}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.30382435550000064,y:-.53233025},{x:.3032243555000005,y:-.10600584999999985}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.3108281555000003,y:.5323308500000001},{x:.31142815550000025,y:.005876249999999805}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.09383795549999951,y:-.10788365000000044},{x:.31104975549999936,y:-.10659565000000004}],color:"primary",fill:!1},"path2-5":{type:"path",points:[{x:.09383795549999951,y:.10232114999999986},{x:.31104975549999936,y:.10360915000000026}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.27419885550000034,y:.04077644999999963},{x:.27419885550000034,y:-.030615650000000327},{x:.2024438555000001,y:.004662050000000084}],color:"primary",fill:!0},"path2-0":{type:"path",points:[{x:.09383795549999951,y:.004018049999999551},{x:.31104975549999936,y:.005306049999999729}],color:"primary",fill:!1},"path12-1-0":{type:"path",points:[{x:.05171245550000081,y:-.16715385000000005},{x:.05111245550000065,y:.10592255000000006}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.13197254449999907,y:-.36092494999999936},bottom1:{type:"text",text:"{VAL}",x:.05891105550000031,y:.42489435000000064}},refblocks:{top1:{x:.30397715549999993,y:-.5519248499999992},bottom1:{x:.31067575550000126,y:.5519248499999994},left1:{x:-.41859744450000025,y:.10250625000000024}},bounds:{minX:-.4467558855000002,maxX:.44675588550000006,minY:-.5800832909999992,maxY:.5800832909999993,width:1,height:1.1601665819999987,centerX:-8326672684688674e-32,centerY:5551115123125783e-32},circles:{path1:{type:"circle",x:.15821375550000005,y:-.003454549999999612,radius:.28854213,color:"primary",fill:!1}}},{paths:uZt,texts:vWe,bounds:oU,refblocks:Wue,circles:fZt}=cZt,yWe=ym({primitives:[...Object.values(uZt),...Object.values(fZt),{...vWe.top1,anchor:"middle_right",x:0},{...vWe.bottom1,anchor:"middle_right",x:0}],ports:[{...Wue.top1,labels:["1","drain"]},{...Wue.bottom1,labels:["2","source"]},{...Wue.left1,labels:["3","gate"]}],size:{width:oU.width,height:oU.height},center:{x:oU.centerX,y:oU.centerY}}),gWe=_0(yWe),_We=gWe.primitives.filter(r=>r.type==="text"),Zue=_We.find(r=>r.text==="{VAL}");Zue.x=-.35,Zue.y=0,Zue.anchor="middle_right";var Que=_We.find(r=>r.text==="{REF}");Que.y=0,Que.x=.35,Que.anchor="middle_left";var dZt=gWe,pZt={paths:{path11:{type:"path",points:[{x:-.39274354450000026,y:.10329954999999957},{x:.05111245549999932,y:.1059225499999994}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.30382435550000064,y:-.53233025},{x:.3032243555000005,y:-.10600584999999985}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.3108281555000003,y:.5323308500000001},{x:.31142815550000025,y:.005876249999999805}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.09383795549999951,y:-.10788365000000044},{x:.31104975549999936,y:-.10659565000000004}],color:"primary",fill:!1},"path2-8-3-7":{type:"path",points:[{x:.09448295549999952,y:-.14677165000000048},{x:.09319295549999951,y:-.06899565000000041}],color:"primary",fill:!1},"path2-5":{type:"path",points:[{x:.09383795549999951,y:.10232114999999986},{x:.31104975549999936,y:.10360915000000026}],color:"primary",fill:!1},"path2-8-3":{type:"path",points:[{x:.09440455549999993,y:.07703174999999951},{x:.09311455549999992,y:.15480774999999958}],color:"primary",fill:!1},"path2-8-3-2":{type:"path",points:[{x:.09448295549999952,y:-.03486995000000048},{x:.09319295549999951,y:.042906049999999585}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.2741991554999996,y:.040776550000000134},{x:.2741991554999996,y:-.030615549999999825},{x:.2024441554999994,y:.004662350000000037}],color:"primary",fill:!0},"path2-0":{type:"path",points:[{x:.09383795549999951,y:.004018049999999551},{x:.31104975549999936,y:.005306049999999729}],color:"primary",fill:!1},"path12-1-0":{type:"path",points:[{x:.05171245550000081,y:-.10847375000000059},{x:.05111245550000065,y:.1059225499999994}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.13197254449999907,y:-.36092494999999936},bottom1:{type:"text",text:"{VAL}",x:.05891105550000031,y:.42489435000000064}},refblocks:{top1:{x:.30397715549999993,y:-.5519248499999992},bottom1:{x:.31067575550000126,y:.5519248499999994},left1:{x:-.41859744450000025,y:.10250625000000024}},bounds:{minX:-.4467558855000002,maxX:.44675588550000006,minY:-.5800832909999992,maxY:.5800832909999993,width:1,height:1.1601665819999987,centerX:-8326672684688674e-32,centerY:5551115123125783e-32},circles:{path1:{type:"circle",x:.15821375550000005,y:-.003454549999999612,radius:.28854213,color:"primary",fill:!1}}},{paths:hZt,texts:xWe,bounds:sU,refblocks:Kue,circles:mZt}=pZt,bWe=ym({primitives:[...Object.values(hZt),...Object.values(mZt),{...xWe.top1,anchor:"middle_right",x:0},{...xWe.bottom1,anchor:"middle_right",x:0}],ports:[{...Kue.top1,labels:["1","drain"]},{...Kue.bottom1,labels:["2","source"]},{...Kue.left1,labels:["3","gate"]}],size:{width:sU.width,height:sU.height},center:{x:sU.centerX,y:sU.centerY}}),SWe=_0(bWe),EWe=SWe.primitives.filter(r=>r.type==="text"),Jue=EWe.find(r=>r.text==="{VAL}");Jue.x=-.35,Jue.y=0,Jue.anchor="middle_right";var e0e=EWe.find(r=>r.text==="{REF}");e0e.y=0,e0e.x=.35,e0e.anchor="middle_left";var vZt=SWe,yZt={paths:{path11:{type:"path",points:[{x:-.38509374449999945,y:.00367374999999992},{x:.05876225550000025,y:.00629674999999974}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.07415065550000066,y:-.18559775000000034},{x:.07322065550000101,y:.18255174999999935}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.28423665550000043,y:-.53233025},{x:.2836366555000003,y:-.10600584999999985}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.2912404555000001,y:.5298821500000002},{x:.29184045550000004,y:.10355795000000012}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.07425025549999931,y:-.10788365000000044},{x:.29146205549999915,y:-.10659565000000004}],color:"primary",fill:!1},"path2-5":{type:"path",points:[{x:.07425025549999931,y:.10232114999999986},{x:.29146205549999915,y:.10360915000000026}],color:"primary",fill:!1},path15:{type:"path",points:[{x:-.0829488445000004,y:-.06153284999999986},{x:-.0829488445000004,y:.06535114999999969},{x:.005945155500000077,y:.0026521499999998532}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.15156024449999927,y:-.36092494999999936},bottom1:{type:"text",text:"{VAL}",x:.0393233555000001,y:.42489435000000064}},refblocks:{top1:{x:.2843894554999997,y:-.5519248499999992},bottom1:{x:.29108805550000105,y:.5519248499999994},left1:{x:-.3990097444999998,y:.004526550000000462}},bounds:{minX:-.4271681854999998,maxX:.42716818549999985,minY:-.5800832909999992,maxY:.5800832909999993,width:1,height:1.1601665819999987,centerX:27755575615628914e-33,centerY:5551115123125783e-32},circles:{path1:{type:"circle",x:.13862605549999985,y:-.003454549999999612,radius:.28854213,color:"primary",fill:!1}}},{paths:gZt,texts:wWe,bounds:lU,refblocks:t0e,circles:_Zt}=yZt,TWe=ym({primitives:[...Object.values(gZt),...Object.values(_Zt),{...wWe.top1,anchor:"middle_right",x:0},{...wWe.bottom1,anchor:"middle_right",x:0}],ports:[{...t0e.top1,labels:["1","drain"]},{...t0e.bottom1,labels:["2","source"]},{...t0e.left1,labels:["3","gate"]}],size:{width:lU.width,height:lU.height},center:{x:lU.centerX,y:lU.centerY}}),MWe=_0(TWe),CWe=MWe.primitives.filter(r=>r.type==="text"),n0e=CWe.find(r=>r.text==="{VAL}");n0e.x=-.35,n0e.y=0,n0e.anchor="middle_right";var r0e=CWe.find(r=>r.text==="{REF}");r0e.y=0,r0e.x=.35,r0e.anchor="middle_left";var xZt=MWe,RWe={paths:{path11:{type:"path",points:[{x:-.3850939444999988,y:-.0036735999999999436},{x:.0587620555000008,y:-.0062965999999997635}],color:"primary",fill:!1},"path40-0":{type:"path",points:[{x:.07400475550000118,y:.2689528999999997},{x:.07335475550000092,y:-.2789230000000007}],color:"primary",fill:!1},"path40-0-5":{type:"path",points:[{x:.2754149555000005,y:.24180210000000013},{x:.07955815550000045,y:.10822479999999968}],color:"primary",fill:!1},"path40-0-5-0":{type:"path",points:[{x:.2868554555000009,y:-.24134789999999984},{x:.09194705550000082,y:-.10807689999999992}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.2851204555,y:.25311099999999964},{x:.2860204555000001,y:.5377640999999995}],color:"primary",fill:!1},"path12-1-5-3":{type:"path",points:[{x:.2851204555,y:-.5376890000000012},{x:.2860204555000001,y:-.25303590000000065}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.1882816555000013,y:-.10097660000000008},{x:.11555775550000158,y:-.20483720000000027},{x:.22425775550000182,y:-.20446720000000007}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.07802354449999971,y:.3596647999999991},bottom1:{type:"text",text:"{VAL}",x:-.0679100444999996,y:-.4129789000000006}},refblocks:{top1:{x:.28556045550000064,y:.5519250999999994},bottom1:{x:.285560455500002,y:-.5519250999999992},left1:{x:-.3990097444999998,y:-.004526300000000871}},bounds:{minX:-.4271681854999998,maxX:.4271681855000001,minY:-.5800835409999991,maxY:.5800835409999994,width:.8543363709999998,height:1.1601670819999985,centerX:13877787807814457e-32,centerY:11102230246251565e-32},circles:{"path1-0":{type:"circle",x:.13862605550000007,y:.003454799999999203,radius:.28854213,color:"primary",fill:!1}}},AWe=Ph(RWe).changeTextAnchor("{VAL}","middle_right").labelPort("left1",["3"]).labelPort("top1",["2"]).labelPort("bottom1",["1"]).changeTextAnchor("{REF}","middle_right").build(),bZt=_0(AWe),SZt=bZt.primitives.filter(r=>r.type==="text"),EZt=SZt.find(r=>r.text==="{REF}");EZt.anchor="middle_left";var wZt=Ph(RWe).rotateRightFacingSymbol("down").changeTextAnchor("{VAL}","middle_right").labelPort("left1",["3"]).labelPort("top1",["2"]).labelPort("bottom1",["1"]).changeTextAnchor("{REF}","middle_left").build(),TZt={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.0390362999999998},{x:-.3199943999999995,y:-.21132800000000015}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.3199943999999995,y:.31132800000000016},{x:.14458890000000002,y:.0390362999999998}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.3199943999999995,y:-.21132800000000015},{x:-.3199943999999995,y:.31132800000000016}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.3199943999999995,y:.1790362999999998},{x:-.58168694,y:.1790362999999998}],color:"primary",fill:!1},path45:{type:"path",points:[{x:-.3199943999999995,y:-.0890362999999998},{x:-.58168694,y:-.0890362999999998}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.4233797000000002,y:.03895110000000024},{x:.1496715999999998,y:.03895110000000024}],color:"primary",fill:!1},"rect1577-3":{type:"path",points:[{x:-.19898460000000012,y:.1790362999999998},{x:-.26995180000000035,y:.1790362999999998}],color:"primary",fill:!0},"rect1577-4":{type:"path",points:[{x:-.19898460000000012,y:-.0890362999999998},{x:-.26995180000000035,y:-.0890362999999998}],color:"primary",fill:!0},"rect1577-4-7":{type:"path",points:[{x:-.23480170000000036,y:-.05337805000000034},{x:-.23480170000000036,y:-.12434525000000014}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999996715,y:.4188453},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999977319,y:-.29994529999999997}},refblocks:{left1:{x:-.56868694,y:.1790362999999998},left2:{x:-.56868694,y:-.0890362999999998},right1:{x:.4291470999999999,y:.03889609999999988}},bounds:{minX:-.5473055410000001,maxX:.5473055409999998,minY:-.37884529999999994,maxY:.26884529999999995,width:1.094611082,height:.2976905999999999,centerX:-11102230246251565e-32,centerY:.05499999999999999},circles:{}},cU=Ph(TZt).labelPort("left1",["1","inp1"]).labelPort("left2",["2","inp2"]).labelPort("right1",["3","out"]).changeTextAnchor("{REF}","middle_bottom").changeTextAnchor("{VAL}","middle_top").build(),MZt=_0(cU,"down"),CZt=_0(cU,"left"),RZt=_0(cU,"up"),AZt={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.0390362999999998},{x:-.3199943999999995,y:-.21132800000000015}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.3199943999999995,y:.31132800000000016},{x:.14458890000000002,y:.0390362999999998}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.3199943999999995,y:-.21132800000000015},{x:-.3199943999999995,y:.31132800000000016}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.3199943999999995,y:.1790362999999998},{x:-.58168694,y:.1790362999999998}],color:"primary",fill:!1},path45:{type:"path",points:[{x:-.3199943999999995,y:-.0890362999999998},{x:-.58168694,y:-.0890362999999998}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.4233797000000002,y:.03895110000000024},{x:.1496715999999998,y:.03895110000000024}],color:"primary",fill:!1},"path44-1":{type:"path",points:[{x:-.09945180000000035,y:.43895110000000026},{x:-.09945180000000035,y:.1790362999999998}],color:"primary",fill:!1},"path44-2":{type:"path",points:[{x:-.09345180000000035,y:-.3389511000000002},{x:-.09345180000000035,y:-.0890362999999998}],color:"primary",fill:!1},"rect1577-3":{type:"path",points:[{x:-.19898460000000012,y:.1790362999999998},{x:-.26995180000000035,y:.1790362999999998}],color:"primary",fill:!0},"rect1577-4":{type:"path",points:[{x:-.19898460000000012,y:-.0890362999999998},{x:-.26995180000000035,y:-.0890362999999998}],color:"primary",fill:!0},"rect1577-4-7":{type:"path",points:[{x:-.23485180000000036,y:.14405005000000035},{x:-.23485180000000036,y:.2150405000000014}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:.2502509999999967,y:.31884529999999994},bottom1:{type:"text",text:"{VAL}",x:.2502509999999967,y:-.23599529999999996}},refblocks:{left1:{x:-.56868694,y:.1790362999999998},left2:{x:-.56868694,y:-.0890362999999998},right1:{x:.4291470999999999,y:.03889609999999988},top2:{x:-.09945180000000035,y:.43895110000000026},bottom1:{x:-.09345180000000035,y:-.3389511000000002}},bounds:{minX:-.5473055410000001,maxX:.5473055409999998,minY:-.37884529999999994,maxY:.26884529999999995,width:1.094611082,height:.2976905999999999,centerX:-11102230246251565e-32,centerY:.05499999999999999},circles:{}},uU=Ph(AZt).labelPort("left1",["1","inp1"]).labelPort("left2",["2","inp2"]).labelPort("right1",["3","out"]).labelPort("top2",["4","V+"]).labelPort("bottom1",["5","V-"]).changeTextAnchor("{REF}","middle_bottom").changeTextAnchor("{VAL}","middle_top").build(),PZt=_0(uU,"down"),DZt=_0(uU,"left"),NZt=_0(uU,"up"),LZt={paths:{path11:{type:"path",points:[{x:-.39274354450000026,y:.10329954999999957},{x:.05111245549999932,y:.1059225499999994}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.09373835550000087,y:-.18559775000000034},{x:.09280835550000122,y:.18255174999999935}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.30382435550000064,y:-.53233025},{x:.3032243555000005,y:-.10600584999999985}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.3108281555000003,y:.5323308500000001},{x:.31142815550000025,y:.005876249999999805}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.09383795549999951,y:-.10788365000000044},{x:.31104975549999936,y:-.10659565000000004}],color:"primary",fill:!1},"path2-5":{type:"path",points:[{x:.09383795549999951,y:.10232114999999986},{x:.31104975549999936,y:.10360915000000026}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.20244405549999955,y:-.03061555000000049},{x:.20244405549999955,y:.04077654999999947},{x:.2741990554999998,y:.0054987499999992195}],color:"primary",fill:!0},"path2-0":{type:"path",points:[{x:.09383795549999951,y:.004018049999999551},{x:.31104975549999936,y:.005306049999999729}],color:"primary",fill:!1},"path12-1-0":{type:"path",points:[{x:.05171245550000081,y:-.16715385000000005},{x:.05111245550000065,y:.10592255000000006}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.13197254449999907,y:-.36092494999999936},bottom1:{type:"text",text:"{VAL}",x:.05891105550000031,y:.42489435000000064}},refblocks:{top1:{x:.30397715549999993,y:-.5519248499999992},bottom1:{x:.31067575550000126,y:.5519248499999994},left1:{x:-.41859744450000025,y:.10250625000000024}},bounds:{minX:-.4467558855000002,maxX:.44675588550000006,minY:-.5800832909999992,maxY:.5800832909999993,width:1,height:1.1601665819999987,centerX:-8326672684688674e-32,centerY:5551115123125783e-32},circles:{path1:{type:"circle",x:.15821375550000005,y:-.003454549999999612,radius:.28854213,color:"primary",fill:!1}}},{paths:zZt,texts:PWe,bounds:fU,refblocks:i0e,circles:OZt}=LZt,DWe=ym({primitives:[...Object.values(zZt),...Object.values(OZt),{...PWe.top1,anchor:"middle_right",x:0},{...PWe.bottom1,anchor:"middle_right",x:0}],ports:[{...i0e.top1,labels:["1","drain"]},{...i0e.bottom1,labels:["2","source"]},{...i0e.left1,labels:["3","gate"]}],size:{width:fU.width,height:fU.height},center:{x:fU.centerX,y:fU.centerY}}),NWe=_0(DWe),LWe=NWe.primitives.filter(r=>r.type==="text"),a0e=LWe.find(r=>r.text==="{VAL}");a0e.x=-.35,a0e.y=0,a0e.anchor="middle_right";var o0e=LWe.find(r=>r.text==="{REF}");o0e.y=0,o0e.x=.35,o0e.anchor="middle_left";var UZt=NWe,kZt={paths:{path11:{type:"path",points:[{x:-.39274354450000026,y:.10329954999999957},{x:.05111245549999932,y:.1059225499999994}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.30382435550000064,y:-.53233025},{x:.3032243555000005,y:-.10600584999999985}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.3108281555000003,y:.5323308500000001},{x:.31142815550000025,y:.005876249999999805}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.09383795549999951,y:-.10788365000000044},{x:.31104975549999936,y:-.10659565000000004}],color:"primary",fill:!1},"path2-8-3-7":{type:"path",points:[{x:.09448295549999952,y:-.14677165000000048},{x:.09319295549999951,y:-.06899565000000041}],color:"primary",fill:!1},"path2-5":{type:"path",points:[{x:.09383795549999951,y:.10232114999999986},{x:.31104975549999936,y:.10360915000000026}],color:"primary",fill:!1},"path2-8-3":{type:"path",points:[{x:.09440455549999993,y:.07703174999999951},{x:.09311455549999992,y:.15480774999999958}],color:"primary",fill:!1},"path2-8-3-2":{type:"path",points:[{x:.09448295549999952,y:-.03486995000000048},{x:.09319295549999951,y:.042906049999999585}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.20244405549999955,y:-.03061555000000049},{x:.20244405549999955,y:.04077654999999947},{x:.2741990554999998,y:.0054987499999992195}],color:"primary",fill:!0},"path2-0":{type:"path",points:[{x:.09383795549999951,y:.004018049999999551},{x:.31104975549999936,y:.005306049999999729}],color:"primary",fill:!1},"path12-1-0":{type:"path",points:[{x:.05171245550000081,y:-.10847375000000059},{x:.05111245550000065,y:.1059225499999994}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.13197254449999907,y:-.36092494999999936},bottom1:{type:"text",text:"{VAL}",x:.05891105550000031,y:.42489435000000064}},refblocks:{top1:{x:.30397715549999993,y:-.5519248499999992},bottom1:{x:.31067575550000126,y:.5519248499999994},left1:{x:-.41859744450000025,y:.10250625000000024}},bounds:{minX:-.4467558855000002,maxX:.44675588550000006,minY:-.5800832909999992,maxY:.5800832909999993,width:1,height:1.1601665819999987,centerX:-8326672684688674e-32,centerY:5551115123125783e-32},circles:{path1:{type:"circle",x:.15821375550000005,y:-.003454549999999612,radius:.28854213,color:"primary",fill:!1}}},{paths:FZt,texts:zWe,bounds:dU,refblocks:s0e,circles:IZt}=kZt,OWe=ym({primitives:[...Object.values(FZt),...Object.values(IZt),{...zWe.top1,anchor:"middle_right",x:0},{...zWe.bottom1,anchor:"middle_right",x:0}],ports:[{...s0e.top1,labels:["1","drain"]},{...s0e.bottom1,labels:["2","source"]},{...s0e.left1,labels:["3","gate"]}],size:{width:dU.width,height:dU.height},center:{x:dU.centerX,y:dU.centerY}}),UWe=_0(OWe),kWe=UWe.primitives.filter(r=>r.type==="text"),l0e=kWe.find(r=>r.text==="{VAL}");l0e.x=-.35,l0e.y=0,l0e.anchor="middle_right";var c0e=kWe.find(r=>r.text==="{REF}");c0e.y=0,c0e.x=.35,c0e.anchor="middle_left";var BZt=UWe,jZt={paths:{path11:{type:"path",points:[{x:-.5274831500000005,y:-.012413549999999773},{x:-.14891374999999973,y:-.015036549999999593}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.13221874999999983,y:-.001352349999999447},{x:-.1323642500000004,y:-.13364404999999913}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1323642500000004,y:.13093935000000023},{x:.13221874999999983,y:-.001352349999999447}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1323642500000004,y:-.1336440499999998},{x:-.1323642500000004,y:.13093935000000023}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.13221874999999983,y:.13093935000000023},{x:.13221874999999983,y:-.1336440499999998}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.1358253500000004,y:-.001921149999999372},{x:.533952450000001,y:-.012413549999999107}],color:"primary",fill:!1},"path25-0":{type:"path",points:[{x:.19839785000000076,y:.37576625000000075},{x:.16262485000000027,y:.28367475000000053},{x:.26033484999999956,y:.2989800500000006}],color:"primary",fill:!0},"path78-6":{type:"path",points:[{x:.3305468500000004,y:.4264014500000006},{x:.31941585000000017,y:.4163797500000006},{x:.20669285000000048,y:.3148875500000008},{x:.20564285000000115,y:.31448755000000084}],color:"primary",fill:!1},"path25-0-9":{type:"path",points:[{x:.34573984999999974,y:.3493283500000002},{x:.30996684999999946,y:.25723684999999996},{x:.40767644999999963,y:.27254215000000004}],color:"primary",fill:!0},"path78-6-5":{type:"path",points:[{x:.47788845000000046,y:.39996355000000006},{x:.46675745000000024,y:.38994185000000003},{x:.35403445000000033,y:.2884496500000002},{x:.352984450000001,y:.2880496500000005}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.10246254999999982,y:.34693914999999986},bottom1:{type:"text",text:"{VAL}",x:.0012544500000004621,y:-.4264014500000004}},refblocks:{left1:{x:-.5413984499999998,y:-.013266350000000315},right1:{x:.54139845,y:-.012269950000000529}},bounds:{minX:-.5695568909999997,maxX:.569556891,minY:-.4264014500000004,maxY:.4264014500000006,width:1.1391137819999997,height:.852802900000001,centerX:11102230246251565e-32,centerY:11102230246251565e-32},circles:{path1:{type:"circle",x:-.0037626500000000895,y:-.005285250000000241,radius:.28854213,color:"primary",fill:!1}}},FWe=Ph(jZt).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),IWe=_0(FWe),VZt=IWe.primitives.filter(r=>r.type==="text"),BWe=VZt.find(r=>r.text==="{REF}");BWe.y=0,BWe.anchor="middle_left";var HZt=IWe,qZt={paths:{path11:{type:"path",points:[{x:-.38509374449999945,y:.00367374999999992},{x:.05876225550000025,y:.00629674999999974}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.07415065550000066,y:-.18559775000000034},{x:.07322065550000101,y:.18255174999999935}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.28423665550000043,y:-.53233025},{x:.2836366555000003,y:-.10600584999999985}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.2912404555000001,y:.5298821500000002},{x:.29184045550000004,y:.10355795000000012}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.07425025549999931,y:-.10788365000000044},{x:.29146205549999915,y:-.10659565000000004}],color:"primary",fill:!1},"path2-5":{type:"path",points:[{x:.07425025549999931,y:.10232114999999986},{x:.29146205549999915,y:.10360915000000026}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.005945155500000077,y:.06535114999999969},{x:.005945155500000077,y:-.06153284999999986},{x:-.0829488445000004,y:.001166149999999977}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.15156024449999927,y:-.36092494999999936},bottom1:{type:"text",text:"{VAL}",x:.0393233555000001,y:.42489435000000064}},refblocks:{top1:{x:.2843894554999997,y:-.5519248499999992},bottom1:{x:.29108805550000105,y:.5519248499999994},left1:{x:-.3990097444999998,y:.004526550000000462}},bounds:{minX:-.4271681854999998,maxX:.42716818549999985,minY:-.5800832909999992,maxY:.5800832909999993,width:1,height:1.1601665819999987,centerX:27755575615628914e-33,centerY:5551115123125783e-32},circles:{path1:{type:"circle",x:.13862605549999985,y:-.003454549999999612,radius:.28854213,color:"primary",fill:!1}}},{paths:$Zt,texts:jWe,bounds:pU,refblocks:u0e,circles:GZt}=qZt,VWe=ym({primitives:[...Object.values($Zt),...Object.values(GZt),{...jWe.top1,anchor:"middle_right",x:0},{...jWe.bottom1,anchor:"middle_right"}],ports:[{...u0e.top1,labels:["1","drain"]},{...u0e.bottom1,labels:["2","source"]},{...u0e.left1,labels:["3","gate"]}],size:{width:pU.width,height:pU.height},center:{x:pU.centerX,y:pU.centerY}}),HWe=_0(VWe),qWe=HWe.primitives.filter(r=>r.type==="text"),f0e=qWe.find(r=>r.text==="{VAL}");f0e.x=-.35,f0e.y=0,f0e.anchor="middle_right";var d0e=qWe.find(r=>r.text==="{REF}");d0e.y=0,d0e.x=.35,d0e.anchor="middle_left";var YZt=HWe,$We={paths:{path11:{type:"path",points:[{x:-.3850939444999988,y:-.0036735999999999436},{x:.0587620555000008,y:-.0062965999999997635}],color:"primary",fill:!1},"path40-0":{type:"path",points:[{x:.07400475550000118,y:.2689528999999997},{x:.07335475550000092,y:-.2789230000000007}],color:"primary",fill:!1},"path40-0-5":{type:"path",points:[{x:.2754149555000005,y:.24180210000000013},{x:.07955815550000045,y:.10822479999999968}],color:"primary",fill:!1},"path40-0-5-0":{type:"path",points:[{x:.2868554555000009,y:-.24134789999999984},{x:.09194705550000082,y:-.10807689999999992}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.2851204555,y:.25311099999999964},{x:.2860204555000001,y:.5377640999999995}],color:"primary",fill:!1},"path12-1-5-3":{type:"path",points:[{x:.2851204555,y:-.5376890000000012},{x:.2860204555000001,y:-.25303590000000065}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.15155145550000038,y:-.2268796000000004},{x:.2242753555000001,y:-.12301900000000021},{x:.11557535549999942,y:-.12338900000000042}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.08351674449999891,y:.37335419999999897},bottom1:{type:"text",text:"{VAL}",x:-.0679100444999996,y:-.4129789000000006}},refblocks:{top1:{x:.28556045550000064,y:.5519250999999994},bottom1:{x:.285560455500002,y:-.5519250999999992},left1:{x:-.3990097444999998,y:-.004526300000000871}},bounds:{minX:-.4271681854999998,maxX:.4271681855000001,minY:-.5800835409999991,maxY:.5800835409999994,width:.8543363709999998,height:1.1601670819999985,centerX:13877787807814457e-32,centerY:11102230246251565e-32},circles:{"path1-0":{type:"circle",x:.13862605550000007,y:.003454799999999203,radius:.28854213,color:"primary",fill:!1}}},GWe=Ph($We).changeTextAnchor("{VAL}","middle_right").labelPort("left1",["3"]).labelPort("bottom1",["2"]).labelPort("top1",["1"]).changeTextAnchor("{REF}","middle_right").build(),XZt=_0(GWe),WZt=XZt.primitives.filter(r=>r.type==="text"),ZZt=WZt.find(r=>r.text==="{REF}");ZZt.anchor="middle_left";var QZt=Ph($We).rotateRightFacingSymbol("down").changeTextAnchor("{VAL}","middle_right").labelPort("left1",["3"]).labelPort("bottom1",["2"]).labelPort("top1",["1"]).changeTextAnchor("{REF}","middle_left").build(),KZt={paths:{path40:{type:"path",points:[{x:-.19250837381256392,y:.32749349347032286},{x:-.25568957329611974,y:.13794979950157282}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.38205206778131373,y:.26431229398676837},{x:-.19250837381256392,y:.32749349347032286}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.2556895732961204,y:.13794979950157416},{x:-.38205206778131373,y:.26431229398676837}],color:"primary",fill:!1},path43:{type:"path",points:[{x:-.2556896210551609,y:.39067474071292196},{x:-.12932712656996737,y:.26431224622772653}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.3199237641156438,y:.2000781031672434},{x:-.5084145145074668,y:.011587352775420667}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:-.011560829633404435,y:.5083596562436202},{x:-.19004023433272543,y:.3298802515442989}],color:"primary",fill:!1},"path40-4":{type:"path",points:[{x:-.19250813152967883,y:-.3220463011874377},{x:-.38205182549842887,y:-.2588651017038819}],color:"primary",fill:!1},"path41-1":{type:"path",points:[{x:-.2556893310132333,y:-.13250260721868767},{x:-.19250813152967883,y:-.3220463011874377}],color:"primary",fill:!1},"path42-7":{type:"path",points:[{x:-.38205182549842753,y:-.258865101703881},{x:-.2556893310132333,y:-.13250260721868767}],color:"primary",fill:!1},"path43-1":{type:"path",points:[{x:-.12932688428707984,y:-.2588650539448407},{x:-.25568937877227516,y:-.38522754843003404}],color:"primary",fill:!1},"path44-8":{type:"path",points:[{x:-.3199235218327583,y:-.19463091088435758},{x:-.508414272224581,y:-.006140160492534852}],color:"primary",fill:!1},"path44-0-7":{type:"path",points:[{x:-.011641968756381349,y:-.5029938453665972},{x:-.1901213734557028,y:-.3245144406672762}],color:"primary",fill:!1},"path40-4-0":{type:"path",points:[{x:.322578868470321,y:.19315369881256328},{x:.13303517450157099,y:.2563348982961191}],color:"primary",fill:!1},"path41-1-2":{type:"path",points:[{x:.2593976689867663,y:.3826973927813131},{x:.322578868470321,y:.19315369881256328}],color:"primary",fill:!1},"path42-7-1":{type:"path",points:[{x:.13303517450157232,y:.2563348982961198},{x:.2593976689867663,y:.3826973927813131}],color:"primary",fill:!1},"path43-1-8":{type:"path",points:[{x:.38576011571292,y:.2563349460551603},{x:.2593976212277247,y:.12997245156996673}],color:"primary",fill:!1},"path44-8-7":{type:"path",points:[{x:.19516347816724133,y:.3205690891156432},{x:.006672727775418608,y:.509059839507466}],color:"primary",fill:!1},"path44-0-7-1":{type:"path",points:[{x:.5034450312436185,y:.012206154633403798},{x:.32496562654429706,y:.19068555933272457}],color:"primary",fill:!1},"path40-4-8":{type:"path",points:[{x:.3220220261874358,y:-.19326390652967795},{x:.25884082670387976,y:-.382807600498428}],color:"primary",fill:!1},"path41-1-4":{type:"path",points:[{x:.13247833221868577,y:-.25644510601323245},{x:.3220220261874358,y:-.19326390652967795}],color:"primary",fill:!1},"path42-7-0":{type:"path",points:[{x:.2588408267038793,y:-.38280760049842666},{x:.13247833221868577,y:-.25644510601323245}],color:"primary",fill:!1},"path43-1-0":{type:"path",points:[{x:.2588407789448386,y:-.13008265928707896},{x:.38520327343003213,y:-.2564451537722743}],color:"primary",fill:!1},"path44-8-9":{type:"path",points:[{x:.19460663588435567,y:-.3206792968327574},{x:.0061158854925329464,y:-.5091700472245801}],color:"primary",fill:!1},"path44-0-7-3":{type:"path",points:[{x:.5029695703665951,y:-.012397743756380697},{x:.3244901656672745,y:-.19087714845570192}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.2872803000000015,y:.4564494249999992},bottom1:{type:"text",text:"{VAL}",x:-.2872803000000015,y:-.4960514750000007}},refblocks:{top1:{x:.0005126999999993664,y:.5191475},bottom1:{x:-.0005123000000009093,y:-.5191475000000001},left1:{x:-.5191472999999998,y:.0005123250000014234},right1:{x:.5191473000000002,y:-.0005123749999977889}},bounds:{minX:-.5473057409999997,maxX:.5473057410000002,minY:-.5473059410000001,maxY:.547305941,width:1.094611482,height:1.0946118820000001,centerX:2220446049250313e-31,centerY:-5551115123125783e-32},circles:{}},{paths:JZt,texts:YWe,bounds:hU,refblocks:XWe}=KZt,WWe=ym({primitives:[...Object.values(JZt),{...YWe.bottom1,y:.35,anchor:"middle_top"},{...YWe.top1,anchor:"middle_left"}],ports:[{...XWe.left1,labels:["1"]},{...XWe.right1,labels:["2"]}],size:{width:hU.width+.05,height:hU.height},center:{x:hU.centerX,y:hU.centerY}}),eQt=_0(WWe),tQt=eQt,nQt={paths:{path18:{type:"path",points:[{x:-.53224045,y:-.0008545000000008685},{x:-.26765715000000023,y:-.0008545000000008685}],color:"primary",fill:!1},path19:{type:"path",points:[{x:.2615098499999995,y:-.0008545000000008685},{x:.5260934499999994,y:-.0008545000000008685}],color:"primary",fill:!1},path20:{type:"path",points:[{x:-.0030722500000006647,y:.1314371999999988},{x:.2615107499999998,y:.1314371999999988},{x:.2615107499999998,y:-.13314619999999877},{x:-.26765624999999993,y:-.13314619999999877},{x:-.26765624999999993,y:.1314371999999988},{x:-.0030722499999988884,y:.1314371999999988}],color:"primary",fill:!1},path23:{type:"path",points:[{x:.2782993499999993,y:-.2822274},{x:.17598844999999885,y:-.25486950000000164},{x:.25094144999999823,y:-.1799165000000027}],color:"primary",fill:!0},path24:{type:"path",points:[{x:.2882692499999995,y:-.2921307000000013},{x:.25467554999999953,y:-.16634940000000142},{x:.16229264999999948,y:-.25853690000000284}],color:"primary",fill:!0},path26:{type:"path",points:[{x:-.2985911500000009,y:.2921307000000013},{x:.22988164999999938,y:-.2328032000000011}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:.055041669999999154,y:.2009376800000009},bottom1:{type:"text",text:"{VAL}",x:-.10019643000000089,y:-.27857531999999985}},refblocks:{left1:{x:-.5346914500000006,y:-.0013439000000019519},right1:{x:.5346914500000004,y:-.001956599999999753}},bounds:{minX:-.5628498910000006,maxX:.5628498910000004,minY:-.2921307000000013,maxY:.2921307000000013,width:1.125699782000001,height:.5842614000000026,centerX:-11102230246251565e-32,centerY:0},circles:{}},{paths:rQt,texts:ZWe,bounds:mU,refblocks:QWe}=nQt,KWe=ym({primitives:[...Object.values(rQt),{...ZWe.bottom1,anchor:"middle_top"},{...ZWe.top1,anchor:"middle_bottom"}],ports:[{...QWe.left1,labels:["1"]},{...QWe.right1,labels:["2"]}],size:{width:mU.width,height:mU.height},center:{x:mU.centerX,y:mU.centerY}}),JWe=_0(KWe),eZe=JWe.primitives.filter(r=>r.type==="text"),iQt=eZe.find(r=>r.text==="{VAL}");iQt.anchor="middle_right";var aQt=eZe.find(r=>r.text==="{REF}");aQt.anchor="middle_left";var oQt=JWe,sQt={paths:{path11:{type:"path",points:[{x:-.5274831500000005,y:.02812460000000061},{x:-.30105415000000013,y:.02812460000000061}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2932119499999999,y:.02812460000000061},{x:.5339524499999997,y:.02812460000000061}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.16215344999999948,y:.39517610000000025},bottom1:{type:"text",text:"{VAL}",x:-.003375049999999602,y:-.39517610000000003},left1:{type:"text",text:"COS φ",x:-.1453603499999998,y:.013845600000000235}},refblocks:{left1:{x:-.5413984499999998,y:.027271800000000068},right1:{x:.54139845,y:.028268199999999855}},bounds:{minX:-.5695568909999997,maxX:.569556891,minY:-.39517610000000003,maxY:.39517610000000025,width:1.1391137819999997,height:.7903522000000003,centerX:11102230246251565e-32,centerY:11102230246251565e-32},circles:{path1:{type:"circle",x:-.0037626500000000895,y:.03525290000000014,radius:.28854213,color:"primary",fill:!1}}},{paths:lQt,texts:Tyn,bounds:vU,refblocks:tZe,circles:cQt}=sQt,nZe=ym({primitives:[...Object.values(lQt),...Object.values(cQt),{type:"text",text:"{REF}",x:-.15,y:-.42330070000000064,anchor:"middle_top"},{type:"text",text:"{VAL}",x:-.15,y:.42330070000000064,anchor:"middle_bottom"},{type:"text",text:"COS φ",x:0,y:.014279000000000375,anchor:"center"}],ports:[{...tZe.left1,labels:["1"]},{...tZe.right1,labels:["2"]}],size:{width:vU.width,height:vU.height},center:{x:vU.centerX,y:vU.centerY}}),rZe=_0(nZe),p0e=rZe.primitives.filter(r=>r.type==="text"),h0e=p0e.find(r=>r.text==="{REF}"),m0e=p0e.find(r=>r.text==="{VAL}"),v0e=p0e.find(r=>r.text==="COS φ");h0e.x=.35,h0e.y=0,h0e.anchor="middle_left",m0e.anchor="middle_right",m0e.x=-.35,m0e.y=0,v0e.x=0,v0e.y=0,v0e.anchor="center";var uQt=rZe,fQt={paths:{"path12-1-8-6-9-9":{type:"path",points:[{x:.013196749999999646,y:.030446500000000043},{x:.013196749999999646,y:-.0859464999999986}],color:"primary",fill:!1},"path12-1-5-6-4":{type:"path",points:[{x:-.4867871500000014,y:-.0510704999999998},{x:-.17248085000000124,y:-.0510704999999998}],color:"primary",fill:!1},"path12-1-8-0-0":{type:"path",points:[{x:-.15916995000000078,y:-.0915204999999979},{x:.1810634499999999,y:-.0915204999999979}],color:"primary",fill:!1},"path12-1-0-1":{type:"path",points:[{x:.19611864999999984,y:-.05109549999999885},{x:.48876354999999894,y:-.05109549999999885}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:.007320949999999549,y:.22461850000000005},bottom1:{type:"text",text:"{VAL}",x:-.1606897500000004,y:-.22461849999999828}},refblocks:{left1:{x:-.47241845000000104,y:-.05104349999999869},right1:{x:.47241845000000016,y:-.051482499999998765}},bounds:{minX:-.500576891000001,maxX:.5005768910000001,minY:-.22461849999999828,maxY:.22461850000000005,width:1.0011537820000012,height:.44923699999999833,centerX:-4440892098500626e-31,centerY:8881784197001252e-31},circles:{"circle-2":{type:"circle",x:-.14387115000000072,y:-.05130149999999922,radius:.023193523,color:"primary",fill:!1},circle:{type:"circle",x:.16803074999999978,y:-.05007949999999717,radius:.023193523,color:"primary",fill:!1}}},{paths:dQt,texts:iZe,bounds:yU,refblocks:aZe,circles:pQt}=fQt,oZe=ym({primitives:[...Object.values(dQt),...Object.values(pQt),{...iZe.top1,anchor:"middle_left"},{...iZe.bottom1,anchor:"middle_left"}],ports:[{...aZe.left1,labels:["1"]},{...aZe.right1,labels:["2"]}],size:{width:yU.width,height:yU.height},center:{x:yU.centerX,y:yU.centerY}}),hQt=_0(oZe,"up"),mQt={paths:{"path12-1-8-6-9-9":{type:"path",points:[{x:.013196749999999646,y:.15281650000000013},{x:.013196749999999646,y:.036423500000001496}],color:"primary",fill:!1},"path12-1-5-6-4":{type:"path",points:[{x:-.4867871500000014,y:-.0510704999999998},{x:-.17248085000000124,y:-.0510704999999998}],color:"primary",fill:!1},"path12-1-8-0-0":{type:"path",points:[{x:-.15916995000000078,y:.030849500000000418},{x:.1810634499999999,y:.030849500000000418}],color:"primary",fill:!1},"path12-1-0-1":{type:"path",points:[{x:.19611864999999984,y:-.05109549999999885},{x:.48876354999999894,y:-.05109549999999885}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:.007320949999999549,y:.22461850000000005},bottom1:{type:"text",text:"{VAL}",x:-.1606897500000004,y:-.22461849999999828}},refblocks:{left1:{x:-.47241845000000104,y:-.05104349999999869},right1:{x:.47241845000000016,y:-.051482499999998765}},bounds:{minX:-.500576891000001,maxX:.5005768910000001,minY:-.22461849999999828,maxY:.22461850000000005,width:1.0011537820000012,height:.44923699999999833,centerX:-4440892098500626e-31,centerY:8881784197001252e-31},circles:{"circle-2":{type:"circle",x:-.14387115000000072,y:-.05130149999999922,radius:.023193523,color:"primary",fill:!1},circle:{type:"circle",x:.16803074999999978,y:-.05007949999999717,radius:.023193523,color:"primary",fill:!1}}},{paths:vQt,texts:sZe,bounds:gU,refblocks:lZe,circles:yQt}=mQt,cZe=ym({primitives:[...Object.values(vQt),...Object.values(yQt),{...sZe.top1,anchor:"middle_left"},{...sZe.bottom1,anchor:"middle_left"}],ports:[{...lZe.left1,labels:["1"]},{...lZe.right1,labels:["2"]}],size:{width:gU.width,height:gU.height},center:{x:gU.centerX,y:gU.centerY}}),gQt=_0(cZe,"up"),_Qt={paths:{path40:{type:"path",points:[{x:-.19250837381256392,y:-.32749349347032286},{x:-.25568957329611974,y:-.13794979950157282}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.38205206778131373,y:-.26431229398676837},{x:-.19250837381256392,y:-.32749349347032286}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.2556895732961204,y:-.13794979950157416},{x:-.38205206778131373,y:-.26431229398676837}],color:"primary",fill:!1},path43:{type:"path",points:[{x:-.2556896210551609,y:-.39067474071292196},{x:-.12932712656996737,y:-.26431224622772653}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.3199237641156438,y:-.2000781031672434},{x:-.5084145145074668,y:-.011587352775420667}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:-.011560829633404435,y:-.5083596562436202},{x:-.19004023433272543,y:-.3298802515442989}],color:"primary",fill:!1},"path40-4":{type:"path",points:[{x:-.19250813152967883,y:.3220463011874377},{x:-.38205182549842887,y:.2588651017038819}],color:"primary",fill:!1},"path41-1":{type:"path",points:[{x:-.2556893310132333,y:.13250260721868767},{x:-.19250813152967883,y:.3220463011874377}],color:"primary",fill:!1},"path42-7":{type:"path",points:[{x:-.38205182549842753,y:.258865101703881},{x:-.2556893310132333,y:.13250260721868767}],color:"primary",fill:!1},"path43-1":{type:"path",points:[{x:-.12932688428707984,y:.2588650539448407},{x:-.25568937877227516,y:.38522754843003404}],color:"primary",fill:!1},"path44-8":{type:"path",points:[{x:-.3199235218327583,y:.19463091088435758},{x:-.508414272224581,y:.006140160492534852}],color:"primary",fill:!1},"path44-0-7":{type:"path",points:[{x:-.011641968756381349,y:.5029938453665972},{x:-.1901213734557028,y:.3245144406672762}],color:"primary",fill:!1},"path40-4-0":{type:"path",points:[{x:.322578868470321,y:-.19315369881256328},{x:.13303517450157099,y:-.2563348982961191}],color:"primary",fill:!1},"path41-1-2":{type:"path",points:[{x:.2593976689867663,y:-.3826973927813131},{x:.322578868470321,y:-.19315369881256328}],color:"primary",fill:!1},"path42-7-1":{type:"path",points:[{x:.13303517450157232,y:-.2563348982961198},{x:.2593976689867663,y:-.3826973927813131}],color:"primary",fill:!1},"path43-1-8":{type:"path",points:[{x:.38576011571292,y:-.2563349460551603},{x:.2593976212277247,y:-.12997245156996673}],color:"primary",fill:!1},"path44-8-7":{type:"path",points:[{x:.19516347816724133,y:-.3205690891156432},{x:.006672727775418608,y:-.509059839507466}],color:"primary",fill:!1},"path44-0-7-1":{type:"path",points:[{x:.5034450312436185,y:-.012206154633403798},{x:.32496562654429706,y:-.19068555933272457}],color:"primary",fill:!1},"path40-4-8":{type:"path",points:[{x:.3220220261874358,y:.19326390652967795},{x:.25884082670387976,y:.382807600498428}],color:"primary",fill:!1},"path41-1-4":{type:"path",points:[{x:.13247833221868577,y:.25644510601323245},{x:.3220220261874358,y:.19326390652967795}],color:"primary",fill:!1},"path42-7-0":{type:"path",points:[{x:.2588408267038793,y:.38280760049842666},{x:.13247833221868577,y:.25644510601323245}],color:"primary",fill:!1},"path43-1-0":{type:"path",points:[{x:.2588407789448386,y:.13008265928707896},{x:.38520327343003213,y:.2564451537722743}],color:"primary",fill:!1},"path44-8-9":{type:"path",points:[{x:.19460663588435567,y:.3206792968327574},{x:.0061158854925329464,y:.5091700472245801}],color:"primary",fill:!1},"path44-0-7-3":{type:"path",points:[{x:.5029695703665951,y:.012397743756380697},{x:.3244901656672745,y:.19087714845570192}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.2872803000000015,y:-.4564494249999992},bottom1:{type:"text",text:"{VAL}",x:-.2872803000000015,y:.4960514750000007}},refblocks:{top1:{x:.0005126999999993664,y:-.5191475},bottom1:{x:-.0005123000000009093,y:.5191475000000001},left1:{x:-.5191472999999998,y:-.0005123250000014234},right1:{x:.5191473000000002,y:.0005123749999977889}},bounds:{minX:-.5473057409999997,maxX:.5473057410000002,minY:-.5564494249999992,maxY:.5473059410000001,width:1.094611482,height:1.1037553659999992,centerX:2220446049250313e-31,centerY:-.004571741999999546},circles:{}},{paths:xQt,texts:uZe,bounds:_U,refblocks:xU,circles:bQt}=_Qt,fZe=ym({primitives:[...Object.values(xQt),...Object.values(bQt),{...uZe.top1,anchor:"middle_right"},{...uZe.bottom1,anchor:"middle_right"}],ports:[{...xU.top1,labels:["1"]},{...xU.bottom1,labels:["2"]},{...xU.left1,labels:["3"]},{...xU.right1,labels:["4"]}],size:{width:_U.width,height:_U.height},center:{x:_U.centerX,y:_U.centerY}}),y0e=_0(fZe),SQt=y0e.primitives.find(r=>r.type==="text"&&r.text==="{REF}"),EQt=y0e.primitives.find(r=>r.type==="text"&&r.text==="{VAL}");SQt.anchor="middle_left",EQt.anchor="middle_right";var wQt=y0e,TQt={paths:{path27:{type:"path",points:[{x:.7635944500000007,y:-.2799544500000035},{x:.3138028500000005,y:-.2799544500000035}],color:"primary",fill:!1},path28:{type:"path",points:[{x:-.301017949999999,y:-.01524775000000389},{x:-.7508096499999994,y:-.01524775000000389}],color:"primary",fill:!1},path30:{type:"path",points:[{x:-.3010179499999994,y:.3480486499999973},{x:-.301017949999999,y:-.2798310500000021}],color:"primary",fill:!1},"path27-3":{type:"path",points:[{x:.7729788499999999,y:.3512451499999969},{x:.32318725000000015,y:.3512451499999969}],color:"primary",fill:!1},"path29-5":{type:"path",points:[{x:-.07279374999999932,y:-.27981925000000274},{x:-.2983350499999995,y:-.27981925000000274}],color:"primary",fill:!1},"path29-5-7":{type:"path",points:[{x:.33114835000000076,y:-.2798404500000018},{x:.10560705000000059,y:-.2798404500000018}],color:"primary",fill:!1},"path29-5-7-6":{type:"path",points:[{x:-.055820049999999455,y:-.1676584500000029},{x:-.055820049999999455,y:-.3931997500000026}],color:"primary",fill:!1},"path29-5-7-6-6":{type:"path",points:[{x:.09396265000000081,y:-.16768285000000382},{x:.09396265000000081,y:-.39322415000000355}],color:"primary",fill:!1},"path29-5-9":{type:"path",points:[{x:-.07296184999999955,y:.3513701499999957},{x:-.2985031499999997,y:.3513701499999957}],color:"primary",fill:!1},"path29-5-7-2":{type:"path",points:[{x:.33098025000000053,y:.35134894999999844},{x:.10543895000000036,y:.35134894999999844}],color:"primary",fill:!1},"path29-5-7-6-0":{type:"path",points:[{x:-.05598814999999968,y:.46353094999999733},{x:-.05598814999999968,y:.23798964999999583}],color:"primary",fill:!1},"path29-5-7-6-6-2":{type:"path",points:[{x:.09379455000000014,y:.4635065499999982},{x:.09379455000000014,y:.23796524999999846}],color:"primary",fill:!1},"path29-5-92":{type:"path",points:[{x:.3315317500000008,y:.12563884999999786},{x:.33153175000000035,y:.3511801499999976}],color:"primary",fill:!1},"path29-5-7-28":{type:"path",points:[{x:.3315105500000004,y:-.2783032500000022},{x:.3315105500000004,y:-.0527619500000025}],color:"primary",fill:!1},"path29-5-7-6-9":{type:"path",points:[{x:.44369255000000063,y:.10866514999999843},{x:.21815125000000046,y:.10866514999999843}],color:"primary",fill:!1},"path29-5-7-6-6-7":{type:"path",points:[{x:.4436681500000006,y:-.04111755000000272},{x:.21812685000000043,y:-.04111755000000272}],color:"primary",fill:!1},"path29-5-7-6-9-2":{type:"path",points:[{x:.44235445000000073,y:.07167004999999627},{x:.21681315000000057,y:.07167004999999627}],color:"primary",fill:!1},"path29-5-7-6-9-2-4":{type:"path",points:[{x:.4429695500000004,y:-.0025598500000008073},{x:.4430214500000007,y:.07134914999999609}],color:"primary",fill:!1},"path29-5-7-6-9-2-4-6":{type:"path",points:[{x:.21634305000000031,y:-.0035468500000046532},{x:.21639495000000064,y:.07036214999999935}],color:"primary",fill:!1},"path29-5-7-6-9-2-9":{type:"path",points:[{x:.4429537500000005,y:-.004130850000002795},{x:.21741245000000076,y:-.004130850000002795}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:.01596175000000022,y:.5358501499999981},bottom1:{type:"text",text:"{VAL}",x:.013116750000000454,y:-.5358501500000017}},refblocks:{left1:{x:-.7666234499999998,y:-.01615045000000137},right1:{x:.7572390499999999,y:-.28185235000000297},right2:{x:.7666234500000004,y:.3493472499999992}},bounds:{minX:-.7947818909999997,maxX:.7947818910000004,minY:-.5358501500000017,maxY:.5358501499999981,width:1.5895637820000001,height:1.0717002999999998,centerX:33306690738754696e-32,centerY:-17763568394002505e-31},circles:{}},{paths:MQt,texts:Myn,bounds:bU,refblocks:g0e,circles:CQt}=TQt,dZe=ym({primitives:[...Object.values(MQt),...Object.values(CQt),{type:"text",text:"{REF}",x:.01596175000000022,y:-.5308501500000009,anchor:"middle_top"},{type:"text",text:"{VAL}",x:.013116750000000454,y:.5408501499999989,anchor:"middle_bottom"}],ports:[{...g0e.left1,labels:["1"]},{...g0e.right1,labels:["2"]},{...g0e.right2,labels:["3"]}],size:{width:bU.width,height:bU.height},center:{x:bU.centerX,y:bU.centerY}}),RQt=_0(dZe),AQt={paths:{path40:{type:"path",points:[{x:.14458930000000048,y:.04403649999999937},{x:-.11999399999999905,y:-.0882552000000012}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.11999400000000038,y:.1763281999999997},{x:.14458929999999914,y:.04403649999999937}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.11999400000000038,y:-.0882552000000012},{x:-.11999400000000038,y:.17632819999999816}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.1435300000000006,y:.17844679999999968},{x:.14458899999999986,y:-.08825519999999965}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.12219870000000044,y:.04403649999999937},{x:-.5168690000000005,y:.04403649999999937}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5233800999999991,y:.043951299999999804},{x:.14967199999999892,y:.043951299999999804}],color:"primary",fill:!1},"path43-7":{type:"path",points:[{x:.2075533999999999,y:.17973149999999904},{x:.14341080000000028,y:.17864949999999946}],color:"primary",fill:!1},"path43-7-9":{type:"path",points:[{x:.2093444999999996,y:.1301679},{x:.20797049999999984,y:.17950350000000048}],color:"primary",fill:!1},"path43-7-2":{type:"path",points:[{x:.07978989999999953,y:-.09023340000000024},{x:.14313979999999948,y:-.09001340000000013}],color:"primary",fill:!1},"path43-7-9-3":{type:"path",points:[{x:.07764390000000043,y:-.04104850000000004},{x:.0790179000000002,y:-.09038410000000074}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999994495,y:.27384530000000007},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999977319,y:-.27384530000000007}},refblocks:{left1:{x:-.5191471,y:.044920799999999206},right1:{x:.5191470999999999,y:.04389609999999999}},bounds:{minX:-.547305541,maxX:.5473055409999998,minY:-.27384530000000007,maxY:.27384530000000007,width:1.0946110819999997,height:.5476906000000001,centerX:-5551115123125783e-32,centerY:0},circles:{}},pZe=Ph(AQt).labelPort("left1",["1","pos"]).labelPort("right1",["2","neg"]).changeTextAnchor("{VAL}","middle_top").changeTextAnchor("{REF}","middle_bottom").build(),_0e=_0(pZe),PQt=_0e.primitives.find(r=>r.type==="text"&&r.text==="{REF}"),DQt=_0e.primitives.find(r=>r.type==="text"&&r.text==="{VAL}");PQt.anchor="middle_left",DQt.anchor="middle_right";var NQt=_0e,LQt={paths:{path11:{type:"path",points:[{x:-.49895505000000084,y:.04174485000000061},{x:-.177441850000001,y:.04174485000000061}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.18704774999999918,y:.04961415000000069},{x:.5063384499999999,y:.04961415000000069}],color:"primary",fill:!1},"path12-6":{type:"path",points:[{x:.18219425000000045,y:-.15200134999999904},{x:.1810882500000004,y:.2512156500000011}],color:"primary",fill:!1},"path12-2":{type:"path",points:[{x:.18646324999999986,y:.0047866500000004475},{x:.34602244999999954,y:-.13539324999999924}],color:"primary",fill:!1},"path12-2-9":{type:"path",points:[{x:.3463884499999992,y:-.14077354999999936},{x:.3447284499999994,y:-.3343437499999993}],color:"primary",fill:!1},"path11-0-9":{type:"path",points:[{x:-.17016305000000087,y:.2706752500000007},{x:-.17223005000000047,y:-.15200864999999908},{x:.180362149999999,y:.04760855000000097},{x:-.16624855000000038,y:.27180665000000137}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.22312565000000006,y:.38273545},bottom1:{type:"text",text:"{VAL}",x:.11142554999999987,y:-.38273544999999976}},refblocks:{bottom1:{x:.3445824499999999,y:-.34953845000000006},left1:{x:-.5177904499999998,y:.04089205000000007},right1:{x:.5177904499999997,y:.049757749999999934}},bounds:{minX:-.5459488909999998,maxX:.5459488909999997,minY:-.38273544999999976,maxY:.38273545,width:1.0918977819999993,height:.7654708999999997,centerX:-5551115123125783e-32,centerY:11102230246251565e-32},circles:{}},hZe=Ph(LQt).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).labelPort("bottom1",["3"]).changeTextAnchor("{REF}","middle_bottom").build(),mZe=_0(hZe),zQt=mZe.primitives.filter(r=>r.type==="text"),vZe=zQt.find(r=>r.text==="{REF}");vZe.y=0,vZe.anchor="middle_left";var OQt=mZe,yZe={paths:{path1:{type:"path",points:[{x:-.3543583500000005,y:.03204385000000087},{x:-.12792935000000005,y:.03204385000000087}],color:"primary",fill:!1},"path-1-3":{type:"path",points:[{x:-.1133669500000003,y:.0321987500000005},{x:.11208324999999997,y:.14600155000000048}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.1043477500000003,y:-.0645130499999993},{x:.34508875000000017,y:-.0645130499999993}],color:"primary",fill:!1},path3:{type:"path",points:[{x:.12008575000000055,y:.17214665000000062},{x:.3608267500000004,y:.17214665000000062}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17853294999999947,y:.39716265000000006},bottom1:{type:"text",text:"{VAL}",x:-.011861250000000378,y:-.39716264999999984}},refblocks:{top1:{x:.10744654999999947,y:.17214664999999973},left1:{x:-.3682737499999995,y:.03204385000000021},left2:{x:-.11569114999999996,y:.03204385000000021},right1:{x:.3682737499999995,y:-.06451304999999996},right2:{x:.10744725000000055,y:-.06451304999999996},right3:{x:.3682737499999995,y:.17214664999999973}},bounds:{minX:-.3964321909999995,maxX:.3964321909999995,minY:-.39716264999999984,maxY:.39716265000000006,width:.792864381999999,height:.7943252999999999,centerX:0,centerY:11102230246251565e-32},circles:{}};yZe.bounds.width+=.2;var{paths:UQt,texts:gZe,bounds:SU,refblocks:x0e,circles:kQt}=yZe,_Ze=ym({primitives:[...Object.values(UQt),...Object.values(kQt),{...gZe.top1,anchor:"middle_bottom",x:-.01},{...gZe.bottom1,anchor:"middle_top",x:-.01}],ports:[{...x0e.left1,labels:["1"]},{...x0e.right1,labels:["3"]},{...x0e.right2,labels:["2"]}],size:{width:SU.width,height:SU.height},center:{x:SU.centerX,y:SU.centerY}}),xZe=_0(_Ze),bZe=xZe.primitives.filter(r=>r.type==="text"),b0e=bZe.find(r=>r.text==="{VAL}");b0e.anchor="middle_right",b0e.x=-.3,b0e.y=0;var S0e=bZe.find(r=>r.text==="{REF}");S0e.anchor="middle_left",S0e.x=.3,S0e.y=0;var FQt=xZe,EU={paths:{path11:{type:"path",points:[{x:-.3622273500000006,y:-.0018583499999986763},{x:-.13579835000000018,y:-.0018583499999986763}],color:"primary",fill:!1},"path11-0":{type:"path",points:[{x:-.12010005000000046,y:-.0033888499999992217},{x:.10307834999999987,y:.13630055000000119}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.12795584999999932,y:-.0018583499999986763},{x:.3686967499999996,y:-.0018583499999986763}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.03688484999999986,y:.25026835000000003},bottom1:{type:"text",text:"{VAL}",x:-.02235315000000071,y:-.25026835000000003}},refblocks:{left1:{x:-.12356015000000009,y:-.006648049999999239},left2:{x:-.37614274999999964,y:-.002711249999999721},right1:{x:.11531695000000042,y:-.006648049999999239},right2:{x:.37614274999999964,y:-.0017148499999992683}},bounds:{minX:-.4043011909999996,maxX:.4043011909999996,minY:-.25026835000000003,maxY:.25026835000000003,width:.8086023819999992,height:.5005367000000001,centerX:0,centerY:0},circles:{}};delete EU.refblocks.left1,delete EU.refblocks.right1,EU.bounds.width+=.2;var SZe=Ph(EU).changeTextAnchor("{VAL}","middle_top").labelPort("left2",["1"]).labelPort("right2",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),EZe=_0(SZe),wZe=EZe.primitives.filter(r=>r.type==="text"),E0e=wZe.find(r=>r.text==="{VAL}");E0e.anchor="middle_right",E0e.x=-.3,E0e.y=0;var w0e=wZe.find(r=>r.text==="{REF}");w0e.anchor="middle_left",w0e.x=.3,w0e.y=0;var IQt=EZe,BQt={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.04403629999999836},{x:-.1199943999999995,y:-.08825540000000132}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1199943999999995,y:.1763280000000016},{x:.14458890000000002,y:.04403629999999836}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1199943999999995,y:-.08825539999999776},{x:-.1199943999999995,y:.1763280000000016}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.14458890000000002,y:.1763280000000016},{x:.14458890000000002,y:-.08825539999999776}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.12219909999999956,y:.04403629999999836},{x:-.5168693999999996,y:.04403629999999836}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5233797,y:.04395110000000102},{x:.14967160000000002,y:.04395110000000102}],color:"primary",fill:!1},"path43-5":{type:"path",points:[{x:.19156529999999972,y:-.0884020999999997},{x:.14591529999999908,y:-.08876210000000029}],color:"primary",fill:!1},"path43-5-2":{type:"path",points:[{x:.19233440000000046,y:-.1355493999999986},{x:.19197439999999988,y:-.08989940000000018}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999996715,y:.27384529999999785},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999999524,y:-.2738453000000014}},refblocks:{left1:{x:-.5191471000000001,y:.0449206999999987},right1:{x:.5191471000000001,y:.043896100000001326}},bounds:{minX:-.5473055410000001,maxX:.5473055410000001,minY:-.2738453000000014,maxY:.27384529999999785,width:1.0946110820000001,height:.5476905999999993,centerX:0,centerY:-17763568394002505e-31},circles:{}},TZe=Ph(BQt).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),jQt=_0(TZe),VQt={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.36197569999999946},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.43234960000000044},left1:{type:"text",text:"RPM",x:0,y:-.025}},refblocks:{left1:{x:-.5446330999999993,y:.000852800000000542},right1:{x:.5381638000000004,y:-.00014359999999924433}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:0,maxY:0,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:0},circles:{path1:{type:"circle",x:-.006997299999999651,y:-.007128299999999532,radius:.28854213,color:"primary",fill:!1}}},{paths:HQt,texts:qQt,bounds:wU,refblocks:MZe,circles:$Qt}=VQt,T0e=ym({primitives:[...Object.values(HQt),...Object.values($Qt),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"},{...qQt.left1,y:.01,anchor:"center",fontSize:.2}],ports:[{...MZe.left1,labels:["1"]},{...MZe.right1,labels:["2"]}],size:{width:wU.width,height:wU.height},center:{x:wU.centerX,y:wU.centerY}}),{5:GQt,...YQt}=T0e.primitives;function XQt(r){return typeof r=="object"}var CZe=_0({...T0e,primitives:Object.values(YQt).filter(XQt)}),WQt={...CZe,primitives:[...CZe.primitives,GQt]},ZQt={paths:{path11:{type:"path",points:[{x:-.5176700499999997,y:.041745050000000505},{x:-.10888805000000024,y:.041745050000000505}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.1031184499999993,y:.041745050000000505},{x:.5246894499999994,y:.041745050000000505}],color:"primary",fill:!1},"path11-0":{type:"path",points:[{x:-.09343985000000021,y:-.14620634999999882},{x:-.0930998500000002,y:.2583405500000009}],color:"primary",fill:!1},"path11-0-3":{type:"path",points:[{x:.08519034999999908,y:-.14503384999999902},{x:.08553034999999909,y:.2595130500000007}],color:"primary",fill:!1},"path11-0-9":{type:"path",points:[{x:-.08315755000000014,y:.055934450000000524},{x:-.08415755000000047,y:-.14678124999999964},{x:.08653524999999984,y:-.05104664999999953},{x:-.08126175000000035,y:.05647715000000031}],color:"primary",fill:!0},"path11-0-9-0":{type:"path",points:[{x:.07661224999999927,y:.256654450000001},{x:.07761224999999983,y:.05393885000000109},{x:-.0930805500000007,y:.1496734500000012},{x:.07471644999999949,y:.25719715000000143}],color:"primary",fill:!0},"path12-2":{type:"path",points:[{x:.09001085000000009,y:-.05964874999999914},{x:.2707999499999998,y:-.1711147499999992}],color:"primary",fill:!1},"path12-2-9":{type:"path",points:[{x:.27291134999999955,y:-.17591894999999935},{x:.27124034999999935,y:-.30168314999999923}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:.0077081499999991365,y:.41683614999999996},bottom1:{type:"text",text:"{VAL}",x:-.03022294999999975,y:-.41683614999999996}},refblocks:{bottom1:{x:.27223905000000026,y:-.3087962499999999},left1:{x:-.54139845,y:.04089205000000051},right1:{x:.5413984499999995,y:.04188845000000008}},bounds:{minX:-.569556891,maxX:.5695568909999995,minY:-.41683614999999996,maxY:.41683614999999996,width:1.1391137819999995,height:.8336722999999999,centerX:-2220446049250313e-31,centerY:0},circles:{path1:{type:"circle",x:-.0037626500000003116,y:.048873150000000365,radius:.28854213,color:"primary",fill:!1}}},RZe=Ph(ZQt).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).labelPort("bottom1",["3"]).changeTextAnchor("{REF}","middle_bottom").build(),AZe=_0(RZe),PZe=AZe.primitives.filter(r=>r.type==="text"),QQt=PZe.find(r=>r.text==="{REF}"),KQt=PZe.find(r=>r.text==="{VAL}");QQt.y=0,KQt.y=0;var JQt=AZe,eKt={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.04403629999999992},{x:-.1199943999999995,y:-.08825540000000043}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1199943999999995,y:.17632800000000026},{x:.14458890000000002,y:.04403629999999992}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1199943999999995,y:-.0882553999999991},{x:-.1199943999999995,y:.17632800000000026}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.14458890000000002,y:.17632800000000026},{x:.14458890000000002,y:-.0882553999999991}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.12219909999999956,y:.04403629999999992},{x:-.5168693999999996,y:.04403629999999992}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5233797000000002,y:.043951100000000354},{x:.1496715999999998,y:.043951100000000354}],color:"primary",fill:!1},"path43-8":{type:"path",points:[{x:.14339119999999994,y:.17681090000000044},{x:.07728679999999954,y:.17632089999999967}],color:"primary",fill:!1},"path43-8-8":{type:"path",points:[{x:.1446069000000001,y:-.08908179999999888},{x:.0785024999999997,y:-.08957179999999942}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999996715,y:.27384530000000007},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999977319,y:-.27384529999999985}},refblocks:{left1:{x:-.5191471000000001,y:.044920700000000924},right1:{x:.5191470999999999,y:.04389609999999999}},bounds:{minX:-.5473055410000001,maxX:.5473055409999998,minY:-.27384529999999985,maxY:.27384530000000007,width:1.094611082,height:.5476905999999999,centerX:-11102230246251565e-32,centerY:11102230246251565e-32},circles:{}},{paths:tKt,texts:DZe,bounds:TU,refblocks:NZe,circles:nKt}=eKt,LZe=ym({primitives:[...Object.values(tKt),...Object.values(nKt),{...DZe.top1,anchor:"middle_bottom"},{...DZe.bottom1,anchor:"middle_top"}],ports:[{...NZe.left1,labels:["1"]},{...NZe.right1,labels:["2"]}],size:{width:TU.width,height:TU.height},center:{x:TU.centerX,y:TU.centerY}}),M0e=_0(LZe),rKt=M0e.primitives.find(r=>r.type==="text"&&r.text==="{REF}"),iKt=M0e.primitives.find(r=>r.type==="text"&&r.text==="{VAL}");rKt.anchor="middle_left",iKt.anchor="middle_right";var aKt=M0e,oKt={paths:{path11:{type:"path",points:[{x:-.3274461945,y:.20527883627037657},{x:-.021085194500000348,y:.007570136270376837}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2331163055000003,y:.1251673362703769},{x:.2320633055000001,y:.3759855362703768}],color:"primary",fill:!1},"path12-2":{type:"path",points:[{x:.23221610549999938,y:-.0818845637296235},{x:.2311631054999992,y:-.33270276372962315}],color:"primary",fill:!1},"path11-0":{type:"path",points:[{x:-.013263894499999873,y:-.1792007637296229},{x:-.012923894499999866,y:.2253461362703768}],color:"primary",fill:!1},"path11-0-3":{type:"path",points:[{x:.23222970550000066,y:.12047013627037662},{x:-.011307094499999115,y:.11996013627037683}],color:"primary",fill:!1},"path11-0-9":{type:"path",points:[{x:-.1124341944999998,y:.131359936270377},{x:-.16993279449999954,y:.039004036270377185},{x:-.05822649449999928,y:.03212003627037707},{x:-.11133889449999979,y:.13104553627037707}],color:"primary",fill:!0},"path11-0-3-8":{type:"path",points:[{x:.23230320549999983,y:-.08329316372962325},{x:-.011233594499999944,y:-.07900616372962332}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.19541139450000045,y:.389088136270376},bottom1:{type:"text",text:"{VAL}",x:-.031363394499999364,y:-.42359956372962415}},refblocks:{top1:{x:.2317438004035266,y:.3954411227296242},bottom1:{x:.2308431668082036,y:-.35215823360635445},left1:{x:-.34055979449999985,y:.21512343627037622}},bounds:{minX:-.3687182354999998,maxX:.3687182354999999,minY:-.42359956372962415,maxY:.42359956372962415,width:.7374364709999996,height:.8471991274592483,centerX:27755575615628914e-33,centerY:0},circles:{path1:{type:"circle",x:.08017610549999987,y:.006746336270376352,radius:.28854213,color:"primary",fill:!1}}},{paths:sKt,texts:zZe,bounds:MU,refblocks:C0e,circles:lKt}=oKt,OZe=ym({primitives:[...Object.values(sKt),...Object.values(lKt),{...zZe.top1,anchor:"middle_left"},{...zZe.bottom1,anchor:"middle_right"}],ports:[{...C0e.top1,labels:["1"]},{...C0e.bottom1,labels:["2"]},{...C0e.left1,labels:["3"]}],size:{width:MU.width,height:MU.height},center:{x:MU.centerX,y:MU.centerY}}),UZe=_0(OZe),kZe=UZe.primitives.filter(r=>r.type==="text"),cKt=kZe.find(r=>r.text==="{REF}");cKt.y=.1;var FZe=kZe.find(r=>r.text==="{VAL}");FZe.y=.1,FZe.x=-.4;var uKt=UZe,fKt={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.36197569999999946},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.43234960000000044},left1:{type:"text",text:"Var",x:-.19436529999999896,y:.07249430000000023}},refblocks:{left1:{x:-.5446330999999993,y:.000852800000000542},right1:{x:.5381638000000004,y:-.00014359999999924433}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:0,maxY:0,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:0},circles:{path1:{type:"circle",x:-.006997299999999651,y:-.007128299999999532,radius:.28854213,color:"primary",fill:!1}}},{paths:dKt,texts:R0e,bounds:CU,refblocks:IZe,circles:pKt}=fKt,BZe=ym({primitives:[...Object.values(dKt),...Object.values(pKt),{...R0e.top1,x:0,y:-.3594553499999995,anchor:"middle_top"},{...R0e.bottom1,x:0,y:.35,anchor:"middle_bottom"},{...R0e.left1,x:-.02,y:.01,fontSize:.2,anchor:"center"}],ports:[{...IZe.left1,labels:["1"]},{...IZe.right1,labels:["2"]}],size:{width:CU.width,height:CU.height},center:{x:CU.centerX,y:CU.centerY}}),hKt=_0(BZe),mKt={paths:{path40:{type:"path",points:[{x:.08342510000000014,y:.04403649999999937},{x:-.18115819999999938,y:-.0882552000000012}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1811582000000007,y:.1763281999999997},{x:.08342509999999881,y:.04403649999999937}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1811582000000007,y:-.0882552000000012},{x:-.1811582000000007,y:.17632819999999816}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.0949504999999995,y:.17485119999999976},{x:.09600949999999897,y:-.09185079999999957}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.1954338999999996,y:.04403649999999937},{x:-.5191807000000004,y:.04403649999999937}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5253116,y:.043951299999999804},{x:.20527070000000047,y:.043951299999999804}],color:"primary",fill:!1},"path43-6":{type:"path",points:[{x:.1854899999999995,y:.1748848999999999},{x:.18654899999999874,y:-.09181709999999943}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999994495,y:.27384530000000007},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999977319,y:-.27384530000000007}},refblocks:{left1:{x:-.5191471,y:.044920799999999206},right1:{x:.5191470999999999,y:.04389609999999999}},bounds:{minX:-.547305541,maxX:.5473055409999998,minY:-.27384530000000007,maxY:.27384530000000007,width:1.0946110819999997,height:.5476906000000001,centerX:-5551115123125783e-32,centerY:0},circles:{}},{paths:vKt,texts:jZe,bounds:RU,refblocks:VZe,circles:yKt}=mKt,HZe=ym({primitives:[...Object.values(vKt),...Object.values(yKt),{...jZe.top1,anchor:"middle_bottom"},{...jZe.bottom1,anchor:"middle_top"}],ports:[{...VZe.left1,labels:["1"]},{...VZe.right1,labels:["2"]}],size:{width:RU.width,height:RU.height},center:{x:RU.centerX,y:RU.centerY}}),A0e=_0(HZe),gKt=A0e.primitives.find(r=>r.type==="text"&&r.text==="{REF}"),_Kt=A0e.primitives.find(r=>r.type==="text"&&r.text==="{VAL}");gKt.anchor="middle_left",_Kt.anchor="middle_right";var xKt=A0e,bKt={paths:{path5:{type:"path",points:[{x:-.5245830500000004,y:.004659100000001359},{x:-.25999975000000086,y:.004659100000001359}],color:"primary",fill:!1},path6:{type:"path",points:[{x:.2691672500000002,y:.004659100000001359},{x:.5337505499999997,y:.004659100000001359}],color:"primary",fill:!1},path7:{type:"path",points:[{x:.2691672500000002,y:-.23346590000000056},{x:-.25999974999999953,y:.2427841000000015}],color:"primary",fill:!1},path8:{type:"path",points:[{x:.37500025000000026,y:-.23346590000000056},{x:.2691672500000002,y:-.23346590000000056}],color:"primary",fill:!1},path9:{type:"path",points:[{x:.004585150000000482,y:.13695090000000043},{x:.26916815000000094,y:.13695090000000043},{x:.26916815000000094,y:-.1276325000000007},{x:-.2599988499999988,y:-.1276325000000007},{x:-.2599988499999988,y:.13695090000000043},{x:.004585150000001814,y:.13695090000000043}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.05849044999999986,y:.25166549999999965},bottom1:{type:"text",text:"{VAL}",x:.008507150000000685,y:-.25166549999999965}},refblocks:{left1:{x:-.5392315500000002,y:.002969399999999567},right1:{x:.5392315500000002,y:.005339799999999784}},bounds:{minX:-.5673899910000002,maxX:.5673899910000002,minY:-.25166549999999965,maxY:.25166549999999965,width:1.1347799820000004,height:.5033309999999993,centerX:0,centerY:0},circles:{}},{paths:SKt,texts:qZe,bounds:AU,refblocks:$Ze}=bKt,GZe=ym({primitives:[...Object.values(SKt),{...qZe.top1,anchor:"middle_left"},{...qZe.bottom1,anchor:"middle_right"}],ports:[{...$Ze.left1,labels:["1","-"]},{...$Ze.right1,labels:["2","+"]}],size:{width:AU.width,height:AU.height},center:{x:AU.centerX,y:AU.centerY}}),EKt=_0(GZe),wKt={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.36197569999999946},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.43234960000000044},left1:{type:"text",text:"Var",x:0,y:-.025}},refblocks:{left1:{x:-.5446330999999993,y:.000852800000000542},right1:{x:.5381638000000004,y:-.00014359999999924433}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:0,maxY:0,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:0},circles:{path1:{type:"circle",x:-.006997299999999651,y:-.007128299999999532,radius:.28854213,color:"primary",fill:!1}}},{paths:TKt,texts:MKt,bounds:PU,refblocks:YZe,circles:CKt}=wKt,P0e=ym({primitives:[...Object.values(TKt),...Object.values(CKt),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"},{...MKt.left1,anchor:"center",y:.02,fontSize:.2}],ports:[{...YZe.left1,labels:["1"]},{...YZe.right1,labels:["2"]}],size:{width:PU.width,height:PU.height},center:{x:PU.centerX,y:PU.centerY}}),{5:RKt,...AKt}=P0e.primitives;function PKt(r){return typeof r=="object"}var XZe=_0({...P0e,primitives:Object.values(AKt).filter(PKt)}),DKt={...XZe,primitives:[...XZe.primitives,RKt]},NKt={paths:{path11:{type:"path",points:[{x:-.5274831500000005,y:.031252300000000455},{x:-.30105415000000013,y:.031252300000000455}],color:"primary",fill:!1},"path11-5-5":{type:"path",points:[{x:.09765764999999949,y:.1295162000000003},{x:-.0011297500000011507,y:-.061970899999999496},{x:-.10778645000000164,y:.1295162000000003}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2932119499999999,y:.031252300000000455},{x:.5339524499999997,y:.031252300000000455}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.021146249999999478,y:.4010973},bottom1:{type:"text",text:"{VAL}",x:-.00661455000000033,y:-.4010973}},refblocks:{left1:{x:-.5413984499999998,y:.030399499999999913},right1:{x:.54139845,y:.0313958999999997}},bounds:{minX:-.5695568909999997,maxX:.569556891,minY:-.4010973,maxY:.4010973,width:1.1391137819999997,height:.8021946,centerX:11102230246251565e-32,centerY:0},circles:{path1:{type:"circle",x:-.0037626500000000895,y:.03838059999999999,radius:.28854213,color:"primary",fill:!1}}},WZe=Ph(NKt).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),LKt=_0(WZe),zKt={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.36197569999999946},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.43234960000000044},left1:{type:"text",text:"Wh",x:0,y:-.025}},refblocks:{left1:{x:-.5446330999999993,y:.000852800000000542},right1:{x:.5381638000000004,y:-.00014359999999924433}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:0,maxY:0,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:0},circles:{path1:{type:"circle",x:-.006997299999999651,y:-.007128299999999532,radius:.28854213,color:"primary",fill:!1}}},{paths:OKt,texts:UKt,bounds:DU,refblocks:ZZe,circles:kKt}=zKt,D0e=ym({primitives:[...Object.values(OKt),...Object.values(kKt),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"},{...UKt.left1,anchor:"center",y:.01,fontSize:.2}],ports:[{...ZZe.left1,labels:["1"]},{...ZZe.right1,labels:["2"]}],size:{width:DU.width,height:DU.height},center:{x:DU.centerX,y:DU.centerY}}),{5:FKt,...IKt}=D0e.primitives;function BKt(r){return typeof r=="object"}var QZe=_0({...D0e,primitives:Object.values(IKt).filter(BKt)}),jKt={...QZe,primitives:[...QZe.primitives,FKt]},VKt={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.36197569999999946},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.43234960000000044},left1:{type:"text",text:"W",x:0,y:-.025}},refblocks:{left1:{x:-.5446330999999993,y:.000852800000000542},right1:{x:.5381638000000004,y:-.00014359999999924433}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:0,maxY:0,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:0},circles:{path1:{type:"circle",x:-.006997299999999651,y:-.007128299999999532,radius:.28854213,color:"primary",fill:!1}}},{paths:HKt,texts:qKt,bounds:NU,refblocks:KZe,circles:$Kt}=VKt,N0e=ym({primitives:[...Object.values(HKt),...Object.values($Kt),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"},{...qKt.left1,anchor:"center",y:.01,fontSize:.3}],ports:[{...KZe.left1,labels:["1"]},{...KZe.right1,labels:["2"]}],size:{width:NU.width,height:NU.height},center:{x:NU.centerX,y:NU.centerY}}),{5:GKt,...YKt}=N0e.primitives;function XKt(r){return typeof r=="object"}var JZe=_0({...N0e,primitives:Object.values(YKt).filter(XKt)}),WKt={...JZe,primitives:[...JZe.primitives,GKt]},ZKt={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.04403629999999992},{x:-.1199943999999995,y:-.08825540000000043}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1199943999999995,y:.17632800000000026},{x:.14458890000000002,y:.04403629999999992}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1199943999999995,y:-.0882553999999991},{x:-.1199943999999995,y:.17632800000000026}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.14458890000000002,y:.17632800000000026},{x:.14458890000000002,y:-.0882553999999991}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.12219909999999956,y:.04403629999999992},{x:-.5168693999999996,y:.04403629999999992}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5233797000000002,y:.043951100000000354},{x:.1496715999999998,y:.043951100000000354}],color:"primary",fill:!1},"path43-8":{type:"path",points:[{x:.14339119999999994,y:.17681090000000044},{x:.07728679999999954,y:.17632089999999967}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999996715,y:.27384530000000007},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999977319,y:-.27384529999999985}},refblocks:{left1:{x:-.5191471000000001,y:.044920700000000924},right1:{x:.5191470999999999,y:.04389609999999999}},bounds:{minX:-.5473055410000001,maxX:.5473055409999998,minY:-.27384529999999985,maxY:.27384530000000007,width:1.094611082,height:.5476905999999999,centerX:-11102230246251565e-32,centerY:11102230246251565e-32},circles:{}},{paths:QKt,texts:eQe,bounds:LU,refblocks:tQe,circles:KKt}=ZKt,nQe=ym({primitives:[...Object.values(QKt),...Object.values(KKt),{...eQe.top1,anchor:"middle_bottom"},{...eQe.bottom1,anchor:"middle_top"}],ports:[{...tQe.left1,labels:["1"]},{...tQe.right1,labels:["2"]}],size:{width:LU.width,height:LU.height},center:{x:LU.centerX,y:LU.centerY}}),L0e=_0(nQe),JKt=L0e.primitives.find(r=>r.type==="text"&&r.text==="{REF}"),eJt=L0e.primitives.find(r=>r.type==="text"&&r.text==="{VAL}");JKt.anchor="middle_left",eJt.anchor="middle_right";var tJt=L0e,_4={ac_voltmeter_horz:QYe,ac_voltmeter_vert:HYt,avalanche_diode_horz:tXe,avalanche_diode_vert:XYt,battery_horz:iXe,battery_vert:KYt,boxresistor_down:nXt,boxresistor_left:aXt,boxresistor_right:lXt,boxresistor_up:fXt,capacitor_down:hXt,capacitor_left:mXt,capacitor_polarized_down:gXt,capacitor_polarized_left:_Xt,capacitor_polarized_right:vXe,capacitor_polarized_up:SXt,capacitor_right:hXe,capacitor_up:TXt,constant_current_diode_horz:MXt,constant_current_diode_vert:CXt,crystal_4pin_horz:xXe,crystal_4pin_vert:AXt,crystal_horz:PXt,crystal_vert:DXt,darlington_pair_transistor_horz:NXt,darlington_pair_transistor_vert:LXt,dc_ammeter_horz:Rue,dc_ammeter_vert:VXt,dc_voltmeter_horz:Due,dc_voltmeter_vert:ZXt,diac_horz:MXe,diac_vert:eWt,diode_down:nWt,diode_left:rWt,diode_right:YO,diode_up:iWt,dpdt_switch_horz:PXe,dpdt_switch_vert:lWt,dpst_switch_horz:OXe,dpst_switch_vert:fWt,filled_diode_horz:FXe,filled_diode_vert:pWt,frequency_meter_horz:Uue,frequency_meter_vert:bWt,fuse_horz:VXe,fuse_vert:TWt,ground_horz:HXe,ground_vert:DWt,gunn_diode_horz:NWt,gunn_diode_vert:LWt,igbt_transistor_horz:$Xe,igbt_transistor_vert:OWt,illuminated_push_button_normally_open_horz:YXe,illuminated_push_button_normally_open_vert:kWt,inductor_down:jWt,inductor_left:VWt,inductor_right:jue,inductor_up:KXe,laser_diode_horz:eWe,laser_diode_vert:qWt,led_down:XWt,led_left:WWt,led_right:tU,led_up:QWt,light_dependent_resistor_horz:sWe,light_dependent_resistor_vert:tZt,mosfet_depletion_normally_on_horz:fWe,mosfet_depletion_normally_on_vert:iZt,mushroom_head_normally_open_momentary_horz:mWe,mushroom_head_normally_open_momentary_vert:lZt,n_channel_d_mosfet_transistor_horz:yWe,n_channel_d_mosfet_transistor_vert:dZt,n_channel_e_mosfet_transistor_horz:bWe,n_channel_e_mosfet_transistor_vert:vZt,njfet_transistor_horz:TWe,njfet_transistor_vert:xZt,npn_bipolar_transistor_horz:AWe,npn_bipolar_transistor_vert:wZt,opamp_no_power_down:MZt,opamp_no_power_left:CZt,opamp_no_power_right:cU,opamp_no_power_up:RZt,opamp_with_power_down:PZt,opamp_with_power_left:DZt,opamp_with_power_right:uU,opamp_with_power_up:NZt,p_channel_d_mosfet_transistor_horz:DWe,p_channel_d_mosfet_transistor_vert:UZt,p_channel_e_mosfet_transistor_horz:OWe,p_channel_e_mosfet_transistor_vert:BZt,photodiode_horz:FWe,photodiode_vert:HZt,pjfet_transistor_horz:VWe,pjfet_transistor_vert:YZt,pnp_bipolar_transistor_horz:GWe,pnp_bipolar_transistor_vert:QZt,potentiometer_horz:WWe,potentiometer_vert:tQt,potentiometer2_horz:KWe,potentiometer2_vert:oQt,power_factor_meter_horz:nZe,power_factor_meter_vert:uQt,push_button_normally_closed_momentary_horz:oZe,push_button_normally_closed_momentary_vert:hQt,push_button_normally_open_momentary_horz:cZe,push_button_normally_open_momentary_vert:gQt,rectifier_diode_horz:fZe,rectifier_diode_vert:wQt,resonator_horz:dZe,resonator_vert:RQt,schottky_diode_horz:pZe,schottky_diode_vert:NQt,silicon_controlled_rectifier_horz:hZe,silicon_controlled_rectifier_vert:OQt,SPDT_switch_horz:_Ze,SPDT_switch_vert:FQt,SPST_switch_horz:SZe,SPST_switch_vert:IQt,step_recovery_diode_horz:TZe,step_recovery_diode_vert:jQt,tachometer_horz:T0e,tachometer_vert:WQt,triac_horz:RZe,triac_vert:JQt,tunnel_diode_horz:LZe,tunnel_diode_vert:aKt,unijunction_transistor_horz:OZe,unijunction_transistor_vert:uKt,var_meter_horz:BZe,var_meter_vert:hKt,varactor_diode_horz:HZe,varactor_diode_vert:xKt,varistor_horz:GZe,varistor_vert:EKt,varmeter_horz:P0e,varmeter_vert:DKt,volt_meter_horz:WZe,volt_meter_vert:LKt,watt_hour_meter_horz:D0e,watt_hour_meter_vert:jKt,wattmeter_horz:N0e,wattmeter_vert:WKt,zener_diode_horz:nQe,zener_diode_vert:tJt};Object.fromEntries(Object.keys(_4).map(r=>[r,r]));var nJt=j.enum(["up","down","left","right"]);j.enum(["top-to-bottom","left-to-right","bottom-to-top","right-to-left"]);var o7=j.array(j.string().or(j.number())),rQe=j.object({x:Ui,y:Ui,z:Ui}),rJt=j.object({x:j.union([j.number(),j.string()]),y:j.union([j.number(),j.string()]),z:j.union([j.number(),j.string()])}),z0e=j.object({rotationOffset:j.number().or(rJt).optional(),positionOffset:rQe.optional(),size:rQe.optional()}),iJt=z0e.extend({stlUrl:j.string()}),aJt=z0e.extend({objUrl:j.string(),mtlUrl:j.string().optional()}),oJt=z0e.extend({jscad:j.record(j.any())}),sJt=j.union([j.string(),iJt,aJt,oJt]),lJt=j.custom(r=>!0),p2=j.object({pcbX:Ui.optional(),pcbY:Ui.optional(),pcbRotation:Z4.optional(),layer:Wv.optional()}),zU=j.object({pcbX:Ui.optional(),pcbY:Ui.optional(),pcbRotation:Z4.optional(),schX:Ui.optional(),schY:Ui.optional(),schRotation:Z4.optional(),layer:Wv.optional(),footprint:lJt.optional()}),cJt=j.object({supplierPartNumbers:j.record(lue,j.array(j.string())).optional()}),i5=zU.merge(cJt).extend({key:j.any().optional(),name:j.string(),cadModel:sJt.optional(),children:j.any().optional(),symbolName:j.string().optional()});Ui.or(j.enum(["2x","3x","4x"]));var OU=j.object({pins:j.array(j.union([j.number(),j.string()])),direction:j.union([j.literal("top-to-bottom"),j.literal("left-to-right"),j.literal("bottom-to-top"),j.literal("right-to-left")])}),O0e=j.object({leftSize:j.number().optional().describe("@deprecated, use leftPinCount"),topSize:j.number().optional().describe("@deprecated, use topPinCount"),rightSize:j.number().optional().describe("@deprecated, use rightPinCount"),bottomSize:j.number().optional().describe("@deprecated, use bottomPinCount"),leftPinCount:j.number().optional(),rightPinCount:j.number().optional(),topPinCount:j.number().optional(),bottomPinCount:j.number().optional(),leftSide:OU.optional(),rightSide:OU.optional(),topSide:OU.optional(),bottomSide:OU.optional()}),iQe=j.record(j.object({marginLeft:Ui.optional(),marginRight:Ui.optional(),marginTop:Ui.optional(),marginBottom:Ui.optional(),leftMargin:Ui.optional(),rightMargin:Ui.optional(),topMargin:Ui.optional(),bottomMargin:Ui.optional()})),aQe=j.object({x:Ui,y:Ui}),U0e=j.object({edit_event_id:j.string(),in_progress:j.boolean().optional(),created_at:j.number()}),uJt=U0e.extend({pcb_edit_event_type:j.literal("edit_component_location").describe("deprecated"),edit_event_type:j.literal("edit_pcb_component_location"),pcb_component_id:j.string(),original_center:j.object({x:j.number(),y:j.number()}),new_center:j.object({x:j.number(),y:j.number()})}),fJt=U0e.extend({pcb_edit_event_type:j.literal("edit_trace_hint").describe("deprecated"),edit_event_type:j.literal("edit_pcb_trace_hint").optional(),pcb_port_id:j.string(),pcb_trace_hint_id:j.string().optional(),route:j.array(j.object({x:j.number(),y:j.number(),via:j.boolean().optional()}))}),dJt=U0e.extend({edit_event_type:j.literal("edit_schematic_component_location"),schematic_component_id:j.string(),original_center:j.object({x:j.number(),y:j.number()}),new_center:j.object({x:j.number(),y:j.number()})});j.union([uJt,fJt,dJt]);var pJt=j.object({selector:j.string(),relative_to:j.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),center:Xv}),hJt=j.object({pcb_port_selector:j.string(),offsets:j.array(RS)}),mJt=j.object({selector:j.string(),relative_to:j.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),center:Xv}),vJt=j.object({pcb_placements:j.array(pJt).optional(),manual_trace_hints:j.array(hJt).optional(),schematic_placements:j.array(mJt).optional()}),yJt=j.object({serverUrl:j.string().optional(),inputFormat:j.enum(["simplified","circuit-json"]).optional(),serverMode:j.enum(["job","solve-endpoint"]).optional(),cache:j.custom(r=>!0).optional()}),gJt=j.union([yJt,j.literal("sequential-trace"),j.literal("subcircuit"),j.literal("auto"),j.literal("auto-local"),j.literal("auto-cloud")]),oQe=zU.extend({name:j.string().optional(),children:j.any().optional(),key:j.any().optional()}),sQe=oQe.extend({layout:j.custom(r=>!0).optional(),manualEdits:vJt.optional(),schAutoLayoutEnabled:j.boolean().optional(),schTraceAutoLabelEnabled:j.boolean().optional(),routingDisabled:j.boolean().optional(),defaultTraceWidth:X9.optional(),minTraceWidth:X9.optional(),partsEngine:j.custom(r=>"findPart"in r).optional(),pcbRouteCache:j.custom(r=>!0).optional(),autorouter:gJt.optional()}),_Jt=sQe.extend({subcircuit:j.literal(!0)}),xJt=j.discriminatedUnion("subcircuit",[oQe.extend({subcircuit:j.literal(!1).optional()}),_Jt]),bJt=sQe.extend({width:Ui.optional(),height:Ui.optional(),outline:j.array(aQe).optional(),outlineOffsetX:Ui.optional(),outlineOffsetY:Ui.optional()});j.record(j.number().or(j.string()),j.string().or(j.array(j.string()).readonly()).or(j.array(j.string())));var SJt=i5.extend({manufacturerPartNumber:j.string().optional(),pinLabels:j.record(j.number().or(j.string()),j.string().or(j.array(j.string()).readonly())).optional(),internallyConnectedPins:j.array(j.array(j.string())).optional(),externallyConnectedPins:j.array(j.array(j.string())).optional(),schPinArrangement:O0e.optional(),schPortArrangement:O0e.optional(),schPinStyle:iQe.optional(),schPinSpacing:Ui.optional(),schWidth:Ui.optional(),schHeight:Ui.optional(),noSchematicRepresentation:j.boolean().optional()}),EJt=i5.extend({manufacturerPartNumber:j.string().optional(),pinLabels:j.record(j.number().or(j.string()),j.string().or(j.array(j.string()))).optional(),schPinStyle:iQe.optional(),schPinSpacing:Ui.optional(),schWidth:Ui.optional(),schHeight:Ui.optional(),schDirection:j.enum(["left","right"]).optional(),schPortArrangement:O0e.optional()}),wJt=j.discriminatedUnion("shape",[p2.omit({pcbRotation:!0,layer:!0}).extend({name:j.string().optional(),shape:j.literal("circle"),holeDiameter:Ui,outerDiameter:Ui,portHints:o7.optional()}),p2.omit({pcbRotation:!0,layer:!0}).extend({name:j.string().optional(),shape:j.literal("oval"),outerWidth:Ui,outerHeight:Ui,innerWidth:Ui,innerHeight:Ui,portHints:o7.optional()}),p2.omit({pcbRotation:!0,layer:!0}).extend({name:j.string().optional(),shape:j.literal("pill"),outerWidth:Ui,outerHeight:Ui,innerWidth:Ui,innerHeight:Ui,portHints:o7.optional()})]),TJt=i5.extend({resistance:hw,pullupFor:j.string().optional(),pullupTo:j.string().optional(),pulldownFor:j.string().optional(),pulldownTo:j.string().optional()}),MJt=i5.extend({maxResistance:hw}),CJt=i5.extend({frequency:zO,loadCapacitance:mw,pinVariant:j.enum(["2pin","4pin"]).optional()}),RJt=i5.extend({frequency:zO,loadCapacitance:mw,pinVariant:j.enum(["no_ground","ground_pin","two_ground_pins"]).optional()}),AJt=i5.extend({capacitance:mw,polarized:j.boolean().optional().default(!1),decouplingFor:j.string().optional(),decouplingTo:j.string().optional(),bypassFor:j.string().optional(),bypassTo:j.string().optional(),maxDecouplingTraceLength:j.number().optional()});j.object({name:j.string()}),j.object({name:j.string().optional(),pcbOnly:j.boolean().optional(),schOnly:j.boolean().optional()});var PJt=j.object({pcb:j.literal(!0).optional(),xDist:Ui,left:j.string(),right:j.string(),edgeToEdge:j.literal(!0).optional(),centerToCenter:j.literal(!0).optional()}),DJt=j.object({pcb:j.literal(!0).optional(),yDist:Ui,top:j.string(),bottom:j.string(),edgeToEdge:j.literal(!0).optional(),centerToCenter:j.literal(!0).optional()}),NJt=j.object({pcb:j.literal(!0).optional(),sameY:j.literal(!0).optional(),for:j.array(j.string())}),LJt=j.object({pcb:j.literal(!0).optional(),sameX:j.literal(!0).optional(),for:j.array(j.string())}),zJt=j.union([PJt,DJt,NJt,LJt]),OJt=p2.omit({pcbRotation:!0}).extend({shape:j.literal("rect"),width:Ui,height:Ui,portHints:o7.optional()}),UJt=p2.omit({pcbRotation:!0}).extend({shape:j.literal("rotated_rect"),width:Ui,height:Ui,ccwRotation:j.number(),portHints:o7.optional()}),kJt=p2.omit({pcbRotation:!0}).extend({shape:j.literal("circle"),radius:Ui,portHints:o7.optional()}),FJt=p2.omit({pcbRotation:!0}).extend({shape:j.literal("pill"),width:Ui,height:Ui,radius:Ui,portHints:o7.optional()}),IJt=j.union([kJt,OJt,UJt,FJt]),BJt=p2.omit({pcbRotation:!0}).extend({shape:j.literal("rect"),width:Ui,height:Ui}),jJt=p2.omit({pcbRotation:!0}).extend({shape:j.literal("circle"),radius:Ui});j.union([jJt,BJt]);var VJt=p2.omit({pcbRotation:!0}).extend({name:j.string().optional(),diameter:Ui.optional(),radius:Ui.optional()}).transform(r=>({...r,diameter:r.diameter??2*r.radius,radius:r.radius??r.diameter/2})),k0e=j.union([j.string(),j.custom(r=>!!r.getPortSelector)]),lQe=j.object({key:j.string().optional(),thickness:Ui.optional(),schematicRouteHints:j.array(aQe).optional(),pcbRouteHints:j.array(RS).optional(),schDisplayLabel:j.string().optional(),maxLength:j.number().optional()}),HJt=j.union([lQe.extend({path:j.array(k0e)}),lQe.extend({from:k0e,to:k0e})]),qJt=j.object({originalLayer:Wv.default("top").optional()}),$Jt=j.number().or(j.string().endsWith("mAh")).transform(r=>{if(typeof r=="string"){const e=r.replace("mAh",""),t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error("Invalid capacity");return t}return r}).describe("Battery capacity in mAh"),GJt=i5.extend({capacity:$Jt.optional()}),YJt=i5.extend({pinCount:j.number(),pitch:Ui.optional(),gender:j.enum(["male","female"]).optional().default("male"),showSilkscreenPinLabels:j.boolean().optional(),doubleRow:j.boolean().optional(),holeDiameter:Ui.optional(),platedDiameter:Ui.optional(),pinLabels:j.array(j.string()).optional(),facingDirection:j.enum(["left","right"]).optional()}),XJt=j.object({net:j.string().optional(),schX:Ui.optional(),schY:Ui.optional(),schRotation:Z4.optional(),anchorSide:j.enum(["left","up","right","down"]).optional()}),WJt=i5.extend({internallyConnectedPins:j.array(j.array(j.string())).optional()}),ZJt=i5.extend({transistorType:j.enum(["npn","pnp"])}),QJt=i5.extend({channelType:j.enum(["n","p"]),mosfetMode:j.enum(["enhancement","depletion"])}),KJt=i5.extend({inductance:oue}),JJt=i5.extend({}),een=i5.extend({color:j.string().optional()});i5.extend({ftype:j.literal("switch"),switchType:j.enum(["spst"]).default("spst"),isNormallyClosed:j.boolean().default(!1)});var ten=p2.extend({text:j.string(),anchorAlignment:j.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),font:j.enum(["tscircuit2024"]).optional(),fontSize:X9.optional(),color:j.string().optional()}),nen=p2.omit({pcbX:!0,pcbY:!0,pcbRotation:!0}).extend({route:j.array(RS),strokeWidth:X9.optional(),color:j.string().optional()});j.object({layer:j.string().optional(),thickness:Ui.optional(),route:j.array(RS)});var ren=zU.extend({fromLayer:Wv,toLayer:Wv,holeDiameter:Ui,outerDiameter:Ui}),ien=j.union([p2.omit({pcbRotation:!0}).extend({shape:j.literal("circle"),radius:Ui}),p2.extend({shape:j.literal("rect"),width:Ui,height:Ui})]),aen=i5.extend({voltage:LO});j.object({schX:Ui,schY:Ui,width:Ui,height:Ui}),j.object({x1:Ui,y1:Ui,x2:Ui,y2:Ui}),j.object({schX:Ui,schY:Ui,text:j.string()}),j.object({points:j.array(Xv),isFilled:j.boolean().optional().default(!1),fillColor:j.enum(["red","blue"]).optional()});var oen=p2.extend({text:j.string(),anchorAlignment:j.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),font:j.enum(["tscircuit2024"]).optional(),fontSize:X9.optional()}),sen=p2.omit({pcbX:!0,pcbY:!0,pcbRotation:!0}).extend({route:j.array(RS),strokeWidth:X9.optional()}),len=p2.omit({pcbX:!0,pcbY:!0,pcbRotation:!0}).extend({strokeWidth:Ui,x1:Ui,y1:Ui,x2:Ui,y2:Ui}),cen=p2.omit({pcbRotation:!0}).extend({isFilled:j.boolean().optional(),isOutline:j.boolean().optional(),strokeWidth:Ui.optional(),width:Ui,height:Ui}),uen=p2.omit({pcbRotation:!0}).extend({isFilled:j.boolean().optional(),isOutline:j.boolean().optional(),strokeWidth:Ui.optional(),radius:Ui}),cQe=j.object({x:Ui,y:Ui,via:j.boolean().optional(),toLayer:Wv.optional()}),fen=j.object({for:j.string().optional().describe("Selector for the port you're targeting, not required if you're inside a trace"),order:j.number().optional(),offset:RS.or(cQe).optional(),offsets:j.array(RS).or(j.array(cQe)).optional(),traceWidth:j.number().optional()});zU.extend({name:j.string(),pinNumber:j.number().optional(),aliases:j.array(j.string()).optional(),direction:nJt});var F0e=(r,e={})=>{let t=r._internal_store;if(!t){t={counts:{}},r._internal_store=t;for(const i of r){const a=i.type,o=i[`${a}_id`];if(!o)continue;const s=Number.parseInt(o.split("_").pop());Number.isNaN(s)||(t.counts[a]=Math.max(t.counts[a]??0,s))}}return new Proxy({},{get:(i,a)=>a==="toArray"?()=>r:{get:o=>r.find(s=>s.type===a&&s[`${a}_id`]===o),getUsing:o=>{const s=Object.keys(o);if(s.length!==1)throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");const l=s[0],c=l.replace("_id",""),u=r.find(f=>f.type===c&&f[l]===o[l]);return u?r.find(f=>f.type===a&&f[`${a}_id`]===u[`${a}_id`]):null},getWhere:o=>{const s=Object.keys(o);return r.find(l=>l.type===a&&s.every(c=>l[c]===o[c]))},list:o=>{const s=o?Object.keys(o):[];return r.filter(l=>l.type===a&&s.every(c=>l[c]===o[c]))},insert:o=>{var c;(c=t.counts)[a]??(c[a]=-1),t.counts[a]++;const s=t.counts[a],l={type:a,[`${a}_id`]:`${a}_${s}`,...o};return e.validateInserts&&(UYt[a]??WYe).parse(l),r.push(l),l},delete:o=>{const s=r.find(l=>l[`${a}_id`]===o);s&&r.splice(r.indexOf(s),1)},update:(o,s)=>{const l=r.find(c=>c.type===a&&c[`${a}_id`]===o);if(l)return Object.assign(l,s),l},select:o=>{if(a==="source_component")return r.find(s=>s.type==="source_component"&&s.name===o.replace(/\./g,""));if(a==="pcb_port"||a==="source_port"||a==="schematic_port"){const[s,l]=o.replace(/\./g,"").split(/[\s\>]+/),c=r.find(f=>f.type==="source_component"&&f.name===s);if(!c)return null;const u=r.find(f=>f.type==="source_port"&&f.source_component_id===c.source_component_id&&(f.name===l||(f.port_hints??[]).includes(l)));if(!u)return null;if(a==="source_port")return u;if(a==="pcb_port")return r.find(f=>f.type==="pcb_port"&&f.source_port_id===u.source_port_id);if(a==="schematic_port")return r.find(f=>f.type==="schematic_port"&&f.source_port_id===u.source_port_id)}}}})};F0e.unparsed=F0e;var I0e=F0e,den=Object.defineProperty,pen=(r,e)=>{for(var t in e)den(r,t,{get:e[t],enumerable:!0})},uQe={};pen(uQe,{Battery:()=>mtn,Board:()=>Oen,Capacitor:()=>Ken,Chip:()=>RQe,Constraint:()=>atn,Crystal:()=>Stn,Diode:()=>Jen,FabricationNotePath:()=>otn,FabricationNoteText:()=>stn,Footprint:()=>Pen,Group:()=>H0e,Hole:()=>xQe,Inductor:()=>_tn,Jumper:()=>etn,Keepout:()=>V0e,Led:()=>ttn,Mosfet:()=>wtn,Net:()=>vQe,NetAlias:()=>ctn,NormalComponent:()=>D2,PinHeader:()=>vtn,PlatedHole:()=>_Qe,Port:()=>AS,Potentiometer:()=>xtn,PowerSource:()=>ntn,PrimitiveComponent:()=>ex,PushButton:()=>btn,Renderable:()=>fQe,Resistor:()=>rtn,Resonator:()=>gtn,SilkscreenCircle:()=>utn,SilkscreenLine:()=>ptn,SilkscreenPath:()=>gQe,SilkscreenRect:()=>ftn,SilkscreenText:()=>dtn,SmtPad:()=>j0e,Subcircuit:()=>ltn,Trace:()=>xw,TraceHint:()=>wQe,Transistor:()=>Etn,Via:()=>htn});var hen=vg("tscircuit:renderable"),K3=["ReactSubtreesRender","InitializePortsFromChildren","CreateNetsFromProps","CreateTracesFromProps","CreateTraceHintsFromProps","SourceRender","SourceParentAttachment","PortMatching","SourceTraceRender","SourceAddConnectivityMapKey","SchematicComponentRender","SchematicPortRender","SchematicLayout","SchematicTraceRender","PcbComponentRender","PcbPrimitiveRender","PcbFootprintLayout","PcbPortRender","PcbPortAttachment","PcbLayout","PcbComponentSizeCalculation","PcbTraceRender","PcbTraceHintRender","PcbRouteNetIslands","CadModelRender","PartsEngineRender"],men=0,fQe=class{constructor(r){rr(this,"renderPhaseStates");rr(this,"shouldBeRemoved",!1);rr(this,"children");rr(this,"isPcbPrimitive",!1);rr(this,"isSchematicPrimitive",!1);rr(this,"_renderId");rr(this,"_currentRenderPhase",null);rr(this,"_asyncEffects",[]);rr(this,"parent",null);this._renderId=`${men++}`,this.children=[],this.renderPhaseStates={};for(const e of K3)this.renderPhaseStates[e]={initialized:!1,dirty:!1}}_markDirty(r){var t;this.renderPhaseStates[r].dirty=!0;const e=K3.indexOf(r);for(let n=e+1;n<K3.length;n++)this.renderPhaseStates[K3[n]].dirty=!0;(t=this.parent)!=null&&t._markDirty&&this.parent._markDirty(r)}_queueAsyncEffect(r,e){const t={promise:e(),phase:this._currentRenderPhase,effectName:r,complete:!1};this._asyncEffects.push(t),"root"in this&&this.root&&this.root.emit("asyncEffect:start",{effectName:r,componentDisplayName:this.getString(),phase:t.phase}),t.promise.then(()=>{t.complete=!0,"root"in this&&this.root&&this.root.emit("asyncEffect:end",{effectName:r,componentDisplayName:this.getString(),phase:t.phase})}).catch(n=>{console.error(`Async effect error in ${t.phase} "${r}":
|
|
12863
12863
|
${n.stack}`),t.complete=!0,"root"in this&&this.root&&this.root.emit("asyncEffect:end",{effectName:r,componentDisplayName:this.getString(),phase:t.phase,error:n.toString()})})}_emitRenderLifecycleEvent(r,e){hen(`${r}:${e} ${this.getString()}`);const t=`renderable:renderLifecycle:${r}:${e}`,n={renderId:this._renderId,componentDisplayName:this.getString(),type:t};"root"in this&&this.root&&(this.root.emit(t,n),this.root.emit("renderable:renderLifecycle:anyEvent",{...n,type:t}))}getString(){return this.constructor.name}_hasIncompleteAsyncEffects(){return this._asyncEffects.some(r=>!r.complete)}getCurrentRenderPhase(){return this._currentRenderPhase}getRenderGraph(){return{id:this._renderId,currentPhase:this._currentRenderPhase,renderPhaseStates:this.renderPhaseStates,shouldBeRemoved:this.shouldBeRemoved,children:this.children.map(r=>r.getRenderGraph())}}runRenderCycle(){for(const r of K3)this.runRenderPhaseForChildren(r),this.runRenderPhase(r)}runRenderPhase(r){var a,o,s;this._currentRenderPhase=r;const e=this.renderPhaseStates[r],t=e.initialized,n=e.dirty;if(!t&&this.shouldBeRemoved)return;if(this.shouldBeRemoved&&t){this._emitRenderLifecycleEvent(r,"start"),(a=this==null?void 0:this[`remove${r}`])==null||a.call(this),e.initialized=!1,e.dirty=!1,this._emitRenderLifecycleEvent(r,"end");return}const i=K3.indexOf(r)-1;if(i>=0){const l=K3[i];if(this._asyncEffects.filter(u=>u.phase===l).some(u=>!u.complete))return}if(this._emitRenderLifecycleEvent(r,"start"),t){n&&((o=this==null?void 0:this[`update${r}`])==null||o.call(this),e.dirty=!1),this._emitRenderLifecycleEvent(r,"end");return}e.dirty=!1,(s=this==null?void 0:this[`doInitial${r}`])==null||s.call(this),e.initialized=!0,this._emitRenderLifecycleEvent(r,"end")}runRenderPhaseForChildren(r){for(const e of this.children)e.runRenderPhaseForChildren(r),e.runRenderPhase(r)}renderError(r){throw typeof r=="string"?new Error(r):new Error(JSON.stringify(r,null,2))}},UU={},dQe=r=>{const e=Object.fromEntries(Object.entries(r).map(([t,n])=>[t.toLowerCase(),n]));Object.assign(UU,r),Object.assign(UU,e)};function ven(r,e){const t=r;return t.__tsci={...e},r}var pQe={supportsMutation:!0,createInstance(r,e){const t=UU[r];if(!t)throw Object.keys(UU).length===0?new Error("No components registered in catalogue, did you forget to import lib/register-catalogue in your test file?"):new Error(`Unsupported component type (not registered in @tscircuit/core catalogue): "${r}" See CREATING_NEW_COMPONENTS.md`);return ven(new t(e),{})},createTextInstance(){return{}},appendInitialChild(r,e){r.add(e)},appendChild(r,e){r.add(e)},appendChildToContainer(r,e){r.add(e)},finalizeInitialChildren(){return!1},prepareUpdate(){return null},shouldSetTextContent(){return!1},getRootHostContext(){return{}},getChildHostContext(){return{}},prepareForCommit(){return null},resetAfterCommit(){},commitMount(){},commitUpdate(){},removeChild(){},clearContainer(){},supportsPersistence:!1,getPublicInstance(r){return r},preparePortalMount(r){throw new Error("Function not implemented.")},scheduleTimeout(r,e){throw new Error("Function not implemented.")},cancelTimeout(r){throw new Error("Function not implemented.")},noTimeout:void 0,isPrimaryRenderer:!1,getInstanceFromNode(r){throw new Error("Function not implemented.")},beforeActiveInstanceBlur(){throw new Error("Function not implemented.")},afterActiveInstanceBlur(){throw new Error("Function not implemented.")},prepareScopeUpdate:(r,e)=>{throw new Error("Function not implemented.")},getInstanceFromScope:r=>{throw new Error("Function not implemented.")},detachDeletedInstance:r=>{throw new Error("Function not implemented.")},getCurrentEventPriority:()=>$7.DefaultEventPriority,getCurrentUpdatePriority:()=>$7.DefaultEventPriority,resolveUpdatePriority:()=>$7.DefaultEventPriority,setCurrentUpdatePriority:()=>{},maySuspendCommit:()=>!1,supportsHydration:!1},s7;od.version.startsWith("19.")?s7=aye(pQe):s7=cye(pQe);var hQe=r=>{const e={children:[],props:{name:"$root"},add(a){a.parent=this,this.children.push(a)},computePcbGlobalTransform(){return Yv()}},t=[],n=s7.createContainer(e,0,null,!1,null,"tsci",a=>{console.log("Error in createContainer"),console.error(a),t.push(a)},null);if(od.version.startsWith("19.")?(s7.updateContainerSync(r,n,null,()=>{}),s7.flushSyncWork()):s7.updateContainer(r,n,null,()=>{}),t.length>0)throw t[0];const i=s7.getPublicRootInstance(n);return i||e.children[0]},sR=(r,e)=>{if(typeof r=="number")return r;if(r.startsWith("pin"))return Number(r.slice(3));if(!e)throw new Error(`No pin labels provided and pin number or label is not a number: "${r}"`);for(const t in e)if((Array.isArray(e[t])?e[t]:[e[t]]).includes(r))return Number(t.replace("pin",""));throw new Error(`No pin labels provided and pin number or label is not a number: "${r}"`)},yen=(r,e)=>{if(!r)return;const t={},n={};for(const[i,a]of Object.entries(r)){const o=sR(i,e);n[o]={...n[o],...a}}for(const[i,a]of Object.entries(n)){const o=`pin${i}`;t[o]={bottom_margin:a.bottomMargin,left_margin:a.leftMargin,right_margin:a.rightMargin,top_margin:a.topMargin}}return t},gen=r=>{if(r){if("leftSide"in r||"rightSide"in r||"topSide"in r||"bottomSide"in r)return{left_side:r.leftSide,right_side:r.rightSide,top_side:r.topSide,bottom_side:r.bottomSide};if("leftPinCount"in r||"rightPinCount"in r||"topPinCount"in r||"bottomPinCount"in r)return{left_size:r.leftPinCount,right_size:r.rightPinCount,top_size:r.topPinCount,bottom_size:r.bottomPinCount};if("leftSize"in r||"rightSize"in r||"topSize"in r||"bottomSize"in r)return{left_size:r.leftSize,right_size:r.rightSize,top_size:r.topSize,bottom_size:r.bottomSize}}},_en=class extends Error{constructor(r,e,t){let n;const a=Object.keys(t).filter(o=>o!=="_errors").map(o=>t[o]._errors[0]?`${o} (${t[o]._errors[0]})`:`${o} (${JSON.stringify(t[o])})`).join(", ");"name"in e?n=`Invalid props for ${r} "${e.name}": ${a}`:"footprint"in e&&typeof e.footprint=="string"?n=`Invalid props for ${r} (unnamed ${e.footprint} component): ${a}`:n=`Invalid props for ${r} (unnamed): ${a}`,super(n),this.componentName=r,this.originalProps=e,this.formattedError=t}};function B0e(r,e){const t=e.match(/^#(\w+)/);if(t)return r.props.id===t[1];const n=e.match(/^\.(\w+)/);if(n)return r.isMatchingNameOrAlias(n[1]);let[i,...a]=e.split(/(?=[#.[])/);return i==="pin"&&(i="port"),i&&i!=="*"&&r.lowercaseComponentName!==i.toLowerCase()?!1:a.every(o=>{if(o.startsWith("#"))return r.props.id===o.slice(1);if(o.startsWith("."))return r.isMatchingNameOrAlias(o.slice(1));const s=o.match(/\[(\w+)=['"]?(.+?)['"]?\]/);if(!s)return!0;const[,l,c]=s;return r.props[l].toString()===c})}var lR=vg("tscircuit:primitive-component:selectAll"),ex=class extends fQe{constructor(e){super(e);rr(this,"parent",null);rr(this,"children");rr(this,"childrenPendingRemoval");rr(this,"props");rr(this,"_parsedProps");rr(this,"externallyAddedAliases");rr(this,"isPrimitiveContainer",!1);rr(this,"source_group_id",null);rr(this,"source_component_id",null);rr(this,"schematic_component_id",null);rr(this,"pcb_component_id",null);rr(this,"cad_component_id",null);this.children=[],this.childrenPendingRemoval=[],this.props=e??{},this.externallyAddedAliases=[];const t=this.config.zodProps.safeParse(e??{});if(t.success)this._parsedProps=t.data;else throw new _en(this.lowercaseComponentName,this.props,t.error.format())}get config(){return{componentName:"",zodProps:j.object({}).passthrough()}}get componentName(){return this.config.componentName}getInheritedProperty(e){let t=this;for(;t;){if(t._parsedProps&&e in t._parsedProps)return t._parsedProps[e];t=t.parent}}get lowercaseComponentName(){return this.componentName.toLowerCase()}get isSubcircuit(){var e;return!!this.props.subcircuit||this.lowercaseComponentName==="group"&&((e=this==null?void 0:this.parent)==null?void 0:e.isRoot)}get isGroup(){return this.lowercaseComponentName==="group"}setProps(e){var i,a;const t=this.config.zodProps.parse({...this.props,...e}),n=this.props;this.props=t,this._parsedProps=this.config.zodProps.parse(e),this.onPropsChange({oldProps:n,newProps:t,changedProps:Object.keys(e)}),(a=(i=this.parent)==null?void 0:i.onChildChanged)==null||a.call(i,this)}computePcbPropsTransform(){const{_parsedProps:e}=this;return J0(Th(e.pcbX??0,e.pcbY??0),M5((e.pcbRotation??0)*Math.PI/180))}_computePcbGlobalTransformBeforeLayout(){var n,i,a;const{_parsedProps:e}=this,t=this.getSubcircuit()._getPcbManualPlacementForComponent(this);if(t&&this.props.pcbX===void 0&&this.props.pcbY===void 0)return J0(((n=this.parent)==null?void 0:n._computePcbGlobalTransformBeforeLayout())??Yv(),J0(Th(t.x,t.y),M5((e.pcbRotation??0)*Math.PI/180)));if(this.isPcbPrimitive){const o=this.getPrimitiveContainer();if(o){const s=o._parsedProps.layer==="bottom",l=o._getGlobalPcbPositionBeforeLayout();if(s)return J0(Th(l.x,l.y),OT(),Th(-l.x,-l.y)),J0(((i=this.parent)==null?void 0:i._computePcbGlobalTransformBeforeLayout())??Yv(),OT(),this.computePcbPropsTransform())}}return J0(((a=this.parent)==null?void 0:a._computePcbGlobalTransformBeforeLayout())??Yv(),this.computePcbPropsTransform())}getPrimitiveContainer(){var e,t;return this.isPrimitiveContainer?this:((t=(e=this.parent)==null?void 0:e.getPrimitiveContainer)==null?void 0:t.call(e))??null}_getPcbCircuitJsonBounds(){return{center:{x:0,y:0},bounds:{left:0,top:0,right:0,bottom:0},width:0,height:0}}_getPcbPrimitiveFlippedHelpers(){const e=this.getPrimitiveContainer(),t=e?e._parsedProps.layer==="bottom":!1;return{isFlipped:t,maybeFlipLayer:i=>t?i==="top"?"bottom":"top":i}}_setPositionFromLayout(e){throw new Error(`_setPositionFromLayout not implemented for ${this.componentName}`)}computeSchematicPropsTransform(){const{_parsedProps:e}=this;return J0(Th(e.schX??0,e.schY??0))}computeSchematicGlobalTransform(){var t,n;const e=this._getSchematicGlobalManualPlacementTransform(this);return e||J0(((n=(t=this.parent)==null?void 0:t.computeSchematicGlobalTransform)==null?void 0:n.call(t))??Yv(),this.computeSchematicPropsTransform())}_getSchematicSymbolName(){const{_parsedProps:e}=this,t=this.config.schematicSymbolName;let n=e.schRotation;if(n===void 0&&(n=0),n=n%360,n<0&&(n+=360),e.schRotation!==void 0&&n%90!==0)throw new Error(`Schematic rotation ${e.schRotation} is not supported for ${this.componentName}`);const i=`${t}_horz`,a=`${t}_vert`,o=`${t}_up`,s=`${t}_down`,l=`${t}_left`,c=`${t}_right`;if(c in _4&&n===0)return c;if(o in _4&&n===90)return o;if(l in _4&&n===180)return l;if(s in _4&&n===270)return s;if(i in _4&&(n===0||n===180))return i;if(a in _4&&(n===90||n===270))return a;if(t in _4)return t}_getSchematicSymbolNameOrThrow(){const e=this._getSchematicSymbolName();if(!e)throw new Error(`No schematic symbol found (given: "${this.config.schematicSymbolName}")`);return e}getSchematicSymbol(){const e=this._getSchematicSymbolName();return e?_4[e]??null:null}_getPcbManualPlacementForComponent(e){var a;if(!this.isSubcircuit)return null;const t=this.props.layout,n=this.props.manualEdits;if(!t&&!n)return null;const i=((a=t==null?void 0:t.manual_pcb_placement_config)==null?void 0:a.positions)||(n==null?void 0:n.pcb_placements);if(!i)return null;for(const o of i)if(t&&B0e(e,o.selector)||e.props.name===o.selector)return li(this._computePcbGlobalTransformBeforeLayout(),o.center);return null}_getSchematicGlobalManualPlacementTransform(e){var n,i;const t=(n=this.getSubcircuit())==null?void 0:n._parsedProps.manualEdits;if(!t)return null;for(const a of t.schematic_placements??[])if((B0e(e,a.selector)||e.props.name===a.selector)&&a.relative_to==="group_center")return J0(((i=this.parent)==null?void 0:i._computePcbGlobalTransformBeforeLayout())??Yv(),Th(a.center.x,a.center.y));return null}_getGlobalPcbPositionBeforeLayout(){return li(this._computePcbGlobalTransformBeforeLayout(),{x:0,y:0})}_getGlobalSchematicPositionBeforeLayout(){return li(this.computeSchematicGlobalTransform(),{x:0,y:0})}get root(){var e;return((e=this.parent)==null?void 0:e.root)??null}onAddToParent(e){this.parent=e}onPropsChange(e){}onChildChanged(e){var t,n;(n=(t=this.parent)==null?void 0:t.onChildChanged)==null||n.call(t,e)}add(e){e.onAddToParent(this),e.parent=this,this.children.push(e)}addAll(e){for(const t of e)this.add(t)}remove(e){this.children=this.children.filter(t=>t!==e),this.childrenPendingRemoval.push(e),e.shouldBeRemoved=!0}getSubcircuitSelector(){const e=this._parsedProps.name,t=e?`${this.lowercaseComponentName}.${e}`:this.lowercaseComponentName;return!this.parent||this.parent.isSubcircuit?t:`${this.parent.getSubcircuitSelector()} > ${t}`}getFullPathSelector(){var i,a;const e=this._parsedProps.name,t=e?`${this.lowercaseComponentName}.${e}`:this.lowercaseComponentName,n=(a=(i=this.parent)==null?void 0:i.getFullPathSelector)==null?void 0:a.call(i);return n?`${n} > ${t}`:t}getNameAndAliases(){return[this._parsedProps.name,...this._parsedProps.portHints??[]].filter(Boolean)}isMatchingNameOrAlias(e){return this.getNameAndAliases().includes(e)}isMatchingAnyOf(e){return this.getNameAndAliases().some(t=>e.map(n=>n.toString()).includes(t))}getPcbSize(){throw new Error(`getPcbSize not implemented for ${this.componentName}`)}doesSelectorMatch(e){const t=[this.componentName,this.lowercaseComponentName],n=[this._parsedProps.name].filter(Boolean),i=e.trim().split(/\> /)[0],a=i[0];return i.length>1?!1:!!(e==="*"||e[0]==="#"&&e.slice(1)===this.props.id||e[0]==="."&&n.includes(e.slice(1))||/^[a-zA-Z0-9_]/.test(a)&&t.includes(a))}getSubcircuit(){var t,n;if(this.isSubcircuit)return this;const e=(n=(t=this.parent)==null?void 0:t.getSubcircuit)==null?void 0:n.call(t);if(!e)throw new Error("Component is not inside an opaque group (no board?)");return e}getGroup(){var e,t;return this.isGroup?this:((t=(e=this.parent)==null?void 0:e.getGroup)==null?void 0:t.call(e))??null}selectAll(e){lR(`selectAll: "${e}"`);const t=e.trim().split(/\s+/);let n=t[0]===">"?this.children:this.getSelectableDescendants(),i=[],a=!1,o=-1;for(const s of t)if(o++,lR(`
|
|
12864
12864
|
|
|
12865
|
-
iteration: ${o}`),lR(`part: "${t[o]}"`),lR(`currentSearch: [${n.map(l=>l.getString()).join(",")}]`),lR(`currentResults: [${i.map(l=>l.getString()).join(",")}]`),s===">")a=!0;else{const l=n.filter(u=>B0e(u,s));n=l.flatMap(u=>a?u.children:u.getSelectableDescendants()),i=l,a=!1}return i}selectOne(e,t){var i;let n=(i=t==null?void 0:t.type)==null?void 0:i.toLowerCase();return t!=null&&t.port&&(n="port"),n?this.selectAll(e).find(a=>a.lowercaseComponentName===n)??null:t!=null&&t.pcbPrimitive?this.selectAll(e).find(a=>a.isPcbPrimitive)??null:t!=null&&t.schematicPrimitive?this.selectAll(e).find(a=>a.isSchematicPrimitive)??null:this.selectAll(e)[0]??null}getAvailablePcbLayers(){var e,t;if(this.isPcbPrimitive){const{maybeFlipLayer:n}=this._getPcbPrimitiveFlippedHelpers();return"layer"in this._parsedProps||this.componentName==="SmtPad"?[n(this._parsedProps.layer??"top")]:"layers"in this._parsedProps?this._parsedProps.layers:this.componentName==="PlatedHole"?((t=(e=this.root)==null?void 0:e._getBoard())==null?void 0:t.allLayers)??["top","bottom"]:[]}return[]}getDescendants(){const e=[];for(const t of this.children)e.push(t),e.push(...t.getDescendants());return e}getSelectableDescendants(){const e=[];for(const t of this.children)t.isSubcircuit?e.push(t):(e.push(t),e.push(...t.getSelectableDescendants()));return e}_getPinCount(){return 0}_getSchematicBoxDimensions(){return null}renderError(e){var t;if(typeof e=="string")return super.renderError(e);(t=this.root)==null||t.db.pcb_placement_error.insert(e)}getString(){var i,a;const{lowercaseComponentName:e,_parsedProps:t,parent:n}=this;return(t==null?void 0:t.pinNumber)!==void 0&&((i=n==null?void 0:n.props)!=null&&i.name)&&(t!=null&&t.name)?`<${e}#${this._renderId}(pin:${t.pinNumber} .${n==null?void 0:n.props.name}>.${t.name}) />`:(a=n==null?void 0:n.props)!=null&&a.name&&(t!=null&&t.name)?`<${e}#${this._renderId}(.${n==null?void 0:n.props.name}>.${t==null?void 0:t.name}) />`:t!=null&&t.from&&(t!=null&&t.to)?`<${e}#${this._renderId}(from:${t.from} to:${t==null?void 0:t.to}) />`:t!=null&&t.name?`<${e}#${this._renderId} name=".${t==null?void 0:t.name}" />`:t!=null&&t.portHints?`<${e}#${this._renderId}(${t.portHints.map(o=>`.${o}`).join(", ")}) />`:`<${e}#${this._renderId} />`}get[Symbol.toStringTag](){return this.getString()}[Symbol.for("nodejs.util.inspect.custom")](){return this.getString()}};function mQe(r){const e=[];for(let t=0;t<r.length-1;t++)e.push([r[t],r[t+1]]);return e}var xen=j.object({name:j.string()}),vQe=class extends ex{constructor(){super(...arguments);rr(this,"source_net_id")}get config(){return{componentName:"Net",zodProps:xen}}getPortSelector(){return`net.${this.props.name}`}doInitialSourceRender(){const{db:e}=this.root,{_parsedProps:t}=this,n=e.source_net.insert({name:t.name,member_source_group_ids:[]});this.source_net_id=n.source_net_id}getAllConnectedPorts(){const e=this.getSubcircuit().selectAll("port"),t=[];for(const n of e){const i=n._getDirectlyConnectedTraces();for(const a of i)if(a._isExplicitlyConnectedToNet(this)){t.push(n);break}}return t}_getAllDirectlyConnectedTraces(){const e=this.getSubcircuit().selectAll("trace"),t=[];for(const n of e)n._isExplicitlyConnectedToNet(this)&&t.push(n);return t}doInitialPcbRouteNetIslands(){var a;if((a=this.root)!=null&&a.pcbDisabled||this.getSubcircuit()._parsedProps.routingDisabled)return;const{db:e}=this.root,t=this._getAllDirectlyConnectedTraces().filter(o=>{var s;return(((s=o._portsRoutedOnPcb)==null?void 0:s.length)??0)>0}),n=[];for(const o of t){const s=o._portsRoutedOnPcb,l=n.find(c=>s.some(u=>c.ports.includes(u)));if(!l){n.push({ports:[...s],traces:[o]});continue}l.traces.push(o),l.ports.push(...s)}if(n.length===0)return;const i=mQe(n);for(const[o,s]of i){const l=o.ports.map(b=>b._getGlobalPcbPositionBeforeLayout()),c=s.ports.map(b=>b._getGlobalPcbPositionBeforeLayout());let u=1/0,f=[-1,-1];for(let b=0;b<l.length;b++){const C=l[b];for(let N=0;N<c.length;N++){const U=c[N],G=Math.sqrt((C.x-U.x)**2+(C.y-U.y)**2);G<u&&(u=G,f=[b,N])}}const h=o.ports[f[0]],v=s.ports[f[1]],x=e.toArray().filter(b=>b.type==="pcb_smtpad"||b.type==="pcb_trace"||b.type==="pcb_plated_hole"||b.type==="pcb_hole"||b.type==="source_port"||b.type==="pcb_port"),{solution:E}=u5e(x.concat([{type:"source_trace",source_trace_id:"__net_trace_tmp",connected_source_port_ids:[h.source_port_id,v.source_port_id]}])),S=E[0];if(!S){this.renderError({pcb_trace_error_id:"",pcb_trace_id:"__net_trace_tmp",pcb_component_ids:[h.pcb_component_id,v.pcb_component_id].filter(Boolean),pcb_port_ids:[h.pcb_port_id,v.pcb_port_id].filter(Boolean),type:"pcb_trace_error",error_type:"pcb_trace_error",message:`Failed to route net islands for "${this.getString()}"`,source_trace_id:"__net_trace_tmp"});return}e.pcb_trace.insert(S)}}renderError(e){var t;if(typeof e=="string")return super.renderError(e);(t=this.root)==null||t.db.pcb_trace_error.insert(e)}},yQe=(r,e)=>{for(const t of e)typeof t=="string"&&t.startsWith("net.")&&(r.getSubcircuit().selectOne(t)||r.getSubcircuit().add(new vQe({name:t.split("net.")[1]})))},j0e=class extends ex{constructor(){super(...arguments);rr(this,"pcb_smtpad_id",null);rr(this,"matchedPort",null);rr(this,"isPcbPrimitive",!0)}get config(){return{componentName:"SmtPad",zodProps:IJt}}getPcbSize(){const{_parsedProps:e}=this;if(e.shape==="circle")return{width:e.radius*2,height:e.radius*2};if(e.shape==="rect")return{width:e.width,height:e.height};throw new Error(`getPcbSize for shape "${e.shape}" not implemented for ${this.componentName}`)}doInitialPortMatching(){var t;const e=(t=this.getPrimitiveContainer())==null?void 0:t.selectAll("port");if(this.props.portHints){for(const n of e)if(n.isMatchingAnyOf(this.props.portHints)){this.matchedPort=n,n.registerMatch(this);return}}}doInitialPcbPrimitiveRender(){var h,v,x,E,S,b,C,N,U;if((h=this.root)!=null&&h.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this;if(!t.portHints)return;const n=this.getPrimitiveContainer(),i=this.getSubcircuit(),a=this._getGlobalPcbPositionBeforeLayout();n==null||n._getGlobalPcbPositionBeforeLayout();const o=zT(this._computePcbGlobalTransformBeforeLayout()),s=Math.abs(o.rotation.angle*(180/Math.PI)-90)%180<.01,{maybeFlipLayer:l}=this._getPcbPrimitiveFlippedHelpers(),c=(n==null?void 0:n._parsedProps.pcbRotation)??0;let u=null;const f=((v=this.parent)==null?void 0:v.pcb_component_id)??((x=this.getPrimitiveContainer())==null?void 0:x.pcb_component_id);t.shape==="circle"?(u=e.pcb_smtpad.insert({pcb_component_id:f,pcb_port_id:(E=this.matchedPort)==null?void 0:E.pcb_port_id,layer:l(t.layer??"top"),shape:"circle",radius:t.radius,port_hints:t.portHints.map(G=>G.toString()),x:a.x,y:a.y,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0}),e.pcb_solder_paste.insert({layer:u.layer,shape:"circle",radius:u.radius*.7,x:u.x,y:u.y,pcb_component_id:u.pcb_component_id,pcb_smtpad_id:u.pcb_smtpad_id,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((S=this.getGroup())==null?void 0:S.pcb_group_id)??void 0})):t.shape==="rect"&&(u=c===0||s?e.pcb_smtpad.insert({pcb_component_id:f,pcb_port_id:(b=this.matchedPort)==null?void 0:b.pcb_port_id,layer:l(t.layer??"top"),shape:"rect",width:s?t.height:t.width,height:s?t.width:t.height,port_hints:t.portHints.map(G=>G.toString()),x:a.x,y:a.y,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((C=this.getGroup())==null?void 0:C.pcb_group_id)??void 0}):e.pcb_smtpad.insert({pcb_component_id:f,layer:t.layer??"top",shape:"rotated_rect",width:t.width,height:t.height,x:a.x,y:a.y,ccw_rotation:c,port_hints:t.portHints.map(G=>G.toString()),subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((N=this.getGroup())==null?void 0:N.pcb_group_id)??void 0}),u.shape==="rect"&&e.pcb_solder_paste.insert({layer:u.layer,shape:"rect",width:u.width*.7,height:u.height*.7,x:u.x,y:u.y,pcb_component_id:u.pcb_component_id,pcb_smtpad_id:u.pcb_smtpad_id,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((U=this.getGroup())==null?void 0:U.pcb_group_id)??void 0})),u&&(this.pcb_smtpad_id=u.pcb_smtpad_id)}doInitialPcbPortAttachment(){var t,n;if((t=this.root)!=null&&t.pcbDisabled)return;const{db:e}=this.root;e.pcb_smtpad.update(this.pcb_smtpad_id,{pcb_port_id:(n=this.matchedPort)==null?void 0:n.pcb_port_id})}_getPcbCircuitJsonBounds(){const{db:e}=this.root,t=e.pcb_smtpad.get(this.pcb_smtpad_id);if(t.shape==="rect")return{center:{x:t.x,y:t.y},bounds:{left:t.x-t.width/2,top:t.y+t.height/2,right:t.x+t.width/2,bottom:t.y-t.height/2},width:t.width,height:t.height};if(t.shape==="rotated_rect"){const n=t.ccw_rotation*Math.PI/180,i=Math.cos(n),a=Math.sin(n),o=t.width/2,s=t.height/2,l=Math.abs(o*i)+Math.abs(s*a),c=Math.abs(o*a)+Math.abs(s*i);return{center:{x:t.x,y:t.y},bounds:{left:t.x-l,right:t.x+l,top:t.y-c,bottom:t.y+c},width:l*2,height:c*2}}if(t.shape==="circle")return{center:{x:t.x,y:t.y},bounds:{left:t.x-t.radius,top:t.y-t.radius,right:t.x+t.radius,bottom:t.y+t.radius},width:t.radius*2,height:t.radius*2};throw new Error(`circuitJson bounds calculation not implemented for shape "${t.shape}"`)}_setPositionFromLayout(e){var i;const{db:t}=this.root;t.pcb_smtpad.update(this.pcb_smtpad_id,{x:e.x,y:e.y});const n=t.pcb_solder_paste.list().find(a=>a.pcb_smtpad_id===this.pcb_smtpad_id);t.pcb_solder_paste.update(n==null?void 0:n.pcb_solder_paste_id,{x:e.x,y:e.y}),(i=this.matchedPort)==null||i._setPositionFromLayout(e)}},gQe=class extends ex{constructor(){super(...arguments);rr(this,"pcb_silkscreen_path_id",null)}get config(){return{componentName:"SilkscreenPath",zodProps:sen}}doInitialPcbPrimitiveRender(){var s,l,c;if((s=this.root)!=null&&s.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=t.layer??"top";if(n!=="top"&&n!=="bottom")throw new Error(`Invalid layer "${n}" for SilkscreenPath. Must be "top" or "bottom".`);const i=this._computePcbGlobalTransformBeforeLayout(),a=this.getSubcircuit(),o=e.pcb_silkscreen_path.insert({pcb_component_id:(l=this.parent)==null?void 0:l.pcb_component_id,layer:n,route:t.route.map(u=>{const f=li(i,{x:u.x,y:u.y});return{...u,x:f.x,y:f.y}}),stroke_width:t.strokeWidth??.1,subcircuit_id:(a==null?void 0:a.subcircuit_id)??void 0,pcb_group_id:((c=this.getGroup())==null?void 0:c.pcb_group_id)??void 0});this.pcb_silkscreen_path_id=o.pcb_silkscreen_path_id}},_Qe=class extends ex{constructor(){super(...arguments);rr(this,"pcb_plated_hole_id",null);rr(this,"matchedPort",null);rr(this,"isPcbPrimitive",!0)}get config(){return{componentName:"PlatedHole",zodProps:wJt}}getAvailablePcbLayers(){return["top","inner1","inner2","bottom"]}getPcbSize(){const{_parsedProps:e}=this;if(e.shape==="circle")return{width:e.outerDiameter,height:e.outerDiameter};if(e.shape==="oval"||e.shape==="pill")return{width:e.outerWidth,height:e.outerHeight};throw new Error(`getPcbSize for shape "${e.shape}" not implemented for ${this.componentName}`)}_getPcbCircuitJsonBounds(){const{db:e}=this.root,t=e.pcb_plated_hole.get(this.pcb_plated_hole_id),n=this.getPcbSize();return{center:{x:t.x,y:t.y},bounds:{left:t.x-n.width/2,top:t.y+n.height/2,right:t.x+n.width/2,bottom:t.y-n.height/2},width:n.width,height:n.height}}_setPositionFromLayout(e){var n;const{db:t}=this.root;t.pcb_plated_hole.update(this.pcb_plated_hole_id,{x:e.x,y:e.y}),(n=this.matchedPort)==null||n._setPositionFromLayout(e)}doInitialPortMatching(){var t;const e=(t=this.getPrimitiveContainer())==null?void 0:t.selectAll("port");if(this.props.portHints){for(const n of e)if(n.isMatchingAnyOf(this.props.portHints)){this.matchedPort=n,n.registerMatch(this);return}}}doInitialPcbPrimitiveRender(){var o,s,l,c,u,f,h;if((o=this.root)!=null&&o.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this._getGlobalPcbPositionBeforeLayout(),i=((s=this.parent)==null?void 0:s.pcb_component_id)??((l=this.getPrimitiveContainer())==null?void 0:l.pcb_component_id),a=this.getSubcircuit();if(t.shape==="circle"){const v=e.pcb_plated_hole.insert({pcb_component_id:i,pcb_port_id:(c=this.matchedPort)==null?void 0:c.pcb_port_id,outer_diameter:t.outerDiameter,hole_diameter:t.holeDiameter,shape:"circle",port_hints:this.getNameAndAliases(),x:n.x,y:n.y,layers:["top","bottom"],subcircuit_id:(a==null?void 0:a.subcircuit_id)??void 0,pcb_group_id:((u=this.getGroup())==null?void 0:u.pcb_group_id)??void 0});this.pcb_plated_hole_id=v.pcb_plated_hole_id}else if(t.shape==="pill"||t.shape==="oval"){const v=e.pcb_plated_hole.insert({pcb_component_id:i,pcb_port_id:(f=this.matchedPort)==null?void 0:f.pcb_port_id,outer_width:t.outerWidth,outer_height:t.outerHeight,hole_width:t.innerWidth,hole_height:t.innerHeight,shape:t.shape,port_hints:this.getNameAndAliases(),x:n.x,y:n.y,layers:["top","bottom"],subcircuit_id:(a==null?void 0:a.subcircuit_id)??void 0,pcb_group_id:((h=this.getGroup())==null?void 0:h.pcb_group_id)??void 0});this.pcb_plated_hole_id=v.pcb_plated_hole_id}}doInitialPcbPortAttachment(){var t,n;if((t=this.root)!=null&&t.pcbDisabled)return;const{db:e}=this.root;e.pcb_plated_hole.update(this.pcb_plated_hole_id,{pcb_port_id:(n=this.matchedPort)==null?void 0:n.pcb_port_id})}},V0e=class extends ex{constructor(){super(...arguments);rr(this,"pcb_keepout_id",null);rr(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Keepout",zodProps:ien}}doInitialPcbPrimitiveRender(){var l,c,u;if((l=this.root)!=null&&l.pcbDisabled)return;const e=this.getSubcircuit(),{db:t}=this.root,{_parsedProps:n}=this,i=this._getGlobalPcbPositionBeforeLayout(),a=zT(this._computePcbGlobalTransformBeforeLayout()),o=Math.abs(a.rotation.angle*(180/Math.PI)-90)%180<.01;let s=null;n.shape==="circle"?s=t.pcb_keepout.insert({layers:["top"],shape:"circle",radius:n.radius,center:{x:i.x,y:i.y},subcircuit_id:(e==null?void 0:e.subcircuit_id)??void 0,pcb_group_id:((c=e==null?void 0:e.getGroup())==null?void 0:c.pcb_group_id)??void 0}):n.shape==="rect"&&(s=t.pcb_keepout.insert({layers:["top"],shape:"rect",...o?{width:n.height,height:n.width}:{width:n.width,height:n.height},center:{x:i.x,y:i.y},subcircuit_id:(e==null?void 0:e.subcircuit_id)??void 0,pcb_group_id:((u=e==null?void 0:e.getGroup())==null?void 0:u.pcb_group_id)??void 0})),s&&(this.pcb_keepout_id=s.pcb_keepout_id)}},xQe=class extends ex{constructor(){super(...arguments);rr(this,"pcb_hole_id",null);rr(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Hole",zodProps:VJt}}getPcbSize(){const{_parsedProps:e}=this;return{width:e.diameter,height:e.diameter}}doInitialPcbPrimitiveRender(){var o,s;if((o=this.root)!=null&&o.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this.getSubcircuit(),i=this._getGlobalPcbPositionBeforeLayout(),a=e.pcb_hole.insert({hole_shape:"circle",hole_diameter:t.diameter,x:i.x,y:i.y,subcircuit_id:(n==null?void 0:n.subcircuit_id)??void 0,pcb_group_id:((s=n==null?void 0:n.getGroup())==null?void 0:s.pcb_group_id)??void 0});this.pcb_hole_id=a.pcb_hole_id}_getPcbCircuitJsonBounds(){const{db:e}=this.root,t=e.pcb_hole.get(this.pcb_hole_id),n=this.getPcbSize();return{center:{x:t.x,y:t.y},bounds:{left:t.x-n.width/2,top:t.y-n.height/2,right:t.x+n.width/2,bottom:t.y+n.height/2},width:n.width,height:n.height}}_setPositionFromLayout(e){const{db:t}=this.root;t.pcb_hole.update(this.pcb_hole_id,{x:e.x,y:e.y})}},ben=r=>{const e=[];for(const t of r)t.type==="pcb_smtpad"&&t.shape==="rect"?e.push(new j0e({pcbX:t.x,pcbY:t.y,layer:t.layer,shape:"rect",height:t.height,width:t.width,portHints:t.port_hints})):t.type==="pcb_smtpad"&&t.shape==="circle"?e.push(new j0e({pcbX:t.x,pcbY:t.y,layer:t.layer,shape:"circle",radius:t.radius,portHints:t.port_hints})):t.type==="pcb_silkscreen_path"?e.push(new gQe({layer:t.layer,route:t.route,strokeWidth:t.stroke_width})):t.type==="pcb_plated_hole"&&t.shape==="circle"?t.shape==="circle"&&e.push(new _Qe({pcbX:t.x,pcbY:t.y,shape:"circle",holeDiameter:t.hole_diameter,outerDiameter:t.outer_diameter,portHints:t.port_hints})):t.type==="pcb_keepout"&&t.shape==="circle"?e.push(new V0e({pcbX:t.center.x,pcbY:t.center.y,shape:"circle",radius:t.radius})):t.type==="pcb_keepout"&&t.shape==="rect"?e.push(new V0e({pcbX:t.center.x,pcbY:t.center.y,shape:"rect",width:t.width,height:t.height})):t.type==="pcb_hole"&&t.hole_shape==="circle"&&e.push(new xQe({pcbX:t.x,pcbY:t.y,diameter:t.hole_diameter}));return e};function bQe(r){let e=1/0,t=1/0,n=-1/0,i=-1/0;for(const s of r)if(s.isPcbPrimitive){const{x:l,y:c}=s._getGlobalPcbPositionBeforeLayout(),{width:u,height:f}=s.getPcbSize();e=Math.min(e,l-u/2),t=Math.min(t,c-f/2),n=Math.max(n,l+u/2),i=Math.max(i,c+f/2)}else if(s.componentName==="Footprint"){const l=bQe(s.children);e=Math.min(e,l.minX),t=Math.min(t,l.minY),n=Math.max(n,l.maxX),i=Math.max(i,l.maxY)}let a=n-e,o=i-t;return a<0&&(a=0),o<0&&(o=0),{minX:e,minY:t,maxX:n,maxY:i,width:a,height:o}}function Sen(r,e){const t=e.x-r.x,n=e.y-r.y;return Math.abs(t)>Math.abs(n)?t>=0?"right":"left":n>=0?"up":"down"}var Een=r=>{if(r.length<=1)return!0;const e=r.map(a=>{const o=a._getPcbCircuitJsonBounds();return{left:o.bounds.left,right:o.bounds.right,top:o.bounds.top,bottom:o.bounds.bottom}}),t=Array(e.length).fill(!1).map(()=>Array(e.length).fill(!1));for(let a=0;a<e.length;a++)for(let o=a+1;o<e.length;o++){const s=e[a],l=e[o];t[a][o]=t[o][a]=!(s.right<l.left||s.left>l.right||s.bottom>l.top||s.top<l.bottom)}const n=new Set,i=a=>{n.add(a);for(let o=0;o<e.length;o++)t[a][o]&&!n.has(o)&&i(o)};return i(0),n.size===e.length},wen=r=>{if(r.length===0)throw new Error("Cannot get center of empty PCB primitives array");const e=r.map(i=>i._getPcbCircuitJsonBounds().center).filter(Boolean),t=e.reduce((i,a)=>i+a.x,0),n=e.reduce((i,a)=>i+a.y,0);return{x:t/e.length,y:n/e.length}},Ten=j.object({name:j.string().optional(),pinNumber:j.number().optional(),aliases:j.array(j.string()).optional()}),AS=class extends ex{constructor(e,t={}){if(!e.name&&e.pinNumber!==void 0&&(e.name=`pin${e.pinNumber}`),!e.name)throw new Error("Port must have a name or a pinNumber");super(e);rr(this,"source_port_id",null);rr(this,"pcb_port_id",null);rr(this,"schematic_port_id",null);rr(this,"schematicSymbolPortDef",null);rr(this,"matchedComponents");rr(this,"facingDirection",null);rr(this,"originDescription",null);t.originDescription&&(this.originDescription=t.originDescription),this.matchedComponents=[]}get config(){return{componentName:"Port",zodProps:Ten}}_getGlobalPcbPositionBeforeLayout(){const e=this.matchedComponents.find(t=>t.isPcbPrimitive);if(!e)throw new Error(`Port ${this} has no matched pcb component, can't get global pcb position`);return(e==null?void 0:e._getGlobalPcbPositionBeforeLayout())??{x:0,y:0}}_getPcbCircuitJsonBounds(){if(!this.pcb_port_id)return super._getPcbCircuitJsonBounds();const{db:e}=this.root,t=e.pcb_port.get(this.pcb_port_id);return{center:{x:t.x,y:t.y},bounds:{left:0,top:0,right:0,bottom:0},width:0,height:0}}_getGlobalPcbPositionAfterLayout(){return this._getPcbCircuitJsonBounds().center}_getPortsInternallyConnectedToThisPort(){const e=this.parent;if(!e||!e._getInternallyConnectedPins)return[];const t=e._getInternallyConnectedPins();for(const n of t)if(n.some(i=>i===this))return n;return[]}_hasSchematicPort(){var n,i;if((n=this.parent)==null?void 0:n.getSchematicSymbol())return!!(this.schematicSymbolPortDef||this._getPortsInternallyConnectedToThisPort().some(o=>o.schematicSymbolPortDef));const t=(i=this==null?void 0:this.parent)==null?void 0:i._getSchematicBoxDimensions();return!!(t&&this.props.pinNumber!==void 0&&t.getPortPositionByPinNumber(this.props.pinNumber))}_getGlobalSchematicPositionBeforeLayout(){var n,i,a;const e=(n=this.parent)==null?void 0:n.getSchematicSymbol();if(e){let o=this.schematicSymbolPortDef;if(!o&&(o=((i=this._getPortsInternallyConnectedToThisPort().find(l=>l.schematicSymbolPortDef))==null?void 0:i.schematicSymbolPortDef)??null,!o))throw new Error(`Couldn't find schematicSymbolPortDef for port ${this.getString()}, searched internally connected ports and none had a schematicSymbolPortDef. Why are we trying to get the schematic position of this port?`);const s=J0(this.parent.computeSchematicGlobalTransform(),Th(-e.center.x,-e.center.y));return li(s,o)}const t=(a=this==null?void 0:this.parent)==null?void 0:a._getSchematicBoxDimensions();if(t&&this.props.pinNumber!==void 0){const o=t.getPortPositionByPinNumber(this.props.pinNumber);if(!o)throw new Error(`Couldn't find position for schematic_port for port ${this.getString()} inside of the schematic box`);return li(this.parent.computeSchematicGlobalTransform(),o)}throw new Error(`Couldn't find position for schematic_port for port ${this.getString()}`)}_getGlobalSchematicPositionAfterLayout(){const{db:e}=this.root;if(!this.schematic_port_id)throw new Error("Can't get schematic port position after layout, no schematic_port_id");const t=e.schematic_port.get(this.schematic_port_id);if(!t)throw new Error(`Schematic port not found when trying to get post-layout position: ${this.schematic_port_id}`);return t.center}registerMatch(e){this.matchedComponents.push(e)}getNameAndAliases(){const{_parsedProps:e}=this;return Array.from(new Set([...e.aliases??[],...e.name?[e.name]:[],...typeof e.pinNumber=="number"?[`pin${e.pinNumber}`,e.pinNumber.toString()]:[],...this.externallyAddedAliases??[]]))}isMatchingPort(e){return this.isMatchingAnyOf(e.getNameAndAliases())}getPortSelector(){var e;return`.${(e=this.parent)==null?void 0:e.props.name} > port.${this.props.name}`}getAvailablePcbLayers(){return Array.from(new Set(this.matchedComponents.flatMap(e=>e.getAvailablePcbLayers())))}_getDirectlyConnectedTraces(){return this.getSubcircuit().selectAll("trace").filter(n=>n._isExplicitlyConnectedToPort(this))}doInitialSourceRender(){var a;const{db:e}=this.root,{_parsedProps:t}=this,n=this.getNameAndAliases(),i=e.source_port.insert({name:t.name,pin_number:t.pinNumber,port_hints:n,source_component_id:(a=this.parent)==null?void 0:a.source_component_id});this.source_port_id=i.source_port_id}doInitialSourceParentAttachment(){var t,n,i,a;const{db:e}=this.root;if(!((t=this.parent)!=null&&t.source_component_id))throw new Error(`${this.getString()} has no parent source component (parent: ${(n=this.parent)==null?void 0:n.getString()})`);e.source_port.update(this.source_port_id,{source_component_id:(i=this.parent)==null?void 0:i.source_component_id}),this.source_component_id=(a=this.parent)==null?void 0:a.source_component_id}doInitialPcbPortRender(){var a,o,s,l,c;if((a=this.root)!=null&&a.pcbDisabled)return;const{db:e}=this.root,{matchedComponents:t}=this;if(!((o=this.parent)!=null&&o.pcb_component_id))throw new Error(`${this.getString()} has no parent pcb component, cannot render pcb_port (parent: ${(s=this.parent)==null?void 0:s.getString()})`);const n=t.filter(u=>u.isPcbPrimitive);if(n.length===0)return;let i=null;if(n.length===1&&(i=n[0]._getPcbCircuitJsonBounds().center),n.length>1){if(!Een(n))throw new Error(`${this.getString()} has multiple non-overlapping pcb matches, unclear how to place pcb_port: ${n.map(u=>u.getString()).join(", ")}. (Note: tscircuit core does not currently allow you to specify internally connected pcb primitives with the same port hints, try giving them different port hints and specifying they are connected externally- or file an issue)`);i=wen(n)}if(i){const u=this.getSubcircuit(),f=e.pcb_port.insert({pcb_component_id:(l=this.parent)==null?void 0:l.pcb_component_id,layers:this.getAvailablePcbLayers(),subcircuit_id:(u==null?void 0:u.subcircuit_id)??void 0,pcb_group_id:((c=this.getGroup())==null?void 0:c.pcb_group_id)??void 0,...i,source_port_id:this.source_port_id});this.pcb_port_id=f.pcb_port_id}else{const u=n[0];throw new Error(`${u.getString()} does not have a center or _getGlobalPcbPositionBeforeLayout method (needed for pcb_port placement)`)}}doInitialSchematicPortRender(){var f;const{db:e}=this.root,{_parsedProps:t}=this,n=this.getPrimitiveContainer();if(!n||!this._hasSchematicPort())return;const i=n._getGlobalSchematicPositionBeforeLayout(),a=this._getGlobalSchematicPositionBeforeLayout();let o=null;const s=n._getSchematicBoxDimensions();s&&t.pinNumber!==void 0&&(o=s.getPortPositionByPinNumber(t.pinNumber)),this.getSubcircuit().props._schDebugObjectsEnabled&&e.schematic_debug_object.insert({shape:"rect",center:a,size:{width:.1,height:.1},label:"obstacle"}),o!=null&&o.side?this.facingDirection={left:"left",right:"right",top:"up",bottom:"down"}[o.side]:this.facingDirection=Sen(i,a);const l=e.source_port.get(this.source_port_id);let c;for(const h of(l==null?void 0:l.port_hints)??[])h.match(/^(pin)?\d+$/)||(c=h);const u=e.schematic_port.insert({schematic_component_id:(f=this.parent)==null?void 0:f.schematic_component_id,center:a,source_port_id:this.source_port_id,facing_direction:this.facingDirection,distance_from_component_edge:.4,side_of_component:o==null?void 0:o.side,pin_number:t.pinNumber,true_ccw_index:o==null?void 0:o.trueIndex,display_pin_label:c});this.schematic_port_id=u.schematic_port_id}_setPositionFromLayout(e){const{db:t}=this.root;this.pcb_port_id&&t.pcb_port.update(this.pcb_port_id,{x:e.x,y:e.y})}_hasMatchedPcbPrimitive(){return this.matchedComponents.some(e=>e.isPcbPrimitive)}},SQe=r=>{const e=r.find(t=>/^(pin)?\d+$/.test(t));return e?Number.parseInt(e.replace(/^pin/,"")):null};function cR(r,e){var a;const t=SQe(r);if(!t)return null;const i=[...r.filter(o=>o.toString()!==t.toString()&&o!==`pin${t}`),...((a=e==null?void 0:e.additionalAliases)==null?void 0:a[`pin${t}`])??[]];return new AS({pinNumber:t,aliases:i})}var Men=r=>{for(const e of["leftSide","rightSide","topSide","bottomSide"])if(e in r&&typeof r[e]=="number")throw new Error(`A number was specified for "${e}", you probably meant to use "size" not "side"`);return"leftSide"in r||"rightSide"in r||"topSide"in r||"bottomSide"in r},Cen=r=>{var a,o,s,l;if(Men(r))return{leftSize:((a=r.leftSide)==null?void 0:a.pins.length)??0,rightSize:((o=r.rightSide)==null?void 0:o.pins.length)??0,topSize:((s=r.topSide)==null?void 0:s.pins.length)??0,bottomSize:((l=r.bottomSide)==null?void 0:l.pins.length)??0};const{leftSize:e=0,rightSize:t=0,topSize:n=0,bottomSize:i=0}=r;return{leftSize:e,rightSize:t,topSize:n,bottomSize:i}};function EQe(r){return r.leftSide!==void 0}var Ren=r=>{var S,b,C,N,U,G,Z,$;const e=r.portDistanceFromEdge??.4;let t=r.schPortArrangement?Cen(r.schPortArrangement):null;const n={left:0,right:0,top:0,bottom:0};let i=r.pinCount??null;if(i===null)if(t)i=t.leftSize+t.rightSize+t.topSize;else throw new Error("Could not determine pin count for the schematic box");if(i&&!t){const te=Math.floor(i/2);t={leftSize:i-te,rightSize:te,topSize:0,bottomSize:0}}t||(t={leftSize:0,rightSize:0,topSize:0,bottomSize:0});const a=({side:te,sideIndex:re,truePinIndex:se})=>{var Re,Te,Ce,Me;if(!r.schPortArrangement||!EQe(r.schPortArrangement))return se+1;const fe={left:"top-to-bottom",bottom:"left-to-right",right:"bottom-to-top",top:"right-to-left"}[te],de=((Te=(Re=r.schPortArrangement)==null?void 0:Re[`${te}Side`])==null?void 0:Te.direction)??fe,ye=(Me=(Ce=r.schPortArrangement)==null?void 0:Ce[`${te}Side`])==null?void 0:Me.pins;let Se=re;return de!==fe&&(Se=ye.length-re-1),sR(ye[Se],r.pinLabels)},o=[];let s=0,l=0;for(let te=0;te<t.leftSize;te++){const re=a({side:"left",sideIndex:te,truePinIndex:l}),se=((S=r.numericSchPinStyle)==null?void 0:S[`pin${re}`])??((b=r.numericSchPinStyle)==null?void 0:b[re]);se!=null&&se.topMargin&&(s+=se.topMargin),o.push({trueIndex:l,pinNumber:re,side:"left",distanceFromOrthogonalEdge:s}),se!=null&&se.bottomMargin&&(s+=se.bottomMargin),te===t.leftSize-1?n.left=s:s+=r.schPinSpacing,l++}s=0;for(let te=0;te<t.bottomSize;te++){const re=a({side:"bottom",sideIndex:te,truePinIndex:l}),se=((C=r.numericSchPinStyle)==null?void 0:C[`pin${re}`])??((N=r.numericSchPinStyle)==null?void 0:N[re]);se!=null&&se.leftMargin&&(s+=se.leftMargin),o.push({trueIndex:l,pinNumber:re,side:"bottom",distanceFromOrthogonalEdge:s}),se!=null&&se.rightMargin&&(s+=se.rightMargin),te===t.bottomSize-1?n.bottom=s:s+=r.schPinSpacing,l++}s=0;for(let te=0;te<t.rightSize;te++){const re=a({side:"right",sideIndex:te,truePinIndex:l}),se=((U=r.numericSchPinStyle)==null?void 0:U[`pin${re}`])??((G=r.numericSchPinStyle)==null?void 0:G[re]);se!=null&&se.bottomMargin&&(s+=se.bottomMargin),o.push({trueIndex:l,pinNumber:re,side:"right",distanceFromOrthogonalEdge:s}),se!=null&&se.topMargin&&(s+=se.topMargin),te===t.rightSize-1?n.right=s:s+=r.schPinSpacing,l++}s=0;for(let te=0;te<t.topSize;te++){const re=a({side:"top",sideIndex:te,truePinIndex:l}),se=((Z=r.numericSchPinStyle)==null?void 0:Z[`pin${re}`])??(($=r.numericSchPinStyle)==null?void 0:$[re]);se!=null&&se.rightMargin&&(s+=se.rightMargin),o.push({trueIndex:l,pinNumber:re,side:"top",distanceFromOrthogonalEdge:s}),se!=null&&se.leftMargin&&(s+=se.leftMargin),te===t.topSize-1?n.top=s:s+=r.schPinSpacing,l++}let c=r.schWidth;c||(c=Math.max(n.top+r.schPinSpacing*2,n.bottom+r.schPinSpacing*2));const u=r.pinLabels?Math.max(...Object.values(r.pinLabels).map(te=>te.length*.1)):0,f=u>0?1.1:0;c=Math.max(c,u+f);let h=r.schHeight;h||(h=Math.max(n.left+r.schPinSpacing*2,n.right+r.schPinSpacing*2));const v={left:{x:-c/2-e,y:n.left/2},bottom:{x:-n.bottom/2,y:-h/2-e},right:{x:c/2+e,y:-n.right/2},top:{x:n.top/2,y:h/2+e}},x={left:{x:0,y:-1},right:{x:0,y:1},top:{x:-1,y:0},bottom:{x:1,y:0}},E=o.map(te=>{const{distanceFromOrthogonalEdge:re,side:se}=te,fe=v[se],de=x[se];return{x:fe.x+re*de.x,y:fe.y+re*de.y,...te}});return{getPortPositionByPinNumber(te){const re=E.find(se=>se.pinNumber.toString()===te.toString());return re||null},getSize(){return{width:c,height:h}},getSizeIncludingPins(){return{width:c+(t.leftSize||t.rightSize?.4:0),height:h+(t.topSize||t.bottomSize?.4:0)}},pinCount:i}},Aen=vg("tscircuit:core:footprint"),Pen=class extends ex{get config(){return{componentName:"Footprint",zodProps:qJt}}doInitialPcbFootprintLayout(){var f,h,v,x,E;if((f=this.root)!=null&&f.pcbDisabled)return;const r=this.children.filter(S=>S.componentName==="Constraint");if(r.length===0)return;const{isFlipped:e}=this._getPcbPrimitiveFlippedHelpers(),t=S=>e&&"left"in S&&"right"in S?{...S,left:S.right,right:S.left}:S,n=r.flatMap(S=>S._getAllReferencedComponents().componentsWithSelectors).map(({component:S,selector:b,componentSelector:C,edge:N})=>({component:S,selector:b,componentSelector:C,edge:N,bounds:S._getPcbCircuitJsonBounds()}));if(n.some(S=>S.edge))throw new Error("edge constraints not implemented yet for footprint layout, contributions welcome!");function i(S){return n.find(({selector:b})=>b===S)}const a=new g5e,o={};function s(S){return S in o||(o[S]=new lD(S),a.addEditVariable(o[S],r_.weak)),o[S]}for(const{selector:S,bounds:b}of n){const C=s(`${S}_x`),N=s(`${S}_y`);a.suggestValue(C,b.center.x),a.suggestValue(N,b.center.y)}for(const S of r){const b=S._parsedProps;if("xDist"in b){const{xDist:C,left:N,right:U,edgeToEdge:G,centerToCenter:Z}=t(b),$=s(`${N}_x`),te=s(`${U}_x`),re=(h=i(N))==null?void 0:h.bounds,se=(v=i(U))==null?void 0:v.bounds;if(Z){const fe=new yg(te,[-1,$]);a.addConstraint(new w3(fe,n2.Eq,b.xDist,r_.required))}else if(G){const fe=new yg(te,-se.width/2,[-1,$],-re.width/2);a.addConstraint(new w3(fe,n2.Eq,b.xDist,r_.required))}}else if("yDist"in b){const{yDist:C,top:N,bottom:U,edgeToEdge:G,centerToCenter:Z}=b,$=s(`${N}_y`),te=s(`${U}_y`),re=(x=i(N))==null?void 0:x.bounds,se=(E=i(U))==null?void 0:E.bounds;if(Z){const fe=new yg($,[-1,te]);a.addConstraint(new w3(fe,n2.Eq,b.yDist,r_.required))}else if(G){const fe=new yg($,re.height/2,[-1,te],-se.height/2);a.addConstraint(new w3(fe,n2.Eq,b.yDist,r_.required))}}else if("sameY"in b){const{for:C}=b;if(C.length<2)continue;const N=C.map(G=>s(`${G}_y`)),U=new yg(...N.slice(1));a.addConstraint(new w3(U,n2.Eq,N[0],r_.required))}else if("sameX"in b){const{for:C}=b;if(C.length<2)continue;const N=C.map(G=>s(`${G}_x`)),U=new yg(...N.slice(1));a.addConstraint(new w3(U,n2.Eq,N[0],r_.required))}}a.updateVariables(),Aen.enabled&&(console.log("Solution to layout constraints:"),console.table(Object.entries(o).map(([S,b])=>({var:S,val:b.value()}))));const l={left:1/0,right:-1/0,top:-1/0,bottom:1/0};for(const{selector:S,bounds:{width:b,height:C}}of n){const N=s(`${S}_x`),U=s(`${S}_y`),G=N.value()-b/2,Z=N.value()+b/2,$=U.value()+C/2,te=U.value()-C/2;l.left=Math.min(l.left,G),l.right=Math.max(l.right,Z),l.top=Math.max(l.top,$),l.bottom=Math.min(l.bottom,te)}const c={x:-(l.right+l.left)/2,y:-(l.top+l.bottom)/2},u=this.getPrimitiveContainer()._getGlobalPcbPositionBeforeLayout();c.x+=u.x,c.y+=u.y;for(const{component:S,selector:b}of n){const C=s(`${b}_x`),N=s(`${b}_y`);S._setPositionFromLayout({x:C.value()+c.x,y:N.value()+c.y})}}},Den=(r,e)=>{if(!r)return;const t={};for(const[n,i]of Object.entries(r)){const a=sR(n,e),o={leftMargin:i.marginLeft??i.leftMargin,rightMargin:i.marginRight??i.rightMargin,topMargin:i.marginTop??i.topMargin,bottomMargin:i.marginBottom??i.bottomMargin};t[`pin${a}`]={...t[`pin${a}`],...o}}return t},Nen=vg("tscircuit:core"),Len=j.object({x:Z4,y:Z4,z:Z4}),D2=class extends ex{constructor(e){super(e);rr(this,"reactSubtrees",[]);rr(this,"_impliedFootprint");rr(this,"isPrimitiveContainer",!0);rr(this,"_asyncSupplierPartNumbers");rr(this,"pcb_missing_footprint_error_id");this._addChildrenFromStringFootprint(),this.initPorts()}get defaultInternallyConnectedPinNames(){return[]}get internallyConnectedPinNames(){return this._parsedProps.internallyConnectedPins??this.defaultInternallyConnectedPinNames}initPorts(e={}){var o,s,l,c,u,f,h,v,x,E;if((o=this.root)!=null&&o.schematicDisabled)return;const{config:t}=this,n=[],i=this._getSchematicPortArrangement();if(i&&!this._parsedProps.pinLabels){for(const C in i){const N=i[C].pins;if(Array.isArray(N))for(const U of N){const G=sR(U,this._parsedProps.pinLabels);n.push(new AS({pinNumber:G,aliases:((s=e.additionalAliases)==null?void 0:s[`pin${G}`])??[]},{originDescription:`schPortArrangement:${C}`}))}}const S=["left","right","top","bottom"];let b=1;for(const C of S){const N=i[`${C}Size`];for(let U=0;U<N;U++)n.push(new AS({pinNumber:b++,aliases:((l=e.additionalAliases)==null?void 0:l[`pin${b}`])??[]},{originDescription:`schPortArrangement:${C}`}))}}const a=this._parsedProps.pinLabels;if(a)for(let[S,b]of Object.entries(a)){S=S.replace("pin","");let C=n.find(G=>G._parsedProps.pinNumber===Number(S));const N=Array.isArray(b)?b[0]:b,U=Array.isArray(b)?b.slice(1):[];C?(C.externallyAddedAliases.push(N,...U),C.props.name=N):(C=new AS({pinNumber:parseInt(S),name:N,aliases:[...U,...((c=e.additionalAliases)==null?void 0:c[`pin${parseInt(S)}`])??[]]},{originDescription:`pinLabels:pin${S}`}),n.push(C))}if(t.schematicSymbolName){const S=_4[this._getSchematicSymbolNameOrThrow()];if(!S)return;for(const b of S.ports){const C=SQe(b.labels);if(!C)continue;const N=cR(b.labels.concat(((u=e.additionalAliases)==null?void 0:u[`pin${C}`])??[]));N&&(N.originDescription=`schematicSymbol:labels[0]:${b.labels[0]}`,N.schematicSymbolPortDef=b,n.push(N))}this.addAll(n)}if(!this._getSchematicPortArrangement()){const S=this.getPortsFromFootprint(e);for(const b of S)n.some(C=>C.isMatchingAnyOf(b.getNameAndAliases()))||n.push(b)}for(let S=1;S<=(e.pinCount??this._getPinCount());S++){if(!i||n.find(C=>C._parsedProps.pinNumber===S))continue;let b=[...((f=i.leftSide)==null?void 0:f.pins)??[],...((h=i.rightSide)==null?void 0:h.pins)??[],...((v=i.topSide)==null?void 0:v.pins)??[],...((x=i.bottomSide)==null?void 0:x.pins)??[]].map(C=>sR(C,this._parsedProps.pinLabels));["leftSize","rightSize","topSize","bottomSize","leftPinCount","rightPinCount","topPinCount","bottomPinCount"].some(C=>C in i)&&(b=Array.from({length:this._getPinCount()},(C,N)=>N+1)),b.includes(S)&&n.push(new AS({pinNumber:S,aliases:((E=e.additionalAliases)==null?void 0:E[`pin${S}`])??[]},{originDescription:`notOtherwiseAddedButDeducedFromPinCount:${S}`}))}n.length>0&&this.addAll(n)}_getImpliedFootprintString(){return null}_addChildrenFromStringFootprint(){var t;let{footprint:e}=this.props;if(e??(e=(t=this._getImpliedFootprintString)==null?void 0:t.call(this)),!!e&&typeof e=="string"){const n=VA.string(e).soup(),i=ben(n);this.addAll(i)}}get portMap(){return new Proxy({},{get:(e,t)=>{const n=this.children.find(i=>i.componentName==="Port"&&i.isMatchingNameOrAlias(t));if(!n)throw new Error(`There was an issue finding the port "${t.toString()}" inside of a ${this.componentName} component with name: "${this.props.name}". This is a bug in @tscircuit/core`);return n}})}getInstanceForReactElement(e){for(const t of this.reactSubtrees)if(t.element===e)return t.component;return null}doInitialSourceRender(){const e=this.config.sourceFtype;if(!e)return;const{db:t}=this.root,{_parsedProps:n}=this,i=t.source_component.insert({ftype:e,name:n.name,manufacturer_part_number:n.manufacturerPartNumber??n.mfn,supplier_part_numbers:n.supplierPartNumbers});this.source_component_id=i.source_component_id}doInitialSchematicComponentRender(){var n;if((n=this.root)!=null&&n.schematicDisabled)return;const{schematicSymbolName:e}=this.config;if(e)return this._doInitialSchematicComponentRenderWithSymbol();if(this._getSchematicBoxDimensions())return this._doInitialSchematicComponentRenderWithSchematicBoxDimensions()}_getSchematicSymbolDisplayValue(){}_getInternallyConnectedPins(){if(this.internallyConnectedPinNames.length===0)return[];const e=[];for(const t of this.internallyConnectedPinNames){const n=[];for(const i of t)n.push(this.portMap[i]);e.push(n)}return e}_doInitialSchematicComponentRenderWithSymbol(){var o;if((o=this.root)!=null&&o.schematicDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this._getSchematicSymbolNameOrThrow(),i=_4[n],a=this._getGlobalSchematicPositionBeforeLayout();if(i){const s=e.schematic_component.insert({center:a,rotation:t.schRotation??0,size:i.size,source_component_id:this.source_component_id,symbol_name:n,symbol_display_value:this._getSchematicSymbolDisplayValue()});this.schematic_component_id=s.schematic_component_id}}_doInitialSchematicComponentRenderWithSchematicBoxDimensions(){var f;if((f=this.root)!=null&&f.schematicDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this._getSchematicBoxDimensions(),i={};if(Array.isArray(t.pinLabels))t.pinLabels.forEach((h,v)=>{i[String(v+1)]=h});else for(const[h,v]of Object.entries(t.pinLabels??{}))i[h]=Array.isArray(v)?v[0]:v;const a=this._getGlobalSchematicPositionBeforeLayout(),o=this._getSchematicPortArrangement(),s=e.schematic_component.insert({center:a,rotation:t.schRotation??0,size:n.getSize(),port_arrangement:gen(o),pin_spacing:t.schPinSpacing??.2,pin_styles:yen(t.schPinStyle,t.pinLabels),port_labels:i,source_component_id:this.source_component_id}),l=(o==null?void 0:o.topSide)!==void 0||(o==null?void 0:o.bottomSide)!==void 0,c=n==null?void 0:n.getSize().width,u=n==null?void 0:n.getSize().height;e.schematic_text.insert({text:t.manufacturerPartNumber??"",schematic_component_id:s.schematic_component_id,anchor:"left",rotation:0,position:{x:l?a.x+(c??0)/2+.1:a.x-(c??0)/2,y:l?a.y+(u??0)/2+.35:a.y-(u??0)/2-.13},color:"#006464"}),e.schematic_text.insert({text:t.name??"",schematic_component_id:s.schematic_component_id,anchor:"left",rotation:0,position:{x:l?a.x+(c??0)/2+.1:a.x-(c??0)/2,y:l?a.y+(u??0)/2+.55:a.y+(u??0)/2+.13},color:"#006464"}),this.schematic_component_id=s.schematic_component_id}doInitialPcbComponentRender(){var o;if((o=this.root)!=null&&o.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this.getSubcircuit(),i=e.pcb_component.insert({center:this._getGlobalPcbPositionBeforeLayout(),width:0,height:0,layer:t.layer??"top",rotation:t.pcbRotation??0,source_component_id:this.source_component_id,subcircuit_id:n.subcircuit_id??void 0});if(!t.footprint&&!this.isGroup){const s=e.pcb_missing_footprint_error.insert({message:`No footprint found for component: ${this.getString()}`,source_component_id:`${this.source_component_id}`,error_type:"pcb_missing_footprint_error"});this.pcb_missing_footprint_error_id=s.pcb_missing_footprint_error_id}this.pcb_component_id=i.pcb_component_id;const a=this.getSubcircuit()._getPcbManualPlacementForComponent(this);this.props.pcbX!==void 0&&this.props.pcbY!==void 0&&a&&this.renderError({type:"pcb_manual_edit_conflict_error",message:`${this.getString()} has both manual placement and explicit coordinates. pcbX and pcbY will be used. Remove pcbX/pcbY or clear the manual placement.`,pcb_component_id:this.pcb_component_id,source_component_id:this.source_component_id})}doInitialPcbComponentSizeCalculation(){var i;if((i=this.root)!=null&&i.pcbDisabled||!this.pcb_component_id)return;const{db:e}=this.root,t=bQe(this.children);if(t.width===0||t.height===0)return;const n={x:(t.minX+t.maxX)/2,y:(t.minY+t.maxY)/2};e.pcb_component.update(this.pcb_component_id,{center:n,width:t.width,height:t.height})}_renderReactSubtree(e){return{element:e,component:hQe(e)}}doInitialInitializePortsFromChildren(){this.initPorts()}doInitialReactSubtreesRender(){if(Ct.isValidElement(this.props.footprint)){if(this.reactSubtrees.some(t=>t.element===this.props.footprint))return;const e=this._renderReactSubtree(this.props.footprint);this.reactSubtrees.push(e),this.add(e.component)}}_hasExistingPortExactly(e){return this.children.filter(n=>n.componentName==="Port").some(n=>{const i=e.getNameAndAliases(),a=n.getNameAndAliases();return i.length===a.length&&i.every(o=>a.includes(o))})}add(e){let t;if(Ct.isValidElement(e)){const n=this._renderReactSubtree(e);this.reactSubtrees.push(n),t=n.component}else t=e;if(t.componentName==="Port"){if(this._hasExistingPortExactly(t))return;const i=this.children.filter(a=>a.componentName==="Port").find(a=>a.isMatchingAnyOf(t.getNameAndAliases()));i&&Nen(`Similar ports added. Port 1: ${i}, Port 2: ${t}`)}super.add(t)}getPortsFromFootprint(e){let{footprint:t}=this.props;if((!t||Ct.isValidElement(t))&&(t=this.children.find(i=>i.componentName==="Footprint")),typeof t=="string"){const i=VA.string(t).soup(),a=[];for(const o of i)if("port_hints"in o&&o.port_hints){const s=cR(o.port_hints,e);if(!s)continue;s.originDescription=`footprint:string:${t}:port_hints[0]:${o.port_hints[0]}`,a.push(s)}return a}if(!Ct.isValidElement(t)&&t&&t.componentName==="Footprint"){const i=t;let a=1;const o=[];for(const s of i.children){if(!s.props.portHints)continue;let l=s.props.portHints;l.some(f=>f.startsWith("pin"))||(l=[...l,`pin${a}`]),a++;const u=cR(l);u&&(u.originDescription=`footprint:${t}`,o.push(u))}return o}const n=[];if(!t){for(const i of this.children)if(i.props.portHints&&i.isPcbPrimitive){const a=cR(i.props.portHints);a&&n.push(a)}}return n}getPortsFromSchematicSymbol(){var i;if((i=this.root)!=null&&i.schematicDisabled)return[];const{config:e}=this;if(!e.schematicSymbolName)return[];const t=_4[e.schematicSymbolName];if(!t)return[];const n=[];for(const a of t.ports){const o=cR(a.labels);o&&(o.schematicSymbolPortDef=a,n.push(o))}return n}_createNetsFromProps(e){yQe(this,e)}_getPcbCircuitJsonBounds(){const{db:e}=this.root;if(!this.pcb_component_id)return super._getPcbCircuitJsonBounds();const t=e.pcb_component.get(this.pcb_component_id);return{center:{x:t.center.x,y:t.center.y},bounds:{left:t.center.x-t.width/2,top:t.center.y-t.height/2,right:t.center.x+t.width/2,bottom:t.center.y+t.height/2},width:t.width,height:t.height}}_getPinCountFromSchematicPortArrangement(){const e=this._getSchematicPortArrangement();if(!e)return 0;if(!EQe(e))return(e.leftSize??e.leftPinCount??0)+(e.rightSize??e.rightPinCount??0)+(e.topSize??e.topPinCount??0)+(e.bottomSize??e.bottomPinCount??0);const{leftSide:n,rightSide:i,topSide:a,bottomSide:o}=e;return Math.max(...(n==null?void 0:n.pins)??[],...(i==null?void 0:i.pins)??[],...(a==null?void 0:a.pins)??[],...(o==null?void 0:o.pins)??[])}_getPinCount(){return this._getSchematicPortArrangement()?this._getPinCountFromSchematicPortArrangement():this.getPortsFromFootprint().length}_getSchematicPortArrangement(){return this._parsedProps.schPinArrangement??this._parsedProps.schPortArrangement}_getSchematicBoxDimensions(){if(this.getSchematicSymbol()||!this.config.shouldRenderAsSchematicBox)return null;const{_parsedProps:e}=this,t=this._getPinCount(),n=e.schPinSpacing??.2;return Ren({schWidth:e.schWidth,schHeight:e.schHeight,schPinSpacing:n,numericSchPinStyle:Den(e.schPinStyle,e.pinLabels),pinCount:t,schPortArrangement:this._getSchematicPortArrangement(),pinLabels:e.pinLabels})}doInitialCadModelRender(){var c;const{db:e}=this.root,{boardThickness:t=0}=((c=this.root)==null?void 0:c._getBoard())??{},n=this._parsedProps.cadModel;if(!this.pcb_component_id||!n&&!this.props.footprint)return;const i=this._getPcbCircuitJsonBounds(),a=e.pcb_component.get(this.pcb_component_id);if(typeof n=="string")throw new Error("String cadModel not yet implemented");const o=Len.parse({x:0,y:0,z:typeof(n==null?void 0:n.rotationOffset)=="number"?n.rotationOffset:0,...typeof(n==null?void 0:n.rotationOffset)=="object"?n.rotationOffset??{}:{}}),s=vw.parse({x:0,y:0,z:0,...typeof(n==null?void 0:n.positionOffset)=="object"?n.positionOffset:{}}),l=this.props.layer==="bottom"?"bottom":"top";e.cad_component.insert({position:{x:i.center.x+s.x,y:i.center.y+s.y,z:(l==="bottom"?-t/2:t/2)+s.z},rotation:{x:o.x,y:(l==="top"?0:180)+o.y,z:((a==null?void 0:a.rotation)??0)+(l==="bottom"?180:0)+o.z},pcb_component_id:this.pcb_component_id,source_component_id:this.source_component_id,model_stl_url:"stlUrl"in(n??{})?this._addCachebustToModelUrl(n.stlUrl):void 0,model_obj_url:"objUrl"in(n??{})?this._addCachebustToModelUrl(n.objUrl):void 0,model_jscad:"jscad"in(n??{})?n.jscad:void 0,footprinter_string:typeof this.props.footprint=="string"&&!n?this.props.footprint:void 0})}_addCachebustToModelUrl(e){var n;if(!e||!e.includes("modelcdn.tscircuit.com"))return e;const t=((n=this.root)==null?void 0:n.getClientOrigin())??"";return`${e}${e.includes("?")?"&":"?"}cachebust_origin=${encodeURIComponent(t)}`}doInitialPartsEngineRender(){const e=this.getInheritedProperty("partsEngine");if(!e)return;const{db:t}=this.root,n=t.source_component.get(this.source_component_id);if(!n||n.supplier_part_numbers)return;let i;this.props.footprint&&typeof this.props.footprint=="string"&&(i=this.props.footprint);const a=e.findPart({sourceComponent:n,footprinterString:i});if(!(a instanceof Promise)){t.source_component.update(this.source_component_id,{supplier_part_numbers:a});return}this._queueAsyncEffect("get-supplier-part-numbers",async()=>{this._asyncSupplierPartNumbers=await a,this._markDirty("PartsEngineRender")})}updatePartsEngineRender(){const{db:e}=this.root,t=e.source_component.get(this.source_component_id);if(t&&!t.supplier_part_numbers&&this._asyncSupplierPartNumbers){e.source_component.update(this.source_component_id,{supplier_part_numbers:this._asyncSupplierPartNumbers});return}}},zen=({db:r,traces:e,minTraceWidth:t=.1})=>{const i=iD([...r.pcb_component.list(),...r.pcb_smtpad.list(),...r.pcb_plated_hole.list()]).flatMap(s=>[{x:s.center.x-s.width/2,y:s.center.y-s.height/2},{x:s.center.x+s.width/2,y:s.center.y+s.height/2}]),a={minX:Math.min(...i.map(s=>s.x))-1,maxX:Math.max(...i.map(s=>s.x))+1,minY:Math.min(...i.map(s=>s.y))-1,maxY:Math.max(...i.map(s=>s.y))+1},o=e.map(s=>{const l=s._findConnectedPorts();return!l.allPortsFound||l.ports.length<2?null:{name:s.source_trace_id??"",pointsToConnect:l.ports.map(c=>{const u=c._getGlobalPcbPositionBeforeLayout();return{x:u.x,y:u.y,layer:c.getAvailablePcbLayers()[0]??"top"}})}}).filter(s=>s!==null);return{bounds:a,obstacles:[],connections:o,layerCount:2,minTraceWidth:t}},wQe=class extends ex{constructor(){super(...arguments);rr(this,"matchedPort",null)}get config(){return{componentName:"TraceHint",zodProps:fen}}doInitialPortMatching(){this.root;const{_parsedProps:e,parent:t}=this;if(!t)return;if(t.componentName==="Trace"){this.renderError(`Port inference inside trace is not yet supported (${this})`);return}if(!t)throw new Error("TraceHint has no parent");if(!e.for){this.renderError(`TraceHint has no for property (${this})`);return}const n=t.selectOne(e.for,{type:"port"});n||this.renderError(`${this} could not find port for selector "${e.for}"`),this.matchedPort=n,n.registerMatch(this)}getPcbRouteHints(){const{_parsedProps:e}=this,t=e.offset?[e.offset]:e.offsets;if(!t)return[];const n=this._computePcbGlobalTransformBeforeLayout();return t.map(i=>({...li(n,i),via:i.via,to_layer:i.to_layer,trace_width:i.trace_width}))}doInitialPcbTraceHintRender(){var t,n,i;if((t=this.root)!=null&&t.pcbDisabled)return;const{db:e}=this.root;e.pcb_trace_hint.insert({pcb_component_id:(n=this.matchedPort)==null?void 0:n.pcb_component_id,pcb_port_id:(i=this.matchedPort)==null?void 0:i.pcb_port_id,route:this.getPcbRouteHints()})}},H0e=class extends D2{constructor(){super(...arguments);rr(this,"pcb_group_id",null);rr(this,"subcircuit_id",null);rr(this,"_hasStartedAsyncAutorouting",!1);rr(this,"_asyncAutoroutingResult",null)}get config(){return{zodProps:xJt,componentName:"Group"}}doInitialSourceRender(){const{db:t}=this.root,n=t.source_group.insert({name:this._parsedProps.name,is_subcircuit:this.isSubcircuit});this.subcircuit_id=`subcircuit_${n.source_group_id}`,this.source_group_id=n.source_group_id,t.source_group.update(n.source_group_id,{subcircuit_id:this.subcircuit_id})}doInitialSourceParentAttachment(){var i,a,o;const{db:t}=this.root;if(!this.isSubcircuit)return;const n=(o=(a=(i=this.parent)==null?void 0:i.getSubcircuit)==null?void 0:a.call(i))==null?void 0:o.subcircuit_id;n&&t.source_group.update(this.source_group_id,{parent_subcircuit_id:n})}doInitialPcbComponentRender(){var i;if((i=this.root)!=null&&i.pcbDisabled)return;const{db:t}=this.root,n=t.pcb_group.insert({is_subcircuit:this.isSubcircuit,subcircuit_id:this.subcircuit_id,name:this._parsedProps.name,center:this._getGlobalPcbPositionBeforeLayout(),width:0,height:0,pcb_component_ids:[],source_group_id:this.source_group_id});this.pcb_group_id=n.pcb_group_id}doInitialCreateTraceHintsFromProps(){var a;const{_parsedProps:t}=this;this.root;const n=t;if(!this.isSubcircuit)return;const i=(a=n.layout)==null?void 0:a.manual_trace_hints;if(i)for(const o of i)this.add(new wQe({for:o.pcb_port_selector,offsets:o.offsets}))}_getSimpleRouteJsonFromPcbTraces(){const t=this.selectAll("trace"),{db:n}=this.root;return zen({db:n,traces:t,minTraceWidth:this._parsedProps.minTraceWidth??.1})}doInitialSourceAddConnectivityMapKey(){if(!this.isSubcircuit)return;const{db:t}=this.root,n=this.selectAll("trace"),i=new jT({});i.addConnections(n.map(a=>{const o=t.source_trace.get(a.source_trace_id);return o?[o.source_trace_id,...o.connected_source_port_ids,...o.connected_source_net_ids]:null}).filter(a=>a!==null));for(const a of n){if(!a.source_trace_id)continue;const o=i.getNetConnectedToId(a.source_trace_id);if(!o)continue;const{name:s}=this._parsedProps;a.subcircuit_connectivity_map_key=`${s??`unnamedsubcircuit${this._renderId}`}_${o}`,t.source_trace.update(a.source_trace_id,{subcircuit_connectivity_map_key:a.subcircuit_connectivity_map_key})}}_areChildSubcircuitsRouted(){const t=this.selectAll("group").filter(n=>n.isSubcircuit);for(const n of t)if(n._shouldRouteAsync()&&!n._asyncAutoroutingResult)return!1;return!0}_shouldRouteAsync(){const t=this._parsedProps;return t.autorouter==="auto-local"||t.autorouter==="auto-cloud"?!0:t.autorouter==="sequential-trace"?!1:typeof t.autorouter=="object"}async _runEffectMakeHttpAutoroutingRequest(){var c,u,f,h;const t=vg("tscircuit:core:_runEffectMakeHttpAutoroutingRequest"),n=this._parsedProps,i=((c=n.autorouter)==null?void 0:c.serverUrl)??"https://registry-api.tscircuit.com",a=((u=n.autorouter)==null?void 0:u.serverMode)??"job",o=(v,x)=>(t("fetching",v),fetch(v,x)),s=this.root.db.toArray().filter(v=>v.type.startsWith("source_")||v.type.startsWith("pcb_"));if(a==="solve-endpoint"){if(((f=this.props.autorouter)==null?void 0:f.inputFormat)==="simplified"){const{autorouting_result:x}=await o(`${i}/autorouting/solve`,{method:"POST",body:JSON.stringify({input_simple_route_json:this._getSimpleRouteJsonFromPcbTraces(),subcircuit_id:this.subcircuit_id}),headers:{"Content-Type":"application/json"}}).then(E=>E.json());this._asyncAutoroutingResult=x,this._markDirty("PcbTraceRender");return}const{autorouting_result:v}=await o(`${i}/autorouting/solve`,{method:"POST",body:JSON.stringify({input_circuit_json:s,subcircuit_id:this.subcircuit_id}),headers:{"Content-Type":"application/json"}}).then(x=>x.json());this._asyncAutoroutingResult=v,this._markDirty("PcbTraceRender");return}const{autorouting_job:l}=await o(`${i}/autorouting/jobs/create`,{method:"POST",body:JSON.stringify({input_circuit_json:s,provider:"freerouting",autostart:!0,display_name:(h=this.root)==null?void 0:h.name,subcircuit_id:this.subcircuit_id}),headers:{"Content-Type":"application/json"}}).then(v=>v.json());for(;;){const{autorouting_job:v}=await o(`${i}/autorouting/jobs/get`,{method:"POST",body:JSON.stringify({autorouting_job_id:l.autorouting_job_id}),headers:{"Content-Type":"application/json"}}).then(x=>x.json());if(v.is_finished){const{autorouting_job_output:x}=await o(`${i}/autorouting/jobs/get_output`,{method:"POST",body:JSON.stringify({autorouting_job_id:l.autorouting_job_id}),headers:{"Content-Type":"application/json"}}).then(E=>E.json());this._asyncAutoroutingResult={output_pcb_traces:x.output_pcb_traces},this._markDirty("PcbTraceRender");break}if(v.has_error)throw new Error(`Autorouting job failed: ${JSON.stringify(v.error)}`);await new Promise(x=>setTimeout(x,100))}}_startAsyncAutorouting(){this._hasStartedAsyncAutorouting=!0,this._queueAsyncEffect("make-http-autorouting-request",async()=>this._runEffectMakeHttpAutoroutingRequest())}doInitialPcbTraceRender(){var n;const t=vg("tscircuit:core:doInitialPcbTraceRender");if(!((n=this.root)!=null&&n.pcbDisabled)&&!this._shouldUseTraceByTraceRouting()){if(!this._areChildSubcircuitsRouted()){t(`[${this.getString()}] child subcircuits are not routed, skipping async autorouting until subcircuits routed`);return}t(`[${this.getString()}] no child subcircuits to wait for, initiating async routing`),this._startAsyncAutorouting()}}updatePcbTraceRender(){const t=vg("tscircuit:core:updatePcbTraceRender");if(this._shouldRouteAsync()&&!this._hasStartedAsyncAutorouting){this._areChildSubcircuitsRouted()&&(t(`[${this.getString()}] child subcircuits are now routed, starting async autorouting`),this._startAsyncAutorouting());return}if(this._asyncAutoroutingResult&&!this._shouldUseTraceByTraceRouting()){if(this.root,this._asyncAutoroutingResult.output_simple_route_json){this._updatePcbTraceRenderFromSimpleRouteJson();return}if(this._asyncAutoroutingResult.output_pcb_traces){this._updatePcbTraceRenderFromPcbTraces();return}}}_updatePcbTraceRenderFromSimpleRouteJson(){const{db:t}=this.root,{traces:n}=this._asyncAutoroutingResult.output_simple_route_json;if(n){this.selectAll("trace");for(const i of n)t.pcb_trace.insert({route:i.route})}}_updatePcbTraceRenderFromPcbTraces(){const{output_pcb_traces:t}=this._asyncAutoroutingResult;if(!t)return;const{db:n}=this.root;for(const i of t)n.pcb_trace.insert(i)}doInitialSchematicLayout(){if(!this.isSubcircuit||!this._parsedProps.schAutoLayoutEnabled)return;const{db:n}=this.root,i=this.getDescendants(),a=[];for(const l of i)if("schematic_component_id"in l){const c=n.schematic_component.get(l.schematic_component_id);if(c){const u=n.schematic_port.list().filter(f=>f.schematic_component_id===c.schematic_component_id);a.push(...u)}}const o=S5e(n.toArray()),s=T5e(o);b5e(n.toArray(),s)}_shouldUseTraceByTraceRouting(){const t=this._parsedProps;return t.autorouter==="auto-local"||t.autorouter==="sequential-trace"?!0:!t.autorouter}},Oen=class extends H0e{constructor(){super(...arguments);rr(this,"pcb_board_id",null)}get isSubcircuit(){return!0}get config(){return{componentName:"Board",zodProps:bJt}}get boardThickness(){return 1.4}get allLayers(){return["top","bottom","inner1","inner2"]}doInitialPcbComponentRender(){var o,s;if((o=this.root)!=null&&o.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this;if(!t.outline&&(!t.width||!t.height))throw new Error("Board width and height or an outline are required");let n=t.width,i=t.height;if(t.outline){const l=t.outline.map(x=>x.x),c=t.outline.map(x=>x.y),u=Math.min(...l),f=Math.max(...l),h=Math.min(...c),v=Math.max(...c);n=f-u,i=v-h}const a=e.pcb_board.insert({center:{x:(t.pcbX??0)+(t.outlineOffsetX??0),y:(t.pcbY??0)+(t.outlineOffsetY??0)},thickness:this.boardThickness,num_layers:this.allLayers.length,width:n,height:i,outline:(s=t.outline)==null?void 0:s.map(l=>({x:l.x+(t.outlineOffsetX??0),y:l.y+(t.outlineOffsetY??0)}))});this.pcb_board_id=a.pcb_board_id}removePcbComponentRender(){const{db:e}=this.root;this.pcb_board_id&&(e.pcb_board.delete(this.pcb_board_id),this.pcb_board_id=null)}_computePcbGlobalTransformBeforeLayout(){return Yv()}},Uen=new Proxy({},{get:(r,e)=>e}),uR=Uen,TQe=class{constructor({input:r}){rr(this,"input");this.input=r}solveAndMapToTraces(){const r=[];for(const e of this.input.connections){if(e.pointsToConnect.length!==2)continue;const[t,n]=e.pointsToConnect,i={type:"pcb_trace",pcb_trace_id:"",route:[{route_type:"wire",x:t.x,y:t.y,layer:"top",width:.1},{route_type:"wire",x:n.x,y:n.y,layer:"top",width:.1}]};r.push(i)}return r}},ken=r=>{const e=Math.min(...r.map(a=>a.center.x)),t=Math.max(...r.map(a=>a.center.x)),n=Math.min(...r.map(a=>a.center.y)),i=Math.max(...r.map(a=>a.center.y));return{minX:e,maxX:t,minY:n,maxY:i}},MQe=["top","bottom","inner1","inner2"],kU=(r,e=[])=>{var s;const t=[];if(e.length===0){const l=r[0].layers;for(const c of l)t.push(...kU(r.slice(1),[c]));return t}if(r.length===0)return[];const n=r[0],i=n.via||n.optional_via,a=e[e.length-1];if(r.length===1){const l=n;return l.layers&&i?l.layers.map(c=>({layer_path:[...e,c]})):(s=l.layers)!=null&&s.includes(a)?[{layer_path:[...e,a]}]:[]}if(!i)return n.layers&&!n.layers.includes(a)?[]:kU(r.slice(1),e.concat([a]));const o=(n.optional_via?MQe:MQe.filter(l=>l!==a)).filter(l=>{var c;return!n.layers||((c=n.layers)==null?void 0:c.includes(l))});for(const l of o)t.push(...kU(r.slice(1),e.concat(l)));return t};function CQe(r){const e={x:r.to.x-r.from.x,y:r.to.y-r.from.y},t=Math.abs(e.x),n=Math.abs(e.y);return t>n?e.x>0?"right":"left":e.y>0?"down":"up"}function _w(r,e){return Math.hypot(r.x-e.x,r.y-e.y)}var Fen=r=>{if(r.length===1)return r[0];if(r.some(l=>l.length===0))throw new Error("Cannot merge routes with zero length");const e=[],t=r[0][0],n=r[0][r[0].length-1],i=r[1][0],a=r[1][r[1].length-1],o=Math.min(_w(t,i),_w(t,a)),s=Math.min(_w(n,i),_w(n,a));o<s?e.push(...r[0].reverse()):e.push(...r[0]);for(let l=1;l<r.length;l++){const c=e[e.length-1],u=r[l],f=u[0],h=u[u.length-1],v=_w(c,f),x=_w(c,h);v<x?e.push(...u):e.push(...u.reverse())}for(let l=1;l<e.length-1;l++){const c=e[l-1],u=e[l];c.route_type==="wire"&&u.route_type==="wire"&&c.layer!==u.layer&&e.splice(l,0,{x:c.x,y:c.y,from_layer:c.layer,to_layer:u.layer,route_type:"via"})}return e},Ien=(r,e)=>{const t="_getGlobalPcbPositionBeforeLayout"in r?r._getGlobalPcbPositionBeforeLayout():r,n="_getGlobalPcbPositionBeforeLayout"in e?e._getGlobalPcbPositionBeforeLayout():e;return Math.sqrt((t.x-n.x)**2+(t.y-n.y)**2)};function Ben(r,e){if(e.length===0)throw new Error("No candidates given to getClosest method");let t=e[0],n=1/0;for(const i of e){const a=Ien(r,i);a<n&&(t=i,n=a)}return t}var jen=(r,e)=>{let t=0;t+=r.length??0,t+=e.filter(n=>n.is_crossing).length;for(let n=1;n<e.length;n++){const i=e[n-1],a=e[n],o=Math.abs(i.from.x-i.to.x)<.01,s=Math.abs(a.from.x-a.to.x)<.01;o!==s&&t++}return t},q0e=r=>({up:"bottom",down:"top",left:"right",right:"left"})[r]??null,$0e=({firstEdge:r,firstEdgePort:e,firstDominantDirection:t,lastEdge:n,lastEdgePort:i,lastDominantDirection:a})=>{if(r&&e)return $0e({lastEdge:{from:r.to,to:r.from},lastEdgePort:e,lastDominantDirection:t}).reverse().map(s=>({from:s.to,to:s.from}));let o=[];if(n&&i){const s={x:n.to.x,y:n.to.y};a==="left"||a==="right"?(s.x=i.position.x,o.push({from:n.to,to:{...s}}),o.push({from:s,to:{...i.position}})):(s.y=i.position.y,o.push({from:n.to,to:{...s}}),o.push({from:s,to:{...i.position}}))}return o=o.filter(s=>KS(s.from,s.to)>.01),o};function Ven(r){try{return[r(),null]}catch(e){return[null,e]}}function Hen(r){let e=0;for(let t=0;t<r.length;t++){const n=r[t];if(n.route_type==="wire"){const i=r[t+1];if(i){const a=i.x-n.x,o=i.y-n.y;e+=Math.sqrt(a*a+o*o)}}else n.route_type==="via"&&(e+=1.6)}return e}var qen=r=>{var s,l;const e={left:{x:-.5,y:0},up:{x:.5,y:.5},right:{x:.5,y:0},down:{x:0,y:-.5}}[r.facingDirection],t=(s=r.parent)!=null&&s.config.shouldRenderAsSchematicBox?3:1,n=(l=r.parent)!=null&&l.config.shouldRenderAsSchematicBox&&(r.facingDirection==="left"||r.facingDirection==="right")?3:1,i=e.x,a=e.y,o=r.facingDirection==="up"?.5:0;return{schBoxVertOffset:t,schBoxHorzOffset:n,horzPortDirection:i,vertPortDirectionOffset:a,handleUp:o}},FU=({port:r,anchorPos:e,schDisplayLabel:t,source_trace_id:n},{db:i})=>{const a=qen(r);i.schematic_net_label.insert({anchor_side:"top",center:{x:e.x+a.horzPortDirection*a.schBoxHorzOffset,y:e.y+a.vertPortDirectionOffset*a.schBoxVertOffset},source_net_id:r.source_port_id,text:t,anchor_position:{x:e.x+a.horzPortDirection*a.schBoxHorzOffset,y:e.y+a.vertPortDirectionOffset*a.schBoxVertOffset},symbol_name:"ground_horz"}),i.schematic_trace.insert({edges:[{from:{x:e.x,y:e.y},to:{x:e.x,y:e.y+a.handleUp*a.schBoxVertOffset}},{from:{x:e.x,y:e.y},to:{x:e.x+a.horzPortDirection*a.schBoxHorzOffset,y:e.y+a.vertPortDirectionOffset*a.schBoxVertOffset}}],junctions:[{x:e.x+a.horzPortDirection*a.schBoxHorzOffset,y:e.y+a.vertPortDirectionOffset*a.schBoxVertOffset}],source_trace_id:n})},G0e=({db:r,source_trace_id:e,sameNetOnly:t,differentNetOnly:n})=>{!t&&!n&&(n=!0);const i=r.source_trace.get(e),a=[];for(const o of r.schematic_trace.list()){if(o.source_trace_id===e)continue;const s=r.source_trace.get(o.source_trace_id),l=(s==null?void 0:s.subcircuit_connectivity_map_key)===i.subcircuit_connectivity_map_key;n&&l||t&&!l||a.push(o)}return a},$en=({edges:r,otherEdges:e})=>{const t=[...r];for(let n=0;n<t.length;n++){if(n>2e3)throw new Error("Over 2000 iterations spent inside createSchematicTraceCrossingSegments, you have triggered an infinite loop, please report this!");const i=t[n],a=Math.abs(i.from.x-i.to.x)<.01?"vertical":i.from.y===i.to.y?"horizontal":"not-orthogonal";if(a==="not-orthogonal")continue;const o=[];for(const E of e){const S=E.from.x===E.to.x?"vertical":E.from.y===E.to.y?"horizontal":"not-orthogonal";if(S==="not-orthogonal"||a===S)continue;if(fD([i.from,i.to],[E.from,E.to],{lineThickness:.01})){const C=a==="vertical"?i.from.x:E.from.x,N=a==="vertical"?E.from.y:i.from.y,U={x:C,y:N};o.push({otherEdge:E,crossingPoint:U,distanceFromEdgeFrom:KS(i.from,U)})}}if(o.length===0)continue;let s=o[0];for(const E of o)E.distanceFromEdgeFrom<s.distanceFromEdgeFrom&&(s=E);const l=s.crossingPoint,c=.075;if(l.x===i.from.x&&l.y===i.from.y)continue;const u=M5e(i.from,l),f={x:l.x-u.x*c/2,y:l.y-u.y*c/2},h={x:l.x+u.x*c/2,y:l.y+u.y*c/2},v=KS(h,i.to)<c,x=[{from:i.from,to:f},{from:f,to:h,is_crossing:!0},{from:h,to:i.to}];t.splice(n,1,...x),n+=x.length-2,v&&n++}return t},Gen=(r,e)=>{if(r.from.x===r.to.x&&e.from.x===e.to.x)return null;if(r.from.x===r.to.x){const u=r.from.x,f=(e.to.y-e.from.y)/(e.to.x-e.from.x),h=e.from.y-f*e.from.x,v=f*u+h;return u>=Math.min(e.from.x,e.to.x)&&u<=Math.max(e.from.x,e.to.x)&&v>=Math.min(e.from.y,e.to.y)&&v<=Math.max(e.from.y,e.to.y)?{x:u,y:v}:null}if(e.from.x===e.to.x){const u=e.from.x,f=(r.to.y-r.from.y)/(r.to.x-r.from.x),h=r.from.y-f*r.from.x,v=f*u+h;return u>=Math.min(r.from.x,r.to.x)&&u<=Math.max(r.from.x,r.to.x)&&v>=Math.min(r.from.y,r.to.y)&&v<=Math.max(r.from.y,r.to.y)?{x:u,y:v}:null}const t=(r.to.y-r.from.y)/(r.to.x-r.from.x),n=r.from.y-t*r.from.x,i=(e.to.y-e.from.y)/(e.to.x-e.from.x),a=e.from.y-i*e.from.x;if(t===i)return null;const o=(a-n)/(t-i),s=t*o+n,l=o>=Math.min(r.from.x,r.to.x)&&o<=Math.max(r.from.x,r.to.x)&&s>=Math.min(r.from.y,r.to.y)&&s<=Math.max(r.from.y,r.to.y),c=o>=Math.min(e.from.x,e.to.x)&&o<=Math.max(e.from.x,e.to.x)&&s>=Math.min(e.from.y,e.to.y)&&s<=Math.max(e.from.y,e.to.y);return l&&c?{x:o,y:s}:null},Yen=({edges:r,db:e,source_trace_id:t})=>{const n=G0e({db:e,source_trace_id:t,sameNetOnly:!0}).flatMap(i=>i.edges);for(const i of r)for(const a of n){const o=Gen(i,a);if(o)return`${o.x}${o.y}`,[{x:o.x,y:o.y}]}return[]},Xen=(r,{db:e})=>{const t=r.map(n=>{const i=e.source_port.get(n.source_port_id);if(!(i!=null&&i.source_component_id))return null;const a=e.source_component.get(i.source_component_id);return(a==null?void 0:a.ftype)==="simple_capacitor"?a.max_decoupling_trace_length:null}).filter(n=>n!==null);if(t.length!==0)return Math.min(...t)},Wen=r=>{var a;const e=r.root.db,t=r._findConnectedPorts().ports??[],n=new Set(t.map(o=>o.schematic_port_id)),i=[];for(const o of e.toArray()){if(o.type==="schematic_component"){const s=!!o.symbol_name,l=o.size.width>o.size.height?"horz":"vert";i.push({type:"rect",layers:["top"],center:o.center,width:o.size.width+(s&&l==="horz"?-.5:0),height:o.size.height+(s&&l==="vert"?-.5:0),connectedTo:[]})}if(o.type==="schematic_port"){if(n.has(o.schematic_port_id))continue;const s=o.facing_direction?C5e(o.facing_direction):{x:0,y:0};i.push({type:"rect",layers:["top"],center:{x:o.center.x-s.x*.1,y:o.center.y-s.y*.1},width:.1+Math.abs(s.x)*.3,height:.1+Math.abs(s.y)*.3,connectedTo:[]})}o.type==="schematic_text"&&i.push({type:"rect",layers:["top"],center:o.position,width:(((a=o.text)==null?void 0:a.length)??0)*.1,height:.2,connectedTo:[]}),o.type==="schematic_box"&&i.push({type:"rect",layers:["top"],center:{x:o.x,y:o.y},width:o.width,height:o.height,connectedTo:[]})}return i};function Zen({ports:r,nets:e}){var t,n,i;if(r.length>=2)return`${(t=r[0])==null?void 0:t.selector} to ${(n=r[1])==null?void 0:n.selector}`;if(r.length===1&&e.length===1)return`${(i=r[0])==null?void 0:i.selector} to net.${e[0]._parsedProps.name}`}var Qen=({edges:r,db:e,source_trace_id:t})=>{e.source_trace.get(t);const n=G0e({db:e,source_trace_id:t,differentNetOnly:!0}).flatMap(a=>a.edges),i=a=>{const{from:o,to:s}=a;return o.x===s.x?"vertical":"horizontal"};for(const a of r){const o=i(a),s=()=>n.find(c=>i(c)===o&&fD([a.from,a.to],[c.from,c.to],{lineThickness:.05}));let l=s();for(;l;)o==="horizontal"?(a.from.y+=.1,a.to.y+=.1):(a.from.x+=.1,a.to.x+=.1),l=s()}},IU=r=>({...r._getGlobalPcbPositionAfterLayout(),layers:r.getAvailablePcbLayers()}),xw=class extends ex{constructor(e){super(e);rr(this,"source_trace_id",null);rr(this,"pcb_trace_id",null);rr(this,"schematic_trace_id",null);rr(this,"_portsRoutedOnPcb");rr(this,"subcircuit_connectivity_map_key",null);this._portsRoutedOnPcb=[]}get config(){return{zodProps:HJt,componentName:"Trace"}}_getTracePortOrNetSelectorListFromProps(){return"from"in this.props&&"to"in this.props?[typeof this.props.from=="string"?this.props.from:this.props.from.getPortSelector(),typeof this.props.to=="string"?this.props.to:this.props.to.getPortSelector()]:"path"in this.props?this.props.path.map(e=>typeof e=="string"?e:e.getPortSelector()):[]}getTracePortPathSelectors(){return this._getTracePortOrNetSelectorListFromProps().filter(e=>!e.includes("net."))}getTracePathNetSelectors(){return this._getTracePortOrNetSelectorListFromProps().filter(e=>e.includes("net."))}_findConnectedPorts(){this.root;const{_parsedProps:e,parent:t}=this;if(!t)throw new Error("Trace has no parent");const i=this.getTracePortPathSelectors().map(a=>({selector:a,port:this.getSubcircuit().selectOne(a,{type:"port"})??null}));for(const{selector:a,port:o}of i)if(!o){const s=a.replace(/\>.*$/,""),l=this.getSubcircuit().selectOne(s);l?this.renderError(`Could not find port for selector "${a}" (did you forget to include the pin name?)
|
|
12865
|
+
iteration: ${o}`),lR(`part: "${t[o]}"`),lR(`currentSearch: [${n.map(l=>l.getString()).join(",")}]`),lR(`currentResults: [${i.map(l=>l.getString()).join(",")}]`),s===">")a=!0;else{const l=n.filter(u=>B0e(u,s));n=l.flatMap(u=>a?u.children:u.getSelectableDescendants()),i=l,a=!1}return i}selectOne(e,t){var i;let n=(i=t==null?void 0:t.type)==null?void 0:i.toLowerCase();return t!=null&&t.port&&(n="port"),n?this.selectAll(e).find(a=>a.lowercaseComponentName===n)??null:t!=null&&t.pcbPrimitive?this.selectAll(e).find(a=>a.isPcbPrimitive)??null:t!=null&&t.schematicPrimitive?this.selectAll(e).find(a=>a.isSchematicPrimitive)??null:this.selectAll(e)[0]??null}getAvailablePcbLayers(){var e,t;if(this.isPcbPrimitive){const{maybeFlipLayer:n}=this._getPcbPrimitiveFlippedHelpers();return"layer"in this._parsedProps||this.componentName==="SmtPad"?[n(this._parsedProps.layer??"top")]:"layers"in this._parsedProps?this._parsedProps.layers:this.componentName==="PlatedHole"?((t=(e=this.root)==null?void 0:e._getBoard())==null?void 0:t.allLayers)??["top","bottom"]:[]}return[]}getDescendants(){const e=[];for(const t of this.children)e.push(t),e.push(...t.getDescendants());return e}getSelectableDescendants(){const e=[];for(const t of this.children)t.isSubcircuit?e.push(t):(e.push(t),e.push(...t.getSelectableDescendants()));return e}_getPinCount(){return 0}_getSchematicBoxDimensions(){return null}renderError(e){var t;if(typeof e=="string")return super.renderError(e);(t=this.root)==null||t.db.pcb_placement_error.insert(e)}getString(){var i,a;const{lowercaseComponentName:e,_parsedProps:t,parent:n}=this;return(t==null?void 0:t.pinNumber)!==void 0&&((i=n==null?void 0:n.props)!=null&&i.name)&&(t!=null&&t.name)?`<${e}#${this._renderId}(pin:${t.pinNumber} .${n==null?void 0:n.props.name}>.${t.name}) />`:(a=n==null?void 0:n.props)!=null&&a.name&&(t!=null&&t.name)?`<${e}#${this._renderId}(.${n==null?void 0:n.props.name}>.${t==null?void 0:t.name}) />`:t!=null&&t.from&&(t!=null&&t.to)?`<${e}#${this._renderId}(from:${t.from} to:${t==null?void 0:t.to}) />`:t!=null&&t.name?`<${e}#${this._renderId} name=".${t==null?void 0:t.name}" />`:t!=null&&t.portHints?`<${e}#${this._renderId}(${t.portHints.map(o=>`.${o}`).join(", ")}) />`:`<${e}#${this._renderId} />`}get[Symbol.toStringTag](){return this.getString()}[Symbol.for("nodejs.util.inspect.custom")](){return this.getString()}};function mQe(r){const e=[];for(let t=0;t<r.length-1;t++)e.push([r[t],r[t+1]]);return e}var xen=j.object({name:j.string()}),vQe=class extends ex{constructor(){super(...arguments);rr(this,"source_net_id")}get config(){return{componentName:"Net",zodProps:xen}}getPortSelector(){return`net.${this.props.name}`}doInitialSourceRender(){const{db:e}=this.root,{_parsedProps:t}=this,n=e.source_net.insert({name:t.name,member_source_group_ids:[]});this.source_net_id=n.source_net_id}getAllConnectedPorts(){const e=this.getSubcircuit().selectAll("port"),t=[];for(const n of e){const i=n._getDirectlyConnectedTraces();for(const a of i)if(a._isExplicitlyConnectedToNet(this)){t.push(n);break}}return t}_getAllDirectlyConnectedTraces(){const e=this.getSubcircuit().selectAll("trace"),t=[];for(const n of e)n._isExplicitlyConnectedToNet(this)&&t.push(n);return t}doInitialPcbRouteNetIslands(){var a;if((a=this.root)!=null&&a.pcbDisabled||this.getSubcircuit()._parsedProps.routingDisabled)return;const{db:e}=this.root,t=this._getAllDirectlyConnectedTraces().filter(o=>{var s;return(((s=o._portsRoutedOnPcb)==null?void 0:s.length)??0)>0}),n=[];for(const o of t){const s=o._portsRoutedOnPcb,l=n.find(c=>s.some(u=>c.ports.includes(u)));if(!l){n.push({ports:[...s],traces:[o]});continue}l.traces.push(o),l.ports.push(...s)}if(n.length===0)return;const i=mQe(n);for(const[o,s]of i){const l=o.ports.map(b=>b._getGlobalPcbPositionBeforeLayout()),c=s.ports.map(b=>b._getGlobalPcbPositionBeforeLayout());let u=1/0,f=[-1,-1];for(let b=0;b<l.length;b++){const C=l[b];for(let N=0;N<c.length;N++){const U=c[N],G=Math.sqrt((C.x-U.x)**2+(C.y-U.y)**2);G<u&&(u=G,f=[b,N])}}const h=o.ports[f[0]],v=s.ports[f[1]],x=e.toArray().filter(b=>b.type==="pcb_smtpad"||b.type==="pcb_trace"||b.type==="pcb_plated_hole"||b.type==="pcb_hole"||b.type==="source_port"||b.type==="pcb_port"),{solution:E}=u5e(x.concat([{type:"source_trace",source_trace_id:"__net_trace_tmp",connected_source_port_ids:[h.source_port_id,v.source_port_id]}])),S=E[0];if(!S){this.renderError({pcb_trace_error_id:"",pcb_trace_id:"__net_trace_tmp",pcb_component_ids:[h.pcb_component_id,v.pcb_component_id].filter(Boolean),pcb_port_ids:[h.pcb_port_id,v.pcb_port_id].filter(Boolean),type:"pcb_trace_error",error_type:"pcb_trace_error",message:`Failed to route net islands for "${this.getString()}"`,source_trace_id:"__net_trace_tmp"});return}e.pcb_trace.insert(S)}}renderError(e){var t;if(typeof e=="string")return super.renderError(e);(t=this.root)==null||t.db.pcb_trace_error.insert(e)}},yQe=(r,e)=>{for(const t of e)typeof t=="string"&&t.startsWith("net.")&&(r.getSubcircuit().selectOne(t)||r.getSubcircuit().add(new vQe({name:t.split("net.")[1]})))},j0e=class extends ex{constructor(){super(...arguments);rr(this,"pcb_smtpad_id",null);rr(this,"matchedPort",null);rr(this,"isPcbPrimitive",!0)}get config(){return{componentName:"SmtPad",zodProps:IJt}}getPcbSize(){const{_parsedProps:e}=this;if(e.shape==="circle")return{width:e.radius*2,height:e.radius*2};if(e.shape==="rect")return{width:e.width,height:e.height};throw new Error(`getPcbSize for shape "${e.shape}" not implemented for ${this.componentName}`)}doInitialPortMatching(){var t;const e=(t=this.getPrimitiveContainer())==null?void 0:t.selectAll("port");if(this.props.portHints){for(const n of e)if(n.isMatchingAnyOf(this.props.portHints)){this.matchedPort=n,n.registerMatch(this);return}}}doInitialPcbPrimitiveRender(){var h,v,x,E,S,b,C,N,U;if((h=this.root)!=null&&h.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this;if(!t.portHints)return;const n=this.getPrimitiveContainer(),i=this.getSubcircuit(),a=this._getGlobalPcbPositionBeforeLayout();n==null||n._getGlobalPcbPositionBeforeLayout();const o=zT(this._computePcbGlobalTransformBeforeLayout()),s=Math.abs(o.rotation.angle*(180/Math.PI)-90)%180<.01,{maybeFlipLayer:l}=this._getPcbPrimitiveFlippedHelpers(),c=(n==null?void 0:n._parsedProps.pcbRotation)??0;let u=null;const f=((v=this.parent)==null?void 0:v.pcb_component_id)??((x=this.getPrimitiveContainer())==null?void 0:x.pcb_component_id);t.shape==="circle"?(u=e.pcb_smtpad.insert({pcb_component_id:f,pcb_port_id:(E=this.matchedPort)==null?void 0:E.pcb_port_id,layer:l(t.layer??"top"),shape:"circle",radius:t.radius,port_hints:t.portHints.map(G=>G.toString()),x:a.x,y:a.y,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0}),e.pcb_solder_paste.insert({layer:u.layer,shape:"circle",radius:u.radius*.7,x:u.x,y:u.y,pcb_component_id:u.pcb_component_id,pcb_smtpad_id:u.pcb_smtpad_id,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((S=this.getGroup())==null?void 0:S.pcb_group_id)??void 0})):t.shape==="rect"&&(u=c===0||s?e.pcb_smtpad.insert({pcb_component_id:f,pcb_port_id:(b=this.matchedPort)==null?void 0:b.pcb_port_id,layer:l(t.layer??"top"),shape:"rect",width:s?t.height:t.width,height:s?t.width:t.height,port_hints:t.portHints.map(G=>G.toString()),x:a.x,y:a.y,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((C=this.getGroup())==null?void 0:C.pcb_group_id)??void 0}):e.pcb_smtpad.insert({pcb_component_id:f,layer:t.layer??"top",shape:"rotated_rect",width:t.width,height:t.height,x:a.x,y:a.y,ccw_rotation:c,port_hints:t.portHints.map(G=>G.toString()),subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((N=this.getGroup())==null?void 0:N.pcb_group_id)??void 0}),u.shape==="rect"&&e.pcb_solder_paste.insert({layer:u.layer,shape:"rect",width:u.width*.7,height:u.height*.7,x:u.x,y:u.y,pcb_component_id:u.pcb_component_id,pcb_smtpad_id:u.pcb_smtpad_id,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((U=this.getGroup())==null?void 0:U.pcb_group_id)??void 0})),u&&(this.pcb_smtpad_id=u.pcb_smtpad_id)}doInitialPcbPortAttachment(){var t,n;if((t=this.root)!=null&&t.pcbDisabled)return;const{db:e}=this.root;e.pcb_smtpad.update(this.pcb_smtpad_id,{pcb_port_id:(n=this.matchedPort)==null?void 0:n.pcb_port_id})}_getPcbCircuitJsonBounds(){const{db:e}=this.root,t=e.pcb_smtpad.get(this.pcb_smtpad_id);if(t.shape==="rect")return{center:{x:t.x,y:t.y},bounds:{left:t.x-t.width/2,top:t.y+t.height/2,right:t.x+t.width/2,bottom:t.y-t.height/2},width:t.width,height:t.height};if(t.shape==="rotated_rect"){const n=t.ccw_rotation*Math.PI/180,i=Math.cos(n),a=Math.sin(n),o=t.width/2,s=t.height/2,l=Math.abs(o*i)+Math.abs(s*a),c=Math.abs(o*a)+Math.abs(s*i);return{center:{x:t.x,y:t.y},bounds:{left:t.x-l,right:t.x+l,top:t.y-c,bottom:t.y+c},width:l*2,height:c*2}}if(t.shape==="circle")return{center:{x:t.x,y:t.y},bounds:{left:t.x-t.radius,top:t.y-t.radius,right:t.x+t.radius,bottom:t.y+t.radius},width:t.radius*2,height:t.radius*2};throw new Error(`circuitJson bounds calculation not implemented for shape "${t.shape}"`)}_setPositionFromLayout(e){var i;const{db:t}=this.root;t.pcb_smtpad.update(this.pcb_smtpad_id,{x:e.x,y:e.y});const n=t.pcb_solder_paste.list().find(a=>a.pcb_smtpad_id===this.pcb_smtpad_id);t.pcb_solder_paste.update(n==null?void 0:n.pcb_solder_paste_id,{x:e.x,y:e.y}),(i=this.matchedPort)==null||i._setPositionFromLayout(e)}},gQe=class extends ex{constructor(){super(...arguments);rr(this,"pcb_silkscreen_path_id",null)}get config(){return{componentName:"SilkscreenPath",zodProps:sen}}doInitialPcbPrimitiveRender(){var s,l,c;if((s=this.root)!=null&&s.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=t.layer??"top";if(n!=="top"&&n!=="bottom")throw new Error(`Invalid layer "${n}" for SilkscreenPath. Must be "top" or "bottom".`);const i=this._computePcbGlobalTransformBeforeLayout(),a=this.getSubcircuit(),o=e.pcb_silkscreen_path.insert({pcb_component_id:(l=this.parent)==null?void 0:l.pcb_component_id,layer:n,route:t.route.map(u=>{const f=li(i,{x:u.x,y:u.y});return{...u,x:f.x,y:f.y}}),stroke_width:t.strokeWidth??.1,subcircuit_id:(a==null?void 0:a.subcircuit_id)??void 0,pcb_group_id:((c=this.getGroup())==null?void 0:c.pcb_group_id)??void 0});this.pcb_silkscreen_path_id=o.pcb_silkscreen_path_id}},_Qe=class extends ex{constructor(){super(...arguments);rr(this,"pcb_plated_hole_id",null);rr(this,"matchedPort",null);rr(this,"isPcbPrimitive",!0)}get config(){return{componentName:"PlatedHole",zodProps:wJt}}getAvailablePcbLayers(){return["top","inner1","inner2","bottom"]}getPcbSize(){const{_parsedProps:e}=this;if(e.shape==="circle")return{width:e.outerDiameter,height:e.outerDiameter};if(e.shape==="oval"||e.shape==="pill")return{width:e.outerWidth,height:e.outerHeight};throw new Error(`getPcbSize for shape "${e.shape}" not implemented for ${this.componentName}`)}_getPcbCircuitJsonBounds(){const{db:e}=this.root,t=e.pcb_plated_hole.get(this.pcb_plated_hole_id),n=this.getPcbSize();return{center:{x:t.x,y:t.y},bounds:{left:t.x-n.width/2,top:t.y+n.height/2,right:t.x+n.width/2,bottom:t.y-n.height/2},width:n.width,height:n.height}}_setPositionFromLayout(e){var n;const{db:t}=this.root;t.pcb_plated_hole.update(this.pcb_plated_hole_id,{x:e.x,y:e.y}),(n=this.matchedPort)==null||n._setPositionFromLayout(e)}doInitialPortMatching(){var t;const e=(t=this.getPrimitiveContainer())==null?void 0:t.selectAll("port");if(this.props.portHints){for(const n of e)if(n.isMatchingAnyOf(this.props.portHints)){this.matchedPort=n,n.registerMatch(this);return}}}doInitialPcbPrimitiveRender(){var o,s,l,c,u,f,h;if((o=this.root)!=null&&o.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this._getGlobalPcbPositionBeforeLayout(),i=((s=this.parent)==null?void 0:s.pcb_component_id)??((l=this.getPrimitiveContainer())==null?void 0:l.pcb_component_id),a=this.getSubcircuit();if(t.shape==="circle"){const v=e.pcb_plated_hole.insert({pcb_component_id:i,pcb_port_id:(c=this.matchedPort)==null?void 0:c.pcb_port_id,outer_diameter:t.outerDiameter,hole_diameter:t.holeDiameter,shape:"circle",port_hints:this.getNameAndAliases(),x:n.x,y:n.y,layers:["top","bottom"],subcircuit_id:(a==null?void 0:a.subcircuit_id)??void 0,pcb_group_id:((u=this.getGroup())==null?void 0:u.pcb_group_id)??void 0});this.pcb_plated_hole_id=v.pcb_plated_hole_id}else if(t.shape==="pill"||t.shape==="oval"){const v=e.pcb_plated_hole.insert({pcb_component_id:i,pcb_port_id:(f=this.matchedPort)==null?void 0:f.pcb_port_id,outer_width:t.outerWidth,outer_height:t.outerHeight,hole_width:t.innerWidth,hole_height:t.innerHeight,shape:t.shape,port_hints:this.getNameAndAliases(),x:n.x,y:n.y,layers:["top","bottom"],subcircuit_id:(a==null?void 0:a.subcircuit_id)??void 0,pcb_group_id:((h=this.getGroup())==null?void 0:h.pcb_group_id)??void 0});this.pcb_plated_hole_id=v.pcb_plated_hole_id}}doInitialPcbPortAttachment(){var t,n;if((t=this.root)!=null&&t.pcbDisabled)return;const{db:e}=this.root;e.pcb_plated_hole.update(this.pcb_plated_hole_id,{pcb_port_id:(n=this.matchedPort)==null?void 0:n.pcb_port_id})}},V0e=class extends ex{constructor(){super(...arguments);rr(this,"pcb_keepout_id",null);rr(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Keepout",zodProps:ien}}doInitialPcbPrimitiveRender(){var l,c,u;if((l=this.root)!=null&&l.pcbDisabled)return;const e=this.getSubcircuit(),{db:t}=this.root,{_parsedProps:n}=this,i=this._getGlobalPcbPositionBeforeLayout(),a=zT(this._computePcbGlobalTransformBeforeLayout()),o=Math.abs(a.rotation.angle*(180/Math.PI)-90)%180<.01;let s=null;n.shape==="circle"?s=t.pcb_keepout.insert({layers:["top"],shape:"circle",radius:n.radius,center:{x:i.x,y:i.y},subcircuit_id:(e==null?void 0:e.subcircuit_id)??void 0,pcb_group_id:((c=e==null?void 0:e.getGroup())==null?void 0:c.pcb_group_id)??void 0}):n.shape==="rect"&&(s=t.pcb_keepout.insert({layers:["top"],shape:"rect",...o?{width:n.height,height:n.width}:{width:n.width,height:n.height},center:{x:i.x,y:i.y},subcircuit_id:(e==null?void 0:e.subcircuit_id)??void 0,pcb_group_id:((u=e==null?void 0:e.getGroup())==null?void 0:u.pcb_group_id)??void 0})),s&&(this.pcb_keepout_id=s.pcb_keepout_id)}},xQe=class extends ex{constructor(){super(...arguments);rr(this,"pcb_hole_id",null);rr(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Hole",zodProps:VJt}}getPcbSize(){const{_parsedProps:e}=this;return{width:e.diameter,height:e.diameter}}doInitialPcbPrimitiveRender(){var o,s;if((o=this.root)!=null&&o.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this.getSubcircuit(),i=this._getGlobalPcbPositionBeforeLayout(),a=e.pcb_hole.insert({hole_shape:"circle",hole_diameter:t.diameter,x:i.x,y:i.y,subcircuit_id:(n==null?void 0:n.subcircuit_id)??void 0,pcb_group_id:((s=n==null?void 0:n.getGroup())==null?void 0:s.pcb_group_id)??void 0});this.pcb_hole_id=a.pcb_hole_id}_getPcbCircuitJsonBounds(){const{db:e}=this.root,t=e.pcb_hole.get(this.pcb_hole_id),n=this.getPcbSize();return{center:{x:t.x,y:t.y},bounds:{left:t.x-n.width/2,top:t.y-n.height/2,right:t.x+n.width/2,bottom:t.y+n.height/2},width:n.width,height:n.height}}_setPositionFromLayout(e){const{db:t}=this.root;t.pcb_hole.update(this.pcb_hole_id,{x:e.x,y:e.y})}},ben=r=>{const e=[];for(const t of r)t.type==="pcb_smtpad"&&t.shape==="rect"?e.push(new j0e({pcbX:t.x,pcbY:t.y,layer:t.layer,shape:"rect",height:t.height,width:t.width,portHints:t.port_hints})):t.type==="pcb_smtpad"&&t.shape==="circle"?e.push(new j0e({pcbX:t.x,pcbY:t.y,layer:t.layer,shape:"circle",radius:t.radius,portHints:t.port_hints})):t.type==="pcb_silkscreen_path"?e.push(new gQe({layer:t.layer,route:t.route,strokeWidth:t.stroke_width})):t.type==="pcb_plated_hole"&&t.shape==="circle"?t.shape==="circle"&&e.push(new _Qe({pcbX:t.x,pcbY:t.y,shape:"circle",holeDiameter:t.hole_diameter,outerDiameter:t.outer_diameter,portHints:t.port_hints})):t.type==="pcb_keepout"&&t.shape==="circle"?e.push(new V0e({pcbX:t.center.x,pcbY:t.center.y,shape:"circle",radius:t.radius})):t.type==="pcb_keepout"&&t.shape==="rect"?e.push(new V0e({pcbX:t.center.x,pcbY:t.center.y,shape:"rect",width:t.width,height:t.height})):t.type==="pcb_hole"&&t.hole_shape==="circle"&&e.push(new xQe({pcbX:t.x,pcbY:t.y,diameter:t.hole_diameter}));return e};function bQe(r){let e=1/0,t=1/0,n=-1/0,i=-1/0;for(const s of r)if(s.isPcbPrimitive){const{x:l,y:c}=s._getGlobalPcbPositionBeforeLayout(),{width:u,height:f}=s.getPcbSize();e=Math.min(e,l-u/2),t=Math.min(t,c-f/2),n=Math.max(n,l+u/2),i=Math.max(i,c+f/2)}else if(s.componentName==="Footprint"){const l=bQe(s.children);e=Math.min(e,l.minX),t=Math.min(t,l.minY),n=Math.max(n,l.maxX),i=Math.max(i,l.maxY)}let a=n-e,o=i-t;return a<0&&(a=0),o<0&&(o=0),{minX:e,minY:t,maxX:n,maxY:i,width:a,height:o}}function Sen(r,e){const t=e.x-r.x,n=e.y-r.y;return Math.abs(t)>Math.abs(n)?t>=0?"right":"left":n>=0?"up":"down"}var Een=r=>{if(r.length<=1)return!0;const e=r.map(a=>{const o=a._getPcbCircuitJsonBounds();return{left:o.bounds.left,right:o.bounds.right,top:o.bounds.top,bottom:o.bounds.bottom}}),t=Array(e.length).fill(!1).map(()=>Array(e.length).fill(!1));for(let a=0;a<e.length;a++)for(let o=a+1;o<e.length;o++){const s=e[a],l=e[o];t[a][o]=t[o][a]=!(s.right<l.left||s.left>l.right||s.bottom>l.top||s.top<l.bottom)}const n=new Set,i=a=>{n.add(a);for(let o=0;o<e.length;o++)t[a][o]&&!n.has(o)&&i(o)};return i(0),n.size===e.length},wen=r=>{if(r.length===0)throw new Error("Cannot get center of empty PCB primitives array");const e=r.map(i=>i._getPcbCircuitJsonBounds().center).filter(Boolean),t=e.reduce((i,a)=>i+a.x,0),n=e.reduce((i,a)=>i+a.y,0);return{x:t/e.length,y:n/e.length}},Ten=j.object({name:j.string().optional(),pinNumber:j.number().optional(),aliases:j.array(j.string()).optional()}),AS=class extends ex{constructor(e,t={}){if(!e.name&&e.pinNumber!==void 0&&(e.name=`pin${e.pinNumber}`),!e.name)throw new Error("Port must have a name or a pinNumber");super(e);rr(this,"source_port_id",null);rr(this,"pcb_port_id",null);rr(this,"schematic_port_id",null);rr(this,"schematicSymbolPortDef",null);rr(this,"matchedComponents");rr(this,"facingDirection",null);rr(this,"originDescription",null);t.originDescription&&(this.originDescription=t.originDescription),this.matchedComponents=[]}get config(){return{componentName:"Port",zodProps:Ten}}_getGlobalPcbPositionBeforeLayout(){const e=this.matchedComponents.find(n=>n.isPcbPrimitive),t=this.parent;if(t&&!t.props.footprint)throw new Error(`${t.componentName} "${t.props.name}" does not have a footprint. Add a footprint prop, e.g. <${t.componentName.toLowerCase()} footprint="..." />`);if(!e)throw new Error(`Port ${this} has no matching PCB primitives. This often means the footprint's pads lack matching port hints.`);return(e==null?void 0:e._getGlobalPcbPositionBeforeLayout())??{x:0,y:0}}_getPcbCircuitJsonBounds(){if(!this.pcb_port_id)return super._getPcbCircuitJsonBounds();const{db:e}=this.root,t=e.pcb_port.get(this.pcb_port_id);return{center:{x:t.x,y:t.y},bounds:{left:0,top:0,right:0,bottom:0},width:0,height:0}}_getGlobalPcbPositionAfterLayout(){return this._getPcbCircuitJsonBounds().center}_getPortsInternallyConnectedToThisPort(){const e=this.parent;if(!e||!e._getInternallyConnectedPins)return[];const t=e._getInternallyConnectedPins();for(const n of t)if(n.some(i=>i===this))return n;return[]}_hasSchematicPort(){var n,i;if((n=this.parent)==null?void 0:n.getSchematicSymbol())return!!(this.schematicSymbolPortDef||this._getPortsInternallyConnectedToThisPort().some(o=>o.schematicSymbolPortDef));const t=(i=this==null?void 0:this.parent)==null?void 0:i._getSchematicBoxDimensions();return!!(t&&this.props.pinNumber!==void 0&&t.getPortPositionByPinNumber(this.props.pinNumber))}_getGlobalSchematicPositionBeforeLayout(){var n,i,a;const e=(n=this.parent)==null?void 0:n.getSchematicSymbol();if(e){let o=this.schematicSymbolPortDef;if(!o&&(o=((i=this._getPortsInternallyConnectedToThisPort().find(l=>l.schematicSymbolPortDef))==null?void 0:i.schematicSymbolPortDef)??null,!o))throw new Error(`Couldn't find schematicSymbolPortDef for port ${this.getString()}, searched internally connected ports and none had a schematicSymbolPortDef. Why are we trying to get the schematic position of this port?`);const s=J0(this.parent.computeSchematicGlobalTransform(),Th(-e.center.x,-e.center.y));return li(s,o)}const t=(a=this==null?void 0:this.parent)==null?void 0:a._getSchematicBoxDimensions();if(t&&this.props.pinNumber!==void 0){const o=t.getPortPositionByPinNumber(this.props.pinNumber);if(!o)throw new Error(`Couldn't find position for schematic_port for port ${this.getString()} inside of the schematic box`);return li(this.parent.computeSchematicGlobalTransform(),o)}throw new Error(`Couldn't find position for schematic_port for port ${this.getString()}`)}_getGlobalSchematicPositionAfterLayout(){const{db:e}=this.root;if(!this.schematic_port_id)throw new Error("Can't get schematic port position after layout, no schematic_port_id");const t=e.schematic_port.get(this.schematic_port_id);if(!t)throw new Error(`Schematic port not found when trying to get post-layout position: ${this.schematic_port_id}`);return t.center}registerMatch(e){this.matchedComponents.push(e)}getNameAndAliases(){const{_parsedProps:e}=this;return Array.from(new Set([...e.aliases??[],...e.name?[e.name]:[],...typeof e.pinNumber=="number"?[`pin${e.pinNumber}`,e.pinNumber.toString()]:[],...this.externallyAddedAliases??[]]))}isMatchingPort(e){return this.isMatchingAnyOf(e.getNameAndAliases())}getPortSelector(){var e;return`.${(e=this.parent)==null?void 0:e.props.name} > port.${this.props.name}`}getAvailablePcbLayers(){return Array.from(new Set(this.matchedComponents.flatMap(e=>e.getAvailablePcbLayers())))}_getDirectlyConnectedTraces(){return this.getSubcircuit().selectAll("trace").filter(n=>n._isExplicitlyConnectedToPort(this))}doInitialSourceRender(){var a;const{db:e}=this.root,{_parsedProps:t}=this,n=this.getNameAndAliases(),i=e.source_port.insert({name:t.name,pin_number:t.pinNumber,port_hints:n,source_component_id:(a=this.parent)==null?void 0:a.source_component_id});this.source_port_id=i.source_port_id}doInitialSourceParentAttachment(){var t,n,i,a;const{db:e}=this.root;if(!((t=this.parent)!=null&&t.source_component_id))throw new Error(`${this.getString()} has no parent source component (parent: ${(n=this.parent)==null?void 0:n.getString()})`);e.source_port.update(this.source_port_id,{source_component_id:(i=this.parent)==null?void 0:i.source_component_id}),this.source_component_id=(a=this.parent)==null?void 0:a.source_component_id}doInitialPcbPortRender(){var a,o,s,l,c;if((a=this.root)!=null&&a.pcbDisabled)return;const{db:e}=this.root,{matchedComponents:t}=this;if(!((o=this.parent)!=null&&o.pcb_component_id))throw new Error(`${this.getString()} has no parent pcb component, cannot render pcb_port (parent: ${(s=this.parent)==null?void 0:s.getString()})`);const n=t.filter(u=>u.isPcbPrimitive);if(n.length===0)return;let i=null;if(n.length===1&&(i=n[0]._getPcbCircuitJsonBounds().center),n.length>1){if(!Een(n))throw new Error(`${this.getString()} has multiple non-overlapping pcb matches, unclear how to place pcb_port: ${n.map(u=>u.getString()).join(", ")}. (Note: tscircuit core does not currently allow you to specify internally connected pcb primitives with the same port hints, try giving them different port hints and specifying they are connected externally- or file an issue)`);i=wen(n)}if(i){const u=this.getSubcircuit(),f=e.pcb_port.insert({pcb_component_id:(l=this.parent)==null?void 0:l.pcb_component_id,layers:this.getAvailablePcbLayers(),subcircuit_id:(u==null?void 0:u.subcircuit_id)??void 0,pcb_group_id:((c=this.getGroup())==null?void 0:c.pcb_group_id)??void 0,...i,source_port_id:this.source_port_id});this.pcb_port_id=f.pcb_port_id}else{const u=n[0];throw new Error(`${u.getString()} does not have a center or _getGlobalPcbPositionBeforeLayout method (needed for pcb_port placement)`)}}doInitialSchematicPortRender(){var f;const{db:e}=this.root,{_parsedProps:t}=this,n=this.getPrimitiveContainer();if(!n||!this._hasSchematicPort())return;const i=n._getGlobalSchematicPositionBeforeLayout(),a=this._getGlobalSchematicPositionBeforeLayout();let o=null;const s=n._getSchematicBoxDimensions();s&&t.pinNumber!==void 0&&(o=s.getPortPositionByPinNumber(t.pinNumber)),this.getSubcircuit().props._schDebugObjectsEnabled&&e.schematic_debug_object.insert({shape:"rect",center:a,size:{width:.1,height:.1},label:"obstacle"}),o!=null&&o.side?this.facingDirection={left:"left",right:"right",top:"up",bottom:"down"}[o.side]:this.facingDirection=Sen(i,a);const l=e.source_port.get(this.source_port_id);let c;for(const h of(l==null?void 0:l.port_hints)??[])h.match(/^(pin)?\d+$/)||(c=h);const u=e.schematic_port.insert({schematic_component_id:(f=this.parent)==null?void 0:f.schematic_component_id,center:a,source_port_id:this.source_port_id,facing_direction:this.facingDirection,distance_from_component_edge:.4,side_of_component:o==null?void 0:o.side,pin_number:t.pinNumber,true_ccw_index:o==null?void 0:o.trueIndex,display_pin_label:c});this.schematic_port_id=u.schematic_port_id}_setPositionFromLayout(e){const{db:t}=this.root;this.pcb_port_id&&t.pcb_port.update(this.pcb_port_id,{x:e.x,y:e.y})}_hasMatchedPcbPrimitive(){return this.matchedComponents.some(e=>e.isPcbPrimitive)}},SQe=r=>{const e=r.find(t=>/^(pin)?\d+$/.test(t));return e?Number.parseInt(e.replace(/^pin/,"")):null};function cR(r,e){var a;const t=SQe(r);if(!t)return null;const i=[...r.filter(o=>o.toString()!==t.toString()&&o!==`pin${t}`),...((a=e==null?void 0:e.additionalAliases)==null?void 0:a[`pin${t}`])??[]];return new AS({pinNumber:t,aliases:i})}var Men=r=>{for(const e of["leftSide","rightSide","topSide","bottomSide"])if(e in r&&typeof r[e]=="number")throw new Error(`A number was specified for "${e}", you probably meant to use "size" not "side"`);return"leftSide"in r||"rightSide"in r||"topSide"in r||"bottomSide"in r},Cen=r=>{var a,o,s,l;if(Men(r))return{leftSize:((a=r.leftSide)==null?void 0:a.pins.length)??0,rightSize:((o=r.rightSide)==null?void 0:o.pins.length)??0,topSize:((s=r.topSide)==null?void 0:s.pins.length)??0,bottomSize:((l=r.bottomSide)==null?void 0:l.pins.length)??0};const{leftSize:e=0,rightSize:t=0,topSize:n=0,bottomSize:i=0}=r;return{leftSize:e,rightSize:t,topSize:n,bottomSize:i}};function EQe(r){return r.leftSide!==void 0}var Ren=r=>{var S,b,C,N,U,G,Z,$;const e=r.portDistanceFromEdge??.4;let t=r.schPortArrangement?Cen(r.schPortArrangement):null;const n={left:0,right:0,top:0,bottom:0};let i=r.pinCount??null;if(i===null)if(t)i=t.leftSize+t.rightSize+t.topSize;else throw new Error("Could not determine pin count for the schematic box");if(i&&!t){const te=Math.floor(i/2);t={leftSize:i-te,rightSize:te,topSize:0,bottomSize:0}}t||(t={leftSize:0,rightSize:0,topSize:0,bottomSize:0});const a=({side:te,sideIndex:re,truePinIndex:se})=>{var Re,Te,Ce,Me;if(!r.schPortArrangement||!EQe(r.schPortArrangement))return se+1;const fe={left:"top-to-bottom",bottom:"left-to-right",right:"bottom-to-top",top:"right-to-left"}[te],de=((Te=(Re=r.schPortArrangement)==null?void 0:Re[`${te}Side`])==null?void 0:Te.direction)??fe,ye=(Me=(Ce=r.schPortArrangement)==null?void 0:Ce[`${te}Side`])==null?void 0:Me.pins;let Se=re;return de!==fe&&(Se=ye.length-re-1),sR(ye[Se],r.pinLabels)},o=[];let s=0,l=0;for(let te=0;te<t.leftSize;te++){const re=a({side:"left",sideIndex:te,truePinIndex:l}),se=((S=r.numericSchPinStyle)==null?void 0:S[`pin${re}`])??((b=r.numericSchPinStyle)==null?void 0:b[re]);se!=null&&se.topMargin&&(s+=se.topMargin),o.push({trueIndex:l,pinNumber:re,side:"left",distanceFromOrthogonalEdge:s}),se!=null&&se.bottomMargin&&(s+=se.bottomMargin),te===t.leftSize-1?n.left=s:s+=r.schPinSpacing,l++}s=0;for(let te=0;te<t.bottomSize;te++){const re=a({side:"bottom",sideIndex:te,truePinIndex:l}),se=((C=r.numericSchPinStyle)==null?void 0:C[`pin${re}`])??((N=r.numericSchPinStyle)==null?void 0:N[re]);se!=null&&se.leftMargin&&(s+=se.leftMargin),o.push({trueIndex:l,pinNumber:re,side:"bottom",distanceFromOrthogonalEdge:s}),se!=null&&se.rightMargin&&(s+=se.rightMargin),te===t.bottomSize-1?n.bottom=s:s+=r.schPinSpacing,l++}s=0;for(let te=0;te<t.rightSize;te++){const re=a({side:"right",sideIndex:te,truePinIndex:l}),se=((U=r.numericSchPinStyle)==null?void 0:U[`pin${re}`])??((G=r.numericSchPinStyle)==null?void 0:G[re]);se!=null&&se.bottomMargin&&(s+=se.bottomMargin),o.push({trueIndex:l,pinNumber:re,side:"right",distanceFromOrthogonalEdge:s}),se!=null&&se.topMargin&&(s+=se.topMargin),te===t.rightSize-1?n.right=s:s+=r.schPinSpacing,l++}s=0;for(let te=0;te<t.topSize;te++){const re=a({side:"top",sideIndex:te,truePinIndex:l}),se=((Z=r.numericSchPinStyle)==null?void 0:Z[`pin${re}`])??(($=r.numericSchPinStyle)==null?void 0:$[re]);se!=null&&se.rightMargin&&(s+=se.rightMargin),o.push({trueIndex:l,pinNumber:re,side:"top",distanceFromOrthogonalEdge:s}),se!=null&&se.leftMargin&&(s+=se.leftMargin),te===t.topSize-1?n.top=s:s+=r.schPinSpacing,l++}let c=r.schWidth;c||(c=Math.max(n.top+r.schPinSpacing*2,n.bottom+r.schPinSpacing*2));const u=r.pinLabels?Math.max(...Object.values(r.pinLabels).map(te=>te.length*.1)):0,f=u>0?1.1:0;c=Math.max(c,u+f);let h=r.schHeight;h||(h=Math.max(n.left+r.schPinSpacing*2,n.right+r.schPinSpacing*2));const v={left:{x:-c/2-e,y:n.left/2},bottom:{x:-n.bottom/2,y:-h/2-e},right:{x:c/2+e,y:-n.right/2},top:{x:n.top/2,y:h/2+e}},x={left:{x:0,y:-1},right:{x:0,y:1},top:{x:-1,y:0},bottom:{x:1,y:0}},E=o.map(te=>{const{distanceFromOrthogonalEdge:re,side:se}=te,fe=v[se],de=x[se];return{x:fe.x+re*de.x,y:fe.y+re*de.y,...te}});return{getPortPositionByPinNumber(te){const re=E.find(se=>se.pinNumber.toString()===te.toString());return re||null},getSize(){return{width:c,height:h}},getSizeIncludingPins(){return{width:c+(t.leftSize||t.rightSize?.4:0),height:h+(t.topSize||t.bottomSize?.4:0)}},pinCount:i}},Aen=vg("tscircuit:core:footprint"),Pen=class extends ex{get config(){return{componentName:"Footprint",zodProps:qJt}}doInitialPcbFootprintLayout(){var f,h,v,x,E;if((f=this.root)!=null&&f.pcbDisabled)return;const r=this.children.filter(S=>S.componentName==="Constraint");if(r.length===0)return;const{isFlipped:e}=this._getPcbPrimitiveFlippedHelpers(),t=S=>e&&"left"in S&&"right"in S?{...S,left:S.right,right:S.left}:S,n=r.flatMap(S=>S._getAllReferencedComponents().componentsWithSelectors).map(({component:S,selector:b,componentSelector:C,edge:N})=>({component:S,selector:b,componentSelector:C,edge:N,bounds:S._getPcbCircuitJsonBounds()}));if(n.some(S=>S.edge))throw new Error("edge constraints not implemented yet for footprint layout, contributions welcome!");function i(S){return n.find(({selector:b})=>b===S)}const a=new g5e,o={};function s(S){return S in o||(o[S]=new lD(S),a.addEditVariable(o[S],r_.weak)),o[S]}for(const{selector:S,bounds:b}of n){const C=s(`${S}_x`),N=s(`${S}_y`);a.suggestValue(C,b.center.x),a.suggestValue(N,b.center.y)}for(const S of r){const b=S._parsedProps;if("xDist"in b){const{xDist:C,left:N,right:U,edgeToEdge:G,centerToCenter:Z}=t(b),$=s(`${N}_x`),te=s(`${U}_x`),re=(h=i(N))==null?void 0:h.bounds,se=(v=i(U))==null?void 0:v.bounds;if(Z){const fe=new yg(te,[-1,$]);a.addConstraint(new w3(fe,n2.Eq,b.xDist,r_.required))}else if(G){const fe=new yg(te,-se.width/2,[-1,$],-re.width/2);a.addConstraint(new w3(fe,n2.Eq,b.xDist,r_.required))}}else if("yDist"in b){const{yDist:C,top:N,bottom:U,edgeToEdge:G,centerToCenter:Z}=b,$=s(`${N}_y`),te=s(`${U}_y`),re=(x=i(N))==null?void 0:x.bounds,se=(E=i(U))==null?void 0:E.bounds;if(Z){const fe=new yg($,[-1,te]);a.addConstraint(new w3(fe,n2.Eq,b.yDist,r_.required))}else if(G){const fe=new yg($,re.height/2,[-1,te],-se.height/2);a.addConstraint(new w3(fe,n2.Eq,b.yDist,r_.required))}}else if("sameY"in b){const{for:C}=b;if(C.length<2)continue;const N=C.map(G=>s(`${G}_y`)),U=new yg(...N.slice(1));a.addConstraint(new w3(U,n2.Eq,N[0],r_.required))}else if("sameX"in b){const{for:C}=b;if(C.length<2)continue;const N=C.map(G=>s(`${G}_x`)),U=new yg(...N.slice(1));a.addConstraint(new w3(U,n2.Eq,N[0],r_.required))}}a.updateVariables(),Aen.enabled&&(console.log("Solution to layout constraints:"),console.table(Object.entries(o).map(([S,b])=>({var:S,val:b.value()}))));const l={left:1/0,right:-1/0,top:-1/0,bottom:1/0};for(const{selector:S,bounds:{width:b,height:C}}of n){const N=s(`${S}_x`),U=s(`${S}_y`),G=N.value()-b/2,Z=N.value()+b/2,$=U.value()+C/2,te=U.value()-C/2;l.left=Math.min(l.left,G),l.right=Math.max(l.right,Z),l.top=Math.max(l.top,$),l.bottom=Math.min(l.bottom,te)}const c={x:-(l.right+l.left)/2,y:-(l.top+l.bottom)/2},u=this.getPrimitiveContainer()._getGlobalPcbPositionBeforeLayout();c.x+=u.x,c.y+=u.y;for(const{component:S,selector:b}of n){const C=s(`${b}_x`),N=s(`${b}_y`);S._setPositionFromLayout({x:C.value()+c.x,y:N.value()+c.y})}}},Den=(r,e)=>{if(!r)return;const t={};for(const[n,i]of Object.entries(r)){const a=sR(n,e),o={leftMargin:i.marginLeft??i.leftMargin,rightMargin:i.marginRight??i.rightMargin,topMargin:i.marginTop??i.topMargin,bottomMargin:i.marginBottom??i.bottomMargin};t[`pin${a}`]={...t[`pin${a}`],...o}}return t},Nen=vg("tscircuit:core"),Len=j.object({x:Z4,y:Z4,z:Z4}),D2=class extends ex{constructor(e){super(e);rr(this,"reactSubtrees",[]);rr(this,"_impliedFootprint");rr(this,"isPrimitiveContainer",!0);rr(this,"_asyncSupplierPartNumbers");rr(this,"pcb_missing_footprint_error_id");this._addChildrenFromStringFootprint(),this.initPorts()}get defaultInternallyConnectedPinNames(){return[]}get internallyConnectedPinNames(){return this._parsedProps.internallyConnectedPins??this.defaultInternallyConnectedPinNames}initPorts(e={}){var o,s,l,c,u,f,h,v,x,E;if((o=this.root)!=null&&o.schematicDisabled)return;const{config:t}=this,n=[],i=this._getSchematicPortArrangement();if(i&&!this._parsedProps.pinLabels){for(const C in i){const N=i[C].pins;if(Array.isArray(N))for(const U of N){const G=sR(U,this._parsedProps.pinLabels);n.push(new AS({pinNumber:G,aliases:((s=e.additionalAliases)==null?void 0:s[`pin${G}`])??[]},{originDescription:`schPortArrangement:${C}`}))}}const S=["left","right","top","bottom"];let b=1;for(const C of S){const N=i[`${C}Size`];for(let U=0;U<N;U++)n.push(new AS({pinNumber:b++,aliases:((l=e.additionalAliases)==null?void 0:l[`pin${b}`])??[]},{originDescription:`schPortArrangement:${C}`}))}}const a=this._parsedProps.pinLabels;if(a)for(let[S,b]of Object.entries(a)){S=S.replace("pin","");let C=n.find(G=>G._parsedProps.pinNumber===Number(S));const N=Array.isArray(b)?b[0]:b,U=Array.isArray(b)?b.slice(1):[];C?(C.externallyAddedAliases.push(N,...U),C.props.name=N):(C=new AS({pinNumber:parseInt(S),name:N,aliases:[...U,...((c=e.additionalAliases)==null?void 0:c[`pin${parseInt(S)}`])??[]]},{originDescription:`pinLabels:pin${S}`}),n.push(C))}if(t.schematicSymbolName){const S=_4[this._getSchematicSymbolNameOrThrow()];if(!S)return;for(const b of S.ports){const C=SQe(b.labels);if(!C)continue;const N=cR(b.labels.concat(((u=e.additionalAliases)==null?void 0:u[`pin${C}`])??[]));N&&(N.originDescription=`schematicSymbol:labels[0]:${b.labels[0]}`,N.schematicSymbolPortDef=b,n.push(N))}this.addAll(n)}if(!this._getSchematicPortArrangement()){const S=this.getPortsFromFootprint(e);for(const b of S)n.some(C=>C.isMatchingAnyOf(b.getNameAndAliases()))||n.push(b)}for(let S=1;S<=(e.pinCount??this._getPinCount());S++){if(!i||n.find(C=>C._parsedProps.pinNumber===S))continue;let b=[...((f=i.leftSide)==null?void 0:f.pins)??[],...((h=i.rightSide)==null?void 0:h.pins)??[],...((v=i.topSide)==null?void 0:v.pins)??[],...((x=i.bottomSide)==null?void 0:x.pins)??[]].map(C=>sR(C,this._parsedProps.pinLabels));["leftSize","rightSize","topSize","bottomSize","leftPinCount","rightPinCount","topPinCount","bottomPinCount"].some(C=>C in i)&&(b=Array.from({length:this._getPinCount()},(C,N)=>N+1)),b.includes(S)&&n.push(new AS({pinNumber:S,aliases:((E=e.additionalAliases)==null?void 0:E[`pin${S}`])??[]},{originDescription:`notOtherwiseAddedButDeducedFromPinCount:${S}`}))}n.length>0&&this.addAll(n)}_getImpliedFootprintString(){return null}_addChildrenFromStringFootprint(){var t;let{footprint:e}=this.props;if(e??(e=(t=this._getImpliedFootprintString)==null?void 0:t.call(this)),!!e&&typeof e=="string"){const n=VA.string(e).soup(),i=ben(n);this.addAll(i)}}get portMap(){return new Proxy({},{get:(e,t)=>{const n=this.children.find(i=>i.componentName==="Port"&&i.isMatchingNameOrAlias(t));if(!n)throw new Error(`There was an issue finding the port "${t.toString()}" inside of a ${this.componentName} component with name: "${this.props.name}". This is a bug in @tscircuit/core`);return n}})}getInstanceForReactElement(e){for(const t of this.reactSubtrees)if(t.element===e)return t.component;return null}doInitialSourceRender(){const e=this.config.sourceFtype;if(!e)return;const{db:t}=this.root,{_parsedProps:n}=this,i=t.source_component.insert({ftype:e,name:n.name,manufacturer_part_number:n.manufacturerPartNumber??n.mfn,supplier_part_numbers:n.supplierPartNumbers});this.source_component_id=i.source_component_id}doInitialSchematicComponentRender(){var n;if((n=this.root)!=null&&n.schematicDisabled)return;const{schematicSymbolName:e}=this.config;if(e)return this._doInitialSchematicComponentRenderWithSymbol();if(this._getSchematicBoxDimensions())return this._doInitialSchematicComponentRenderWithSchematicBoxDimensions()}_getSchematicSymbolDisplayValue(){}_getInternallyConnectedPins(){if(this.internallyConnectedPinNames.length===0)return[];const e=[];for(const t of this.internallyConnectedPinNames){const n=[];for(const i of t)n.push(this.portMap[i]);e.push(n)}return e}_doInitialSchematicComponentRenderWithSymbol(){var o;if((o=this.root)!=null&&o.schematicDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this._getSchematicSymbolNameOrThrow(),i=_4[n],a=this._getGlobalSchematicPositionBeforeLayout();if(i){const s=e.schematic_component.insert({center:a,rotation:t.schRotation??0,size:i.size,source_component_id:this.source_component_id,symbol_name:n,symbol_display_value:this._getSchematicSymbolDisplayValue()});this.schematic_component_id=s.schematic_component_id}}_doInitialSchematicComponentRenderWithSchematicBoxDimensions(){var f;if((f=this.root)!=null&&f.schematicDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this._getSchematicBoxDimensions(),i={};if(Array.isArray(t.pinLabels))t.pinLabels.forEach((h,v)=>{i[String(v+1)]=h});else for(const[h,v]of Object.entries(t.pinLabels??{}))i[h]=Array.isArray(v)?v[0]:v;const a=this._getGlobalSchematicPositionBeforeLayout(),o=this._getSchematicPortArrangement(),s=e.schematic_component.insert({center:a,rotation:t.schRotation??0,size:n.getSize(),port_arrangement:gen(o),pin_spacing:t.schPinSpacing??.2,pin_styles:yen(t.schPinStyle,t.pinLabels),port_labels:i,source_component_id:this.source_component_id}),l=(o==null?void 0:o.topSide)!==void 0||(o==null?void 0:o.bottomSide)!==void 0,c=n==null?void 0:n.getSize().width,u=n==null?void 0:n.getSize().height;e.schematic_text.insert({text:t.manufacturerPartNumber??"",schematic_component_id:s.schematic_component_id,anchor:"left",rotation:0,position:{x:l?a.x+(c??0)/2+.1:a.x-(c??0)/2,y:l?a.y+(u??0)/2+.35:a.y-(u??0)/2-.13},color:"#006464"}),e.schematic_text.insert({text:t.name??"",schematic_component_id:s.schematic_component_id,anchor:"left",rotation:0,position:{x:l?a.x+(c??0)/2+.1:a.x-(c??0)/2,y:l?a.y+(u??0)/2+.55:a.y+(u??0)/2+.13},color:"#006464"}),this.schematic_component_id=s.schematic_component_id}doInitialPcbComponentRender(){var o;if((o=this.root)!=null&&o.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this.getSubcircuit(),i=e.pcb_component.insert({center:this._getGlobalPcbPositionBeforeLayout(),width:0,height:0,layer:t.layer??"top",rotation:t.pcbRotation??0,source_component_id:this.source_component_id,subcircuit_id:n.subcircuit_id??void 0});if(!t.footprint&&!this.isGroup){const s=e.pcb_missing_footprint_error.insert({message:`No footprint found for component: ${this.getString()}`,source_component_id:`${this.source_component_id}`,error_type:"pcb_missing_footprint_error"});this.pcb_missing_footprint_error_id=s.pcb_missing_footprint_error_id}this.pcb_component_id=i.pcb_component_id;const a=this.getSubcircuit()._getPcbManualPlacementForComponent(this);this.props.pcbX!==void 0&&this.props.pcbY!==void 0&&a&&this.renderError({type:"pcb_manual_edit_conflict_error",message:`${this.getString()} has both manual placement and explicit coordinates. pcbX and pcbY will be used. Remove pcbX/pcbY or clear the manual placement.`,pcb_component_id:this.pcb_component_id,source_component_id:this.source_component_id})}doInitialPcbComponentSizeCalculation(){var i;if((i=this.root)!=null&&i.pcbDisabled||!this.pcb_component_id)return;const{db:e}=this.root,t=bQe(this.children);if(t.width===0||t.height===0)return;const n={x:(t.minX+t.maxX)/2,y:(t.minY+t.maxY)/2};e.pcb_component.update(this.pcb_component_id,{center:n,width:t.width,height:t.height})}_renderReactSubtree(e){return{element:e,component:hQe(e)}}doInitialInitializePortsFromChildren(){this.initPorts()}doInitialReactSubtreesRender(){if(Ct.isValidElement(this.props.footprint)){if(this.reactSubtrees.some(t=>t.element===this.props.footprint))return;const e=this._renderReactSubtree(this.props.footprint);this.reactSubtrees.push(e),this.add(e.component)}}_hasExistingPortExactly(e){return this.children.filter(n=>n.componentName==="Port").some(n=>{const i=e.getNameAndAliases(),a=n.getNameAndAliases();return i.length===a.length&&i.every(o=>a.includes(o))})}add(e){let t;if(Ct.isValidElement(e)){const n=this._renderReactSubtree(e);this.reactSubtrees.push(n),t=n.component}else t=e;if(t.componentName==="Port"){if(this._hasExistingPortExactly(t))return;const i=this.children.filter(a=>a.componentName==="Port").find(a=>a.isMatchingAnyOf(t.getNameAndAliases()));i&&Nen(`Similar ports added. Port 1: ${i}, Port 2: ${t}`)}super.add(t)}getPortsFromFootprint(e){let{footprint:t}=this.props;if((!t||Ct.isValidElement(t))&&(t=this.children.find(i=>i.componentName==="Footprint")),typeof t=="string"){const i=VA.string(t).soup(),a=[];for(const o of i)if("port_hints"in o&&o.port_hints){const s=cR(o.port_hints,e);if(!s)continue;s.originDescription=`footprint:string:${t}:port_hints[0]:${o.port_hints[0]}`,a.push(s)}return a}if(!Ct.isValidElement(t)&&t&&t.componentName==="Footprint"){const i=t;let a=1;const o=[];for(const s of i.children){if(!s.props.portHints)continue;let l=s.props.portHints;l.some(f=>f.startsWith("pin"))||(l=[...l,`pin${a}`]),a++;const u=cR(l);u&&(u.originDescription=`footprint:${t}`,o.push(u))}return o}const n=[];if(!t){for(const i of this.children)if(i.props.portHints&&i.isPcbPrimitive){const a=cR(i.props.portHints);a&&n.push(a)}}return n}getPortsFromSchematicSymbol(){var i;if((i=this.root)!=null&&i.schematicDisabled)return[];const{config:e}=this;if(!e.schematicSymbolName)return[];const t=_4[e.schematicSymbolName];if(!t)return[];const n=[];for(const a of t.ports){const o=cR(a.labels);o&&(o.schematicSymbolPortDef=a,n.push(o))}return n}_createNetsFromProps(e){yQe(this,e)}_getPcbCircuitJsonBounds(){const{db:e}=this.root;if(!this.pcb_component_id)return super._getPcbCircuitJsonBounds();const t=e.pcb_component.get(this.pcb_component_id);return{center:{x:t.center.x,y:t.center.y},bounds:{left:t.center.x-t.width/2,top:t.center.y-t.height/2,right:t.center.x+t.width/2,bottom:t.center.y+t.height/2},width:t.width,height:t.height}}_getPinCountFromSchematicPortArrangement(){const e=this._getSchematicPortArrangement();if(!e)return 0;if(!EQe(e))return(e.leftSize??e.leftPinCount??0)+(e.rightSize??e.rightPinCount??0)+(e.topSize??e.topPinCount??0)+(e.bottomSize??e.bottomPinCount??0);const{leftSide:n,rightSide:i,topSide:a,bottomSide:o}=e;return Math.max(...(n==null?void 0:n.pins)??[],...(i==null?void 0:i.pins)??[],...(a==null?void 0:a.pins)??[],...(o==null?void 0:o.pins)??[])}_getPinCount(){return this._getSchematicPortArrangement()?this._getPinCountFromSchematicPortArrangement():this.getPortsFromFootprint().length}_getSchematicPortArrangement(){return this._parsedProps.schPinArrangement??this._parsedProps.schPortArrangement}_getSchematicBoxDimensions(){if(this.getSchematicSymbol()||!this.config.shouldRenderAsSchematicBox)return null;const{_parsedProps:e}=this,t=this._getPinCount(),n=e.schPinSpacing??.2;return Ren({schWidth:e.schWidth,schHeight:e.schHeight,schPinSpacing:n,numericSchPinStyle:Den(e.schPinStyle,e.pinLabels),pinCount:t,schPortArrangement:this._getSchematicPortArrangement(),pinLabels:e.pinLabels})}doInitialCadModelRender(){var c;const{db:e}=this.root,{boardThickness:t=0}=((c=this.root)==null?void 0:c._getBoard())??{},n=this._parsedProps.cadModel;if(!this.pcb_component_id||!n&&!this.props.footprint)return;const i=this._getPcbCircuitJsonBounds(),a=e.pcb_component.get(this.pcb_component_id);if(typeof n=="string")throw new Error("String cadModel not yet implemented");const o=Len.parse({x:0,y:0,z:typeof(n==null?void 0:n.rotationOffset)=="number"?n.rotationOffset:0,...typeof(n==null?void 0:n.rotationOffset)=="object"?n.rotationOffset??{}:{}}),s=vw.parse({x:0,y:0,z:0,...typeof(n==null?void 0:n.positionOffset)=="object"?n.positionOffset:{}}),l=this.props.layer==="bottom"?"bottom":"top";e.cad_component.insert({position:{x:i.center.x+s.x,y:i.center.y+s.y,z:(l==="bottom"?-t/2:t/2)+s.z},rotation:{x:o.x,y:(l==="top"?0:180)+o.y,z:((a==null?void 0:a.rotation)??0)+(l==="bottom"?180:0)+o.z},pcb_component_id:this.pcb_component_id,source_component_id:this.source_component_id,model_stl_url:"stlUrl"in(n??{})?this._addCachebustToModelUrl(n.stlUrl):void 0,model_obj_url:"objUrl"in(n??{})?this._addCachebustToModelUrl(n.objUrl):void 0,model_jscad:"jscad"in(n??{})?n.jscad:void 0,footprinter_string:typeof this.props.footprint=="string"&&!n?this.props.footprint:void 0})}_addCachebustToModelUrl(e){var n;if(!e||!e.includes("modelcdn.tscircuit.com"))return e;const t=((n=this.root)==null?void 0:n.getClientOrigin())??"";return`${e}${e.includes("?")?"&":"?"}cachebust_origin=${encodeURIComponent(t)}`}doInitialPartsEngineRender(){const e=this.getInheritedProperty("partsEngine");if(!e)return;const{db:t}=this.root,n=t.source_component.get(this.source_component_id);if(!n||n.supplier_part_numbers)return;let i;this.props.footprint&&typeof this.props.footprint=="string"&&(i=this.props.footprint);const a=e.findPart({sourceComponent:n,footprinterString:i});if(!(a instanceof Promise)){t.source_component.update(this.source_component_id,{supplier_part_numbers:a});return}this._queueAsyncEffect("get-supplier-part-numbers",async()=>{this._asyncSupplierPartNumbers=await a,this._markDirty("PartsEngineRender")})}updatePartsEngineRender(){const{db:e}=this.root,t=e.source_component.get(this.source_component_id);if(t&&!t.supplier_part_numbers&&this._asyncSupplierPartNumbers){e.source_component.update(this.source_component_id,{supplier_part_numbers:this._asyncSupplierPartNumbers});return}}},zen=({db:r,traces:e,minTraceWidth:t=.1})=>{const i=iD([...r.pcb_component.list(),...r.pcb_smtpad.list(),...r.pcb_plated_hole.list()]).flatMap(s=>[{x:s.center.x-s.width/2,y:s.center.y-s.height/2},{x:s.center.x+s.width/2,y:s.center.y+s.height/2}]),a={minX:Math.min(...i.map(s=>s.x))-1,maxX:Math.max(...i.map(s=>s.x))+1,minY:Math.min(...i.map(s=>s.y))-1,maxY:Math.max(...i.map(s=>s.y))+1},o=e.map(s=>{const l=s._findConnectedPorts();return!l.allPortsFound||l.ports.length<2?null:{name:s.source_trace_id??"",pointsToConnect:l.ports.map(c=>{const u=c._getGlobalPcbPositionBeforeLayout();return{x:u.x,y:u.y,layer:c.getAvailablePcbLayers()[0]??"top"}})}}).filter(s=>s!==null);return{bounds:a,obstacles:[],connections:o,layerCount:2,minTraceWidth:t}},wQe=class extends ex{constructor(){super(...arguments);rr(this,"matchedPort",null)}get config(){return{componentName:"TraceHint",zodProps:fen}}doInitialPortMatching(){this.root;const{_parsedProps:e,parent:t}=this;if(!t)return;if(t.componentName==="Trace"){this.renderError(`Port inference inside trace is not yet supported (${this})`);return}if(!t)throw new Error("TraceHint has no parent");if(!e.for){this.renderError(`TraceHint has no for property (${this})`);return}const n=t.selectOne(e.for,{type:"port"});n||this.renderError(`${this} could not find port for selector "${e.for}"`),this.matchedPort=n,n.registerMatch(this)}getPcbRouteHints(){const{_parsedProps:e}=this,t=e.offset?[e.offset]:e.offsets;if(!t)return[];const n=this._computePcbGlobalTransformBeforeLayout();return t.map(i=>({...li(n,i),via:i.via,to_layer:i.to_layer,trace_width:i.trace_width}))}doInitialPcbTraceHintRender(){var t,n,i;if((t=this.root)!=null&&t.pcbDisabled)return;const{db:e}=this.root;e.pcb_trace_hint.insert({pcb_component_id:(n=this.matchedPort)==null?void 0:n.pcb_component_id,pcb_port_id:(i=this.matchedPort)==null?void 0:i.pcb_port_id,route:this.getPcbRouteHints()})}},H0e=class extends D2{constructor(){super(...arguments);rr(this,"pcb_group_id",null);rr(this,"subcircuit_id",null);rr(this,"_hasStartedAsyncAutorouting",!1);rr(this,"_asyncAutoroutingResult",null)}get config(){return{zodProps:xJt,componentName:"Group"}}doInitialSourceRender(){const{db:t}=this.root,n=t.source_group.insert({name:this._parsedProps.name,is_subcircuit:this.isSubcircuit});this.subcircuit_id=`subcircuit_${n.source_group_id}`,this.source_group_id=n.source_group_id,t.source_group.update(n.source_group_id,{subcircuit_id:this.subcircuit_id})}doInitialSourceParentAttachment(){var i,a,o;const{db:t}=this.root;if(!this.isSubcircuit)return;const n=(o=(a=(i=this.parent)==null?void 0:i.getSubcircuit)==null?void 0:a.call(i))==null?void 0:o.subcircuit_id;n&&t.source_group.update(this.source_group_id,{parent_subcircuit_id:n})}doInitialPcbComponentRender(){var i;if((i=this.root)!=null&&i.pcbDisabled)return;const{db:t}=this.root,n=t.pcb_group.insert({is_subcircuit:this.isSubcircuit,subcircuit_id:this.subcircuit_id,name:this._parsedProps.name,center:this._getGlobalPcbPositionBeforeLayout(),width:0,height:0,pcb_component_ids:[],source_group_id:this.source_group_id});this.pcb_group_id=n.pcb_group_id}doInitialCreateTraceHintsFromProps(){var a;const{_parsedProps:t}=this;this.root;const n=t;if(!this.isSubcircuit)return;const i=(a=n.layout)==null?void 0:a.manual_trace_hints;if(i)for(const o of i)this.add(new wQe({for:o.pcb_port_selector,offsets:o.offsets}))}_getSimpleRouteJsonFromPcbTraces(){const t=this.selectAll("trace"),{db:n}=this.root;return zen({db:n,traces:t,minTraceWidth:this._parsedProps.minTraceWidth??.1})}doInitialSourceAddConnectivityMapKey(){if(!this.isSubcircuit)return;const{db:t}=this.root,n=this.selectAll("trace"),i=new jT({});i.addConnections(n.map(a=>{const o=t.source_trace.get(a.source_trace_id);return o?[o.source_trace_id,...o.connected_source_port_ids,...o.connected_source_net_ids]:null}).filter(a=>a!==null));for(const a of n){if(!a.source_trace_id)continue;const o=i.getNetConnectedToId(a.source_trace_id);if(!o)continue;const{name:s}=this._parsedProps;a.subcircuit_connectivity_map_key=`${s??`unnamedsubcircuit${this._renderId}`}_${o}`,t.source_trace.update(a.source_trace_id,{subcircuit_connectivity_map_key:a.subcircuit_connectivity_map_key})}}_areChildSubcircuitsRouted(){const t=this.selectAll("group").filter(n=>n.isSubcircuit);for(const n of t)if(n._shouldRouteAsync()&&!n._asyncAutoroutingResult)return!1;return!0}_shouldRouteAsync(){const t=this._parsedProps;return t.autorouter==="auto-local"||t.autorouter==="auto-cloud"?!0:t.autorouter==="sequential-trace"?!1:typeof t.autorouter=="object"}async _runEffectMakeHttpAutoroutingRequest(){var c,u,f,h;const t=vg("tscircuit:core:_runEffectMakeHttpAutoroutingRequest"),n=this._parsedProps,i=((c=n.autorouter)==null?void 0:c.serverUrl)??"https://registry-api.tscircuit.com",a=((u=n.autorouter)==null?void 0:u.serverMode)??"job",o=(v,x)=>(t("fetching",v),fetch(v,x)),s=this.root.db.toArray().filter(v=>v.type.startsWith("source_")||v.type.startsWith("pcb_"));if(a==="solve-endpoint"){if(((f=this.props.autorouter)==null?void 0:f.inputFormat)==="simplified"){const{autorouting_result:x}=await o(`${i}/autorouting/solve`,{method:"POST",body:JSON.stringify({input_simple_route_json:this._getSimpleRouteJsonFromPcbTraces(),subcircuit_id:this.subcircuit_id}),headers:{"Content-Type":"application/json"}}).then(E=>E.json());this._asyncAutoroutingResult=x,this._markDirty("PcbTraceRender");return}const{autorouting_result:v}=await o(`${i}/autorouting/solve`,{method:"POST",body:JSON.stringify({input_circuit_json:s,subcircuit_id:this.subcircuit_id}),headers:{"Content-Type":"application/json"}}).then(x=>x.json());this._asyncAutoroutingResult=v,this._markDirty("PcbTraceRender");return}const{autorouting_job:l}=await o(`${i}/autorouting/jobs/create`,{method:"POST",body:JSON.stringify({input_circuit_json:s,provider:"freerouting",autostart:!0,display_name:(h=this.root)==null?void 0:h.name,subcircuit_id:this.subcircuit_id}),headers:{"Content-Type":"application/json"}}).then(v=>v.json());for(;;){const{autorouting_job:v}=await o(`${i}/autorouting/jobs/get`,{method:"POST",body:JSON.stringify({autorouting_job_id:l.autorouting_job_id}),headers:{"Content-Type":"application/json"}}).then(x=>x.json());if(v.is_finished){const{autorouting_job_output:x}=await o(`${i}/autorouting/jobs/get_output`,{method:"POST",body:JSON.stringify({autorouting_job_id:l.autorouting_job_id}),headers:{"Content-Type":"application/json"}}).then(E=>E.json());this._asyncAutoroutingResult={output_pcb_traces:x.output_pcb_traces},this._markDirty("PcbTraceRender");break}if(v.has_error)throw new Error(`Autorouting job failed: ${JSON.stringify(v.error)}`);await new Promise(x=>setTimeout(x,100))}}_startAsyncAutorouting(){this._hasStartedAsyncAutorouting=!0,this._queueAsyncEffect("make-http-autorouting-request",async()=>this._runEffectMakeHttpAutoroutingRequest())}doInitialPcbTraceRender(){var n;const t=vg("tscircuit:core:doInitialPcbTraceRender");if(!((n=this.root)!=null&&n.pcbDisabled)&&!this._shouldUseTraceByTraceRouting()){if(!this._areChildSubcircuitsRouted()){t(`[${this.getString()}] child subcircuits are not routed, skipping async autorouting until subcircuits routed`);return}t(`[${this.getString()}] no child subcircuits to wait for, initiating async routing`),this._startAsyncAutorouting()}}updatePcbTraceRender(){const t=vg("tscircuit:core:updatePcbTraceRender");if(this._shouldRouteAsync()&&!this._hasStartedAsyncAutorouting){this._areChildSubcircuitsRouted()&&(t(`[${this.getString()}] child subcircuits are now routed, starting async autorouting`),this._startAsyncAutorouting());return}if(this._asyncAutoroutingResult&&!this._shouldUseTraceByTraceRouting()){if(this.root,this._asyncAutoroutingResult.output_simple_route_json){this._updatePcbTraceRenderFromSimpleRouteJson();return}if(this._asyncAutoroutingResult.output_pcb_traces){this._updatePcbTraceRenderFromPcbTraces();return}}}_updatePcbTraceRenderFromSimpleRouteJson(){const{db:t}=this.root,{traces:n}=this._asyncAutoroutingResult.output_simple_route_json;if(n){this.selectAll("trace");for(const i of n)t.pcb_trace.insert({route:i.route})}}_updatePcbTraceRenderFromPcbTraces(){const{output_pcb_traces:t}=this._asyncAutoroutingResult;if(!t)return;const{db:n}=this.root;for(const i of t)n.pcb_trace.insert(i)}doInitialSchematicLayout(){if(!this.isSubcircuit||!this._parsedProps.schAutoLayoutEnabled)return;const{db:n}=this.root,i=this.getDescendants(),a=[];for(const l of i)if("schematic_component_id"in l){const c=n.schematic_component.get(l.schematic_component_id);if(c){const u=n.schematic_port.list().filter(f=>f.schematic_component_id===c.schematic_component_id);a.push(...u)}}const o=S5e(n.toArray()),s=T5e(o);b5e(n.toArray(),s)}_shouldUseTraceByTraceRouting(){const t=this._parsedProps;return t.autorouter==="auto-local"||t.autorouter==="sequential-trace"?!0:!t.autorouter}},Oen=class extends H0e{constructor(){super(...arguments);rr(this,"pcb_board_id",null)}get isSubcircuit(){return!0}get config(){return{componentName:"Board",zodProps:bJt}}get boardThickness(){return 1.4}get allLayers(){return["top","bottom","inner1","inner2"]}doInitialPcbComponentRender(){var o,s;if((o=this.root)!=null&&o.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this;if(!t.outline&&(!t.width||!t.height))throw new Error("Board width and height or an outline are required");let n=t.width,i=t.height;if(t.outline){const l=t.outline.map(x=>x.x),c=t.outline.map(x=>x.y),u=Math.min(...l),f=Math.max(...l),h=Math.min(...c),v=Math.max(...c);n=f-u,i=v-h}const a=e.pcb_board.insert({center:{x:(t.pcbX??0)+(t.outlineOffsetX??0),y:(t.pcbY??0)+(t.outlineOffsetY??0)},thickness:this.boardThickness,num_layers:this.allLayers.length,width:n,height:i,outline:(s=t.outline)==null?void 0:s.map(l=>({x:l.x+(t.outlineOffsetX??0),y:l.y+(t.outlineOffsetY??0)}))});this.pcb_board_id=a.pcb_board_id}removePcbComponentRender(){const{db:e}=this.root;this.pcb_board_id&&(e.pcb_board.delete(this.pcb_board_id),this.pcb_board_id=null)}_computePcbGlobalTransformBeforeLayout(){return Yv()}},Uen=new Proxy({},{get:(r,e)=>e}),uR=Uen,TQe=class{constructor({input:r}){rr(this,"input");this.input=r}solveAndMapToTraces(){const r=[];for(const e of this.input.connections){if(e.pointsToConnect.length!==2)continue;const[t,n]=e.pointsToConnect,i={type:"pcb_trace",pcb_trace_id:"",route:[{route_type:"wire",x:t.x,y:t.y,layer:"top",width:.1},{route_type:"wire",x:n.x,y:n.y,layer:"top",width:.1}]};r.push(i)}return r}},ken=r=>{const e=Math.min(...r.map(a=>a.center.x)),t=Math.max(...r.map(a=>a.center.x)),n=Math.min(...r.map(a=>a.center.y)),i=Math.max(...r.map(a=>a.center.y));return{minX:e,maxX:t,minY:n,maxY:i}},MQe=["top","bottom","inner1","inner2"],kU=(r,e=[])=>{var s;const t=[];if(e.length===0){const l=r[0].layers;for(const c of l)t.push(...kU(r.slice(1),[c]));return t}if(r.length===0)return[];const n=r[0],i=n.via||n.optional_via,a=e[e.length-1];if(r.length===1){const l=n;return l.layers&&i?l.layers.map(c=>({layer_path:[...e,c]})):(s=l.layers)!=null&&s.includes(a)?[{layer_path:[...e,a]}]:[]}if(!i)return n.layers&&!n.layers.includes(a)?[]:kU(r.slice(1),e.concat([a]));const o=(n.optional_via?MQe:MQe.filter(l=>l!==a)).filter(l=>{var c;return!n.layers||((c=n.layers)==null?void 0:c.includes(l))});for(const l of o)t.push(...kU(r.slice(1),e.concat(l)));return t};function CQe(r){const e={x:r.to.x-r.from.x,y:r.to.y-r.from.y},t=Math.abs(e.x),n=Math.abs(e.y);return t>n?e.x>0?"right":"left":e.y>0?"down":"up"}function _w(r,e){return Math.hypot(r.x-e.x,r.y-e.y)}var Fen=r=>{if(r.length===1)return r[0];if(r.some(l=>l.length===0))throw new Error("Cannot merge routes with zero length");const e=[],t=r[0][0],n=r[0][r[0].length-1],i=r[1][0],a=r[1][r[1].length-1],o=Math.min(_w(t,i),_w(t,a)),s=Math.min(_w(n,i),_w(n,a));o<s?e.push(...r[0].reverse()):e.push(...r[0]);for(let l=1;l<r.length;l++){const c=e[e.length-1],u=r[l],f=u[0],h=u[u.length-1],v=_w(c,f),x=_w(c,h);v<x?e.push(...u):e.push(...u.reverse())}for(let l=1;l<e.length-1;l++){const c=e[l-1],u=e[l];c.route_type==="wire"&&u.route_type==="wire"&&c.layer!==u.layer&&e.splice(l,0,{x:c.x,y:c.y,from_layer:c.layer,to_layer:u.layer,route_type:"via"})}return e},Ien=(r,e)=>{const t="_getGlobalPcbPositionBeforeLayout"in r?r._getGlobalPcbPositionBeforeLayout():r,n="_getGlobalPcbPositionBeforeLayout"in e?e._getGlobalPcbPositionBeforeLayout():e;return Math.sqrt((t.x-n.x)**2+(t.y-n.y)**2)};function Ben(r,e){if(e.length===0)throw new Error("No candidates given to getClosest method");let t=e[0],n=1/0;for(const i of e){const a=Ien(r,i);a<n&&(t=i,n=a)}return t}var jen=(r,e)=>{let t=0;t+=r.length??0,t+=e.filter(n=>n.is_crossing).length;for(let n=1;n<e.length;n++){const i=e[n-1],a=e[n],o=Math.abs(i.from.x-i.to.x)<.01,s=Math.abs(a.from.x-a.to.x)<.01;o!==s&&t++}return t},q0e=r=>({up:"bottom",down:"top",left:"right",right:"left"})[r]??null,$0e=({firstEdge:r,firstEdgePort:e,firstDominantDirection:t,lastEdge:n,lastEdgePort:i,lastDominantDirection:a})=>{if(r&&e)return $0e({lastEdge:{from:r.to,to:r.from},lastEdgePort:e,lastDominantDirection:t}).reverse().map(s=>({from:s.to,to:s.from}));let o=[];if(n&&i){const s={x:n.to.x,y:n.to.y};a==="left"||a==="right"?(s.x=i.position.x,o.push({from:n.to,to:{...s}}),o.push({from:s,to:{...i.position}})):(s.y=i.position.y,o.push({from:n.to,to:{...s}}),o.push({from:s,to:{...i.position}}))}return o=o.filter(s=>KS(s.from,s.to)>.01),o};function Ven(r){try{return[r(),null]}catch(e){return[null,e]}}function Hen(r){let e=0;for(let t=0;t<r.length;t++){const n=r[t];if(n.route_type==="wire"){const i=r[t+1];if(i){const a=i.x-n.x,o=i.y-n.y;e+=Math.sqrt(a*a+o*o)}}else n.route_type==="via"&&(e+=1.6)}return e}var qen=r=>{var s,l;const e={left:{x:-.5,y:0},up:{x:.5,y:.5},right:{x:.5,y:0},down:{x:0,y:-.5}}[r.facingDirection],t=(s=r.parent)!=null&&s.config.shouldRenderAsSchematicBox?3:1,n=(l=r.parent)!=null&&l.config.shouldRenderAsSchematicBox&&(r.facingDirection==="left"||r.facingDirection==="right")?3:1,i=e.x,a=e.y,o=r.facingDirection==="up"?.5:0;return{schBoxVertOffset:t,schBoxHorzOffset:n,horzPortDirection:i,vertPortDirectionOffset:a,handleUp:o}},FU=({port:r,anchorPos:e,schDisplayLabel:t,source_trace_id:n},{db:i})=>{const a=qen(r);i.schematic_net_label.insert({anchor_side:"top",center:{x:e.x+a.horzPortDirection*a.schBoxHorzOffset,y:e.y+a.vertPortDirectionOffset*a.schBoxVertOffset},source_net_id:r.source_port_id,text:t,anchor_position:{x:e.x+a.horzPortDirection*a.schBoxHorzOffset,y:e.y+a.vertPortDirectionOffset*a.schBoxVertOffset},symbol_name:"ground_horz"}),i.schematic_trace.insert({edges:[{from:{x:e.x,y:e.y},to:{x:e.x,y:e.y+a.handleUp*a.schBoxVertOffset}},{from:{x:e.x,y:e.y},to:{x:e.x+a.horzPortDirection*a.schBoxHorzOffset,y:e.y+a.vertPortDirectionOffset*a.schBoxVertOffset}}],junctions:[{x:e.x+a.horzPortDirection*a.schBoxHorzOffset,y:e.y+a.vertPortDirectionOffset*a.schBoxVertOffset}],source_trace_id:n})},G0e=({db:r,source_trace_id:e,sameNetOnly:t,differentNetOnly:n})=>{!t&&!n&&(n=!0);const i=r.source_trace.get(e),a=[];for(const o of r.schematic_trace.list()){if(o.source_trace_id===e)continue;const s=r.source_trace.get(o.source_trace_id),l=(s==null?void 0:s.subcircuit_connectivity_map_key)===i.subcircuit_connectivity_map_key;n&&l||t&&!l||a.push(o)}return a},$en=({edges:r,otherEdges:e})=>{const t=[...r];for(let n=0;n<t.length;n++){if(n>2e3)throw new Error("Over 2000 iterations spent inside createSchematicTraceCrossingSegments, you have triggered an infinite loop, please report this!");const i=t[n],a=Math.abs(i.from.x-i.to.x)<.01?"vertical":i.from.y===i.to.y?"horizontal":"not-orthogonal";if(a==="not-orthogonal")continue;const o=[];for(const E of e){const S=E.from.x===E.to.x?"vertical":E.from.y===E.to.y?"horizontal":"not-orthogonal";if(S==="not-orthogonal"||a===S)continue;if(fD([i.from,i.to],[E.from,E.to],{lineThickness:.01})){const C=a==="vertical"?i.from.x:E.from.x,N=a==="vertical"?E.from.y:i.from.y,U={x:C,y:N};o.push({otherEdge:E,crossingPoint:U,distanceFromEdgeFrom:KS(i.from,U)})}}if(o.length===0)continue;let s=o[0];for(const E of o)E.distanceFromEdgeFrom<s.distanceFromEdgeFrom&&(s=E);const l=s.crossingPoint,c=.075;if(l.x===i.from.x&&l.y===i.from.y)continue;const u=M5e(i.from,l),f={x:l.x-u.x*c/2,y:l.y-u.y*c/2},h={x:l.x+u.x*c/2,y:l.y+u.y*c/2},v=KS(h,i.to)<c,x=[{from:i.from,to:f},{from:f,to:h,is_crossing:!0},{from:h,to:i.to}];t.splice(n,1,...x),n+=x.length-2,v&&n++}return t},Gen=(r,e)=>{if(r.from.x===r.to.x&&e.from.x===e.to.x)return null;if(r.from.x===r.to.x){const u=r.from.x,f=(e.to.y-e.from.y)/(e.to.x-e.from.x),h=e.from.y-f*e.from.x,v=f*u+h;return u>=Math.min(e.from.x,e.to.x)&&u<=Math.max(e.from.x,e.to.x)&&v>=Math.min(e.from.y,e.to.y)&&v<=Math.max(e.from.y,e.to.y)?{x:u,y:v}:null}if(e.from.x===e.to.x){const u=e.from.x,f=(r.to.y-r.from.y)/(r.to.x-r.from.x),h=r.from.y-f*r.from.x,v=f*u+h;return u>=Math.min(r.from.x,r.to.x)&&u<=Math.max(r.from.x,r.to.x)&&v>=Math.min(r.from.y,r.to.y)&&v<=Math.max(r.from.y,r.to.y)?{x:u,y:v}:null}const t=(r.to.y-r.from.y)/(r.to.x-r.from.x),n=r.from.y-t*r.from.x,i=(e.to.y-e.from.y)/(e.to.x-e.from.x),a=e.from.y-i*e.from.x;if(t===i)return null;const o=(a-n)/(t-i),s=t*o+n,l=o>=Math.min(r.from.x,r.to.x)&&o<=Math.max(r.from.x,r.to.x)&&s>=Math.min(r.from.y,r.to.y)&&s<=Math.max(r.from.y,r.to.y),c=o>=Math.min(e.from.x,e.to.x)&&o<=Math.max(e.from.x,e.to.x)&&s>=Math.min(e.from.y,e.to.y)&&s<=Math.max(e.from.y,e.to.y);return l&&c?{x:o,y:s}:null},Yen=({edges:r,db:e,source_trace_id:t})=>{const n=G0e({db:e,source_trace_id:t,sameNetOnly:!0}).flatMap(i=>i.edges);for(const i of r)for(const a of n){const o=Gen(i,a);if(o)return`${o.x}${o.y}`,[{x:o.x,y:o.y}]}return[]},Xen=(r,{db:e})=>{const t=r.map(n=>{const i=e.source_port.get(n.source_port_id);if(!(i!=null&&i.source_component_id))return null;const a=e.source_component.get(i.source_component_id);return(a==null?void 0:a.ftype)==="simple_capacitor"?a.max_decoupling_trace_length:null}).filter(n=>n!==null);if(t.length!==0)return Math.min(...t)},Wen=r=>{var a;const e=r.root.db,t=r._findConnectedPorts().ports??[],n=new Set(t.map(o=>o.schematic_port_id)),i=[];for(const o of e.toArray()){if(o.type==="schematic_component"){const s=!!o.symbol_name,l=o.size.width>o.size.height?"horz":"vert";i.push({type:"rect",layers:["top"],center:o.center,width:o.size.width+(s&&l==="horz"?-.5:0),height:o.size.height+(s&&l==="vert"?-.5:0),connectedTo:[]})}if(o.type==="schematic_port"){if(n.has(o.schematic_port_id))continue;const s=o.facing_direction?C5e(o.facing_direction):{x:0,y:0};i.push({type:"rect",layers:["top"],center:{x:o.center.x-s.x*.1,y:o.center.y-s.y*.1},width:.1+Math.abs(s.x)*.3,height:.1+Math.abs(s.y)*.3,connectedTo:[]})}o.type==="schematic_text"&&i.push({type:"rect",layers:["top"],center:o.position,width:(((a=o.text)==null?void 0:a.length)??0)*.1,height:.2,connectedTo:[]}),o.type==="schematic_box"&&i.push({type:"rect",layers:["top"],center:{x:o.x,y:o.y},width:o.width,height:o.height,connectedTo:[]})}return i};function Zen({ports:r,nets:e}){var t,n,i;if(r.length>=2)return`${(t=r[0])==null?void 0:t.selector} to ${(n=r[1])==null?void 0:n.selector}`;if(r.length===1&&e.length===1)return`${(i=r[0])==null?void 0:i.selector} to net.${e[0]._parsedProps.name}`}var Qen=({edges:r,db:e,source_trace_id:t})=>{e.source_trace.get(t);const n=G0e({db:e,source_trace_id:t,differentNetOnly:!0}).flatMap(a=>a.edges),i=a=>{const{from:o,to:s}=a;return o.x===s.x?"vertical":"horizontal"};for(const a of r){const o=i(a),s=()=>n.find(c=>i(c)===o&&fD([a.from,a.to],[c.from,c.to],{lineThickness:.05}));let l=s();for(;l;)o==="horizontal"?(a.from.y+=.1,a.to.y+=.1):(a.from.x+=.1,a.to.x+=.1),l=s()}},IU=r=>({...r._getGlobalPcbPositionAfterLayout(),layers:r.getAvailablePcbLayers()}),xw=class extends ex{constructor(e){super(e);rr(this,"source_trace_id",null);rr(this,"pcb_trace_id",null);rr(this,"schematic_trace_id",null);rr(this,"_portsRoutedOnPcb");rr(this,"subcircuit_connectivity_map_key",null);this._portsRoutedOnPcb=[]}get config(){return{zodProps:HJt,componentName:"Trace"}}_getTracePortOrNetSelectorListFromProps(){return"from"in this.props&&"to"in this.props?[typeof this.props.from=="string"?this.props.from:this.props.from.getPortSelector(),typeof this.props.to=="string"?this.props.to:this.props.to.getPortSelector()]:"path"in this.props?this.props.path.map(e=>typeof e=="string"?e:e.getPortSelector()):[]}getTracePortPathSelectors(){return this._getTracePortOrNetSelectorListFromProps().filter(e=>!e.includes("net."))}getTracePathNetSelectors(){return this._getTracePortOrNetSelectorListFromProps().filter(e=>e.includes("net."))}_findConnectedPorts(){this.root;const{_parsedProps:e,parent:t}=this;if(!t)throw new Error("Trace has no parent");const i=this.getTracePortPathSelectors().map(a=>({selector:a,port:this.getSubcircuit().selectOne(a,{type:"port"})??null}));for(const{selector:a,port:o}of i)if(!o){const s=a.replace(/\>.*$/,""),l=this.getSubcircuit().selectOne(s);l?this.renderError(`Could not find port for selector "${a}" (did you forget to include the pin name?)
|
|
12866
12866
|
searched component ${l.getString()}, which has ports: ${l.children.filter(c=>c.componentName==="Port").map(c=>`${c.getString()}(${c.getNameAndAliases().join(",")})`).join(" & ")}`):this.renderError(`Could not find port for selector "${a}"`)}return i.some(a=>!a.port)?{allPortsFound:!1}:{allPortsFound:!0,portsWithSelectors:i,ports:i.map(({port:a})=>a)}}_findConnectedNets(){const e=this.getTracePathNetSelectors().map(n=>({selector:n,net:this.getSubcircuit().selectOne(n,{type:"net"})})),t=e.filter(n=>!n.net);return t.length>0&&this.renderError(`Could not find net for selector "${t[0].selector}" inside ${this}`),{netsWithSelectors:e,nets:e.map(n=>n.net)}}_getAllTracesConnectedToSameNet(){const e=this.getSubcircuit().selectAll("trace"),t=this._findConnectedNets().nets,n=this._findConnectedPorts().ports??[];return e.filter(i=>{if(i===this)return!1;const a=i._findConnectedNets().nets,o=i._findConnectedPorts().ports??[];return a.some(s=>t.includes(s))||o.some(s=>n.includes(s))})}_isExplicitlyConnectedToPort(e){const{allPortsFound:t,portsWithSelectors:n}=this._findConnectedPorts();return t?n.map(a=>a.port).includes(e):!1}_isExplicitlyConnectedToNet(e){return this._findConnectedNets().nets.includes(e)}doInitialCreateNetsFromProps(){yQe(this,this.getTracePathNetSelectors())}doInitialSourceTraceRender(){const{db:e}=this.root,{_parsedProps:t,parent:n}=this;if(!n){this.renderError("Trace has no parent");return}const{allPortsFound:i,portsWithSelectors:a}=this._findConnectedPorts();if(!i)return;const o=this._findConnectedNets().nets,s=Zen({ports:a,nets:o}),l=e.source_trace.insert({connected_source_port_ids:a.map(c=>c.port.source_port_id),connected_source_net_ids:o.map(c=>c.source_net_id),max_length:Xen(a.map(c=>c.port),{db:e})??t.maxLength,display_name:s});this.source_trace_id=l.source_trace_id}doInitialPcbTraceRender(){var te,re,se;if((te=this.root)!=null&&te.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t,parent:n}=this,i=this.getSubcircuit();if(!n)throw new Error("Trace has no parent");if(i._parsedProps.routingDisabled)return;const a=(re=i._parsedProps.pcbRouteCache)==null?void 0:re.pcbTraces;if(a){const fe=e.pcb_trace.insert({route:a.flatMap(de=>de.route),source_trace_id:this.source_trace_id,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((se=this.getGroup())==null?void 0:se.pcb_group_id)??void 0});this.pcb_trace_id=fe.pcb_trace_id;return}if(!i._shouldUseTraceByTraceRouting())return;const{allPortsFound:o,ports:s}=this._findConnectedPorts();if(!o)return;const l=[];for(const fe of s)fe._hasMatchedPcbPrimitive()||l.push(fe);if(l.length>0){e.pcb_trace_error.insert({error_type:"pcb_trace_error",source_trace_id:this.source_trace_id,message:`Some ports did not have a matching PCB primitive (e.g. a pad or plated hole), this can happen if a footprint is missing. As a result, ${this} wasn't routed. Missing ports: ${l.map(fe=>fe.getString()).join(", ")}`,pcb_trace_id:this.pcb_trace_id,pcb_component_ids:[],pcb_port_ids:l.map(fe=>fe.pcb_port_id).filter(Boolean)});return}const c=this._findConnectedNets().netsWithSelectors;if(s.length===0&&c.length===2){this.renderError("Trace connects two nets, we haven't implemented a way to route this yet");return}else if(s.length===1&&c.length===1){const fe=s[0],ye=c[0].net.getAllConnectedPorts().filter(Re=>Re!==fe);if(ye.length===0){console.log("Nothing to connect this port to, the net is empty. TODO should emit a warning!");return}const Se=Ben(fe,ye);s.push(Se)}else if(s.length>1&&c.length>=1){this.renderError("Trace has more than one port and one or more nets, we don't currently support this type of complex trace routing");return}const u=s.flatMap(fe=>fe.matchedComponents.filter(de=>de.componentName==="TraceHint")),f=(this._parsedProps.pcbRouteHints??[]).concat(u.flatMap(fe=>fe.getPcbRouteHints()));if(s.length>2){this.renderError(`Trace has more than two ports (${s.map(fe=>fe.getString()).join(", ")}), routing between more than two ports for a single trace is not implemented`);return}if(this.getSubcircuit().selectAll("trace").filter(fe=>fe.renderPhaseStates.PcbTraceRender.initialized).some(fe=>fe._portsRoutedOnPcb.length===s.length&&fe._portsRoutedOnPcb.every(de=>s.includes(de))))return;let x=[];f.length===0?x=[IU(s[0]),IU(s[1])]:x=[IU(s[0]),...f,IU(s[1])];const E=kU(x),S=W2e(this.root.db.toArray()),[b,C]=Ven(()=>iD(this.root.db.toArray()));if(C){this.renderError({type:"pcb_trace_error",error_type:"pcb_trace_error",pcb_trace_error_id:this.pcb_trace_id,message:`Error getting obstacles for autorouting: ${C.message}`,source_trace_id:this.source_trace_id,center:{x:0,y:0},pcb_port_ids:s.map(fe=>fe.pcb_port_id),pcb_trace_id:this.pcb_trace_id,pcb_component_ids:[]});return}for(const fe of b)if(fe.connectedTo.length>0){const ye=S.getNetConnectedToId(fe.connectedTo[0]);ye&&fe.connectedTo.push(ye)}let N=[];if(E.length===0)N=x;else{const fe=E[0].layer_path;N=x.map((de,ye)=>de.via?{...de,via_to_layer:fe[ye]}:{...de,layers:[fe[ye]]})}N[0].pcb_port_id=s[0].pcb_port_id,N[N.length-1].pcb_port_id=s[1].pcb_port_id;const U=[];for(const[fe,de]of mQe(N)){const ye="via_to_layer"in fe?fe.via_to_layer:null,Se=2,Re="layers"in fe&&fe.layers.length===1?fe.layers[0]:ye??"top",Te="layers"in de&&de.layers.length===1?de.layers[0]:ye??"top",Ce="pcb_port_id"in fe?fe.pcb_port_id:null,Me="pcb_port_id"in de?de.pcb_port_id:null,Fe=this.getSubcircuit()._parsedProps.minTraceWidth??.16,Ie=new rD({OBSTACLE_MARGIN:Fe*2,isRemovePathLoopsEnabled:!0,optimizeWithGoalBoxes:!!(Ce&&Me),connMap:S,input:{obstacles:b,minTraceWidth:Fe,connections:[{name:this.source_trace_id,pointsToConnect:[{...fe,layer:Re,pcb_port_id:Ce},{...de,layer:Te,pcb_port_id:Me}]}],layerCount:2,bounds:{minX:Math.min(fe.x,de.x)-Se,maxX:Math.max(fe.x,de.x)+Se,minY:Math.min(fe.y,de.y)-Se,maxY:Math.max(fe.y,de.y)+Se}}});let ke=null;try{ke=Ie.solveAndMapToTraces()}catch(tt){this.renderError({type:"pcb_trace_error",pcb_trace_error_id:this.source_trace_id,error_type:"pcb_trace_error",message:`error solving route: ${tt.message}`,source_trace_id:this.pcb_trace_id,center:{x:(fe.x+de.x)/2,y:(fe.y+de.y)/2},pcb_port_ids:s.map(ut=>ut.pcb_port_id),pcb_trace_id:this.pcb_trace_id,pcb_component_ids:s.map(ut=>ut.pcb_component_id)})}if(!ke)return;if(ke.length===0){this.renderError({type:"pcb_trace_error",error_type:"pcb_trace_error",pcb_trace_error_id:this.pcb_trace_id,message:`Could not find a route for ${this}`,source_trace_id:this.source_trace_id,center:{x:(fe.x+de.x)/2,y:(fe.y+de.y)/2},pcb_port_ids:s.map(tt=>tt.pcb_port_id),pcb_trace_id:this.pcb_trace_id,pcb_component_ids:s.map(tt=>tt.pcb_component_id)});return}const[Ee]=ke;ye&&(Ee.route=Ee.route.map(tt=>(tt.route_type==="wire"&&!tt.layer&&(tt.layer=ye),tt))),Ce&&Ee.route[0].route_type==="wire"&&(Ee.route[0].start_pcb_port_id=Ce);const $e=Ee.route[Ee.route.length-1];Me&&$e.route_type==="wire"&&($e.end_pcb_port_id=Me),U.push(Ee.route)}const G=Fen(U),Z=Hen(G),$=e.pcb_trace.insert({route:G,source_trace_id:this.source_trace_id,trace_length:Z});this._portsRoutedOnPcb=s,this.pcb_trace_id=$.pcb_trace_id;for(const fe of G)fe.route_type==="via"&&e.pcb_via.insert({pcb_trace_id:$.pcb_trace_id,x:fe.x,y:fe.y,hole_diameter:.3,outer_diameter:.6,layers:[fe.from_layer,fe.to_layer],from_layer:fe.from_layer,to_layer:fe.to_layer})}_doInitialSchematicTraceRenderWithDisplayLabel(){var U,G,Z,$;if((U=this.root)!=null&&U.schematicDisabled)return;const{db:e}=this.root,{_parsedProps:t,parent:n}=this;if(!n)throw new Error("Trace has no parent");const{allPortsFound:i,portsWithSelectors:a}=this._findConnectedPorts();if(!i)return;const o=a.map(({port:te})=>({port:te,position:te._getGlobalSchematicPositionAfterLayout(),schematic_port_id:te.schematic_port_id,facingDirection:te.facingDirection}));if(o.length<2)throw new Error("Expected at least two ports in portsWithPosition.");let s,l;const c=o[0].position,u=o[0].port;if("path"in this.props){if(this.props.path.length!==2)throw new Error("Invalid 'path': Must contain exactly two elements.");[s,l]=this.props.path}else{if(!("from"in this.props&&"to"in this.props))throw new Error("Missing 'from' or 'to' properties in props.");s=this.props.from,l=this.props.to}if(!u.source_port_id)throw new Error(`Missing source_port_id for the 'from' port (${s}).`);const f=o[1].position,h=o[1].port;if(!h.source_port_id)throw new Error(`Missing source_port_id for the 'to' port (${l}).`);const v=e.schematic_net_label.list().find(te=>te.source_net_id===u.source_port_id),x=e.schematic_net_label.list().find(te=>te.source_net_id===h.source_port_id),[E,S]=a.map(({port:te})=>te),C=((G=E.parent)==null?void 0:G.config.shouldRenderAsSchematicBox)?`${(Z=E==null?void 0:E.parent)==null?void 0:Z.props.name}_${E==null?void 0:E.props.name}`:`${($=S==null?void 0:S.parent)==null?void 0:$.props.name}_${S==null?void 0:S.props.name}`,N=this.props.schDisplayLabel??C;if(v&&v.text!==N&&(v.text=`${N} / ${v.text}`),x&&(x==null?void 0:x.text)!==N&&(x.text=`${N} / ${x.text}`),N!=null&&N.toLocaleLowerCase().includes("gnd")||N!=null&&N.toLocaleLowerCase().includes("ground")){!v&&!x?(FU({port:u,anchorPos:c,schDisplayLabel:this.props.schDisplayLabel,source_trace_id:this.source_trace_id},{db:e}),FU({port:h,anchorPos:f,schDisplayLabel:this.props.schDisplayLabel,source_trace_id:this.source_trace_id},{db:e})):v?x||FU({port:h,anchorPos:f,schDisplayLabel:this.props.schDisplayLabel,source_trace_id:this.source_trace_id},{db:e}):FU({port:u,anchorPos:c,schDisplayLabel:this.props.schDisplayLabel,source_trace_id:this.source_trace_id},{db:e});return}x||e.schematic_net_label.insert({text:this.props.schDisplayLabel??C,source_net_id:h.source_port_id,anchor_position:f,center:f,anchor_side:q0e(h.facingDirection)??"bottom"}),v||e.schematic_net_label.insert({text:this.props.schDisplayLabel??C,source_net_id:u.source_port_id,anchor_position:c,center:c,anchor_side:q0e(u.facingDirection)??"bottom"})}_isSymbolToChipConnection(){const{allPortsFound:e,ports:t}=this._findConnectedPorts();if(!e||t.length!==2)return!1;const[n,i]=t;if(!(n!=null&&n.parent)||!(i!=null&&i.parent))return!1;const a=n.parent.config.shouldRenderAsSchematicBox,o=i.parent.config.shouldRenderAsSchematicBox;return a&&!o||!a&&o}_isSymbolToSymbolConnection(){const{allPortsFound:e,ports:t}=this._findConnectedPorts();if(!e||t.length!==2)return!1;const[n,i]=t;if(!(n!=null&&n.parent)||!(i!=null&&i.parent))return!1;const a=!n.parent.config.shouldRenderAsSchematicBox,o=!i.parent.config.shouldRenderAsSchematicBox;return a&&o}_isChipToChipConnection(){const{allPortsFound:e,ports:t}=this._findConnectedPorts();if(!e||t.length!==2)return!1;const[n,i]=t;if(!(n!=null&&n.parent)||!(i!=null&&i.parent))return!1;const a=n.parent.config.shouldRenderAsSchematicBox,o=i.parent.config.shouldRenderAsSchematicBox;return a&&o}doInitialSchematicTraceRender(){var ye;if((ye=this.root)!=null&&ye.schematicDisabled)return;const{db:e}=this.root,{_parsedProps:t,parent:n}=this;if(!n)throw new Error("Trace has no parent");const{allPortsFound:i,portsWithSelectors:a}=this._findConnectedPorts(),{netsWithSelectors:o}=this._findConnectedNets();if(!i)return;if(this.props.schDisplayLabel&&("from"in this.props&&"to"in this.props||"path"in this.props)){this._doInitialSchematicTraceRenderWithDisplayLabel();return}const s={name:this.source_trace_id,pointsToConnect:[]},l=Wen(this),c=a.map(({port:Se})=>({port:Se,position:Se._getGlobalSchematicPositionAfterLayout(),schematic_port_id:Se.schematic_port_id??void 0,facingDirection:Se.facingDirection}));if(c.length===1&&o.length===1){const Se=o[0].net,{port:Re,position:Te}=c[0];e.schematic_net_label.insert({text:Se._parsedProps.name,source_net_id:Se.source_net_id,anchor_position:Te,center:Te,anchor_side:q0e(Re.facingDirection)??"bottom"});return}if(c.length<2)return;s.pointsToConnect=c.map(({position:Se})=>({...Se,layer:"top"}));const f=ken(l),h=2,v={minTraceWidth:.1,obstacles:l,connections:[s],bounds:{minX:f.minX-h,maxX:f.maxX+h,minY:f.minY-h,maxY:f.maxY+h},layerCount:1};let x=rD,E=!1;this.getSubcircuit().props._schDirectLineRoutingEnabled&&(x=TQe,E=!0);let b=new x({input:v,MAX_ITERATIONS:100,OBSTACLE_MARGIN:.1,isRemovePathLoopsEnabled:!0,isShortenPathWithShortcutsEnabled:!0,marginsWithCosts:[{margin:1,enterCost:0,travelCostFactor:1},{margin:.3,enterCost:0,travelCostFactor:1},{margin:.2,enterCost:0,travelCostFactor:2},{margin:.1,enterCost:0,travelCostFactor:3}]}).solveAndMapToTraces();if(b.length===0){if(this._isSymbolToChipConnection()||this._isSymbolToSymbolConnection()||this._isChipToChipConnection()){this._doInitialSchematicTraceRenderWithDisplayLabel();return}b=new TQe({input:v}).solveAndMapToTraces(),E=!0}const[{route:C}]=b;let N=[];for(let Se=0;Se<C.length-1;Se++)N.push({from:C[Se],to:C[Se+1]});const U=this.source_trace_id;let G=[];if(!E){Qen({edges:N,db:e,source_trace_id:U});const Se=G0e({db:e,source_trace_id:U,differentNetOnly:!0}).flatMap(Re=>Re.edges);N=$en({edges:N,otherEdges:Se}),G=Yen({edges:N,db:e,source_trace_id:this.source_trace_id})}const Z=N[N.length-1],$=c[c.length-1],te=CQe(Z);N.push(...$0e({lastEdge:Z,lastEdgePort:$,lastDominantDirection:te}));const re=N[0],se=c[0],fe=CQe(re);if(N.unshift(...$0e({firstEdge:re,firstEdgePort:se,firstDominantDirection:fe})),!this.source_trace_id)throw new Error("Missing source_trace_id for schematic trace insertion.");if(this.getSubcircuit()._parsedProps.schTraceAutoLabelEnabled&&jen(G,N)>=5&&(this._isSymbolToChipConnection()||this._isSymbolToSymbolConnection()||this._isChipToChipConnection())){this._doInitialSchematicTraceRenderWithDisplayLabel();return}const de=e.schematic_trace.insert({source_trace_id:this.source_trace_id,edges:N,junctions:G});this.schematic_trace_id=de.schematic_trace_id}},Ken=class extends D2{get config(){return{componentName:"Capacitor",schematicSymbolName:this.props.polarized?"capacitor_polarized":this.props.symbolName??"capacitor",zodProps:AJt,sourceFtype:uR.simple_capacitor}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}_getSchematicSymbolDisplayValue(){return`${JS(this._parsedProps.capacitance)}F`}doInitialCreateNetsFromProps(){this._createNetsFromProps([this.props.decouplingFor,this.props.decouplingTo])}doInitialCreateTracesFromProps(){this.props.decouplingFor&&this.props.decouplingTo&&(this.add(new xw({from:`${this.getSubcircuitSelector()} > port.1`,to:this.props.decouplingFor})),this.add(new xw({from:`${this.getSubcircuitSelector()} > port.2`,to:this.props.decouplingTo})))}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({ftype:"simple_capacitor",name:e.name,manufacturer_part_number:e.manufacturerPartNumber??e.mfn,supplier_part_numbers:e.supplierPartNumbers,capacitance:e.capacitance,max_decoupling_trace_length:e.maxDecouplingTraceLength,display_capacitance:this._getSchematicSymbolDisplayValue()});this.source_component_id=t.source_component_id}},RQe=class extends D2{constructor(){super(...arguments);rr(this,"schematicBoxDimensions",null)}get config(){return{componentName:"Chip",zodProps:SJt,shouldRenderAsSchematicBox:!0}}doInitialSchematicComponentRender(){const{_parsedProps:e}=this;(e==null?void 0:e.noSchematicRepresentation)!==!0&&super.doInitialSchematicComponentRender()}doInitialSourceRender(){const{db:e}=this.root,{_parsedProps:t}=this,n=e.source_component.insert({ftype:"simple_chip",name:t.name,manufacturer_part_number:t.manufacturerPartNumber,supplier_part_numbers:t.supplierPartNumbers});this.source_component_id=n.source_component_id}doInitialPcbComponentRender(){var i;if((i=this.root)!=null&&i.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=e.pcb_component.insert({center:{x:t.pcbX??0,y:t.pcbY??0},width:2,height:3,layer:t.layer??"top",rotation:t.pcbRotation??0,source_component_id:this.source_component_id,subcircuit_id:this.getSubcircuit().subcircuit_id??void 0});this.pcb_component_id=n.pcb_component_id}doInitialCreateTracesFromProps(){const{_parsedProps:e}=this;if(e.externallyConnectedPins)for(const[t,n]of e.externallyConnectedPins)this.add(new xw({from:`${this.getSubcircuitSelector()} > port.${t}`,to:`${this.getSubcircuitSelector()} > port.${n}`}))}},Jen=class extends D2{constructor(){super(...arguments);rr(this,"pos",this.portMap.pin1);rr(this,"anode",this.portMap.pin1);rr(this,"neg",this.portMap.pin2);rr(this,"cathode",this.portMap.pin2)}get config(){return{schematicSymbolName:this.props.symbolName??"diode",componentName:"Diode",zodProps:JJt,sourceFtype:"simple_diode"}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}},etn=class extends D2{constructor(){super(...arguments);rr(this,"schematicDimensions",null)}get config(){return{componentName:"Jumper",zodProps:EJt,shouldRenderAsSchematicBox:!0}}doInitialSourceRender(){const{db:e}=this.root,{_parsedProps:t}=this,n=e.source_component.insert({ftype:"simple_chip",name:t.name,manufacturer_part_number:t.manufacturerPartNumber,supplier_part_numbers:t.supplierPartNumbers});this.source_component_id=n.source_component_id}doInitialPcbComponentRender(){var i;if((i=this.root)!=null&&i.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=e.pcb_component.insert({center:{x:t.pcbX??0,y:t.pcbY??0},width:2,height:3,layer:t.layer??"top",rotation:t.pcbRotation??0,source_component_id:this.source_component_id,subcircuit_id:this.getSubcircuit().subcircuit_id??void 0});this.pcb_component_id=n.pcb_component_id}},ttn=class extends D2{constructor(){super(...arguments);rr(this,"pos",this.portMap.pin1);rr(this,"anode",this.portMap.pin1);rr(this,"neg",this.portMap.pin2);rr(this,"cathode",this.portMap.pin2)}get config(){return{componentName:"Led",schematicSymbolName:this.props.symbolName??"led",zodProps:een,sourceFtype:"simple_diode"}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}},ntn=class extends D2{constructor(){super(...arguments);rr(this,"pos",this.portMap.pin1);rr(this,"positive",this.portMap.pin1);rr(this,"neg",this.portMap.pin2);rr(this,"negative",this.portMap.pin2)}get config(){return{schematicSymbolName:this.props.symbolName??"power_factor_meter_horz",componentName:"PowerSource",zodProps:aen,sourceFtype:"simple_power_source"}}initPorts(){this.add(new AS({name:"pin1",pinNumber:1,aliases:["positive","pos"]})),this.add(new AS({name:"pin2",pinNumber:2,aliases:["negative","neg"]}))}},rtn=class extends D2{get config(){return{componentName:"Resistor",schematicSymbolName:this.props.symbolName??"boxresistor",zodProps:TJt,sourceFtype:"simple_resistor"}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}_getSchematicSymbolDisplayValue(){return`${JS(this._parsedProps.resistance)}Ω`}doInitialCreateNetsFromProps(){this._createNetsFromProps([this.props.pullupFor,this.props.pullupTo])}doInitialCreateTracesFromProps(){this.props.pullupFor&&this.props.pullupTo&&(this.add(new xw({from:`${this.getSubcircuitSelector()} > port.1`,to:this.props.pullupFor})),this.add(new xw({from:`${this.getSubcircuitSelector()} > port.2`,to:this.props.pullupTo})))}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({ftype:"simple_resistor",name:e.name,manufacturer_part_number:e.manufacturerPartNumber??e.mfn,supplier_part_numbers:e.supplierPartNumbers,resistance:e.resistance,display_resistance:this._getSchematicSymbolDisplayValue()});this.source_component_id=t.source_component_id}},itn=["leftedge","rightedge","topedge","bottomedge","center"],atn=class extends ex{get config(){return{componentName:"Constraint",zodProps:zJt}}constructor(r){if(super(r),("xdist"in r||"ydist"in r)&&!("edgeToEdge"in r)&&!("centerToCenter"in r))throw new Error(`edgeToEdge, centerToCenter must be set for xDist or yDist for ${this}`);if("for"in r&&r.for.length<2)throw new Error(`"for" must have at least two selectors for ${this}`)}_getAllReferencedComponents(){const r=[],e=this.getPrimitiveContainer();function t(n){const i=n.split(" ").pop(),a=itn.includes(i)?i:void 0,o=a?n.replace(` ${a}`,""):n,s=e.selectOne(o,{pcbPrimitive:!0});s&&r.push({selector:n,component:s,componentSelector:o,edge:a})}for(const n of["left","right","top","bottom"])n in this._parsedProps&&t(this._parsedProps[n]);if("for"in this._parsedProps)for(const n of this._parsedProps.for)t(n);return{componentsWithSelectors:r}}},otn=class extends ex{constructor(){super(...arguments);rr(this,"fabrication_note_path_id",null)}get config(){return{componentName:"FabricationNotePath",zodProps:nen}}doInitialPcbPrimitiveRender(){var s,l;if((s=this.root)!=null&&s.pcbDisabled)return;const{db:e}=this.root,t=this.getSubcircuit(),{_parsedProps:n}=this,i=n.layer??"top";if(i!=="top"&&i!=="bottom")throw new Error(`Invalid layer "${i}" for SilkscreenPath. Must be "top" or "bottom".`);const a=this._computePcbGlobalTransformBeforeLayout(),o=e.pcb_fabrication_note_path.insert({pcb_component_id:(l=this.parent)==null?void 0:l.pcb_component_id,layer:i,color:n.color,route:n.route.map(c=>{const u=li(a,{x:c.x,y:c.y});return{...c,x:u.x,y:u.y}}),stroke_width:n.strokeWidth??.1,subcircuit_id:(t==null?void 0:t.subcircuit_id)??void 0});this.fabrication_note_path_id=o.pcb_fabrication_note_path_id}},stn=class extends ex{get config(){return{componentName:"FabricationNoteText",zodProps:ten}}doInitialPcbPrimitiveRender(){var i,a;if((i=this.root)!=null&&i.pcbDisabled)return;const{db:r}=this.root,{_parsedProps:e}=this,t=this.getPrimitiveContainer(),n=this.getSubcircuit();r.pcb_fabrication_note_text.insert({anchor_alignment:e.anchorAlignment,anchor_position:{x:e.pcbX??0,y:e.pcbY??0},font:e.font??"tscircuit2024",font_size:e.fontSize??1,layer:"top",color:e.color,text:e.text??"",pcb_component_id:t.pcb_component_id,subcircuit_id:(n==null?void 0:n.subcircuit_id)??void 0,pcb_group_id:((a=this.getGroup())==null?void 0:a.pcb_group_id)??void 0})}},ltn=class extends H0e{constructor(r){super({...r,subcircuit:!0})}},ctn=class extends ex{constructor(){super(...arguments);rr(this,"source_net_alias_id")}get config(){return{componentName:"NetAlias",zodProps:XJt}}doInitialSchematicComponentRender(){var a;if((a=this.root)!=null&&a.schematicDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n={x:t.schX??0,y:t.schY??0},i=e.schematic_net_label.insert({text:t.net,source_net_id:t.net,anchor_position:n,center:n,anchor_side:"bottom"});this.source_net_alias_id=i.source_net_id}},utn=class extends ex{constructor(){super(...arguments);rr(this,"pcb_silkscreen_circle_id",null)}get config(){return{componentName:"SilkscreenCircle",zodProps:uen}}doInitialPcbPrimitiveRender(){var o,s,l;if((o=this.root)!=null&&o.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=t.layer??"top";if(n!=="top"&&n!=="bottom")throw new Error(`Invalid layer "${n}" for SilkscreenCircle. Must be "top" or "bottom".`);this._computePcbGlobalTransformBeforeLayout();const i=this.getSubcircuit(),a=e.pcb_silkscreen_circle.insert({pcb_component_id:(s=this.parent)==null?void 0:s.pcb_component_id,layer:n,center:{x:t.pcbX??0,y:t.pcbY??0},radius:t.radius,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((l=this.getGroup())==null?void 0:l.pcb_group_id)??void 0});this.pcb_silkscreen_circle_id=a.pcb_silkscreen_circle_id}},ftn=class extends ex{constructor(){super(...arguments);rr(this,"pcb_silkscreen_rect_id",null)}get config(){return{componentName:"SilkscreenRect",zodProps:cen}}doInitialPcbPrimitiveRender(){var o,s,l;if((o=this.root)!=null&&o.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=t.layer??"top";if(n!=="top"&&n!=="bottom")throw new Error(`Invalid layer "${n}" for SilkscreenRect. Must be "top" or "bottom".`);const i=this.getSubcircuit(),a=e.pcb_silkscreen_rect.insert({pcb_component_id:(s=this.parent)==null?void 0:s.pcb_component_id,layer:n,center:{x:t.pcbX??0,y:t.pcbY??0},width:t.width,height:t.height,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((l=this==null?void 0:this.getGroup())==null?void 0:l.pcb_group_id)??void 0});this.pcb_silkscreen_rect_id=a.pcb_silkscreen_rect_id}},dtn=class extends ex{constructor(){super(...arguments);rr(this,"isPcbPrimitive",!0)}get config(){return{componentName:"SilkscreenText",zodProps:oen}}doInitialPcbPrimitiveRender(){var s,l;if((s=this.root)!=null&&s.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this.getPrimitiveContainer(),i=this._getGlobalPcbPositionBeforeLayout(),{maybeFlipLayer:a}=this._getPcbPrimitiveFlippedHelpers(),o=this.getSubcircuit();e.pcb_silkscreen_text.insert({anchor_alignment:t.anchorAlignment,anchor_position:{x:i.x,y:i.y},font:t.font??"tscircuit2024",font_size:t.fontSize??1,layer:a(t.layer??"top"),text:t.text??"",ccw_rotation:t.pcbRotation,pcb_component_id:n.pcb_component_id,subcircuit_id:(o==null?void 0:o.subcircuit_id)??void 0,pcb_group_id:((l=this.getGroup())==null?void 0:l.pcb_group_id)??void 0})}getPcbSize(){const{_parsedProps:e}=this,t=e.fontSize??1,i=(e.text??"").length*t,a=t;return{width:i*t,height:a*t}}},ptn=class extends ex{constructor(){super(...arguments);rr(this,"pcb_silkscreen_line_id",null)}get config(){return{componentName:"SilkscreenLine",zodProps:len}}doInitialPcbPrimitiveRender(){var o,s,l;if((o=this.root)!=null&&o.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=t.layer??"top";if(n!=="top"&&n!=="bottom")throw new Error(`Invalid layer "${n}" for SilkscreenLine. Must be "top" or "bottom".`);const i=this.getSubcircuit(),a=e.pcb_silkscreen_line.insert({pcb_component_id:(s=this.parent)==null?void 0:s.pcb_component_id,layer:n,x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2,stroke_width:t.strokeWidth??.1,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((l=i==null?void 0:i.getGroup())==null?void 0:l.pcb_group_id)??void 0});this.pcb_silkscreen_line_id=a.pcb_silkscreen_line_id}},htn=class extends ex{constructor(){super(...arguments);rr(this,"pcb_via_id",null);rr(this,"matchedPort",null);rr(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Via",zodProps:ren}}getAvailablePcbLayers(){return["top","inner1","inner2","bottom"]}getPcbSize(){const{_parsedProps:e}=this;return{width:e.outerDiameter,height:e.outerDiameter}}_getPcbCircuitJsonBounds(){const{db:e}=this.root,t=e.pcb_via.get(this.pcb_via_id),n=this.getPcbSize();return{center:{x:t.x,y:t.y},bounds:{left:t.x-n.width/2,top:t.y-n.height/2,right:t.x+n.width/2,bottom:t.y+n.height/2},width:n.width,height:n.height}}_setPositionFromLayout(e){const{db:t}=this.root;t.pcb_via.update(this.pcb_via_id,{x:e.x,y:e.y})}doInitialPcbPrimitiveRender(){var o,s;if((o=this.root)!=null&&o.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this._getGlobalPcbPositionBeforeLayout(),i=this.getSubcircuit(),a=e.pcb_via.insert({x:n.x,y:n.y,hole_diameter:t.holeDiameter,outer_diameter:t.outerDiameter,layers:["bottom","top"],from_layer:t.fromLayer||"bottom",to_layer:t.toLayer||"top",subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((s=this.getGroup())==null?void 0:s.pcb_group_id)??void 0});this.pcb_via_id=a.pcb_via_id}},mtn=class extends D2{get config(){return{componentName:"Battery",schematicSymbolName:this.props.symbolName??"battery",zodProps:GJt,sourceFtype:"simple_power_source"}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({name:e.name,ftype:"simple_power_source",capacity:e.capacity,supplier_part_numbers:e.supplierPartNumbers});this.source_component_id=t.source_component_id}},vtn=class extends D2{get config(){return{componentName:"PinHeader",zodProps:YJt,shouldRenderAsSchematicBox:!0}}_getImpliedFootprintString(){var i;const r=this._parsedProps.pinCount??((i=this._parsedProps.pinLabels)==null?void 0:i.length)??0,e=this._parsedProps.holeDiameter,t=this._parsedProps.platedDiameter,n=this._parsedProps.pitch;return r>0&&n?!e&&!t?`pinrow${r}_p${n}`:`pinrow${r}_p${n}_id${e}_od${t}`:null}initPorts(){var e;const r=this._parsedProps.pinCount??((e=this._parsedProps.pinLabels)==null?void 0:e.length)??1;for(let t=1;t<=r;t++)this.add(new AS({name:`pin${t}`,pinNumber:t,aliases:[]}))}_getSchematicPortArrangement(){const r=this._parsedProps.pinCount??1,e=this._parsedProps.facingDirection??"right";return{leftSize:e==="left"?r:0,rightSize:e==="right"?r:0}}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({ftype:"simple_pin_header",name:e.name,supplier_part_numbers:e.supplierPartNumbers,pin_count:e.pinCount,gender:e.gender});this.source_component_id=t.source_component_id}};function ytn(r){switch(r){case"two_ground_pins":return"crystal_4pin";case"ground_pin":return"resonator";case"no_ground":return"crystal";default:return"crystal"}}var gtn=class extends D2{get config(){return{componentName:"Resonator",schematicSymbolName:this.props.symbolName??ytn(this.props.pinVariant),zodProps:RJt,shouldRenderAsSchematicBox:!1}}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({ftype:"simple_resonator",name:e.name,frequency:e.frequency,load_capacitance:e.loadCapacitance,supplier_part_numbers:e.supplierPartNumbers,pin_variant:e.pinVariant||"no_ground"});this.source_component_id=t.source_component_id}},_tn=class extends D2{get config(){return{componentName:"Inductor",schematicSymbolName:this.props.symbolName??"inductor",zodProps:KJt,sourceFtype:uR.simple_inductor}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({name:e.name,ftype:uR.simple_inductor,inductance:e.inductance,supplier_part_numbers:e.supplierPartNumbers});this.source_component_id=t.source_component_id}},xtn=class extends D2{get config(){return{schematicSymbolName:this.props.symbolName??"potentiometer2",componentName:"Potentiometer",zodProps:MJt,sourceFtype:"simple_potentiometer"}}initPorts(){super.initPorts({additionalAliases:{pin1:["pos","left"],pin2:["neg","right"]}})}_getSchematicSymbolDisplayValue(){return`${JS(this._parsedProps.maxResistance)}Ω`}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({name:e.name,ftype:"simple_potentiometer",max_resistance:e.maxResistance});this.source_component_id=t.source_component_id}},btn=class extends D2{get config(){return{componentName:"PushButton",schematicSymbolName:this.props.symbolName??"push_button_normally_open_momentary",zodProps:WJt,sourceFtype:uR.simple_push_button}}get defaultInternallyConnectedPinNames(){return[["pin1","pin4"],["pin2","pin3"]]}initPorts(){super.initPorts({pinCount:4,additionalAliases:{pin1:["side1"],pin3:["side2"]}})}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({name:e.name,ftype:uR.simple_push_button,supplier_part_numbers:e.supplierPartNumbers});this.source_component_id=t.source_component_id}},Stn=class extends D2{get config(){return{schematicSymbolName:this.props.symbolName??"crystal",componentName:"Crystal",zodProps:CJt,sourceFtype:"simple_crystal"}}initPorts(){super.initPorts({additionalAliases:{pin1:["pos","left"],pin2:["neg","right"]}})}_getSchematicSymbolDisplayValue(){return`${JS(this._parsedProps.frequency)}Hz`}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({name:e.name,ftype:"simple_crystal",frequency:e.frequency,load_capacitance:e.loadCapacitance});this.source_component_id=t.source_component_id}},Etn=class extends D2{get config(){return{componentName:"Transistor",schematicSymbolName:this.props.transistorType==="npn"?"npn_bipolar_transistor":"pnp_bipolar_transistor",zodProps:ZJt,shouldRenderAsSchematicBox:!1}}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({ftype:"simple_transistor",name:e.name,transistor_type:e.transistorType});this.source_component_id=t.source_component_id}},wtn=class extends D2{get config(){const r=this.props.mosfetMode==="depletion"?"d":"e";return{componentName:"Mosfet",schematicSymbolName:`${this.props.channelType}_channel_${r}_mosfet_transistor`,zodProps:QJt,shouldRenderAsSchematicBox:!1}}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({ftype:"simple_mosfet",name:e.name,mosfet_mode:e.mosfetMode,channel_type:e.channelType});this.source_component_id=t.source_component_id}},Ttn=class{constructor(){rr(this,"firstChild",null);rr(this,"children");rr(this,"db");rr(this,"root",null);rr(this,"isRoot",!0);rr(this,"schematicDisabled",!1);rr(this,"pcbDisabled",!1);rr(this,"pcbRoutingDisabled",!1);rr(this,"name");rr(this,"_hasRenderedAtleastOnce",!1);rr(this,"_eventListeners",{});this.children=[],this.db=I0e([]),this.root=this}add(r){let e;Ct.isValidElement(r)?e=hQe(r):e=r,this.children.push(e)}_getBoard(){return this.children.find(r=>r.componentName==="Board")}_guessRootComponent(){if(!this.firstChild){if(this.children.length===1){this.firstChild=this.children[0];return}if(this.children.length===0)throw new Error("Not able to guess root component: RootCircuit has no children (use circuit.add(...))");if(this.children.length>0){const r=this.children.find(e=>e.componentName==="Board")??null;if(r){this.firstChild=r;return}}throw new Error("Not able to guess root component: RootCircuit has multiple children and no board")}}render(){this.firstChild||this._guessRootComponent();const{firstChild:r,db:e}=this;if(!r)throw new Error("RootCircuit has no root component");r.parent=this,r.runRenderCycle(),this._hasRenderedAtleastOnce=!0}async renderUntilSettled(){for(this.render();this._hasIncompleteAsyncEffects();)await new Promise(r=>setTimeout(r,100)),this.render()}_hasIncompleteAsyncEffects(){return this.children.some(r=>r._hasIncompleteAsyncEffects()?!0:r.children.some(e=>e._hasIncompleteAsyncEffects()))}getSoup(){return this._hasRenderedAtleastOnce||this.render(),this.db.toArray()}getCircuitJson(){return this.getSoup()}toJson(){return this.getSoup()}async getSvg(r){return(await Promise.resolve().then(()=>drt).catch(t=>{throw new Error(`To use project.getSvg, you must install the "circuit-to-svg" package.
|
|
12867
12867
|
|
|
12868
12868
|
"${t.message}"`)})).convertCircuitJsonToPcbSvg(this.getCircuitJson())}async preview(r){throw new Error("project.preview is not yet implemented")}computeSchematicGlobalTransform(){return Yv()}_computePcbGlobalTransformBeforeLayout(){return Yv()}selectAll(r){var e;return this._guessRootComponent(),((e=this.firstChild)==null?void 0:e.selectAll(r))??[]}selectOne(r,e){var t;return this._guessRootComponent(),((t=this.firstChild)==null?void 0:t.selectOne(r,e))??null}emit(r,...e){if(this._eventListeners[r])for(const t of this._eventListeners[r])t(...e)}on(r,e){this._eventListeners[r]||(this._eventListeners[r]=[]),this._eventListeners[r].push(e)}getClientOrigin(){return typeof window<"u"?window.location.origin:typeof self<"u"?self.origin:""}},Mtn=r=>{const[e,t]=od.useState(!0),[n,i]=od.useState(null),[a,o]=od.useState(),[s,l]=od.useState();return od.useEffect(()=>{t(!0),i(null),r&&setTimeout(()=>{try{const c=new Ttn;c.add(r),o(c),l(c.toJson())}catch(c){i(c)}t(!1)},1)},[r]),{isLoading:e,error:n,circuit:a,circuitJson:s}},Ctn=({circuitJson:r,editEvents:e,manualEditsFile:t})=>{var i;const n={...t,schematic_placements:[...t.schematic_placements??[]]};for(const a of e)if(a.edit_event_type==="edit_schematic_component_location"){const{schematic_component_id:o,new_center:s}=a,l=I0e(r).schematic_component.get(o);if(!l)continue;const c=I0e(r).source_component.get(l.source_component_id);if(!c)continue;const u=(i=n.schematic_placements)==null?void 0:i.findIndex(h=>h.selector===c.name),f={selector:c.name,center:s,relative_to:"group_center"};u>=0?n.schematic_placements[u]=f:n.schematic_placements.push(f)}return n};new Proxy({},{get:(r,e)=>new Proxy({},{get:(t,n)=>e==="net"?`net.${n}`:`.${e} > .${n}`})}),dQe(uQe),dQe({Bug:RQe});const fR=r=>typeof r=="number"&&!isNaN(r),l7=r=>typeof r=="string",J3=r=>typeof r=="function",BU=r=>l7(r)||J3(r)?r:null,Y0e=r=>Ct.isValidElement(r)||l7(r)||J3(r)||fR(r);function Rtn(r,e,t){t===void 0&&(t=300);const{scrollHeight:n,style:i}=r;requestAnimationFrame(()=>{i.minHeight="initial",i.height=n+"px",i.transition=`all ${t}ms`,requestAnimationFrame(()=>{i.height="0",i.padding="0",i.margin="0",setTimeout(e,t)})})}function jU(r){let{enter:e,exit:t,appendPosition:n=!1,collapse:i=!0,collapseDuration:a=300}=r;return function(o){let{children:s,position:l,preventExitTransition:c,done:u,nodeRef:f,isIn:h,playToast:v}=o;const x=n?`${e}--${l}`:e,E=n?`${t}--${l}`:t,S=Ct.useRef(0);return Ct.useLayoutEffect(()=>{const b=f.current,C=x.split(" "),N=U=>{U.target===f.current&&(v(),b.removeEventListener("animationend",N),b.removeEventListener("animationcancel",N),S.current===0&&U.type!=="animationcancel"&&b.classList.remove(...C))};b.classList.add(...C),b.addEventListener("animationend",N),b.addEventListener("animationcancel",N)},[]),Ct.useEffect(()=>{const b=f.current,C=()=>{b.removeEventListener("animationend",C),i?Rtn(b,u,a):u()};h||(c?C():(S.current=1,b.className+=` ${E}`,b.addEventListener("animationend",C)))},[h]),od.createElement(od.Fragment,null,s)}}function AQe(r,e){return r!=null?{content:r.content,containerId:r.props.containerId,id:r.props.toastId,theme:r.props.theme,type:r.props.type,data:r.props.data||{},isLoading:r.props.isLoading,icon:r.props.icon,status:e}:{}}const a3=new Map;let dR=[];const X0e=new Set,Atn=r=>X0e.forEach(e=>e(r)),PQe=()=>a3.size>0;function DQe(r,e){var t;if(e)return!((t=a3.get(e))==null||!t.isToastActive(r));let n=!1;return a3.forEach(i=>{i.isToastActive(r)&&(n=!0)}),n}function NQe(r,e){Y0e(r)&&(PQe()||dR.push({content:r,options:e}),a3.forEach(t=>{t.buildToast(r,e)}))}function LQe(r,e){a3.forEach(t=>{e!=null&&e!=null&&e.containerId?(e==null?void 0:e.containerId)===t.id&&t.toggle(r,e==null?void 0:e.id):t.toggle(r,e==null?void 0:e.id)})}function Ptn(r){const{subscribe:e,getSnapshot:t,setProps:n}=Ct.useRef(function(a){const o=a.containerId||1;return{subscribe(s){const l=function(u,f,h){let v=1,x=0,E=[],S=[],b=[],C=f;const N=new Map,U=new Set,G=()=>{b=Array.from(N.values()),U.forEach(te=>te())},Z=te=>{S=te==null?[]:S.filter(re=>re!==te),G()},$=te=>{const{toastId:re,onOpen:se,updateId:fe,children:de}=te.props,ye=fe==null;te.staleId&&N.delete(te.staleId),N.set(re,te),S=[...S,te.props.toastId].filter(Se=>Se!==te.staleId),G(),h(AQe(te,ye?"added":"updated")),ye&&J3(se)&&se(Ct.isValidElement(de)&&de.props)};return{id:u,props:C,observe:te=>(U.add(te),()=>U.delete(te)),toggle:(te,re)=>{N.forEach(se=>{re!=null&&re!==se.props.toastId||J3(se.toggle)&&se.toggle(te)})},removeToast:Z,toasts:N,clearQueue:()=>{x-=E.length,E=[]},buildToast:(te,re)=>{if((Ee=>{let{containerId:$e,toastId:tt,updateId:ut}=Ee;const gt=$e?$e!==u:u!==1,dt=N.has(tt)&&ut==null;return gt||dt})(re))return;const{toastId:se,updateId:fe,data:de,staleId:ye,delay:Se}=re,Re=()=>{Z(se)},Te=fe==null;Te&&x++;const Ce={...C,style:C.toastStyle,key:v++,...Object.fromEntries(Object.entries(re).filter(Ee=>{let[$e,tt]=Ee;return tt!=null})),toastId:se,updateId:fe,data:de,closeToast:Re,isIn:!1,className:BU(re.className||C.toastClassName),bodyClassName:BU(re.bodyClassName||C.bodyClassName),progressClassName:BU(re.progressClassName||C.progressClassName),autoClose:!re.isLoading&&(Me=re.autoClose,Fe=C.autoClose,Me===!1||fR(Me)&&Me>0?Me:Fe),deleteToast(){const Ee=N.get(se),{onClose:$e,children:tt}=Ee.props;J3($e)&&$e(Ct.isValidElement(tt)&&tt.props),h(AQe(Ee,"removed")),N.delete(se),x--,x<0&&(x=0),E.length>0?$(E.shift()):G()}};var Me,Fe;Ce.closeButton=C.closeButton,re.closeButton===!1||Y0e(re.closeButton)?Ce.closeButton=re.closeButton:re.closeButton===!0&&(Ce.closeButton=!Y0e(C.closeButton)||C.closeButton);let Ie=te;Ct.isValidElement(te)&&!l7(te.type)?Ie=Ct.cloneElement(te,{closeToast:Re,toastProps:Ce,data:de}):J3(te)&&(Ie=te({closeToast:Re,toastProps:Ce,data:de}));const ke={content:Ie,props:Ce,staleId:ye};C.limit&&C.limit>0&&x>C.limit&&Te?E.push(ke):fR(Se)?setTimeout(()=>{$(ke)},Se):$(ke)},setProps(te){C=te},setToggle:(te,re)=>{N.get(te).toggle=re},isToastActive:te=>S.some(re=>re===te),getSnapshot:()=>b}}(o,a,Atn);a3.set(o,l);const c=l.observe(s);return dR.forEach(u=>NQe(u.content,u.options)),dR=[],()=>{c(),a3.delete(o)}},setProps(s){var l;(l=a3.get(o))==null||l.setProps(s)},getSnapshot(){var s;return(s=a3.get(o))==null?void 0:s.getSnapshot()}}}(r)).current;n(r);const i=Ct.useSyncExternalStore(e,t,t);return{getToastToRender:function(a){if(!i)return[];const o=new Map;return r.newestOnTop&&i.reverse(),i.forEach(s=>{const{position:l}=s.props;o.has(l)||o.set(l,[]),o.get(l).push(s)}),Array.from(o,s=>a(s[0],s[1]))},isToastActive:DQe,count:i==null?void 0:i.length}}function Dtn(r){const[e,t]=Ct.useState(!1),[n,i]=Ct.useState(!1),a=Ct.useRef(null),o=Ct.useRef({start:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,didMove:!1}).current,{autoClose:s,pauseOnHover:l,closeToast:c,onClick:u,closeOnClick:f}=r;var h,v;function x(){t(!0)}function E(){t(!1)}function S(N){const U=a.current;o.canDrag&&U&&(o.didMove=!0,e&&E(),o.delta=r.draggableDirection==="x"?N.clientX-o.start:N.clientY-o.start,o.start!==N.clientX&&(o.canCloseOnClick=!1),U.style.transform=`translate3d(${r.draggableDirection==="x"?`${o.delta}px, var(--y)`:`0, calc(${o.delta}px + var(--y))`},0)`,U.style.opacity=""+(1-Math.abs(o.delta/o.removalDistance)))}function b(){document.removeEventListener("pointermove",S),document.removeEventListener("pointerup",b);const N=a.current;if(o.canDrag&&o.didMove&&N){if(o.canDrag=!1,Math.abs(o.delta)>o.removalDistance)return i(!0),r.closeToast(),void r.collapseAll();N.style.transition="transform 0.2s, opacity 0.2s",N.style.removeProperty("transform"),N.style.removeProperty("opacity")}}(v=a3.get((h={id:r.toastId,containerId:r.containerId,fn:t}).containerId||1))==null||v.setToggle(h.id,h.fn),Ct.useEffect(()=>{if(r.pauseOnFocusLoss)return document.hasFocus()||E(),window.addEventListener("focus",x),window.addEventListener("blur",E),()=>{window.removeEventListener("focus",x),window.removeEventListener("blur",E)}},[r.pauseOnFocusLoss]);const C={onPointerDown:function(N){if(r.draggable===!0||r.draggable===N.pointerType){o.didMove=!1,document.addEventListener("pointermove",S),document.addEventListener("pointerup",b);const U=a.current;o.canCloseOnClick=!0,o.canDrag=!0,U.style.transition="none",r.draggableDirection==="x"?(o.start=N.clientX,o.removalDistance=U.offsetWidth*(r.draggablePercent/100)):(o.start=N.clientY,o.removalDistance=U.offsetHeight*(r.draggablePercent===80?1.5*r.draggablePercent:r.draggablePercent)/100)}},onPointerUp:function(N){const{top:U,bottom:G,left:Z,right:$}=a.current.getBoundingClientRect();N.nativeEvent.type!=="touchend"&&r.pauseOnHover&&N.clientX>=Z&&N.clientX<=$&&N.clientY>=U&&N.clientY<=G?E():x()}};return s&&l&&(C.onMouseEnter=E,r.stacked||(C.onMouseLeave=x)),f&&(C.onClick=N=>{u&&u(N),o.canCloseOnClick&&c()}),{playToast:x,pauseToast:E,isRunning:e,preventExitTransition:n,toastRef:a,eventHandlers:C}}function Ntn(r){let{delay:e,isRunning:t,closeToast:n,type:i="default",hide:a,className:o,style:s,controlledProgress:l,progress:c,rtl:u,isIn:f,theme:h}=r;const v=a||l&&c===0,x={...s,animationDuration:`${e}ms`,animationPlayState:t?"running":"paused"};l&&(x.transform=`scaleX(${c})`);const E=ub("Toastify__progress-bar",l?"Toastify__progress-bar--controlled":"Toastify__progress-bar--animated",`Toastify__progress-bar-theme--${h}`,`Toastify__progress-bar--${i}`,{"Toastify__progress-bar--rtl":u}),S=J3(o)?o({rtl:u,type:i,defaultClassName:E}):ub(E,o),b={[l&&c>=1?"onTransitionEnd":"onAnimationEnd"]:l&&c<1?null:()=>{f&&n()}};return od.createElement("div",{className:"Toastify__progress-bar--wrp","data-hidden":v},od.createElement("div",{className:`Toastify__progress-bar--bg Toastify__progress-bar-theme--${h} Toastify__progress-bar--${i}`}),od.createElement("div",{role:"progressbar","aria-hidden":v?"true":"false","aria-label":"notification timer",className:S,style:x,...b}))}let Ltn=1;const zQe=()=>""+Ltn++;function ztn(r){return r&&(l7(r.toastId)||fR(r.toastId))?r.toastId:zQe()}function pR(r,e){return NQe(r,e),e.toastId}function VU(r,e){return{...e,type:e&&e.type||r,toastId:ztn(e)}}function HU(r){return(e,t)=>pR(e,VU(r,t))}function W9(r,e){return pR(r,VU("default",e))}W9.loading=(r,e)=>pR(r,VU("default",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...e})),W9.promise=function(r,e,t){let n,{pending:i,error:a,success:o}=e;i&&(n=l7(i)?W9.loading(i,t):W9.loading(i.render,{...t,...i}));const s={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},l=(u,f,h)=>{if(f==null)return void W9.dismiss(n);const v={type:u,...s,...t,data:h},x=l7(f)?{render:f}:f;return n?W9.update(n,{...v,...x}):W9(x.render,{...v,...x}),h},c=J3(r)?r():r;return c.then(u=>l("success",o,u)).catch(u=>l("error",a,u)),c},W9.success=HU("success"),W9.info=HU("info"),W9.error=HU("error"),W9.warning=HU("warning"),W9.warn=W9.warning,W9.dark=(r,e)=>pR(r,VU("default",{theme:"dark",...e})),W9.dismiss=function(r){(function(e){var t;if(PQe()){if(e==null||l7(t=e)||fR(t))a3.forEach(n=>{n.removeToast(e)});else if(e&&("containerId"in e||"id"in e)){const n=a3.get(e.containerId);n?n.removeToast(e.id):a3.forEach(i=>{i.removeToast(e.id)})}}else dR=dR.filter(n=>e!=null&&n.options.toastId!==e)})(r)},W9.clearWaitingQueue=function(r){r===void 0&&(r={}),a3.forEach(e=>{!e.props.limit||r.containerId&&e.id!==r.containerId||e.clearQueue()})},W9.isActive=DQe,W9.update=function(r,e){e===void 0&&(e={});const t=((n,i)=>{var a;let{containerId:o}=i;return(a=a3.get(o||1))==null?void 0:a.toasts.get(n)})(r,e);if(t){const{props:n,content:i}=t,a={delay:100,...n,...e,toastId:e.toastId||r,updateId:zQe()};a.toastId!==r&&(a.staleId=r);const o=a.render||i;delete a.render,pR(o,a)}},W9.done=r=>{W9.update(r,{progress:1})},W9.onChange=function(r){return X0e.add(r),()=>{X0e.delete(r)}},W9.play=r=>LQe(!0,r),W9.pause=r=>LQe(!1,r);const Otn=typeof window<"u"?Ct.useLayoutEffect:Ct.useEffect,qU=r=>{let{theme:e,type:t,isLoading:n,...i}=r;return od.createElement("svg",{viewBox:"0 0 24 24",width:"100%",height:"100%",fill:e==="colored"?"currentColor":`var(--toastify-icon-color-${t})`,...i})},W0e={info:function(r){return od.createElement(qU,{...r},od.createElement("path",{d:"M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z"}))},warning:function(r){return od.createElement(qU,{...r},od.createElement("path",{d:"M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z"}))},success:function(r){return od.createElement(qU,{...r},od.createElement("path",{d:"M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z"}))},error:function(r){return od.createElement(qU,{...r},od.createElement("path",{d:"M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"}))},spinner:function(){return od.createElement("div",{className:"Toastify__spinner"})}},Utn=r=>{const{isRunning:e,preventExitTransition:t,toastRef:n,eventHandlers:i,playToast:a}=Dtn(r),{closeButton:o,children:s,autoClose:l,onClick:c,type:u,hideProgressBar:f,closeToast:h,transition:v,position:x,className:E,style:S,bodyClassName:b,bodyStyle:C,progressClassName:N,progressStyle:U,updateId:G,role:Z,progress:$,rtl:te,toastId:re,deleteToast:se,isIn:fe,isLoading:de,closeOnClick:ye,theme:Se}=r,Re=ub("Toastify__toast",`Toastify__toast-theme--${Se}`,`Toastify__toast--${u}`,{"Toastify__toast--rtl":te},{"Toastify__toast--close-on-click":ye}),Te=J3(E)?E({rtl:te,position:x,type:u,defaultClassName:Re}):ub(Re,E),Ce=function(ke){let{theme:Ee,type:$e,isLoading:tt,icon:ut}=ke,gt=null;const dt={theme:Ee,type:$e};return ut===!1||(J3(ut)?gt=ut({...dt,isLoading:tt}):Ct.isValidElement(ut)?gt=Ct.cloneElement(ut,dt):tt?gt=W0e.spinner():(kt=>kt in W0e)($e)&&(gt=W0e[$e](dt))),gt}(r),Me=!!$||!l,Fe={closeToast:h,type:u,theme:Se};let Ie=null;return o===!1||(Ie=J3(o)?o(Fe):Ct.isValidElement(o)?Ct.cloneElement(o,Fe):function(ke){let{closeToast:Ee,theme:$e,ariaLabel:tt="close"}=ke;return od.createElement("button",{className:`Toastify__close-button Toastify__close-button--${$e}`,type:"button",onClick:ut=>{ut.stopPropagation(),Ee(ut)},"aria-label":tt},od.createElement("svg",{"aria-hidden":"true",viewBox:"0 0 14 16"},od.createElement("path",{fillRule:"evenodd",d:"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"})))}(Fe)),od.createElement(v,{isIn:fe,done:se,position:x,preventExitTransition:t,nodeRef:n,playToast:a},od.createElement("div",{id:re,onClick:c,"data-in":fe,className:Te,...i,style:S,ref:n},od.createElement("div",{...fe&&{role:Z},className:J3(b)?b({type:u}):ub("Toastify__toast-body",b),style:C},Ce!=null&&od.createElement("div",{className:ub("Toastify__toast-icon",{"Toastify--animate-icon Toastify__zoom-enter":!de})},Ce),od.createElement("div",null,s)),Ie,od.createElement(Ntn,{...G&&!Me?{key:`pb-${G}`}:{},rtl:te,theme:Se,delay:l,isRunning:e,isIn:fe,closeToast:h,hide:f,type:u,style:U,className:N,controlledProgress:Me,progress:$||0})))},$U=function(r,e){return e===void 0&&(e=!1),{enter:`Toastify--animate Toastify__${r}-enter`,exit:`Toastify--animate Toastify__${r}-exit`,appendPosition:e}},ktn=jU($U("bounce",!0));jU($U("slide",!0)),jU($U("zoom")),jU($U("flip"));const Ftn={position:"top-right",transition:ktn,autoClose:5e3,closeButton:!0,pauseOnHover:!0,pauseOnFocusLoss:!0,draggable:"touch",draggablePercent:80,draggableDirection:"x",role:"alert",theme:"light"};function Itn(r){let e={...Ftn,...r};const t=r.stacked,[n,i]=Ct.useState(!0),a=Ct.useRef(null),{getToastToRender:o,isToastActive:s,count:l}=Ptn(e),{className:c,style:u,rtl:f,containerId:h}=e;function v(E){const S=ub("Toastify__toast-container",`Toastify__toast-container--${E}`,{"Toastify__toast-container--rtl":f});return J3(c)?c({position:E,rtl:f,defaultClassName:S}):ub(S,BU(c))}function x(){t&&(i(!0),W9.play())}return Otn(()=>{if(t){var E;const S=a.current.querySelectorAll('[data-in="true"]'),b=12,C=(E=e.position)==null?void 0:E.includes("top");let N=0,U=0;Array.from(S).reverse().forEach((G,Z)=>{const $=G;$.classList.add("Toastify__toast--stacked"),Z>0&&($.dataset.collapsed=`${n}`),$.dataset.pos||($.dataset.pos=C?"top":"bot");const te=N*(n?.2:1)+(n?0:b*Z);$.style.setProperty("--y",`${C?te:-1*te}px`),$.style.setProperty("--g",`${b}`),$.style.setProperty("--s",""+(1-(n?U:0))),N+=$.offsetHeight,U+=.025})}},[n,l,t]),od.createElement("div",{ref:a,className:"Toastify",id:h,onMouseEnter:()=>{t&&(i(!1),W9.pause())},onMouseLeave:x},o((E,S)=>{const b=S.length?{...u}:{...u,pointerEvents:"none"};return od.createElement("div",{className:v(E),style:b,key:`container-${E}`},S.map(C=>{let{content:N,props:U}=C;return od.createElement(Utn,{...U,stacked:t,collapseAll:x,isIn:s(U.toastId,U.containerId),style:U.style,key:`toast-${U.key}`},N)}))}))}function Btn(){var r=':root{--toastify-color-light:#fff;--toastify-color-dark:#121212;--toastify-color-info:#3498db;--toastify-color-success:#07bc0c;--toastify-color-warning:#f1c40f;--toastify-color-error:#e74c3c;--toastify-color-transparent:hsla(0,0%,100%,.7);--toastify-icon-color-info:var(--toastify-color-info);--toastify-icon-color-success:var(--toastify-color-success);--toastify-icon-color-warning:var(--toastify-color-warning);--toastify-icon-color-error:var(--toastify-color-error);--toastify-toast-width:320px;--toastify-toast-offset:16px;--toastify-toast-top:max(var(--toastify-toast-offset),env(safe-area-inset-top));--toastify-toast-right:max(var(--toastify-toast-offset),env(safe-area-inset-right));--toastify-toast-left:max(var(--toastify-toast-offset),env(safe-area-inset-left));--toastify-toast-bottom:max(var(--toastify-toast-offset),env(safe-area-inset-bottom));--toastify-toast-background:#fff;--toastify-toast-min-height:64px;--toastify-toast-max-height:800px;--toastify-toast-bd-radius:6px;--toastify-font-family:sans-serif;--toastify-z-index:9999;--toastify-text-color-light:#757575;--toastify-text-color-dark:#fff;--toastify-text-color-info:#fff;--toastify-text-color-success:#fff;--toastify-text-color-warning:#fff;--toastify-text-color-error:#fff;--toastify-spinner-color:#616161;--toastify-spinner-color-empty-area:#e0e0e0;--toastify-color-progress-light:linear-gradient(90deg,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55);--toastify-color-progress-dark:#bb86fc;--toastify-color-progress-info:var(--toastify-color-info);--toastify-color-progress-success:var(--toastify-color-success);--toastify-color-progress-warning:var(--toastify-color-warning);--toastify-color-progress-error:var(--toastify-color-error);--toastify-color-progress-bgo:0.2}.Toastify__toast-container{z-index:var(--toastify-z-index);-webkit-transform:translateZ(var(--toastify-z-index));position:fixed;padding:4px;width:var(--toastify-toast-width);box-sizing:border-box;color:#fff}.Toastify__toast-container--top-left{top:var(--toastify-toast-top);left:var(--toastify-toast-left)}.Toastify__toast-container--top-center{top:var(--toastify-toast-top);left:50%;transform:translateX(-50%)}.Toastify__toast-container--top-right{top:var(--toastify-toast-top);right:var(--toastify-toast-right)}.Toastify__toast-container--bottom-left{bottom:var(--toastify-toast-bottom);left:var(--toastify-toast-left)}.Toastify__toast-container--bottom-center{bottom:var(--toastify-toast-bottom);left:50%;transform:translateX(-50%)}.Toastify__toast-container--bottom-right{bottom:var(--toastify-toast-bottom);right:var(--toastify-toast-right)}@media only screen and (max-width:480px){.Toastify__toast-container{width:100vw;padding:0;left:env(safe-area-inset-left);margin:0}.Toastify__toast-container--top-center,.Toastify__toast-container--top-left,.Toastify__toast-container--top-right{top:env(safe-area-inset-top);transform:translateX(0)}.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-right{bottom:env(safe-area-inset-bottom);transform:translateX(0)}.Toastify__toast-container--rtl{right:env(safe-area-inset-right);left:auto}}.Toastify__toast{--y:0;position:relative;-ms-touch-action:none;touch-action:none;min-height:var(--toastify-toast-min-height);box-sizing:border-box;margin-bottom:1rem;padding:8px;border-radius:var(--toastify-toast-bd-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;max-height:var(--toastify-toast-max-height);font-family:var(--toastify-font-family);cursor:default;direction:ltr;z-index:0;overflow:hidden}.Toastify__toast--stacked{position:absolute;width:100%;transform:translate3d(0,var(--y),0) scale(var(--s));transition:transform .3s}.Toastify__toast--stacked[data-collapsed] .Toastify__close-button,.Toastify__toast--stacked[data-collapsed] .Toastify__toast-body{transition:opacity .1s}.Toastify__toast--stacked[data-collapsed=false]{overflow:visible}.Toastify__toast--stacked[data-collapsed=true]:not(:last-child)>*{opacity:0}.Toastify__toast--stacked:after{content:"";position:absolute;left:0;right:0;height:calc(var(--g) * 1px);bottom:100%}.Toastify__toast--stacked[data-pos=top]{top:0}.Toastify__toast--stacked[data-pos=bot]{bottom:0}.Toastify__toast--stacked[data-pos=bot].Toastify__toast--stacked:before{transform-origin:top}.Toastify__toast--stacked[data-pos=top].Toastify__toast--stacked:before{transform-origin:bottom}.Toastify__toast--stacked:before{content:"";position:absolute;left:0;right:0;bottom:0;height:100%;transform:scaleY(3);z-index:-1}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--close-on-click{cursor:pointer}.Toastify__toast-body{margin:auto 0;-ms-flex:1 1 auto;flex:1 1 auto;padding:6px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.Toastify__toast-body>div:last-child{word-break:break-word;-ms-flex:1;flex:1}.Toastify__toast-icon{-webkit-margin-end:10px;margin-inline-end:10px;width:20px;-ms-flex-negative:0;flex-shrink:0;display:-ms-flexbox;display:flex}.Toastify--animate{animation-fill-mode:both;animation-duration:.5s}.Toastify--animate-icon{animation-fill-mode:both;animation-duration:.3s}@media only screen and (max-width:480px){.Toastify__toast{margin-bottom:0;border-radius:0}}.Toastify__toast-theme--dark{background:var(--toastify-color-dark);color:var(--toastify-text-color-dark)}.Toastify__toast-theme--colored.Toastify__toast--default,.Toastify__toast-theme--light{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{color:var(--toastify-text-color-info);background:var(--toastify-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{color:var(--toastify-text-color-success);background:var(--toastify-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{color:var(--toastify-text-color-warning);background:var(--toastify-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{color:var(--toastify-text-color-error);background:var(--toastify-color-error)}.Toastify__progress-bar-theme--light{background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning{background:var(--toastify-color-transparent)}.Toastify__close-button{color:#fff;background:transparent;outline:none;border:none;padding:0;cursor:pointer;opacity:.7;transition:.3s ease;-ms-flex-item-align:start;align-self:flex-start;z-index:1}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:focus,.Toastify__close-button:hover{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:100%;z-index:var(--toastify-z-index);opacity:.7;transform-origin:left;border-bottom-left-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{right:0;left:auto;transform-origin:right;border-bottom-left-radius:0;border-bottom-right-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--wrp{position:absolute;bottom:0;left:0;width:100%;height:5px;border-bottom-left-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--wrp[data-hidden=true]{opacity:0}.Toastify__progress-bar--bg{opacity:var(--toastify-color-progress-bgo);width:100%;height:100%}.Toastify__spinner{width:20px;height:20px;box-sizing:border-box;border:2px solid;border-radius:100%;border-color:var(--toastify-spinner-color-empty-area);border-right-color:var(--toastify-spinner-color);animation:Toastify__spin .65s linear infinite}@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,var(--y),0)}to{opacity:0;transform:translate3d(2000px,var(--y),0)}}@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px,var(--y),0)}to{opacity:0;transform:translate3d(-2000px,var(--y),0)}}@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.Toastify__bounce-enter--bottom-left,.Toastify__bounce-enter--top-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--bottom-right,.Toastify__bounce-enter--top-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--bottom-left,.Toastify__bounce-exit--top-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--bottom-right,.Toastify__bounce-exit--top-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;transform:translate3d(0,var(--y),0) scale3d(.3,.3,.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{0%{transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{0%{transform:translate3d(0,var(--y),0) perspective(400px)}30%{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(-20deg);opacity:1}to{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(90deg);opacity:0}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{0%{transform:translate3d(110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInLeft{0%{transform:translate3d(-110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInUp{0%{transform:translate3d(0,110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInDown{0%{transform:translate3d(0,-110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideOutRight{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(110%,var(--y),0)}}@keyframes Toastify__slideOutLeft{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(-110%,var(--y),0)}}@keyframes Toastify__slideOutDown{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,500px,0)}}@keyframes Toastify__slideOutUp{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,-500px,0)}}.Toastify__slide-enter--bottom-left,.Toastify__slide-enter--top-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--bottom-right,.Toastify__slide-enter--top-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--bottom-left,.Toastify__slide-exit--top-left{animation-name:Toastify__slideOutLeft;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--bottom-right,.Toastify__slide-exit--top-right{animation-name:Toastify__slideOutRight;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-center{animation-name:Toastify__slideOutUp;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--bottom-center{animation-name:Toastify__slideOutDown;animation-timing-function:ease-in;animation-duration:.3s}@keyframes Toastify__spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}',e=document.createElement("style");e.innerText=r,document.head.appendChild(e)}var Z0e,OQe;function jtn(){if(OQe)return Z0e;OQe=1;var r=Object.defineProperty,e=Object.getOwnPropertyDescriptor,t=Object.getOwnPropertyNames,n=Object.prototype.hasOwnProperty,i=(S,b)=>{for(var C in b)r(S,C,{get:b[C],enumerable:!0})},a=(S,b,C,N)=>{if(b&&typeof b=="object"||typeof b=="function")for(let U of t(b))!n.call(S,U)&&U!==C&&r(S,U,{get:()=>b[U],enumerable:!(N=e(b,U))||N.enumerable});return S},o=S=>a(r({},"__esModule",{value:!0}),S),s={};i(s,{SuperGrid:()=>E,toMMSI:()=>x,toMeterSI:()=>v}),Z0e=o(s);var l=Jx(),c=YV,u=cme(),f=(S,b,C)=>{const N=[];if(b<S)for(let U=S;U>=b;U-=Math.abs(C))N.push(U);else for(let U=S;U<=b;U+=Math.abs(C))N.push(U);return N};function h(S,b){return{x:Math.round(b.x/S)*S,y:Math.round(b.y/S)*S}}function v(S,b=1){return S<0?"-"+v(-S):S<1e-6?"0m":S>1e3?Math.floor(S/1e3)+"km":S>1&&b>1?Math.round(S)+"m":S>1&&b<=1?S.toFixed(Math.ceil(-Math.log10(b)))+"m":S<1&&b>=1/1e3?Math.round(S*1e3)+"mm":S<1&&b<1/1e3?(S*1e3).toFixed(Math.ceil(-Math.log10(b*1e3)))+"mm":""}function x(S,b=1){return v(S/1e3,b/1e3)}var E=S=>{var b;const C=(0,l.useRef)(null),[N,U]=(0,l.useState)({x:0,y:0}),{majorColor:G="rgba(0,0,0,0.2)",minorColor:Z="rgba(0,0,0,0.1)",textColor:$=(b=S.majorColor)!=null?b:"rgba(0,0,0,0.5)",width:te,height:re,screenSpaceCellSize:se=200,stringifyCoord:fe=(Re,Te,Ce)=>`${v(Re,Ce)}, ${v(Te,Ce)}`}=S,de=Math.ceil(te/se)+2,ye=Math.ceil(re/se)+2;(0,l.useEffect)(()=>{if(!C.current)return;const Re=C.current.getContext("2d");if(!Re)return;const Te=se/10**Math.floor(Math.log10(S.transform.a)),Ce=S.transform.d<0?-1:1,Fe=se/10**Math.log10(S.transform.a)/Te;function Ie(Dn,un,pn){const yn=Dn;let Gt,vr,ir;for(Gt=un.x;Gt<=pn.x;Gt+=yn)vr=(0,c.applyToPoint)(S.transform,{x:Gt,y:un.y}),ir=(0,c.applyToPoint)(S.transform,{x:Gt,y:pn.y}),Re.beginPath(),Re.moveTo(vr.x,vr.y),Re.lineTo(ir.x,ir.y),Re.stroke();const on=f(un.y,pn.y,yn*Ce);for(const sr of on)vr=(0,c.applyToPoint)(S.transform,{x:un.x,y:sr}),ir=(0,c.applyToPoint)(S.transform,{x:pn.x,y:sr}),Re.beginPath(),Re.moveTo(vr.x,vr.y),Re.lineTo(ir.x,ir.y),Re.stroke()}function ke(Dn,un,pn){const yn=Dn;let Gt;for(Gt=un.x;Gt<=pn.x;Gt+=yn)for(const vr of f(un.y,pn.y,yn*Ce)){const ir=(0,c.applyToPoint)(S.transform,{x:Gt,y:vr});Re.fillStyle=$,Re.font="12px sans-serif",Re.fillText(fe(Gt,vr,Dn),ir.x+2,ir.y-2)}}Re.clearRect(0,0,te,re);const Ee=(0,c.applyToPoint)((0,c.inverse)(S.transform),{x:0,y:0}),$e={x:Math.floor((Ee.x-Te)/Te)*Te,y:Math.floor((Ee.y-Te)/Te+(Ce==-1?2:0))*Te},tt={x:$e.x+Te*de,y:$e.y+Te*ye*Ce},gt=Te*5,dt={x:Math.floor((Ee.x-gt)/gt)*gt,y:Math.floor((Ee.y-gt)/gt+(Ce==-1?2:0))*gt},kt={x:dt.x+gt*de,y:dt.y+gt*ye*Ce};Re.globalAlpha=1,Re.strokeStyle=G,Ie(Te,$e,tt),ke(gt,dt,kt),Re.globalAlpha=1-Fe,Ie(gt/10,dt,kt),Re.globalAlpha=1-Fe,Re.strokeStyle=Z,Ie(Te/10,$e,tt),Re.globalAlpha=Math.max(((1-Fe)*10-5)/5,0),ke(gt/10,dt,kt),Re.globalAlpha=1;const qt=(0,c.applyToPoint)(S.transform,N);Re.font="12px sans-serif",Re.fillStyle=$,Re.fillText(fe(N.x,N.y,Te),qt.x+2,qt.y-2),Re.strokeStyle=G,Re.strokeRect(qt.x-5,qt.y-5,10,10)},[C,S.transform,N,te,re]);const Se=Re=>{if(!C.current)return;const Te=se/10/10**Math.floor(Math.log10(S.transform.a)),Ce=C.current.getBoundingClientRect(),Me=(0,c.applyToPoint)((0,c.inverse)(S.transform),{x:Re.clientX-Ce.left,y:Re.clientY-Ce.top}),Fe=h(Te,Me);U(Fe)};return(0,u.jsx)("canvas",{onMouseUp:Re=>{Re.button===1&&Se(Re)},onDoubleClick:Se,ref:C,width:S.width,height:S.height})};return Z0e}var Q0e=jtn();function Vtn(r,e,t){const n=(t.x-e.x)**2+(t.y-e.y)**2;if(n===0)return UQe(r,e);let i=((r.x-e.x)*(t.x-e.x)+(r.y-e.y)*(t.y-e.y))/n;i=Math.max(0,Math.min(1,i));const a={x:e.x+i*(t.x-e.x),y:e.y+i*(t.y-e.y)};return UQe(r,a)}function UQe(r,e){const t=r.x-e.x,n=r.y-e.y;return Math.sqrt(t*t+n*n)}var Htn=!1;function qtn(r){if(r.sheet)return r.sheet;for(var e=0;e<document.styleSheets.length;e++)if(document.styleSheets[e].ownerNode===r)return document.styleSheets[e]}function $tn(r){var e=document.createElement("style");return e.setAttribute("data-emotion",r.key),r.nonce!==void 0&&e.setAttribute("nonce",r.nonce),e.appendChild(document.createTextNode("")),e.setAttribute("data-s",""),e}var Gtn=function(){function r(t){var n=this;this._insertTag=function(i){var a;n.tags.length===0?n.insertionPoint?a=n.insertionPoint.nextSibling:n.prepend?a=n.container.firstChild:a=n.before:a=n.tags[n.tags.length-1].nextSibling,n.container.insertBefore(i,a),n.tags.push(i)},this.isSpeedy=t.speedy===void 0?!Htn:t.speedy,this.tags=[],this.ctr=0,this.nonce=t.nonce,this.key=t.key,this.container=t.container,this.prepend=t.prepend,this.insertionPoint=t.insertionPoint,this.before=null}var e=r.prototype;return e.hydrate=function(n){n.forEach(this._insertTag)},e.insert=function(n){this.ctr%(this.isSpeedy?65e3:1)===0&&this._insertTag($tn(this));var i=this.tags[this.tags.length-1];if(this.isSpeedy){var a=qtn(i);try{a.insertRule(n,a.cssRules.length)}catch{}}else i.appendChild(document.createTextNode(n));this.ctr++},e.flush=function(){this.tags.forEach(function(n){var i;return(i=n.parentNode)==null?void 0:i.removeChild(n)}),this.tags=[],this.ctr=0},r}(),U5="-ms-",GU="-moz-",Nv="-webkit-",kQe="comm",K0e="rule",J0e="decl",Ytn="@import",FQe="@keyframes",Xtn="@layer",Wtn=Math.abs,YU=String.fromCharCode,Ztn=Object.assign;function Qtn(r,e){return a5(r,0)^45?(((e<<2^a5(r,0))<<2^a5(r,1))<<2^a5(r,2))<<2^a5(r,3):0}function IQe(r){return r.trim()}function Ktn(r,e){return(r=e.exec(r))?r[0]:r}function Lv(r,e,t){return r.replace(e,t)}function efe(r,e){return r.indexOf(e)}function a5(r,e){return r.charCodeAt(e)|0}function hR(r,e,t){return r.slice(e,t)}function zb(r){return r.length}function tfe(r){return r.length}function XU(r,e){return e.push(r),r}function Jtn(r,e){return r.map(e).join("")}var WU=1,bw=1,BQe=0,z3=0,Mx=0,Sw="";function ZU(r,e,t,n,i,a,o){return{value:r,root:e,parent:t,type:n,props:i,children:a,line:WU,column:bw,length:o,return:""}}function mR(r,e){return Ztn(ZU("",null,null,"",null,null,0),r,{length:-r.length},e)}function enn(){return Mx}function tnn(){return Mx=z3>0?a5(Sw,--z3):0,bw--,Mx===10&&(bw=1,WU--),Mx}function e4(){return Mx=z3<BQe?a5(Sw,z3++):0,bw++,Mx===10&&(bw=1,WU++),Mx}function Ob(){return a5(Sw,z3)}function QU(){return z3}function vR(r,e){return hR(Sw,r,e)}function yR(r){switch(r){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function jQe(r){return WU=bw=1,BQe=zb(Sw=r),z3=0,[]}function VQe(r){return Sw="",r}function KU(r){return IQe(vR(z3-1,nfe(r===91?r+2:r===40?r+1:r)))}function nnn(r){for(;(Mx=Ob())&&Mx<33;)e4();return yR(r)>2||yR(Mx)>3?"":" "}function rnn(r,e){for(;--e&&e4()&&!(Mx<48||Mx>102||Mx>57&&Mx<65||Mx>70&&Mx<97););return vR(r,QU()+(e<6&&Ob()==32&&e4()==32))}function nfe(r){for(;e4();)switch(Mx){case r:return z3;case 34:case 39:r!==34&&r!==39&&nfe(Mx);break;case 40:r===41&&nfe(r);break;case 92:e4();break}return z3}function inn(r,e){for(;e4()&&r+Mx!==57;)if(r+Mx===84&&Ob()===47)break;return"/*"+vR(e,z3-1)+"*"+YU(r===47?r:e4())}function ann(r){for(;!yR(Ob());)e4();return vR(r,z3)}function onn(r){return VQe(JU("",null,null,null,[""],r=jQe(r),0,[0],r))}function JU(r,e,t,n,i,a,o,s,l){for(var c=0,u=0,f=o,h=0,v=0,x=0,E=1,S=1,b=1,C=0,N="",U=i,G=a,Z=n,$=N;S;)switch(x=C,C=e4()){case 40:if(x!=108&&a5($,f-1)==58){efe($+=Lv(KU(C),"&","&\f"),"&\f")!=-1&&(b=-1);break}case 34:case 39:case 91:$+=KU(C);break;case 9:case 10:case 13:case 32:$+=nnn(x);break;case 92:$+=rnn(QU()-1,7);continue;case 47:switch(Ob()){case 42:case 47:XU(snn(inn(e4(),QU()),e,t),l);break;default:$+="/"}break;case 123*E:s[c++]=zb($)*b;case 125*E:case 59:case 0:switch(C){case 0:case 125:S=0;case 59+u:b==-1&&($=Lv($,/\f/g,"")),v>0&&zb($)-f&&XU(v>32?qQe($+";",n,t,f-1):qQe(Lv($," ","")+";",n,t,f-2),l);break;case 59:$+=";";default:if(XU(Z=HQe($,e,t,c,u,i,s,N,U=[],G=[],f),a),C===123)if(u===0)JU($,e,Z,Z,U,a,f,s,G);else switch(h===99&&a5($,3)===110?100:h){case 100:case 108:case 109:case 115:JU(r,Z,Z,n&&XU(HQe(r,Z,Z,0,0,i,s,N,i,U=[],f),G),i,G,f,s,n?U:G);break;default:JU($,Z,Z,Z,[""],G,0,s,G)}}c=u=v=0,E=b=1,N=$="",f=o;break;case 58:f=1+zb($),v=x;default:if(E<1){if(C==123)--E;else if(C==125&&E++==0&&tnn()==125)continue}switch($+=YU(C),C*E){case 38:b=u>0?1:($+="\f",-1);break;case 44:s[c++]=(zb($)-1)*b,b=1;break;case 64:Ob()===45&&($+=KU(e4())),h=Ob(),u=f=zb(N=$+=ann(QU())),C++;break;case 45:x===45&&zb($)==2&&(E=0)}}return a}function HQe(r,e,t,n,i,a,o,s,l,c,u){for(var f=i-1,h=i===0?a:[""],v=tfe(h),x=0,E=0,S=0;x<n;++x)for(var b=0,C=hR(r,f+1,f=Wtn(E=o[x])),N=r;b<v;++b)(N=IQe(E>0?h[b]+" "+C:Lv(C,/&\f/g,h[b])))&&(l[S++]=N);return ZU(r,e,t,i===0?K0e:s,l,c,u)}function snn(r,e,t){return ZU(r,e,t,kQe,YU(enn()),hR(r,2,-2),0)}function qQe(r,e,t,n){return ZU(r,e,t,J0e,hR(r,0,n),hR(r,n+1,-1),n)}function Ew(r,e){for(var t="",n=tfe(r),i=0;i<n;i++)t+=e(r[i],i,r,e)||"";return t}function lnn(r,e,t,n){switch(r.type){case Xtn:if(r.children.length)break;case Ytn:case J0e:return r.return=r.return||r.value;case kQe:return"";case FQe:return r.return=r.value+"{"+Ew(r.children,n)+"}";case K0e:r.value=r.props.join(",")}return zb(t=Ew(r.children,n))?r.return=r.value+"{"+t+"}":""}function cnn(r){var e=tfe(r);return function(t,n,i,a){for(var o="",s=0;s<e;s++)o+=r[s](t,n,i,a)||"";return o}}function unn(r){return function(e){e.root||(e=e.return)&&r(e)}}function fnn(r){var e=Object.create(null);return function(t){return e[t]===void 0&&(e[t]=r(t)),e[t]}}var dnn=function(e,t,n){for(var i=0,a=0;i=a,a=Ob(),i===38&&a===12&&(t[n]=1),!yR(a);)e4();return vR(e,z3)},pnn=function(e,t){var n=-1,i=44;do switch(yR(i)){case 0:i===38&&Ob()===12&&(t[n]=1),e[n]+=dnn(z3-1,t,n);break;case 2:e[n]+=KU(i);break;case 4:if(i===44){e[++n]=Ob()===58?"&\f":"",t[n]=e[n].length;break}default:e[n]+=YU(i)}while(i=e4());return e},hnn=function(e,t){return VQe(pnn(jQe(e),t))},$Qe=new WeakMap,mnn=function(e){if(!(e.type!=="rule"||!e.parent||e.length<1)){for(var t=e.value,n=e.parent,i=e.column===n.column&&e.line===n.line;n.type!=="rule";)if(n=n.parent,!n)return;if(!(e.props.length===1&&t.charCodeAt(0)!==58&&!$Qe.get(n))&&!i){$Qe.set(e,!0);for(var a=[],o=hnn(t,a),s=n.props,l=0,c=0;l<o.length;l++)for(var u=0;u<s.length;u++,c++)e.props[c]=a[l]?o[l].replace(/&\f/g,s[u]):s[u]+" "+o[l]}}},vnn=function(e){if(e.type==="decl"){var t=e.value;t.charCodeAt(0)===108&&t.charCodeAt(2)===98&&(e.return="",e.value="")}};function GQe(r,e){switch(Qtn(r,e)){case 5103:return Nv+"print-"+r+r;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return Nv+r+r;case 5349:case 4246:case 4810:case 6968:case 2756:return Nv+r+GU+r+U5+r+r;case 6828:case 4268:return Nv+r+U5+r+r;case 6165:return Nv+r+U5+"flex-"+r+r;case 5187:return Nv+r+Lv(r,/(\w+).+(:[^]+)/,Nv+"box-$1$2"+U5+"flex-$1$2")+r;case 5443:return Nv+r+U5+"flex-item-"+Lv(r,/flex-|-self/,"")+r;case 4675:return Nv+r+U5+"flex-line-pack"+Lv(r,/align-content|flex-|-self/,"")+r;case 5548:return Nv+r+U5+Lv(r,"shrink","negative")+r;case 5292:return Nv+r+U5+Lv(r,"basis","preferred-size")+r;case 6060:return Nv+"box-"+Lv(r,"-grow","")+Nv+r+U5+Lv(r,"grow","positive")+r;case 4554:return Nv+Lv(r,/([^-])(transform)/g,"$1"+Nv+"$2")+r;case 6187:return Lv(Lv(Lv(r,/(zoom-|grab)/,Nv+"$1"),/(image-set)/,Nv+"$1"),r,"")+r;case 5495:case 3959:return Lv(r,/(image-set\([^]*)/,Nv+"$1$`$1");case 4968:return Lv(Lv(r,/(.+:)(flex-)?(.*)/,Nv+"box-pack:$3"+U5+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+Nv+r+r;case 4095:case 3583:case 4068:case 2532:return Lv(r,/(.+)-inline(.+)/,Nv+"$1$2")+r;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(zb(r)-1-e>6)switch(a5(r,e+1)){case 109:if(a5(r,e+4)!==45)break;case 102:return Lv(r,/(.+:)(.+)-([^]+)/,"$1"+Nv+"$2-$3$1"+GU+(a5(r,e+3)==108?"$3":"$2-$3"))+r;case 115:return~efe(r,"stretch")?GQe(Lv(r,"stretch","fill-available"),e)+r:r}break;case 4949:if(a5(r,e+1)!==115)break;case 6444:switch(a5(r,zb(r)-3-(~efe(r,"!important")&&10))){case 107:return Lv(r,":",":"+Nv)+r;case 101:return Lv(r,/(.+:)([^;!]+)(;|!.+)?/,"$1"+Nv+(a5(r,14)===45?"inline-":"")+"box$3$1"+Nv+"$2$3$1"+U5+"$2box$3")+r}break;case 5936:switch(a5(r,e+11)){case 114:return Nv+r+U5+Lv(r,/[svh]\w+-[tblr]{2}/,"tb")+r;case 108:return Nv+r+U5+Lv(r,/[svh]\w+-[tblr]{2}/,"tb-rl")+r;case 45:return Nv+r+U5+Lv(r,/[svh]\w+-[tblr]{2}/,"lr")+r}return Nv+r+U5+r+r}return r}var ynn=function(e,t,n,i){if(e.length>-1&&!e.return)switch(e.type){case J0e:e.return=GQe(e.value,e.length);break;case FQe:return Ew([mR(e,{value:Lv(e.value,"@","@"+Nv)})],i);case K0e:if(e.length)return Jtn(e.props,function(a){switch(Ktn(a,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return Ew([mR(e,{props:[Lv(a,/:(read-\w+)/,":"+GU+"$1")]})],i);case"::placeholder":return Ew([mR(e,{props:[Lv(a,/:(plac\w+)/,":"+Nv+"input-$1")]}),mR(e,{props:[Lv(a,/:(plac\w+)/,":"+GU+"$1")]}),mR(e,{props:[Lv(a,/:(plac\w+)/,U5+"input-$1")]})],i)}return""})}},gnn=[ynn],_nn=function(e){var t=e.key;if(t==="css"){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,function(E){var S=E.getAttribute("data-emotion");S.indexOf(" ")!==-1&&(document.head.appendChild(E),E.setAttribute("data-s",""))})}var i=e.stylisPlugins||gnn,a={},o,s=[];o=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),function(E){for(var S=E.getAttribute("data-emotion").split(" "),b=1;b<S.length;b++)a[S[b]]=!0;s.push(E)});var l,c=[mnn,vnn];{var u,f=[lnn,unn(function(E){u.insert(E)})],h=cnn(c.concat(i,f)),v=function(S){return Ew(onn(S),h)};l=function(S,b,C,N){u=C,v(S?S+"{"+b.styles+"}":b.styles),N&&(x.inserted[b.name]=!0)}}var x={key:t,sheet:new Gtn({key:t,container:o,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:a,registered:{},insert:l};return x.sheet.hydrate(s),x};function xnn(r){for(var e=0,t,n=0,i=r.length;i>=4;++n,i-=4)t=r.charCodeAt(n)&255|(r.charCodeAt(++n)&255)<<8|(r.charCodeAt(++n)&255)<<16|(r.charCodeAt(++n)&255)<<24,t=(t&65535)*1540483477+((t>>>16)*59797<<16),t^=t>>>24,e=(t&65535)*1540483477+((t>>>16)*59797<<16)^(e&65535)*1540483477+((e>>>16)*59797<<16);switch(i){case 3:e^=(r.charCodeAt(n+2)&255)<<16;case 2:e^=(r.charCodeAt(n+1)&255)<<8;case 1:e^=r.charCodeAt(n)&255,e=(e&65535)*1540483477+((e>>>16)*59797<<16)}return e^=e>>>13,e=(e&65535)*1540483477+((e>>>16)*59797<<16),((e^e>>>15)>>>0).toString(36)}var bnn={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},Snn=!1,Enn=/[A-Z]|^ms/g,wnn=/_EMO_([^_]+?)_([^]*?)_EMO_/g,YQe=function(e){return e.charCodeAt(1)===45},XQe=function(e){return e!=null&&typeof e!="boolean"},rfe=fnn(function(r){return YQe(r)?r:r.replace(Enn,"-$&").toLowerCase()}),WQe=function(e,t){switch(e){case"animation":case"animationName":if(typeof t=="string")return t.replace(wnn,function(n,i,a){return E8={name:i,styles:a,next:E8},i})}return bnn[e]!==1&&!YQe(e)&&typeof t=="number"&&t!==0?t+"px":t},Tnn="Component selectors can only be used in conjunction with @emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware compiler transform.";function ek(r,e,t){if(t==null)return"";var n=t;if(n.__emotion_styles!==void 0)return n;switch(typeof t){case"boolean":return"";case"object":{var i=t;if(i.anim===1)return E8={name:i.name,styles:i.styles,next:E8},i.name;var a=t;if(a.styles!==void 0){var o=a.next;if(o!==void 0)for(;o!==void 0;)E8={name:o.name,styles:o.styles,next:E8},o=o.next;var s=a.styles+";";return s}return Mnn(r,e,t)}}var l=t;if(e==null)return l;var c=e[l];return c!==void 0?c:l}function Mnn(r,e,t){var n="";if(Array.isArray(t))for(var i=0;i<t.length;i++)n+=ek(r,e,t[i])+";";else for(var a in t){var o=t[a];if(typeof o!="object"){var s=o;e!=null&&e[s]!==void 0?n+=a+"{"+e[s]+"}":XQe(s)&&(n+=rfe(a)+":"+WQe(a,s)+";")}else{if(a==="NO_COMPONENT_SELECTOR"&&Snn)throw new Error(Tnn);if(Array.isArray(o)&&typeof o[0]=="string"&&(e==null||e[o[0]]===void 0))for(var l=0;l<o.length;l++)XQe(o[l])&&(n+=rfe(a)+":"+WQe(a,o[l])+";");else{var c=ek(r,e,o);switch(a){case"animation":case"animationName":{n+=rfe(a)+":"+c+";";break}default:n+=a+"{"+c+"}"}}}}return n}var ZQe=/label:\s*([^\s;{]+)\s*(;|$)/g,E8;function ife(r,e,t){if(r.length===1&&typeof r[0]=="object"&&r[0]!==null&&r[0].styles!==void 0)return r[0];var n=!0,i="";E8=void 0;var a=r[0];if(a==null||a.raw===void 0)n=!1,i+=ek(t,e,a);else{var o=a;i+=o[0]}for(var s=1;s<r.length;s++)if(i+=ek(t,e,r[s]),n){var l=a;i+=l[s]}ZQe.lastIndex=0;for(var c="",u;(u=ZQe.exec(i))!==null;)c+="-"+u[1];var f=xnn(i)+c;return{name:f,styles:i,next:E8}}function QQe(r,e,t){var n="";return t.split(" ").forEach(function(i){r[i]!==void 0?e.push(r[i]+";"):i&&(n+=i+" ")}),n}var Cnn=function(e,t,n){var i=e.key+"-"+t.name;e.registered[i]===void 0&&(e.registered[i]=t.styles)},Rnn=function(e,t,n){Cnn(e,t);var i=e.key+"-"+t.name;if(e.inserted[t.name]===void 0){var a=t;do e.insert(t===a?"."+i:"",a,e.sheet,!0),a=a.next;while(a!==void 0)}};function KQe(r,e){if(r.inserted[e.name]===void 0)return r.insert("",e,r.sheet,!0)}function JQe(r,e,t){var n=[],i=QQe(r,n,t);return n.length<2?t:i+e(n)}var Ann=function(e){var t=_nn(e);t.sheet.speedy=function(s){this.isSpeedy=s},t.compat=!0;var n=function(){for(var l=arguments.length,c=new Array(l),u=0;u<l;u++)c[u]=arguments[u];var f=ife(c,t.registered,void 0);return Rnn(t,f),t.key+"-"+f.name},i=function(){for(var l=arguments.length,c=new Array(l),u=0;u<l;u++)c[u]=arguments[u];var f=ife(c,t.registered),h="animation-"+f.name;return KQe(t,{name:f.name,styles:"@keyframes "+h+"{"+f.styles+"}"}),h},a=function(){for(var l=arguments.length,c=new Array(l),u=0;u<l;u++)c[u]=arguments[u];var f=ife(c,t.registered);KQe(t,f)},o=function(){for(var l=arguments.length,c=new Array(l),u=0;u<l;u++)c[u]=arguments[u];return JQe(t.registered,n,Pnn(c))};return{css:n,cx:o,injectGlobal:a,keyframes:i,hydrate:function(l){l.forEach(function(c){t.inserted[c]=!0})},flush:function(){t.registered={},t.inserted={},t.sheet.flush()},sheet:t.sheet,cache:t,getRegisteredStyles:QQe.bind(null,t.registered),merge:JQe.bind(null,t.registered,n)}},Pnn=function r(e){for(var t="",n=0;n<e.length;n++){var i=e[n];if(i!=null){var a=void 0;switch(typeof i){case"boolean":break;case"object":{if(Array.isArray(i))a=r(i);else{a="";for(var o in i)i[o]&&o&&(a&&(a+=" "),a+=o)}break}default:a=i}a&&(t&&(t+=" "),t+=a)}}return t},Dnn=Ann({key:"css"}),ww=Dnn.css;function Nnn(r){const e=new Map;let t=0;function n(i){for(const[,o]of e)if(o.has(i))return o;const a=new Set;return e.set(`connectivity_net${t++}`,a),a}for(const i of r){let a=null;for(const o of i){if(!a)a=n(o);else if(!a.has(o)){const s=n(o);if(s!==a){for(const l of s)a.add(l);e.delete(Array.from(e.entries()).find(([,l])=>l===s)[0])}}a.add(o)}}return Object.fromEntries(Array.from(e.entries()).map(([i,a])=>[i,Array.from(a)]))}var Lnn=class{constructor(r){rr(this,"netMap");rr(this,"idToNetMap");this.netMap=r,this.idToNetMap={};for(const[e,t]of Object.entries(r))for(const n of t)this.idToNetMap[n]=e}addConnections(r){for(const e of r){const t=new Set;for(const i of e){const a=this.idToNetMap[i];a&&t.add(a)}let n;if(t.size===0)n=`connectivity_net${Object.keys(this.netMap).length}`,this.netMap[n]=[];else if(t.size===1)n=t.values().next().value??`connectivity_net${Object.keys(this.netMap).length}`;else{n=t.values().next().value??`connectivity_net${Object.keys(this.netMap).length}`;for(const i of t)if(i!==n){this.netMap[n].push(...this.netMap[i]),this.netMap[i]=this.netMap[n];for(const a of this.netMap[n])this.idToNetMap[a]=n}}for(const i of e)this.netMap[n].includes(i)||this.netMap[n].push(i),this.idToNetMap[i]=n}}getIdsConnectedToNet(r){return this.netMap[r]||[]}getNetConnectedToId(r){return this.idToNetMap[r]}areIdsConnected(r,e){const t=this.getNetConnectedToId(r),n=this.getNetConnectedToId(e);return t===n||n===r||n===r}areAllIdsConnected(r){const e=this.getNetConnectedToId(r[0]);for(const t of r){const n=this.getNetConnectedToId(t);if(n===void 0||n!==e)return!1}return!0}},eKe=r=>{const e=[];for(const n of r)if(n.type==="source_trace")e.push([n.source_trace_id,...n.connected_source_port_ids??[],...n.connected_source_net_ids??[]].filter(Boolean));else if(n.type==="pcb_port"){const{pcb_port_id:i,source_port_id:a}=n;a&&i&&e.push([a,i])}else if(n.type==="pcb_smtpad"){const{pcb_smtpad_id:i,pcb_port_id:a}=n;a&&i&&e.push([i,a])}else if(n.type==="pcb_plated_hole"){const{pcb_plated_hole_id:i,pcb_port_id:a}=n;a&&i&&e.push([i,a])}else if(n.type==="pcb_trace"){const{pcb_trace_id:i,source_trace_id:a}=n;a&&i&&e.push([i,a])}const t=Nnn(e);return new Lnn(t)},znn=Object.defineProperty,Onn=(r,e)=>{for(var t in e)znn(r,t,{get:e[t],enumerable:!0})},tKe={};Onn(tKe,{all_layers:()=>pk,any_circuit_element:()=>CJe,any_soup_element:()=>RJe,any_source_component:()=>TKe,battery_capacity:()=>bKe,cad_component:()=>MJe,capacitance:()=>pfe,current:()=>Yrn,distance:()=>_c,frequency:()=>xKe,getZodPrefixedIdWithDefault:()=>vv,inductance:()=>_Ke,layer_ref:()=>s_,layer_string:()=>Pfe,length:()=>N_,pcb_board:()=>fJe,pcb_component:()=>ZKe,pcb_fabrication_note_path:()=>bJe,pcb_fabrication_note_text:()=>xJe,pcb_group:()=>TJe,pcb_hole:()=>JKe,pcb_hole_circle_or_square_shape:()=>Krn,pcb_hole_oval_shape:()=>Jrn,pcb_keepout:()=>SJe,pcb_manual_edit_conflict_error:()=>wJe,pcb_missing_footprint_error:()=>EJe,pcb_placement_error:()=>dJe,pcb_plated_hole:()=>eJe,pcb_port:()=>tJe,pcb_port_not_matched_error:()=>cJe,pcb_route_hint:()=>XKe,pcb_route_hints:()=>Qrn,pcb_silkscreen_circle:()=>gJe,pcb_silkscreen_line:()=>hJe,pcb_silkscreen_oval:()=>_Je,pcb_silkscreen_path:()=>mJe,pcb_silkscreen_rect:()=>yJe,pcb_silkscreen_text:()=>vJe,pcb_smtpad:()=>nJe,pcb_solder_paste:()=>rJe,pcb_text:()=>iJe,pcb_trace:()=>sJe,pcb_trace_error:()=>lJe,pcb_trace_hint:()=>pJe,pcb_trace_route_point:()=>lin,pcb_trace_route_point_via:()=>oJe,pcb_trace_route_point_wire:()=>aJe,pcb_via:()=>uJe,point:()=>vy,point3:()=>UR,port_arrangement:()=>OKe,position:()=>Wrn,position3:()=>Zrn,resistance:()=>ck,rotation:()=>uk,route_hint_point:()=>WKe,schematic_box:()=>PKe,schematic_component:()=>UKe,schematic_component_port_arrangement_by_sides:()=>zKe,schematic_component_port_arrangement_by_size:()=>LKe,schematic_debug_line:()=>qKe,schematic_debug_object:()=>GKe,schematic_debug_object_base:()=>dk,schematic_debug_point:()=>$Ke,schematic_debug_rect:()=>HKe,schematic_error:()=>VKe,schematic_line:()=>kKe,schematic_net_label:()=>jKe,schematic_path:()=>DKe,schematic_pin_styles:()=>NKe,schematic_port:()=>BKe,schematic_text:()=>IKe,schematic_trace:()=>FKe,schematic_voltage_probe:()=>YKe,size:()=>mfe,source_component_base:()=>o5,source_group:()=>RKe,source_led:()=>xfe,source_net:()=>AKe,source_port:()=>MKe,source_simple_battery:()=>Sfe,source_simple_bug:()=>gfe,source_simple_capacitor:()=>vfe,source_simple_chip:()=>_fe,source_simple_crystal:()=>wKe,source_simple_diode:()=>fk,source_simple_ground:()=>EKe,source_simple_inductor:()=>Efe,source_simple_mosfet:()=>Afe,source_simple_pin_header:()=>Mfe,source_simple_potentiometer:()=>Tfe,source_simple_power_source:()=>bfe,source_simple_push_button:()=>wfe,source_simple_resistor:()=>yfe,source_simple_resonator:()=>Cfe,source_simple_transistor:()=>Rfe,source_trace:()=>CKe,supplier_name:()=>SKe,time:()=>Xrn,visible_layer:()=>Dw,voltage:()=>hfe});var z1;(function(r){r.assertEqual=i=>i;function e(i){}r.assertIs=e;function t(i){throw new Error}r.assertNever=t,r.arrayToEnum=i=>{const a={};for(const o of i)a[o]=o;return a},r.getValidEnumValues=i=>{const a=r.objectKeys(i).filter(s=>typeof i[i[s]]!="number"),o={};for(const s of a)o[s]=i[s];return r.objectValues(o)},r.objectValues=i=>r.objectKeys(i).map(function(a){return i[a]}),r.objectKeys=typeof Object.keys=="function"?i=>Object.keys(i):i=>{const a=[];for(const o in i)Object.prototype.hasOwnProperty.call(i,o)&&a.push(o);return a},r.find=(i,a)=>{for(const o of i)if(a(o))return o},r.isInteger=typeof Number.isInteger=="function"?i=>Number.isInteger(i):i=>typeof i=="number"&&isFinite(i)&&Math.floor(i)===i;function n(i,a=" | "){return i.map(o=>typeof o=="string"?`'${o}'`:o).join(a)}r.joinValues=n,r.jsonStringifyReplacer=(i,a)=>typeof a=="bigint"?a.toString():a})(z1||(z1={}));var afe;(function(r){r.mergeShapes=(e,t)=>({...e,...t})})(afe||(afe={}));var Mc=z1.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),PS=r=>{switch(typeof r){case"undefined":return Mc.undefined;case"string":return Mc.string;case"number":return isNaN(r)?Mc.nan:Mc.number;case"boolean":return Mc.boolean;case"function":return Mc.function;case"bigint":return Mc.bigint;case"symbol":return Mc.symbol;case"object":return Array.isArray(r)?Mc.array:r===null?Mc.null:r.then&&typeof r.then=="function"&&r.catch&&typeof r.catch=="function"?Mc.promise:typeof Map<"u"&&r instanceof Map?Mc.map:typeof Set<"u"&&r instanceof Set?Mc.set:typeof Date<"u"&&r instanceof Date?Mc.date:Mc.object;default:return Mc.unknown}},ds=z1.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),Unn=r=>JSON.stringify(r,null,2).replace(/"([^"]+)":/g,"$1:"),Q4=class ult extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=n=>{this.issues=[...this.issues,n]},this.addIssues=(n=[])=>{this.issues=[...this.issues,...n]};const t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){const t=e||function(a){return a.message},n={_errors:[]},i=a=>{for(const o of a.issues)if(o.code==="invalid_union")o.unionErrors.map(i);else if(o.code==="invalid_return_type")i(o.returnTypeError);else if(o.code==="invalid_arguments")i(o.argumentsError);else if(o.path.length===0)n._errors.push(t(o));else{let s=n,l=0;for(;l<o.path.length;){const c=o.path[l];l===o.path.length-1?(s[c]=s[c]||{_errors:[]},s[c]._errors.push(t(o))):s[c]=s[c]||{_errors:[]},s=s[c],l++}}};return i(this),n}static assert(e){if(!(e instanceof ult))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,z1.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=t=>t.message){const t={},n=[];for(const i of this.issues)i.path.length>0?(t[i.path[0]]=t[i.path[0]]||[],t[i.path[0]].push(e(i))):n.push(e(i));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}};Q4.create=r=>new Q4(r);var Tw=(r,e)=>{let t;switch(r.code){case ds.invalid_type:r.received===Mc.undefined?t="Required":t=`Expected ${r.expected}, received ${r.received}`;break;case ds.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(r.expected,z1.jsonStringifyReplacer)}`;break;case ds.unrecognized_keys:t=`Unrecognized key(s) in object: ${z1.joinValues(r.keys,", ")}`;break;case ds.invalid_union:t="Invalid input";break;case ds.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${z1.joinValues(r.options)}`;break;case ds.invalid_enum_value:t=`Invalid enum value. Expected ${z1.joinValues(r.options)}, received '${r.received}'`;break;case ds.invalid_arguments:t="Invalid function arguments";break;case ds.invalid_return_type:t="Invalid function return type";break;case ds.invalid_date:t="Invalid date";break;case ds.invalid_string:typeof r.validation=="object"?"includes"in r.validation?(t=`Invalid input: must include "${r.validation.includes}"`,typeof r.validation.position=="number"&&(t=`${t} at one or more positions greater than or equal to ${r.validation.position}`)):"startsWith"in r.validation?t=`Invalid input: must start with "${r.validation.startsWith}"`:"endsWith"in r.validation?t=`Invalid input: must end with "${r.validation.endsWith}"`:z1.assertNever(r.validation):r.validation!=="regex"?t=`Invalid ${r.validation}`:t="Invalid";break;case ds.too_small:r.type==="array"?t=`Array must contain ${r.exact?"exactly":r.inclusive?"at least":"more than"} ${r.minimum} element(s)`:r.type==="string"?t=`String must contain ${r.exact?"exactly":r.inclusive?"at least":"over"} ${r.minimum} character(s)`:r.type==="number"?t=`Number must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${r.minimum}`:r.type==="date"?t=`Date must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(r.minimum))}`:t="Invalid input";break;case ds.too_big:r.type==="array"?t=`Array must contain ${r.exact?"exactly":r.inclusive?"at most":"less than"} ${r.maximum} element(s)`:r.type==="string"?t=`String must contain ${r.exact?"exactly":r.inclusive?"at most":"under"} ${r.maximum} character(s)`:r.type==="number"?t=`Number must be ${r.exact?"exactly":r.inclusive?"less than or equal to":"less than"} ${r.maximum}`:r.type==="bigint"?t=`BigInt must be ${r.exact?"exactly":r.inclusive?"less than or equal to":"less than"} ${r.maximum}`:r.type==="date"?t=`Date must be ${r.exact?"exactly":r.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(r.maximum))}`:t="Invalid input";break;case ds.custom:t="Invalid input";break;case ds.invalid_intersection_types:t="Intersection results could not be merged";break;case ds.not_multiple_of:t=`Number must be a multiple of ${r.multipleOf}`;break;case ds.not_finite:t="Number must be finite";break;default:t=e.defaultError,z1.assertNever(r)}return{message:t}},nKe=Tw;function knn(r){nKe=r}function tk(){return nKe}var nk=r=>{const{data:e,path:t,errorMaps:n,issueData:i}=r,a=[...t,...i.path||[]],o={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let s="";const l=n.filter(c=>!!c).slice().reverse();for(const c of l)s=c(o,{data:e,defaultError:s}).message;return{...i,path:a,message:s}},Fnn=[];function ql(r,e){const t=tk(),n=nk({issueData:e,data:r.data,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,t,t===Tw?void 0:Tw].filter(i=>!!i)});r.common.issues.push(n)}var O3=class flt{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,t){const n=[];for(const i of t){if(i.status==="aborted")return $d;i.status==="dirty"&&e.dirty(),n.push(i.value)}return{status:e.value,value:n}}static async mergeObjectAsync(e,t){const n=[];for(const i of t){const a=await i.key,o=await i.value;n.push({key:a,value:o})}return flt.mergeObjectSync(e,n)}static mergeObjectSync(e,t){const n={};for(const i of t){const{key:a,value:o}=i;if(a.status==="aborted"||o.status==="aborted")return $d;a.status==="dirty"&&e.dirty(),o.status==="dirty"&&e.dirty(),a.value!=="__proto__"&&(typeof o.value<"u"||i.alwaysSet)&&(n[a.value]=o.value)}return{status:e.value,value:n}}},$d=Object.freeze({status:"aborted"}),Mw=r=>({status:"dirty",value:r}),o3=r=>({status:"valid",value:r}),ofe=r=>r.status==="aborted",sfe=r=>r.status==="dirty",c7=r=>r.status==="valid",gR=r=>typeof Promise<"u"&&r instanceof Promise;function rk(r,e,t,n){if(typeof e=="function"?r!==e||!n:!e.has(r))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e.get(r)}function rKe(r,e,t,n,i){if(typeof e=="function"?r!==e||!i:!e.has(r))throw new TypeError("Cannot write private member to an object whose class did not declare it");return e.set(r,t),t}var o0;(function(r){r.errToObj=e=>typeof e=="string"?{message:e}:e||{},r.toString=e=>typeof e=="string"?e:e==null?void 0:e.message})(o0||(o0={}));var _R,xR,Ub=class{constructor(r,e,t,n){this._cachedPath=[],this.parent=r,this.data=e,this._path=t,this._key=n}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},iKe=(r,e)=>{if(c7(e))return{success:!0,data:e.value};if(!r.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const t=new Q4(r.common.issues);return this._error=t,this._error}}};function Dh(r){if(!r)return{};const{errorMap:e,invalid_type_error:t,required_error:n,description:i}=r;if(e&&(t||n))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:i}:{errorMap:(o,s)=>{var l,c;const{message:u}=r;return o.code==="invalid_enum_value"?{message:u??s.defaultError}:typeof s.data>"u"?{message:(l=u??n)!==null&&l!==void 0?l:s.defaultError}:o.code!=="invalid_type"?{message:s.defaultError}:{message:(c=u??t)!==null&&c!==void 0?c:s.defaultError}},description:i}}var Qh=class{get description(){return this._def.description}_getType(r){return PS(r.data)}_getOrReturnCtx(r,e){return e||{common:r.parent.common,data:r.data,parsedType:PS(r.data),schemaErrorMap:this._def.errorMap,path:r.path,parent:r.parent}}_processInputParams(r){return{status:new O3,ctx:{common:r.parent.common,data:r.data,parsedType:PS(r.data),schemaErrorMap:this._def.errorMap,path:r.path,parent:r.parent}}}_parseSync(r){const e=this._parse(r);if(gR(e))throw new Error("Synchronous parse encountered promise.");return e}_parseAsync(r){const e=this._parse(r);return Promise.resolve(e)}parse(r,e){const t=this.safeParse(r,e);if(t.success)return t.data;throw t.error}safeParse(r,e){var t;const n={common:{issues:[],async:(t=e==null?void 0:e.async)!==null&&t!==void 0?t:!1,contextualErrorMap:e==null?void 0:e.errorMap},path:(e==null?void 0:e.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:r,parsedType:PS(r)},i=this._parseSync({data:r,path:n.path,parent:n});return iKe(n,i)}"~validate"(r){var e,t;const n={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:r,parsedType:PS(r)};if(!this["~standard"].async)try{const i=this._parseSync({data:r,path:[],parent:n});return c7(i)?{value:i.value}:{issues:n.common.issues}}catch(i){!((t=(e=i==null?void 0:i.message)===null||e===void 0?void 0:e.toLowerCase())===null||t===void 0)&&t.includes("encountered")&&(this["~standard"].async=!0),n.common={issues:[],async:!0}}return this._parseAsync({data:r,path:[],parent:n}).then(i=>c7(i)?{value:i.value}:{issues:n.common.issues})}async parseAsync(r,e){const t=await this.safeParseAsync(r,e);if(t.success)return t.data;throw t.error}async safeParseAsync(r,e){const t={common:{issues:[],contextualErrorMap:e==null?void 0:e.errorMap,async:!0},path:(e==null?void 0:e.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:r,parsedType:PS(r)},n=this._parse({data:r,path:t.path,parent:t}),i=await(gR(n)?n:Promise.resolve(n));return iKe(t,i)}refine(r,e){const t=n=>typeof e=="string"||typeof e>"u"?{message:e}:typeof e=="function"?e(n):e;return this._refinement((n,i)=>{const a=r(n),o=()=>i.addIssue({code:ds.custom,...t(n)});return typeof Promise<"u"&&a instanceof Promise?a.then(s=>s?!0:(o(),!1)):a?!0:(o(),!1)})}refinement(r,e){return this._refinement((t,n)=>r(t)?!0:(n.addIssue(typeof e=="function"?e(t,n):e),!1))}_refinement(r){return new K4({schema:this,typeName:Rd.ZodEffects,effect:{type:"refinement",refinement:r}})}superRefine(r){return this._refinement(r)}constructor(r){this.spa=this.safeParseAsync,this._def=r,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:e=>this["~validate"](e)}}optional(){return kb.create(this,this._def)}nullable(){return T8.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return f7.create(this)}promise(){return Pw.create(this,this._def)}or(r){return CR.create([this,r],this._def)}and(r){return RR.create(this,r,this._def)}transform(r){return new K4({...Dh(this._def),schema:this,typeName:Rd.ZodEffects,effect:{type:"transform",transform:r}})}default(r){const e=typeof r=="function"?r:()=>r;return new LR({...Dh(this._def),innerType:this,defaultValue:e,typeName:Rd.ZodDefault})}brand(){return new ufe({typeName:Rd.ZodBranded,type:this,...Dh(this._def)})}catch(r){const e=typeof r=="function"?r:()=>r;return new zR({...Dh(this._def),innerType:this,catchValue:e,typeName:Rd.ZodCatch})}describe(r){const e=this.constructor;return new e({...this._def,description:r})}pipe(r){return ffe.create(this,r)}readonly(){return OR.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},Inn=/^c[^\s-]{8,}$/i,Bnn=/^[0-9a-z]+$/,jnn=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Vnn=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Hnn=/^[a-z0-9_-]{21}$/i,qnn=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,$nn=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Gnn=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Ynn="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",lfe,Xnn=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Wnn=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,Znn=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Qnn=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Knn=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Jnn=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,aKe="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",ern=new RegExp(`^${aKe}$`);function oKe(r){let e="([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";return r.precision?e=`${e}\\.\\d{${r.precision}}`:r.precision==null&&(e=`${e}(\\.\\d+)?`),e}function trn(r){return new RegExp(`^${oKe(r)}$`)}function sKe(r){let e=`${aKe}T${oKe(r)}`;const t=[];return t.push(r.local?"Z?":"Z"),r.offset&&t.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${t.join("|")})`,new RegExp(`^${e}$`)}function nrn(r,e){return!!((e==="v4"||!e)&&Xnn.test(r)||(e==="v6"||!e)&&Znn.test(r))}function rrn(r,e){if(!qnn.test(r))return!1;try{const[t]=r.split("."),n=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),i=JSON.parse(atob(n));return!(typeof i!="object"||i===null||!i.typ||!i.alg||e&&i.alg!==e)}catch{return!1}}function irn(r,e){return!!((e==="v4"||!e)&&Wnn.test(r)||(e==="v6"||!e)&&Qnn.test(r))}var Cw=class hA extends Qh{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==Mc.string){const a=this._getOrReturnCtx(e);return ql(a,{code:ds.invalid_type,expected:Mc.string,received:a.parsedType}),$d}const n=new O3;let i;for(const a of this._def.checks)if(a.kind==="min")e.data.length<a.value&&(i=this._getOrReturnCtx(e,i),ql(i,{code:ds.too_small,minimum:a.value,type:"string",inclusive:!0,exact:!1,message:a.message}),n.dirty());else if(a.kind==="max")e.data.length>a.value&&(i=this._getOrReturnCtx(e,i),ql(i,{code:ds.too_big,maximum:a.value,type:"string",inclusive:!0,exact:!1,message:a.message}),n.dirty());else if(a.kind==="length"){const o=e.data.length>a.value,s=e.data.length<a.value;(o||s)&&(i=this._getOrReturnCtx(e,i),o?ql(i,{code:ds.too_big,maximum:a.value,type:"string",inclusive:!0,exact:!0,message:a.message}):s&&ql(i,{code:ds.too_small,minimum:a.value,type:"string",inclusive:!0,exact:!0,message:a.message}),n.dirty())}else if(a.kind==="email")Gnn.test(e.data)||(i=this._getOrReturnCtx(e,i),ql(i,{validation:"email",code:ds.invalid_string,message:a.message}),n.dirty());else if(a.kind==="emoji")lfe||(lfe=new RegExp(Ynn,"u")),lfe.test(e.data)||(i=this._getOrReturnCtx(e,i),ql(i,{validation:"emoji",code:ds.invalid_string,message:a.message}),n.dirty());else if(a.kind==="uuid")Vnn.test(e.data)||(i=this._getOrReturnCtx(e,i),ql(i,{validation:"uuid",code:ds.invalid_string,message:a.message}),n.dirty());else if(a.kind==="nanoid")Hnn.test(e.data)||(i=this._getOrReturnCtx(e,i),ql(i,{validation:"nanoid",code:ds.invalid_string,message:a.message}),n.dirty());else if(a.kind==="cuid")Inn.test(e.data)||(i=this._getOrReturnCtx(e,i),ql(i,{validation:"cuid",code:ds.invalid_string,message:a.message}),n.dirty());else if(a.kind==="cuid2")Bnn.test(e.data)||(i=this._getOrReturnCtx(e,i),ql(i,{validation:"cuid2",code:ds.invalid_string,message:a.message}),n.dirty());else if(a.kind==="ulid")jnn.test(e.data)||(i=this._getOrReturnCtx(e,i),ql(i,{validation:"ulid",code:ds.invalid_string,message:a.message}),n.dirty());else if(a.kind==="url")try{new URL(e.data)}catch{i=this._getOrReturnCtx(e,i),ql(i,{validation:"url",code:ds.invalid_string,message:a.message}),n.dirty()}else a.kind==="regex"?(a.regex.lastIndex=0,a.regex.test(e.data)||(i=this._getOrReturnCtx(e,i),ql(i,{validation:"regex",code:ds.invalid_string,message:a.message}),n.dirty())):a.kind==="trim"?e.data=e.data.trim():a.kind==="includes"?e.data.includes(a.value,a.position)||(i=this._getOrReturnCtx(e,i),ql(i,{code:ds.invalid_string,validation:{includes:a.value,position:a.position},message:a.message}),n.dirty()):a.kind==="toLowerCase"?e.data=e.data.toLowerCase():a.kind==="toUpperCase"?e.data=e.data.toUpperCase():a.kind==="startsWith"?e.data.startsWith(a.value)||(i=this._getOrReturnCtx(e,i),ql(i,{code:ds.invalid_string,validation:{startsWith:a.value},message:a.message}),n.dirty()):a.kind==="endsWith"?e.data.endsWith(a.value)||(i=this._getOrReturnCtx(e,i),ql(i,{code:ds.invalid_string,validation:{endsWith:a.value},message:a.message}),n.dirty()):a.kind==="datetime"?sKe(a).test(e.data)||(i=this._getOrReturnCtx(e,i),ql(i,{code:ds.invalid_string,validation:"datetime",message:a.message}),n.dirty()):a.kind==="date"?ern.test(e.data)||(i=this._getOrReturnCtx(e,i),ql(i,{code:ds.invalid_string,validation:"date",message:a.message}),n.dirty()):a.kind==="time"?trn(a).test(e.data)||(i=this._getOrReturnCtx(e,i),ql(i,{code:ds.invalid_string,validation:"time",message:a.message}),n.dirty()):a.kind==="duration"?$nn.test(e.data)||(i=this._getOrReturnCtx(e,i),ql(i,{validation:"duration",code:ds.invalid_string,message:a.message}),n.dirty()):a.kind==="ip"?nrn(e.data,a.version)||(i=this._getOrReturnCtx(e,i),ql(i,{validation:"ip",code:ds.invalid_string,message:a.message}),n.dirty()):a.kind==="jwt"?rrn(e.data,a.alg)||(i=this._getOrReturnCtx(e,i),ql(i,{validation:"jwt",code:ds.invalid_string,message:a.message}),n.dirty()):a.kind==="cidr"?irn(e.data,a.version)||(i=this._getOrReturnCtx(e,i),ql(i,{validation:"cidr",code:ds.invalid_string,message:a.message}),n.dirty()):a.kind==="base64"?Knn.test(e.data)||(i=this._getOrReturnCtx(e,i),ql(i,{validation:"base64",code:ds.invalid_string,message:a.message}),n.dirty()):a.kind==="base64url"?Jnn.test(e.data)||(i=this._getOrReturnCtx(e,i),ql(i,{validation:"base64url",code:ds.invalid_string,message:a.message}),n.dirty()):z1.assertNever(a);return{status:n.value,value:e.data}}_regex(e,t,n){return this.refinement(i=>e.test(i),{validation:t,code:ds.invalid_string,...o0.errToObj(n)})}_addCheck(e){return new hA({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...o0.errToObj(e)})}url(e){return this._addCheck({kind:"url",...o0.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...o0.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...o0.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...o0.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...o0.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...o0.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...o0.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...o0.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...o0.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...o0.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...o0.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...o0.errToObj(e)})}datetime(e){var t,n;return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof(e==null?void 0:e.precision)>"u"?null:e==null?void 0:e.precision,offset:(t=e==null?void 0:e.offset)!==null&&t!==void 0?t:!1,local:(n=e==null?void 0:e.local)!==null&&n!==void 0?n:!1,...o0.errToObj(e==null?void 0:e.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof(e==null?void 0:e.precision)>"u"?null:e==null?void 0:e.precision,...o0.errToObj(e==null?void 0:e.message)})}duration(e){return this._addCheck({kind:"duration",...o0.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...o0.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t==null?void 0:t.position,...o0.errToObj(t==null?void 0:t.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...o0.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...o0.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...o0.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...o0.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...o0.errToObj(t)})}nonempty(e){return this.min(1,o0.errToObj(e))}trim(){return new hA({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new hA({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new hA({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}};Cw.create=r=>{var e;return new Cw({checks:[],typeName:Rd.ZodString,coerce:(e=r==null?void 0:r.coerce)!==null&&e!==void 0?e:!1,...Dh(r)})};function arn(r,e){const t=(r.toString().split(".")[1]||"").length,n=(e.toString().split(".")[1]||"").length,i=t>n?t:n,a=parseInt(r.toFixed(i).replace(".","")),o=parseInt(e.toFixed(i).replace(".",""));return a%o/Math.pow(10,i)}var bR=class Khe extends Qh{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==Mc.number){const a=this._getOrReturnCtx(e);return ql(a,{code:ds.invalid_type,expected:Mc.number,received:a.parsedType}),$d}let n;const i=new O3;for(const a of this._def.checks)a.kind==="int"?z1.isInteger(e.data)||(n=this._getOrReturnCtx(e,n),ql(n,{code:ds.invalid_type,expected:"integer",received:"float",message:a.message}),i.dirty()):a.kind==="min"?(a.inclusive?e.data<a.value:e.data<=a.value)&&(n=this._getOrReturnCtx(e,n),ql(n,{code:ds.too_small,minimum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),i.dirty()):a.kind==="max"?(a.inclusive?e.data>a.value:e.data>=a.value)&&(n=this._getOrReturnCtx(e,n),ql(n,{code:ds.too_big,maximum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),i.dirty()):a.kind==="multipleOf"?arn(e.data,a.value)!==0&&(n=this._getOrReturnCtx(e,n),ql(n,{code:ds.not_multiple_of,multipleOf:a.value,message:a.message}),i.dirty()):a.kind==="finite"?Number.isFinite(e.data)||(n=this._getOrReturnCtx(e,n),ql(n,{code:ds.not_finite,message:a.message}),i.dirty()):z1.assertNever(a);return{status:i.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,o0.toString(t))}gt(e,t){return this.setLimit("min",e,!1,o0.toString(t))}lte(e,t){return this.setLimit("max",e,!0,o0.toString(t))}lt(e,t){return this.setLimit("max",e,!1,o0.toString(t))}setLimit(e,t,n,i){return new Khe({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:n,message:o0.toString(i)}]})}_addCheck(e){return new Khe({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:o0.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:o0.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:o0.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:o0.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:o0.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:o0.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:o0.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:o0.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:o0.toString(e)})}get minValue(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&z1.isInteger(e.value))}get isFinite(){let e=null,t=null;for(const n of this._def.checks){if(n.kind==="finite"||n.kind==="int"||n.kind==="multipleOf")return!0;n.kind==="min"?(t===null||n.value>t)&&(t=n.value):n.kind==="max"&&(e===null||n.value<e)&&(e=n.value)}return Number.isFinite(t)&&Number.isFinite(e)}};bR.create=r=>new bR({checks:[],typeName:Rd.ZodNumber,coerce:(r==null?void 0:r.coerce)||!1,...Dh(r)});var SR=class Jhe extends Qh{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==Mc.bigint)return this._getInvalidInput(e);let n;const i=new O3;for(const a of this._def.checks)a.kind==="min"?(a.inclusive?e.data<a.value:e.data<=a.value)&&(n=this._getOrReturnCtx(e,n),ql(n,{code:ds.too_small,type:"bigint",minimum:a.value,inclusive:a.inclusive,message:a.message}),i.dirty()):a.kind==="max"?(a.inclusive?e.data>a.value:e.data>=a.value)&&(n=this._getOrReturnCtx(e,n),ql(n,{code:ds.too_big,type:"bigint",maximum:a.value,inclusive:a.inclusive,message:a.message}),i.dirty()):a.kind==="multipleOf"?e.data%a.value!==BigInt(0)&&(n=this._getOrReturnCtx(e,n),ql(n,{code:ds.not_multiple_of,multipleOf:a.value,message:a.message}),i.dirty()):z1.assertNever(a);return{status:i.value,value:e.data}}_getInvalidInput(e){const t=this._getOrReturnCtx(e);return ql(t,{code:ds.invalid_type,expected:Mc.bigint,received:t.parsedType}),$d}gte(e,t){return this.setLimit("min",e,!0,o0.toString(t))}gt(e,t){return this.setLimit("min",e,!1,o0.toString(t))}lte(e,t){return this.setLimit("max",e,!0,o0.toString(t))}lt(e,t){return this.setLimit("max",e,!1,o0.toString(t))}setLimit(e,t,n,i){return new Jhe({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:n,message:o0.toString(i)}]})}_addCheck(e){return new Jhe({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:o0.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:o0.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:o0.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:o0.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:o0.toString(t)})}get minValue(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}};SR.create=r=>{var e;return new SR({checks:[],typeName:Rd.ZodBigInt,coerce:(e=r==null?void 0:r.coerce)!==null&&e!==void 0?e:!1,...Dh(r)})};var ER=class extends Qh{_parse(r){if(this._def.coerce&&(r.data=!!r.data),this._getType(r)!==Mc.boolean){const t=this._getOrReturnCtx(r);return ql(t,{code:ds.invalid_type,expected:Mc.boolean,received:t.parsedType}),$d}return o3(r.data)}};ER.create=r=>new ER({typeName:Rd.ZodBoolean,coerce:(r==null?void 0:r.coerce)||!1,...Dh(r)});var wR=class dlt extends Qh{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==Mc.date){const a=this._getOrReturnCtx(e);return ql(a,{code:ds.invalid_type,expected:Mc.date,received:a.parsedType}),$d}if(isNaN(e.data.getTime())){const a=this._getOrReturnCtx(e);return ql(a,{code:ds.invalid_date}),$d}const n=new O3;let i;for(const a of this._def.checks)a.kind==="min"?e.data.getTime()<a.value&&(i=this._getOrReturnCtx(e,i),ql(i,{code:ds.too_small,message:a.message,inclusive:!0,exact:!1,minimum:a.value,type:"date"}),n.dirty()):a.kind==="max"?e.data.getTime()>a.value&&(i=this._getOrReturnCtx(e,i),ql(i,{code:ds.too_big,message:a.message,inclusive:!0,exact:!1,maximum:a.value,type:"date"}),n.dirty()):z1.assertNever(a);return{status:n.value,value:new Date(e.data.getTime())}}_addCheck(e){return new dlt({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:o0.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:o0.toString(t)})}get minDate(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e!=null?new Date(e):null}};wR.create=r=>new wR({checks:[],coerce:(r==null?void 0:r.coerce)||!1,typeName:Rd.ZodDate,...Dh(r)});var ik=class extends Qh{_parse(r){if(this._getType(r)!==Mc.symbol){const t=this._getOrReturnCtx(r);return ql(t,{code:ds.invalid_type,expected:Mc.symbol,received:t.parsedType}),$d}return o3(r.data)}};ik.create=r=>new ik({typeName:Rd.ZodSymbol,...Dh(r)});var TR=class extends Qh{_parse(r){if(this._getType(r)!==Mc.undefined){const t=this._getOrReturnCtx(r);return ql(t,{code:ds.invalid_type,expected:Mc.undefined,received:t.parsedType}),$d}return o3(r.data)}};TR.create=r=>new TR({typeName:Rd.ZodUndefined,...Dh(r)});var MR=class extends Qh{_parse(r){if(this._getType(r)!==Mc.null){const t=this._getOrReturnCtx(r);return ql(t,{code:ds.invalid_type,expected:Mc.null,received:t.parsedType}),$d}return o3(r.data)}};MR.create=r=>new MR({typeName:Rd.ZodNull,...Dh(r)});var Rw=class extends Qh{constructor(){super(...arguments),this._any=!0}_parse(r){return o3(r.data)}};Rw.create=r=>new Rw({typeName:Rd.ZodAny,...Dh(r)});var u7=class extends Qh{constructor(){super(...arguments),this._unknown=!0}_parse(r){return o3(r.data)}};u7.create=r=>new u7({typeName:Rd.ZodUnknown,...Dh(r)});var DS=class extends Qh{_parse(r){const e=this._getOrReturnCtx(r);return ql(e,{code:ds.invalid_type,expected:Mc.never,received:e.parsedType}),$d}};DS.create=r=>new DS({typeName:Rd.ZodNever,...Dh(r)});var ak=class extends Qh{_parse(r){if(this._getType(r)!==Mc.undefined){const t=this._getOrReturnCtx(r);return ql(t,{code:ds.invalid_type,expected:Mc.void,received:t.parsedType}),$d}return o3(r.data)}};ak.create=r=>new ak({typeName:Rd.ZodVoid,...Dh(r)});var f7=class xI extends Qh{_parse(e){const{ctx:t,status:n}=this._processInputParams(e),i=this._def;if(t.parsedType!==Mc.array)return ql(t,{code:ds.invalid_type,expected:Mc.array,received:t.parsedType}),$d;if(i.exactLength!==null){const o=t.data.length>i.exactLength.value,s=t.data.length<i.exactLength.value;(o||s)&&(ql(t,{code:o?ds.too_big:ds.too_small,minimum:s?i.exactLength.value:void 0,maximum:o?i.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:i.exactLength.message}),n.dirty())}if(i.minLength!==null&&t.data.length<i.minLength.value&&(ql(t,{code:ds.too_small,minimum:i.minLength.value,type:"array",inclusive:!0,exact:!1,message:i.minLength.message}),n.dirty()),i.maxLength!==null&&t.data.length>i.maxLength.value&&(ql(t,{code:ds.too_big,maximum:i.maxLength.value,type:"array",inclusive:!0,exact:!1,message:i.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((o,s)=>i.type._parseAsync(new Ub(t,o,t.path,s)))).then(o=>O3.mergeArray(n,o));const a=[...t.data].map((o,s)=>i.type._parseSync(new Ub(t,o,t.path,s)));return O3.mergeArray(n,a)}get element(){return this._def.type}min(e,t){return new xI({...this._def,minLength:{value:e,message:o0.toString(t)}})}max(e,t){return new xI({...this._def,maxLength:{value:e,message:o0.toString(t)}})}length(e,t){return new xI({...this._def,exactLength:{value:e,message:o0.toString(t)}})}nonempty(e){return this.min(1,e)}};f7.create=(r,e)=>new f7({type:r,minLength:null,maxLength:null,exactLength:null,typeName:Rd.ZodArray,...Dh(e)});function Aw(r){if(r instanceof x4){const e={};for(const t in r.shape){const n=r.shape[t];e[t]=kb.create(Aw(n))}return new x4({...r._def,shape:()=>e})}else return r instanceof f7?new f7({...r._def,type:Aw(r.element)}):r instanceof kb?kb.create(Aw(r.unwrap())):r instanceof T8?T8.create(Aw(r.unwrap())):r instanceof w8?w8.create(r.items.map(e=>Aw(e))):r}var x4=class cb extends Qh{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const e=this._def.shape(),t=z1.objectKeys(e);return this._cached={shape:e,keys:t}}_parse(e){if(this._getType(e)!==Mc.object){const c=this._getOrReturnCtx(e);return ql(c,{code:ds.invalid_type,expected:Mc.object,received:c.parsedType}),$d}const{status:n,ctx:i}=this._processInputParams(e),{shape:a,keys:o}=this._getCached(),s=[];if(!(this._def.catchall instanceof DS&&this._def.unknownKeys==="strip"))for(const c in i.data)o.includes(c)||s.push(c);const l=[];for(const c of o){const u=a[c],f=i.data[c];l.push({key:{status:"valid",value:c},value:u._parse(new Ub(i,f,i.path,c)),alwaysSet:c in i.data})}if(this._def.catchall instanceof DS){const c=this._def.unknownKeys;if(c==="passthrough")for(const u of s)l.push({key:{status:"valid",value:u},value:{status:"valid",value:i.data[u]}});else if(c==="strict")s.length>0&&(ql(i,{code:ds.unrecognized_keys,keys:s}),n.dirty());else if(c!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const c=this._def.catchall;for(const u of s){const f=i.data[u];l.push({key:{status:"valid",value:u},value:c._parse(new Ub(i,f,i.path,u)),alwaysSet:u in i.data})}}return i.common.async?Promise.resolve().then(async()=>{const c=[];for(const u of l){const f=await u.key,h=await u.value;c.push({key:f,value:h,alwaysSet:u.alwaysSet})}return c}).then(c=>O3.mergeObjectSync(n,c)):O3.mergeObjectSync(n,l)}get shape(){return this._def.shape()}strict(e){return o0.errToObj,new cb({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(t,n)=>{var i,a,o,s;const l=(o=(a=(i=this._def).errorMap)===null||a===void 0?void 0:a.call(i,t,n).message)!==null&&o!==void 0?o:n.defaultError;return t.code==="unrecognized_keys"?{message:(s=o0.errToObj(e).message)!==null&&s!==void 0?s:l}:{message:l}}}:{}})}strip(){return new cb({...this._def,unknownKeys:"strip"})}passthrough(){return new cb({...this._def,unknownKeys:"passthrough"})}extend(e){return new cb({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new cb({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Rd.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new cb({...this._def,catchall:e})}pick(e){const t={};return z1.objectKeys(e).forEach(n=>{e[n]&&this.shape[n]&&(t[n]=this.shape[n])}),new cb({...this._def,shape:()=>t})}omit(e){const t={};return z1.objectKeys(this.shape).forEach(n=>{e[n]||(t[n]=this.shape[n])}),new cb({...this._def,shape:()=>t})}deepPartial(){return Aw(this)}partial(e){const t={};return z1.objectKeys(this.shape).forEach(n=>{const i=this.shape[n];e&&!e[n]?t[n]=i:t[n]=i.optional()}),new cb({...this._def,shape:()=>t})}required(e){const t={};return z1.objectKeys(this.shape).forEach(n=>{if(e&&!e[n])t[n]=this.shape[n];else{let a=this.shape[n];for(;a instanceof kb;)a=a._def.innerType;t[n]=a}}),new cb({...this._def,shape:()=>t})}keyof(){return fKe(z1.objectKeys(this.shape))}};x4.create=(r,e)=>new x4({shape:()=>r,unknownKeys:"strip",catchall:DS.create(),typeName:Rd.ZodObject,...Dh(e)}),x4.strictCreate=(r,e)=>new x4({shape:()=>r,unknownKeys:"strict",catchall:DS.create(),typeName:Rd.ZodObject,...Dh(e)}),x4.lazycreate=(r,e)=>new x4({shape:r,unknownKeys:"strip",catchall:DS.create(),typeName:Rd.ZodObject,...Dh(e)});var CR=class extends Qh{_parse(r){const{ctx:e}=this._processInputParams(r),t=this._def.options;function n(i){for(const o of i)if(o.result.status==="valid")return o.result;for(const o of i)if(o.result.status==="dirty")return e.common.issues.push(...o.ctx.common.issues),o.result;const a=i.map(o=>new Q4(o.ctx.common.issues));return ql(e,{code:ds.invalid_union,unionErrors:a}),$d}if(e.common.async)return Promise.all(t.map(async i=>{const a={...e,common:{...e.common,issues:[]},parent:null};return{result:await i._parseAsync({data:e.data,path:e.path,parent:a}),ctx:a}})).then(n);{let i;const a=[];for(const s of t){const l={...e,common:{...e.common,issues:[]},parent:null},c=s._parseSync({data:e.data,path:e.path,parent:l});if(c.status==="valid")return c;c.status==="dirty"&&!i&&(i={result:c,ctx:l}),l.common.issues.length&&a.push(l.common.issues)}if(i)return e.common.issues.push(...i.ctx.common.issues),i.result;const o=a.map(s=>new Q4(s));return ql(e,{code:ds.invalid_union,unionErrors:o}),$d}}get options(){return this._def.options}};CR.create=(r,e)=>new CR({options:r,typeName:Rd.ZodUnion,...Dh(e)});var NS=r=>r instanceof AR?NS(r.schema):r instanceof K4?NS(r.innerType()):r instanceof PR?[r.value]:r instanceof DR?r.options:r instanceof NR?z1.objectValues(r.enum):r instanceof LR?NS(r._def.innerType):r instanceof TR?[void 0]:r instanceof MR?[null]:r instanceof kb?[void 0,...NS(r.unwrap())]:r instanceof T8?[null,...NS(r.unwrap())]:r instanceof ufe||r instanceof OR?NS(r.unwrap()):r instanceof zR?NS(r._def.innerType):[],lKe=class plt extends Qh{_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==Mc.object)return ql(t,{code:ds.invalid_type,expected:Mc.object,received:t.parsedType}),$d;const n=this.discriminator,i=t.data[n],a=this.optionsMap.get(i);return a?t.common.async?a._parseAsync({data:t.data,path:t.path,parent:t}):a._parseSync({data:t.data,path:t.path,parent:t}):(ql(t,{code:ds.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),$d)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,n){const i=new Map;for(const a of t){const o=NS(a.shape[e]);if(!o.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(const s of o){if(i.has(s))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(s)}`);i.set(s,a)}}return new plt({typeName:Rd.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:i,...Dh(n)})}};function cfe(r,e){const t=PS(r),n=PS(e);if(r===e)return{valid:!0,data:r};if(t===Mc.object&&n===Mc.object){const i=z1.objectKeys(e),a=z1.objectKeys(r).filter(s=>i.indexOf(s)!==-1),o={...r,...e};for(const s of a){const l=cfe(r[s],e[s]);if(!l.valid)return{valid:!1};o[s]=l.data}return{valid:!0,data:o}}else if(t===Mc.array&&n===Mc.array){if(r.length!==e.length)return{valid:!1};const i=[];for(let a=0;a<r.length;a++){const o=r[a],s=e[a],l=cfe(o,s);if(!l.valid)return{valid:!1};i.push(l.data)}return{valid:!0,data:i}}else return t===Mc.date&&n===Mc.date&&+r==+e?{valid:!0,data:r}:{valid:!1}}var RR=class extends Qh{_parse(r){const{status:e,ctx:t}=this._processInputParams(r),n=(i,a)=>{if(ofe(i)||ofe(a))return $d;const o=cfe(i.value,a.value);return o.valid?((sfe(i)||sfe(a))&&e.dirty(),{status:e.value,value:o.data}):(ql(t,{code:ds.invalid_intersection_types}),$d)};return t.common.async?Promise.all([this._def.left._parseAsync({data:t.data,path:t.path,parent:t}),this._def.right._parseAsync({data:t.data,path:t.path,parent:t})]).then(([i,a])=>n(i,a)):n(this._def.left._parseSync({data:t.data,path:t.path,parent:t}),this._def.right._parseSync({data:t.data,path:t.path,parent:t}))}};RR.create=(r,e,t)=>new RR({left:r,right:e,typeName:Rd.ZodIntersection,...Dh(t)});var w8=class hlt extends Qh{_parse(e){const{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==Mc.array)return ql(n,{code:ds.invalid_type,expected:Mc.array,received:n.parsedType}),$d;if(n.data.length<this._def.items.length)return ql(n,{code:ds.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),$d;!this._def.rest&&n.data.length>this._def.items.length&&(ql(n,{code:ds.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());const a=[...n.data].map((o,s)=>{const l=this._def.items[s]||this._def.rest;return l?l._parse(new Ub(n,o,n.path,s)):null}).filter(o=>!!o);return n.common.async?Promise.all(a).then(o=>O3.mergeArray(t,o)):O3.mergeArray(t,a)}get items(){return this._def.items}rest(e){return new hlt({...this._def,rest:e})}};w8.create=(r,e)=>{if(!Array.isArray(r))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new w8({items:r,typeName:Rd.ZodTuple,rest:null,...Dh(e)})};var cKe=class eme extends Qh{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==Mc.object)return ql(n,{code:ds.invalid_type,expected:Mc.object,received:n.parsedType}),$d;const i=[],a=this._def.keyType,o=this._def.valueType;for(const s in n.data)i.push({key:a._parse(new Ub(n,s,n.path,s)),value:o._parse(new Ub(n,n.data[s],n.path,s)),alwaysSet:s in n.data});return n.common.async?O3.mergeObjectAsync(t,i):O3.mergeObjectSync(t,i)}get element(){return this._def.valueType}static create(e,t,n){return t instanceof Qh?new eme({keyType:e,valueType:t,typeName:Rd.ZodRecord,...Dh(n)}):new eme({keyType:Cw.create(),valueType:e,typeName:Rd.ZodRecord,...Dh(t)})}},ok=class extends Qh{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(r){const{status:e,ctx:t}=this._processInputParams(r);if(t.parsedType!==Mc.map)return ql(t,{code:ds.invalid_type,expected:Mc.map,received:t.parsedType}),$d;const n=this._def.keyType,i=this._def.valueType,a=[...t.data.entries()].map(([o,s],l)=>({key:n._parse(new Ub(t,o,t.path,[l,"key"])),value:i._parse(new Ub(t,s,t.path,[l,"value"]))}));if(t.common.async){const o=new Map;return Promise.resolve().then(async()=>{for(const s of a){const l=await s.key,c=await s.value;if(l.status==="aborted"||c.status==="aborted")return $d;(l.status==="dirty"||c.status==="dirty")&&e.dirty(),o.set(l.value,c.value)}return{status:e.value,value:o}})}else{const o=new Map;for(const s of a){const l=s.key,c=s.value;if(l.status==="aborted"||c.status==="aborted")return $d;(l.status==="dirty"||c.status==="dirty")&&e.dirty(),o.set(l.value,c.value)}return{status:e.value,value:o}}}};ok.create=(r,e,t)=>new ok({valueType:e,keyType:r,typeName:Rd.ZodMap,...Dh(t)});var sk=class tme extends Qh{_parse(e){const{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==Mc.set)return ql(n,{code:ds.invalid_type,expected:Mc.set,received:n.parsedType}),$d;const i=this._def;i.minSize!==null&&n.data.size<i.minSize.value&&(ql(n,{code:ds.too_small,minimum:i.minSize.value,type:"set",inclusive:!0,exact:!1,message:i.minSize.message}),t.dirty()),i.maxSize!==null&&n.data.size>i.maxSize.value&&(ql(n,{code:ds.too_big,maximum:i.maxSize.value,type:"set",inclusive:!0,exact:!1,message:i.maxSize.message}),t.dirty());const a=this._def.valueType;function o(l){const c=new Set;for(const u of l){if(u.status==="aborted")return $d;u.status==="dirty"&&t.dirty(),c.add(u.value)}return{status:t.value,value:c}}const s=[...n.data.values()].map((l,c)=>a._parse(new Ub(n,l,n.path,c)));return n.common.async?Promise.all(s).then(l=>o(l)):o(s)}min(e,t){return new tme({...this._def,minSize:{value:e,message:o0.toString(t)}})}max(e,t){return new tme({...this._def,maxSize:{value:e,message:o0.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};sk.create=(r,e)=>new sk({valueType:r,minSize:null,maxSize:null,typeName:Rd.ZodSet,...Dh(e)});var uKe=class bI extends Qh{constructor(){super(...arguments),this.validate=this.implement}_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==Mc.function)return ql(t,{code:ds.invalid_type,expected:Mc.function,received:t.parsedType}),$d;function n(s,l){return nk({data:s,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,tk(),Tw].filter(c=>!!c),issueData:{code:ds.invalid_arguments,argumentsError:l}})}function i(s,l){return nk({data:s,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,tk(),Tw].filter(c=>!!c),issueData:{code:ds.invalid_return_type,returnTypeError:l}})}const a={errorMap:t.common.contextualErrorMap},o=t.data;if(this._def.returns instanceof Pw){const s=this;return o3(async function(...l){const c=new Q4([]),u=await s._def.args.parseAsync(l,a).catch(v=>{throw c.addIssue(n(l,v)),c}),f=await Reflect.apply(o,this,u);return await s._def.returns._def.type.parseAsync(f,a).catch(v=>{throw c.addIssue(i(f,v)),c})})}else{const s=this;return o3(function(...l){const c=s._def.args.safeParse(l,a);if(!c.success)throw new Q4([n(l,c.error)]);const u=Reflect.apply(o,this,c.data),f=s._def.returns.safeParse(u,a);if(!f.success)throw new Q4([i(u,f.error)]);return f.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new bI({...this._def,args:w8.create(e).rest(u7.create())})}returns(e){return new bI({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,n){return new bI({args:e||w8.create([]).rest(u7.create()),returns:t||u7.create(),typeName:Rd.ZodFunction,...Dh(n)})}},AR=class extends Qh{get schema(){return this._def.getter()}_parse(r){const{ctx:e}=this._processInputParams(r);return this._def.getter()._parse({data:e.data,path:e.path,parent:e})}};AR.create=(r,e)=>new AR({getter:r,typeName:Rd.ZodLazy,...Dh(e)});var PR=class extends Qh{_parse(r){if(r.data!==this._def.value){const e=this._getOrReturnCtx(r);return ql(e,{received:e.data,code:ds.invalid_literal,expected:this._def.value}),$d}return{status:"valid",value:r.data}}get value(){return this._def.value}};PR.create=(r,e)=>new PR({value:r,typeName:Rd.ZodLiteral,...Dh(e)});function fKe(r,e){return new DR({values:r,typeName:Rd.ZodEnum,...Dh(e)})}var DR=class nme extends Qh{constructor(){super(...arguments),_R.set(this,void 0)}_parse(e){if(typeof e.data!="string"){const t=this._getOrReturnCtx(e),n=this._def.values;return ql(t,{expected:z1.joinValues(n),received:t.parsedType,code:ds.invalid_type}),$d}if(rk(this,_R)||rKe(this,_R,new Set(this._def.values)),!rk(this,_R).has(e.data)){const t=this._getOrReturnCtx(e),n=this._def.values;return ql(t,{received:t.data,code:ds.invalid_enum_value,options:n}),$d}return o3(e.data)}get options(){return this._def.values}get enum(){const e={};for(const t of this._def.values)e[t]=t;return e}get Values(){const e={};for(const t of this._def.values)e[t]=t;return e}get Enum(){const e={};for(const t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return nme.create(e,{...this._def,...t})}exclude(e,t=this._def){return nme.create(this.options.filter(n=>!e.includes(n)),{...this._def,...t})}};_R=new WeakMap,DR.create=fKe;var NR=class extends Qh{constructor(){super(...arguments),xR.set(this,void 0)}_parse(r){const e=z1.getValidEnumValues(this._def.values),t=this._getOrReturnCtx(r);if(t.parsedType!==Mc.string&&t.parsedType!==Mc.number){const n=z1.objectValues(e);return ql(t,{expected:z1.joinValues(n),received:t.parsedType,code:ds.invalid_type}),$d}if(rk(this,xR)||rKe(this,xR,new Set(z1.getValidEnumValues(this._def.values))),!rk(this,xR).has(r.data)){const n=z1.objectValues(e);return ql(t,{received:t.data,code:ds.invalid_enum_value,options:n}),$d}return o3(r.data)}get enum(){return this._def.values}};xR=new WeakMap,NR.create=(r,e)=>new NR({values:r,typeName:Rd.ZodNativeEnum,...Dh(e)});var Pw=class extends Qh{unwrap(){return this._def.type}_parse(r){const{ctx:e}=this._processInputParams(r);if(e.parsedType!==Mc.promise&&e.common.async===!1)return ql(e,{code:ds.invalid_type,expected:Mc.promise,received:e.parsedType}),$d;const t=e.parsedType===Mc.promise?e.data:Promise.resolve(e.data);return o3(t.then(n=>this._def.type.parseAsync(n,{path:e.path,errorMap:e.common.contextualErrorMap})))}};Pw.create=(r,e)=>new Pw({type:r,typeName:Rd.ZodPromise,...Dh(e)});var K4=class extends Qh{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Rd.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(r){const{status:e,ctx:t}=this._processInputParams(r),n=this._def.effect||null,i={addIssue:a=>{ql(t,a),a.fatal?e.abort():e.dirty()},get path(){return t.path}};if(i.addIssue=i.addIssue.bind(i),n.type==="preprocess"){const a=n.transform(t.data,i);if(t.common.async)return Promise.resolve(a).then(async o=>{if(e.value==="aborted")return $d;const s=await this._def.schema._parseAsync({data:o,path:t.path,parent:t});return s.status==="aborted"?$d:s.status==="dirty"||e.value==="dirty"?Mw(s.value):s});{if(e.value==="aborted")return $d;const o=this._def.schema._parseSync({data:a,path:t.path,parent:t});return o.status==="aborted"?$d:o.status==="dirty"||e.value==="dirty"?Mw(o.value):o}}if(n.type==="refinement"){const a=o=>{const s=n.refinement(o,i);if(t.common.async)return Promise.resolve(s);if(s instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(t.common.async===!1){const o=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});return o.status==="aborted"?$d:(o.status==="dirty"&&e.dirty(),a(o.value),{status:e.value,value:o.value})}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then(o=>o.status==="aborted"?$d:(o.status==="dirty"&&e.dirty(),a(o.value).then(()=>({status:e.value,value:o.value}))))}if(n.type==="transform")if(t.common.async===!1){const a=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});if(!c7(a))return a;const o=n.transform(a.value,i);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:e.value,value:o}}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then(a=>c7(a)?Promise.resolve(n.transform(a.value,i)).then(o=>({status:e.value,value:o})):a);z1.assertNever(n)}};K4.create=(r,e,t)=>new K4({schema:r,typeName:Rd.ZodEffects,effect:e,...Dh(t)}),K4.createWithPreprocess=(r,e,t)=>new K4({schema:e,effect:{type:"preprocess",transform:r},typeName:Rd.ZodEffects,...Dh(t)});var kb=class extends Qh{_parse(r){return this._getType(r)===Mc.undefined?o3(void 0):this._def.innerType._parse(r)}unwrap(){return this._def.innerType}};kb.create=(r,e)=>new kb({innerType:r,typeName:Rd.ZodOptional,...Dh(e)});var T8=class extends Qh{_parse(r){return this._getType(r)===Mc.null?o3(null):this._def.innerType._parse(r)}unwrap(){return this._def.innerType}};T8.create=(r,e)=>new T8({innerType:r,typeName:Rd.ZodNullable,...Dh(e)});var LR=class extends Qh{_parse(r){const{ctx:e}=this._processInputParams(r);let t=e.data;return e.parsedType===Mc.undefined&&(t=this._def.defaultValue()),this._def.innerType._parse({data:t,path:e.path,parent:e})}removeDefault(){return this._def.innerType}};LR.create=(r,e)=>new LR({innerType:r,typeName:Rd.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...Dh(e)});var zR=class extends Qh{_parse(r){const{ctx:e}=this._processInputParams(r),t={...e,common:{...e.common,issues:[]}},n=this._def.innerType._parse({data:t.data,path:t.path,parent:{...t}});return gR(n)?n.then(i=>({status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new Q4(t.common.issues)},input:t.data})})):{status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new Q4(t.common.issues)},input:t.data})}}removeCatch(){return this._def.innerType}};zR.create=(r,e)=>new zR({innerType:r,typeName:Rd.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...Dh(e)});var lk=class extends Qh{_parse(r){if(this._getType(r)!==Mc.nan){const t=this._getOrReturnCtx(r);return ql(t,{code:ds.invalid_type,expected:Mc.nan,received:t.parsedType}),$d}return{status:"valid",value:r.data}}};lk.create=r=>new lk({typeName:Rd.ZodNaN,...Dh(r)});var orn=Symbol("zod_brand"),ufe=class extends Qh{_parse(r){const{ctx:e}=this._processInputParams(r),t=e.data;return this._def.type._parse({data:t,path:e.path,parent:e})}unwrap(){return this._def.type}},ffe=class mlt extends Qh{_parse(e){const{status:t,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{const a=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return a.status==="aborted"?$d:a.status==="dirty"?(t.dirty(),Mw(a.value)):this._def.out._parseAsync({data:a.value,path:n.path,parent:n})})();{const i=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return i.status==="aborted"?$d:i.status==="dirty"?(t.dirty(),{status:"dirty",value:i.value}):this._def.out._parseSync({data:i.value,path:n.path,parent:n})}}static create(e,t){return new mlt({in:e,out:t,typeName:Rd.ZodPipeline})}},OR=class extends Qh{_parse(r){const e=this._def.innerType._parse(r),t=n=>(c7(n)&&(n.value=Object.freeze(n.value)),n);return gR(e)?e.then(n=>t(n)):t(e)}unwrap(){return this._def.innerType}};OR.create=(r,e)=>new OR({innerType:r,typeName:Rd.ZodReadonly,...Dh(e)});function dKe(r,e={},t){return r?Rw.create().superRefine((n,i)=>{var a,o;if(!r(n)){const s=typeof e=="function"?e(n):typeof e=="string"?{message:e}:e,l=(o=(a=s.fatal)!==null&&a!==void 0?a:t)!==null&&o!==void 0?o:!0,c=typeof s=="string"?{message:s}:s;i.addIssue({code:"custom",...c,fatal:l})}}):Rw.create()}var srn={object:x4.lazycreate},Rd;(function(r){r.ZodString="ZodString",r.ZodNumber="ZodNumber",r.ZodNaN="ZodNaN",r.ZodBigInt="ZodBigInt",r.ZodBoolean="ZodBoolean",r.ZodDate="ZodDate",r.ZodSymbol="ZodSymbol",r.ZodUndefined="ZodUndefined",r.ZodNull="ZodNull",r.ZodAny="ZodAny",r.ZodUnknown="ZodUnknown",r.ZodNever="ZodNever",r.ZodVoid="ZodVoid",r.ZodArray="ZodArray",r.ZodObject="ZodObject",r.ZodUnion="ZodUnion",r.ZodDiscriminatedUnion="ZodDiscriminatedUnion",r.ZodIntersection="ZodIntersection",r.ZodTuple="ZodTuple",r.ZodRecord="ZodRecord",r.ZodMap="ZodMap",r.ZodSet="ZodSet",r.ZodFunction="ZodFunction",r.ZodLazy="ZodLazy",r.ZodLiteral="ZodLiteral",r.ZodEnum="ZodEnum",r.ZodEffects="ZodEffects",r.ZodNativeEnum="ZodNativeEnum",r.ZodOptional="ZodOptional",r.ZodNullable="ZodNullable",r.ZodDefault="ZodDefault",r.ZodCatch="ZodCatch",r.ZodPromise="ZodPromise",r.ZodBranded="ZodBranded",r.ZodPipeline="ZodPipeline",r.ZodReadonly="ZodReadonly"})(Rd||(Rd={}));var lrn=(r,e={message:`Input not instance of ${r.name}`})=>dKe(t=>t instanceof r,e),pKe=Cw.create,hKe=bR.create,crn=lk.create,urn=SR.create,mKe=ER.create,frn=wR.create,drn=ik.create,prn=TR.create,hrn=MR.create,mrn=Rw.create,vrn=u7.create,yrn=DS.create,grn=ak.create,_rn=f7.create,xrn=x4.create,brn=x4.strictCreate,Srn=CR.create,Ern=lKe.create,wrn=RR.create,Trn=w8.create,Mrn=cKe.create,Crn=ok.create,Rrn=sk.create,Arn=uKe.create,Prn=AR.create,Drn=PR.create,Nrn=DR.create,Lrn=NR.create,zrn=Pw.create,vKe=K4.create,Orn=kb.create,Urn=T8.create,krn=K4.createWithPreprocess,Frn=ffe.create,Irn=()=>pKe().optional(),Brn=()=>hKe().optional(),jrn=()=>mKe().optional(),Vrn={string:r=>Cw.create({...r,coerce:!0}),number:r=>bR.create({...r,coerce:!0}),boolean:r=>ER.create({...r,coerce:!0}),bigint:r=>SR.create({...r,coerce:!0}),date:r=>wR.create({...r,coerce:!0})},Hrn=$d,Vt=Object.freeze({__proto__:null,defaultErrorMap:Tw,setErrorMap:knn,getErrorMap:tk,makeIssue:nk,EMPTY_PATH:Fnn,addIssueToContext:ql,ParseStatus:O3,INVALID:$d,DIRTY:Mw,OK:o3,isAborted:ofe,isDirty:sfe,isValid:c7,isAsync:gR,get util(){return z1},get objectUtil(){return afe},ZodParsedType:Mc,getParsedType:PS,ZodType:Qh,datetimeRegex:sKe,ZodString:Cw,ZodNumber:bR,ZodBigInt:SR,ZodBoolean:ER,ZodDate:wR,ZodSymbol:ik,ZodUndefined:TR,ZodNull:MR,ZodAny:Rw,ZodUnknown:u7,ZodNever:DS,ZodVoid:ak,ZodArray:f7,ZodObject:x4,ZodUnion:CR,ZodDiscriminatedUnion:lKe,ZodIntersection:RR,ZodTuple:w8,ZodRecord:cKe,ZodMap:ok,ZodSet:sk,ZodFunction:uKe,ZodLazy:AR,ZodLiteral:PR,ZodEnum:DR,ZodNativeEnum:NR,ZodPromise:Pw,ZodEffects:K4,ZodTransformer:K4,ZodOptional:kb,ZodNullable:T8,ZodDefault:LR,ZodCatch:zR,ZodNaN:lk,BRAND:orn,ZodBranded:ufe,ZodPipeline:ffe,ZodReadonly:OR,custom:dKe,Schema:Qh,ZodSchema:Qh,late:srn,get ZodFirstPartyTypeKind(){return Rd},coerce:Vrn,any:mrn,array:_rn,bigint:urn,boolean:mKe,date:frn,discriminatedUnion:Ern,effect:vKe,enum:Nrn,function:Arn,instanceof:lrn,intersection:wrn,lazy:Prn,literal:Drn,map:Crn,nan:crn,nativeEnum:Lrn,never:yrn,null:hrn,nullable:Urn,number:hKe,object:xrn,oboolean:jrn,onumber:Brn,optional:Orn,ostring:Irn,pipeline:Frn,preprocess:krn,promise:zrn,record:Mrn,set:Rrn,strictObject:brn,string:pKe,symbol:drn,transformer:vKe,tuple:Trn,undefined:prn,union:Srn,unknown:vrn,void:grn,NEVER:Hrn,ZodIssueCode:ds,quotelessJson:Unn,ZodError:Q4}),qrn="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",$rn=(r=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(r|=0));for(;r--;)e+=qrn[t[r]&63];return e},yKe={Hz:{baseUnit:"Hz",variants:{MHz:1e6,kHz:1e3,Hz:1}},g:{baseUnit:"g",variants:{kg:1e3,g:1}},Ω:{baseUnit:"Ω",variants:{mΩ:.001,Ω:1,kΩ:1e3,KΩ:1e3,MΩ:1e6,GΩ:1e9,TΩ:1e12}},V:{baseUnit:"V",variants:{mV:.001,V:1,kV:1e3,KV:1e3,MV:1e6,GV:1e9,TV:1e12}},A:{baseUnit:"A",variants:{µA:1e-6,mA:.001,ma:.001,A:1,kA:1e3,MA:1e6}},F:{baseUnit:"F",variants:{pF:1e-12,nF:1e-9,µF:1e-6,uF:1e-6,mF:.001,F:1}},ml:{baseUnit:"ml",variants:{ml:1,mL:1,l:1e3,L:1e3}},deg:{baseUnit:"deg",variants:{rad:180/Math.PI}},ms:{baseUnit:"ms",variants:{s:1e3}},mm:{baseUnit:"mm",variants:{nm:1e-6,µm:.001,um:.001,mm:1,cm:10,dm:100,m:1e3,km:1e6,in:25.4,ft:304.8,IN:25.4,FT:304.8,yd:914.4,mi:1609344,mil:.0254}}},dfe=new Set;for(const[r,e]of Object.entries(yKe)){dfe.add(r);for(const t of Object.keys(e.variants))dfe.add(t)}function Grn(r){for(const[e,t]of Object.entries(yKe))if(r in t.variants)return{baseUnit:t.baseUnit,conversionFactor:t.variants[r]};return{baseUnit:r,conversionFactor:1}}var gKe={tera:1e12,T:1e12,giga:1e9,G:1e9,mega:1e6,M:1e6,kilo:1e3,k:1e3,deci:.1,d:.1,centi:.01,c:.01,milli:.001,m:.001,micro:1e-6,u:1e-6,µ:1e-6,nano:1e-9,n:1e-9,pico:1e-12,p:1e-12},J4=r=>{var s;if(typeof r>"u")return{parsedUnit:null,unitOfValue:null,value:null};if(typeof r=="string"&&r.match(/^[\d\.]+$/))return{value:Number.parseFloat(r),parsedUnit:null,unitOfValue:null};if(typeof r=="number")return{value:r,parsedUnit:null,unitOfValue:null};if(typeof r=="object"&&"x"in r&&"y"in r){const{parsedUnit:l,unitOfValue:c}=J4(r.x);return{parsedUnit:l,unitOfValue:c,value:{x:J4(r.x).value,y:J4(r.y).value}}}const t=(s=r.toString().split("").reverse().join("").match(/[^\d\s]+/))==null?void 0:s[0];if(!t)throw new Error(`Could not determine unit: "${r}"`);const n=t.split("").reverse().join(""),i=r.slice(0,-n.length);if(n in gKe&&!dfe.has(n)){const l=gKe[n];return{parsedUnit:null,unitOfValue:null,value:Number.parseFloat(i)*l}}const{baseUnit:a,conversionFactor:o}=Grn(n);return{parsedUnit:n,unitOfValue:a,value:o*Number.parseFloat(i)}},ck=Vt.string().or(Vt.number()).transform(r=>J4(r).value),pfe=Vt.string().or(Vt.number()).transform(r=>J4(r).value),_Ke=Vt.string().or(Vt.number()).transform(r=>J4(r).value),hfe=Vt.string().or(Vt.number()).transform(r=>J4(r).value),N_=Vt.string().or(Vt.number()).transform(r=>J4(r).value),xKe=Vt.string().or(Vt.number()).transform(r=>J4(r).value),_c=N_,Yrn=Vt.string().or(Vt.number()).transform(r=>J4(r).value),Xrn=Vt.string().or(Vt.number()).transform(r=>J4(r).value),uk=Vt.string().or(Vt.number()).transform(r=>typeof r=="number"?r:r.endsWith("deg")?Number.parseFloat(r.split("deg")[0]):r.endsWith("rad")?Number.parseFloat(r.split("rad")[0])*180/Math.PI:Number.parseFloat(r)),bKe=Vt.number().or(Vt.string().endsWith("mAh")).transform(r=>{if(typeof r=="string"){const e=r.replace("mAh",""),t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error("Invalid capacity");return t}return r}).describe("Battery capacity in mAh"),vy=Vt.object({x:_c,y:_c}),Wrn=vy,UR=Vt.object({x:_c,y:_c,z:_c}),Zrn=UR,mfe=Vt.object({width:Vt.number(),height:Vt.number()}),vv=r=>Vt.string().optional().default(()=>`${r}_${$rn(10)}`),SKe=Vt.enum(["jlcpcb","macrofab","pcbway","digikey","mouser","lcsc"]),o5=Vt.object({type:Vt.literal("source_component"),ftype:Vt.string().optional(),source_component_id:Vt.string(),name:Vt.string(),manufacturer_part_number:Vt.string().optional(),supplier_part_numbers:Vt.record(SKe,Vt.array(Vt.string())).optional(),display_value:Vt.string().optional()}),vfe=o5.extend({ftype:Vt.literal("simple_capacitor"),capacitance:pfe,display_capacitance:Vt.string().optional(),max_decoupling_trace_length:_c.optional()}),yfe=o5.extend({ftype:Vt.literal("simple_resistor"),resistance:ck,display_resistance:Vt.string().optional()}),fk=o5.extend({ftype:Vt.literal("simple_diode")}),EKe=o5.extend({ftype:Vt.literal("simple_ground")}),gfe=o5.extend({ftype:Vt.literal("simple_bug")}).describe("@deprecated"),_fe=o5.extend({ftype:Vt.literal("simple_chip")}),xfe=fk.extend({ftype:Vt.literal("led")}),bfe=o5.extend({ftype:Vt.literal("simple_power_source"),voltage:hfe}),Sfe=o5.extend({ftype:Vt.literal("simple_battery"),capacity:bKe}),Efe=o5.extend({ftype:Vt.literal("simple_inductor"),inductance:_Ke}),wfe=o5.extend({ftype:Vt.literal("simple_push_button")}),Tfe=o5.extend({ftype:Vt.literal("simple_potentiometer"),max_resistance:ck}),wKe=o5.extend({ftype:Vt.literal("simple_crystal"),frequency:Vt.number().describe("Frequency in Hz"),load_capacitance:Vt.number().optional().describe("Load capacitance in pF")}),Mfe=o5.extend({ftype:Vt.literal("simple_pin_header"),pin_count:Vt.number(),gender:Vt.enum(["male","female"]).optional().default("male")}),Cfe=o5.extend({ftype:Vt.literal("simple_resonator"),load_capacitance:pfe,equivalent_series_resistance:ck.optional(),frequency:xKe}),Rfe=o5.extend({ftype:Vt.literal("simple_transistor"),transistor_type:Vt.enum(["npn","pnp"])}),Afe=o5.extend({ftype:Vt.literal("simple_mosfet"),channel_type:Vt.enum(["n","p"]),mosfet_mode:Vt.enum(["enhancement","depletion"])}),TKe=Vt.union([yfe,vfe,fk,EKe,_fe,gfe,xfe,bfe,Sfe,Efe,wfe,Tfe,wKe,Mfe,Cfe,Rfe,Afe]),MKe=Vt.object({type:Vt.literal("source_port"),pin_number:Vt.number().optional(),port_hints:Vt.array(Vt.string()).optional(),name:Vt.string(),source_port_id:Vt.string(),source_component_id:Vt.string()}),CKe=Vt.object({type:Vt.literal("source_trace"),source_trace_id:Vt.string(),connected_source_port_ids:Vt.array(Vt.string()),connected_source_net_ids:Vt.array(Vt.string()),subcircuit_connectivity_map_key:Vt.string().optional(),max_length:Vt.number().optional(),display_name:Vt.string().optional()}),RKe=Vt.object({type:Vt.literal("source_group"),source_group_id:Vt.string(),name:Vt.string().optional()}),AKe=Vt.object({type:Vt.literal("source_net"),source_net_id:Vt.string(),name:Vt.string(),member_source_group_ids:Vt.array(Vt.string()),is_power:Vt.boolean().optional(),is_ground:Vt.boolean().optional(),is_digital_signal:Vt.boolean().optional(),is_analog_signal:Vt.boolean().optional(),trace_width:Vt.number().optional()}),PKe=Vt.object({type:Vt.literal("schematic_box"),schematic_component_id:Vt.string(),width:_c,height:_c,x:_c,y:_c}).describe("Draws a box on the schematic"),DKe=Vt.object({type:Vt.literal("schematic_path"),schematic_component_id:Vt.string(),fill_color:Vt.enum(["red","blue"]).optional(),is_filled:Vt.boolean().optional(),points:Vt.array(vy)}),NKe=Vt.record(Vt.object({left_margin:N_.optional(),right_margin:N_.optional(),top_margin:N_.optional(),bottom_margin:N_.optional()})),LKe=Vt.object({left_size:Vt.number(),right_size:Vt.number(),top_size:Vt.number().optional(),bottom_size:Vt.number().optional()}),zKe=Vt.object({left_side:Vt.object({pins:Vt.array(Vt.number()),direction:Vt.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),right_side:Vt.object({pins:Vt.array(Vt.number()),direction:Vt.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),top_side:Vt.object({pins:Vt.array(Vt.number()),direction:Vt.enum(["left-to-right","right-to-left"]).optional()}).optional(),bottom_side:Vt.object({pins:Vt.array(Vt.number()),direction:Vt.enum(["left-to-right","right-to-left"]).optional()}).optional()}),OKe=Vt.union([LKe,zKe]),UKe=Vt.object({type:Vt.literal("schematic_component"),rotation:uk.default(0),size:mfe,center:vy,source_component_id:Vt.string(),schematic_component_id:Vt.string(),pin_spacing:N_.optional(),pin_styles:NKe.optional(),box_width:N_.optional(),symbol_name:Vt.string().optional(),port_arrangement:OKe.optional(),port_labels:Vt.record(Vt.string()).optional(),symbol_display_value:Vt.string().optional()}),kKe=Vt.object({type:Vt.literal("schematic_line"),schematic_component_id:Vt.string(),x1:_c,x2:_c,y1:_c,y2:_c}),FKe=Vt.object({type:Vt.literal("schematic_trace"),schematic_trace_id:Vt.string(),source_trace_id:Vt.string(),junctions:Vt.array(Vt.object({x:Vt.number(),y:Vt.number()})),edges:Vt.array(Vt.object({from:Vt.object({x:Vt.number(),y:Vt.number()}),to:Vt.object({x:Vt.number(),y:Vt.number()}),is_crossing:Vt.boolean().optional(),from_schematic_port_id:Vt.string().optional(),to_schematic_port_id:Vt.string().optional()}))}),IKe=Vt.object({type:Vt.literal("schematic_text"),schematic_component_id:Vt.string(),schematic_text_id:Vt.string(),text:Vt.string(),position:Vt.object({x:_c,y:_c}),rotation:Vt.number().default(0),anchor:Vt.enum(["center","left","right","top","bottom"]).default("center"),color:Vt.string().default("#000000")}),BKe=Vt.object({type:Vt.literal("schematic_port"),schematic_port_id:Vt.string(),source_port_id:Vt.string(),schematic_component_id:Vt.string().optional(),center:vy,facing_direction:Vt.enum(["up","down","left","right"]).optional(),distance_from_component_edge:Vt.number().optional(),side_of_component:Vt.enum(["top","bottom","left","right"]).optional(),true_ccw_index:Vt.number().optional(),pin_number:Vt.number().optional(),display_pin_label:Vt.string().optional()}).describe("Defines a port on a schematic component"),jKe=Vt.object({type:Vt.literal("schematic_net_label"),source_net_id:Vt.string(),center:vy,anchor_position:vy.optional(),anchor_side:Vt.enum(["top","bottom","left","right"]),text:Vt.string(),symbol_name:Vt.string().optional()}),VKe=Vt.object({type:Vt.literal("schematic_error"),schematic_error_id:Vt.string(),error_type:Vt.literal("schematic_port_not_found"),message:Vt.string()}).describe("Defines a schematic error on the schematic"),dk=Vt.object({type:Vt.literal("schematic_debug_object"),label:Vt.string().optional()}),HKe=dk.extend({shape:Vt.literal("rect"),center:vy,size:mfe}),qKe=dk.extend({shape:Vt.literal("line"),start:vy,end:vy}),$Ke=dk.extend({shape:Vt.literal("point"),center:vy}),GKe=Vt.discriminatedUnion("shape",[HKe,qKe,$Ke]),YKe=Vt.object({type:Vt.literal("schematic_voltage_probe"),schematic_voltage_probe_id:Vt.string(),position:vy,schematic_trace_id:Vt.string(),voltage:hfe.optional()}).describe("Defines a voltage probe measurement point on a schematic trace"),pk=["top","bottom","inner1","inner2","inner3","inner4","inner5","inner6"],Pfe=Vt.enum(pk),s_=Pfe.or(Vt.object({name:Pfe})).transform(r=>typeof r=="string"?r:r.name),Dw=Vt.enum(["top","bottom"]),XKe=Vt.object({x:_c,y:_c,via:Vt.boolean().optional(),via_to_layer:s_.optional()}),Qrn=Vt.array(XKe),WKe=Vt.object({x:_c,y:_c,via:Vt.boolean().optional(),to_layer:s_.optional(),trace_width:_c.optional()}),ZKe=Vt.object({type:Vt.literal("pcb_component"),pcb_component_id:vv("pcb_component"),source_component_id:Vt.string(),center:vy,layer:s_,rotation:uk,width:N_,height:N_}).describe("Defines a component on the PCB"),QKe=Vt.object({type:Vt.literal("pcb_hole"),pcb_hole_id:vv("pcb_hole"),hole_shape:Vt.enum(["circle","square"]),hole_diameter:Vt.number(),x:_c,y:_c}),Krn=QKe.describe("Defines a circular or square hole on the PCB"),KKe=Vt.object({type:Vt.literal("pcb_hole"),pcb_hole_id:vv("pcb_hole"),hole_shape:Vt.literal("oval"),hole_width:Vt.number(),hole_height:Vt.number(),x:_c,y:_c}),Jrn=KKe.describe("Defines an oval hole on the PCB"),JKe=QKe.or(KKe),ein=Vt.object({type:Vt.literal("pcb_plated_hole"),shape:Vt.literal("circle"),outer_diameter:Vt.number(),hole_diameter:Vt.number(),x:_c,y:_c,layers:Vt.array(s_),port_hints:Vt.array(Vt.string()).optional(),pcb_component_id:Vt.string().optional(),pcb_port_id:Vt.string().optional(),pcb_plated_hole_id:vv("pcb_plated_hole")}),tin=Vt.object({type:Vt.literal("pcb_plated_hole"),shape:Vt.enum(["oval","pill"]),outer_width:Vt.number(),outer_height:Vt.number(),hole_width:Vt.number(),hole_height:Vt.number(),x:_c,y:_c,layers:Vt.array(s_),port_hints:Vt.array(Vt.string()).optional(),pcb_component_id:Vt.string().optional(),pcb_port_id:Vt.string().optional(),pcb_plated_hole_id:vv("pcb_plated_hole")}),nin=Vt.object({type:Vt.literal("pcb_plated_hole"),shape:Vt.literal("circular_hole_with_rect_pad"),hole_shape:Vt.literal("circle"),pad_shape:Vt.literal("rect"),hole_diameter:Vt.number(),rect_pad_width:Vt.number(),rect_pad_height:Vt.number(),x:_c,y:_c,layers:Vt.array(s_),port_hints:Vt.array(Vt.string()).optional(),pcb_component_id:Vt.string().optional(),pcb_port_id:Vt.string().optional(),pcb_plated_hole_id:vv("pcb_plated_hole")}),eJe=Vt.union([ein,tin,nin]),tJe=Vt.object({type:Vt.literal("pcb_port"),pcb_port_id:vv("pcb_port"),source_port_id:Vt.string(),pcb_component_id:Vt.string(),x:_c,y:_c,layers:Vt.array(s_)}).describe("Defines a port on the PCB"),rin=Vt.object({type:Vt.literal("pcb_smtpad"),shape:Vt.literal("circle"),pcb_smtpad_id:vv("pcb_smtpad"),x:_c,y:_c,radius:Vt.number(),layer:s_,port_hints:Vt.array(Vt.string()).optional(),pcb_component_id:Vt.string().optional(),pcb_port_id:Vt.string().optional()}),iin=Vt.object({type:Vt.literal("pcb_smtpad"),shape:Vt.literal("rect"),pcb_smtpad_id:vv("pcb_smtpad"),x:_c,y:_c,width:Vt.number(),height:Vt.number(),layer:s_,port_hints:Vt.array(Vt.string()).optional(),pcb_component_id:Vt.string().optional(),pcb_port_id:Vt.string().optional()}),ain=Vt.object({type:Vt.literal("pcb_smtpad"),shape:Vt.literal("rotated_rect"),pcb_smtpad_id:vv("pcb_smtpad"),x:_c,y:_c,width:Vt.number(),height:Vt.number(),ccw_rotation:uk,layer:s_,port_hints:Vt.array(Vt.string()).optional(),pcb_component_id:Vt.string().optional(),pcb_port_id:Vt.string().optional()}),nJe=Vt.union([rin,iin,ain]).describe("Defines an SMT pad on the PCB"),oin=Vt.object({type:Vt.literal("pcb_solder_paste"),shape:Vt.literal("circle"),pcb_solder_paste_id:vv("pcb_solder_paste"),x:_c,y:_c,radius:Vt.number(),layer:s_,pcb_component_id:Vt.string().optional(),pcb_smtpad_id:Vt.string().optional()}),sin=Vt.object({type:Vt.literal("pcb_solder_paste"),shape:Vt.literal("rect"),pcb_solder_paste_id:vv("pcb_solder_paste"),x:_c,y:_c,width:Vt.number(),height:Vt.number(),layer:s_,pcb_component_id:Vt.string().optional(),pcb_smtpad_id:Vt.string().optional()}),rJe=Vt.union([oin,sin]).describe("Defines solderpaste on the PCB"),iJe=Vt.object({type:Vt.literal("pcb_text"),pcb_text_id:vv("pcb_text"),text:Vt.string(),center:vy,layer:s_,width:N_,height:N_,lines:Vt.number(),align:Vt.enum(["bottom-left"])}).describe("Defines text on the PCB"),aJe=Vt.object({route_type:Vt.literal("wire"),x:_c,y:_c,width:_c,start_pcb_port_id:Vt.string().optional(),end_pcb_port_id:Vt.string().optional(),layer:s_}),oJe=Vt.object({route_type:Vt.literal("via"),x:_c,y:_c,from_layer:Vt.string(),to_layer:Vt.string()}),lin=Vt.union([aJe,oJe]),sJe=Vt.object({type:Vt.literal("pcb_trace"),source_trace_id:Vt.string().optional(),pcb_component_id:Vt.string().optional(),pcb_trace_id:vv("pcb_trace"),route_thickness_mode:Vt.enum(["constant","interpolated"]).default("constant").optional(),route_order_index:Vt.number().optional(),should_round_corners:Vt.boolean().optional(),trace_length:Vt.number().optional(),route:Vt.array(Vt.union([Vt.object({route_type:Vt.literal("wire"),x:_c,y:_c,width:_c,start_pcb_port_id:Vt.string().optional(),end_pcb_port_id:Vt.string().optional(),layer:s_}),Vt.object({route_type:Vt.literal("via"),x:_c,y:_c,from_layer:Vt.string(),to_layer:Vt.string()})]))}).describe("Defines a trace on the PCB"),lJe=Vt.object({type:Vt.literal("pcb_trace_error"),pcb_trace_error_id:vv("pcb_trace_error"),error_type:Vt.literal("pcb_trace_error"),message:Vt.string(),center:vy.optional(),pcb_trace_id:Vt.string(),source_trace_id:Vt.string(),pcb_component_ids:Vt.array(Vt.string()),pcb_port_ids:Vt.array(Vt.string())}).describe("Defines a trace error on the PCB"),cJe=Vt.object({type:Vt.literal("pcb_port_not_matched_error"),pcb_error_id:vv("pcb_error"),message:Vt.string(),pcb_component_ids:Vt.array(Vt.string())}).describe("Defines a trace error on the PCB where a port is not matched"),uJe=Vt.object({type:Vt.literal("pcb_via"),pcb_via_id:vv("pcb_via"),x:_c,y:_c,outer_diameter:_c.default("0.6mm"),hole_diameter:_c.default("0.25mm"),from_layer:s_.optional(),to_layer:s_.optional(),layers:Vt.array(s_),pcb_trace_id:Vt.string().optional()}).describe("Defines a via on the PCB"),fJe=Vt.object({type:Vt.literal("pcb_board"),pcb_board_id:vv("pcb_board"),width:N_,height:N_,center:vy,thickness:N_.optional().default(1.4),num_layers:Vt.number().optional().default(4),outline:Vt.array(vy).optional()}).describe("Defines the board outline of the PCB"),dJe=Vt.object({type:Vt.literal("pcb_placement_error"),pcb_placement_error_id:vv("pcb_placement_error"),message:Vt.string()}).describe("Defines a placement error on the PCB"),pJe=Vt.object({type:Vt.literal("pcb_trace_hint"),pcb_trace_hint_id:vv("pcb_trace_hint"),pcb_port_id:Vt.string(),pcb_component_id:Vt.string(),route:Vt.array(WKe)}).describe("A hint that can be used during generation of a PCB trace"),hJe=Vt.object({type:Vt.literal("pcb_silkscreen_line"),pcb_silkscreen_line_id:vv("pcb_silkscreen_line"),pcb_component_id:Vt.string(),stroke_width:_c.default("0.1mm"),x1:_c,y1:_c,x2:_c,y2:_c,layer:Dw}).describe("Defines a silkscreen line on the PCB"),mJe=Vt.object({type:Vt.literal("pcb_silkscreen_path"),pcb_silkscreen_path_id:vv("pcb_silkscreen_path"),pcb_component_id:Vt.string(),layer:Dw,route:Vt.array(vy),stroke_width:N_}).describe("Defines a silkscreen path on the PCB"),vJe=Vt.object({type:Vt.literal("pcb_silkscreen_text"),pcb_silkscreen_text_id:vv("pcb_silkscreen_text"),font:Vt.literal("tscircuit2024").default("tscircuit2024"),font_size:_c.default("0.2mm"),pcb_component_id:Vt.string(),text:Vt.string(),ccw_rotation:Vt.number().optional(),layer:s_,is_mirrored:Vt.boolean().default(!1).optional(),anchor_position:vy.default({x:0,y:0}),anchor_alignment:Vt.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center")}).describe("Defines silkscreen text on the PCB"),yJe=Vt.object({type:Vt.literal("pcb_silkscreen_rect"),pcb_silkscreen_rect_id:vv("pcb_silkscreen_rect"),pcb_component_id:Vt.string(),center:vy,width:N_,height:N_,layer:s_}).describe("Defines a silkscreen rect on the PCB"),gJe=Vt.object({type:Vt.literal("pcb_silkscreen_circle"),pcb_silkscreen_circle_id:vv("pcb_silkscreen_circle"),pcb_component_id:Vt.string(),center:vy,radius:N_,layer:Dw}).describe("Defines a silkscreen circle on the PCB"),_Je=Vt.object({type:Vt.literal("pcb_silkscreen_oval"),pcb_silkscreen_oval_id:vv("pcb_silkscreen_oval"),pcb_component_id:Vt.string(),center:vy,radius_x:_c,radius_y:_c,layer:Dw}).describe("Defines a silkscreen oval on the PCB"),xJe=Vt.object({type:Vt.literal("pcb_fabrication_note_text"),pcb_fabrication_note_text_id:vv("pcb_fabrication_note_text"),font:Vt.literal("tscircuit2024").default("tscircuit2024"),font_size:_c.default("1mm"),pcb_component_id:Vt.string(),text:Vt.string(),layer:Dw,anchor_position:vy.default({x:0,y:0}),anchor_alignment:Vt.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),color:Vt.string().optional()}).describe("Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators"),bJe=Vt.object({type:Vt.literal("pcb_fabrication_note_path"),pcb_fabrication_note_path_id:vv("pcb_fabrication_note_path"),pcb_component_id:Vt.string(),layer:s_,route:Vt.array(vy),stroke_width:N_,color:Vt.string().optional()}).describe("Defines a fabrication path on the PCB for fabricators or assemblers"),SJe=Vt.object({type:Vt.literal("pcb_keepout"),shape:Vt.literal("rect"),center:vy,width:_c,height:_c,pcb_keepout_id:Vt.string(),layers:Vt.array(Vt.string()),description:Vt.string().optional()}).or(Vt.object({type:Vt.literal("pcb_keepout"),shape:Vt.literal("circle"),center:vy,radius:_c,pcb_keepout_id:Vt.string(),layers:Vt.array(Vt.string()),description:Vt.string().optional()})),EJe=Vt.object({type:Vt.literal("pcb_missing_footprint_error"),pcb_missing_footprint_error_id:vv("pcb_missing_footprint_error"),error_type:Vt.literal("pcb_missing_footprint_error"),source_component_id:Vt.string(),message:Vt.string()}).describe("Defines a missing footprint error on the PCB"),wJe=Vt.object({type:Vt.literal("pcb_manual_edit_conflict_error"),pcb_error_id:vv("pcb_manual_edit_conflict_error"),message:Vt.string(),pcb_component_id:Vt.string(),source_component_id:Vt.string()}).describe("Error emitted when a component has both manual placement and explicit pcbX/pcbY coordinates"),TJe=Vt.object({type:Vt.literal("pcb_group"),pcb_group_id:vv("pcb_group"),width:N_,height:N_,center:vy,pcb_component_ids:Vt.array(Vt.string()),name:Vt.string().optional(),description:Vt.string().optional()}).describe("Defines a group of components on the PCB"),MJe=Vt.object({type:Vt.literal("cad_component"),cad_component_id:Vt.string(),pcb_component_id:Vt.string(),source_component_id:Vt.string(),position:UR,rotation:UR.optional(),size:UR.optional(),layer:s_.optional(),footprinter_string:Vt.string().optional(),model_obj_url:Vt.string().optional(),model_stl_url:Vt.string().optional(),model_3mf_url:Vt.string().optional(),model_jscad:Vt.any().optional()}).describe("Defines a component on the PCB"),CJe=Vt.union([CKe,MKe,TKe,xfe,AKe,RKe,gfe,_fe,vfe,fk,yfe,bfe,Sfe,Efe,Mfe,Cfe,Rfe,Afe,Tfe,wfe,ZKe,JKe,EJe,wJe,eJe,SJe,tJe,iJe,sJe,uJe,nJe,rJe,fJe,TJe,pJe,hJe,mJe,vJe,yJe,gJe,_Je,lJe,dJe,cJe,bJe,xJe,PKe,IKe,kKe,UKe,BKe,FKe,DKe,VKe,jKe,GKe,YKe,MJe]),RJe=CJe,Dfe=(r,e={})=>{let t=r._internal_store;if(!t){t={counts:{}},r._internal_store=t;for(const i of r){const a=i.type,o=i[`${a}_id`];if(!o)continue;const s=Number.parseInt(o.split("_").pop());Number.isNaN(s)||(t.counts[a]=Math.max(t.counts[a]??0,s))}}return new Proxy({},{get:(i,a)=>a==="toArray"?()=>r:{get:o=>r.find(s=>s.type===a&&s[`${a}_id`]===o),getUsing:o=>{const s=Object.keys(o);if(s.length!==1)throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");const l=s[0],c=l.replace("_id",""),u=r.find(f=>f.type===c&&f[l]===o[l]);return u?r.find(f=>f.type===a&&f[`${a}_id`]===u[`${a}_id`]):null},getWhere:o=>{const s=Object.keys(o);return r.find(l=>l.type===a&&s.every(c=>l[c]===o[c]))},list:o=>{const s=o?Object.keys(o):[];return r.filter(l=>l.type===a&&s.every(c=>l[c]===o[c]))},insert:o=>{var c;(c=t.counts)[a]??(c[a]=-1),t.counts[a]++;const s=t.counts[a],l={type:a,[`${a}_id`]:`${a}_${s}`,...o};return e.validateInserts&&(tKe[a]??RJe).parse(l),r.push(l),l},delete:o=>{const s=r.find(l=>l[`${a}_id`]===o);s&&r.splice(r.indexOf(s),1)},update:(o,s)=>{const l=r.find(c=>c.type===a&&c[`${a}_id`]===o);if(l)return Object.assign(l,s),l},select:o=>{if(a==="source_component")return r.find(s=>s.type==="source_component"&&s.name===o.replace(/\./g,""));if(a==="pcb_port"||a==="source_port"||a==="schematic_port"){const[s,l]=o.replace(/\./g,"").split(/[\s\>]+/),c=r.find(f=>f.type==="source_component"&&f.name===s);if(!c)return null;const u=r.find(f=>f.type==="source_port"&&f.source_component_id===c.source_component_id&&(f.name===l||(f.port_hints??[]).includes(l)));if(!u)return null;if(a==="source_port")return u;if(a==="pcb_port")return r.find(f=>f.type==="pcb_port"&&f.source_port_id===u.source_port_id);if(a==="schematic_port")return r.find(f=>f.type==="schematic_port"&&f.source_port_id===u.source_port_id)}}}})};Dfe.unparsed=Dfe;var M8=Dfe,cin=(r,e)=>{if(r.type==="pcb_plated_hole"||r.type==="pcb_hole"||r.type==="pcb_via"||r.type==="pcb_smtpad"||r.type==="pcb_port"){const{x:t,y:n}=li(e,{x:r.x,y:r.y});r.x=t,r.y=n}else if(r.type==="pcb_keepout"||r.type==="pcb_board")r.center=li(e,r.center);else if(r.type==="pcb_silkscreen_text"||r.type==="pcb_fabrication_note_text")r.anchor_position=li(e,r.anchor_position);else if(r.type==="pcb_silkscreen_circle"||r.type==="pcb_silkscreen_rect"||r.type==="pcb_component")r.center=li(e,r.center);else if(r.type==="pcb_silkscreen_path"||r.type==="pcb_trace"||r.type==="pcb_fabrication_note_path")r.route=r.route.map(t=>{const n=li(e,t);return t.x=n.x,t.y=n.y,t});else if(r.type==="pcb_silkscreen_line"){const t={x:r.x1,y:r.y1},n={x:r.x2,y:r.y2},i=li(e,t),a=li(e,n);r.x1=i.x,r.y1=i.y,r.x2=a.x,r.y2=a.y}else if(r.type==="cad_component"){const t=li(e,{x:r.position.x,y:r.position.y});r.position.x=t.x,r.position.y=t.y}return r};function uin(r){let e=0;if(r.length==0)return e;for(var t=0;t<r.length;t++){var n=r.charCodeAt(t);e=(e<<5)-e+n,e=e&e}return Math.abs(e)}var AJe=[["#69d2e7","#a7dbd8","#e0e4cc","#f38630","#fa6900"],["#fe4365","#fc9d9a","#f9cdad","#c8c8a9","#83af9b"],["#ecd078","#d95b43","#c02942","#542437","#53777a"],["#556270","#4ecdc4","#c7f464","#ff6b6b","#c44d58"],["#774f38","#e08e79","#f1d4af","#ece5ce","#c5e0dc"],["#e8ddcb","#cdb380","#036564","#033649","#031634"],["#490a3d","#bd1550","#e97f02","#f8ca00","#8a9b0f"],["#594f4f","#547980","#45ada8","#9de0ad","#e5fcc2"],["#00a0b0","#6a4a3c","#cc333f","#eb6841","#edc951"],["#e94e77","#d68189","#c6a49a","#c6e5d9","#f4ead5"],["#3fb8af","#7fc7af","#dad8a7","#ff9e9d","#ff3d7f"],["#d9ceb2","#948c75","#d5ded9","#7a6a53","#99b2b7"],["#ffffff","#cbe86b","#f2e9e1","#1c140d","#cbe86b"],["#efffcd","#dce9be","#555152","#2e2633","#99173c"],["#343838","#005f6b","#008c9e","#00b4cc","#00dffc"],["#413e4a","#73626e","#b38184","#f0b49e","#f7e4be"],["#ff4e50","#fc913a","#f9d423","#ede574","#e1f5c4"],["#99b898","#fecea8","#ff847c","#e84a5f","#2a363b"],["#655643","#80bca3","#f6f7bd","#e6ac27","#bf4d28"],["#00a8c6","#40c0cb","#f9f2e7","#aee239","#8fbe00"],["#351330","#424254","#64908a","#e8caa4","#cc2a41"],["#554236","#f77825","#d3ce3d","#f1efa5","#60b99a"],["#5d4157","#838689","#a8caba","#cad7b2","#ebe3aa"],["#8c2318","#5e8c6a","#88a65e","#bfb35a","#f2c45a"],["#fad089","#ff9c5b","#f5634a","#ed303c","#3b8183"],["#ff4242","#f4fad2","#d4ee5e","#e1edb9","#f0f2eb"],["#f8b195","#f67280","#c06c84","#6c5b7b","#355c7d"],["#d1e751","#ffffff","#000000","#4dbce9","#26ade4"],["#1b676b","#519548","#88c425","#bef202","#eafde6"],["#5e412f","#fcebb6","#78c0a8","#f07818","#f0a830"],["#bcbdac","#cfbe27","#f27435","#f02475","#3b2d38"],["#452632","#91204d","#e4844a","#e8bf56","#e2f7ce"],["#eee6ab","#c5bc8e","#696758","#45484b","#36393b"],["#f0d8a8","#3d1c00","#86b8b1","#f2d694","#fa2a00"],["#2a044a","#0b2e59","#0d6759","#7ab317","#a0c55f"],["#f04155","#ff823a","#f2f26f","#fff7bd","#95cfb7"],["#b9d7d9","#668284","#2a2829","#493736","#7b3b3b"],["#bbbb88","#ccc68d","#eedd99","#eec290","#eeaa88"],["#b3cc57","#ecf081","#ffbe40","#ef746f","#ab3e5b"],["#a3a948","#edb92e","#f85931","#ce1836","#009989"],["#300030","#480048","#601848","#c04848","#f07241"],["#67917a","#170409","#b8af03","#ccbf82","#e33258"],["#aab3ab","#c4cbb7","#ebefc9","#eee0b7","#e8caaf"],["#e8d5b7","#0e2430","#fc3a51","#f5b349","#e8d5b9"],["#ab526b","#bca297","#c5ceae","#f0e2a4","#f4ebc3"],["#607848","#789048","#c0d860","#f0f0d8","#604848"],["#b6d8c0","#c8d9bf","#dadabd","#ecdbbc","#fedcba"],["#a8e6ce","#dcedc2","#ffd3b5","#ffaaa6","#ff8c94"],["#3e4147","#fffedf","#dfba69","#5a2e2e","#2a2c31"],["#fc354c","#29221f","#13747d","#0abfbc","#fcf7c5"],["#cc0c39","#e6781e","#c8cf02","#f8fcc1","#1693a7"],["#1c2130","#028f76","#b3e099","#ffeaad","#d14334"],["#a7c5bd","#e5ddcb","#eb7b59","#cf4647","#524656"],["#dad6ca","#1bb0ce","#4f8699","#6a5e72","#563444"],["#5c323e","#a82743","#e15e32","#c0d23e","#e5f04c"],["#edebe6","#d6e1c7","#94c7b6","#403b33","#d3643b"],["#fdf1cc","#c6d6b8","#987f69","#e3ad40","#fcd036"],["#230f2b","#f21d41","#ebebbc","#bce3c5","#82b3ae"],["#b9d3b0","#81bda4","#b28774","#f88f79","#f6aa93"],["#3a111c","#574951","#83988e","#bcdea5","#e6f9bc"],["#5e3929","#cd8c52","#b7d1a3","#dee8be","#fcf7d3"],["#1c0113","#6b0103","#a30006","#c21a01","#f03c02"],["#000000","#9f111b","#b11623","#292c37","#cccccc"],["#382f32","#ffeaf2","#fcd9e5","#fbc5d8","#f1396d"],["#e3dfba","#c8d6bf","#93ccc6","#6cbdb5","#1a1f1e"],["#f6f6f6","#e8e8e8","#333333","#990100","#b90504"],["#1b325f","#9cc4e4","#e9f2f9","#3a89c9","#f26c4f"],["#a1dbb2","#fee5ad","#faca66","#f7a541","#f45d4c"],["#c1b398","#605951","#fbeec2","#61a6ab","#accec0"],["#5e9fa3","#dcd1b4","#fab87f","#f87e7b","#b05574"],["#951f2b","#f5f4d7","#e0dfb1","#a5a36c","#535233"],["#8dccad","#988864","#fea6a2","#f9d6ac","#ffe9af"],["#2d2d29","#215a6d","#3ca2a2","#92c7a3","#dfece6"],["#413d3d","#040004","#c8ff00","#fa023c","#4b000f"],["#eff3cd","#b2d5ba","#61ada0","#248f8d","#605063"],["#ffefd3","#fffee4","#d0ecea","#9fd6d2","#8b7a5e"],["#cfffdd","#b4dec1","#5c5863","#a85163","#ff1f4c"],["#9dc9ac","#fffec7","#f56218","#ff9d2e","#919167"],["#4e395d","#827085","#8ebe94","#ccfc8e","#dc5b3e"],["#a8a7a7","#cc527a","#e8175d","#474747","#363636"],["#f8edd1","#d88a8a","#474843","#9d9d93","#c5cfc6"],["#046d8b","#309292","#2fb8ac","#93a42a","#ecbe13"],["#f38a8a","#55443d","#a0cab5","#cde9ca","#f1edd0"],["#a70267","#f10c49","#fb6b41","#f6d86b","#339194"],["#ff003c","#ff8a00","#fabe28","#88c100","#00c176"],["#ffedbf","#f7803c","#f54828","#2e0d23","#f8e4c1"],["#4e4d4a","#353432","#94ba65","#2790b0","#2b4e72"],["#0ca5b0","#4e3f30","#fefeeb","#f8f4e4","#a5b3aa"],["#4d3b3b","#de6262","#ffb88c","#ffd0b3","#f5e0d3"],["#fffbb7","#a6f6af","#66b6ab","#5b7c8d","#4f2958"],["#edf6ee","#d1c089","#b3204d","#412e28","#151101"],["#9d7e79","#ccac95","#9a947c","#748b83","#5b756c"],["#fcfef5","#e9ffe1","#cdcfb7","#d6e6c3","#fafbe3"],["#9cddc8","#bfd8ad","#ddd9ab","#f7af63","#633d2e"],["#30261c","#403831","#36544f","#1f5f61","#0b8185"],["#aaff00","#ffaa00","#ff00aa","#aa00ff","#00aaff"],["#d1313d","#e5625c","#f9bf76","#8eb2c5","#615375"],["#ffe181","#eee9e5","#fad3b2","#ffba7f","#ff9c97"],["#73c8a9","#dee1b6","#e1b866","#bd5532","#373b44"],["#805841","#dcf7f3","#fffcdd","#ffd8d8","#f5a2a2"]],fin=r=>{var s,l,c;let{x:e,y:t,width:n,height:i}={...r,...r.size,...r.center,...r.position};r.x1!==void 0&&r.x2!==void 0&&r.y1!==void 0&&r.y2!==void 0&&(e=(r.x1+r.x2)/2,t=(r.y1+r.y2)/2,n=Math.abs(r.x1-r.x2),i=Math.abs(r.y1-r.y2));const a=r.text||r.name||((s=r.source)==null?void 0:s.text)||((l=r.source)==null?void 0:l.name)||"?",o=r;return e===void 0||t===void 0?null:(n===void 0&&"outer_diameter"in r&&(n=r.outer_diameter,i=r.outer_diameter),(n===void 0||i===void 0)&&(n=.1,i=.1),{x:e,y:t,width:n,height:i,title:a,content:o,bg_color:((c=AJe[uin(r.type||a)%AJe.length])==null?void 0:c[4])??"#f00"})},din=r=>!!r,pin=r=>{const e=r.filter(c=>c.type.startsWith("pcb_")).concat(r.filter(c=>c.type==="pcb_trace").flatMap(c=>c.route)).map(c=>fin(c)).filter(din);if(e.length===0)return{center:{x:0,y:0},width:0,height:0};let t=e[0].x-e[0].width/2,n=e[0].x+e[0].width/2,i=e[0].y-e[0].height/2,a=e[0].y+e[0].height/2;for(const c of e.slice(1))t=Math.min(t,c.x-c.width/2),n=Math.max(n,c.x+c.width/2),i=Math.min(i,c.y-c.height/2),a=Math.max(a,c.y+c.height/2);const o=n-t,s=a-i;return{center:{x:t+o/2,y:i+s/2},width:o,height:s}},hin=(r={})=>rPe(e=>({selected_layer:"top",pcb_viewer_id:`pcb_viewer_${Math.random().toString().slice(2,10)}`,in_edit_mode:!1,in_move_footprint_mode:!1,in_draw_trace_mode:!1,is_moving_component:!1,is_drawing_trace:!1,is_mouse_over_container:!1,is_showing_multiple_traces_length:!1,is_showing_rats_nest:!1,...r,selectLayer:t=>e({selected_layer:t}),setEditMode:t=>e({in_edit_mode:t!=="off",in_move_footprint_mode:t==="move_footprint",in_draw_trace_mode:t==="draw_trace",is_moving_component:!1,is_drawing_trace:!1}),setIsShowingRatsNest:t=>e({is_showing_rats_nest:t}),setIsMovingComponent:t=>e({is_moving_component:t}),setIsDrawingTrace:t=>e({is_drawing_trace:t}),setIsMouseOverContainer:t=>e({is_mouse_over_container:t}),setIsShowingMultipleTracesLength:t=>e({is_showing_multiple_traces_length:t})})),k5=r=>{const e=Ct.useContext(PJe);return pPe(e,r)},PJe=Ct.createContext(null),min=({children:r,initialState:e})=>{const t=Ct.useMemo(()=>hin(e),[]);return _t.jsx(PJe.Provider,{value:t,children:r})},vin=(r,e)=>{if(r.find(n=>n.type==="pcb_trace_hint"&&n.pcb_trace_hint_id===e.pcb_trace_hint_id))r=r.map(n=>n.pcb_trace_hint_id===e.pcb_trace_hint_id?{...n,route:e.route}:n);else{const n=M8(r).pcb_port.get(e.pcb_port_id);r=r.filter(i=>!(i.type==="pcb_trace_hint"&&i.pcb_port_id===e.pcb_port_id)).concat([{type:"pcb_trace_hint",pcb_trace_hint_id:e.pcb_trace_hint_id,route:e.route,pcb_port_id:e.pcb_port_id,pcb_component_id:n==null?void 0:n.pcb_component_id}])}return r},yin=(r,e)=>{r=JSON.parse(JSON.stringify(r));for(const t of e)if(t.pcb_edit_event_type==="edit_component_location"){const n=Th(t.new_center.x-t.original_center.x,t.new_center.y-t.original_center.y);r=r.map(i=>i.pcb_component_id!==t.pcb_component_id?i:cin(i,n))}else t.pcb_edit_event_type==="edit_trace_hint"&&(r=vin(r,t));return r},gin=()=>{const r=k5(t=>t.pcb_viewer_id),e=(t,n)=>W9(t,{containerId:r,...n});return e.error=(t,n)=>W9.error(t,{containerId:r,...n}),e.promise=W9.promise,e},_in=()=>{Ct.useEffect(()=>{Btn()},[]);const r=k5(e=>e.pcb_viewer_id);return _t.jsx(Itn,{position:"top-center",containerId:r})},xin=function(){},DJe=typeof window<"u",bin=DJe?Ct.useLayoutEffect:Ct.useEffect,Sin=bin,NJe={x:0,y:0,width:0,height:0,top:0,left:0,bottom:0,right:0};function Ein(){var r=Ct.useState(null),e=r[0],t=r[1],n=Ct.useState(NJe),i=n[0],a=n[1],o=Ct.useMemo(function(){return new window.ResizeObserver(function(s){if(s[0]){var l=s[0].contentRect,c=l.x,u=l.y,f=l.width,h=l.height,v=l.top,x=l.left,E=l.bottom,S=l.right;a({x:c,y:u,width:f,height:h,top:v,left:x,bottom:E,right:S})}})},[]);return Sin(function(){if(e)return o.observe(e),function(){o.disconnect()}},[e]),[t,i]}var win=DJe&&typeof window.ResizeObserver<"u"?Ein:function(){return[xin,NJe]},Tin=(r={})=>{const e=Ct.useRef(null),[t,n]=Ct.useState(0),i=r.canvasElm??e.current,[a,o]=Ct.useState(r.initialTransform??Yv()),[s,l]=Ct.useState(0),[c,u]=Ct.useReducer(S=>S+1,0),f=Ct.useCallback(S=>{r.onSetTransform&&r.onSetTransform(S),r.transform||o(S)},[r.onSetTransform,o]),h=Ct.useCallback(S=>{f(S),u()},[f]),v=r.transform??a,x=Ct.useCallback(()=>{n(Date.now())},[]);Ct.useEffect(()=>{const S=r.canvasElm??e.current;if(S&&!i){l(s+1);return}if(!S){const fe=setTimeout(()=>{l(s+1)},100);return()=>clearTimeout(fe)}let b=r.transform??a,C={x:0,y:0},N={x:0,y:0},U=!1;const G=fe=>({x:fe.pageX-S.getBoundingClientRect().left-window.scrollX,y:fe.pageY-S.getBoundingClientRect().top-window.scrollY});function Z(fe){r.enabled!==!1&&(r.shouldDrag&&!r.shouldDrag(fe)||(C=G(fe),!(Date.now()-t<100)&&(U=!0,fe.preventDefault())))}function $(fe){if(!U||r.enabled===!1||r.shouldDrag&&!r.shouldDrag(fe))return;N=G(fe);const de=J0(Th(N.x-C.x,N.y-C.y),b);f(de),b=de,U=!1}function te(fe){G(fe),!(!U||r.enabled===!1)&&(r.shouldDrag&&!r.shouldDrag(fe)||(N=G(fe),f(J0(Th(N.x-C.x,N.y-C.y),b))))}function re(fe){if(r.enabled===!1||r.shouldDrag&&!r.shouldDrag(fe))return;const de=G(fe),ye=J0(Th(de.x,de.y),Q5(1-fe.deltaY/1e3,1-fe.deltaY/1e3),Th(-de.x,-de.y),b);f(ye),b=ye,fe.preventDefault()}function se(fe){if(!U||r.shouldDrag&&!r.shouldDrag(fe))return;if(S){const ye=S.getBoundingClientRect();if(fe.clientX>=ye.left+10&&fe.clientX<=ye.right-10&&fe.clientY>=ye.top+10&&fe.clientY<=ye.bottom-10)return}U=!1,N=G(fe);const de=J0(Th(N.x-C.x,N.y-C.y),b);f(de),b=de}return S.addEventListener("mousedown",Z),S.addEventListener("mouseup",$),window.addEventListener("mousemove",te),S.addEventListener("mouseout",se),S.addEventListener("wheel",re),()=>{S.removeEventListener("mousedown",Z),S.removeEventListener("mouseup",$),window.removeEventListener("mousemove",te),S.removeEventListener("mouseout",se),S.removeEventListener("wheel",re)}},[i,s,c,t,r.enabled,r.shouldDrag]);const E=Ct.useCallback(S=>li(v,S),[v]);return{ref:e,transform:v,applyTransformToPoint:E,setTransform:h,cancelDrag:x}},Min=Tin,N2={"3d_viewer":{background_bottom:"rgb(102, 102, 128)",background_top:"rgb(204, 204, 230)",board:"rgb(51, 43, 23)",copper:"rgb(179, 156, 0)",silkscreen_bottom:"rgb(230, 230, 230)",silkscreen_top:"rgb(230, 230, 230)",soldermask:"rgb(20, 51, 36)",solderpaste:"rgb(128, 128, 128)"},board:{anchor:"rgb(255, 38, 226)",aux_items:"rgb(255, 255, 255)",b_adhes:"rgb(0, 0, 132)",b_crtyd:"rgb(255, 38, 226)",b_fab:"rgb(88, 93, 132)",b_mask:"rgba(2, 255, 238, 0.400)",b_paste:"rgb(0, 194, 194)",b_silks:"rgb(232, 178, 167)",background:"rgb(0, 16, 35)",cmts_user:"rgb(89, 148, 220)",copper:{b:"rgb(77, 127, 196)",f:"rgb(200, 52, 52)",in1:"rgb(127, 200, 127)",in10:"rgb(237, 124, 51)",in11:"rgb(91, 195, 235)",in12:"rgb(247, 111, 142)",in13:"rgb(167, 165, 198)",in14:"rgb(40, 204, 217)",in15:"rgb(232, 178, 167)",in16:"rgb(242, 237, 161)",in17:"rgb(237, 124, 51)",in18:"rgb(91, 195, 235)",in19:"rgb(247, 111, 142)",in2:"rgb(206, 125, 44)",in20:"rgb(167, 165, 198)",in21:"rgb(40, 204, 217)",in22:"rgb(232, 178, 167)",in23:"rgb(242, 237, 161)",in24:"rgb(237, 124, 51)",in25:"rgb(91, 195, 235)",in26:"rgb(247, 111, 142)",in27:"rgb(167, 165, 198)",in28:"rgb(40, 204, 217)",in29:"rgb(232, 178, 167)",in3:"rgb(79, 203, 203)",in30:"rgb(242, 237, 161)",in4:"rgb(219, 98, 139)",in5:"rgb(167, 165, 198)",in6:"rgb(40, 204, 217)",in7:"rgb(232, 178, 167)",in8:"rgb(242, 237, 161)",in9:"rgb(141, 203, 129)"},cursor:"rgb(255, 255, 255)",drc:"rgb(194, 194, 194)",drc_error:"rgba(215, 91, 107, 0.800)",drc_exclusion:"rgb(255, 255, 255)",drc_warning:"rgba(255, 208, 66, 0.902)",dwgs_user:"rgb(194, 194, 194)",eco1_user:"rgb(180, 219, 210)",eco2_user:"rgb(216, 200, 82)",edge_cuts:"rgb(208, 210, 205)",f_adhes:"rgb(132, 0, 132)",f_crtyd:"rgb(255, 0, 245)",f_fab:"rgb(175, 175, 175)",f_mask:"rgba(216, 100, 255, 0.400)",f_paste:"rgba(180, 160, 154, 0.902)",f_silks:"rgb(242, 237, 161)",footprint_text_back:"rgb(0, 0, 132)",footprint_text_front:"rgb(194, 194, 194)",footprint_text_invisible:"rgb(132, 132, 132)",grid:"rgb(132, 132, 132)",grid_axes:"rgb(194, 194, 194)",margin:"rgb(255, 38, 226)",microvia:"rgb(0, 132, 132)",no_connect:"rgb(0, 0, 132)",pad_back:"rgb(77, 127, 196)",pad_front:"rgb(200, 52, 52)",pad_plated_hole:"rgb(194, 194, 0)",pad_through_hole:"rgb(227, 183, 46)",plated_hole:"rgb(26, 196, 210)",ratsnest:"rgba(245, 255, 213, 0.702)",select_overlay:"rgb(4, 255, 67)",through_via:"rgb(236, 236, 236)",user_1:"rgb(194, 194, 194)",user_2:"rgb(89, 148, 220)",user_3:"rgb(180, 219, 210)",user_4:"rgb(216, 200, 82)",user_5:"rgb(194, 194, 194)",user_6:"rgb(89, 148, 220)",user_7:"rgb(180, 219, 210)",user_8:"rgb(216, 200, 82)",user_9:"rgb(232, 178, 167)",via_blind_buried:"rgb(187, 151, 38)",via_hole:"rgb(227, 183, 46)",via_micro:"rgb(0, 132, 132)",via_through:"rgb(236, 236, 236)",worksheet:"rgb(200, 114, 171)"},gerbview:{axes:"rgb(0, 0, 132)",background:"rgb(0, 0, 0)",dcodes:"rgb(255, 255, 255)",grid:"rgb(132, 132, 132)",layers:["rgb(132, 0, 0)","rgb(194, 194, 0)","rgb(194, 0, 194)","rgb(194, 0, 0)","rgb(0, 132, 132)","rgb(0, 132, 0)","rgb(0, 0, 132)","rgb(132, 132, 132)","rgb(132, 0, 132)","rgb(194, 194, 194)","rgb(132, 0, 132)","rgb(132, 0, 0)","rgb(132, 132, 0)","rgb(194, 194, 194)","rgb(0, 0, 132)","rgb(0, 132, 0)","rgb(132, 0, 0)","rgb(194, 194, 0)","rgb(194, 0, 194)","rgb(194, 0, 0)","rgb(0, 132, 132)","rgb(0, 132, 0)","rgb(0, 0, 132)","rgb(132, 132, 132)","rgb(132, 0, 132)","rgb(194, 194, 194)","rgb(132, 0, 132)","rgb(132, 0, 0)","rgb(132, 132, 0)","rgb(194, 194, 194)","rgb(0, 0, 132)","rgb(0, 132, 0)","rgb(132, 0, 0)","rgb(194, 194, 0)","rgb(194, 0, 194)","rgb(194, 0, 0)","rgb(0, 132, 132)","rgb(0, 132, 0)","rgb(0, 0, 132)","rgb(132, 132, 132)","rgb(132, 0, 132)","rgb(194, 194, 194)","rgb(132, 0, 132)","rgb(132, 0, 0)","rgb(132, 132, 0)","rgb(194, 194, 194)","rgb(0, 0, 132)","rgb(0, 132, 0)","rgb(132, 0, 0)","rgb(194, 194, 0)","rgb(194, 0, 194)","rgb(194, 0, 0)","rgb(0, 132, 132)","rgb(0, 132, 0)","rgb(0, 0, 132)","rgb(132, 132, 132)","rgb(132, 0, 132)","rgb(194, 194, 194)","rgb(132, 0, 132)","rgb(132, 0, 0)"],negative_objects:"rgb(132, 132, 132)",worksheet:"rgb(0, 0, 132)"},palette:["rgb(132, 0, 0)","rgb(194, 194, 0)","rgb(194, 0, 194)","rgb(194, 0, 0)","rgb(0, 132, 132)","rgb(0, 132, 0)","rgb(0, 0, 132)","rgb(132, 132, 132)","rgb(132, 0, 132)","rgb(194, 194, 194)","rgb(132, 0, 132)","rgb(132, 0, 0)","rgb(132, 132, 0)","rgb(194, 194, 194)","rgb(0, 0, 132)","rgb(0, 132, 0)"],schematic:{anchor:"rgb(0, 0, 255)",aux_items:"rgb(0, 0, 0)",background:"rgb(33, 33, 33)",brightened:"rgb(204, 204, 204)",bus:"rgb(0, 96, 192)",bus_junction:"rgb(0, 96, 192)",component_body:"rgb(44, 44, 44)",component_outline:"rgb(192, 0, 0)",cursor:"rgb(224, 224, 224)",erc_error:"rgba(192, 48, 48, 0.800)",erc_warning:"rgba(192, 140, 0, 0.800)",fields:"rgb(128, 0, 160)",grid:"rgb(60, 60, 60)",grid_axes:"rgb(60, 60, 60)",hidden:"rgb(194, 194, 194)",junction:"rgb(0, 160, 0)",label_global:"rgb(0, 160, 224)",label_hier:"rgb(160, 160, 0)",label_local:"rgb(192, 192, 192)",net_name:"rgb(224, 224, 224)",no_connect:"rgb(97, 43, 224)",note:"rgb(192, 192, 0)",override_item_colors:!1,pin:"rgb(192, 0, 0)",pin_name:"rgb(192, 192, 192)",pin_number:"rgb(192, 0, 0)",reference:"rgb(192, 192, 192)",shadow:"rgba(102, 179, 255, 0.800)",sheet:"rgb(128, 0, 160)",sheet_background:"rgba(255, 255, 255, 0.000)",sheet_fields:"rgb(160, 160, 0)",sheet_filename:"rgb(160, 160, 0)",sheet_label:"rgb(160, 160, 0)",sheet_name:"rgb(0, 160, 204)",value:"rgb(192, 192, 192)",wire:"rgb(0, 160, 0)",worksheet:"rgb(192, 0, 0)"}},Fb=(r,e=1)=>{if(Math.abs(r.a)!==Math.abs(r.d))throw new Error("Cannot scale non-uniformly");return e*Math.abs(r.a)},eb={elementOverlay:30,dimensionOverlay:30,editTraceHintOverlay:30,errorOverlay:30,ratsNestOverlay:20,toolbarOverlay:20,topLayer:10},Nw={red:"red",black:"black",green:"green",board:"rgb(255, 255, 255)",other:"#eee",top:N2.board.copper.f,inner1:N2.board.copper.in1,inner2:N2.board.copper.in2,inner4:N2.board.copper.in4,inner5:N2.board.copper.in5,inner6:N2.board.copper.in6,inner7:N2.board.copper.in7,inner8:N2.board.copper.in8,bottom:N2.board.copper.b,drill:N2.board.anchor,keepout:N2.board.background,tkeepout:N2.board.b_crtyd,tplace:N2.board.b_silks,top_silkscreen:N2.board.f_silks,bottom_silkscreen:N2.board.b_silks,top_fabrication:N2.board.f_fab,bottom_fabrication:N2.board.b_fab,...N2.board},Cin=["top","inner1","inner2","inner3","inner4","inner5","inner6","bottom"],Rin=class{constructor(r){rr(this,"canvasLayerMap");rr(this,"ctxLayerMap");rr(this,"aperture");rr(this,"transform");rr(this,"foregroundLayer","top");rr(this,"lastPoint");this.canvasLayerMap=r,this.ctxLayerMap=Object.fromEntries(Object.entries(r).map(([e,t])=>[e,t.getContext("2d")])),this.transform=Yv(),this.transform.d*=-1,this.transform=J0(this.transform,Th(0,-500)),this.lastPoint={x:0,y:0},this.equip({})}clear(){for(const r of Object.values(this.ctxLayerMap))r.clearRect(0,0,r.canvas.width,r.canvas.height)}equip(r){this.aperture={fontSize:0,shape:"circle",mode:"add",size:0,color:"red",layer:"top",opacity:this.foregroundLayer===r.color?1:.5,...r}}drawMeshPattern(r,e,t,n,i,a=45){const o=this.getLayerCtx(),[s,l]=li(this.transform,[r,e]),[c,u]=li(this.transform,[r+t,e+n]),f=Fb(this.transform,i);o.lineWidth=1,o.strokeStyle=this.aperture.color;const h=v=>{const x=Math.sin(v),E=Math.cos(v),S=Math.sqrt(Math.pow(c-s,2)+Math.pow(u-l,2));for(let b=-S;b<=S;b+=f)o.beginPath(),o.moveTo(s+b*E-S*x,l+b*x+S*E),o.lineTo(s+b*E+S*x,l+b*x-S*E),o.stroke()};h(a*Math.PI/180),h((a+90)*Math.PI/180)}rect(r,e,t,n,i){const[a,o]=li(this.transform,[r-t/2,e-n/2]),[s,l]=li(this.transform,[r+t/2,e+n/2]);this.applyAperture();const c=this.getLayerCtx();i?(c.save(),c.beginPath(),c.rect(a,o,s-a,l-o),c.clip(),this.drawMeshPattern(r-t/2,e-n/2,t,n,.15),c.restore(),c.strokeRect(a,o,s-a,l-o)):c.fillRect(a,o,s-a,l-o)}rotatedRect(r,e,t,n,i,a){const o=this.getLayerCtx();this.applyAperture();const[s,l]=li(this.transform,[r-t/2,e-n/2]),[c,u]=li(this.transform,[r+t/2,e+n/2]);o.save();const[f,h]=li(this.transform,[r,e]);o.translate(f,h);const v=360-i;i&&o.rotate(v*Math.PI/180),o.translate(-f,-h),a?(o.beginPath(),o.rect(s,l,c-s,u-l),o.clip(),this.drawMeshPattern(r-t/2,e-n/2,t,n,.15),o.strokeRect(s,l,c-s,u-l)):o.fillRect(s,l,c-s,u-l),o.restore()}circle(r,e,t,n){const i=Fb(this.transform,t),[a,o]=li(this.transform,[r,e]);this.applyAperture();const s=this.getLayerCtx();n?(s.save(),s.beginPath(),s.arc(a,o,i,0,2*Math.PI),s.clip(),this.drawMeshPattern(r-t,e-t,t*2,t*2,.15),s.restore(),s.beginPath(),s.arc(a,o,i,0,2*Math.PI),s.stroke()):(s.beginPath(),s.arc(a,o,i,0,2*Math.PI),s.fill())}oval(r,e,t,n){const i=Fb(this.transform,t),a=Fb(this.transform,n),[o,s]=li(this.transform,[r,e]);this.applyAperture();const l=this.getLayerCtx();l.beginPath(),l.ellipse(o,s,i,a,0,0,2*Math.PI),l.fill(),l.closePath()}pill(r,e,t,n){const[i,a]=li(this.transform,[r-t/2,e+n/2]),o=Fb(this.transform,t),s=Fb(this.transform,n),l=Math.min(o,s)/2;this.applyAperture();const c=this.getLayerCtx();c.beginPath(),c.arc(i+l,a+l,l,Math.PI,Math.PI*1.5),c.arc(i+o-l,a+l,l,Math.PI*1.5,0),c.arc(i+o-l,a+s-l,l,0,Math.PI*.5),c.arc(i+l,a+s-l,l,Math.PI*.5,Math.PI),c.fill(),c.closePath()}polygon(r){if(r.length<3)return;this.applyAperture();const e=this.getLayerCtx(),t=r.map(i=>li(this.transform,[i.x,i.y]));e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let i=1;i<t.length;i++)e.lineTo(t[i][0],t[i][1]);e.closePath(),e.fill();const n=Fb(this.transform,this.aperture.size);e.lineWidth=n,e.stroke()}debugText(r,e,t){const[n,i]=li(this.transform,[e,t]);this.applyAperture();const a=this.getLayerCtx();a.font="10px sans-serif",a.fillText(r,n,i)}getLayerCtx(){const r=this.ctxLayerMap[this.aperture.layer];if(!r)throw new Error(`No context for layer "${this.aperture.layer}"`);return r}orderAndFadeLayers(){const{canvasLayerMap:r,foregroundLayer:e}=this,t=new Set([e,"drill","other","board"]);["drill","board",e,...Cin.filter(i=>i!==e)].forEach((i,a)=>{const o=r[i];o&&(o.style.zIndex=`${eb.topLayer-a}`,o.style.opacity=t.has(i)?"1":"0.5")})}applyAperture(){const{transform:r,aperture:e}=this;let{size:t,mode:n,color:i,fontSize:a,layer:o}=e;o in this.ctxLayerMap||(this.aperture.layer="other");const s=this.getLayerCtx();if(!s)throw new Error(`No context for layer "${this.foregroundLayer}"`);if(i||(i="undefined"),s.lineWidth=Fb(r,t),s.lineCap="round",n==="add"){let l=(i==null?void 0:i[0])==="#"||i!=null&&i.startsWith("rgb")?i:Nw[i==null?void 0:i.toLowerCase()]?Nw[i==null?void 0:i.toLowerCase()]:null;l===null&&(console.warn(`Color mapping for "${i}" not found`),l="white"),s.fillStyle=l,s.strokeStyle=l}else s.globalCompositeOperation="destination-out",s.fillStyle="rgba(0,0,0,1)",s.strokeStyle="rgba(0,0,0,1)";s.font=`${Fb(mb(r),a)}px sans-serif`}moveTo(r,e){this.lastPoint={x:r,y:e}}lineTo(r,e){const[t,n]=li(this.transform,[r,e]),{size:i,shape:a,mode:o}=this.aperture,s=Fb(this.transform,i);let{lastPoint:l}=this;const c=li(this.transform,l);this.applyAperture();const u=this.getLayerCtx();a==="square"&&u.fillRect(c.x-s/2,c.y-s/2,s,s),u.beginPath(),u.moveTo(c.x,c.y),u.lineTo(t,n),u.stroke(),u.closePath(),a==="square"&&u.fillRect(t-s/2,n-s/2,s,s),this.lastPoint={x:r,y:e}}};function Ain(r){const{lines:e,anchorPoint:t,ccwRotation:n}=r;if(!n)return e;const i=n*Math.PI/180,a=M5(i),o=J0(Th(t.x,t.y),a,Th(-t.x,-t.y));return li(o,t),e.map(s=>({...s,x1:li(o,{x:s.x1,y:s.y1}).x,y1:li(o,{x:s.x1,y:s.y1}).y,x2:li(o,{x:s.x2,y:s.y2}).x,y2:li(o,{x:s.x2,y:s.y2}).y}))}var LJe={0:"M0.4544564813877358 0L0.2723441540828736 0.03592830447352719L0.1086847233315459 0.14528754990019965L0.020630545837255005 0.3040632652221331L0 0.5395277421960205L0.049259221760993496 0.7369487828466779L0.18080513776237842 0.9005494166306564L0.37036887043974215 0.9872116270037247L0.5864663759301132 1L0.8148695622827444 0.9332890276148733L0.9326583645506394 0.8113052246023419L1 0.4031281830668562L0.833288960385582 0.09886798567812842L0.6801767918233781 0.02483708485091681L0.4544564813877358 0",1:"M 0.198 0.272 L 0.537 0 L 0.54 1",2:"M0.069593147751606 0.19461498231706575L0.1039380353319058 0.1224291500164194L0.20543361884368308 0.05510832064153169L0.3717712794432549 0.009452970962689482L0.4785344452623127 0L0.663238590738758 0.008714098643339864L0.8017933618843684 0.04769189395915288L0.8775637379550322 0.10746757678258442L0.9047778372591005 0.17693069668193287L0.9029710920770878 0.2231347105796246L0.8704496788008566 0.30047744598157516L0.7292906538577354 0.4508486051631194L0.3737955032119913 0.7369006417749693L0 1L1 1",3:"M0.03917438899874637 0.19855364635107545L0.15510940508963084 0.06745632622133718L0.37598645522339846 0L0.8486391893813088 0.0652271323161611L0.9782182415054349 0.21747394183735683L0.9213133780517754 0.3547560290117714L0.6504271515903481 0.4543436297681271L0.22975249764129613 0.48476611625264143L0.7659038682744629 0.5411919558122493L0.9258712987734741 0.6203185665660985L1 0.7458360609169667L0.8938813281118737 0.9059190913045964L0.6166890258875837 1L0.261528440153542 0.9874861530507921L0 0.8837289530851273",4:"M0.7328897338403042 0L0 0.6684672518568535L1 0.6684672518568535M0.7243346007604563 0.4530722484807562L0.7243346007604563 1",5:"M 0 0 L 0 0.4973 L 0.4262 0.4319 L 0.7305 0.4565 L 0.8516 0.5009 L 0.9357 0.5639 L 1 0.7356 L 0.9696 0.8248 L 0.8898 0.895 L 0.733 0.9602 L 0.5518 0.9945 L 0.3814 1 L 0.2379 0.9821 L 0.1219 0.947 L 0 0.8748 M 0 0 L 1 0",6:"M0.6964601700926856 0L0.3639239026215478 0.0743562375769351L0.1415931962925719 0.21735490179786915L0.009977939399608712 0.46336322325406004L0.00029622007592593224 0.7083131475173043L0.09408885043224748 0.8746809149767036L0.3379247445101846 0.9876686500961888L0.7109203869569624 1L0.9260852957913362 0.9103558029693921L1 0.7716571969091733L0.9824294723385016 0.6390635485705886L0.7446504992867332 0.4733643097729175L0.31028858071607296 0.47578021640899115L0.1208702146816024 0.5481452483973847L0 0.6616669755788906",7:"M0 0L1 0L0.9246479649697582 0.030539772727272752L0.8850302419354837 0.05075757575757579L0.7922946068548385 0.11079545454545457L0.7419268208165322 0.15213068181818185L0.6907258064516127 0.20202020202020204L0.6400666267641127 0.26122159090909086L0.5913243447580644 0.33049242424242414L0.5458740234374998 0.4105902777777778L0.5050907258064514 0.5022727272727272L0.4703495148689514 0.6062973484848484L0.43257456133442534 0.787133049242424L0.41612903225806447 1",8:"M0.5143001078924863 0L0.16007477667923162 0.10731570786949331L0.14924628550868277 0.3146018498698755L0.2939585848842112 0.41617921794558677L0.8648302624811545 0.5385163833653317L1 0.7775820770511038L0.8180842915260376 0.9505845566922285L0.41968938540525413 1L0.08062381919779889 0.882831681184498L0 0.6936376947135333L0.17150171673893433 0.5188652309607817L0.6529263782780712 0.4242818653203618L0.8650205888491803 0.29644027376796367L0.8702067371119496 0.09910067291661573L0.5143001078924863 0",9:"M1 0.25379591792994305L0.9514789771111742 0.11679361536614272L0.8702482473521467 0.05711741614054847L0.7327445265851579 0.015213872471965633L0.525248180711544 0L0.3292056884418538 0.012928195113745608L0.15997632037247655 0.058762870026191856L0.05266940041228321 0.12882439350476L0 0.2562067822770946L0.11316462894512366 0.4121335905917837L0.2403060136479954 0.4603365890068938L0.4097241967586011 0.4745978388276783L0.8642414300184816 0.420815170259988L0.9732054796346318 0.34537434075898393L1 0.25379591792994305M0.9647426784191072 0.35488595400360495L0.4756895081034974 1",A:"M0 1L0.4808333333333333 0L1 1M0.24250000000000002 0.6099439775910365L0.7341666666666666 0.6099439775910365",B:"M0 1L0 0.0117369978777208L0.30665717153513444 0L0.5874522807082946 0.03451403469442413L0.7766202217193218 0.15033936404895643L0.7471969743588041 0.31967962568332936L0.5246013359741988 0.4102978954282461L0.04378745314885416 0.44918617613783574L0.5112949594180156 0.469692928091109L0.8540266515643348 0.5552749498651879L1 0.6868463175009967L0.9880091196159324 0.8570018204672155L0.922301719975498 0.9321708046604659L0.7584266951758925 0.9932594737131338L0 1",C:"M1 0.23038928858890784L0.9328355511865092 0.12426412616785204L0.8096380839483327 0.04912601676267708L0.5763225801788256 0L0.4039037709527492 0.015028068281399815L0.2519579390951737 0.06533979308999706L0.10359458463139784 0.18146243506591617L0 0.4862728453971315L0.08129580872733055 0.792689266886982L0.20257034847159672 0.9160822255736587L0.3286572892798542 0.9738230826074175L0.5742878414421707 1L0.7883510303801312 0.9665431511195721L0.946851033994232 0.8689071500976585L1 0.7311049027121912",D:"M0 1L0.015604366822624637 0.020770988281483303L0.22564758265176144 0L0.3865476147957666 0.0024153386496795644L0.6479126635475078 0.051745644338731314L0.841191887805517 0.15827717679529366L0.9517008345536152 0.30172260586872185L0.9957536578687336 0.4504541551987709L1 0.5624359222498485L0.9798483279164735 0.6584121775234548L0.9386273319285215 0.7395945263504481L0.806292129480815 0.8624239259880274L0.6296239151398265 0.9406169638094516L0.3397492767598845 0.9954164354263132L0 1",E:"M0 0L0 1M0 0L1 0M0 0.5L0.7 0.5M0 1L1 1",F:"M0 0L0 1M0.011363636363636364 0.006802721088435374L1 0.006802721088435374M0.011363636363636364 0.4965986394557823L0.8409090909090909 0.4965986394557823",G:"M0.902666857540557 0.03860785012651126L0.6504261864675637 0L0.3838947267237336 0.015442305268228053L0.21293332876776194 0.07706794377239819L0.07799659974941617 0.1994951236187481L0 0.46380381528937314L0.04159964421546915 0.7502491408002389L0.13176692977834842 0.8535497868383203L0.2709176262273927 0.936767572377719L0.4386472596876406 0.9891638569283179L0.6145513562841309 1L0.7782254421419019 0.9585373611026471L0.9092650433859927 0.8540372997461425L1 0.5556012645283437L0.5583959277303046 0.55491741080559",H:"M0 0L0 1M0 0.4788732394366197L0.989010989010989 0.4788732394366197M1 0L1 1",I:"M0.5 0L0.5 1",J:"M0.9976457238788704 0L1 0.7396412315872798L0.9773931362096968 0.8322033314977973L0.9345115952458736 0.882296255506608L0.8743862896259549 0.9221331222466961L0.8024024079884948 0.9526431718061675L0.6443996712151668 0.9893997797356828L0.5035848940343224 1L0.3127211130319937 0.9877004749449337L0.17201910858386513 0.9539509911894274L0.10357419806379677 0.9212555066079295L0.053656568662899015 0.8816079295154184L0.020759483663648916 0.8360407488986785L0.003376206348523566 0.7855864537444934L0 0.7312775330396476",K:"M0 0L0 1M0.8787878787878788 0.06666666666666667L0 0.6148148148148148M0.3333333333333333 0.45925925925925926L1 0.9777777777777777",L:"M0 0L0 1L1 1",M:"M0 1L0 0L0.5 0.6512L1 0L1 1",N:"M0 1L0 0L1 1L0.9803729146221786 0",O:"M0.4718499217948183 1L0.2896765846490613 0.9606979309189402L0.12315162147934663 0.8411184486080473L0 0.4352399966492615L0.11730398524516283 0.13145645436014852L0.2612197451988078 0.04493357858878059L0.5104071592772554 0L0.7450113425917159 0.05393013710105273L0.882367950645524 0.15242300282020502L1 0.5224527406249126L0.9414597290654386 0.7560662329321755L0.8371289514446183 0.8910800547287298L0.6518259868433511 0.9830452628933628L0.4718499217948183 1",P:"M0 1L0 0.018871774228013626L0.29609603495819875 0L0.5609840637427541 0.011794858892508529L0.7332142696692472 0.04353904702296349L0.8102258645858864 0.0691965055027166L0.9330504315465442 0.14445061754775845L0.9876391714147118 0.22527816445836535L1 0.3434414070631638L0.9510549958116356 0.41772808046663146L0.8746646891596713 0.45879131862541683L0.7528523813396283 0.49171525113425024L0.5766919939969619 0.5153253033973054L0.33725744877712827 0.5284469008187558L0.025622667325582785 0.529905468802775",Q:"M0.4618887943546369 0.9755918167206952L0.28356128136544534 0.9372490397450218L0.12055179272160406 0.8205882753548176L0 0.4246165790405623L0.1148276047430244 0.12824784112887844L0.25570518844754375 0.043836831567190586L0.49963205786237674 0L0.7292835601228574 0.0526138004304122L0.8637404608452104 0.14870263423138746L0.9788892040030622 0.5097006183769648L0.9215847647858059 0.7376120297474734L0.8194564929275405 0.869330409436378L0.6380654214095985 0.9590509139448092L0.4618887943546369 0.9755918167206952M0.5824181120212351 0.6861805006946525L1 1",R:"M0 0.9928375167236815L0 0.02590227442068435L0.3611517274211098 0L0.6146286724700761 0.008660554424468435L0.7675462459194776 0.035269459580494614L0.831839975516866 0.056961676692569484L0.8847592491838954 0.08519560521497332L0.9238557535364527 0.120683646438422L0.9583303225312839 0.21691797435320384L0.955092470586235 0.3022616904894429L0.9198097669001631 0.3640573439322699L0.8564862239866702 0.40639258627024005L0.7691258543593579 0.43335506909190874L0.601775027203482 0.4539166070813109L0.023939064200217658 0.46997623755243123M0.5038084874863982 0.5108023922274467L1 1",S:"M0.8886929689221953 0.15146982162688968L0.7276173683050475 0.013780286031594946L0.34582323121005076 0L0.1318235250900008 0.09920162734298861L0.0444543935052531 0.2811287071349243L0.08064065829108809 0.3709571405906485L0.21603115127470426 0.4485505768228281L0.7525409135992945 0.5111160926769565L0.9330263665417677 0.5850732219351329L1 0.7129938124702524L0.9117772389978691 0.9130572743138187L0.6423187128058188 1L0.29586019579751677 0.9935291584506244L0.10638454191462794 0.9229845198431584L0 0.7570771288048773",T:"M0 0L1 0M0.5148514851485149 0L0.5148514851485149 1",U:"M0 0L0.0023103778751369115 0.5467447428390111L0.01823032542100219 0.6954785891481812L0.05895528135268338 0.8056480226151669L0.13703402031421133 0.8894445726483398L0.23918400876232196 0.9448524533417946L0.3917887458926616 0.9848674531975652L0.584341627875137 1L0.7194816196604602 0.9848501456716763L0.8303268115073934 0.9449411544119768L0.8966613970084885 0.898186315516197L0.9251437568455642 0.867453197565408L0.9687114937020809 0.7890904895145239L0.9890470974808324 0.6852857184065537L1 0.0014769088758762145",V:"M0 0L0.5348837209302325 1L1 0",W:"M0 0L0.23300090661831369 0.9873417721518988L0.49954669084315495 0.30081906180193585L0.7851314596554849 1L1 0.0215934475055845",X:"M0 0L0.9893617021276596 1M1 0L0.010638297872340425 1",Y:"M0 0L0.4860515021459227 0.44712562100780695M1 0.0014194464158977947L0.48927038626609437 0.44996451383960256L0.5075107296137339 1",Z:"M0 0L1 0L0 1L1 1",".":"M 0.49 1 L 0.41 1","*":"M 0.5 0.25 L 0.8 0.25 M 0.5 0.25 L 0.5927 0.4402 M 0.5 0.25 L 0.2573 0.3676 M 0.5 0.25 L 0.2573 0.1324 M 0.5 0.25 L 0.599 0.055","(":"M0.75 0L0.25 0.5L0.25 0.5L0.75 1",")":"M0.25 0L0.75 0.5L0.75 0.5L0.25 1","-":"M0 0.5L1 0.5","+":"M 0 0.5 L 1 0.5 M 0.5 0.125 L 0.5 0.875","=":"M0 0.25L1 0.25M0 0.75L1 0.75",_:"M0 1 L1 1","[":"M0.75 0L0.25 0L0.25 1L0.75 1","]":"M0.25 0L0.75 0L0.75 1L0.25 1","<":"M0.75 0L0.25 0.5L0.25 0.5L0.75 1",">":"M0.25 0L0.75 0.5L0.75 0.5L0.25 1","'":"M 0.5 0 L 0.5 0.5",'"':"M 0.25 0 L 0.25 0.5 M 0.75 0 L 0.75 0.5"},Nfe={};for(const r in LJe){Nfe[r]=[];const e=LJe[r].split("M").slice(1).map(t=>t.split("L").map(n=>n.trim().split(" ").map(parseFloat)));for(const t of e)for(let n=0;n<t.length-1;n++)Nfe[r].push({x1:t[n][0],y1:1-t[n][1],x2:t[n+1][0],y2:1-t[n+1][1]})}var zJe=.6,OJe=.2,Pin=r=>r.text.length*r.size*zJe+(r.text.length-1)*r.size*OJe,Din=r=>{const e=r.size/8,t=r.size*zJe,n=r.size*OJe,i=[];for(let a=0;a<r.text.length;a++){const o=r.text[a],s=Nfe[o.toUpperCase()];if(s)for(const{x1:l,y1:c,x2:u,y2:f}of s)i.push({pcb_drawing_type:"line",x1:r.x+(t+n)*a+t*l,y1:r.y+r.size*c,x2:r.x+(t+n)*a+t*u,y2:r.y+r.size*f,width:e,layer:r.layer,unit:r.unit})}return i};function d7(r){return r.is_mouse_over||r.is_in_highlighted_net?PPe(Nw[r.layer]).lighten(.5).rgb().toString():Nw[r.layer]}var UJe=(r,e)=>{r.equip({size:e.zoomIndependent?e.width/r.transform.a:e.width,shape:e.squareCap?"square":"circle",color:d7(e),layer:e.layer}),r.moveTo(e.x1,e.y1),r.lineTo(e.x2,e.y2)},Nin=(r,e)=>{r.equip({fontSize:e.size,color:e.layer});let t={x:0,y:0};const n=Pin(e),i=e.size;e.align==="top_left"?t.y=-i:e.align==="bottom_right"?t.x=-n:e.align==="top_right"?(t.x=-n,t.y=-i):e.align==="center"&&(t.x=-n/2,t.y=-i/2),e.x??(e.x=0),e.y??(e.y=0);const a={x:e.x,y:e.y};let o=Din({...e,x:e.x+t.x,y:e.y+t.y});if(e.ccw_rotation){const s={lines:o,anchorPoint:a,ccwRotation:e.ccw_rotation};o=Ain(s)}for(const s of o)UJe(r,s)},Lin=(r,e)=>{r.equip({color:d7(e),layer:e.layer}),r.rect(e.x,e.y,e.w,e.h,e.mesh_fill)},zin=(r,e)=>{r.equip({color:d7(e),layer:e.layer}),r.rotatedRect(e.x,e.y,e.w,e.h,e.ccw_rotation)},Oin=(r,e)=>{r.equip({color:d7(e),layer:e.layer}),r.circle(e.x,e.y,e.r,e.mesh_fill)},Uin=(r,e)=>{r.equip({color:d7(e),layer:e.layer}),r.oval(e.x,e.y,e.rX,e.rY)},kin=(r,e)=>{r.equip({color:d7(e),layer:e.layer}),r.pill(e.x,e.y,e.w,e.h)},Fin=(r,e)=>{r.equip({color:d7(e),layer:e.layer}),r.polygon(e.points)},Iin=(r,e)=>{var t;switch(e.pcb_drawing_type){case"line":return UJe(r,e);case"text":return Nin(r,e);case"rect":return((t=e._element)==null?void 0:t.shape)==="rotated_rect"?zin(r,{...e,ccw_rotation:e._element.ccw_rotation,mesh_fill:e.mesh_fill}):Lin(r,e);case"circle":return Oin(r,e);case"oval":return Uin(r,e);case"pill":return kin(r,e);case"polygon":return Fin(r,e)}},Bin=(r,e)=>{e.sort((t,n)=>{const i=["bottom","top","drill"];return i.indexOf(t.layer)-i.indexOf(n.layer)}),e.forEach(t=>Iin(r,t))},jin=({primitives:r,transform:e,grid:t,width:n=500,height:i=500})=>{const a=Ct.useRef(),o=k5(s=>s.selected_layer);return Ct.useEffect(()=>{if(!a.current||Object.keys(a.current).length===0)return;const s=new Rin(a.current);e&&(s.transform=e),s.clear(),s.foregroundLayer=o,Bin(s,r),s.orderAndFadeLayers()},[r,e,o]),_t.jsxs("div",{style:{backgroundColor:"black",width:n,height:i,position:"relative"},children:[_t.jsx(Q0e.SuperGrid,{textColor:"rgba(0,255,0,0.8)",majorColor:"rgba(0,255,0,0.4)",minorColor:"rgba(0,255,0,0.2)",screenSpaceCellSize:200,width:n,height:i,transform:e,stringifyCoord:(s,l,c)=>`${Q0e.toMMSI(s,c)}, ${Q0e.toMMSI(l,c)}`}),pk.map(s=>s.replace(/-/g,"")).concat(["drill","other"]).map((s,l)=>_t.jsx("canvas",{ref:c=>{a.current??(a.current={}),a.current[s]=c},style:{position:"absolute",left:0,top:0,pointerEvents:"none"},width:n,height:i},s))]})};function Vin(r,e){if(r.length<2)throw new Error("Stroke must have at least two points");const t=r.map(f=>Array.isArray(f)?{x:f[0],y:f[1]}:f),n=[],i=[];function a(f,h){const v=h.x-f.x,x=h.y-f.y,E=Math.sqrt(v*v+x*x);return{x:-x/E,y:v/E}}function o(f,h,v,x){const E=x/2,S={x:f.x+h.x*E*v,y:f.y+h.y*E*v};v>0?n.push(S):i.unshift(S)}const s=a(t[0],t[1]),l=t[0].trace_width??e;o(t[0],s,1,l),o(t[0],s,-1,l);for(let f=1;f<t.length-1;f++){const h=t[f-1],v=t[f],x=t[f+1],E=a(h,v),S=a(v,x),b=E.x+S.x,C=E.y+S.y,N=Math.sqrt(b*b+C*C),U=v.trace_width??e;if(N/2>2*(U/2))o(v,E,1,U),o(v,S,1,U),o(v,E,-1,U),o(v,S,-1,U);else{const Z=1/N;o(v,{x:b*Z,y:C*Z},1,U),o(v,{x:b*Z,y:C*Z},-1,U)}}const c=a(t[t.length-2],t[t.length-1]),u=t[t.length-1].trace_width??e;return o(t[t.length-1],c,1,u),o(t[t.length-1],c,-1,u),[...n,...i]}var Zv=0,Hin=(r,e)=>{var o;const t="pcb_component_id"in r?e.find(s=>s.type==="pcb_component"&&s.pcb_component_id===r.pcb_component_id):void 0,n=t&&"source_component_id"in t?e.find(s=>s.type==="source_component"&&s.source_component_id===t.source_component_id):void 0,i="source_port_id"in r?r.source_port_id:"pcb_port_id"in r?(o=M8(e).pcb_port.get(r.pcb_port_id))==null?void 0:o.source_port_id:void 0,a=i?e.find(s=>s.type==="source_port"&&s.source_port_id===i):void 0;switch(r.type){case"pcb_board":{const{width:s,height:l,center:c,outline:u}=r;return u&&u.length>2?u.map((f,h,v)=>({_pcb_drawing_object_id:`line_${Zv++}`,pcb_drawing_type:"line",x1:f.x,y1:f.y,x2:h===v.length-1?v[0].x:v[h+1].x,y2:h===v.length-1?v[0].y:v[h+1].y,width:1,zoomIndependent:!0,layer:"board",_element:r})):[{_pcb_drawing_object_id:`line_${Zv++}`,pcb_drawing_type:"line",x1:c.x-s/2,y1:c.y-l/2,x2:c.x+s/2,y2:c.y-l/2,width:1,zoomIndependent:!0,layer:"board",_element:r},{_pcb_drawing_object_id:`line_${Zv++}`,pcb_drawing_type:"line",x1:c.x-s/2,y1:c.y+l/2,x2:c.x+s/2,y2:c.y+l/2,width:1,zoomIndependent:!0,layer:"board",_element:r},{_pcb_drawing_object_id:`line_${Zv++}`,pcb_drawing_type:"line",x1:c.x-s/2,y1:c.y-l/2,x2:c.x-s/2,y2:c.y+l/2,width:1,zoomIndependent:!0,layer:"board",_element:r},{_pcb_drawing_object_id:`line_${Zv++}`,pcb_drawing_type:"line",x1:c.x+s/2,y1:c.y-l/2,x2:c.x+s/2,y2:c.y+l/2,width:1,zoomIndependent:!0,layer:"board",_element:r}]}case"pcb_smtpad":{if(r.shape==="rect"||r.shape==="rotated_rect"){const{shape:s,x:l,y:c,width:u,height:f,layer:h}=r;return[{_pcb_drawing_object_id:`rect_${Zv++}`,pcb_drawing_type:"rect",x:l,y:c,w:u,h:f,layer:h||"top",_element:r,_parent_pcb_component:t,_parent_source_component:n,_source_port:a}]}else if(r.shape==="circle"){const{x:s,y:l,radius:c,layer:u}=r;return[{_pcb_drawing_object_id:`circle_${Zv++}`,pcb_drawing_type:"circle",x:s,y:l,r:c,layer:u||"top",_element:r,_parent_pcb_component:t,_parent_source_component:n,_source_port:a}]}return[]}case"pcb_hole":{if(r.hole_shape==="circle"||!r.hole_shape){const{x:s,y:l,hole_diameter:c}=r;return[{_pcb_drawing_object_id:`circle_${Zv++}`,pcb_drawing_type:"circle",x:s,y:l,r:c/2,layer:"drill",_element:r,_parent_pcb_component:t,_parent_source_component:n}]}return[]}case"pcb_plated_hole":if(r.shape==="circle"){const{x:s,y:l,hole_diameter:c,outer_diameter:u}=r;return[{_pcb_drawing_object_id:`circle_${Zv++}`,pcb_drawing_type:"circle",x:s,y:l,r:u/2,layer:"top",_element:r,_parent_pcb_component:t,_parent_source_component:n,_source_port:a},{_pcb_drawing_object_id:`circle_${Zv++}`,pcb_drawing_type:"circle",x:s,y:l,r:c/2,layer:"drill",_element:r}]}else if(r.shape==="oval"){const{x:s,y:l,outer_height:c,outer_width:u,hole_height:f,hole_width:h}=r;return[{_pcb_drawing_object_id:`oval_${Zv++}`,pcb_drawing_type:"oval",x:s,y:l,rX:u/2,rY:c/2,layer:"top",_element:r,_parent_pcb_component:t,_parent_source_component:n,_source_port:a},{_pcb_drawing_object_id:`oval_${Zv++}`,_element:r,pcb_drawing_type:"oval",x:s,y:l,rX:h/2,rY:f/2,layer:"drill"}]}else if(r.shape==="pill"){const{x:s,y:l,outer_height:c,outer_width:u,hole_height:f,hole_width:h}=r;return[{_pcb_drawing_object_id:`pill_${Zv++}`,pcb_drawing_type:"pill",x:s,y:l,w:u,h:c,layer:"top",_element:r,_parent_pcb_component:t,_parent_source_component:n,_source_port:a},{_pcb_drawing_object_id:`pill_${Zv++}`,_element:r,pcb_drawing_type:"pill",x:s,y:l,w:h,h:f,layer:"drill"}]}else return[];case"pcb_keepout":if(r.shape==="circle"){const{center:s,radius:l}=r;return[{_pcb_drawing_object_id:`circle_${Zv++}`,pcb_drawing_type:"circle",x:s.x,y:s.y,r:l,layer:"top",_element:r,_parent_pcb_component:t,_parent_source_component:n,mesh_fill:!0}]}else if(r.shape==="rect"){const{x:s,y:l,width:c,height:u}=r;return[{_pcb_drawing_object_id:`rect_${Zv++}`,pcb_drawing_type:"rect",x:s,y:l,w:c,h:u,layer:"top",_element:r,_parent_pcb_component:t,_parent_source_component:n,mesh_fill:!0}]}case"pcb_trace":{const s=[];if(r.route_thickness_mode==="interpolated"){const u=r.route.map(h=>({x:h.x,y:h.y,trace_width:h.route_type==="wire"?h.width:.5})),f=Vin(u,.5);return s.push({_pcb_drawing_object_id:`polygon_${Zv++}`,_element:r,pcb_drawing_type:"polygon",points:f,layer:r.route[0].layer}),r.route.forEach(h=>{h.route_type==="via"&&s.push({_pcb_drawing_object_id:`circle_${Zv++}`,_element:r,pcb_drawing_type:"circle",x:h.x,y:h.y,radius:h.outer_diameter/2,fill:!0,layer:r.route.layer})}),s}let l=null,c=null;for(const u of r.route)u.route_type==="wire"&&(l!==null&&c!==null&&s.push({_pcb_drawing_object_id:`line_${Zv++}`,_element:r,pcb_drawing_type:"line",x1:l,y1:c,x2:u.x,y2:u.y,width:u.width,squareCap:!1,layer:u.layer}),l=u.x,c=u.y);return s}case"pcb_via":{const{x:s,y:l,outer_diameter:c,hole_diameter:u,from_layer:f,to_layer:h}=r;return[{_pcb_drawing_object_id:`circle_${Zv++}`,pcb_drawing_type:"circle",x:s,y:l,r:c/2,layer:f,_element:r,_parent_pcb_component:t,_parent_source_component:n},{_pcb_drawing_object_id:`circle_${Zv++}`,_element:r,pcb_drawing_type:"circle",x:s,y:l,r:u/2,layer:"drill",_parent_pcb_component:t,_parent_source_component:n},{_pcb_drawing_object_id:`circle_${Zv++}`,pcb_drawing_type:"circle",x:s,y:l,r:c/2,layer:h,_element:r,_parent_pcb_component:t,_parent_source_component:n}]}case"pcb_silkscreen_rect":return[{_pcb_drawing_object_id:`rect_${Zv++}`,pcb_drawing_type:"rect",x:r.center.x,y:r.center.y,w:r.width,h:r.height,layer:r.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_silkscreen_circle":return[{_pcb_drawing_object_id:`circle_${Zv++}`,pcb_drawing_type:"circle",x:r.center.x,y:r.center.y,r:r.radius,layer:r.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_silkscreen_oval":return[{_pcb_drawing_object_id:`oval_${Zv++}`,pcb_drawing_type:"oval",x:r.center.x,y:r.center.y,rX:r.radius_x/2,rY:r.radius_y/2,layer:r.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_silkscreen_pill":return[{_pcb_drawing_object_id:`pill_${Zv++}`,pcb_drawing_type:"pill",x:r.center.x,y:r.center.y,w:r.width,h:r.height,layer:r.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_silkscreen_line":return[{_pcb_drawing_object_id:`line_${Zv++}`,pcb_drawing_type:"line",x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,width:.1,squareCap:!1,layer:r.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_fabrication_note_path":case"pcb_silkscreen_path":{const{pcb_component_id:s,route:l,type:c}=r;let u;return c==="pcb_silkscreen_path"?u=r.layer==="bottom"?"bottom_silkscreen":"top_silkscreen":c==="pcb_fabrication_note_path"&&(u="top_fabrication"),l.slice(0,-1).map((f,h)=>{const v=l[h+1];return{_pcb_drawing_object_id:`line_${Zv++}`,pcb_drawing_type:"line",x1:f.x,y1:f.y,x2:v.x,y2:v.y,width:r.stroke_width??.1,squareCap:!1,layer:u,_element:r,_parent_pcb_component:t,_parent_source_component:n,_source_port:a}}).filter(Boolean)}case"pcb_silkscreen_text":return[{_pcb_drawing_object_id:`text_${Zv++}`,pcb_drawing_type:"text",x:r.anchor_position.x,y:r.anchor_position.y,layer:r.layer==="bottom"?"bottom_silkscreen":"top_silkscreen",align:r.anchor_alignment??"center",text:r.text,size:r.font_size,ccw_rotation:r.ccw_rotation}];case"pcb_fabrication_note_text":return[{_pcb_drawing_object_id:`text_${Zv++}`,pcb_drawing_type:"text",x:r.anchor_position.x,y:r.anchor_position.y,layer:r.layer==="bottom"?"bottom_fabrication":"top_fabrication",size:r.font_size,align:r.anchor_alignment??"center",text:r.text}]}return[]};function qin({primitiveElement:r,elements:e}){let t=r.trace_length?`${r.trace_length.toFixed(3)}`:"";const n=M8(e).source_trace.get(r==null?void 0:r.source_trace_id);if(n!=null&&n.display_name&&(n!=null&&n.max_length?t+=` / ${n.max_length}mm `:t+=" mm ",t+=`(${n.display_name})`),!t)return null;const i=r.trace_length&&(n==null?void 0:n.max_length)&&r.trace_length>n.max_length;return{text:t,isOverLength:i}}function $in(r){const{primitives:e,is_showing_multiple_traces_length:t,elements:n}=r,i=e.filter(l=>l._element.type==="pcb_trace"),a=n.filter(l=>l.type==="source_trace"),o=e.filter(l=>l._element.type!=="pcb_trace"),s=i.filter(l=>a.some(c=>l._element.type==="pcb_trace"&&l._element.source_trace_id===c.source_trace_id&&c.max_length!==void 0));if(!t)return[...o,...s];if(i.length>1){const l=i.reduce((c,u)=>{const f=c._element.trace_length;return u._element.trace_length<f?u:c},i[0]);return[...o,l]}return e}var Gin={position:"absolute",left:0,top:0,pointerEvents:"none",color:"red",fontFamily:"sans-serif",fontSize:12,textShadow:"0 0 2px black"},Yin=r=>{const{_element:e,_parent_pcb_component:t,_parent_source_component:n,_source_port:i}=r;switch(e.type){case"pcb_trace":return e.trace_length?`${e.trace_length.toFixed(3)}`:"";case"pcb_smtpad":case"pcb_plated_hole":{let a="";n&&"name"in n&&n.name&&(a+=`.${n.name} > `);const o=Array.from(new Set((e.port_hints??[]).concat((i==null?void 0:i.port_hints)??[]))).sort((s,l)=>l.localeCompare(s));return a+=o.map(s=>s.match(/^[0-9]+$/)?`port.${s}`:`.${s}`).join(", "),a}default:return""}},Xin={top:"red",bottom:"aqua"},Win=({primitive:r,mousePos:e,elements:t})=>{var x;const[n,i]=Ct.useState(!1),a=r._element;Ct.useEffect(()=>{setTimeout(()=>{i(!0)},100)},[]);let[o,s,l,c]=[r.screen_x,r.screen_y,r.screen_w,r.screen_h];const u=r.same_space_index??0,f=26,h=Xin[(x=r==null?void 0:r._element)==null?void 0:x.layer]??"red";let v=0;if(a.type==="pcb_smtpad"&&(a==null?void 0:a.shape)==="rotated_rect"&&(v=a==null?void 0:a.ccw_rotation),a.type==="pcb_trace"){const S=qin({primitiveElement:a,elements:t});if(!S)return null;const b=e.y-35;return _t.jsx("div",{style:{zIndex:eb.elementOverlay,position:"absolute",left:e.x,top:b,color:h,pointerEvents:"none",transform:"translateX(-50%)"},children:_t.jsx("div",{style:{backgroundColor:"#f2efcc",color:S.isOverLength?"red":"black",textShadow:"none",WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",padding:"6px 6px",borderRadius:"6px",fontSize:"14px",minWidth:"45px",textAlign:"center",whiteSpace:"nowrap"},children:S.text})})}return _t.jsx("div",{style:{zIndex:eb.elementOverlay,position:"absolute",left:o-l/2-8,top:s-c/2-8,width:l+16,height:c+16,color:h,transform:`rotate(${-v}deg)`,transformOrigin:"center center"},children:_t.jsx("div",{style:{width:n?`calc(100% + ${f*2*u}px)`:"100%",height:n?`calc(100% + ${f*2*u}px)`:"100%",marginLeft:n?`${-f*u}px`:0,marginTop:n?`${-f*u}px`:0,border:`1px solid ${h}`,opacity:n||u===0?1:0,transition:"width 0.2s, height 0.2s, margin-left 0.2s, margin-top 0.2s, opacity 0.2s"},children:_t.jsx("div",{style:{position:"absolute",bottom:c+20+f*u,marginRight:n?`${-f*u}px`:0,marginBottom:n?0:-f*u,transition:"margin-right 0.2s, margin-bottom 0.2s",backgroundColor:"#f2efcc",color:"black",textShadow:"none",WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",padding:"6px 6px",borderRadius:"6px",fontSize:"14px",transform:`rotate(${v}deg)`,minWidth:"45px",textAlign:"center"},children:Yin(r)})})})},Zin=({highlightedPrimitives:r,mousePos:e,elements:t})=>{const[n,i]=k5(s=>[s.is_moving_component,s.is_showing_multiple_traces_length]),a=r.some(s=>s._element.type==="pcb_smtpad")&&r.some(s=>s._element.type==="pcb_trace");let o=r;return a&&(o=o.filter(s=>s._element.type==="pcb_smtpad")),o=$in({primitives:o,is_showing_multiple_traces_length:i,elements:t}),_t.jsx("div",{style:Gin,children:!n&&o.map((s,l)=>_t.jsx(Win,{primitive:s,mousePos:e,elements:t},l))})};function Qin(r,e){return r.size!==e.size?!1:Array.from(r).every(t=>e.has(t))}var Kin=({elements:r,children:e,transform:t,primitives:n,onMouseHoverOverPrimitives:i})=>{const[a,o]=Ct.useState([]),[s,l]=Ct.useState({x:0,y:0}),c=Ct.useMemo(()=>{var f,h;const u=[];for(const v of a){if(((f=v._element)==null?void 0:f.type)==="pcb_via"||((h=v._element)==null?void 0:h.type)==="pcb_component"||(v==null?void 0:v.layer)==="drill")continue;const x=li(t,v),E="w"in v?v.w:"r"in v?v.r*2:0,S="h"in v?v.h:"r"in v?v.r*2:0,b={w:E*t.a,h:S*t.a};let C=u.filter(N=>x.x===N.screen_x&&x.y===N.screen_y&&b.w===N.screen_w&&b.h===N.screen_h).length;u.push({...v,screen_x:x.x,screen_y:x.y,screen_w:b.w,screen_h:b.h,same_space_index:C})}return u},[a,t]);return _t.jsxs("div",{style:{position:"relative"},onMouseMove:u=>{var f;if(t){const h=u.currentTarget.getBoundingClientRect(),v=u.clientX-h.left,x=u.clientY-h.top;l({x:v,y:x});const E=li(mb(t),{x:v,y:x}),S=[];for(const b of n){if(!b._element)continue;if("x1"in b&&((f=b._element)==null?void 0:f.type)==="pcb_trace"){const U=Vtn({x:E.x,y:E.y},{x:b.x1,y:b.y1},{x:b.x2,y:b.y2}),G=b.width||.5,Z=Math.max(G*25,2)/t.a;U<Z&&S.push(b);continue}if(!("x"in b&&"y"in b))continue;let C=0,N=0;if("w"in b&&"h"in b)C=b.w,N=b.h;else if("r"in b)C=b.r*2,N=b.r*2;else continue;Math.abs(b.x-E.x)<C/2&&Math.abs(b.y-E.y)<N/2&&S.push(b)}if(Qin(new Set(S.map(b=>b._pcb_drawing_object_id)),new Set(a.map(b=>b._pcb_drawing_object_id))))return;o(S),i(S)}},children:[e,_t.jsx(Zin,{elements:r,mousePos:s,highlightedPrimitives:c})]})},Jin=({children:r,transform:e})=>{e||(e=Yv());const[t,n]=Ct.useState(!1),[i,a]=Ct.useState(!1),[o,s]=Ct.useState({x:0,y:0}),[l,c]=Ct.useState({x:0,y:0}),u=Ct.useRef({x:0,y:0}),f=Ct.useRef(null),h=f.current,v=h==null?void 0:h.getBoundingClientRect();Ct.useEffect(()=>{const b=f.current,C=G=>{G.key==="d"&&(s({x:u.current.x,y:u.current.y}),c({x:u.current.x,y:u.current.y}),n(Z=>!Z),a(!0),G.preventDefault()),G.key==="Escape"&&(n(!1),a(!1))},N=()=>{b&&b.addEventListener("keydown",C)},U=()=>{b&&b.removeEventListener("keydown",C)};return b&&(b.addEventListener("focus",N),b.addEventListener("blur",U),b.addEventListener("mouseenter",N),b.addEventListener("mouseleave",U)),()=>{b&&(b.removeEventListener("focus",N),b.removeEventListener("blur",U),b.removeEventListener("mouseenter",N),b.removeEventListener("mouseleave",U))}},[f]);const x=li(e,o),E=li(e,l),S={left:Math.min(x.x,E.x),right:Math.max(x.x,E.x),top:Math.min(x.y,E.y),bottom:Math.max(x.y,E.y),flipX:x.x>E.x,flipY:x.y>E.y,width:0,height:0};return S.width=S.right-S.left,S.height=S.bottom-S.top,_t.jsxs("div",{ref:f,tabIndex:0,style:{position:"relative"},onMouseEnter:()=>{f.current&&f.current.focus()},onMouseLeave:()=>{f.current&&f.current.blur()},onMouseMove:b=>{const C=b.currentTarget.getBoundingClientRect(),N=b.clientX-C.left,U=b.clientY-C.top,G=li(mb(e),{x:N,y:U});u.current.x=G.x,u.current.y=G.y,i&&c({x:G.x,y:G.y})},onMouseDown:()=>{i?a(!1):t&&n(!1)},children:[r,t&&_t.jsxs(_t.Fragment,{children:[_t.jsx("div",{style:{position:"absolute",left:S.left,width:S.width,textAlign:"center",top:x.y+2,color:"red",mixBlendMode:"difference",pointerEvents:"none",marginTop:S.flipY?0:-20,fontSize:12,fontFamily:"sans-serif",zIndex:eb.dimensionOverlay},children:Math.abs(o.x-l.x).toFixed(2)}),_t.jsx("div",{style:{position:"absolute",left:E.x,height:S.height,display:"flex",flexDirection:"column",justifyContent:"center",top:S.top,color:"red",pointerEvents:"none",mixBlendMode:"difference",fontSize:12,fontFamily:"sans-serif",zIndex:eb.dimensionOverlay},children:_t.jsx("div",{style:{marginLeft:S.flipX?"-100%":4,paddingRight:4},children:Math.abs(o.y-l.y).toFixed(2)})}),_t.jsxs("svg",{style:{position:"absolute",left:0,top:0,pointerEvents:"none",mixBlendMode:"difference",zIndex:eb.dimensionOverlay},width:v.width,height:v.height,children:[_t.jsx("defs",{children:_t.jsx("marker",{id:"head",orient:"auto",markerWidth:"3",markerHeight:"4",refX:"2",refY:"2",children:_t.jsx("path",{d:"M0,0 V4 L2,2 Z",fill:"red"})})}),_t.jsx("line",{x1:x.x,y1:x.y,x2:E.x,y2:E.y,markerEnd:"url(#head)",strokeWidth:1.5,fill:"none",stroke:"red"}),_t.jsx("line",{x1:x.x,y1:x.y,x2:E.x,y2:x.y,strokeWidth:1.5,fill:"none",strokeDasharray:"2,2",stroke:"red"}),_t.jsx("line",{x1:E.x,y1:x.y,x2:E.x,y2:E.y,strokeWidth:1.5,fill:"none",strokeDasharray:"2,2",stroke:"red"})]}),_t.jsxs("div",{style:{right:0,bottom:0,position:"absolute",color:"red",fontFamily:"sans-serif",fontSize:12,margin:4},children:["(",o.x.toFixed(2),",",o.y.toFixed(2),")",_t.jsx("br",{}),"(",l.x.toFixed(2),",",l.y.toFixed(2),")",_t.jsx("br",{}),"dist:"," ",Math.sqrt(Math.pow(l.x-o.x,2)+Math.pow(l.y-o.y,2)).toFixed(2)]})]})]})},ean={name:"@tscircuit/pcb-viewer",version:"1.11.28",main:"dist/index.js",type:"module",repository:"tscircuit/pcb-viewer",license:"MIT",scripts:{start:"storybook dev -p 6006",build:"tsup ./src/index.tsx --platform browser --dts --sourcemap --format esm --outDir dist",yalc:"npm run build && yalc push",storybook:"storybook dev -p 6006","build-storybook":"storybook build",format:"biome format . --write","format:check":"biome format ."},files:["dist"],devDependencies:{"@biomejs/biome":"^1.9.4","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^9.0.1","@semantic-release/release-notes-generator":"^10.0.3","@storybook/nextjs":"^8.0.6","@storybook/react":"^8.0.6","@swc/core":"^1.4.12","@tscircuit/core":"0.0.272","@tscircuit/eagle-xml-converter":"^1.0.0","@tscircuit/props":"^0.0.130","@tscircuit/soup-util":"^0.0.41","@types/color":"^3.0.6","@types/node":"18.7.23","@types/react":"^18.3.3","circuit-json":"^0.0.128",next:"^14.1.4","pixi.js":"^8.6.6",react:"^18.2.0","react-dom":"^18.2.0","react-use":"^17.4.0",storybook:"^8.0.6",tsup:"^8.0.2","type-fest":"^3.0.0",typescript:"^5.4.4","use-mouse-matrix-transform":"^1.3.0",zod:"^3.23.5"},peerDependencies:{react:"*","@tscircuit/core":"*"},dependencies:{"@emotion/css":"^11.11.2","circuit-json-to-connectivity-map":"^0.0.18","@tscircuit/math-utils":"^0.0.10","circuit-to-svg":"^0.0.36",color:"^4.2.3","react-supergrid":"^1.0.10","react-toastify":"^10.0.5","transformation-matrix":"^2.13.0",zustand:"^4.5.2"}},C8=(r,e)=>{const t=k5(n=>n.is_mouse_over_container);Ct.useEffect(()=>{if(!r||typeof e!="function")return;const n=i=>{const a=r.split("+"),o=a.includes("ctrl"),s=a.includes("shift"),l=a.includes("alt"),c=a.includes("meta"),u=a[a.length-1];t&&(!o||i.ctrlKey)&&(!s||i.shiftKey)&&(!l||i.altKey)&&(!c||i.metaKey)&&i.key.toLowerCase()===u.toLowerCase()&&(i.preventDefault(),e())};return window.addEventListener("keydown",n),()=>{window.removeEventListener("keydown",n)}},[r,e])},tan=({name:r,selected:e,onClick:t})=>_t.jsxs("div",{className:ww`
|