tscircuit 0.0.1211 → 0.0.1212

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.
@@ -10,7 +10,7 @@ Your code should look like:
10
10
  1. You might have mismatching versions of React and the renderer (such as React DOM)
11
11
  2. You might be breaking the Rules of Hooks
12
12
  3. You might have more than one copy of React in the same app
13
- See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),dispatcher}function releaseAsyncTransition(){ReactSharedInternals.asyncTransitions--}function enqueueTask(task){if(enqueueTaskImpl===null)try{var requireString=("require"+Math.random()).slice(0,7);enqueueTaskImpl=(module&&module[requireString]).call(module,"timers").setImmediate}catch{enqueueTaskImpl=function(callback){didWarnAboutMessageChannel===!1&&(didWarnAboutMessageChannel=!0,typeof MessageChannel>"u"&&console.error("This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."));var channel=new MessageChannel;channel.port1.onmessage=callback,channel.port2.postMessage(void 0)}}return enqueueTaskImpl(task)}function aggregateErrors(errors){return 1<errors.length&&typeof AggregateError=="function"?new AggregateError(errors):errors[0]}function popActScope(prevActQueue,prevActScopeDepth){prevActScopeDepth!==actScopeDepth-1&&console.error("You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. "),actScopeDepth=prevActScopeDepth}function recursivelyFlushAsyncActWork(returnValue,resolve,reject){var queue=ReactSharedInternals.actQueue;if(queue!==null)if(queue.length!==0)try{flushActQueue(queue),enqueueTask(function(){return recursivelyFlushAsyncActWork(returnValue,resolve,reject)});return}catch(error){ReactSharedInternals.thrownErrors.push(error)}else ReactSharedInternals.actQueue=null;0<ReactSharedInternals.thrownErrors.length?(queue=aggregateErrors(ReactSharedInternals.thrownErrors),ReactSharedInternals.thrownErrors.length=0,reject(queue)):resolve(returnValue)}function flushActQueue(queue){if(!isFlushing){isFlushing=!0;var i3=0;try{for(;i3<queue.length;i3++){var callback=queue[i3];do{ReactSharedInternals.didUsePromise=!1;var continuation=callback(!1);if(continuation!==null){if(ReactSharedInternals.didUsePromise){queue[i3]=callback,queue.splice(0,i3);return}callback=continuation}else break}while(!0)}queue.length=0}catch(error){queue.splice(0,i3+1),ReactSharedInternals.thrownErrors.push(error)}finally{isFlushing=!1}}}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element"),REACT_PORTAL_TYPE=Symbol.for("react.portal"),REACT_FRAGMENT_TYPE=Symbol.for("react.fragment"),REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode"),REACT_PROFILER_TYPE=Symbol.for("react.profiler"),REACT_CONSUMER_TYPE=Symbol.for("react.consumer"),REACT_CONTEXT_TYPE=Symbol.for("react.context"),REACT_FORWARD_REF_TYPE=Symbol.for("react.forward_ref"),REACT_SUSPENSE_TYPE=Symbol.for("react.suspense"),REACT_SUSPENSE_LIST_TYPE=Symbol.for("react.suspense_list"),REACT_MEMO_TYPE=Symbol.for("react.memo"),REACT_LAZY_TYPE=Symbol.for("react.lazy"),REACT_ACTIVITY_TYPE=Symbol.for("react.activity"),MAYBE_ITERATOR_SYMBOL=Symbol.iterator,didWarnStateUpdateForUnmountedComponent={},ReactNoopUpdateQueue={isMounted:function(){return!1},enqueueForceUpdate:function(publicInstance){warnNoop(publicInstance,"forceUpdate")},enqueueReplaceState:function(publicInstance){warnNoop(publicInstance,"replaceState")},enqueueSetState:function(publicInstance){warnNoop(publicInstance,"setState")}},assign=Object.assign,emptyObject={};Object.freeze(emptyObject),Component.prototype.isReactComponent={},Component.prototype.setState=function(partialState,callback){if(typeof partialState!="object"&&typeof partialState!="function"&&partialState!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,partialState,callback,"setState")},Component.prototype.forceUpdate=function(callback){this.updater.enqueueForceUpdate(this,callback,"forceUpdate")};var deprecatedAPIs={isMounted:["isMounted","Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."],replaceState:["replaceState","Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."]};for(fnName in deprecatedAPIs)deprecatedAPIs.hasOwnProperty(fnName)&&defineDeprecationWarning(fnName,deprecatedAPIs[fnName]);ComponentDummy.prototype=Component.prototype,deprecatedAPIs=PureComponent.prototype=new ComponentDummy,deprecatedAPIs.constructor=PureComponent,assign(deprecatedAPIs,Component.prototype),deprecatedAPIs.isPureReactComponent=!0;var isArrayImpl=Array.isArray,REACT_CLIENT_REFERENCE=Symbol.for("react.client.reference"),ReactSharedInternals={H:null,A:null,T:null,S:null,actQueue:null,asyncTransitions:0,isBatchingLegacy:!1,didScheduleLegacyUpdate:!1,didUsePromise:!1,thrownErrors:[],getCurrentStack:null,recentlyCreatedOwnerStacks:0},hasOwnProperty=Object.prototype.hasOwnProperty,createTask=console.createTask?console.createTask:function(){return null};deprecatedAPIs={react_stack_bottom_frame:function(callStackForError){return callStackForError()}};var specialPropKeyWarningShown,didWarnAboutOldJSXRuntime,didWarnAboutElementRef={},unknownOwnerDebugStack=deprecatedAPIs.react_stack_bottom_frame.bind(deprecatedAPIs,UnknownOwner)(),unknownOwnerDebugTask=createTask(getTaskName(UnknownOwner)),didWarnAboutMaps=!1,userProvidedKeyEscapeRegex=/\/+/g,reportGlobalError=typeof reportError=="function"?reportError:function(error){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var event=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof error=="object"&&error!==null&&typeof error.message=="string"?String(error.message):String(error),error});if(!window.dispatchEvent(event))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",error);return}console.error(error)},didWarnAboutMessageChannel=!1,enqueueTaskImpl=null,actScopeDepth=0,didWarnNoAwaitAct=!1,isFlushing=!1,queueSeveralMicrotasks=typeof queueMicrotask=="function"?function(callback){queueMicrotask(function(){return queueMicrotask(callback)})}:enqueueTask;deprecatedAPIs=Object.freeze({__proto__:null,c:function(size2){return resolveDispatcher().useMemoCache(size2)}});var fnName={map:mapChildren,forEach:function(children,forEachFunc,forEachContext){mapChildren(children,function(){forEachFunc.apply(this,arguments)},forEachContext)},count:function(children){var n3=0;return mapChildren(children,function(){n3++}),n3},toArray:function(children){return mapChildren(children,function(child){return child})||[]},only:function(children){if(!isValidElement3(children))throw Error("React.Children.only expected to receive a single React element child.");return children}};exports.Activity=REACT_ACTIVITY_TYPE,exports.Children=fnName,exports.Component=Component,exports.Fragment=REACT_FRAGMENT_TYPE,exports.Profiler=REACT_PROFILER_TYPE,exports.PureComponent=PureComponent,exports.StrictMode=REACT_STRICT_MODE_TYPE,exports.Suspense=REACT_SUSPENSE_TYPE,exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=ReactSharedInternals,exports.__COMPILER_RUNTIME=deprecatedAPIs,exports.act=function(callback){var prevActQueue=ReactSharedInternals.actQueue,prevActScopeDepth=actScopeDepth;actScopeDepth++;var queue=ReactSharedInternals.actQueue=prevActQueue!==null?prevActQueue:[],didAwaitActCall=!1;try{var result=callback()}catch(error){ReactSharedInternals.thrownErrors.push(error)}if(0<ReactSharedInternals.thrownErrors.length)throw popActScope(prevActQueue,prevActScopeDepth),callback=aggregateErrors(ReactSharedInternals.thrownErrors),ReactSharedInternals.thrownErrors.length=0,callback;if(result!==null&&typeof result=="object"&&typeof result.then=="function"){var thenable=result;return queueSeveralMicrotasks(function(){didAwaitActCall||didWarnNoAwaitAct||(didWarnNoAwaitAct=!0,console.error("You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"))}),{then:function(resolve,reject){didAwaitActCall=!0,thenable.then(function(returnValue){if(popActScope(prevActQueue,prevActScopeDepth),prevActScopeDepth===0){try{flushActQueue(queue),enqueueTask(function(){return recursivelyFlushAsyncActWork(returnValue,resolve,reject)})}catch(error$0){ReactSharedInternals.thrownErrors.push(error$0)}if(0<ReactSharedInternals.thrownErrors.length){var _thrownError=aggregateErrors(ReactSharedInternals.thrownErrors);ReactSharedInternals.thrownErrors.length=0,reject(_thrownError)}}else resolve(returnValue)},function(error){popActScope(prevActQueue,prevActScopeDepth),0<ReactSharedInternals.thrownErrors.length&&(error=aggregateErrors(ReactSharedInternals.thrownErrors),ReactSharedInternals.thrownErrors.length=0),reject(error)})}}}var returnValue$jscomp$0=result;if(popActScope(prevActQueue,prevActScopeDepth),prevActScopeDepth===0&&(flushActQueue(queue),queue.length!==0&&queueSeveralMicrotasks(function(){didAwaitActCall||didWarnNoAwaitAct||(didWarnNoAwaitAct=!0,console.error("A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\n\nawait act(() => ...)"))}),ReactSharedInternals.actQueue=null),0<ReactSharedInternals.thrownErrors.length)throw callback=aggregateErrors(ReactSharedInternals.thrownErrors),ReactSharedInternals.thrownErrors.length=0,callback;return{then:function(resolve,reject){didAwaitActCall=!0,prevActScopeDepth===0?(ReactSharedInternals.actQueue=queue,enqueueTask(function(){return recursivelyFlushAsyncActWork(returnValue$jscomp$0,resolve,reject)})):resolve(returnValue$jscomp$0)}}},exports.cache=function(fn3){return function(){return fn3.apply(null,arguments)}},exports.cacheSignal=function(){return null},exports.captureOwnerStack=function(){var getCurrentStack=ReactSharedInternals.getCurrentStack;return getCurrentStack===null?null:getCurrentStack()},exports.cloneElement=function(element,config,children){if(element==null)throw Error("The argument must be a React element, but you passed "+element+".");var props=assign({},element.props),key=element.key,owner=element._owner;if(config!=null){var JSCompiler_inline_result;a:{if(hasOwnProperty.call(config,"ref")&&(JSCompiler_inline_result=Object.getOwnPropertyDescriptor(config,"ref").get)&&JSCompiler_inline_result.isReactWarning){JSCompiler_inline_result=!1;break a}JSCompiler_inline_result=config.ref!==void 0}JSCompiler_inline_result&&(owner=getOwner()),hasValidKey(config)&&(checkKeyStringCoercion(config.key),key=""+config.key);for(propName in config)!hasOwnProperty.call(config,propName)||propName==="key"||propName==="__self"||propName==="__source"||propName==="ref"&&config.ref===void 0||(props[propName]=config[propName])}var propName=arguments.length-2;if(propName===1)props.children=children;else if(1<propName){JSCompiler_inline_result=Array(propName);for(var i3=0;i3<propName;i3++)JSCompiler_inline_result[i3]=arguments[i3+2];props.children=JSCompiler_inline_result}for(props=ReactElement(element.type,key,props,owner,element._debugStack,element._debugTask),key=2;key<arguments.length;key++)validateChildKeys(arguments[key]);return props},exports.createContext=function(defaultValue){return defaultValue={$$typeof:REACT_CONTEXT_TYPE,_currentValue:defaultValue,_currentValue2:defaultValue,_threadCount:0,Provider:null,Consumer:null},defaultValue.Provider=defaultValue,defaultValue.Consumer={$$typeof:REACT_CONSUMER_TYPE,_context:defaultValue},defaultValue._currentRenderer=null,defaultValue._currentRenderer2=null,defaultValue},exports.createElement=function(type,config,children){for(var i3=2;i3<arguments.length;i3++)validateChildKeys(arguments[i3]);i3={};var key=null;if(config!=null)for(propName in didWarnAboutOldJSXRuntime||!("__self"in config)||"key"in config||(didWarnAboutOldJSXRuntime=!0,console.warn("Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform")),hasValidKey(config)&&(checkKeyStringCoercion(config.key),key=""+config.key),config)hasOwnProperty.call(config,propName)&&propName!=="key"&&propName!=="__self"&&propName!=="__source"&&(i3[propName]=config[propName]);var childrenLength=arguments.length-2;if(childrenLength===1)i3.children=children;else if(1<childrenLength){for(var childArray=Array(childrenLength),_i3=0;_i3<childrenLength;_i3++)childArray[_i3]=arguments[_i3+2];Object.freeze&&Object.freeze(childArray),i3.children=childArray}if(type&&type.defaultProps)for(propName in childrenLength=type.defaultProps,childrenLength)i3[propName]===void 0&&(i3[propName]=childrenLength[propName]);key&&defineKeyPropWarningGetter(i3,typeof type=="function"?type.displayName||type.name||"Unknown":type);var propName=1e4>ReactSharedInternals.recentlyCreatedOwnerStacks++;return ReactElement(type,key,i3,getOwner(),propName?Error("react-stack-top-frame"):unknownOwnerDebugStack,propName?createTask(getTaskName(type)):unknownOwnerDebugTask)},exports.createRef=function(){var refObject={current:null};return Object.seal(refObject),refObject},exports.forwardRef=function(render2){render2!=null&&render2.$$typeof===REACT_MEMO_TYPE?console.error("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."):typeof render2!="function"?console.error("forwardRef requires a render function but was given %s.",render2===null?"null":typeof render2):render2.length!==0&&render2.length!==2&&console.error("forwardRef render functions accept exactly two parameters: props and ref. %s",render2.length===1?"Did you forget to use the ref parameter?":"Any additional parameter will be undefined."),render2!=null&&render2.defaultProps!=null&&console.error("forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?");var elementType={$$typeof:REACT_FORWARD_REF_TYPE,render:render2},ownName;return Object.defineProperty(elementType,"displayName",{enumerable:!1,configurable:!0,get:function(){return ownName},set:function(name){ownName=name,render2.name||render2.displayName||(Object.defineProperty(render2,"name",{value:name}),render2.displayName=name)}}),elementType},exports.isValidElement=isValidElement3,exports.lazy=function(ctor){ctor={_status:-1,_result:ctor};var lazyType2={$$typeof:REACT_LAZY_TYPE,_payload:ctor,_init:lazyInitializer},ioInfo={name:"lazy",start:-1,end:-1,value:null,owner:null,debugStack:Error("react-stack-top-frame"),debugTask:console.createTask?console.createTask("lazy()"):null};return ctor._ioInfo=ioInfo,lazyType2._debugInfo=[{awaited:ioInfo}],lazyType2},exports.memo=function(type,compare){type==null&&console.error("memo: The first argument must be a component. Instead received: %s",type===null?"null":typeof type),compare={$$typeof:REACT_MEMO_TYPE,type,compare:compare===void 0?null:compare};var ownName;return Object.defineProperty(compare,"displayName",{enumerable:!1,configurable:!0,get:function(){return ownName},set:function(name){ownName=name,type.name||type.displayName||(Object.defineProperty(type,"name",{value:name}),type.displayName=name)}}),compare},exports.startTransition=function(scope){var prevTransition=ReactSharedInternals.T,currentTransition={};currentTransition._updatedFibers=new Set,ReactSharedInternals.T=currentTransition;try{var returnValue=scope(),onStartTransitionFinish=ReactSharedInternals.S;onStartTransitionFinish!==null&&onStartTransitionFinish(currentTransition,returnValue),typeof returnValue=="object"&&returnValue!==null&&typeof returnValue.then=="function"&&(ReactSharedInternals.asyncTransitions++,returnValue.then(releaseAsyncTransition,releaseAsyncTransition),returnValue.then(noop,reportGlobalError))}catch(error){reportGlobalError(error)}finally{prevTransition===null&&currentTransition._updatedFibers&&(scope=currentTransition._updatedFibers.size,currentTransition._updatedFibers.clear(),10<scope&&console.warn("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.")),prevTransition!==null&&currentTransition.types!==null&&(prevTransition.types!==null&&prevTransition.types!==currentTransition.types&&console.error("We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React."),prevTransition.types=currentTransition.types),ReactSharedInternals.T=prevTransition}},exports.unstable_useCacheRefresh=function(){return resolveDispatcher().useCacheRefresh()},exports.use=function(usable){return resolveDispatcher().use(usable)},exports.useActionState=function(action,initialState,permalink){return resolveDispatcher().useActionState(action,initialState,permalink)},exports.useCallback=function(callback,deps){return resolveDispatcher().useCallback(callback,deps)},exports.useContext=function(Context){var dispatcher=resolveDispatcher();return Context.$$typeof===REACT_CONSUMER_TYPE&&console.error("Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?"),dispatcher.useContext(Context)},exports.useDebugValue=function(value,formatterFn){return resolveDispatcher().useDebugValue(value,formatterFn)},exports.useDeferredValue=function(value,initialValue){return resolveDispatcher().useDeferredValue(value,initialValue)},exports.useEffect=function(create,deps){return create==null&&console.warn("React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?"),resolveDispatcher().useEffect(create,deps)},exports.useEffectEvent=function(callback){return resolveDispatcher().useEffectEvent(callback)},exports.useId=function(){return resolveDispatcher().useId()},exports.useImperativeHandle=function(ref,create,deps){return resolveDispatcher().useImperativeHandle(ref,create,deps)},exports.useInsertionEffect=function(create,deps){return create==null&&console.warn("React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?"),resolveDispatcher().useInsertionEffect(create,deps)},exports.useLayoutEffect=function(create,deps){return create==null&&console.warn("React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?"),resolveDispatcher().useLayoutEffect(create,deps)},exports.useMemo=function(create,deps){return resolveDispatcher().useMemo(create,deps)},exports.useOptimistic=function(passthrough,reducer){return resolveDispatcher().useOptimistic(passthrough,reducer)},exports.useReducer=function(reducer,initialArg,init){return resolveDispatcher().useReducer(reducer,initialArg,init)},exports.useRef=function(initialValue){return resolveDispatcher().useRef(initialValue)},exports.useState=function(initialState){return resolveDispatcher().useState(initialState)},exports.useSyncExternalStore=function(subscribe,getSnapshot,getServerSnapshot){return resolveDispatcher().useSyncExternalStore(subscribe,getSnapshot,getServerSnapshot)},exports.useTransition=function(){return resolveDispatcher().useTransition()},exports.version="19.2.3",typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()}});var require_react=__commonJS({"node_modules/react/index.js"(exports,module){"use strict";module.exports=require_react_development()}});var util,objectUtil,ZodParsedType,getParsedType,init_util=__esm({"node_modules/zod/v3/helpers/util.js"(){"use strict";(function(util2){util2.assertEqual=_4=>{};function assertIs(_arg){}util2.assertIs=assertIs;function assertNever(_x2){throw new Error}util2.assertNever=assertNever,util2.arrayToEnum=items=>{let obj={};for(let item of items)obj[item]=item;return obj},util2.getValidEnumValues=obj=>{let validKeys=util2.objectKeys(obj).filter(k4=>typeof obj[obj[k4]]!="number"),filtered={};for(let k4 of validKeys)filtered[k4]=obj[k4];return util2.objectValues(filtered)},util2.objectValues=obj=>util2.objectKeys(obj).map(function(e4){return obj[e4]}),util2.objectKeys=typeof Object.keys=="function"?obj=>Object.keys(obj):object=>{let keys=[];for(let key in object)Object.prototype.hasOwnProperty.call(object,key)&&keys.push(key);return keys},util2.find=(arr,checker)=>{for(let item of arr)if(checker(item))return item},util2.isInteger=typeof Number.isInteger=="function"?val=>Number.isInteger(val):val=>typeof val=="number"&&Number.isFinite(val)&&Math.floor(val)===val;function joinValues(array2,separator=" | "){return array2.map(val=>typeof val=="string"?`'${val}'`:val).join(separator)}util2.joinValues=joinValues,util2.jsonStringifyReplacer=(_4,value)=>typeof value=="bigint"?value.toString():value})(util||(util={}));(function(objectUtil2){objectUtil2.mergeShapes=(first,second)=>({...first,...second})})(objectUtil||(objectUtil={}));ZodParsedType=util.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),getParsedType=data=>{switch(typeof data){case"undefined":return ZodParsedType.undefined;case"string":return ZodParsedType.string;case"number":return Number.isNaN(data)?ZodParsedType.nan:ZodParsedType.number;case"boolean":return ZodParsedType.boolean;case"function":return ZodParsedType.function;case"bigint":return ZodParsedType.bigint;case"symbol":return ZodParsedType.symbol;case"object":return Array.isArray(data)?ZodParsedType.array:data===null?ZodParsedType.null:data.then&&typeof data.then=="function"&&data.catch&&typeof data.catch=="function"?ZodParsedType.promise:typeof Map<"u"&&data instanceof Map?ZodParsedType.map:typeof Set<"u"&&data instanceof Set?ZodParsedType.set:typeof Date<"u"&&data instanceof Date?ZodParsedType.date:ZodParsedType.object;default:return ZodParsedType.unknown}}}});var ZodIssueCode,quotelessJson,ZodError,init_ZodError=__esm({"node_modules/zod/v3/ZodError.js"(){"use strict";init_util();ZodIssueCode=util.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"]),quotelessJson=obj=>JSON.stringify(obj,null,2).replace(/"([^"]+)":/g,"$1:"),ZodError=class _ZodError extends Error{get errors(){return this.issues}constructor(issues){super(),this.issues=[],this.addIssue=sub=>{this.issues=[...this.issues,sub]},this.addIssues=(subs=[])=>{this.issues=[...this.issues,...subs]};let actualProto=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,actualProto):this.__proto__=actualProto,this.name="ZodError",this.issues=issues}format(_mapper){let mapper=_mapper||function(issue){return issue.message},fieldErrors={_errors:[]},processError=error=>{for(let issue of error.issues)if(issue.code==="invalid_union")issue.unionErrors.map(processError);else if(issue.code==="invalid_return_type")processError(issue.returnTypeError);else if(issue.code==="invalid_arguments")processError(issue.argumentsError);else if(issue.path.length===0)fieldErrors._errors.push(mapper(issue));else{let curr=fieldErrors,i3=0;for(;i3<issue.path.length;){let el2=issue.path[i3];i3===issue.path.length-1?(curr[el2]=curr[el2]||{_errors:[]},curr[el2]._errors.push(mapper(issue))):curr[el2]=curr[el2]||{_errors:[]},curr=curr[el2],i3++}}};return processError(this),fieldErrors}static assert(value){if(!(value instanceof _ZodError))throw new Error(`Not a ZodError: ${value}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,util.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(mapper=issue=>issue.message){let fieldErrors={},formErrors=[];for(let sub of this.issues)if(sub.path.length>0){let firstEl=sub.path[0];fieldErrors[firstEl]=fieldErrors[firstEl]||[],fieldErrors[firstEl].push(mapper(sub))}else formErrors.push(mapper(sub));return{formErrors,fieldErrors}}get formErrors(){return this.flatten()}};ZodError.create=issues=>new ZodError(issues)}});var errorMap,en_default,init_en=__esm({"node_modules/zod/v3/locales/en.js"(){"use strict";init_ZodError();init_util();errorMap=(issue,_ctx)=>{let message;switch(issue.code){case ZodIssueCode.invalid_type:issue.received===ZodParsedType.undefined?message="Required":message=`Expected ${issue.expected}, received ${issue.received}`;break;case ZodIssueCode.invalid_literal:message=`Invalid literal value, expected ${JSON.stringify(issue.expected,util.jsonStringifyReplacer)}`;break;case ZodIssueCode.unrecognized_keys:message=`Unrecognized key(s) in object: ${util.joinValues(issue.keys,", ")}`;break;case ZodIssueCode.invalid_union:message="Invalid input";break;case ZodIssueCode.invalid_union_discriminator:message=`Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;break;case ZodIssueCode.invalid_enum_value:message=`Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;break;case ZodIssueCode.invalid_arguments:message="Invalid function arguments";break;case ZodIssueCode.invalid_return_type:message="Invalid function return type";break;case ZodIssueCode.invalid_date:message="Invalid date";break;case ZodIssueCode.invalid_string:typeof issue.validation=="object"?"includes"in issue.validation?(message=`Invalid input: must include "${issue.validation.includes}"`,typeof issue.validation.position=="number"&&(message=`${message} at one or more positions greater than or equal to ${issue.validation.position}`)):"startsWith"in issue.validation?message=`Invalid input: must start with "${issue.validation.startsWith}"`:"endsWith"in issue.validation?message=`Invalid input: must end with "${issue.validation.endsWith}"`:util.assertNever(issue.validation):issue.validation!=="regex"?message=`Invalid ${issue.validation}`:message="Invalid";break;case ZodIssueCode.too_small:issue.type==="array"?message=`Array must contain ${issue.exact?"exactly":issue.inclusive?"at least":"more than"} ${issue.minimum} element(s)`:issue.type==="string"?message=`String must contain ${issue.exact?"exactly":issue.inclusive?"at least":"over"} ${issue.minimum} character(s)`:issue.type==="number"?message=`Number must be ${issue.exact?"exactly equal to ":issue.inclusive?"greater than or equal to ":"greater than "}${issue.minimum}`:issue.type==="bigint"?message=`Number must be ${issue.exact?"exactly equal to ":issue.inclusive?"greater than or equal to ":"greater than "}${issue.minimum}`:issue.type==="date"?message=`Date must be ${issue.exact?"exactly equal to ":issue.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(issue.minimum))}`:message="Invalid input";break;case ZodIssueCode.too_big:issue.type==="array"?message=`Array must contain ${issue.exact?"exactly":issue.inclusive?"at most":"less than"} ${issue.maximum} element(s)`:issue.type==="string"?message=`String must contain ${issue.exact?"exactly":issue.inclusive?"at most":"under"} ${issue.maximum} character(s)`:issue.type==="number"?message=`Number must be ${issue.exact?"exactly":issue.inclusive?"less than or equal to":"less than"} ${issue.maximum}`:issue.type==="bigint"?message=`BigInt must be ${issue.exact?"exactly":issue.inclusive?"less than or equal to":"less than"} ${issue.maximum}`:issue.type==="date"?message=`Date must be ${issue.exact?"exactly":issue.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(issue.maximum))}`:message="Invalid input";break;case ZodIssueCode.custom:message="Invalid input";break;case ZodIssueCode.invalid_intersection_types:message="Intersection results could not be merged";break;case ZodIssueCode.not_multiple_of:message=`Number must be a multiple of ${issue.multipleOf}`;break;case ZodIssueCode.not_finite:message="Number must be finite";break;default:message=_ctx.defaultError,util.assertNever(issue)}return{message}},en_default=errorMap}});function setErrorMap(map){overrideErrorMap=map}function getErrorMap(){return overrideErrorMap}var overrideErrorMap,init_errors=__esm({"node_modules/zod/v3/errors.js"(){"use strict";init_en();overrideErrorMap=en_default}});function addIssueToContext(ctx,issueData){let overrideMap=getErrorMap(),issue=makeIssue({issueData,data:ctx.data,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,overrideMap,overrideMap===en_default?void 0:en_default].filter(x3=>!!x3)});ctx.common.issues.push(issue)}var makeIssue,EMPTY_PATH,ParseStatus,INVALID,DIRTY,OK,isAborted,isDirty,isValid,isAsync,init_parseUtil=__esm({"node_modules/zod/v3/helpers/parseUtil.js"(){"use strict";init_errors();init_en();makeIssue=params=>{let{data,path,errorMaps,issueData}=params,fullPath=[...path,...issueData.path||[]],fullIssue={...issueData,path:fullPath};if(issueData.message!==void 0)return{...issueData,path:fullPath,message:issueData.message};let errorMessage="",maps=errorMaps.filter(m3=>!!m3).slice().reverse();for(let map of maps)errorMessage=map(fullIssue,{data,defaultError:errorMessage}).message;return{...issueData,path:fullPath,message:errorMessage}},EMPTY_PATH=[];ParseStatus=class _ParseStatus{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(status,results){let arrayValue=[];for(let s3 of results){if(s3.status==="aborted")return INVALID;s3.status==="dirty"&&status.dirty(),arrayValue.push(s3.value)}return{status:status.value,value:arrayValue}}static async mergeObjectAsync(status,pairs3){let syncPairs=[];for(let pair of pairs3){let key=await pair.key,value=await pair.value;syncPairs.push({key,value})}return _ParseStatus.mergeObjectSync(status,syncPairs)}static mergeObjectSync(status,pairs3){let finalObject={};for(let pair of pairs3){let{key,value}=pair;if(key.status==="aborted"||value.status==="aborted")return INVALID;key.status==="dirty"&&status.dirty(),value.status==="dirty"&&status.dirty(),key.value!=="__proto__"&&(typeof value.value<"u"||pair.alwaysSet)&&(finalObject[key.value]=value.value)}return{status:status.value,value:finalObject}}},INVALID=Object.freeze({status:"aborted"}),DIRTY=value=>({status:"dirty",value}),OK=value=>({status:"valid",value}),isAborted=x3=>x3.status==="aborted",isDirty=x3=>x3.status==="dirty",isValid=x3=>x3.status==="valid",isAsync=x3=>typeof Promise<"u"&&x3 instanceof Promise}});var init_typeAliases=__esm({"node_modules/zod/v3/helpers/typeAliases.js"(){"use strict"}});var errorUtil,init_errorUtil=__esm({"node_modules/zod/v3/helpers/errorUtil.js"(){"use strict";(function(errorUtil2){errorUtil2.errToObj=message=>typeof message=="string"?{message}:message||{},errorUtil2.toString=message=>typeof message=="string"?message:message?.message})(errorUtil||(errorUtil={}))}});function processCreateParams(params){if(!params)return{};let{errorMap:errorMap2,invalid_type_error,required_error,description}=params;if(errorMap2&&(invalid_type_error||required_error))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return errorMap2?{errorMap:errorMap2,description}:{errorMap:(iss,ctx)=>{let{message}=params;return iss.code==="invalid_enum_value"?{message:message??ctx.defaultError}:typeof ctx.data>"u"?{message:message??required_error??ctx.defaultError}:iss.code!=="invalid_type"?{message:ctx.defaultError}:{message:message??invalid_type_error??ctx.defaultError}},description}}function timeRegexSource(args){let secondsRegexSource="[0-5]\\d";args.precision?secondsRegexSource=`${secondsRegexSource}\\.\\d{${args.precision}}`:args.precision==null&&(secondsRegexSource=`${secondsRegexSource}(\\.\\d+)?`);let secondsQuantifier=args.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${secondsRegexSource})${secondsQuantifier}`}function timeRegex(args){return new RegExp(`^${timeRegexSource(args)}$`)}function datetimeRegex(args){let regex=`${dateRegexSource}T${timeRegexSource(args)}`,opts=[];return opts.push(args.local?"Z?":"Z"),args.offset&&opts.push("([+-]\\d{2}:?\\d{2})"),regex=`${regex}(${opts.join("|")})`,new RegExp(`^${regex}$`)}function isValidIP(ip2,version){return!!((version==="v4"||!version)&&ipv4Regex.test(ip2)||(version==="v6"||!version)&&ipv6Regex.test(ip2))}function isValidJWT(jwt,alg){if(!jwtRegex.test(jwt))return!1;try{let[header]=jwt.split(".");if(!header)return!1;let base64=header.replace(/-/g,"+").replace(/_/g,"/").padEnd(header.length+(4-header.length%4)%4,"="),decoded=JSON.parse(atob(base64));return!(typeof decoded!="object"||decoded===null||"typ"in decoded&&decoded?.typ!=="JWT"||!decoded.alg||alg&&decoded.alg!==alg)}catch{return!1}}function isValidCidr(ip2,version){return!!((version==="v4"||!version)&&ipv4CidrRegex.test(ip2)||(version==="v6"||!version)&&ipv6CidrRegex.test(ip2))}function floatSafeRemainder(val,step){let valDecCount=(val.toString().split(".")[1]||"").length,stepDecCount=(step.toString().split(".")[1]||"").length,decCount=valDecCount>stepDecCount?valDecCount:stepDecCount,valInt=Number.parseInt(val.toFixed(decCount).replace(".","")),stepInt=Number.parseInt(step.toFixed(decCount).replace(".",""));return valInt%stepInt/10**decCount}function deepPartialify(schema){if(schema instanceof ZodObject){let newShape={};for(let key in schema.shape){let fieldSchema=schema.shape[key];newShape[key]=ZodOptional.create(deepPartialify(fieldSchema))}return new ZodObject({...schema._def,shape:()=>newShape})}else return schema instanceof ZodArray?new ZodArray({...schema._def,type:deepPartialify(schema.element)}):schema instanceof ZodOptional?ZodOptional.create(deepPartialify(schema.unwrap())):schema instanceof ZodNullable?ZodNullable.create(deepPartialify(schema.unwrap())):schema instanceof ZodTuple?ZodTuple.create(schema.items.map(item=>deepPartialify(item))):schema}function mergeValues(a2,b3){let aType=getParsedType(a2),bType=getParsedType(b3);if(a2===b3)return{valid:!0,data:a2};if(aType===ZodParsedType.object&&bType===ZodParsedType.object){let bKeys=util.objectKeys(b3),sharedKeys=util.objectKeys(a2).filter(key=>bKeys.indexOf(key)!==-1),newObj={...a2,...b3};for(let key of sharedKeys){let sharedValue=mergeValues(a2[key],b3[key]);if(!sharedValue.valid)return{valid:!1};newObj[key]=sharedValue.data}return{valid:!0,data:newObj}}else if(aType===ZodParsedType.array&&bType===ZodParsedType.array){if(a2.length!==b3.length)return{valid:!1};let newArray=[];for(let index=0;index<a2.length;index++){let itemA=a2[index],itemB=b3[index],sharedValue=mergeValues(itemA,itemB);if(!sharedValue.valid)return{valid:!1};newArray.push(sharedValue.data)}return{valid:!0,data:newArray}}else return aType===ZodParsedType.date&&bType===ZodParsedType.date&&+a2==+b3?{valid:!0,data:a2}:{valid:!1}}function createZodEnum(values,params){return new ZodEnum({values,typeName:ZodFirstPartyTypeKind.ZodEnum,...processCreateParams(params)})}function cleanParams(params,data){let p2=typeof params=="function"?params(data):typeof params=="string"?{message:params}:params;return typeof p2=="string"?{message:p2}:p2}function custom(check,_params={},fatal){return check?ZodAny.create().superRefine((data,ctx)=>{let r4=check(data);if(r4 instanceof Promise)return r4.then(r6=>{if(!r6){let params=cleanParams(_params,data),_fatal=params.fatal??fatal??!0;ctx.addIssue({code:"custom",...params,fatal:_fatal})}});if(!r4){let params=cleanParams(_params,data),_fatal=params.fatal??fatal??!0;ctx.addIssue({code:"custom",...params,fatal:_fatal})}}):ZodAny.create()}var ParseInputLazyPath,handleResult,ZodType,cuidRegex,cuid2Regex,ulidRegex,uuidRegex,nanoidRegex,jwtRegex,durationRegex,emailRegex,_emojiRegex,emojiRegex,ipv4Regex,ipv4CidrRegex,ipv6Regex,ipv6CidrRegex,base64Regex,base64urlRegex,dateRegexSource,dateRegex,ZodString,ZodNumber,ZodBigInt,ZodBoolean,ZodDate,ZodSymbol,ZodUndefined,ZodNull,ZodAny,ZodUnknown,ZodNever,ZodVoid,ZodArray,ZodObject,ZodUnion,getDiscriminator,ZodDiscriminatedUnion,ZodIntersection,ZodTuple,ZodRecord,ZodMap,ZodSet,ZodFunction,ZodLazy,ZodLiteral,ZodEnum,ZodNativeEnum,ZodPromise,ZodEffects,ZodOptional,ZodNullable,ZodDefault,ZodCatch,ZodNaN,BRAND,ZodBranded,ZodPipeline,ZodReadonly,late,ZodFirstPartyTypeKind,instanceOfType,stringType,numberType,nanType,bigIntType,booleanType,dateType,symbolType,undefinedType,nullType,anyType,unknownType,neverType,voidType,arrayType,objectType,strictObjectType,unionType,discriminatedUnionType,intersectionType,tupleType,recordType,mapType,setType,functionType,lazyType,literalType,enumType,nativeEnumType,promiseType,effectsType,optionalType,nullableType,preprocessType,pipelineType,ostring,onumber,oboolean,coerce,NEVER,init_types=__esm({"node_modules/zod/v3/types.js"(){"use strict";init_ZodError();init_errors();init_errorUtil();init_parseUtil();init_util();ParseInputLazyPath=class{constructor(parent,value,path,key){this._cachedPath=[],this.parent=parent,this.data=value,this._path=path,this._key=key}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},handleResult=(ctx,result)=>{if(isValid(result))return{success:!0,data:result.value};if(!ctx.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let error=new ZodError(ctx.common.issues);return this._error=error,this._error}}};ZodType=class{get description(){return this._def.description}_getType(input2){return getParsedType(input2.data)}_getOrReturnCtx(input2,ctx){return ctx||{common:input2.parent.common,data:input2.data,parsedType:getParsedType(input2.data),schemaErrorMap:this._def.errorMap,path:input2.path,parent:input2.parent}}_processInputParams(input2){return{status:new ParseStatus,ctx:{common:input2.parent.common,data:input2.data,parsedType:getParsedType(input2.data),schemaErrorMap:this._def.errorMap,path:input2.path,parent:input2.parent}}}_parseSync(input2){let result=this._parse(input2);if(isAsync(result))throw new Error("Synchronous parse encountered promise.");return result}_parseAsync(input2){let result=this._parse(input2);return Promise.resolve(result)}parse(data,params){let result=this.safeParse(data,params);if(result.success)return result.data;throw result.error}safeParse(data,params){let ctx={common:{issues:[],async:params?.async??!1,contextualErrorMap:params?.errorMap},path:params?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data,parsedType:getParsedType(data)},result=this._parseSync({data,path:ctx.path,parent:ctx});return handleResult(ctx,result)}"~validate"(data){let ctx={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data,parsedType:getParsedType(data)};if(!this["~standard"].async)try{let result=this._parseSync({data,path:[],parent:ctx});return isValid(result)?{value:result.value}:{issues:ctx.common.issues}}catch(err){err?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),ctx.common={issues:[],async:!0}}return this._parseAsync({data,path:[],parent:ctx}).then(result=>isValid(result)?{value:result.value}:{issues:ctx.common.issues})}async parseAsync(data,params){let result=await this.safeParseAsync(data,params);if(result.success)return result.data;throw result.error}async safeParseAsync(data,params){let ctx={common:{issues:[],contextualErrorMap:params?.errorMap,async:!0},path:params?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data,parsedType:getParsedType(data)},maybeAsyncResult=this._parse({data,path:ctx.path,parent:ctx}),result=await(isAsync(maybeAsyncResult)?maybeAsyncResult:Promise.resolve(maybeAsyncResult));return handleResult(ctx,result)}refine(check,message){let getIssueProperties=val=>typeof message=="string"||typeof message>"u"?{message}:typeof message=="function"?message(val):message;return this._refinement((val,ctx)=>{let result=check(val),setError=()=>ctx.addIssue({code:ZodIssueCode.custom,...getIssueProperties(val)});return typeof Promise<"u"&&result instanceof Promise?result.then(data=>data?!0:(setError(),!1)):result?!0:(setError(),!1)})}refinement(check,refinementData){return this._refinement((val,ctx)=>check(val)?!0:(ctx.addIssue(typeof refinementData=="function"?refinementData(val,ctx):refinementData),!1))}_refinement(refinement){return new ZodEffects({schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"refinement",refinement}})}superRefine(refinement){return this._refinement(refinement)}constructor(def){this.spa=this.safeParseAsync,this._def=def,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:data=>this["~validate"](data)}}optional(){return ZodOptional.create(this,this._def)}nullable(){return ZodNullable.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ZodArray.create(this)}promise(){return ZodPromise.create(this,this._def)}or(option){return ZodUnion.create([this,option],this._def)}and(incoming){return ZodIntersection.create(this,incoming,this._def)}transform(transform5){return new ZodEffects({...processCreateParams(this._def),schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"transform",transform:transform5}})}default(def){let defaultValueFunc=typeof def=="function"?def:()=>def;return new ZodDefault({...processCreateParams(this._def),innerType:this,defaultValue:defaultValueFunc,typeName:ZodFirstPartyTypeKind.ZodDefault})}brand(){return new ZodBranded({typeName:ZodFirstPartyTypeKind.ZodBranded,type:this,...processCreateParams(this._def)})}catch(def){let catchValueFunc=typeof def=="function"?def:()=>def;return new ZodCatch({...processCreateParams(this._def),innerType:this,catchValue:catchValueFunc,typeName:ZodFirstPartyTypeKind.ZodCatch})}describe(description){let This=this.constructor;return new This({...this._def,description})}pipe(target){return ZodPipeline.create(this,target)}readonly(){return ZodReadonly.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},cuidRegex=/^c[^\s-]{8,}$/i,cuid2Regex=/^[0-9a-z]+$/,ulidRegex=/^[0-9A-HJKMNP-TV-Z]{26}$/i,uuidRegex=/^[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,nanoidRegex=/^[a-z0-9_-]{21}$/i,jwtRegex=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,durationRegex=/^[-+]?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)?)??$/,emailRegex=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,_emojiRegex="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",ipv4Regex=/^(?:(?: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])$/,ipv4CidrRegex=/^(?:(?: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])$/,ipv6Regex=/^(([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]))$/,ipv6CidrRegex=/^(([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])$/,base64Regex=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64urlRegex=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,dateRegexSource="((\\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])))",dateRegex=new RegExp(`^${dateRegexSource}$`);ZodString=class _ZodString extends ZodType{_parse(input2){if(this._def.coerce&&(input2.data=String(input2.data)),this._getType(input2)!==ZodParsedType.string){let ctx2=this._getOrReturnCtx(input2);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.string,received:ctx2.parsedType}),INVALID}let status=new ParseStatus,ctx;for(let check of this._def.checks)if(check.kind==="min")input2.data.length<check.value&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:check.value,type:"string",inclusive:!0,exact:!1,message:check.message}),status.dirty());else if(check.kind==="max")input2.data.length>check.value&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check.value,type:"string",inclusive:!0,exact:!1,message:check.message}),status.dirty());else if(check.kind==="length"){let tooBig=input2.data.length>check.value,tooSmall=input2.data.length<check.value;(tooBig||tooSmall)&&(ctx=this._getOrReturnCtx(input2,ctx),tooBig?addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check.value,type:"string",inclusive:!0,exact:!0,message:check.message}):tooSmall&&addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:check.value,type:"string",inclusive:!0,exact:!0,message:check.message}),status.dirty())}else if(check.kind==="email")emailRegex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"email",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty());else if(check.kind==="emoji")emojiRegex||(emojiRegex=new RegExp(_emojiRegex,"u")),emojiRegex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"emoji",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty());else if(check.kind==="uuid")uuidRegex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"uuid",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty());else if(check.kind==="nanoid")nanoidRegex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"nanoid",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty());else if(check.kind==="cuid")cuidRegex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"cuid",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty());else if(check.kind==="cuid2")cuid2Regex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"cuid2",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty());else if(check.kind==="ulid")ulidRegex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"ulid",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty());else if(check.kind==="url")try{new URL(input2.data)}catch{ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"url",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty()}else check.kind==="regex"?(check.regex.lastIndex=0,check.regex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"regex",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty())):check.kind==="trim"?input2.data=input2.data.trim():check.kind==="includes"?input2.data.includes(check.value,check.position)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:{includes:check.value,position:check.position},message:check.message}),status.dirty()):check.kind==="toLowerCase"?input2.data=input2.data.toLowerCase():check.kind==="toUpperCase"?input2.data=input2.data.toUpperCase():check.kind==="startsWith"?input2.data.startsWith(check.value)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:{startsWith:check.value},message:check.message}),status.dirty()):check.kind==="endsWith"?input2.data.endsWith(check.value)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:{endsWith:check.value},message:check.message}),status.dirty()):check.kind==="datetime"?datetimeRegex(check).test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:"datetime",message:check.message}),status.dirty()):check.kind==="date"?dateRegex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:"date",message:check.message}),status.dirty()):check.kind==="time"?timeRegex(check).test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:"time",message:check.message}),status.dirty()):check.kind==="duration"?durationRegex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"duration",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty()):check.kind==="ip"?isValidIP(input2.data,check.version)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"ip",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty()):check.kind==="jwt"?isValidJWT(input2.data,check.alg)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"jwt",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty()):check.kind==="cidr"?isValidCidr(input2.data,check.version)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"cidr",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty()):check.kind==="base64"?base64Regex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"base64",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty()):check.kind==="base64url"?base64urlRegex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"base64url",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty()):util.assertNever(check);return{status:status.value,value:input2.data}}_regex(regex,validation,message){return this.refinement(data=>regex.test(data),{validation,code:ZodIssueCode.invalid_string,...errorUtil.errToObj(message)})}_addCheck(check){return new _ZodString({...this._def,checks:[...this._def.checks,check]})}email(message){return this._addCheck({kind:"email",...errorUtil.errToObj(message)})}url(message){return this._addCheck({kind:"url",...errorUtil.errToObj(message)})}emoji(message){return this._addCheck({kind:"emoji",...errorUtil.errToObj(message)})}uuid(message){return this._addCheck({kind:"uuid",...errorUtil.errToObj(message)})}nanoid(message){return this._addCheck({kind:"nanoid",...errorUtil.errToObj(message)})}cuid(message){return this._addCheck({kind:"cuid",...errorUtil.errToObj(message)})}cuid2(message){return this._addCheck({kind:"cuid2",...errorUtil.errToObj(message)})}ulid(message){return this._addCheck({kind:"ulid",...errorUtil.errToObj(message)})}base64(message){return this._addCheck({kind:"base64",...errorUtil.errToObj(message)})}base64url(message){return this._addCheck({kind:"base64url",...errorUtil.errToObj(message)})}jwt(options){return this._addCheck({kind:"jwt",...errorUtil.errToObj(options)})}ip(options){return this._addCheck({kind:"ip",...errorUtil.errToObj(options)})}cidr(options){return this._addCheck({kind:"cidr",...errorUtil.errToObj(options)})}datetime(options){return typeof options=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:options}):this._addCheck({kind:"datetime",precision:typeof options?.precision>"u"?null:options?.precision,offset:options?.offset??!1,local:options?.local??!1,...errorUtil.errToObj(options?.message)})}date(message){return this._addCheck({kind:"date",message})}time(options){return typeof options=="string"?this._addCheck({kind:"time",precision:null,message:options}):this._addCheck({kind:"time",precision:typeof options?.precision>"u"?null:options?.precision,...errorUtil.errToObj(options?.message)})}duration(message){return this._addCheck({kind:"duration",...errorUtil.errToObj(message)})}regex(regex,message){return this._addCheck({kind:"regex",regex,...errorUtil.errToObj(message)})}includes(value,options){return this._addCheck({kind:"includes",value,position:options?.position,...errorUtil.errToObj(options?.message)})}startsWith(value,message){return this._addCheck({kind:"startsWith",value,...errorUtil.errToObj(message)})}endsWith(value,message){return this._addCheck({kind:"endsWith",value,...errorUtil.errToObj(message)})}min(minLength,message){return this._addCheck({kind:"min",value:minLength,...errorUtil.errToObj(message)})}max(maxLength,message){return this._addCheck({kind:"max",value:maxLength,...errorUtil.errToObj(message)})}length(len,message){return this._addCheck({kind:"length",value:len,...errorUtil.errToObj(message)})}nonempty(message){return this.min(1,errorUtil.errToObj(message))}trim(){return new _ZodString({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new _ZodString({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new _ZodString({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(ch2=>ch2.kind==="datetime")}get isDate(){return!!this._def.checks.find(ch2=>ch2.kind==="date")}get isTime(){return!!this._def.checks.find(ch2=>ch2.kind==="time")}get isDuration(){return!!this._def.checks.find(ch2=>ch2.kind==="duration")}get isEmail(){return!!this._def.checks.find(ch2=>ch2.kind==="email")}get isURL(){return!!this._def.checks.find(ch2=>ch2.kind==="url")}get isEmoji(){return!!this._def.checks.find(ch2=>ch2.kind==="emoji")}get isUUID(){return!!this._def.checks.find(ch2=>ch2.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(ch2=>ch2.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(ch2=>ch2.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(ch2=>ch2.kind==="cuid2")}get isULID(){return!!this._def.checks.find(ch2=>ch2.kind==="ulid")}get isIP(){return!!this._def.checks.find(ch2=>ch2.kind==="ip")}get isCIDR(){return!!this._def.checks.find(ch2=>ch2.kind==="cidr")}get isBase64(){return!!this._def.checks.find(ch2=>ch2.kind==="base64")}get isBase64url(){return!!this._def.checks.find(ch2=>ch2.kind==="base64url")}get minLength(){let min=null;for(let ch2 of this._def.checks)ch2.kind==="min"&&(min===null||ch2.value>min)&&(min=ch2.value);return min}get maxLength(){let max=null;for(let ch2 of this._def.checks)ch2.kind==="max"&&(max===null||ch2.value<max)&&(max=ch2.value);return max}};ZodString.create=params=>new ZodString({checks:[],typeName:ZodFirstPartyTypeKind.ZodString,coerce:params?.coerce??!1,...processCreateParams(params)});ZodNumber=class _ZodNumber extends ZodType{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(input2){if(this._def.coerce&&(input2.data=Number(input2.data)),this._getType(input2)!==ZodParsedType.number){let ctx2=this._getOrReturnCtx(input2);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.number,received:ctx2.parsedType}),INVALID}let ctx,status=new ParseStatus;for(let check of this._def.checks)check.kind==="int"?util.isInteger(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:"integer",received:"float",message:check.message}),status.dirty()):check.kind==="min"?(check.inclusive?input2.data<check.value:input2.data<=check.value)&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:check.value,type:"number",inclusive:check.inclusive,exact:!1,message:check.message}),status.dirty()):check.kind==="max"?(check.inclusive?input2.data>check.value:input2.data>=check.value)&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check.value,type:"number",inclusive:check.inclusive,exact:!1,message:check.message}),status.dirty()):check.kind==="multipleOf"?floatSafeRemainder(input2.data,check.value)!==0&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.not_multiple_of,multipleOf:check.value,message:check.message}),status.dirty()):check.kind==="finite"?Number.isFinite(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.not_finite,message:check.message}),status.dirty()):util.assertNever(check);return{status:status.value,value:input2.data}}gte(value,message){return this.setLimit("min",value,!0,errorUtil.toString(message))}gt(value,message){return this.setLimit("min",value,!1,errorUtil.toString(message))}lte(value,message){return this.setLimit("max",value,!0,errorUtil.toString(message))}lt(value,message){return this.setLimit("max",value,!1,errorUtil.toString(message))}setLimit(kind,value,inclusive,message){return new _ZodNumber({...this._def,checks:[...this._def.checks,{kind,value,inclusive,message:errorUtil.toString(message)}]})}_addCheck(check){return new _ZodNumber({...this._def,checks:[...this._def.checks,check]})}int(message){return this._addCheck({kind:"int",message:errorUtil.toString(message)})}positive(message){return this._addCheck({kind:"min",value:0,inclusive:!1,message:errorUtil.toString(message)})}negative(message){return this._addCheck({kind:"max",value:0,inclusive:!1,message:errorUtil.toString(message)})}nonpositive(message){return this._addCheck({kind:"max",value:0,inclusive:!0,message:errorUtil.toString(message)})}nonnegative(message){return this._addCheck({kind:"min",value:0,inclusive:!0,message:errorUtil.toString(message)})}multipleOf(value,message){return this._addCheck({kind:"multipleOf",value,message:errorUtil.toString(message)})}finite(message){return this._addCheck({kind:"finite",message:errorUtil.toString(message)})}safe(message){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:errorUtil.toString(message)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:errorUtil.toString(message)})}get minValue(){let min=null;for(let ch2 of this._def.checks)ch2.kind==="min"&&(min===null||ch2.value>min)&&(min=ch2.value);return min}get maxValue(){let max=null;for(let ch2 of this._def.checks)ch2.kind==="max"&&(max===null||ch2.value<max)&&(max=ch2.value);return max}get isInt(){return!!this._def.checks.find(ch2=>ch2.kind==="int"||ch2.kind==="multipleOf"&&util.isInteger(ch2.value))}get isFinite(){let max=null,min=null;for(let ch2 of this._def.checks){if(ch2.kind==="finite"||ch2.kind==="int"||ch2.kind==="multipleOf")return!0;ch2.kind==="min"?(min===null||ch2.value>min)&&(min=ch2.value):ch2.kind==="max"&&(max===null||ch2.value<max)&&(max=ch2.value)}return Number.isFinite(min)&&Number.isFinite(max)}};ZodNumber.create=params=>new ZodNumber({checks:[],typeName:ZodFirstPartyTypeKind.ZodNumber,coerce:params?.coerce||!1,...processCreateParams(params)});ZodBigInt=class _ZodBigInt extends ZodType{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(input2){if(this._def.coerce)try{input2.data=BigInt(input2.data)}catch{return this._getInvalidInput(input2)}if(this._getType(input2)!==ZodParsedType.bigint)return this._getInvalidInput(input2);let ctx,status=new ParseStatus;for(let check of this._def.checks)check.kind==="min"?(check.inclusive?input2.data<check.value:input2.data<=check.value)&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_small,type:"bigint",minimum:check.value,inclusive:check.inclusive,message:check.message}),status.dirty()):check.kind==="max"?(check.inclusive?input2.data>check.value:input2.data>=check.value)&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_big,type:"bigint",maximum:check.value,inclusive:check.inclusive,message:check.message}),status.dirty()):check.kind==="multipleOf"?input2.data%check.value!==BigInt(0)&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.not_multiple_of,multipleOf:check.value,message:check.message}),status.dirty()):util.assertNever(check);return{status:status.value,value:input2.data}}_getInvalidInput(input2){let ctx=this._getOrReturnCtx(input2);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.bigint,received:ctx.parsedType}),INVALID}gte(value,message){return this.setLimit("min",value,!0,errorUtil.toString(message))}gt(value,message){return this.setLimit("min",value,!1,errorUtil.toString(message))}lte(value,message){return this.setLimit("max",value,!0,errorUtil.toString(message))}lt(value,message){return this.setLimit("max",value,!1,errorUtil.toString(message))}setLimit(kind,value,inclusive,message){return new _ZodBigInt({...this._def,checks:[...this._def.checks,{kind,value,inclusive,message:errorUtil.toString(message)}]})}_addCheck(check){return new _ZodBigInt({...this._def,checks:[...this._def.checks,check]})}positive(message){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:errorUtil.toString(message)})}negative(message){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:errorUtil.toString(message)})}nonpositive(message){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:errorUtil.toString(message)})}nonnegative(message){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:errorUtil.toString(message)})}multipleOf(value,message){return this._addCheck({kind:"multipleOf",value,message:errorUtil.toString(message)})}get minValue(){let min=null;for(let ch2 of this._def.checks)ch2.kind==="min"&&(min===null||ch2.value>min)&&(min=ch2.value);return min}get maxValue(){let max=null;for(let ch2 of this._def.checks)ch2.kind==="max"&&(max===null||ch2.value<max)&&(max=ch2.value);return max}};ZodBigInt.create=params=>new ZodBigInt({checks:[],typeName:ZodFirstPartyTypeKind.ZodBigInt,coerce:params?.coerce??!1,...processCreateParams(params)});ZodBoolean=class extends ZodType{_parse(input2){if(this._def.coerce&&(input2.data=!!input2.data),this._getType(input2)!==ZodParsedType.boolean){let ctx=this._getOrReturnCtx(input2);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.boolean,received:ctx.parsedType}),INVALID}return OK(input2.data)}};ZodBoolean.create=params=>new ZodBoolean({typeName:ZodFirstPartyTypeKind.ZodBoolean,coerce:params?.coerce||!1,...processCreateParams(params)});ZodDate=class _ZodDate extends ZodType{_parse(input2){if(this._def.coerce&&(input2.data=new Date(input2.data)),this._getType(input2)!==ZodParsedType.date){let ctx2=this._getOrReturnCtx(input2);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.date,received:ctx2.parsedType}),INVALID}if(Number.isNaN(input2.data.getTime())){let ctx2=this._getOrReturnCtx(input2);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_date}),INVALID}let status=new ParseStatus,ctx;for(let check of this._def.checks)check.kind==="min"?input2.data.getTime()<check.value&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_small,message:check.message,inclusive:!0,exact:!1,minimum:check.value,type:"date"}),status.dirty()):check.kind==="max"?input2.data.getTime()>check.value&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_big,message:check.message,inclusive:!0,exact:!1,maximum:check.value,type:"date"}),status.dirty()):util.assertNever(check);return{status:status.value,value:new Date(input2.data.getTime())}}_addCheck(check){return new _ZodDate({...this._def,checks:[...this._def.checks,check]})}min(minDate,message){return this._addCheck({kind:"min",value:minDate.getTime(),message:errorUtil.toString(message)})}max(maxDate,message){return this._addCheck({kind:"max",value:maxDate.getTime(),message:errorUtil.toString(message)})}get minDate(){let min=null;for(let ch2 of this._def.checks)ch2.kind==="min"&&(min===null||ch2.value>min)&&(min=ch2.value);return min!=null?new Date(min):null}get maxDate(){let max=null;for(let ch2 of this._def.checks)ch2.kind==="max"&&(max===null||ch2.value<max)&&(max=ch2.value);return max!=null?new Date(max):null}};ZodDate.create=params=>new ZodDate({checks:[],coerce:params?.coerce||!1,typeName:ZodFirstPartyTypeKind.ZodDate,...processCreateParams(params)});ZodSymbol=class extends ZodType{_parse(input2){if(this._getType(input2)!==ZodParsedType.symbol){let ctx=this._getOrReturnCtx(input2);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.symbol,received:ctx.parsedType}),INVALID}return OK(input2.data)}};ZodSymbol.create=params=>new ZodSymbol({typeName:ZodFirstPartyTypeKind.ZodSymbol,...processCreateParams(params)});ZodUndefined=class extends ZodType{_parse(input2){if(this._getType(input2)!==ZodParsedType.undefined){let ctx=this._getOrReturnCtx(input2);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.undefined,received:ctx.parsedType}),INVALID}return OK(input2.data)}};ZodUndefined.create=params=>new ZodUndefined({typeName:ZodFirstPartyTypeKind.ZodUndefined,...processCreateParams(params)});ZodNull=class extends ZodType{_parse(input2){if(this._getType(input2)!==ZodParsedType.null){let ctx=this._getOrReturnCtx(input2);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.null,received:ctx.parsedType}),INVALID}return OK(input2.data)}};ZodNull.create=params=>new ZodNull({typeName:ZodFirstPartyTypeKind.ZodNull,...processCreateParams(params)});ZodAny=class extends ZodType{constructor(){super(...arguments),this._any=!0}_parse(input2){return OK(input2.data)}};ZodAny.create=params=>new ZodAny({typeName:ZodFirstPartyTypeKind.ZodAny,...processCreateParams(params)});ZodUnknown=class extends ZodType{constructor(){super(...arguments),this._unknown=!0}_parse(input2){return OK(input2.data)}};ZodUnknown.create=params=>new ZodUnknown({typeName:ZodFirstPartyTypeKind.ZodUnknown,...processCreateParams(params)});ZodNever=class extends ZodType{_parse(input2){let ctx=this._getOrReturnCtx(input2);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.never,received:ctx.parsedType}),INVALID}};ZodNever.create=params=>new ZodNever({typeName:ZodFirstPartyTypeKind.ZodNever,...processCreateParams(params)});ZodVoid=class extends ZodType{_parse(input2){if(this._getType(input2)!==ZodParsedType.undefined){let ctx=this._getOrReturnCtx(input2);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.void,received:ctx.parsedType}),INVALID}return OK(input2.data)}};ZodVoid.create=params=>new ZodVoid({typeName:ZodFirstPartyTypeKind.ZodVoid,...processCreateParams(params)});ZodArray=class _ZodArray extends ZodType{_parse(input2){let{ctx,status}=this._processInputParams(input2),def=this._def;if(ctx.parsedType!==ZodParsedType.array)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:ctx.parsedType}),INVALID;if(def.exactLength!==null){let tooBig=ctx.data.length>def.exactLength.value,tooSmall=ctx.data.length<def.exactLength.value;(tooBig||tooSmall)&&(addIssueToContext(ctx,{code:tooBig?ZodIssueCode.too_big:ZodIssueCode.too_small,minimum:tooSmall?def.exactLength.value:void 0,maximum:tooBig?def.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:def.exactLength.message}),status.dirty())}if(def.minLength!==null&&ctx.data.length<def.minLength.value&&(addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:def.minLength.value,type:"array",inclusive:!0,exact:!1,message:def.minLength.message}),status.dirty()),def.maxLength!==null&&ctx.data.length>def.maxLength.value&&(addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:def.maxLength.value,type:"array",inclusive:!0,exact:!1,message:def.maxLength.message}),status.dirty()),ctx.common.async)return Promise.all([...ctx.data].map((item,i3)=>def.type._parseAsync(new ParseInputLazyPath(ctx,item,ctx.path,i3)))).then(result2=>ParseStatus.mergeArray(status,result2));let result=[...ctx.data].map((item,i3)=>def.type._parseSync(new ParseInputLazyPath(ctx,item,ctx.path,i3)));return ParseStatus.mergeArray(status,result)}get element(){return this._def.type}min(minLength,message){return new _ZodArray({...this._def,minLength:{value:minLength,message:errorUtil.toString(message)}})}max(maxLength,message){return new _ZodArray({...this._def,maxLength:{value:maxLength,message:errorUtil.toString(message)}})}length(len,message){return new _ZodArray({...this._def,exactLength:{value:len,message:errorUtil.toString(message)}})}nonempty(message){return this.min(1,message)}};ZodArray.create=(schema,params)=>new ZodArray({type:schema,minLength:null,maxLength:null,exactLength:null,typeName:ZodFirstPartyTypeKind.ZodArray,...processCreateParams(params)});ZodObject=class _ZodObject extends ZodType{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let shape=this._def.shape(),keys=util.objectKeys(shape);return this._cached={shape,keys},this._cached}_parse(input2){if(this._getType(input2)!==ZodParsedType.object){let ctx2=this._getOrReturnCtx(input2);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx2.parsedType}),INVALID}let{status,ctx}=this._processInputParams(input2),{shape,keys:shapeKeys}=this._getCached(),extraKeys=[];if(!(this._def.catchall instanceof ZodNever&&this._def.unknownKeys==="strip"))for(let key in ctx.data)shapeKeys.includes(key)||extraKeys.push(key);let pairs3=[];for(let key of shapeKeys){let keyValidator=shape[key],value=ctx.data[key];pairs3.push({key:{status:"valid",value:key},value:keyValidator._parse(new ParseInputLazyPath(ctx,value,ctx.path,key)),alwaysSet:key in ctx.data})}if(this._def.catchall instanceof ZodNever){let unknownKeys=this._def.unknownKeys;if(unknownKeys==="passthrough")for(let key of extraKeys)pairs3.push({key:{status:"valid",value:key},value:{status:"valid",value:ctx.data[key]}});else if(unknownKeys==="strict")extraKeys.length>0&&(addIssueToContext(ctx,{code:ZodIssueCode.unrecognized_keys,keys:extraKeys}),status.dirty());else if(unknownKeys!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let catchall=this._def.catchall;for(let key of extraKeys){let value=ctx.data[key];pairs3.push({key:{status:"valid",value:key},value:catchall._parse(new ParseInputLazyPath(ctx,value,ctx.path,key)),alwaysSet:key in ctx.data})}}return ctx.common.async?Promise.resolve().then(async()=>{let syncPairs=[];for(let pair of pairs3){let key=await pair.key,value=await pair.value;syncPairs.push({key,value,alwaysSet:pair.alwaysSet})}return syncPairs}).then(syncPairs=>ParseStatus.mergeObjectSync(status,syncPairs)):ParseStatus.mergeObjectSync(status,pairs3)}get shape(){return this._def.shape()}strict(message){return errorUtil.errToObj,new _ZodObject({...this._def,unknownKeys:"strict",...message!==void 0?{errorMap:(issue,ctx)=>{let defaultError=this._def.errorMap?.(issue,ctx).message??ctx.defaultError;return issue.code==="unrecognized_keys"?{message:errorUtil.errToObj(message).message??defaultError}:{message:defaultError}}}:{}})}strip(){return new _ZodObject({...this._def,unknownKeys:"strip"})}passthrough(){return new _ZodObject({...this._def,unknownKeys:"passthrough"})}extend(augmentation){return new _ZodObject({...this._def,shape:()=>({...this._def.shape(),...augmentation})})}merge(merging){return new _ZodObject({unknownKeys:merging._def.unknownKeys,catchall:merging._def.catchall,shape:()=>({...this._def.shape(),...merging._def.shape()}),typeName:ZodFirstPartyTypeKind.ZodObject})}setKey(key,schema){return this.augment({[key]:schema})}catchall(index){return new _ZodObject({...this._def,catchall:index})}pick(mask){let shape={};for(let key of util.objectKeys(mask))mask[key]&&this.shape[key]&&(shape[key]=this.shape[key]);return new _ZodObject({...this._def,shape:()=>shape})}omit(mask){let shape={};for(let key of util.objectKeys(this.shape))mask[key]||(shape[key]=this.shape[key]);return new _ZodObject({...this._def,shape:()=>shape})}deepPartial(){return deepPartialify(this)}partial(mask){let newShape={};for(let key of util.objectKeys(this.shape)){let fieldSchema=this.shape[key];mask&&!mask[key]?newShape[key]=fieldSchema:newShape[key]=fieldSchema.optional()}return new _ZodObject({...this._def,shape:()=>newShape})}required(mask){let newShape={};for(let key of util.objectKeys(this.shape))if(mask&&!mask[key])newShape[key]=this.shape[key];else{let newField=this.shape[key];for(;newField instanceof ZodOptional;)newField=newField._def.innerType;newShape[key]=newField}return new _ZodObject({...this._def,shape:()=>newShape})}keyof(){return createZodEnum(util.objectKeys(this.shape))}};ZodObject.create=(shape,params)=>new ZodObject({shape:()=>shape,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)});ZodObject.strictCreate=(shape,params)=>new ZodObject({shape:()=>shape,unknownKeys:"strict",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)});ZodObject.lazycreate=(shape,params)=>new ZodObject({shape,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)});ZodUnion=class extends ZodType{_parse(input2){let{ctx}=this._processInputParams(input2),options=this._def.options;function handleResults(results){for(let result of results)if(result.result.status==="valid")return result.result;for(let result of results)if(result.result.status==="dirty")return ctx.common.issues.push(...result.ctx.common.issues),result.result;let unionErrors=results.map(result=>new ZodError(result.ctx.common.issues));return addIssueToContext(ctx,{code:ZodIssueCode.invalid_union,unionErrors}),INVALID}if(ctx.common.async)return Promise.all(options.map(async option=>{let childCtx={...ctx,common:{...ctx.common,issues:[]},parent:null};return{result:await option._parseAsync({data:ctx.data,path:ctx.path,parent:childCtx}),ctx:childCtx}})).then(handleResults);{let dirty,issues=[];for(let option of options){let childCtx={...ctx,common:{...ctx.common,issues:[]},parent:null},result=option._parseSync({data:ctx.data,path:ctx.path,parent:childCtx});if(result.status==="valid")return result;result.status==="dirty"&&!dirty&&(dirty={result,ctx:childCtx}),childCtx.common.issues.length&&issues.push(childCtx.common.issues)}if(dirty)return ctx.common.issues.push(...dirty.ctx.common.issues),dirty.result;let unionErrors=issues.map(issues2=>new ZodError(issues2));return addIssueToContext(ctx,{code:ZodIssueCode.invalid_union,unionErrors}),INVALID}}get options(){return this._def.options}};ZodUnion.create=(types,params)=>new ZodUnion({options:types,typeName:ZodFirstPartyTypeKind.ZodUnion,...processCreateParams(params)});getDiscriminator=type=>type instanceof ZodLazy?getDiscriminator(type.schema):type instanceof ZodEffects?getDiscriminator(type.innerType()):type instanceof ZodLiteral?[type.value]:type instanceof ZodEnum?type.options:type instanceof ZodNativeEnum?util.objectValues(type.enum):type instanceof ZodDefault?getDiscriminator(type._def.innerType):type instanceof ZodUndefined?[void 0]:type instanceof ZodNull?[null]:type instanceof ZodOptional?[void 0,...getDiscriminator(type.unwrap())]:type instanceof ZodNullable?[null,...getDiscriminator(type.unwrap())]:type instanceof ZodBranded||type instanceof ZodReadonly?getDiscriminator(type.unwrap()):type instanceof ZodCatch?getDiscriminator(type._def.innerType):[],ZodDiscriminatedUnion=class _ZodDiscriminatedUnion extends ZodType{_parse(input2){let{ctx}=this._processInputParams(input2);if(ctx.parsedType!==ZodParsedType.object)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType}),INVALID;let discriminator=this.discriminator,discriminatorValue=ctx.data[discriminator],option=this.optionsMap.get(discriminatorValue);return option?ctx.common.async?option._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}):option._parseSync({data:ctx.data,path:ctx.path,parent:ctx}):(addIssueToContext(ctx,{code:ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[discriminator]}),INVALID)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(discriminator,options,params){let optionsMap=new Map;for(let type of options){let discriminatorValues=getDiscriminator(type.shape[discriminator]);if(!discriminatorValues.length)throw new Error(`A discriminator value for key \`${discriminator}\` could not be extracted from all schema options`);for(let value of discriminatorValues){if(optionsMap.has(value))throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);optionsMap.set(value,type)}}return new _ZodDiscriminatedUnion({typeName:ZodFirstPartyTypeKind.ZodDiscriminatedUnion,discriminator,options,optionsMap,...processCreateParams(params)})}};ZodIntersection=class extends ZodType{_parse(input2){let{status,ctx}=this._processInputParams(input2),handleParsed=(parsedLeft,parsedRight)=>{if(isAborted(parsedLeft)||isAborted(parsedRight))return INVALID;let merged=mergeValues(parsedLeft.value,parsedRight.value);return merged.valid?((isDirty(parsedLeft)||isDirty(parsedRight))&&status.dirty(),{status:status.value,value:merged.data}):(addIssueToContext(ctx,{code:ZodIssueCode.invalid_intersection_types}),INVALID)};return ctx.common.async?Promise.all([this._def.left._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}),this._def.right._parseAsync({data:ctx.data,path:ctx.path,parent:ctx})]).then(([left,right])=>handleParsed(left,right)):handleParsed(this._def.left._parseSync({data:ctx.data,path:ctx.path,parent:ctx}),this._def.right._parseSync({data:ctx.data,path:ctx.path,parent:ctx}))}};ZodIntersection.create=(left,right,params)=>new ZodIntersection({left,right,typeName:ZodFirstPartyTypeKind.ZodIntersection,...processCreateParams(params)});ZodTuple=class _ZodTuple extends ZodType{_parse(input2){let{status,ctx}=this._processInputParams(input2);if(ctx.parsedType!==ZodParsedType.array)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:ctx.parsedType}),INVALID;if(ctx.data.length<this._def.items.length)return addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),INVALID;!this._def.rest&&ctx.data.length>this._def.items.length&&(addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),status.dirty());let items=[...ctx.data].map((item,itemIndex)=>{let schema=this._def.items[itemIndex]||this._def.rest;return schema?schema._parse(new ParseInputLazyPath(ctx,item,ctx.path,itemIndex)):null}).filter(x3=>!!x3);return ctx.common.async?Promise.all(items).then(results=>ParseStatus.mergeArray(status,results)):ParseStatus.mergeArray(status,items)}get items(){return this._def.items}rest(rest){return new _ZodTuple({...this._def,rest})}};ZodTuple.create=(schemas,params)=>{if(!Array.isArray(schemas))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new ZodTuple({items:schemas,typeName:ZodFirstPartyTypeKind.ZodTuple,rest:null,...processCreateParams(params)})};ZodRecord=class _ZodRecord extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(input2){let{status,ctx}=this._processInputParams(input2);if(ctx.parsedType!==ZodParsedType.object)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType}),INVALID;let pairs3=[],keyType=this._def.keyType,valueType=this._def.valueType;for(let key in ctx.data)pairs3.push({key:keyType._parse(new ParseInputLazyPath(ctx,key,ctx.path,key)),value:valueType._parse(new ParseInputLazyPath(ctx,ctx.data[key],ctx.path,key)),alwaysSet:key in ctx.data});return ctx.common.async?ParseStatus.mergeObjectAsync(status,pairs3):ParseStatus.mergeObjectSync(status,pairs3)}get element(){return this._def.valueType}static create(first,second,third){return second instanceof ZodType?new _ZodRecord({keyType:first,valueType:second,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(third)}):new _ZodRecord({keyType:ZodString.create(),valueType:first,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(second)})}},ZodMap=class extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(input2){let{status,ctx}=this._processInputParams(input2);if(ctx.parsedType!==ZodParsedType.map)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.map,received:ctx.parsedType}),INVALID;let keyType=this._def.keyType,valueType=this._def.valueType,pairs3=[...ctx.data.entries()].map(([key,value],index)=>({key:keyType._parse(new ParseInputLazyPath(ctx,key,ctx.path,[index,"key"])),value:valueType._parse(new ParseInputLazyPath(ctx,value,ctx.path,[index,"value"]))}));if(ctx.common.async){let finalMap=new Map;return Promise.resolve().then(async()=>{for(let pair of pairs3){let key=await pair.key,value=await pair.value;if(key.status==="aborted"||value.status==="aborted")return INVALID;(key.status==="dirty"||value.status==="dirty")&&status.dirty(),finalMap.set(key.value,value.value)}return{status:status.value,value:finalMap}})}else{let finalMap=new Map;for(let pair of pairs3){let key=pair.key,value=pair.value;if(key.status==="aborted"||value.status==="aborted")return INVALID;(key.status==="dirty"||value.status==="dirty")&&status.dirty(),finalMap.set(key.value,value.value)}return{status:status.value,value:finalMap}}}};ZodMap.create=(keyType,valueType,params)=>new ZodMap({valueType,keyType,typeName:ZodFirstPartyTypeKind.ZodMap,...processCreateParams(params)});ZodSet=class _ZodSet extends ZodType{_parse(input2){let{status,ctx}=this._processInputParams(input2);if(ctx.parsedType!==ZodParsedType.set)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.set,received:ctx.parsedType}),INVALID;let def=this._def;def.minSize!==null&&ctx.data.size<def.minSize.value&&(addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:def.minSize.value,type:"set",inclusive:!0,exact:!1,message:def.minSize.message}),status.dirty()),def.maxSize!==null&&ctx.data.size>def.maxSize.value&&(addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:def.maxSize.value,type:"set",inclusive:!0,exact:!1,message:def.maxSize.message}),status.dirty());let valueType=this._def.valueType;function finalizeSet(elements2){let parsedSet=new Set;for(let element of elements2){if(element.status==="aborted")return INVALID;element.status==="dirty"&&status.dirty(),parsedSet.add(element.value)}return{status:status.value,value:parsedSet}}let elements=[...ctx.data.values()].map((item,i3)=>valueType._parse(new ParseInputLazyPath(ctx,item,ctx.path,i3)));return ctx.common.async?Promise.all(elements).then(elements2=>finalizeSet(elements2)):finalizeSet(elements)}min(minSize,message){return new _ZodSet({...this._def,minSize:{value:minSize,message:errorUtil.toString(message)}})}max(maxSize,message){return new _ZodSet({...this._def,maxSize:{value:maxSize,message:errorUtil.toString(message)}})}size(size2,message){return this.min(size2,message).max(size2,message)}nonempty(message){return this.min(1,message)}};ZodSet.create=(valueType,params)=>new ZodSet({valueType,minSize:null,maxSize:null,typeName:ZodFirstPartyTypeKind.ZodSet,...processCreateParams(params)});ZodFunction=class _ZodFunction extends ZodType{constructor(){super(...arguments),this.validate=this.implement}_parse(input2){let{ctx}=this._processInputParams(input2);if(ctx.parsedType!==ZodParsedType.function)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.function,received:ctx.parsedType}),INVALID;function makeArgsIssue(args,error){return makeIssue({data:args,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,getErrorMap(),en_default].filter(x3=>!!x3),issueData:{code:ZodIssueCode.invalid_arguments,argumentsError:error}})}function makeReturnsIssue(returns,error){return makeIssue({data:returns,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,getErrorMap(),en_default].filter(x3=>!!x3),issueData:{code:ZodIssueCode.invalid_return_type,returnTypeError:error}})}let params={errorMap:ctx.common.contextualErrorMap},fn3=ctx.data;if(this._def.returns instanceof ZodPromise){let me3=this;return OK(async function(...args){let error=new ZodError([]),parsedArgs=await me3._def.args.parseAsync(args,params).catch(e4=>{throw error.addIssue(makeArgsIssue(args,e4)),error}),result=await Reflect.apply(fn3,this,parsedArgs);return await me3._def.returns._def.type.parseAsync(result,params).catch(e4=>{throw error.addIssue(makeReturnsIssue(result,e4)),error})})}else{let me3=this;return OK(function(...args){let parsedArgs=me3._def.args.safeParse(args,params);if(!parsedArgs.success)throw new ZodError([makeArgsIssue(args,parsedArgs.error)]);let result=Reflect.apply(fn3,this,parsedArgs.data),parsedReturns=me3._def.returns.safeParse(result,params);if(!parsedReturns.success)throw new ZodError([makeReturnsIssue(result,parsedReturns.error)]);return parsedReturns.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...items){return new _ZodFunction({...this._def,args:ZodTuple.create(items).rest(ZodUnknown.create())})}returns(returnType){return new _ZodFunction({...this._def,returns:returnType})}implement(func){return this.parse(func)}strictImplement(func){return this.parse(func)}static create(args,returns,params){return new _ZodFunction({args:args||ZodTuple.create([]).rest(ZodUnknown.create()),returns:returns||ZodUnknown.create(),typeName:ZodFirstPartyTypeKind.ZodFunction,...processCreateParams(params)})}},ZodLazy=class extends ZodType{get schema(){return this._def.getter()}_parse(input2){let{ctx}=this._processInputParams(input2);return this._def.getter()._parse({data:ctx.data,path:ctx.path,parent:ctx})}};ZodLazy.create=(getter,params)=>new ZodLazy({getter,typeName:ZodFirstPartyTypeKind.ZodLazy,...processCreateParams(params)});ZodLiteral=class extends ZodType{_parse(input2){if(input2.data!==this._def.value){let ctx=this._getOrReturnCtx(input2);return addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_literal,expected:this._def.value}),INVALID}return{status:"valid",value:input2.data}}get value(){return this._def.value}};ZodLiteral.create=(value,params)=>new ZodLiteral({value,typeName:ZodFirstPartyTypeKind.ZodLiteral,...processCreateParams(params)});ZodEnum=class _ZodEnum extends ZodType{_parse(input2){if(typeof input2.data!="string"){let ctx=this._getOrReturnCtx(input2),expectedValues=this._def.values;return addIssueToContext(ctx,{expected:util.joinValues(expectedValues),received:ctx.parsedType,code:ZodIssueCode.invalid_type}),INVALID}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(input2.data)){let ctx=this._getOrReturnCtx(input2),expectedValues=this._def.values;return addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_enum_value,options:expectedValues}),INVALID}return OK(input2.data)}get options(){return this._def.values}get enum(){let enumValues={};for(let val of this._def.values)enumValues[val]=val;return enumValues}get Values(){let enumValues={};for(let val of this._def.values)enumValues[val]=val;return enumValues}get Enum(){let enumValues={};for(let val of this._def.values)enumValues[val]=val;return enumValues}extract(values,newDef=this._def){return _ZodEnum.create(values,{...this._def,...newDef})}exclude(values,newDef=this._def){return _ZodEnum.create(this.options.filter(opt2=>!values.includes(opt2)),{...this._def,...newDef})}};ZodEnum.create=createZodEnum;ZodNativeEnum=class extends ZodType{_parse(input2){let nativeEnumValues=util.getValidEnumValues(this._def.values),ctx=this._getOrReturnCtx(input2);if(ctx.parsedType!==ZodParsedType.string&&ctx.parsedType!==ZodParsedType.number){let expectedValues=util.objectValues(nativeEnumValues);return addIssueToContext(ctx,{expected:util.joinValues(expectedValues),received:ctx.parsedType,code:ZodIssueCode.invalid_type}),INVALID}if(this._cache||(this._cache=new Set(util.getValidEnumValues(this._def.values))),!this._cache.has(input2.data)){let expectedValues=util.objectValues(nativeEnumValues);return addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_enum_value,options:expectedValues}),INVALID}return OK(input2.data)}get enum(){return this._def.values}};ZodNativeEnum.create=(values,params)=>new ZodNativeEnum({values,typeName:ZodFirstPartyTypeKind.ZodNativeEnum,...processCreateParams(params)});ZodPromise=class extends ZodType{unwrap(){return this._def.type}_parse(input2){let{ctx}=this._processInputParams(input2);if(ctx.parsedType!==ZodParsedType.promise&&ctx.common.async===!1)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.promise,received:ctx.parsedType}),INVALID;let promisified=ctx.parsedType===ZodParsedType.promise?ctx.data:Promise.resolve(ctx.data);return OK(promisified.then(data=>this._def.type.parseAsync(data,{path:ctx.path,errorMap:ctx.common.contextualErrorMap})))}};ZodPromise.create=(schema,params)=>new ZodPromise({type:schema,typeName:ZodFirstPartyTypeKind.ZodPromise,...processCreateParams(params)});ZodEffects=class extends ZodType{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===ZodFirstPartyTypeKind.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(input2){let{status,ctx}=this._processInputParams(input2),effect=this._def.effect||null,checkCtx={addIssue:arg=>{addIssueToContext(ctx,arg),arg.fatal?status.abort():status.dirty()},get path(){return ctx.path}};if(checkCtx.addIssue=checkCtx.addIssue.bind(checkCtx),effect.type==="preprocess"){let processed=effect.transform(ctx.data,checkCtx);if(ctx.common.async)return Promise.resolve(processed).then(async processed2=>{if(status.value==="aborted")return INVALID;let result=await this._def.schema._parseAsync({data:processed2,path:ctx.path,parent:ctx});return result.status==="aborted"?INVALID:result.status==="dirty"?DIRTY(result.value):status.value==="dirty"?DIRTY(result.value):result});{if(status.value==="aborted")return INVALID;let result=this._def.schema._parseSync({data:processed,path:ctx.path,parent:ctx});return result.status==="aborted"?INVALID:result.status==="dirty"?DIRTY(result.value):status.value==="dirty"?DIRTY(result.value):result}}if(effect.type==="refinement"){let executeRefinement=acc=>{let result=effect.refinement(acc,checkCtx);if(ctx.common.async)return Promise.resolve(result);if(result instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return acc};if(ctx.common.async===!1){let inner=this._def.schema._parseSync({data:ctx.data,path:ctx.path,parent:ctx});return inner.status==="aborted"?INVALID:(inner.status==="dirty"&&status.dirty(),executeRefinement(inner.value),{status:status.value,value:inner.value})}else return this._def.schema._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}).then(inner=>inner.status==="aborted"?INVALID:(inner.status==="dirty"&&status.dirty(),executeRefinement(inner.value).then(()=>({status:status.value,value:inner.value}))))}if(effect.type==="transform")if(ctx.common.async===!1){let base=this._def.schema._parseSync({data:ctx.data,path:ctx.path,parent:ctx});if(!isValid(base))return INVALID;let result=effect.transform(base.value,checkCtx);if(result instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:status.value,value:result}}else return this._def.schema._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}).then(base=>isValid(base)?Promise.resolve(effect.transform(base.value,checkCtx)).then(result=>({status:status.value,value:result})):INVALID);util.assertNever(effect)}};ZodEffects.create=(schema,effect,params)=>new ZodEffects({schema,typeName:ZodFirstPartyTypeKind.ZodEffects,effect,...processCreateParams(params)});ZodEffects.createWithPreprocess=(preprocess,schema,params)=>new ZodEffects({schema,effect:{type:"preprocess",transform:preprocess},typeName:ZodFirstPartyTypeKind.ZodEffects,...processCreateParams(params)});ZodOptional=class extends ZodType{_parse(input2){return this._getType(input2)===ZodParsedType.undefined?OK(void 0):this._def.innerType._parse(input2)}unwrap(){return this._def.innerType}};ZodOptional.create=(type,params)=>new ZodOptional({innerType:type,typeName:ZodFirstPartyTypeKind.ZodOptional,...processCreateParams(params)});ZodNullable=class extends ZodType{_parse(input2){return this._getType(input2)===ZodParsedType.null?OK(null):this._def.innerType._parse(input2)}unwrap(){return this._def.innerType}};ZodNullable.create=(type,params)=>new ZodNullable({innerType:type,typeName:ZodFirstPartyTypeKind.ZodNullable,...processCreateParams(params)});ZodDefault=class extends ZodType{_parse(input2){let{ctx}=this._processInputParams(input2),data=ctx.data;return ctx.parsedType===ZodParsedType.undefined&&(data=this._def.defaultValue()),this._def.innerType._parse({data,path:ctx.path,parent:ctx})}removeDefault(){return this._def.innerType}};ZodDefault.create=(type,params)=>new ZodDefault({innerType:type,typeName:ZodFirstPartyTypeKind.ZodDefault,defaultValue:typeof params.default=="function"?params.default:()=>params.default,...processCreateParams(params)});ZodCatch=class extends ZodType{_parse(input2){let{ctx}=this._processInputParams(input2),newCtx={...ctx,common:{...ctx.common,issues:[]}},result=this._def.innerType._parse({data:newCtx.data,path:newCtx.path,parent:{...newCtx}});return isAsync(result)?result.then(result2=>({status:"valid",value:result2.status==="valid"?result2.value:this._def.catchValue({get error(){return new ZodError(newCtx.common.issues)},input:newCtx.data})})):{status:"valid",value:result.status==="valid"?result.value:this._def.catchValue({get error(){return new ZodError(newCtx.common.issues)},input:newCtx.data})}}removeCatch(){return this._def.innerType}};ZodCatch.create=(type,params)=>new ZodCatch({innerType:type,typeName:ZodFirstPartyTypeKind.ZodCatch,catchValue:typeof params.catch=="function"?params.catch:()=>params.catch,...processCreateParams(params)});ZodNaN=class extends ZodType{_parse(input2){if(this._getType(input2)!==ZodParsedType.nan){let ctx=this._getOrReturnCtx(input2);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.nan,received:ctx.parsedType}),INVALID}return{status:"valid",value:input2.data}}};ZodNaN.create=params=>new ZodNaN({typeName:ZodFirstPartyTypeKind.ZodNaN,...processCreateParams(params)});BRAND=Symbol("zod_brand"),ZodBranded=class extends ZodType{_parse(input2){let{ctx}=this._processInputParams(input2),data=ctx.data;return this._def.type._parse({data,path:ctx.path,parent:ctx})}unwrap(){return this._def.type}},ZodPipeline=class _ZodPipeline extends ZodType{_parse(input2){let{status,ctx}=this._processInputParams(input2);if(ctx.common.async)return(async()=>{let inResult=await this._def.in._parseAsync({data:ctx.data,path:ctx.path,parent:ctx});return inResult.status==="aborted"?INVALID:inResult.status==="dirty"?(status.dirty(),DIRTY(inResult.value)):this._def.out._parseAsync({data:inResult.value,path:ctx.path,parent:ctx})})();{let inResult=this._def.in._parseSync({data:ctx.data,path:ctx.path,parent:ctx});return inResult.status==="aborted"?INVALID:inResult.status==="dirty"?(status.dirty(),{status:"dirty",value:inResult.value}):this._def.out._parseSync({data:inResult.value,path:ctx.path,parent:ctx})}}static create(a2,b3){return new _ZodPipeline({in:a2,out:b3,typeName:ZodFirstPartyTypeKind.ZodPipeline})}},ZodReadonly=class extends ZodType{_parse(input2){let result=this._def.innerType._parse(input2),freeze=data=>(isValid(data)&&(data.value=Object.freeze(data.value)),data);return isAsync(result)?result.then(data=>freeze(data)):freeze(result)}unwrap(){return this._def.innerType}};ZodReadonly.create=(type,params)=>new ZodReadonly({innerType:type,typeName:ZodFirstPartyTypeKind.ZodReadonly,...processCreateParams(params)});late={object:ZodObject.lazycreate};(function(ZodFirstPartyTypeKind2){ZodFirstPartyTypeKind2.ZodString="ZodString",ZodFirstPartyTypeKind2.ZodNumber="ZodNumber",ZodFirstPartyTypeKind2.ZodNaN="ZodNaN",ZodFirstPartyTypeKind2.ZodBigInt="ZodBigInt",ZodFirstPartyTypeKind2.ZodBoolean="ZodBoolean",ZodFirstPartyTypeKind2.ZodDate="ZodDate",ZodFirstPartyTypeKind2.ZodSymbol="ZodSymbol",ZodFirstPartyTypeKind2.ZodUndefined="ZodUndefined",ZodFirstPartyTypeKind2.ZodNull="ZodNull",ZodFirstPartyTypeKind2.ZodAny="ZodAny",ZodFirstPartyTypeKind2.ZodUnknown="ZodUnknown",ZodFirstPartyTypeKind2.ZodNever="ZodNever",ZodFirstPartyTypeKind2.ZodVoid="ZodVoid",ZodFirstPartyTypeKind2.ZodArray="ZodArray",ZodFirstPartyTypeKind2.ZodObject="ZodObject",ZodFirstPartyTypeKind2.ZodUnion="ZodUnion",ZodFirstPartyTypeKind2.ZodDiscriminatedUnion="ZodDiscriminatedUnion",ZodFirstPartyTypeKind2.ZodIntersection="ZodIntersection",ZodFirstPartyTypeKind2.ZodTuple="ZodTuple",ZodFirstPartyTypeKind2.ZodRecord="ZodRecord",ZodFirstPartyTypeKind2.ZodMap="ZodMap",ZodFirstPartyTypeKind2.ZodSet="ZodSet",ZodFirstPartyTypeKind2.ZodFunction="ZodFunction",ZodFirstPartyTypeKind2.ZodLazy="ZodLazy",ZodFirstPartyTypeKind2.ZodLiteral="ZodLiteral",ZodFirstPartyTypeKind2.ZodEnum="ZodEnum",ZodFirstPartyTypeKind2.ZodEffects="ZodEffects",ZodFirstPartyTypeKind2.ZodNativeEnum="ZodNativeEnum",ZodFirstPartyTypeKind2.ZodOptional="ZodOptional",ZodFirstPartyTypeKind2.ZodNullable="ZodNullable",ZodFirstPartyTypeKind2.ZodDefault="ZodDefault",ZodFirstPartyTypeKind2.ZodCatch="ZodCatch",ZodFirstPartyTypeKind2.ZodPromise="ZodPromise",ZodFirstPartyTypeKind2.ZodBranded="ZodBranded",ZodFirstPartyTypeKind2.ZodPipeline="ZodPipeline",ZodFirstPartyTypeKind2.ZodReadonly="ZodReadonly"})(ZodFirstPartyTypeKind||(ZodFirstPartyTypeKind={}));instanceOfType=(cls,params={message:`Input not instance of ${cls.name}`})=>custom(data=>data instanceof cls,params),stringType=ZodString.create,numberType=ZodNumber.create,nanType=ZodNaN.create,bigIntType=ZodBigInt.create,booleanType=ZodBoolean.create,dateType=ZodDate.create,symbolType=ZodSymbol.create,undefinedType=ZodUndefined.create,nullType=ZodNull.create,anyType=ZodAny.create,unknownType=ZodUnknown.create,neverType=ZodNever.create,voidType=ZodVoid.create,arrayType=ZodArray.create,objectType=ZodObject.create,strictObjectType=ZodObject.strictCreate,unionType=ZodUnion.create,discriminatedUnionType=ZodDiscriminatedUnion.create,intersectionType=ZodIntersection.create,tupleType=ZodTuple.create,recordType=ZodRecord.create,mapType=ZodMap.create,setType=ZodSet.create,functionType=ZodFunction.create,lazyType=ZodLazy.create,literalType=ZodLiteral.create,enumType=ZodEnum.create,nativeEnumType=ZodNativeEnum.create,promiseType=ZodPromise.create,effectsType=ZodEffects.create,optionalType=ZodOptional.create,nullableType=ZodNullable.create,preprocessType=ZodEffects.createWithPreprocess,pipelineType=ZodPipeline.create,ostring=()=>stringType().optional(),onumber=()=>numberType().optional(),oboolean=()=>booleanType().optional(),coerce={string:(arg=>ZodString.create({...arg,coerce:!0})),number:(arg=>ZodNumber.create({...arg,coerce:!0})),boolean:(arg=>ZodBoolean.create({...arg,coerce:!0})),bigint:(arg=>ZodBigInt.create({...arg,coerce:!0})),date:(arg=>ZodDate.create({...arg,coerce:!0}))},NEVER=INVALID}});var external_exports={};__export(external_exports,{BRAND:()=>BRAND,DIRTY:()=>DIRTY,EMPTY_PATH:()=>EMPTY_PATH,INVALID:()=>INVALID,NEVER:()=>NEVER,OK:()=>OK,ParseStatus:()=>ParseStatus,Schema:()=>ZodType,ZodAny:()=>ZodAny,ZodArray:()=>ZodArray,ZodBigInt:()=>ZodBigInt,ZodBoolean:()=>ZodBoolean,ZodBranded:()=>ZodBranded,ZodCatch:()=>ZodCatch,ZodDate:()=>ZodDate,ZodDefault:()=>ZodDefault,ZodDiscriminatedUnion:()=>ZodDiscriminatedUnion,ZodEffects:()=>ZodEffects,ZodEnum:()=>ZodEnum,ZodError:()=>ZodError,ZodFirstPartyTypeKind:()=>ZodFirstPartyTypeKind,ZodFunction:()=>ZodFunction,ZodIntersection:()=>ZodIntersection,ZodIssueCode:()=>ZodIssueCode,ZodLazy:()=>ZodLazy,ZodLiteral:()=>ZodLiteral,ZodMap:()=>ZodMap,ZodNaN:()=>ZodNaN,ZodNativeEnum:()=>ZodNativeEnum,ZodNever:()=>ZodNever,ZodNull:()=>ZodNull,ZodNullable:()=>ZodNullable,ZodNumber:()=>ZodNumber,ZodObject:()=>ZodObject,ZodOptional:()=>ZodOptional,ZodParsedType:()=>ZodParsedType,ZodPipeline:()=>ZodPipeline,ZodPromise:()=>ZodPromise,ZodReadonly:()=>ZodReadonly,ZodRecord:()=>ZodRecord,ZodSchema:()=>ZodType,ZodSet:()=>ZodSet,ZodString:()=>ZodString,ZodSymbol:()=>ZodSymbol,ZodTransformer:()=>ZodEffects,ZodTuple:()=>ZodTuple,ZodType:()=>ZodType,ZodUndefined:()=>ZodUndefined,ZodUnion:()=>ZodUnion,ZodUnknown:()=>ZodUnknown,ZodVoid:()=>ZodVoid,addIssueToContext:()=>addIssueToContext,any:()=>anyType,array:()=>arrayType,bigint:()=>bigIntType,boolean:()=>booleanType,coerce:()=>coerce,custom:()=>custom,date:()=>dateType,datetimeRegex:()=>datetimeRegex,defaultErrorMap:()=>en_default,discriminatedUnion:()=>discriminatedUnionType,effect:()=>effectsType,enum:()=>enumType,function:()=>functionType,getErrorMap:()=>getErrorMap,getParsedType:()=>getParsedType,instanceof:()=>instanceOfType,intersection:()=>intersectionType,isAborted:()=>isAborted,isAsync:()=>isAsync,isDirty:()=>isDirty,isValid:()=>isValid,late:()=>late,lazy:()=>lazyType,literal:()=>literalType,makeIssue:()=>makeIssue,map:()=>mapType,nan:()=>nanType,nativeEnum:()=>nativeEnumType,never:()=>neverType,null:()=>nullType,nullable:()=>nullableType,number:()=>numberType,object:()=>objectType,objectUtil:()=>objectUtil,oboolean:()=>oboolean,onumber:()=>onumber,optional:()=>optionalType,ostring:()=>ostring,pipeline:()=>pipelineType,preprocess:()=>preprocessType,promise:()=>promiseType,quotelessJson:()=>quotelessJson,record:()=>recordType,set:()=>setType,setErrorMap:()=>setErrorMap,strictObject:()=>strictObjectType,string:()=>stringType,symbol:()=>symbolType,transformer:()=>effectsType,tuple:()=>tupleType,undefined:()=>undefinedType,union:()=>unionType,unknown:()=>unknownType,util:()=>util,void:()=>voidType});var init_external=__esm({"node_modules/zod/v3/external.js"(){"use strict";init_errors();init_parseUtil();init_typeAliases();init_util();init_types();init_ZodError()}});var init_zod=__esm({"node_modules/zod/index.js"(){"use strict";init_external();init_external()}});var dist_exports={};__export(dist_exports,{all_layers:()=>all_layers,any_circuit_element:()=>any_circuit_element,any_soup_element:()=>any_soup_element,any_source_component:()=>any_source_component,battery_capacity:()=>battery_capacity,brep_shape:()=>brep_shape,cad_component:()=>cad_component,capacitance:()=>capacitance,circuit_json_footprint_load_error:()=>circuit_json_footprint_load_error,current:()=>current,distance:()=>distance,duration_ms:()=>duration_ms,experiment_type:()=>experiment_type,external_footprint_load_error:()=>external_footprint_load_error,frequency:()=>frequency,getZodPrefixedIdWithDefault:()=>getZodPrefixedIdWithDefault,inductance:()=>inductance,layer_ref:()=>layer_ref,layer_string:()=>layer_string,length:()=>length,ms:()=>ms,ninePointAnchor:()=>ninePointAnchor,pcbRenderLayer:()=>pcbRenderLayer,pcb_autorouting_error:()=>pcb_autorouting_error,pcb_board:()=>pcb_board,pcb_breakout_point:()=>pcb_breakout_point,pcb_component:()=>pcb_component,pcb_component_invalid_layer_error:()=>pcb_component_invalid_layer_error,pcb_component_outside_board_error:()=>pcb_component_outside_board_error,pcb_copper_pour:()=>pcb_copper_pour,pcb_copper_pour_brep:()=>pcb_copper_pour_brep,pcb_copper_pour_polygon:()=>pcb_copper_pour_polygon,pcb_copper_pour_rect:()=>pcb_copper_pour_rect,pcb_copper_text:()=>pcb_copper_text,pcb_courtyard_outline:()=>pcb_courtyard_outline,pcb_courtyard_polygon:()=>pcb_courtyard_polygon,pcb_courtyard_rect:()=>pcb_courtyard_rect,pcb_cutout:()=>pcb_cutout,pcb_cutout_circle:()=>pcb_cutout_circle,pcb_cutout_path:()=>pcb_cutout_path,pcb_cutout_polygon:()=>pcb_cutout_polygon,pcb_cutout_rect:()=>pcb_cutout_rect,pcb_fabrication_note_dimension:()=>pcb_fabrication_note_dimension,pcb_fabrication_note_path:()=>pcb_fabrication_note_path,pcb_fabrication_note_rect:()=>pcb_fabrication_note_rect,pcb_fabrication_note_text:()=>pcb_fabrication_note_text,pcb_footprint_overlap_error:()=>pcb_footprint_overlap_error,pcb_ground_plane:()=>pcb_ground_plane,pcb_ground_plane_region:()=>pcb_ground_plane_region,pcb_group:()=>pcb_group,pcb_hole:()=>pcb_hole,pcb_hole_circle_or_square_shape:()=>pcb_hole_circle_or_square_shape,pcb_hole_circle_shape:()=>pcb_hole_circle_shape,pcb_hole_oval_shape:()=>pcb_hole_oval_shape,pcb_hole_pill_shape:()=>pcb_hole_pill_shape,pcb_hole_rect_shape:()=>pcb_hole_rect_shape,pcb_hole_rotated_pill_shape:()=>pcb_hole_rotated_pill_shape,pcb_keepout:()=>pcb_keepout,pcb_manual_edit_conflict_warning:()=>pcb_manual_edit_conflict_warning,pcb_missing_footprint_error:()=>pcb_missing_footprint_error,pcb_net:()=>pcb_net,pcb_note_dimension:()=>pcb_note_dimension,pcb_note_line:()=>pcb_note_line,pcb_note_path:()=>pcb_note_path,pcb_note_rect:()=>pcb_note_rect,pcb_note_text:()=>pcb_note_text,pcb_panel:()=>pcb_panel,pcb_placement_error:()=>pcb_placement_error,pcb_plated_hole:()=>pcb_plated_hole,pcb_port:()=>pcb_port,pcb_port_not_connected_error:()=>pcb_port_not_connected_error,pcb_port_not_matched_error:()=>pcb_port_not_matched_error,pcb_route_hint:()=>pcb_route_hint,pcb_route_hints:()=>pcb_route_hints,pcb_silkscreen_circle:()=>pcb_silkscreen_circle,pcb_silkscreen_line:()=>pcb_silkscreen_line,pcb_silkscreen_oval:()=>pcb_silkscreen_oval,pcb_silkscreen_path:()=>pcb_silkscreen_path,pcb_silkscreen_pill:()=>pcb_silkscreen_pill,pcb_silkscreen_rect:()=>pcb_silkscreen_rect,pcb_silkscreen_text:()=>pcb_silkscreen_text,pcb_smtpad:()=>pcb_smtpad,pcb_smtpad_pill:()=>pcb_smtpad_pill,pcb_solder_paste:()=>pcb_solder_paste,pcb_text:()=>pcb_text,pcb_thermal_spoke:()=>pcb_thermal_spoke,pcb_trace:()=>pcb_trace,pcb_trace_error:()=>pcb_trace_error,pcb_trace_hint:()=>pcb_trace_hint,pcb_trace_missing_error:()=>pcb_trace_missing_error,pcb_trace_route_point:()=>pcb_trace_route_point,pcb_trace_route_point_via:()=>pcb_trace_route_point_via,pcb_trace_route_point_wire:()=>pcb_trace_route_point_wire,pcb_via:()=>pcb_via,pcb_via_clearance_error:()=>pcb_via_clearance_error,point:()=>point,point3:()=>point3,point_with_bulge:()=>point_with_bulge,port_arrangement:()=>port_arrangement,position:()=>position,position3:()=>position3,resistance:()=>resistance,ring:()=>ring,rotation:()=>rotation,route_hint_point:()=>route_hint_point,schematic_arc:()=>schematic_arc,schematic_box:()=>schematic_box,schematic_circle:()=>schematic_circle,schematic_component:()=>schematic_component,schematic_component_port_arrangement_by_sides:()=>schematic_component_port_arrangement_by_sides,schematic_component_port_arrangement_by_size:()=>schematic_component_port_arrangement_by_size,schematic_debug_line:()=>schematic_debug_line,schematic_debug_object:()=>schematic_debug_object,schematic_debug_object_base:()=>schematic_debug_object_base,schematic_debug_point:()=>schematic_debug_point,schematic_debug_rect:()=>schematic_debug_rect,schematic_error:()=>schematic_error,schematic_group:()=>schematic_group,schematic_layout_error:()=>schematic_layout_error,schematic_line:()=>schematic_line,schematic_manual_edit_conflict_warning:()=>schematic_manual_edit_conflict_warning,schematic_net_label:()=>schematic_net_label,schematic_path:()=>schematic_path,schematic_pin_styles:()=>schematic_pin_styles,schematic_port:()=>schematic_port,schematic_rect:()=>schematic_rect,schematic_sheet:()=>schematic_sheet,schematic_table:()=>schematic_table,schematic_table_cell:()=>schematic_table_cell,schematic_text:()=>schematic_text,schematic_trace:()=>schematic_trace,schematic_voltage_probe:()=>schematic_voltage_probe,simulation_ac_current_source:()=>simulation_ac_current_source,simulation_ac_voltage_source:()=>simulation_ac_voltage_source,simulation_current_source:()=>simulation_current_source,simulation_dc_current_source:()=>simulation_dc_current_source,simulation_dc_voltage_source:()=>simulation_dc_voltage_source,simulation_experiment:()=>simulation_experiment,simulation_op_amp:()=>simulation_op_amp,simulation_switch:()=>simulation_switch,simulation_transient_voltage_graph:()=>simulation_transient_voltage_graph,simulation_unknown_experiment_error:()=>simulation_unknown_experiment_error,simulation_voltage_probe:()=>simulation_voltage_probe,simulation_voltage_source:()=>simulation_voltage_source,size:()=>size,source_board:()=>source_board,source_component_base:()=>source_component_base,source_component_internal_connection:()=>source_component_internal_connection,source_failed_to_create_component_error:()=>source_failed_to_create_component_error,source_group:()=>source_group,source_interconnect:()=>source_interconnect,source_manually_placed_via:()=>source_manually_placed_via,source_missing_property_error:()=>source_missing_property_error,source_net:()=>source_net,source_pcb_ground_plane:()=>source_pcb_ground_plane,source_pin_missing_trace_warning:()=>source_pin_missing_trace_warning,source_pin_must_be_connected_error:()=>source_pin_must_be_connected_error,source_port:()=>source_port,source_project_metadata:()=>source_project_metadata,source_property_ignored_warning:()=>source_property_ignored_warning,source_simple_battery:()=>source_simple_battery,source_simple_capacitor:()=>source_simple_capacitor,source_simple_chip:()=>source_simple_chip,source_simple_crystal:()=>source_simple_crystal,source_simple_diode:()=>source_simple_diode,source_simple_fiducial:()=>source_simple_fiducial,source_simple_ground:()=>source_simple_ground,source_simple_inductor:()=>source_simple_inductor,source_simple_led:()=>source_simple_led,source_simple_mosfet:()=>source_simple_mosfet,source_simple_op_amp:()=>source_simple_op_amp,source_simple_pin_header:()=>source_simple_pin_header,source_simple_pinout:()=>source_simple_pinout,source_simple_potentiometer:()=>source_simple_potentiometer,source_simple_power_source:()=>source_simple_power_source,source_simple_push_button:()=>source_simple_push_button,source_simple_resistor:()=>source_simple_resistor,source_simple_resonator:()=>source_simple_resonator,source_simple_switch:()=>source_simple_switch,source_simple_test_point:()=>source_simple_test_point,source_simple_transistor:()=>source_simple_transistor,source_simple_voltage_probe:()=>source_simple_voltage_probe,source_trace:()=>source_trace,source_trace_not_connected_error:()=>source_trace_not_connected_error,supplier_name:()=>supplier_name,time:()=>time,timestamp:()=>timestamp,unknown_error_finding_part:()=>unknown_error_finding_part,visible_layer:()=>visible_layer,voltage:()=>voltage,wave_shape:()=>wave_shape});function getBaseTscircuitUnit(unit){for(let[baseUnit,info]of Object.entries(unitMappings))if(unit in info.variants)return{baseUnit:info.baseUnit,conversionFactor:info.variants[unit]};return{baseUnit:unit,conversionFactor:1}}function parseAndConvertSiUnit(v4){if(v4==null)return{parsedUnit:null,unitOfValue:null,value:null};if(typeof v4=="string"&&v4.match(/^-?[\d\.]+$/))return{value:Number.parseFloat(v4),parsedUnit:null,unitOfValue:null};if(typeof v4=="number")return{value:v4,parsedUnit:null,unitOfValue:null};if(typeof v4=="object"&&"x"in v4&&"y"in v4){let{parsedUnit,unitOfValue}=parseAndConvertSiUnit(v4.x),xResult=parseAndConvertSiUnit(v4.x),yResult=parseAndConvertSiUnit(v4.y);return xResult.value===null||yResult.value===null?{parsedUnit:null,unitOfValue:null,value:null}:{parsedUnit,unitOfValue,value:{x:xResult.value,y:yResult.value}}}let unit_reversed=v4.toString().split("").reverse().join("").match(/[^\d\s]+/)?.[0];if(!unit_reversed)throw new Error(`Could not determine unit: "${v4}"`);let unit=unit_reversed.split("").reverse().join(""),numberPart=v4.slice(0,-unit.length);if(unit in si_prefix_multiplier&&!unitMappingAndVariantSuffixes.has(unit)){let siMultiplier=si_prefix_multiplier[unit];return{parsedUnit:null,unitOfValue:null,value:Number.parseFloat(numberPart)*siMultiplier}}let{baseUnit,conversionFactor}=getBaseTscircuitUnit(unit);return{parsedUnit:unit,unitOfValue:baseUnit,value:conversionFactor*Number.parseFloat(numberPart)}}var unitMappings,unitMappingAndVariantSuffixes,si_prefix_multiplier,resistance,capacitance,inductance,voltage,length,frequency,distance,current,duration_ms,time,ms,timestamp,rotation,battery_capacity,expectTypesMatch,expectStringUnionsMatch,point,position,point3,position3,size,randomId,getZodPrefixedIdWithDefault,ninePointAnchor,pcbRenderLayer,supplier_name,source_component_base,source_simple_capacitor,source_simple_resistor,source_simple_diode,source_simple_fiducial,source_simple_led,source_simple_ground,source_simple_chip,source_simple_power_source,source_simple_fuse,source_simple_battery,source_simple_inductor,source_simple_push_button,source_simple_potentiometer,source_simple_crystal,source_simple_pin_header,source_simple_pinout,source_simple_resonator,source_simple_transistor,source_simple_test_point,source_simple_mosfet,source_simple_op_amp,source_simple_switch,source_project_metadata,source_missing_property_error,source_failed_to_create_component_error,source_trace_not_connected_error,source_property_ignored_warning,source_pin_missing_trace_warning,source_simple_voltage_probe,source_interconnect,any_source_component,source_port,source_component_internal_connection,source_trace,source_group,source_net,source_board,source_pcb_ground_plane,all_layers,layer_string,layer_ref,visible_layer,source_manually_placed_via,source_pin_must_be_connected_error,unknown_error_finding_part,schematic_box,schematic_path,schematic_pin_styles,schematic_component_port_arrangement_by_size,schematic_component_port_arrangement_by_sides,port_arrangement,schematic_component,schematic_line,schematic_rect,schematic_circle,schematic_arc,schematic_trace,fivePointAnchor,schematic_text,schematic_port,schematic_net_label,schematic_error,schematic_layout_error,schematic_debug_object_base,schematic_debug_rect,schematic_debug_line,schematic_debug_point,schematic_debug_object,schematic_voltage_probe,schematic_manual_edit_conflict_warning,schematic_group,schematic_table,schematic_table_cell,schematic_sheet,point_with_bulge,ring,brep_shape,pcb_route_hint,pcb_route_hints,route_hint_point,pcb_component,pcb_hole_circle,pcb_hole_circle_shape,pcb_hole_rect,pcb_hole_rect_shape,pcb_hole_circle_or_square,pcb_hole_circle_or_square_shape,pcb_hole_oval,pcb_hole_oval_shape,pcb_hole_pill,pcb_hole_pill_shape,pcb_hole_rotated_pill,pcb_hole_rotated_pill_shape,pcb_hole,pcb_plated_hole_circle,pcb_plated_hole_oval,pcb_circular_hole_with_rect_pad,pcb_pill_hole_with_rect_pad,pcb_rotated_pill_hole_with_rect_pad,pcb_hole_with_polygon_pad,pcb_plated_hole,pcb_port,pcb_smtpad_circle,pcb_smtpad_rect,pcb_smtpad_rotated_rect,pcb_smtpad_pill,pcb_smtpad_rotated_pill,pcb_smtpad_polygon,pcb_smtpad,pcb_solder_paste_circle,pcb_solder_paste_rect,pcb_solder_paste_pill,pcb_solder_paste_rotated_rect,pcb_solder_paste_oval,pcb_solder_paste,pcb_text,pcb_trace_route_point_wire,pcb_trace_route_point_via,pcb_trace_route_point,pcb_trace,pcb_trace_error,pcb_trace_missing_error,pcb_port_not_matched_error,pcb_port_not_connected_error,pcb_net,pcb_via,pcb_board,pcb_panel,pcb_placement_error,pcb_trace_hint,pcb_silkscreen_line,pcb_silkscreen_path,pcb_silkscreen_text,pcb_copper_text,pcb_silkscreen_rect,pcb_silkscreen_circle,pcb_silkscreen_oval,pcb_silkscreen_pill,pcb_fabrication_note_text,pcb_fabrication_note_path,pcb_fabrication_note_rect,pcb_fabrication_note_dimension,pcb_note_text,pcb_note_rect,pcb_note_path,pcb_note_line,pcb_note_dimension,pcb_footprint_overlap_error,pcb_keepout,pcb_cutout_base,pcb_cutout_rect,pcb_cutout_circle,pcb_cutout_polygon,pcb_cutout_path,pcb_cutout,pcb_missing_footprint_error,external_footprint_load_error,circuit_json_footprint_load_error,pcb_group,pcb_autorouting_error,pcb_manual_edit_conflict_warning,pcb_breakout_point,pcb_ground_plane,pcb_ground_plane_region,pcb_thermal_spoke,pcb_copper_pour_base,pcb_copper_pour_rect,pcb_copper_pour_brep,pcb_copper_pour_polygon,pcb_copper_pour,pcb_component_outside_board_error,pcb_component_invalid_layer_error,pcb_via_clearance_error,pcb_courtyard_rect,pcb_courtyard_outline,pcb_courtyard_polygon,cad_component,wave_shape,percentage,simulation_dc_voltage_source,simulation_ac_voltage_source,simulation_voltage_source,percentage2,simulation_dc_current_source,simulation_ac_current_source,simulation_current_source,experiment_type,simulation_experiment,simulation_transient_voltage_graph,simulation_switch,simulation_voltage_probe,simulation_unknown_experiment_error,simulation_op_amp,any_circuit_element,any_soup_element,init_dist=__esm({"node_modules/circuit-json/dist/index.mjs"(){"use strict";init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();unitMappings={Hz:{baseUnit:"Hz",variants:{MHz:1e6,kHz:1e3,Hz:1}},g:{baseUnit:"g",variants:{kg:1e3,g:1}},\u03A9:{baseUnit:"\u03A9",variants:{m\u03A9:.001,\u03A9:1,k\u03A9:1e3,K\u03A9:1e3,kohm:1e3,M\u03A9:1e6,G\u03A9:1e9,T\u03A9:1e12}},V:{baseUnit:"V",variants:{mV:.001,V:1,kV:1e3,KV:1e3,MV:1e6,GV:1e9,TV:1e12}},A:{baseUnit:"A",variants:{\u00B5A:1e-6,mA:.001,ma:.001,A:1,kA:1e3,MA:1e6}},F:{baseUnit:"F",variants:{pF:1e-12,nF:1e-9,\u00B5F: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:{fs:1e-12,ps:1e-9,ns:1e-6,us:.001,\u00B5s:.001,ms:1,s:1e3}},mm:{baseUnit:"mm",variants:{nm:1e-6,\u00B5m:.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}}},unitMappingAndVariantSuffixes=new Set;for(let[baseUnit,info]of Object.entries(unitMappings)){unitMappingAndVariantSuffixes.add(baseUnit);for(let variant of Object.keys(info.variants))unitMappingAndVariantSuffixes.add(variant)}si_prefix_multiplier={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,\u00B5:1e-6,nano:1e-9,n:1e-9,pico:1e-12,p:1e-12};resistance=external_exports.string().or(external_exports.number()).transform(v4=>parseAndConvertSiUnit(v4).value),capacitance=external_exports.string().or(external_exports.number()).transform(v4=>parseAndConvertSiUnit(v4).value).transform(value=>Number.parseFloat(value.toPrecision(12))),inductance=external_exports.string().or(external_exports.number()).transform(v4=>parseAndConvertSiUnit(v4).value),voltage=external_exports.string().or(external_exports.number()).transform(v4=>parseAndConvertSiUnit(v4).value),length=external_exports.string().or(external_exports.number()).transform(v4=>parseAndConvertSiUnit(v4).value),frequency=external_exports.string().or(external_exports.number()).transform(v4=>parseAndConvertSiUnit(v4).value),distance=length,current=external_exports.string().or(external_exports.number()).transform(v4=>parseAndConvertSiUnit(v4).value),duration_ms=external_exports.string().or(external_exports.number()).transform(v4=>parseAndConvertSiUnit(v4).value),time=duration_ms,ms=duration_ms,timestamp=external_exports.string().datetime(),rotation=external_exports.string().or(external_exports.number()).transform(arg=>typeof arg=="number"?arg:arg.endsWith("deg")?Number.parseFloat(arg.split("deg")[0]):arg.endsWith("rad")?Number.parseFloat(arg.split("rad")[0])*180/Math.PI:Number.parseFloat(arg)),battery_capacity=external_exports.number().or(external_exports.string().endsWith("mAh")).transform(v4=>{if(typeof v4=="string"){let valString=v4.replace("mAh",""),num=Number.parseFloat(valString);if(Number.isNaN(num))throw new Error("Invalid capacity");return num}return v4}).describe("Battery capacity in mAh"),expectTypesMatch=shouldBe=>{};expectTypesMatch("extra props b");expectTypesMatch("missing props b");expectTypesMatch(!0);expectTypesMatch("mismatched prop types: a");expectStringUnionsMatch=shouldBe=>{};expectStringUnionsMatch(!0);expectStringUnionsMatch('T1 has extra: "c", T2 has extra: "d"');expectStringUnionsMatch('T1 has extra: "c"');expectStringUnionsMatch('T2 has extra: "c"');expectStringUnionsMatch('T1 has extra: "d", T2 has extra: "c"');expectStringUnionsMatch(!0);point=external_exports.object({x:distance,y:distance}),position=point;expectTypesMatch(!0);expectTypesMatch(!0);point3=external_exports.object({x:distance,y:distance,z:distance}),position3=point3;expectTypesMatch(!0);size=external_exports.object({width:external_exports.number(),height:external_exports.number()});expectTypesMatch(!0);randomId=length3=>{let chars2="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";return Array.from({length:length3},()=>chars2[Math.floor(Math.random()*chars2.length)]).join("")},getZodPrefixedIdWithDefault=prefix=>external_exports.string().optional().default(()=>`${prefix}_${randomId(10)}`),ninePointAnchor=external_exports.enum(["top_left","top_center","top_right","center_left","center","center_right","bottom_left","bottom_center","bottom_right"]);expectTypesMatch(!0);pcbRenderLayer=external_exports.enum(["top_silkscreen","bottom_silkscreen","top_copper","bottom_copper","top_soldermask","bottom_soldermask","top_fabrication_note","bottom_fabrication_note","top_user_note","bottom_user_note","inner1_copper","inner2_copper","inner3_copper","inner4_copper","inner5_copper","inner6_copper","edge_cuts","drill"]);expectTypesMatch(!0);supplier_name=external_exports.enum(["jlcpcb","macrofab","pcbway","digikey","mouser","lcsc"]);expectTypesMatch(!0);source_component_base=external_exports.object({type:external_exports.literal("source_component"),ftype:external_exports.string().optional(),source_component_id:external_exports.string(),name:external_exports.string(),manufacturer_part_number:external_exports.string().optional(),supplier_part_numbers:external_exports.record(supplier_name,external_exports.array(external_exports.string())).optional(),display_value:external_exports.string().optional(),display_name:external_exports.string().optional(),are_pins_interchangeable:external_exports.boolean().optional(),internally_connected_source_port_ids:external_exports.array(external_exports.array(external_exports.string())).optional(),source_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional()});expectTypesMatch(!0);source_simple_capacitor=source_component_base.extend({ftype:external_exports.literal("simple_capacitor"),capacitance,max_voltage_rating:voltage.optional(),display_capacitance:external_exports.string().optional(),max_decoupling_trace_length:distance.optional()});expectTypesMatch(!0);source_simple_resistor=source_component_base.extend({ftype:external_exports.literal("simple_resistor"),resistance,display_resistance:external_exports.string().optional()});expectTypesMatch(!0);source_simple_diode=source_component_base.extend({ftype:external_exports.literal("simple_diode")});expectTypesMatch(!0);source_simple_fiducial=source_component_base.extend({ftype:external_exports.literal("simple_fiducial")});expectTypesMatch(!0);source_simple_led=source_simple_diode.extend({ftype:external_exports.literal("simple_led"),color:external_exports.string().optional(),wavelength:external_exports.string().optional()});expectTypesMatch(!0);source_simple_ground=source_component_base.extend({ftype:external_exports.literal("simple_ground")});expectTypesMatch(!0);source_simple_chip=source_component_base.extend({ftype:external_exports.literal("simple_chip")});expectTypesMatch(!0);source_simple_power_source=source_component_base.extend({ftype:external_exports.literal("simple_power_source"),voltage});expectTypesMatch(!0);source_simple_fuse=source_component_base.extend({ftype:external_exports.literal("simple_fuse"),current_rating_amps:external_exports.number().describe("Nominal current in amps the fuse is rated for"),voltage_rating_volts:external_exports.number().describe("Voltage rating in volts, e.g. \xB15V would be 5")});expectTypesMatch(!0);source_simple_battery=source_component_base.extend({ftype:external_exports.literal("simple_battery"),capacity:battery_capacity});expectTypesMatch(!0);source_simple_inductor=source_component_base.extend({ftype:external_exports.literal("simple_inductor"),inductance,max_current_rating:external_exports.number().optional()});expectTypesMatch(!0);source_simple_push_button=source_component_base.extend({ftype:external_exports.literal("simple_push_button")});expectTypesMatch(!0);source_simple_potentiometer=source_component_base.extend({ftype:external_exports.literal("simple_potentiometer"),max_resistance:resistance});expectTypesMatch(!0);source_simple_crystal=source_component_base.extend({ftype:external_exports.literal("simple_crystal"),frequency:external_exports.number().describe("Frequency in Hz"),load_capacitance:external_exports.number().optional().describe("Load capacitance in pF")});expectTypesMatch(!0);source_simple_pin_header=source_component_base.extend({ftype:external_exports.literal("simple_pin_header"),pin_count:external_exports.number(),gender:external_exports.enum(["male","female"]).optional().default("male")});expectTypesMatch(!0);source_simple_pinout=source_component_base.extend({ftype:external_exports.literal("simple_pinout")});expectTypesMatch(!0);source_simple_resonator=source_component_base.extend({ftype:external_exports.literal("simple_resonator"),load_capacitance:capacitance,equivalent_series_resistance:resistance.optional(),frequency});expectTypesMatch(!0);source_simple_transistor=source_component_base.extend({ftype:external_exports.literal("simple_transistor"),transistor_type:external_exports.enum(["npn","pnp"])});expectTypesMatch(!0);source_simple_test_point=source_component_base.extend({ftype:external_exports.literal("simple_test_point"),footprint_variant:external_exports.enum(["pad","through_hole"]).optional(),pad_shape:external_exports.enum(["rect","circle"]).optional(),pad_diameter:external_exports.union([external_exports.number(),external_exports.string()]).optional(),hole_diameter:external_exports.union([external_exports.number(),external_exports.string()]).optional(),width:external_exports.union([external_exports.number(),external_exports.string()]).optional(),height:external_exports.union([external_exports.number(),external_exports.string()]).optional()});expectTypesMatch(!0);source_simple_mosfet=source_component_base.extend({ftype:external_exports.literal("simple_mosfet"),channel_type:external_exports.enum(["n","p"]),mosfet_mode:external_exports.enum(["enhancement","depletion"])});expectTypesMatch(!0);source_simple_op_amp=source_component_base.extend({ftype:external_exports.literal("simple_op_amp")});expectTypesMatch(!0);source_simple_switch=source_component_base.extend({ftype:external_exports.literal("simple_switch")});expectTypesMatch(!0);source_project_metadata=external_exports.object({type:external_exports.literal("source_project_metadata"),name:external_exports.string().optional(),software_used_string:external_exports.string().optional(),project_url:external_exports.string().optional(),created_at:timestamp.optional()});expectTypesMatch(!0);source_missing_property_error=external_exports.object({type:external_exports.literal("source_missing_property_error"),source_missing_property_error_id:getZodPrefixedIdWithDefault("source_missing_property_error"),source_component_id:external_exports.string(),property_name:external_exports.string(),subcircuit_id:external_exports.string().optional(),error_type:external_exports.literal("source_missing_property_error").default("source_missing_property_error"),message:external_exports.string()}).describe("The source code is missing a property");expectTypesMatch(!0);source_failed_to_create_component_error=external_exports.object({type:external_exports.literal("source_failed_to_create_component_error"),source_failed_to_create_component_error_id:getZodPrefixedIdWithDefault("source_failed_to_create_component_error"),error_type:external_exports.literal("source_failed_to_create_component_error").default("source_failed_to_create_component_error"),component_name:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),parent_source_component_id:external_exports.string().optional(),message:external_exports.string(),pcb_center:external_exports.object({x:external_exports.number().optional(),y:external_exports.number().optional()}).optional(),schematic_center:external_exports.object({x:external_exports.number().optional(),y:external_exports.number().optional()}).optional()}).describe("Error emitted when a component fails to be constructed");expectTypesMatch(!0);source_trace_not_connected_error=external_exports.object({type:external_exports.literal("source_trace_not_connected_error"),source_trace_not_connected_error_id:getZodPrefixedIdWithDefault("source_trace_not_connected_error"),error_type:external_exports.literal("source_trace_not_connected_error").default("source_trace_not_connected_error"),message:external_exports.string(),subcircuit_id:external_exports.string().optional(),source_group_id:external_exports.string().optional(),source_trace_id:external_exports.string().optional(),connected_source_port_ids:external_exports.array(external_exports.string()).optional(),selectors_not_found:external_exports.array(external_exports.string()).optional()}).describe("Occurs when a source trace selector does not match any ports");expectTypesMatch(!0);source_property_ignored_warning=external_exports.object({type:external_exports.literal("source_property_ignored_warning"),source_property_ignored_warning_id:getZodPrefixedIdWithDefault("source_property_ignored_warning"),source_component_id:external_exports.string(),property_name:external_exports.string(),subcircuit_id:external_exports.string().optional(),error_type:external_exports.literal("source_property_ignored_warning").default("source_property_ignored_warning"),message:external_exports.string()}).describe("The source property was ignored");expectTypesMatch(!0);source_pin_missing_trace_warning=external_exports.object({type:external_exports.literal("source_pin_missing_trace_warning"),source_pin_missing_trace_warning_id:getZodPrefixedIdWithDefault("source_pin_missing_trace_warning"),warning_type:external_exports.literal("source_pin_missing_trace_warning").default("source_pin_missing_trace_warning"),message:external_exports.string(),source_component_id:external_exports.string(),source_port_id:external_exports.string(),subcircuit_id:external_exports.string().optional()}).describe("Warning emitted when a source component pin is missing a trace connection");expectTypesMatch(!0);source_simple_voltage_probe=source_component_base.extend({ftype:external_exports.literal("simple_voltage_probe")});expectTypesMatch(!0);source_interconnect=source_component_base.extend({ftype:external_exports.literal("interconnect")});expectTypesMatch(!0);any_source_component=external_exports.union([source_simple_resistor,source_simple_capacitor,source_simple_diode,source_simple_fiducial,source_simple_led,source_simple_ground,source_simple_chip,source_simple_power_source,source_simple_battery,source_simple_inductor,source_simple_push_button,source_simple_potentiometer,source_simple_crystal,source_simple_pin_header,source_simple_pinout,source_simple_resonator,source_simple_switch,source_simple_transistor,source_simple_test_point,source_simple_mosfet,source_simple_op_amp,source_simple_fuse,source_simple_voltage_probe,source_interconnect,source_project_metadata,source_missing_property_error,source_failed_to_create_component_error,source_trace_not_connected_error,source_property_ignored_warning,source_pin_missing_trace_warning]);expectTypesMatch(!0);source_port=external_exports.object({type:external_exports.literal("source_port"),pin_number:external_exports.number().optional(),port_hints:external_exports.array(external_exports.string()).optional(),name:external_exports.string(),source_port_id:external_exports.string(),source_component_id:external_exports.string().optional(),source_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),subcircuit_connectivity_map_key:external_exports.string().optional(),must_be_connected:external_exports.boolean().optional()});expectTypesMatch(!0);source_component_internal_connection=external_exports.object({type:external_exports.literal("source_component_internal_connection"),source_component_internal_connection_id:external_exports.string(),source_component_id:external_exports.string(),source_port_ids:external_exports.array(external_exports.string()),subcircuit_id:external_exports.string().optional()});expectTypesMatch(!0);source_trace=external_exports.object({type:external_exports.literal("source_trace"),source_trace_id:external_exports.string(),connected_source_port_ids:external_exports.array(external_exports.string()),connected_source_net_ids:external_exports.array(external_exports.string()),subcircuit_id:external_exports.string().optional(),subcircuit_connectivity_map_key:external_exports.string().optional(),max_length:external_exports.number().optional(),min_trace_thickness:external_exports.number().optional(),display_name:external_exports.string().optional()});expectTypesMatch(!0);source_group=external_exports.object({type:external_exports.literal("source_group"),source_group_id:external_exports.string(),subcircuit_id:external_exports.string().optional(),parent_subcircuit_id:external_exports.string().optional(),parent_source_group_id:external_exports.string().optional(),is_subcircuit:external_exports.boolean().optional(),show_as_schematic_box:external_exports.boolean().optional(),name:external_exports.string().optional(),was_automatically_named:external_exports.boolean().optional()});expectTypesMatch(!0);source_net=external_exports.object({type:external_exports.literal("source_net"),source_net_id:external_exports.string(),name:external_exports.string(),member_source_group_ids:external_exports.array(external_exports.string()),is_power:external_exports.boolean().optional(),is_ground:external_exports.boolean().optional(),is_digital_signal:external_exports.boolean().optional(),is_analog_signal:external_exports.boolean().optional(),is_positive_voltage_source:external_exports.boolean().optional(),trace_width:external_exports.number().optional(),subcircuit_id:external_exports.string().optional(),subcircuit_connectivity_map_key:external_exports.string().optional()});expectTypesMatch(!0);source_board=external_exports.object({type:external_exports.literal("source_board"),source_board_id:external_exports.string(),source_group_id:external_exports.string(),title:external_exports.string().optional()}).describe("Defines a board in the source domain");expectTypesMatch(!0);source_pcb_ground_plane=external_exports.object({type:external_exports.literal("source_pcb_ground_plane"),source_pcb_ground_plane_id:external_exports.string(),source_group_id:external_exports.string(),source_net_id:external_exports.string(),subcircuit_id:external_exports.string().optional()}).describe("Defines a ground plane in the source domain");expectTypesMatch(!0);all_layers=["top","bottom","inner1","inner2","inner3","inner4","inner5","inner6"],layer_string=external_exports.enum(all_layers),layer_ref=layer_string.or(external_exports.object({name:layer_string})).transform(layer=>typeof layer=="string"?layer:layer.name);expectTypesMatch(!0);visible_layer=external_exports.enum(["top","bottom"]),source_manually_placed_via=external_exports.object({type:external_exports.literal("source_manually_placed_via"),source_manually_placed_via_id:external_exports.string(),source_group_id:external_exports.string(),source_net_id:external_exports.string(),subcircuit_id:external_exports.string().optional(),source_trace_id:external_exports.string().optional()}).describe("Defines a via that is manually placed in the source domain");expectTypesMatch(!0);source_pin_must_be_connected_error=external_exports.object({type:external_exports.literal("source_pin_must_be_connected_error"),source_pin_must_be_connected_error_id:getZodPrefixedIdWithDefault("source_pin_must_be_connected_error"),error_type:external_exports.literal("source_pin_must_be_connected_error").default("source_pin_must_be_connected_error"),message:external_exports.string(),source_component_id:external_exports.string(),source_port_id:external_exports.string(),subcircuit_id:external_exports.string().optional()}).describe("Error emitted when a pin with mustBeConnected attribute is not connected to any trace");expectTypesMatch(!0);unknown_error_finding_part=external_exports.object({type:external_exports.literal("unknown_error_finding_part"),unknown_error_finding_part_id:getZodPrefixedIdWithDefault("unknown_error_finding_part"),error_type:external_exports.literal("unknown_error_finding_part").default("unknown_error_finding_part"),message:external_exports.string(),source_component_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional()}).describe("Error emitted when an unexpected error occurs while finding a part");expectTypesMatch(!0);schematic_box=external_exports.object({type:external_exports.literal("schematic_box"),schematic_component_id:external_exports.string().optional(),width:distance,height:distance,is_dashed:external_exports.boolean().default(!1),x:distance,y:distance,subcircuit_id:external_exports.string().optional()}).describe("Draws a box on the schematic");expectTypesMatch(!0);schematic_path=external_exports.object({type:external_exports.literal("schematic_path"),schematic_component_id:external_exports.string(),fill_color:external_exports.enum(["red","blue"]).optional(),is_filled:external_exports.boolean().optional(),points:external_exports.array(point),subcircuit_id:external_exports.string().optional()});expectTypesMatch(!0);schematic_pin_styles=external_exports.record(external_exports.object({left_margin:length.optional(),right_margin:length.optional(),top_margin:length.optional(),bottom_margin:length.optional()})),schematic_component_port_arrangement_by_size=external_exports.object({left_size:external_exports.number(),right_size:external_exports.number(),top_size:external_exports.number().optional(),bottom_size:external_exports.number().optional()});expectTypesMatch(!0);schematic_component_port_arrangement_by_sides=external_exports.object({left_side:external_exports.object({pins:external_exports.array(external_exports.number()),direction:external_exports.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),right_side:external_exports.object({pins:external_exports.array(external_exports.number()),direction:external_exports.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),top_side:external_exports.object({pins:external_exports.array(external_exports.number()),direction:external_exports.enum(["left-to-right","right-to-left"]).optional()}).optional(),bottom_side:external_exports.object({pins:external_exports.array(external_exports.number()),direction:external_exports.enum(["left-to-right","right-to-left"]).optional()}).optional()});expectTypesMatch(!0);port_arrangement=external_exports.union([schematic_component_port_arrangement_by_size,schematic_component_port_arrangement_by_sides]),schematic_component=external_exports.object({type:external_exports.literal("schematic_component"),size,center:point,source_component_id:external_exports.string().optional(),schematic_component_id:external_exports.string(),pin_spacing:length.optional(),pin_styles:schematic_pin_styles.optional(),box_width:length.optional(),symbol_name:external_exports.string().optional(),port_arrangement:port_arrangement.optional(),port_labels:external_exports.record(external_exports.string()).optional(),symbol_display_value:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),schematic_group_id:external_exports.string().optional(),is_schematic_group:external_exports.boolean().optional(),source_group_id:external_exports.string().optional(),is_box_with_pins:external_exports.boolean().optional().default(!0)});expectTypesMatch(!0);schematic_line=external_exports.object({type:external_exports.literal("schematic_line"),schematic_line_id:getZodPrefixedIdWithDefault("schematic_line"),schematic_component_id:external_exports.string(),x1:distance,y1:distance,x2:distance,y2:distance,stroke_width:distance.nullable().optional(),color:external_exports.string().default("#000000"),is_dashed:external_exports.boolean().default(!1),subcircuit_id:external_exports.string().optional()}).describe("Draws a styled line on the schematic");expectTypesMatch(!0);schematic_rect=external_exports.object({type:external_exports.literal("schematic_rect"),schematic_rect_id:getZodPrefixedIdWithDefault("schematic_rect"),schematic_component_id:external_exports.string(),center:point,width:distance,height:distance,rotation:rotation.default(0),stroke_width:distance.nullable().optional(),color:external_exports.string().default("#000000"),is_filled:external_exports.boolean().default(!1),fill_color:external_exports.string().optional(),is_dashed:external_exports.boolean().default(!1),subcircuit_id:external_exports.string().optional()}).describe("Draws a styled rectangle on the schematic");expectTypesMatch(!0);schematic_circle=external_exports.object({type:external_exports.literal("schematic_circle"),schematic_circle_id:getZodPrefixedIdWithDefault("schematic_circle"),schematic_component_id:external_exports.string(),center:point,radius:distance,stroke_width:distance.nullable().optional(),color:external_exports.string().default("#000000"),is_filled:external_exports.boolean().default(!1),fill_color:external_exports.string().optional(),is_dashed:external_exports.boolean().default(!1),subcircuit_id:external_exports.string().optional()}).describe("Draws a styled circle on the schematic");expectTypesMatch(!0);schematic_arc=external_exports.object({type:external_exports.literal("schematic_arc"),schematic_arc_id:getZodPrefixedIdWithDefault("schematic_arc"),schematic_component_id:external_exports.string(),center:point,radius:distance,start_angle_degrees:rotation,end_angle_degrees:rotation,direction:external_exports.enum(["clockwise","counterclockwise"]).default("counterclockwise"),stroke_width:distance.nullable().optional(),color:external_exports.string().default("#000000"),is_dashed:external_exports.boolean().default(!1),subcircuit_id:external_exports.string().optional()}).describe("Draws a styled arc on the schematic");expectTypesMatch(!0);schematic_trace=external_exports.object({type:external_exports.literal("schematic_trace"),schematic_trace_id:external_exports.string(),source_trace_id:external_exports.string().optional(),junctions:external_exports.array(external_exports.object({x:external_exports.number(),y:external_exports.number()})),edges:external_exports.array(external_exports.object({from:external_exports.object({x:external_exports.number(),y:external_exports.number()}),to:external_exports.object({x:external_exports.number(),y:external_exports.number()}),is_crossing:external_exports.boolean().optional(),from_schematic_port_id:external_exports.string().optional(),to_schematic_port_id:external_exports.string().optional()})),subcircuit_id:external_exports.string().optional(),subcircuit_connectivity_map_key:external_exports.string().optional()});expectTypesMatch(!0);fivePointAnchor=external_exports.enum(["center","left","right","top","bottom"]);expectTypesMatch(!0);schematic_text=external_exports.object({type:external_exports.literal("schematic_text"),schematic_component_id:external_exports.string().optional(),schematic_text_id:external_exports.string(),text:external_exports.string(),font_size:external_exports.number().default(.18),position:external_exports.object({x:distance,y:distance}),rotation:external_exports.number().default(0),anchor:external_exports.union([fivePointAnchor.describe("legacy"),ninePointAnchor]).default("center"),color:external_exports.string().default("#000000"),subcircuit_id:external_exports.string().optional()});expectTypesMatch(!0);schematic_port=external_exports.object({type:external_exports.literal("schematic_port"),schematic_port_id:external_exports.string(),source_port_id:external_exports.string(),schematic_component_id:external_exports.string().optional(),center:point,facing_direction:external_exports.enum(["up","down","left","right"]).optional(),distance_from_component_edge:external_exports.number().optional(),side_of_component:external_exports.enum(["top","bottom","left","right"]).optional(),true_ccw_index:external_exports.number().optional(),pin_number:external_exports.number().optional(),display_pin_label:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),is_connected:external_exports.boolean().optional(),has_input_arrow:external_exports.boolean().optional(),has_output_arrow:external_exports.boolean().optional()}).describe("Defines a port on a schematic component");expectTypesMatch(!0);schematic_net_label=external_exports.object({type:external_exports.literal("schematic_net_label"),schematic_net_label_id:getZodPrefixedIdWithDefault("schematic_net_label"),schematic_trace_id:external_exports.string().optional(),source_trace_id:external_exports.string().optional(),source_net_id:external_exports.string(),center:point,anchor_position:point.optional(),anchor_side:external_exports.enum(["top","bottom","left","right"]),text:external_exports.string(),symbol_name:external_exports.string().optional(),is_movable:external_exports.boolean().optional(),subcircuit_id:external_exports.string().optional()});expectTypesMatch(!0);schematic_error=external_exports.object({type:external_exports.literal("schematic_error"),schematic_error_id:external_exports.string(),error_type:external_exports.literal("schematic_port_not_found").default("schematic_port_not_found"),message:external_exports.string(),subcircuit_id:external_exports.string().optional()}).describe("Defines a schematic error on the schematic");expectTypesMatch(!0);schematic_layout_error=external_exports.object({type:external_exports.literal("schematic_layout_error"),schematic_layout_error_id:getZodPrefixedIdWithDefault("schematic_layout_error"),error_type:external_exports.literal("schematic_layout_error").default("schematic_layout_error"),message:external_exports.string(),source_group_id:external_exports.string(),schematic_group_id:external_exports.string(),subcircuit_id:external_exports.string().optional()}).describe("Error emitted when schematic layout fails for a group");expectTypesMatch(!0);schematic_debug_object_base=external_exports.object({type:external_exports.literal("schematic_debug_object"),label:external_exports.string().optional(),subcircuit_id:external_exports.string().optional()}),schematic_debug_rect=schematic_debug_object_base.extend({shape:external_exports.literal("rect"),center:point,size}),schematic_debug_line=schematic_debug_object_base.extend({shape:external_exports.literal("line"),start:point,end:point}),schematic_debug_point=schematic_debug_object_base.extend({shape:external_exports.literal("point"),center:point}),schematic_debug_object=external_exports.discriminatedUnion("shape",[schematic_debug_rect,schematic_debug_line,schematic_debug_point]);expectTypesMatch(!0);schematic_voltage_probe=external_exports.object({type:external_exports.literal("schematic_voltage_probe"),schematic_voltage_probe_id:external_exports.string(),source_component_id:external_exports.string().optional(),name:external_exports.string().optional(),position:point,schematic_trace_id:external_exports.string(),voltage:voltage.optional(),subcircuit_id:external_exports.string().optional(),color:external_exports.string().optional(),label_alignment:ninePointAnchor.optional()}).describe("Defines a voltage probe measurement point on a schematic trace");expectTypesMatch(!0);schematic_manual_edit_conflict_warning=external_exports.object({type:external_exports.literal("schematic_manual_edit_conflict_warning"),schematic_manual_edit_conflict_warning_id:getZodPrefixedIdWithDefault("schematic_manual_edit_conflict_warning"),warning_type:external_exports.literal("schematic_manual_edit_conflict_warning").default("schematic_manual_edit_conflict_warning"),message:external_exports.string(),schematic_component_id:external_exports.string(),schematic_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),source_component_id:external_exports.string()}).describe("Warning emitted when a component has both manual placement and explicit schX/schY coordinates");expectTypesMatch(!0);schematic_group=external_exports.object({type:external_exports.literal("schematic_group"),schematic_group_id:getZodPrefixedIdWithDefault("schematic_group"),source_group_id:external_exports.string(),is_subcircuit:external_exports.boolean().optional(),subcircuit_id:external_exports.string().optional(),width:length,height:length,center:point,schematic_component_ids:external_exports.array(external_exports.string()),show_as_schematic_box:external_exports.boolean().optional(),name:external_exports.string().optional(),description:external_exports.string().optional()}).describe("Defines a group of components on the schematic");expectTypesMatch(!0);schematic_table=external_exports.object({type:external_exports.literal("schematic_table"),schematic_table_id:getZodPrefixedIdWithDefault("schematic_table"),anchor_position:point,column_widths:external_exports.array(distance),row_heights:external_exports.array(distance),cell_padding:distance.optional(),border_width:distance.optional(),subcircuit_id:external_exports.string().optional(),schematic_component_id:external_exports.string().optional(),anchor:ninePointAnchor.optional()}).describe("Defines a table on the schematic");expectTypesMatch(!0);schematic_table_cell=external_exports.object({type:external_exports.literal("schematic_table_cell"),schematic_table_cell_id:getZodPrefixedIdWithDefault("schematic_table_cell"),schematic_table_id:external_exports.string(),start_row_index:external_exports.number(),end_row_index:external_exports.number(),start_column_index:external_exports.number(),end_column_index:external_exports.number(),text:external_exports.string().optional(),center:point,width:distance,height:distance,horizontal_align:external_exports.enum(["left","center","right"]).optional(),vertical_align:external_exports.enum(["top","middle","bottom"]).optional(),font_size:distance.optional(),subcircuit_id:external_exports.string().optional()}).describe("Defines a cell within a schematic_table");expectTypesMatch(!0);schematic_sheet=external_exports.object({type:external_exports.literal("schematic_sheet"),schematic_sheet_id:getZodPrefixedIdWithDefault("schematic_sheet"),name:external_exports.string().optional(),subcircuit_id:external_exports.string().optional()}).describe("Defines a schematic sheet or page that components can be placed on");expectTypesMatch(!0);point_with_bulge=external_exports.object({x:distance,y:distance,bulge:external_exports.number().optional()});expectTypesMatch(!0);ring=external_exports.object({vertices:external_exports.array(point_with_bulge)});expectTypesMatch(!0);brep_shape=external_exports.object({outer_ring:ring,inner_rings:external_exports.array(ring).default([])});expectTypesMatch(!0);pcb_route_hint=external_exports.object({x:distance,y:distance,via:external_exports.boolean().optional(),via_to_layer:layer_ref.optional()}),pcb_route_hints=external_exports.array(pcb_route_hint);expectTypesMatch(!0);expectTypesMatch(!0);route_hint_point=external_exports.object({x:distance,y:distance,via:external_exports.boolean().optional(),to_layer:layer_ref.optional(),trace_width:distance.optional()});expectTypesMatch(!0);pcb_component=external_exports.object({type:external_exports.literal("pcb_component"),pcb_component_id:getZodPrefixedIdWithDefault("pcb_component"),source_component_id:external_exports.string(),center:point,layer:layer_ref,rotation,display_offset_x:external_exports.string().optional().describe("How to display the x offset for this part, usually corresponding with how the user specified it"),display_offset_y:external_exports.string().optional().describe("How to display the y offset for this part, usually corresponding with how the user specified it"),width:length,height:length,do_not_place:external_exports.boolean().optional(),subcircuit_id:external_exports.string().optional(),pcb_group_id:external_exports.string().optional(),position_mode:external_exports.enum(["packed","relative_to_group_anchor","none"]).optional(),positioned_relative_to_pcb_group_id:external_exports.string().optional(),positioned_relative_to_pcb_board_id:external_exports.string().optional(),obstructs_within_bounds:external_exports.boolean().default(!0).describe("Does this component take up all the space within its bounds on a layer. This is generally true except for when separated pin headers are being represented by a single component (in which case, chips can be placed between the pin headers) or for tall modules where chips fit underneath")}).describe("Defines a component on the PCB");expectTypesMatch(!0);pcb_hole_circle=external_exports.object({type:external_exports.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault("pcb_hole"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),pcb_component_id:external_exports.string().optional(),hole_shape:external_exports.literal("circle"),hole_diameter:external_exports.number(),x:distance,y:distance,is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_hole_circle_shape=pcb_hole_circle.describe("Defines a circular hole on the PCB");expectTypesMatch(!0);pcb_hole_rect=external_exports.object({type:external_exports.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault("pcb_hole"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),pcb_component_id:external_exports.string().optional(),hole_shape:external_exports.literal("rect"),hole_width:external_exports.number(),hole_height:external_exports.number(),x:distance,y:distance,is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_hole_rect_shape=pcb_hole_rect.describe("Defines a rectangular (square-capable) hole on the PCB. Use equal width/height for square.");expectTypesMatch(!0);pcb_hole_circle_or_square=external_exports.object({type:external_exports.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault("pcb_hole"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),pcb_component_id:external_exports.string().optional(),hole_shape:external_exports.enum(["circle","square"]),hole_diameter:external_exports.number(),x:distance,y:distance,is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_hole_circle_or_square_shape=pcb_hole_circle_or_square.describe("Defines a circular or square hole on the PCB");expectTypesMatch(!0);pcb_hole_oval=external_exports.object({type:external_exports.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault("pcb_hole"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),pcb_component_id:external_exports.string().optional(),hole_shape:external_exports.literal("oval"),hole_width:external_exports.number(),hole_height:external_exports.number(),x:distance,y:distance,is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_hole_oval_shape=pcb_hole_oval.describe("Defines an oval hole on the PCB");expectTypesMatch(!0);pcb_hole_pill=external_exports.object({type:external_exports.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault("pcb_hole"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),pcb_component_id:external_exports.string().optional(),hole_shape:external_exports.literal("pill"),hole_width:external_exports.number(),hole_height:external_exports.number(),x:distance,y:distance,is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_hole_pill_shape=pcb_hole_pill.describe("Defines a pill-shaped hole on the PCB");expectTypesMatch(!0);pcb_hole_rotated_pill=external_exports.object({type:external_exports.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault("pcb_hole"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),pcb_component_id:external_exports.string().optional(),hole_shape:external_exports.literal("rotated_pill"),hole_width:external_exports.number(),hole_height:external_exports.number(),x:distance,y:distance,ccw_rotation:rotation,is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_hole_rotated_pill_shape=pcb_hole_rotated_pill.describe("Defines a rotated pill-shaped hole on the PCB");expectTypesMatch(!0);pcb_hole=pcb_hole_circle_or_square.or(pcb_hole_oval).or(pcb_hole_pill).or(pcb_hole_rotated_pill).or(pcb_hole_circle).or(pcb_hole_rect),pcb_plated_hole_circle=external_exports.object({type:external_exports.literal("pcb_plated_hole"),shape:external_exports.literal("circle"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),outer_diameter:external_exports.number(),hole_diameter:external_exports.number(),is_covered_with_solder_mask:external_exports.boolean().optional(),x:distance,y:distance,layers:external_exports.array(layer_ref),port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault("pcb_plated_hole"),soldermask_margin:external_exports.number().optional()}),pcb_plated_hole_oval=external_exports.object({type:external_exports.literal("pcb_plated_hole"),shape:external_exports.enum(["oval","pill"]),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),outer_width:external_exports.number(),outer_height:external_exports.number(),hole_width:external_exports.number(),hole_height:external_exports.number(),is_covered_with_solder_mask:external_exports.boolean().optional(),x:distance,y:distance,ccw_rotation:rotation,layers:external_exports.array(layer_ref),port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault("pcb_plated_hole"),soldermask_margin:external_exports.number().optional()}),pcb_circular_hole_with_rect_pad=external_exports.object({type:external_exports.literal("pcb_plated_hole"),shape:external_exports.literal("circular_hole_with_rect_pad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),hole_shape:external_exports.literal("circle"),pad_shape:external_exports.literal("rect"),hole_diameter:external_exports.number(),rect_pad_width:external_exports.number(),rect_pad_height:external_exports.number(),rect_border_radius:external_exports.number().optional(),hole_offset_x:distance.default(0),hole_offset_y:distance.default(0),is_covered_with_solder_mask:external_exports.boolean().optional(),x:distance,y:distance,layers:external_exports.array(layer_ref),port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault("pcb_plated_hole"),soldermask_margin:external_exports.number().optional()}),pcb_pill_hole_with_rect_pad=external_exports.object({type:external_exports.literal("pcb_plated_hole"),shape:external_exports.literal("pill_hole_with_rect_pad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),hole_shape:external_exports.literal("pill"),pad_shape:external_exports.literal("rect"),hole_width:external_exports.number(),hole_height:external_exports.number(),rect_pad_width:external_exports.number(),rect_pad_height:external_exports.number(),rect_border_radius:external_exports.number().optional(),hole_offset_x:distance.default(0),hole_offset_y:distance.default(0),is_covered_with_solder_mask:external_exports.boolean().optional(),x:distance,y:distance,layers:external_exports.array(layer_ref),port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault("pcb_plated_hole"),soldermask_margin:external_exports.number().optional()}),pcb_rotated_pill_hole_with_rect_pad=external_exports.object({type:external_exports.literal("pcb_plated_hole"),shape:external_exports.literal("rotated_pill_hole_with_rect_pad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),hole_shape:external_exports.literal("rotated_pill"),pad_shape:external_exports.literal("rect"),hole_width:external_exports.number(),hole_height:external_exports.number(),hole_ccw_rotation:rotation,rect_pad_width:external_exports.number(),rect_pad_height:external_exports.number(),rect_border_radius:external_exports.number().optional(),rect_ccw_rotation:rotation,hole_offset_x:distance.default(0),hole_offset_y:distance.default(0),is_covered_with_solder_mask:external_exports.boolean().optional(),x:distance,y:distance,layers:external_exports.array(layer_ref),port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault("pcb_plated_hole"),soldermask_margin:external_exports.number().optional()}),pcb_hole_with_polygon_pad=external_exports.object({type:external_exports.literal("pcb_plated_hole"),shape:external_exports.literal("hole_with_polygon_pad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),hole_shape:external_exports.enum(["circle","oval","pill","rotated_pill"]),hole_diameter:external_exports.number().optional(),hole_width:external_exports.number().optional(),hole_height:external_exports.number().optional(),pad_outline:external_exports.array(external_exports.object({x:distance,y:distance})).min(3),hole_offset_x:distance.default(0),hole_offset_y:distance.default(0),is_covered_with_solder_mask:external_exports.boolean().optional(),x:distance,y:distance,layers:external_exports.array(layer_ref),port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault("pcb_plated_hole"),soldermask_margin:external_exports.number().optional(),ccw_rotation:rotation.optional()}),pcb_plated_hole=external_exports.union([pcb_plated_hole_circle,pcb_plated_hole_oval,pcb_circular_hole_with_rect_pad,pcb_pill_hole_with_rect_pad,pcb_rotated_pill_hole_with_rect_pad,pcb_hole_with_polygon_pad]);expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);pcb_port=external_exports.object({type:external_exports.literal("pcb_port"),pcb_port_id:getZodPrefixedIdWithDefault("pcb_port"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),source_port_id:external_exports.string(),pcb_component_id:external_exports.string().optional(),x:distance,y:distance,layers:external_exports.array(layer_ref),is_board_pinout:external_exports.boolean().optional()}).describe("Defines a port on the PCB");expectTypesMatch(!0);pcb_smtpad_circle=external_exports.object({type:external_exports.literal("pcb_smtpad"),shape:external_exports.literal("circle"),pcb_smtpad_id:getZodPrefixedIdWithDefault("pcb_smtpad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,radius:external_exports.number(),layer:layer_ref,port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_smtpad_rect=external_exports.object({type:external_exports.literal("pcb_smtpad"),shape:external_exports.literal("rect"),pcb_smtpad_id:getZodPrefixedIdWithDefault("pcb_smtpad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,width:external_exports.number(),height:external_exports.number(),rect_border_radius:external_exports.number().optional(),corner_radius:external_exports.number().optional(),layer:layer_ref,port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional(),soldermask_margin_left:external_exports.number().optional(),soldermask_margin_top:external_exports.number().optional(),soldermask_margin_right:external_exports.number().optional(),soldermask_margin_bottom:external_exports.number().optional()}),pcb_smtpad_rotated_rect=external_exports.object({type:external_exports.literal("pcb_smtpad"),shape:external_exports.literal("rotated_rect"),pcb_smtpad_id:getZodPrefixedIdWithDefault("pcb_smtpad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,width:external_exports.number(),height:external_exports.number(),rect_border_radius:external_exports.number().optional(),corner_radius:external_exports.number().optional(),ccw_rotation:rotation,layer:layer_ref,port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional(),soldermask_margin_left:external_exports.number().optional(),soldermask_margin_top:external_exports.number().optional(),soldermask_margin_right:external_exports.number().optional(),soldermask_margin_bottom:external_exports.number().optional()}),pcb_smtpad_pill=external_exports.object({type:external_exports.literal("pcb_smtpad"),shape:external_exports.literal("pill"),pcb_smtpad_id:getZodPrefixedIdWithDefault("pcb_smtpad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,width:external_exports.number(),height:external_exports.number(),radius:external_exports.number(),layer:layer_ref,port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_smtpad_rotated_pill=external_exports.object({type:external_exports.literal("pcb_smtpad"),shape:external_exports.literal("rotated_pill"),pcb_smtpad_id:getZodPrefixedIdWithDefault("pcb_smtpad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,width:external_exports.number(),height:external_exports.number(),radius:external_exports.number(),ccw_rotation:rotation,layer:layer_ref,port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_smtpad_polygon=external_exports.object({type:external_exports.literal("pcb_smtpad"),shape:external_exports.literal("polygon"),pcb_smtpad_id:getZodPrefixedIdWithDefault("pcb_smtpad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),points:external_exports.array(point),layer:layer_ref,port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_smtpad=external_exports.discriminatedUnion("shape",[pcb_smtpad_circle,pcb_smtpad_rect,pcb_smtpad_rotated_rect,pcb_smtpad_rotated_pill,pcb_smtpad_pill,pcb_smtpad_polygon]).describe("Defines an SMT pad on the PCB");expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);pcb_solder_paste_circle=external_exports.object({type:external_exports.literal("pcb_solder_paste"),shape:external_exports.literal("circle"),pcb_solder_paste_id:getZodPrefixedIdWithDefault("pcb_solder_paste"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,radius:external_exports.number(),layer:layer_ref,pcb_component_id:external_exports.string().optional(),pcb_smtpad_id:external_exports.string().optional()}),pcb_solder_paste_rect=external_exports.object({type:external_exports.literal("pcb_solder_paste"),shape:external_exports.literal("rect"),pcb_solder_paste_id:getZodPrefixedIdWithDefault("pcb_solder_paste"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,width:external_exports.number(),height:external_exports.number(),layer:layer_ref,pcb_component_id:external_exports.string().optional(),pcb_smtpad_id:external_exports.string().optional()}),pcb_solder_paste_pill=external_exports.object({type:external_exports.literal("pcb_solder_paste"),shape:external_exports.literal("pill"),pcb_solder_paste_id:getZodPrefixedIdWithDefault("pcb_solder_paste"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,width:external_exports.number(),height:external_exports.number(),radius:external_exports.number(),layer:layer_ref,pcb_component_id:external_exports.string().optional(),pcb_smtpad_id:external_exports.string().optional()}),pcb_solder_paste_rotated_rect=external_exports.object({type:external_exports.literal("pcb_solder_paste"),shape:external_exports.literal("rotated_rect"),pcb_solder_paste_id:getZodPrefixedIdWithDefault("pcb_solder_paste"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,width:external_exports.number(),height:external_exports.number(),ccw_rotation:distance,layer:layer_ref,pcb_component_id:external_exports.string().optional(),pcb_smtpad_id:external_exports.string().optional()}),pcb_solder_paste_oval=external_exports.object({type:external_exports.literal("pcb_solder_paste"),shape:external_exports.literal("oval"),pcb_solder_paste_id:getZodPrefixedIdWithDefault("pcb_solder_paste"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,width:external_exports.number(),height:external_exports.number(),layer:layer_ref,pcb_component_id:external_exports.string().optional(),pcb_smtpad_id:external_exports.string().optional()}),pcb_solder_paste=external_exports.union([pcb_solder_paste_circle,pcb_solder_paste_rect,pcb_solder_paste_pill,pcb_solder_paste_rotated_rect,pcb_solder_paste_oval]).describe("Defines solderpaste on the PCB");expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);pcb_text=external_exports.object({type:external_exports.literal("pcb_text"),pcb_text_id:getZodPrefixedIdWithDefault("pcb_text"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),text:external_exports.string(),center:point,layer:layer_ref,width:length,height:length,lines:external_exports.number(),align:external_exports.enum(["bottom-left"])}).describe("Defines text on the PCB");expectTypesMatch(!0);pcb_trace_route_point_wire=external_exports.object({route_type:external_exports.literal("wire"),x:distance,y:distance,width:distance,start_pcb_port_id:external_exports.string().optional(),end_pcb_port_id:external_exports.string().optional(),layer:layer_ref}),pcb_trace_route_point_via=external_exports.object({route_type:external_exports.literal("via"),x:distance,y:distance,hole_diameter:distance.optional(),outer_diameter:distance.optional(),from_layer:external_exports.string(),to_layer:external_exports.string()}),pcb_trace_route_point=external_exports.union([pcb_trace_route_point_wire,pcb_trace_route_point_via]),pcb_trace=external_exports.object({type:external_exports.literal("pcb_trace"),source_trace_id:external_exports.string().optional(),pcb_component_id:external_exports.string().optional(),pcb_trace_id:getZodPrefixedIdWithDefault("pcb_trace"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),route_thickness_mode:external_exports.enum(["constant","interpolated"]).default("constant").optional(),route_order_index:external_exports.number().optional(),should_round_corners:external_exports.boolean().optional(),trace_length:external_exports.number().optional(),highlight_color:external_exports.string().optional(),route:external_exports.array(pcb_trace_route_point)}).describe("Defines a trace on the PCB");expectTypesMatch(!0);expectTypesMatch(!0);pcb_trace_error=external_exports.object({type:external_exports.literal("pcb_trace_error"),pcb_trace_error_id:getZodPrefixedIdWithDefault("pcb_trace_error"),error_type:external_exports.literal("pcb_trace_error").default("pcb_trace_error"),message:external_exports.string(),center:point.optional(),pcb_trace_id:external_exports.string(),source_trace_id:external_exports.string(),pcb_component_ids:external_exports.array(external_exports.string()),pcb_port_ids:external_exports.array(external_exports.string()),subcircuit_id:external_exports.string().optional()}).describe("Defines a trace error on the PCB");expectTypesMatch(!0);pcb_trace_missing_error=external_exports.object({type:external_exports.literal("pcb_trace_missing_error"),pcb_trace_missing_error_id:getZodPrefixedIdWithDefault("pcb_trace_missing_error"),error_type:external_exports.literal("pcb_trace_missing_error").default("pcb_trace_missing_error"),message:external_exports.string(),center:point.optional(),source_trace_id:external_exports.string(),pcb_component_ids:external_exports.array(external_exports.string()),pcb_port_ids:external_exports.array(external_exports.string()),subcircuit_id:external_exports.string().optional()}).describe("Defines an error when a source trace has no corresponding PCB trace");expectTypesMatch(!0);pcb_port_not_matched_error=external_exports.object({type:external_exports.literal("pcb_port_not_matched_error"),pcb_error_id:getZodPrefixedIdWithDefault("pcb_error"),error_type:external_exports.literal("pcb_port_not_matched_error").default("pcb_port_not_matched_error"),message:external_exports.string(),pcb_component_ids:external_exports.array(external_exports.string()),subcircuit_id:external_exports.string().optional()}).describe("Defines a trace error on the PCB where a port is not matched");expectTypesMatch(!0);pcb_port_not_connected_error=external_exports.object({type:external_exports.literal("pcb_port_not_connected_error"),pcb_port_not_connected_error_id:getZodPrefixedIdWithDefault("pcb_port_not_connected_error"),error_type:external_exports.literal("pcb_port_not_connected_error").default("pcb_port_not_connected_error"),message:external_exports.string(),pcb_port_ids:external_exports.array(external_exports.string()),pcb_component_ids:external_exports.array(external_exports.string()),subcircuit_id:external_exports.string().optional()}).describe("Defines an error when a pcb port is not connected to any trace");expectTypesMatch(!0);pcb_net=external_exports.object({type:external_exports.literal("pcb_net"),pcb_net_id:getZodPrefixedIdWithDefault("pcb_net"),source_net_id:external_exports.string().optional(),highlight_color:external_exports.string().optional()}).describe("Defines a net on the PCB");expectTypesMatch(!0);pcb_via=external_exports.object({type:external_exports.literal("pcb_via"),pcb_via_id:getZodPrefixedIdWithDefault("pcb_via"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),subcircuit_connectivity_map_key:external_exports.string().optional(),x:distance,y:distance,outer_diameter:distance.default("0.6mm"),hole_diameter:distance.default("0.25mm"),from_layer:layer_ref.optional(),to_layer:layer_ref.optional(),layers:external_exports.array(layer_ref),pcb_trace_id:external_exports.string().optional(),net_is_assignable:external_exports.boolean().optional(),net_assigned:external_exports.boolean().optional(),is_tented:external_exports.boolean().optional()}).describe("Defines a via on the PCB");expectTypesMatch(!0);pcb_board=external_exports.object({type:external_exports.literal("pcb_board"),pcb_board_id:getZodPrefixedIdWithDefault("pcb_board"),pcb_panel_id:external_exports.string().optional(),is_subcircuit:external_exports.boolean().optional(),subcircuit_id:external_exports.string().optional(),width:length.optional(),height:length.optional(),center:point,display_offset_x:external_exports.string().optional().describe("How to display the x offset for this board, usually corresponding with how the user specified it"),display_offset_y:external_exports.string().optional().describe("How to display the y offset for this board, usually corresponding with how the user specified it"),thickness:length.optional().default(1.4),num_layers:external_exports.number().optional().default(4),outline:external_exports.array(point).optional(),shape:external_exports.enum(["rect","polygon"]).optional(),material:external_exports.enum(["fr4","fr1"]).default("fr4"),anchor_position:point.optional(),anchor_alignment:ninePointAnchor.optional(),position_mode:external_exports.enum(["relative_to_panel_anchor","none"]).optional()}).describe("Defines the board outline of the PCB");expectTypesMatch(!0);pcb_panel=external_exports.object({type:external_exports.literal("pcb_panel"),pcb_panel_id:getZodPrefixedIdWithDefault("pcb_panel"),width:length,height:length,center:point,covered_with_solder_mask:external_exports.boolean().optional().default(!0)}).describe("Defines a PCB panel that can contain multiple boards");expectTypesMatch(!0);pcb_placement_error=external_exports.object({type:external_exports.literal("pcb_placement_error"),pcb_placement_error_id:getZodPrefixedIdWithDefault("pcb_placement_error"),error_type:external_exports.literal("pcb_placement_error").default("pcb_placement_error"),message:external_exports.string(),subcircuit_id:external_exports.string().optional()}).describe("Defines a placement error on the PCB");expectTypesMatch(!0);pcb_trace_hint=external_exports.object({type:external_exports.literal("pcb_trace_hint"),pcb_trace_hint_id:getZodPrefixedIdWithDefault("pcb_trace_hint"),pcb_port_id:external_exports.string(),pcb_component_id:external_exports.string(),route:external_exports.array(route_hint_point),subcircuit_id:external_exports.string().optional()}).describe("A hint that can be used during generation of a PCB trace");expectTypesMatch(!0);pcb_silkscreen_line=external_exports.object({type:external_exports.literal("pcb_silkscreen_line"),pcb_silkscreen_line_id:getZodPrefixedIdWithDefault("pcb_silkscreen_line"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),stroke_width:distance.default("0.1mm"),x1:distance,y1:distance,x2:distance,y2:distance,layer:visible_layer}).describe("Defines a silkscreen line on the PCB");expectTypesMatch(!0);pcb_silkscreen_path=external_exports.object({type:external_exports.literal("pcb_silkscreen_path"),pcb_silkscreen_path_id:getZodPrefixedIdWithDefault("pcb_silkscreen_path"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),layer:visible_layer,route:external_exports.array(point),stroke_width:length}).describe("Defines a silkscreen path on the PCB");expectTypesMatch(!0);pcb_silkscreen_text=external_exports.object({type:external_exports.literal("pcb_silkscreen_text"),pcb_silkscreen_text_id:getZodPrefixedIdWithDefault("pcb_silkscreen_text"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),font:external_exports.literal("tscircuit2024").default("tscircuit2024"),font_size:distance.default("0.2mm"),pcb_component_id:external_exports.string(),text:external_exports.string(),is_knockout:external_exports.boolean().default(!1).optional(),knockout_padding:external_exports.object({left:length,top:length,bottom:length,right:length}).default({left:"0.2mm",top:"0.2mm",bottom:"0.2mm",right:"0.2mm"}).optional(),ccw_rotation:external_exports.number().optional(),layer:layer_ref,is_mirrored:external_exports.boolean().default(!1).optional(),anchor_position:point.default({x:0,y:0}),anchor_alignment:ninePointAnchor.default("center")}).describe("Defines silkscreen text on the PCB");expectTypesMatch(!0);pcb_copper_text=external_exports.object({type:external_exports.literal("pcb_copper_text"),pcb_copper_text_id:getZodPrefixedIdWithDefault("pcb_copper_text"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),font:external_exports.literal("tscircuit2024").default("tscircuit2024"),font_size:distance.default("0.2mm"),pcb_component_id:external_exports.string(),text:external_exports.string(),is_knockout:external_exports.boolean().default(!1).optional(),knockout_padding:external_exports.object({left:length,top:length,bottom:length,right:length}).default({left:"0.2mm",top:"0.2mm",bottom:"0.2mm",right:"0.2mm"}).optional(),ccw_rotation:external_exports.number().optional(),layer:layer_ref,is_mirrored:external_exports.boolean().default(!1).optional(),anchor_position:point.default({x:0,y:0}),anchor_alignment:ninePointAnchor.default("center")}).describe("Defines copper text on the PCB");expectTypesMatch(!0);pcb_silkscreen_rect=external_exports.object({type:external_exports.literal("pcb_silkscreen_rect"),pcb_silkscreen_rect_id:getZodPrefixedIdWithDefault("pcb_silkscreen_rect"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),center:point,width:length,height:length,layer:layer_ref,stroke_width:length.default("1mm"),corner_radius:length.optional(),is_filled:external_exports.boolean().default(!0).optional(),has_stroke:external_exports.boolean().optional(),is_stroke_dashed:external_exports.boolean().optional(),ccw_rotation:external_exports.number().optional()}).describe("Defines a silkscreen rect on the PCB");expectTypesMatch(!0);pcb_silkscreen_circle=external_exports.object({type:external_exports.literal("pcb_silkscreen_circle"),pcb_silkscreen_circle_id:getZodPrefixedIdWithDefault("pcb_silkscreen_circle"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),center:point,radius:length,layer:visible_layer,stroke_width:length.default("1mm")}).describe("Defines a silkscreen circle on the PCB");expectTypesMatch(!0);pcb_silkscreen_oval=external_exports.object({type:external_exports.literal("pcb_silkscreen_oval"),pcb_silkscreen_oval_id:getZodPrefixedIdWithDefault("pcb_silkscreen_oval"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),center:point,radius_x:distance,radius_y:distance,layer:visible_layer,ccw_rotation:rotation.optional()}).describe("Defines a silkscreen oval on the PCB");expectTypesMatch(!0);pcb_silkscreen_pill=external_exports.object({type:external_exports.literal("pcb_silkscreen_pill"),pcb_silkscreen_pill_id:getZodPrefixedIdWithDefault("pcb_silkscreen_pill"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),center:point,width:length,height:length,layer:layer_ref,ccw_rotation:external_exports.number().optional()}).describe("Defines a silkscreen pill on the PCB");expectTypesMatch(!0);pcb_fabrication_note_text=external_exports.object({type:external_exports.literal("pcb_fabrication_note_text"),pcb_fabrication_note_text_id:getZodPrefixedIdWithDefault("pcb_fabrication_note_text"),subcircuit_id:external_exports.string().optional(),pcb_group_id:external_exports.string().optional(),font:external_exports.literal("tscircuit2024").default("tscircuit2024"),font_size:distance.default("1mm"),pcb_component_id:external_exports.string(),text:external_exports.string(),layer:visible_layer,anchor_position:point.default({x:0,y:0}),anchor_alignment:external_exports.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),color:external_exports.string().optional()}).describe("Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators");expectTypesMatch(!0);pcb_fabrication_note_path=external_exports.object({type:external_exports.literal("pcb_fabrication_note_path"),pcb_fabrication_note_path_id:getZodPrefixedIdWithDefault("pcb_fabrication_note_path"),pcb_component_id:external_exports.string(),subcircuit_id:external_exports.string().optional(),layer:layer_ref,route:external_exports.array(point),stroke_width:length,color:external_exports.string().optional()}).describe("Defines a fabrication path on the PCB for fabricators or assemblers");expectTypesMatch(!0);pcb_fabrication_note_rect=external_exports.object({type:external_exports.literal("pcb_fabrication_note_rect"),pcb_fabrication_note_rect_id:getZodPrefixedIdWithDefault("pcb_fabrication_note_rect"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),center:point,width:length,height:length,layer:visible_layer,stroke_width:length.default("0.1mm"),corner_radius:length.optional(),is_filled:external_exports.boolean().optional(),has_stroke:external_exports.boolean().optional(),is_stroke_dashed:external_exports.boolean().optional(),color:external_exports.string().optional()}).describe("Defines a fabrication note rectangle on the PCB");expectTypesMatch(!0);pcb_fabrication_note_dimension=external_exports.object({type:external_exports.literal("pcb_fabrication_note_dimension"),pcb_fabrication_note_dimension_id:getZodPrefixedIdWithDefault("pcb_fabrication_note_dimension"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),layer:visible_layer,from:point,to:point,text:external_exports.string().optional(),text_ccw_rotation:external_exports.number().optional(),offset:length.optional(),offset_distance:length.optional(),offset_direction:external_exports.object({x:external_exports.number(),y:external_exports.number()}).optional(),font:external_exports.literal("tscircuit2024").default("tscircuit2024"),font_size:length.default("1mm"),color:external_exports.string().optional(),arrow_size:length.default("1mm")}).describe("Defines a measurement annotation within PCB fabrication notes");expectTypesMatch(!0);pcb_note_text=external_exports.object({type:external_exports.literal("pcb_note_text"),pcb_note_text_id:getZodPrefixedIdWithDefault("pcb_note_text"),pcb_component_id:external_exports.string().optional(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),name:external_exports.string().optional(),font:external_exports.literal("tscircuit2024").default("tscircuit2024"),font_size:distance.default("1mm"),text:external_exports.string().optional(),anchor_position:point.default({x:0,y:0}),anchor_alignment:external_exports.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),color:external_exports.string().optional()}).describe("Defines a documentation note in text on the PCB");expectTypesMatch(!0);pcb_note_rect=external_exports.object({type:external_exports.literal("pcb_note_rect"),pcb_note_rect_id:getZodPrefixedIdWithDefault("pcb_note_rect"),pcb_component_id:external_exports.string().optional(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),name:external_exports.string().optional(),text:external_exports.string().optional(),center:point,width:length,height:length,stroke_width:length.default("0.1mm"),corner_radius:length.optional(),is_filled:external_exports.boolean().optional(),has_stroke:external_exports.boolean().optional(),is_stroke_dashed:external_exports.boolean().optional(),color:external_exports.string().optional()}).describe("Defines a rectangular documentation note on the PCB");expectTypesMatch(!0);pcb_note_path=external_exports.object({type:external_exports.literal("pcb_note_path"),pcb_note_path_id:getZodPrefixedIdWithDefault("pcb_note_path"),pcb_component_id:external_exports.string().optional(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),name:external_exports.string().optional(),text:external_exports.string().optional(),route:external_exports.array(point),stroke_width:length.default("0.1mm"),color:external_exports.string().optional()}).describe("Defines a polyline documentation note on the PCB");expectTypesMatch(!0);pcb_note_line=external_exports.object({type:external_exports.literal("pcb_note_line"),pcb_note_line_id:getZodPrefixedIdWithDefault("pcb_note_line"),pcb_component_id:external_exports.string().optional(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),name:external_exports.string().optional(),text:external_exports.string().optional(),x1:distance,y1:distance,x2:distance,y2:distance,stroke_width:distance.default("0.1mm"),color:external_exports.string().optional(),is_dashed:external_exports.boolean().optional()}).describe("Defines a straight documentation note line on the PCB");expectTypesMatch(!0);pcb_note_dimension=external_exports.object({type:external_exports.literal("pcb_note_dimension"),pcb_note_dimension_id:getZodPrefixedIdWithDefault("pcb_note_dimension"),pcb_component_id:external_exports.string().optional(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),name:external_exports.string().optional(),from:point,to:point,text:external_exports.string().optional(),text_ccw_rotation:external_exports.number().optional(),offset_distance:length.optional(),offset_direction:external_exports.object({x:external_exports.number(),y:external_exports.number()}).optional(),font:external_exports.literal("tscircuit2024").default("tscircuit2024"),font_size:length.default("1mm"),color:external_exports.string().optional(),arrow_size:length.default("1mm")}).describe("Defines a measurement annotation within PCB documentation notes");expectTypesMatch(!0);pcb_footprint_overlap_error=external_exports.object({type:external_exports.literal("pcb_footprint_overlap_error"),pcb_error_id:getZodPrefixedIdWithDefault("pcb_error"),error_type:external_exports.literal("pcb_footprint_overlap_error").default("pcb_footprint_overlap_error"),message:external_exports.string(),pcb_smtpad_ids:external_exports.array(external_exports.string()).optional(),pcb_plated_hole_ids:external_exports.array(external_exports.string()).optional(),pcb_hole_ids:external_exports.array(external_exports.string()).optional(),pcb_keepout_ids:external_exports.array(external_exports.string()).optional()}).describe("Error emitted when a pcb footprint overlaps with another element");expectTypesMatch(!0);pcb_keepout=external_exports.object({type:external_exports.literal("pcb_keepout"),shape:external_exports.literal("rect"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),center:point,width:distance,height:distance,pcb_keepout_id:external_exports.string(),layers:external_exports.array(external_exports.string()),description:external_exports.string().optional()}).or(external_exports.object({type:external_exports.literal("pcb_keepout"),shape:external_exports.literal("circle"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),center:point,radius:distance,pcb_keepout_id:external_exports.string(),layers:external_exports.array(external_exports.string()),description:external_exports.string().optional()}));expectTypesMatch(!0);pcb_cutout_base=external_exports.object({type:external_exports.literal("pcb_cutout"),pcb_cutout_id:getZodPrefixedIdWithDefault("pcb_cutout"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),pcb_board_id:external_exports.string().optional(),pcb_panel_id:external_exports.string().optional()}),pcb_cutout_rect=pcb_cutout_base.extend({shape:external_exports.literal("rect"),center:point,width:length,height:length,rotation:rotation.optional(),corner_radius:length.optional()});expectTypesMatch(!0);pcb_cutout_circle=pcb_cutout_base.extend({shape:external_exports.literal("circle"),center:point,radius:length});expectTypesMatch(!0);pcb_cutout_polygon=pcb_cutout_base.extend({shape:external_exports.literal("polygon"),points:external_exports.array(point)});expectTypesMatch(!0);pcb_cutout_path=pcb_cutout_base.extend({shape:external_exports.literal("path"),route:external_exports.array(point),slot_width:length,slot_length:length.optional(),space_between_slots:length.optional(),slot_corner_radius:length.optional()});expectTypesMatch(!0);pcb_cutout=external_exports.discriminatedUnion("shape",[pcb_cutout_rect,pcb_cutout_circle,pcb_cutout_polygon,pcb_cutout_path]).describe("Defines a cutout on the PCB, removing board material.");expectTypesMatch(!0);pcb_missing_footprint_error=external_exports.object({type:external_exports.literal("pcb_missing_footprint_error"),pcb_missing_footprint_error_id:getZodPrefixedIdWithDefault("pcb_missing_footprint_error"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),error_type:external_exports.literal("pcb_missing_footprint_error").default("pcb_missing_footprint_error"),source_component_id:external_exports.string(),message:external_exports.string()}).describe("Defines a missing footprint error on the PCB");expectTypesMatch(!0);external_footprint_load_error=external_exports.object({type:external_exports.literal("external_footprint_load_error"),external_footprint_load_error_id:getZodPrefixedIdWithDefault("external_footprint_load_error"),pcb_component_id:external_exports.string(),source_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),footprinter_string:external_exports.string().optional(),error_type:external_exports.literal("external_footprint_load_error").default("external_footprint_load_error"),message:external_exports.string()}).describe("Defines an error when an external footprint fails to load");expectTypesMatch(!0);circuit_json_footprint_load_error=external_exports.object({type:external_exports.literal("circuit_json_footprint_load_error"),circuit_json_footprint_load_error_id:getZodPrefixedIdWithDefault("circuit_json_footprint_load_error"),pcb_component_id:external_exports.string(),source_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),error_type:external_exports.literal("circuit_json_footprint_load_error").default("circuit_json_footprint_load_error"),message:external_exports.string(),circuit_json:external_exports.array(external_exports.any()).optional()}).describe("Defines an error when a circuit JSON footprint fails to load");expectTypesMatch(!0);pcb_group=external_exports.object({type:external_exports.literal("pcb_group"),pcb_group_id:getZodPrefixedIdWithDefault("pcb_group"),source_group_id:external_exports.string(),is_subcircuit:external_exports.boolean().optional(),subcircuit_id:external_exports.string().optional(),width:length.optional(),height:length.optional(),center:point,display_offset_x:external_exports.string().optional().describe("How to display the x offset for this group, usually corresponding with how the user specified it"),display_offset_y:external_exports.string().optional().describe("How to display the y offset for this group, usually corresponding with how the user specified it"),outline:external_exports.array(point).optional(),anchor_position:point.optional(),anchor_alignment:ninePointAnchor.default("center"),position_mode:external_exports.enum(["packed","relative_to_group_anchor","none"]).optional(),positioned_relative_to_pcb_group_id:external_exports.string().optional(),positioned_relative_to_pcb_board_id:external_exports.string().optional(),pcb_component_ids:external_exports.array(external_exports.string()),child_layout_mode:external_exports.enum(["packed","none"]).optional(),name:external_exports.string().optional(),description:external_exports.string().optional(),layout_mode:external_exports.string().optional(),autorouter_configuration:external_exports.object({trace_clearance:length}).optional(),autorouter_used_string:external_exports.string().optional()}).describe("Defines a group of components on the PCB");expectTypesMatch(!0);pcb_autorouting_error=external_exports.object({type:external_exports.literal("pcb_autorouting_error"),pcb_error_id:getZodPrefixedIdWithDefault("pcb_autorouting_error"),error_type:external_exports.literal("pcb_autorouting_error").default("pcb_autorouting_error"),message:external_exports.string(),subcircuit_id:external_exports.string().optional()}).describe("The autorouting has failed to route a portion of the board");expectTypesMatch(!0);pcb_manual_edit_conflict_warning=external_exports.object({type:external_exports.literal("pcb_manual_edit_conflict_warning"),pcb_manual_edit_conflict_warning_id:getZodPrefixedIdWithDefault("pcb_manual_edit_conflict_warning"),warning_type:external_exports.literal("pcb_manual_edit_conflict_warning").default("pcb_manual_edit_conflict_warning"),message:external_exports.string(),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),source_component_id:external_exports.string()}).describe("Warning emitted when a component has both manual placement and explicit pcbX/pcbY coordinates");expectTypesMatch(!0);pcb_breakout_point=external_exports.object({type:external_exports.literal("pcb_breakout_point"),pcb_breakout_point_id:getZodPrefixedIdWithDefault("pcb_breakout_point"),pcb_group_id:external_exports.string(),subcircuit_id:external_exports.string().optional(),source_trace_id:external_exports.string().optional(),source_port_id:external_exports.string().optional(),source_net_id:external_exports.string().optional(),x:distance,y:distance}).describe("Defines a routing target within a pcb_group for a source_trace or source_net");expectTypesMatch(!0);pcb_ground_plane=external_exports.object({type:external_exports.literal("pcb_ground_plane"),pcb_ground_plane_id:getZodPrefixedIdWithDefault("pcb_ground_plane"),source_pcb_ground_plane_id:external_exports.string(),source_net_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional()}).describe("Defines a ground plane on the PCB");expectTypesMatch(!0);pcb_ground_plane_region=external_exports.object({type:external_exports.literal("pcb_ground_plane_region"),pcb_ground_plane_region_id:getZodPrefixedIdWithDefault("pcb_ground_plane_region"),pcb_ground_plane_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),layer:layer_ref,points:external_exports.array(point)}).describe("Defines a polygon region of a ground plane");expectTypesMatch(!0);pcb_thermal_spoke=external_exports.object({type:external_exports.literal("pcb_thermal_spoke"),pcb_thermal_spoke_id:getZodPrefixedIdWithDefault("pcb_thermal_spoke"),pcb_ground_plane_id:external_exports.string(),shape:external_exports.string(),spoke_count:external_exports.number(),spoke_thickness:distance,spoke_inner_diameter:distance,spoke_outer_diameter:distance,pcb_plated_hole_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional()}).describe("Pattern for connecting a ground plane to a plated hole");expectTypesMatch(!0);pcb_copper_pour_base=external_exports.object({type:external_exports.literal("pcb_copper_pour"),pcb_copper_pour_id:getZodPrefixedIdWithDefault("pcb_copper_pour"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),layer:layer_ref,source_net_id:external_exports.string().optional(),covered_with_solder_mask:external_exports.boolean().optional().default(!0)}),pcb_copper_pour_rect=pcb_copper_pour_base.extend({shape:external_exports.literal("rect"),center:point,width:length,height:length,rotation:rotation.optional()});expectTypesMatch(!0);pcb_copper_pour_brep=pcb_copper_pour_base.extend({shape:external_exports.literal("brep"),brep_shape});expectTypesMatch(!0);pcb_copper_pour_polygon=pcb_copper_pour_base.extend({shape:external_exports.literal("polygon"),points:external_exports.array(point)});expectTypesMatch(!0);pcb_copper_pour=external_exports.discriminatedUnion("shape",[pcb_copper_pour_rect,pcb_copper_pour_brep,pcb_copper_pour_polygon]).describe("Defines a copper pour on the PCB.");expectTypesMatch(!0);pcb_component_outside_board_error=external_exports.object({type:external_exports.literal("pcb_component_outside_board_error"),pcb_component_outside_board_error_id:getZodPrefixedIdWithDefault("pcb_component_outside_board_error"),error_type:external_exports.literal("pcb_component_outside_board_error").default("pcb_component_outside_board_error"),message:external_exports.string(),pcb_component_id:external_exports.string(),pcb_board_id:external_exports.string(),component_center:point,component_bounds:external_exports.object({min_x:external_exports.number(),max_x:external_exports.number(),min_y:external_exports.number(),max_y:external_exports.number()}),subcircuit_id:external_exports.string().optional(),source_component_id:external_exports.string().optional()}).describe("Error emitted when a PCB component is placed outside the board boundaries");expectTypesMatch(!0);pcb_component_invalid_layer_error=external_exports.object({type:external_exports.literal("pcb_component_invalid_layer_error"),pcb_component_invalid_layer_error_id:getZodPrefixedIdWithDefault("pcb_component_invalid_layer_error"),error_type:external_exports.literal("pcb_component_invalid_layer_error").default("pcb_component_invalid_layer_error"),message:external_exports.string(),pcb_component_id:external_exports.string().optional(),source_component_id:external_exports.string(),layer:layer_ref,subcircuit_id:external_exports.string().optional()}).describe("Error emitted when a component is placed on an invalid layer (components can only be on 'top' or 'bottom' layers)");expectTypesMatch(!0);pcb_via_clearance_error=external_exports.object({type:external_exports.literal("pcb_via_clearance_error"),pcb_error_id:getZodPrefixedIdWithDefault("pcb_error"),error_type:external_exports.literal("pcb_via_clearance_error").default("pcb_via_clearance_error"),message:external_exports.string(),pcb_via_ids:external_exports.array(external_exports.string()).min(2),minimum_clearance:distance.optional(),actual_clearance:distance.optional(),pcb_center:external_exports.object({x:external_exports.number().optional(),y:external_exports.number().optional()}).optional(),subcircuit_id:external_exports.string().optional()}).describe("Error emitted when vias are closer than the allowed clearance");expectTypesMatch(!0);pcb_courtyard_rect=external_exports.object({type:external_exports.literal("pcb_courtyard_rect"),pcb_courtyard_rect_id:getZodPrefixedIdWithDefault("pcb_courtyard_rect"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),center:point,width:length,height:length,layer:visible_layer,color:external_exports.string().optional()}).describe("Defines a courtyard rectangle on the PCB");expectTypesMatch(!0);pcb_courtyard_outline=external_exports.object({type:external_exports.literal("pcb_courtyard_outline"),pcb_courtyard_outline_id:getZodPrefixedIdWithDefault("pcb_courtyard_outline"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),layer:visible_layer,outline:external_exports.array(point).min(2),stroke_width:length.default("0.1mm"),is_closed:external_exports.boolean().optional(),is_stroke_dashed:external_exports.boolean().optional(),color:external_exports.string().optional()}).describe("Defines a courtyard outline on the PCB");expectTypesMatch(!0);pcb_courtyard_polygon=external_exports.object({type:external_exports.literal("pcb_courtyard_polygon"),pcb_courtyard_polygon_id:getZodPrefixedIdWithDefault("pcb_courtyard_polygon"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),layer:visible_layer,points:external_exports.array(point).min(3),color:external_exports.string().optional()}).describe("Defines a courtyard polygon on the PCB");expectTypesMatch(!0);cad_component=external_exports.object({type:external_exports.literal("cad_component"),cad_component_id:external_exports.string(),pcb_component_id:external_exports.string(),source_component_id:external_exports.string(),position:point3,rotation:point3.optional(),size:point3.optional(),layer:layer_ref.optional(),subcircuit_id:external_exports.string().optional(),footprinter_string:external_exports.string().optional(),model_obj_url:external_exports.string().optional(),model_stl_url:external_exports.string().optional(),model_3mf_url:external_exports.string().optional(),model_gltf_url:external_exports.string().optional(),model_glb_url:external_exports.string().optional(),model_step_url:external_exports.string().optional(),model_wrl_url:external_exports.string().optional(),model_unit_to_mm_scale_factor:external_exports.number().optional(),model_jscad:external_exports.any().optional(),show_as_translucent_model:external_exports.boolean().optional()}).describe("Defines a component on the PCB");expectTypesMatch(!0);wave_shape=external_exports.enum(["sinewave","square","triangle","sawtooth"]),percentage=external_exports.union([external_exports.string(),external_exports.number()]).transform(val=>typeof val=="string"?val.endsWith("%")?parseFloat(val.slice(0,-1))/100:parseFloat(val):val).pipe(external_exports.number().min(0,"Duty cycle must be non-negative").max(1,"Duty cycle cannot be greater than 100%")),simulation_dc_voltage_source=external_exports.object({type:external_exports.literal("simulation_voltage_source"),simulation_voltage_source_id:getZodPrefixedIdWithDefault("simulation_voltage_source"),is_dc_source:external_exports.literal(!0).optional().default(!0),positive_source_port_id:external_exports.string().optional(),negative_source_port_id:external_exports.string().optional(),positive_source_net_id:external_exports.string().optional(),negative_source_net_id:external_exports.string().optional(),voltage}).describe("Defines a DC voltage source for simulation"),simulation_ac_voltage_source=external_exports.object({type:external_exports.literal("simulation_voltage_source"),simulation_voltage_source_id:getZodPrefixedIdWithDefault("simulation_voltage_source"),is_dc_source:external_exports.literal(!1),terminal1_source_port_id:external_exports.string().optional(),terminal2_source_port_id:external_exports.string().optional(),terminal1_source_net_id:external_exports.string().optional(),terminal2_source_net_id:external_exports.string().optional(),voltage:voltage.optional(),frequency:frequency.optional(),peak_to_peak_voltage:voltage.optional(),wave_shape:wave_shape.optional(),phase:rotation.optional(),duty_cycle:percentage.optional()}).describe("Defines an AC voltage source for simulation"),simulation_voltage_source=external_exports.union([simulation_dc_voltage_source,simulation_ac_voltage_source]).describe("Defines a voltage source for simulation");expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);percentage2=external_exports.union([external_exports.string(),external_exports.number()]).transform(val=>typeof val=="string"?val.endsWith("%")?parseFloat(val.slice(0,-1))/100:parseFloat(val):val).pipe(external_exports.number().min(0,"Duty cycle must be non-negative").max(1,"Duty cycle cannot be greater than 100%")),simulation_dc_current_source=external_exports.object({type:external_exports.literal("simulation_current_source"),simulation_current_source_id:getZodPrefixedIdWithDefault("simulation_current_source"),is_dc_source:external_exports.literal(!0).optional().default(!0),positive_source_port_id:external_exports.string().optional(),negative_source_port_id:external_exports.string().optional(),positive_source_net_id:external_exports.string().optional(),negative_source_net_id:external_exports.string().optional(),current}).describe("Defines a DC current source for simulation"),simulation_ac_current_source=external_exports.object({type:external_exports.literal("simulation_current_source"),simulation_current_source_id:getZodPrefixedIdWithDefault("simulation_current_source"),is_dc_source:external_exports.literal(!1),terminal1_source_port_id:external_exports.string().optional(),terminal2_source_port_id:external_exports.string().optional(),terminal1_source_net_id:external_exports.string().optional(),terminal2_source_net_id:external_exports.string().optional(),current:current.optional(),frequency:frequency.optional(),peak_to_peak_current:current.optional(),wave_shape:wave_shape.optional(),phase:rotation.optional(),duty_cycle:percentage2.optional()}).describe("Defines an AC current source for simulation"),simulation_current_source=external_exports.union([simulation_dc_current_source,simulation_ac_current_source]).describe("Defines a current source for simulation");expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);experiment_type=external_exports.union([external_exports.literal("spice_dc_sweep"),external_exports.literal("spice_dc_operating_point"),external_exports.literal("spice_transient_analysis"),external_exports.literal("spice_ac_analysis")]),simulation_experiment=external_exports.object({type:external_exports.literal("simulation_experiment"),simulation_experiment_id:getZodPrefixedIdWithDefault("simulation_experiment"),name:external_exports.string(),experiment_type,time_per_step:duration_ms.optional(),start_time_ms:ms.optional(),end_time_ms:ms.optional()}).describe("Defines a simulation experiment configuration");expectTypesMatch(!0);simulation_transient_voltage_graph=external_exports.object({type:external_exports.literal("simulation_transient_voltage_graph"),simulation_transient_voltage_graph_id:getZodPrefixedIdWithDefault("simulation_transient_voltage_graph"),simulation_experiment_id:external_exports.string(),timestamps_ms:external_exports.array(external_exports.number()).optional(),voltage_levels:external_exports.array(external_exports.number()),source_component_id:external_exports.string().optional(),subcircuit_connectivity_map_key:external_exports.string().optional(),time_per_step:duration_ms,start_time_ms:ms,end_time_ms:ms,name:external_exports.string().optional(),color:external_exports.string().optional()}).describe("Stores voltage measurements over time for a simulation");expectTypesMatch(!0);simulation_switch=external_exports.object({type:external_exports.literal("simulation_switch"),simulation_switch_id:getZodPrefixedIdWithDefault("simulation_switch"),source_component_id:external_exports.string().optional(),closes_at:ms.optional(),opens_at:ms.optional(),starts_closed:external_exports.boolean().optional(),switching_frequency:frequency.optional()}).describe("Defines a switch for simulation timing control");expectTypesMatch(!0);simulation_voltage_probe=external_exports.object({type:external_exports.literal("simulation_voltage_probe"),simulation_voltage_probe_id:getZodPrefixedIdWithDefault("simulation_voltage_probe"),source_component_id:external_exports.string().optional(),name:external_exports.string().optional(),signal_input_source_port_id:external_exports.string().optional(),signal_input_source_net_id:external_exports.string().optional(),reference_input_source_port_id:external_exports.string().optional(),reference_input_source_net_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),color:external_exports.string().optional()}).describe("Defines a voltage probe for simulation. If a reference input is not provided, it measures against ground. If a reference input is provided, it measures the differential voltage between two points.").superRefine((data,ctx)=>{if(data.reference_input_source_port_id||data.reference_input_source_net_id){let has_ports=!!data.signal_input_source_port_id||!!data.reference_input_source_port_id,has_nets=!!data.signal_input_source_net_id||!!data.reference_input_source_net_id;has_ports&&has_nets?ctx.addIssue({code:external_exports.ZodIssueCode.custom,message:"Cannot mix port and net connections in a differential probe."}):has_ports?(!data.signal_input_source_port_id||!data.reference_input_source_port_id)&&ctx.addIssue({code:external_exports.ZodIssueCode.custom,message:"Differential port probe requires both signal_input_source_port_id and reference_input_source_port_id."}):has_nets&&(!data.signal_input_source_net_id||!data.reference_input_source_net_id)&&ctx.addIssue({code:external_exports.ZodIssueCode.custom,message:"Differential net probe requires both signal_input_source_net_id and reference_input_source_net_id."})}else!!data.signal_input_source_port_id==!!data.signal_input_source_net_id&&ctx.addIssue({code:external_exports.ZodIssueCode.custom,message:"A voltage probe must have exactly one of signal_input_source_port_id or signal_input_source_net_id."})});expectTypesMatch(!0);simulation_unknown_experiment_error=external_exports.object({type:external_exports.literal("simulation_unknown_experiment_error"),simulation_unknown_experiment_error_id:getZodPrefixedIdWithDefault("simulation_unknown_experiment_error"),error_type:external_exports.literal("simulation_unknown_experiment_error").default("simulation_unknown_experiment_error"),message:external_exports.string(),simulation_experiment_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional()}).describe("An unknown error occurred during the simulation experiment.");expectTypesMatch(!0);simulation_op_amp=external_exports.object({type:external_exports.literal("simulation_op_amp"),simulation_op_amp_id:getZodPrefixedIdWithDefault("simulation_op_amp"),source_component_id:external_exports.string().optional(),inverting_input_source_port_id:external_exports.string(),non_inverting_input_source_port_id:external_exports.string(),output_source_port_id:external_exports.string(),positive_supply_source_port_id:external_exports.string(),negative_supply_source_port_id:external_exports.string()}).describe("Defines a simple ideal operational amplifier for simulation");expectTypesMatch(!0);any_circuit_element=external_exports.union([source_trace,source_port,source_component_internal_connection,any_source_component,source_net,source_group,source_simple_chip,source_simple_capacitor,source_simple_diode,source_simple_led,source_simple_resistor,source_simple_power_source,source_simple_battery,source_simple_inductor,source_simple_pin_header,source_simple_pinout,source_simple_resonator,source_simple_switch,source_simple_transistor,source_simple_test_point,source_simple_mosfet,source_simple_op_amp,source_simple_potentiometer,source_simple_push_button,source_pcb_ground_plane,source_manually_placed_via,source_board,source_project_metadata,source_trace_not_connected_error,source_pin_missing_trace_warning,source_pin_must_be_connected_error,unknown_error_finding_part,pcb_component,pcb_hole,pcb_missing_footprint_error,external_footprint_load_error,circuit_json_footprint_load_error,pcb_manual_edit_conflict_warning,pcb_plated_hole,pcb_keepout,pcb_port,pcb_net,pcb_text,pcb_trace,pcb_via,pcb_smtpad,pcb_solder_paste,pcb_board,pcb_panel,pcb_group,pcb_trace_hint,pcb_silkscreen_line,pcb_silkscreen_path,pcb_silkscreen_text,pcb_silkscreen_pill,pcb_copper_text,pcb_silkscreen_rect,pcb_silkscreen_circle,pcb_silkscreen_oval,pcb_trace_error,pcb_trace_missing_error,pcb_placement_error,pcb_port_not_matched_error,pcb_port_not_connected_error,pcb_via_clearance_error,pcb_fabrication_note_path,pcb_fabrication_note_text,pcb_fabrication_note_rect,pcb_fabrication_note_dimension,pcb_note_text,pcb_note_rect,pcb_note_path,pcb_note_line,pcb_note_dimension,pcb_autorouting_error,pcb_footprint_overlap_error,pcb_breakout_point,pcb_cutout,pcb_ground_plane,pcb_ground_plane_region,pcb_thermal_spoke,pcb_copper_pour,pcb_component_outside_board_error,pcb_component_invalid_layer_error,pcb_courtyard_rect,pcb_courtyard_outline,pcb_courtyard_polygon,schematic_box,schematic_text,schematic_line,schematic_rect,schematic_circle,schematic_arc,schematic_component,schematic_port,schematic_trace,schematic_path,schematic_error,schematic_layout_error,schematic_net_label,schematic_debug_object,schematic_voltage_probe,schematic_manual_edit_conflict_warning,schematic_group,schematic_sheet,schematic_table,schematic_table_cell,cad_component,simulation_voltage_source,simulation_current_source,simulation_experiment,simulation_transient_voltage_graph,simulation_switch,simulation_voltage_probe,simulation_unknown_experiment_error,simulation_op_amp]),any_soup_element=any_circuit_element;expectTypesMatch(!0);expectStringUnionsMatch(!0)}});var require_ms=__commonJS({"node_modules/ms/index.js"(exports,module){"use strict";var s3=1e3,m3=s3*60,h2=m3*60,d3=h2*24,w4=d3*7,y3=d3*365.25;module.exports=function(val,options){options=options||{};var type=typeof val;if(type==="string"&&val.length>0)return parse5(val);if(type==="number"&&isFinite(val))return options.long?fmtLong(val):fmtShort(val);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(val))};function parse5(str){if(str=String(str),!(str.length>100)){var match2=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);if(match2){var n3=parseFloat(match2[1]),type=(match2[2]||"ms").toLowerCase();switch(type){case"years":case"year":case"yrs":case"yr":case"y":return n3*y3;case"weeks":case"week":case"w":return n3*w4;case"days":case"day":case"d":return n3*d3;case"hours":case"hour":case"hrs":case"hr":case"h":return n3*h2;case"minutes":case"minute":case"mins":case"min":case"m":return n3*m3;case"seconds":case"second":case"secs":case"sec":case"s":return n3*s3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n3;default:return}}}}function fmtShort(ms4){var msAbs=Math.abs(ms4);return msAbs>=d3?Math.round(ms4/d3)+"d":msAbs>=h2?Math.round(ms4/h2)+"h":msAbs>=m3?Math.round(ms4/m3)+"m":msAbs>=s3?Math.round(ms4/s3)+"s":ms4+"ms"}function fmtLong(ms4){var msAbs=Math.abs(ms4);return msAbs>=d3?plural(ms4,msAbs,d3,"day"):msAbs>=h2?plural(ms4,msAbs,h2,"hour"):msAbs>=m3?plural(ms4,msAbs,m3,"minute"):msAbs>=s3?plural(ms4,msAbs,s3,"second"):ms4+" ms"}function plural(ms4,msAbs,n3,name){var isPlural=msAbs>=n3*1.5;return Math.round(ms4/n3)+" "+name+(isPlural?"s":"")}}});var require_common=__commonJS({"node_modules/debug/src/common.js"(exports,module){"use strict";function setup(env){createDebug.debug=createDebug,createDebug.default=createDebug,createDebug.coerce=coerce2,createDebug.disable=disable,createDebug.enable=enable,createDebug.enabled=enabled,createDebug.humanize=require_ms(),createDebug.destroy=destroy,Object.keys(env).forEach(key=>{createDebug[key]=env[key]}),createDebug.names=[],createDebug.skips=[],createDebug.formatters={};function selectColor(namespace){let hash=0;for(let i3=0;i3<namespace.length;i3++)hash=(hash<<5)-hash+namespace.charCodeAt(i3),hash|=0;return createDebug.colors[Math.abs(hash)%createDebug.colors.length]}createDebug.selectColor=selectColor;function createDebug(namespace){let prevTime,enableOverride=null,namespacesCache,enabledCache;function debug18(...args){if(!debug18.enabled)return;let self2=debug18,curr=Number(new Date),ms4=curr-(prevTime||curr);self2.diff=ms4,self2.prev=prevTime,self2.curr=curr,prevTime=curr,args[0]=createDebug.coerce(args[0]),typeof args[0]!="string"&&args.unshift("%O");let index=0;args[0]=args[0].replace(/%([a-zA-Z%])/g,(match2,format)=>{if(match2==="%%")return"%";index++;let formatter=createDebug.formatters[format];if(typeof formatter=="function"){let val=args[index];match2=formatter.call(self2,val),args.splice(index,1),index--}return match2}),createDebug.formatArgs.call(self2,args),(self2.log||createDebug.log).apply(self2,args)}return debug18.namespace=namespace,debug18.useColors=createDebug.useColors(),debug18.color=createDebug.selectColor(namespace),debug18.extend=extend,debug18.destroy=createDebug.destroy,Object.defineProperty(debug18,"enabled",{enumerable:!0,configurable:!1,get:()=>enableOverride!==null?enableOverride:(namespacesCache!==createDebug.namespaces&&(namespacesCache=createDebug.namespaces,enabledCache=createDebug.enabled(namespace)),enabledCache),set:v4=>{enableOverride=v4}}),typeof createDebug.init=="function"&&createDebug.init(debug18),debug18}function extend(namespace,delimiter){let newDebug=createDebug(this.namespace+(typeof delimiter>"u"?":":delimiter)+namespace);return newDebug.log=this.log,newDebug}function enable(namespaces){createDebug.save(namespaces),createDebug.namespaces=namespaces,createDebug.names=[],createDebug.skips=[];let split=(typeof namespaces=="string"?namespaces:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let ns3 of split)ns3[0]==="-"?createDebug.skips.push(ns3.slice(1)):createDebug.names.push(ns3)}function matchesTemplate(search,template){let searchIndex=0,templateIndex=0,starIndex=-1,matchIndex=0;for(;searchIndex<search.length;)if(templateIndex<template.length&&(template[templateIndex]===search[searchIndex]||template[templateIndex]==="*"))template[templateIndex]==="*"?(starIndex=templateIndex,matchIndex=searchIndex,templateIndex++):(searchIndex++,templateIndex++);else if(starIndex!==-1)templateIndex=starIndex+1,matchIndex++,searchIndex=matchIndex;else return!1;for(;templateIndex<template.length&&template[templateIndex]==="*";)templateIndex++;return templateIndex===template.length}function disable(){let namespaces=[...createDebug.names,...createDebug.skips.map(namespace=>"-"+namespace)].join(",");return createDebug.enable(""),namespaces}function enabled(name){for(let skip of createDebug.skips)if(matchesTemplate(name,skip))return!1;for(let ns3 of createDebug.names)if(matchesTemplate(name,ns3))return!0;return!1}function coerce2(val){return val instanceof Error?val.stack||val.message:val}function destroy(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return createDebug.enable(createDebug.load()),createDebug}module.exports=setup}});var require_browser=__commonJS({"node_modules/debug/src/browser.js"(exports,module){"use strict";exports.formatArgs=formatArgs;exports.save=save;exports.load=load;exports.useColors=useColors;exports.storage=localstorage();exports.destroy=(()=>{let warned=!1;return()=>{warned||(warned=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();exports.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function useColors(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let m3;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(m3=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(m3[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function formatArgs(args){if(args[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+args[0]+(this.useColors?"%c ":" ")+"+"+module.exports.humanize(this.diff),!this.useColors)return;let c3="color: "+this.color;args.splice(1,0,c3,"color: inherit");let index=0,lastC=0;args[0].replace(/%[a-zA-Z%]/g,match2=>{match2!=="%%"&&(index++,match2==="%c"&&(lastC=index))}),args.splice(lastC,0,c3)}exports.log=console.debug||console.log||(()=>{});function save(namespaces){try{namespaces?exports.storage.setItem("debug",namespaces):exports.storage.removeItem("debug")}catch{}}function load(){let r4;try{r4=exports.storage.getItem("debug")||exports.storage.getItem("DEBUG")}catch{}return!r4&&typeof process<"u"&&"env"in process&&(r4=process.env.DEBUG),r4}function localstorage(){try{return localStorage}catch{}}module.exports=require_common()(exports);var{formatters}=module.exports;formatters.j=function(v4){try{return JSON.stringify(v4)}catch(error){return"[UnexpectedJSONParseError]: "+error.message}}}});var require_scheduler_development=__commonJS({"node_modules/react-reconciler/node_modules/scheduler/cjs/scheduler.development.js"(exports){"use strict";(function(){function performWorkUntilDeadline(){if(needsPaint=!1,isMessageLoopRunning){var currentTime=exports.unstable_now();startTime=currentTime;var hasMoreWork=!0;try{a:{isHostCallbackScheduled=!1,isHostTimeoutScheduled&&(isHostTimeoutScheduled=!1,localClearTimeout(taskTimeoutID),taskTimeoutID=-1),isPerformingWork=!0;var previousPriorityLevel=currentPriorityLevel;try{b:{for(advanceTimers(currentTime),currentTask=peek(taskQueue);currentTask!==null&&!(currentTask.expirationTime>currentTime&&shouldYieldToHost());){var callback=currentTask.callback;if(typeof callback=="function"){currentTask.callback=null,currentPriorityLevel=currentTask.priorityLevel;var continuationCallback=callback(currentTask.expirationTime<=currentTime);if(currentTime=exports.unstable_now(),typeof continuationCallback=="function"){currentTask.callback=continuationCallback,advanceTimers(currentTime),hasMoreWork=!0;break b}currentTask===peek(taskQueue)&&pop(taskQueue),advanceTimers(currentTime)}else pop(taskQueue);currentTask=peek(taskQueue)}if(currentTask!==null)hasMoreWork=!0;else{var firstTimer=peek(timerQueue);firstTimer!==null&&requestHostTimeout(handleTimeout,firstTimer.startTime-currentTime),hasMoreWork=!1}}break a}finally{currentTask=null,currentPriorityLevel=previousPriorityLevel,isPerformingWork=!1}hasMoreWork=void 0}}finally{hasMoreWork?schedulePerformWorkUntilDeadline():isMessageLoopRunning=!1}}}function push(heap,node){var index=heap.length;heap.push(node);a:for(;0<index;){var parentIndex=index-1>>>1,parent=heap[parentIndex];if(0<compare(parent,node))heap[parentIndex]=node,heap[index]=parent,index=parentIndex;else break a}}function peek(heap){return heap.length===0?null:heap[0]}function pop(heap){if(heap.length===0)return null;var first=heap[0],last=heap.pop();if(last!==first){heap[0]=last;a:for(var index=0,length3=heap.length,halfLength=length3>>>1;index<halfLength;){var leftIndex=2*(index+1)-1,left=heap[leftIndex],rightIndex=leftIndex+1,right=heap[rightIndex];if(0>compare(left,last))rightIndex<length3&&0>compare(right,left)?(heap[index]=right,heap[rightIndex]=last,index=rightIndex):(heap[index]=left,heap[leftIndex]=last,index=leftIndex);else if(rightIndex<length3&&0>compare(right,last))heap[index]=right,heap[rightIndex]=last,index=rightIndex;else break a}}return first}function compare(a2,b3){var diff=a2.sortIndex-b3.sortIndex;return diff!==0?diff:a2.id-b3.id}function advanceTimers(currentTime){for(var timer=peek(timerQueue);timer!==null;){if(timer.callback===null)pop(timerQueue);else if(timer.startTime<=currentTime)pop(timerQueue),timer.sortIndex=timer.expirationTime,push(taskQueue,timer);else break;timer=peek(timerQueue)}}function handleTimeout(currentTime){if(isHostTimeoutScheduled=!1,advanceTimers(currentTime),!isHostCallbackScheduled)if(peek(taskQueue)!==null)isHostCallbackScheduled=!0,isMessageLoopRunning||(isMessageLoopRunning=!0,schedulePerformWorkUntilDeadline());else{var firstTimer=peek(timerQueue);firstTimer!==null&&requestHostTimeout(handleTimeout,firstTimer.startTime-currentTime)}}function shouldYieldToHost(){return needsPaint?!0:!(exports.unstable_now()-startTime<frameInterval)}function requestHostTimeout(callback,ms4){taskTimeoutID=localSetTimeout(function(){callback(exports.unstable_now())},ms4)}if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()),exports.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var localPerformance=performance;exports.unstable_now=function(){return localPerformance.now()}}else{var localDate=Date,initialTime=localDate.now();exports.unstable_now=function(){return localDate.now()-initialTime}}var taskQueue=[],timerQueue=[],taskIdCounter=1,currentTask=null,currentPriorityLevel=3,isPerformingWork=!1,isHostCallbackScheduled=!1,isHostTimeoutScheduled=!1,needsPaint=!1,localSetTimeout=typeof setTimeout=="function"?setTimeout:null,localClearTimeout=typeof clearTimeout=="function"?clearTimeout:null,localSetImmediate=typeof setImmediate<"u"?setImmediate:null,isMessageLoopRunning=!1,taskTimeoutID=-1,frameInterval=5,startTime=-1;if(typeof localSetImmediate=="function")var schedulePerformWorkUntilDeadline=function(){localSetImmediate(performWorkUntilDeadline)};else if(typeof MessageChannel<"u"){var channel=new MessageChannel,port=channel.port2;channel.port1.onmessage=performWorkUntilDeadline,schedulePerformWorkUntilDeadline=function(){port.postMessage(null)}}else schedulePerformWorkUntilDeadline=function(){localSetTimeout(performWorkUntilDeadline,0)};exports.unstable_IdlePriority=5,exports.unstable_ImmediatePriority=1,exports.unstable_LowPriority=4,exports.unstable_NormalPriority=3,exports.unstable_Profiling=null,exports.unstable_UserBlockingPriority=2,exports.unstable_cancelCallback=function(task){task.callback=null},exports.unstable_forceFrameRate=function(fps){0>fps||125<fps?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):frameInterval=0<fps?Math.floor(1e3/fps):5},exports.unstable_getCurrentPriorityLevel=function(){return currentPriorityLevel},exports.unstable_next=function(eventHandler){switch(currentPriorityLevel){case 1:case 2:case 3:var priorityLevel=3;break;default:priorityLevel=currentPriorityLevel}var previousPriorityLevel=currentPriorityLevel;currentPriorityLevel=priorityLevel;try{return eventHandler()}finally{currentPriorityLevel=previousPriorityLevel}},exports.unstable_requestPaint=function(){needsPaint=!0},exports.unstable_runWithPriority=function(priorityLevel,eventHandler){switch(priorityLevel){case 1:case 2:case 3:case 4:case 5:break;default:priorityLevel=3}var previousPriorityLevel=currentPriorityLevel;currentPriorityLevel=priorityLevel;try{return eventHandler()}finally{currentPriorityLevel=previousPriorityLevel}},exports.unstable_scheduleCallback=function(priorityLevel,callback,options){var currentTime=exports.unstable_now();switch(typeof options=="object"&&options!==null?(options=options.delay,options=typeof options=="number"&&0<options?currentTime+options:currentTime):options=currentTime,priorityLevel){case 1:var timeout=-1;break;case 2:timeout=250;break;case 5:timeout=1073741823;break;case 4:timeout=1e4;break;default:timeout=5e3}return timeout=options+timeout,priorityLevel={id:taskIdCounter++,callback,priorityLevel,startTime:options,expirationTime:timeout,sortIndex:-1},options>currentTime?(priorityLevel.sortIndex=options,push(timerQueue,priorityLevel),peek(taskQueue)===null&&priorityLevel===peek(timerQueue)&&(isHostTimeoutScheduled?(localClearTimeout(taskTimeoutID),taskTimeoutID=-1):isHostTimeoutScheduled=!0,requestHostTimeout(handleTimeout,options-currentTime))):(priorityLevel.sortIndex=timeout,push(taskQueue,priorityLevel),isHostCallbackScheduled||isPerformingWork||(isHostCallbackScheduled=!0,isMessageLoopRunning||(isMessageLoopRunning=!0,schedulePerformWorkUntilDeadline()))),priorityLevel},exports.unstable_shouldYield=shouldYieldToHost,exports.unstable_wrapCallback=function(callback){var parentPriorityLevel=currentPriorityLevel;return function(){var previousPriorityLevel=currentPriorityLevel;currentPriorityLevel=parentPriorityLevel;try{return callback.apply(this,arguments)}finally{currentPriorityLevel=previousPriorityLevel}}},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()}});var require_scheduler=__commonJS({"node_modules/react-reconciler/node_modules/scheduler/index.js"(exports,module){"use strict";module.exports=require_scheduler_development()}});var require_react_reconciler_development=__commonJS({"node_modules/react-reconciler/cjs/react-reconciler.development.js"(exports,module){"use strict";module.exports=function($$$config){function findHook(fiber,id2){for(fiber=fiber.memoizedState;fiber!==null&&0<id2;)fiber=fiber.next,id2--;return fiber}function copyWithSetImpl(obj,path,index,value){if(index>=path.length)return value;var key=path[index],updated=isArrayImpl(obj)?obj.slice():assign({},obj);return updated[key]=copyWithSetImpl(obj[key],path,index+1,value),updated}function copyWithRename(obj,oldPath,newPath){if(oldPath.length!==newPath.length)console.warn("copyWithRename() expects paths of the same length");else{for(var i3=0;i3<newPath.length-1;i3++)if(oldPath[i3]!==newPath[i3]){console.warn("copyWithRename() expects paths to be the same except for the deepest key");return}return copyWithRenameImpl(obj,oldPath,newPath,0)}}function copyWithRenameImpl(obj,oldPath,newPath,index){var oldKey=oldPath[index],updated=isArrayImpl(obj)?obj.slice():assign({},obj);return index+1===oldPath.length?(updated[newPath[index]]=updated[oldKey],isArrayImpl(updated)?updated.splice(oldKey,1):delete updated[oldKey]):updated[oldKey]=copyWithRenameImpl(obj[oldKey],oldPath,newPath,index+1),updated}function copyWithDeleteImpl(obj,path,index){var key=path[index],updated=isArrayImpl(obj)?obj.slice():assign({},obj);return index+1===path.length?(isArrayImpl(updated)?updated.splice(key,1):delete updated[key],updated):(updated[key]=copyWithDeleteImpl(obj[key],path,index+1),updated)}function shouldSuspendImpl(){return!1}function shouldErrorImpl(){return null}function createFiber(tag,pendingProps,key,mode){return new FiberNode(tag,pendingProps,key,mode)}function scheduleRoot(root,element){root.context===emptyContextObject&&(updateContainerSync(element,root,null,null),flushSyncWork())}function scheduleRefresh(root,update){if(resolveFamily!==null){var staleFamilies=update.staleFamilies;update=update.updatedFamilies,flushPendingEffects(),scheduleFibersWithFamiliesRecursively(root.current,update,staleFamilies),flushSyncWork()}}function setRefreshHandler(handler){resolveFamily=handler}function warnForMissingKey(){}function warnInvalidHookAccess(){console.error("Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. You can only call Hooks at the top level of your React function. For more information, see https://react.dev/link/rules-of-hooks")}function warnInvalidContextAccess(){console.error("Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().")}function noop(){}function setToSortedString(set){var array2=[];return set.forEach(function(value){array2.push(value)}),array2.sort().join(", ")}function getNearestMountedFiber(fiber){var node=fiber,nearestMounted=fiber;if(fiber.alternate)for(;node.return;)node=node.return;else{fiber=node;do node=fiber,(node.flags&4098)!==0&&(nearestMounted=node.return),fiber=node.return;while(fiber)}return node.tag===3?nearestMounted:null}function assertIsMounted(fiber){if(getNearestMountedFiber(fiber)!==fiber)throw Error("Unable to find node on an unmounted component.")}function findCurrentFiberUsingSlowPath(fiber){var alternate=fiber.alternate;if(!alternate){if(alternate=getNearestMountedFiber(fiber),alternate===null)throw Error("Unable to find node on an unmounted component.");return alternate!==fiber?null:fiber}for(var a2=fiber,b3=alternate;;){var parentA=a2.return;if(parentA===null)break;var parentB=parentA.alternate;if(parentB===null){if(b3=parentA.return,b3!==null){a2=b3;continue}break}if(parentA.child===parentB.child){for(parentB=parentA.child;parentB;){if(parentB===a2)return assertIsMounted(parentA),fiber;if(parentB===b3)return assertIsMounted(parentA),alternate;parentB=parentB.sibling}throw Error("Unable to find node on an unmounted component.")}if(a2.return!==b3.return)a2=parentA,b3=parentB;else{for(var didFindChild=!1,_child=parentA.child;_child;){if(_child===a2){didFindChild=!0,a2=parentA,b3=parentB;break}if(_child===b3){didFindChild=!0,b3=parentA,a2=parentB;break}_child=_child.sibling}if(!didFindChild){for(_child=parentB.child;_child;){if(_child===a2){didFindChild=!0,a2=parentB,b3=parentA;break}if(_child===b3){didFindChild=!0,b3=parentB,a2=parentA;break}_child=_child.sibling}if(!didFindChild)throw Error("Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.")}}if(a2.alternate!==b3)throw Error("Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.")}if(a2.tag!==3)throw Error("Unable to find node on an unmounted component.");return a2.stateNode.current===a2?fiber:alternate}function findCurrentHostFiber(parent){return parent=findCurrentFiberUsingSlowPath(parent),parent!==null?findCurrentHostFiberImpl(parent):null}function findCurrentHostFiberImpl(node){var tag=node.tag;if(tag===5||tag===26||tag===27||tag===6)return node;for(node=node.child;node!==null;){if(tag=findCurrentHostFiberImpl(node),tag!==null)return tag;node=node.sibling}return null}function findCurrentHostFiberWithNoPortalsImpl(node){var tag=node.tag;if(tag===5||tag===26||tag===27||tag===6)return node;for(node=node.child;node!==null;){if(node.tag!==4&&(tag=findCurrentHostFiberWithNoPortalsImpl(node),tag!==null))return tag;node=node.sibling}return null}function getIteratorFn(maybeIterable){return maybeIterable===null||typeof maybeIterable!="object"?null:(maybeIterable=MAYBE_ITERATOR_SYMBOL&&maybeIterable[MAYBE_ITERATOR_SYMBOL]||maybeIterable["@@iterator"],typeof maybeIterable=="function"?maybeIterable:null)}function getComponentNameFromType(type){if(type==null)return null;if(typeof type=="function")return type.$$typeof===REACT_CLIENT_REFERENCE?null:type.displayName||type.name||null;if(typeof type=="string")return type;switch(type){case REACT_FRAGMENT_TYPE:return"Fragment";case REACT_PROFILER_TYPE:return"Profiler";case REACT_STRICT_MODE_TYPE:return"StrictMode";case REACT_SUSPENSE_TYPE:return"Suspense";case REACT_SUSPENSE_LIST_TYPE:return"SuspenseList";case REACT_ACTIVITY_TYPE:return"Activity"}if(typeof type=="object")switch(typeof type.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),type.$$typeof){case REACT_PORTAL_TYPE:return"Portal";case REACT_CONTEXT_TYPE:return(type.displayName||"Context")+".Provider";case REACT_CONSUMER_TYPE:return(type._context.displayName||"Context")+".Consumer";case REACT_FORWARD_REF_TYPE:var innerType=type.render;return type=type.displayName,type||(type=innerType.displayName||innerType.name||"",type=type!==""?"ForwardRef("+type+")":"ForwardRef"),type;case REACT_MEMO_TYPE:return innerType=type.displayName||null,innerType!==null?innerType:getComponentNameFromType(type.type)||"Memo";case REACT_LAZY_TYPE:innerType=type._payload,type=type._init;try{return getComponentNameFromType(type(innerType))}catch{}}return null}function getComponentNameFromFiber(fiber){var type=fiber.type;switch(fiber.tag){case 31:return"Activity";case 24:return"Cache";case 9:return(type._context.displayName||"Context")+".Consumer";case 10:return(type.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return fiber=type.render,fiber=fiber.displayName||fiber.name||"",type.displayName||(fiber!==""?"ForwardRef("+fiber+")":"ForwardRef");case 7:return"Fragment";case 26:case 27:case 5:return type;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return getComponentNameFromType(type);case 8:return type===REACT_STRICT_MODE_TYPE?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 14:case 15:if(typeof type=="function")return type.displayName||type.name||null;if(typeof type=="string")return type;break;case 29:if(type=fiber._debugInfo,type!=null){for(var i3=type.length-1;0<=i3;i3--)if(typeof type[i3].name=="string")return type[i3].name}if(fiber.return!==null)return getComponentNameFromFiber(fiber.return)}return null}function createCursor(defaultValue){return{current:defaultValue}}function pop(cursor,fiber){0>index$jscomp$0?console.error("Unexpected pop."):(fiber!==fiberStack[index$jscomp$0]&&console.error("Unexpected Fiber popped."),cursor.current=valueStack[index$jscomp$0],valueStack[index$jscomp$0]=null,fiberStack[index$jscomp$0]=null,index$jscomp$0--)}function push(cursor,value,fiber){index$jscomp$0++,valueStack[index$jscomp$0]=cursor.current,fiberStack[index$jscomp$0]=fiber,cursor.current=value}function clz32Fallback(x3){return x3>>>=0,x3===0?32:31-(log$1(x3)/LN2|0)|0}function getLabelForLane(lane){if(lane&1)return"SyncHydrationLane";if(lane&2)return"Sync";if(lane&4)return"InputContinuousHydration";if(lane&8)return"InputContinuous";if(lane&16)return"DefaultHydration";if(lane&32)return"Default";if(lane&128)return"TransitionHydration";if(lane&4194048)return"Transition";if(lane&62914560)return"Retry";if(lane&67108864)return"SelectiveHydration";if(lane&134217728)return"IdleHydration";if(lane&268435456)return"Idle";if(lane&536870912)return"Offscreen";if(lane&1073741824)return"Deferred"}function getHighestPriorityLanes(lanes){var pendingSyncLanes=lanes&42;if(pendingSyncLanes!==0)return pendingSyncLanes;switch(lanes&-lanes){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return lanes&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return lanes&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return console.error("Should have found matching lanes. This is a bug in React."),lanes}}function getNextLanes(root,wipLanes,rootHasPendingCommit){var pendingLanes=root.pendingLanes;if(pendingLanes===0)return 0;var nextLanes=0,suspendedLanes=root.suspendedLanes,pingedLanes=root.pingedLanes;root=root.warmLanes;var nonIdlePendingLanes=pendingLanes&134217727;return nonIdlePendingLanes!==0?(pendingLanes=nonIdlePendingLanes&~suspendedLanes,pendingLanes!==0?nextLanes=getHighestPriorityLanes(pendingLanes):(pingedLanes&=nonIdlePendingLanes,pingedLanes!==0?nextLanes=getHighestPriorityLanes(pingedLanes):rootHasPendingCommit||(rootHasPendingCommit=nonIdlePendingLanes&~root,rootHasPendingCommit!==0&&(nextLanes=getHighestPriorityLanes(rootHasPendingCommit))))):(nonIdlePendingLanes=pendingLanes&~suspendedLanes,nonIdlePendingLanes!==0?nextLanes=getHighestPriorityLanes(nonIdlePendingLanes):pingedLanes!==0?nextLanes=getHighestPriorityLanes(pingedLanes):rootHasPendingCommit||(rootHasPendingCommit=pendingLanes&~root,rootHasPendingCommit!==0&&(nextLanes=getHighestPriorityLanes(rootHasPendingCommit)))),nextLanes===0?0:wipLanes!==0&&wipLanes!==nextLanes&&(wipLanes&suspendedLanes)===0&&(suspendedLanes=nextLanes&-nextLanes,rootHasPendingCommit=wipLanes&-wipLanes,suspendedLanes>=rootHasPendingCommit||suspendedLanes===32&&(rootHasPendingCommit&4194048)!==0)?wipLanes:nextLanes}function checkIfRootIsPrerendering(root,renderLanes2){return(root.pendingLanes&~(root.suspendedLanes&~root.pingedLanes)&renderLanes2)===0}function computeExpirationTime(lane,currentTime){switch(lane){case 1:case 2:case 4:case 8:case 64:return currentTime+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return currentTime+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return console.error("Should have found matching lanes. This is a bug in React."),-1}}function claimNextTransitionLane(){var lane=nextTransitionLane;return nextTransitionLane<<=1,(nextTransitionLane&4194048)===0&&(nextTransitionLane=256),lane}function claimNextRetryLane(){var lane=nextRetryLane;return nextRetryLane<<=1,(nextRetryLane&62914560)===0&&(nextRetryLane=4194304),lane}function createLaneMap(initial){for(var laneMap=[],i3=0;31>i3;i3++)laneMap.push(initial);return laneMap}function markRootUpdated$1(root,updateLane){root.pendingLanes|=updateLane,updateLane!==268435456&&(root.suspendedLanes=0,root.pingedLanes=0,root.warmLanes=0)}function markRootFinished(root,finishedLanes,remainingLanes,spawnedLane,updatedLanes,suspendedRetryLanes){var previouslyPendingLanes=root.pendingLanes;root.pendingLanes=remainingLanes,root.suspendedLanes=0,root.pingedLanes=0,root.warmLanes=0,root.expiredLanes&=remainingLanes,root.entangledLanes&=remainingLanes,root.errorRecoveryDisabledLanes&=remainingLanes,root.shellSuspendCounter=0;var entanglements=root.entanglements,expirationTimes=root.expirationTimes,hiddenUpdates=root.hiddenUpdates;for(remainingLanes=previouslyPendingLanes&~remainingLanes;0<remainingLanes;){var index=31-clz32(remainingLanes),lane=1<<index;entanglements[index]=0,expirationTimes[index]=-1;var hiddenUpdatesForLane=hiddenUpdates[index];if(hiddenUpdatesForLane!==null)for(hiddenUpdates[index]=null,index=0;index<hiddenUpdatesForLane.length;index++){var update=hiddenUpdatesForLane[index];update!==null&&(update.lane&=-536870913)}remainingLanes&=~lane}spawnedLane!==0&&markSpawnedDeferredLane(root,spawnedLane,0),suspendedRetryLanes!==0&&updatedLanes===0&&root.tag!==0&&(root.suspendedLanes|=suspendedRetryLanes&~(previouslyPendingLanes&~finishedLanes))}function markSpawnedDeferredLane(root,spawnedLane,entangledLanes){root.pendingLanes|=spawnedLane,root.suspendedLanes&=~spawnedLane;var spawnedLaneIndex=31-clz32(spawnedLane);root.entangledLanes|=spawnedLane,root.entanglements[spawnedLaneIndex]=root.entanglements[spawnedLaneIndex]|1073741824|entangledLanes&4194090}function markRootEntangled(root,entangledLanes){var rootEntangledLanes=root.entangledLanes|=entangledLanes;for(root=root.entanglements;rootEntangledLanes;){var index=31-clz32(rootEntangledLanes),lane=1<<index;lane&entangledLanes|root[index]&entangledLanes&&(root[index]|=entangledLanes),rootEntangledLanes&=~lane}}function getBumpedLaneForHydrationByLane(lane){switch(lane){case 2:lane=1;break;case 8:lane=4;break;case 32:lane=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:lane=128;break;case 268435456:lane=134217728;break;default:lane=0}return lane}function addFiberToLanesMap(root,fiber,lanes){if(isDevToolsPresent)for(root=root.pendingUpdatersLaneMap;0<lanes;){var index=31-clz32(lanes),lane=1<<index;root[index].add(fiber),lanes&=~lane}}function movePendingFibersToMemoized(root,lanes){if(isDevToolsPresent)for(var pendingUpdatersLaneMap=root.pendingUpdatersLaneMap,memoizedUpdaters=root.memoizedUpdaters;0<lanes;){var index=31-clz32(lanes);root=1<<index,index=pendingUpdatersLaneMap[index],0<index.size&&(index.forEach(function(fiber){var alternate=fiber.alternate;alternate!==null&&memoizedUpdaters.has(alternate)||memoizedUpdaters.add(fiber)}),index.clear()),lanes&=~root}}function lanesToEventPriority(lanes){return lanes&=-lanes,2<lanes?8<lanes?(lanes&134217727)!==0?32:268435456:8:2}function injectInternals(internals){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")return!1;var hook=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(hook.isDisabled)return!0;if(!hook.supportsFiber)return console.error("The installed version of React DevTools is too old and will not work with the current version of React. Please update React DevTools. https://react.dev/link/react-devtools"),!0;try{rendererID=hook.inject(internals),injectedHook=hook}catch(err){console.error("React instrumentation encountered an error: %s.",err)}return!!hook.checkDCE}function setIsStrictModeForDevtools(newIsStrictMode){if(typeof log=="function"&&unstable_setDisableYieldValue(newIsStrictMode),injectedHook&&typeof injectedHook.setStrictMode=="function")try{injectedHook.setStrictMode(rendererID,newIsStrictMode)}catch(err){hasLoggedError||(hasLoggedError=!0,console.error("React instrumentation encountered an error: %s",err))}}function injectProfilingHooks(profilingHooks){injectedProfilingHooks=profilingHooks}function markCommitStopped(){injectedProfilingHooks!==null&&typeof injectedProfilingHooks.markCommitStopped=="function"&&injectedProfilingHooks.markCommitStopped()}function markComponentRenderStarted(fiber){injectedProfilingHooks!==null&&typeof injectedProfilingHooks.markComponentRenderStarted=="function"&&injectedProfilingHooks.markComponentRenderStarted(fiber)}function markComponentRenderStopped(){injectedProfilingHooks!==null&&typeof injectedProfilingHooks.markComponentRenderStopped=="function"&&injectedProfilingHooks.markComponentRenderStopped()}function markRenderStarted(lanes){injectedProfilingHooks!==null&&typeof injectedProfilingHooks.markRenderStarted=="function"&&injectedProfilingHooks.markRenderStarted(lanes)}function markRenderStopped(){injectedProfilingHooks!==null&&typeof injectedProfilingHooks.markRenderStopped=="function"&&injectedProfilingHooks.markRenderStopped()}function markStateUpdateScheduled(fiber,lane){injectedProfilingHooks!==null&&typeof injectedProfilingHooks.markStateUpdateScheduled=="function"&&injectedProfilingHooks.markStateUpdateScheduled(fiber,lane)}function disabledLog(){}function disableLogs(){if(disabledDepth===0){prevLog=console.log,prevInfo=console.info,prevWarn=console.warn,prevError=console.error,prevGroup=console.group,prevGroupCollapsed=console.groupCollapsed,prevGroupEnd=console.groupEnd;var props={configurable:!0,enumerable:!0,value:disabledLog,writable:!0};Object.defineProperties(console,{info:props,log:props,warn:props,error:props,group:props,groupCollapsed:props,groupEnd:props})}disabledDepth++}function reenableLogs(){if(disabledDepth--,disabledDepth===0){var props={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:assign({},props,{value:prevLog}),info:assign({},props,{value:prevInfo}),warn:assign({},props,{value:prevWarn}),error:assign({},props,{value:prevError}),group:assign({},props,{value:prevGroup}),groupCollapsed:assign({},props,{value:prevGroupCollapsed}),groupEnd:assign({},props,{value:prevGroupEnd})})}0>disabledDepth&&console.error("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}function describeBuiltInComponentFrame(name){if(prefix===void 0)try{throw Error()}catch(x3){var match2=x3.stack.trim().match(/\n( *(at )?)/);prefix=match2&&match2[1]||"",suffix=-1<x3.stack.indexOf(`
13
+ See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),dispatcher}function releaseAsyncTransition(){ReactSharedInternals.asyncTransitions--}function enqueueTask(task){if(enqueueTaskImpl===null)try{var requireString=("require"+Math.random()).slice(0,7);enqueueTaskImpl=(module&&module[requireString]).call(module,"timers").setImmediate}catch{enqueueTaskImpl=function(callback){didWarnAboutMessageChannel===!1&&(didWarnAboutMessageChannel=!0,typeof MessageChannel>"u"&&console.error("This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."));var channel=new MessageChannel;channel.port1.onmessage=callback,channel.port2.postMessage(void 0)}}return enqueueTaskImpl(task)}function aggregateErrors(errors){return 1<errors.length&&typeof AggregateError=="function"?new AggregateError(errors):errors[0]}function popActScope(prevActQueue,prevActScopeDepth){prevActScopeDepth!==actScopeDepth-1&&console.error("You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. "),actScopeDepth=prevActScopeDepth}function recursivelyFlushAsyncActWork(returnValue,resolve,reject){var queue=ReactSharedInternals.actQueue;if(queue!==null)if(queue.length!==0)try{flushActQueue(queue),enqueueTask(function(){return recursivelyFlushAsyncActWork(returnValue,resolve,reject)});return}catch(error){ReactSharedInternals.thrownErrors.push(error)}else ReactSharedInternals.actQueue=null;0<ReactSharedInternals.thrownErrors.length?(queue=aggregateErrors(ReactSharedInternals.thrownErrors),ReactSharedInternals.thrownErrors.length=0,reject(queue)):resolve(returnValue)}function flushActQueue(queue){if(!isFlushing){isFlushing=!0;var i3=0;try{for(;i3<queue.length;i3++){var callback=queue[i3];do{ReactSharedInternals.didUsePromise=!1;var continuation=callback(!1);if(continuation!==null){if(ReactSharedInternals.didUsePromise){queue[i3]=callback,queue.splice(0,i3);return}callback=continuation}else break}while(!0)}queue.length=0}catch(error){queue.splice(0,i3+1),ReactSharedInternals.thrownErrors.push(error)}finally{isFlushing=!1}}}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element"),REACT_PORTAL_TYPE=Symbol.for("react.portal"),REACT_FRAGMENT_TYPE=Symbol.for("react.fragment"),REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode"),REACT_PROFILER_TYPE=Symbol.for("react.profiler"),REACT_CONSUMER_TYPE=Symbol.for("react.consumer"),REACT_CONTEXT_TYPE=Symbol.for("react.context"),REACT_FORWARD_REF_TYPE=Symbol.for("react.forward_ref"),REACT_SUSPENSE_TYPE=Symbol.for("react.suspense"),REACT_SUSPENSE_LIST_TYPE=Symbol.for("react.suspense_list"),REACT_MEMO_TYPE=Symbol.for("react.memo"),REACT_LAZY_TYPE=Symbol.for("react.lazy"),REACT_ACTIVITY_TYPE=Symbol.for("react.activity"),MAYBE_ITERATOR_SYMBOL=Symbol.iterator,didWarnStateUpdateForUnmountedComponent={},ReactNoopUpdateQueue={isMounted:function(){return!1},enqueueForceUpdate:function(publicInstance){warnNoop(publicInstance,"forceUpdate")},enqueueReplaceState:function(publicInstance){warnNoop(publicInstance,"replaceState")},enqueueSetState:function(publicInstance){warnNoop(publicInstance,"setState")}},assign=Object.assign,emptyObject={};Object.freeze(emptyObject),Component.prototype.isReactComponent={},Component.prototype.setState=function(partialState,callback){if(typeof partialState!="object"&&typeof partialState!="function"&&partialState!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,partialState,callback,"setState")},Component.prototype.forceUpdate=function(callback){this.updater.enqueueForceUpdate(this,callback,"forceUpdate")};var deprecatedAPIs={isMounted:["isMounted","Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."],replaceState:["replaceState","Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."]};for(fnName in deprecatedAPIs)deprecatedAPIs.hasOwnProperty(fnName)&&defineDeprecationWarning(fnName,deprecatedAPIs[fnName]);ComponentDummy.prototype=Component.prototype,deprecatedAPIs=PureComponent.prototype=new ComponentDummy,deprecatedAPIs.constructor=PureComponent,assign(deprecatedAPIs,Component.prototype),deprecatedAPIs.isPureReactComponent=!0;var isArrayImpl=Array.isArray,REACT_CLIENT_REFERENCE=Symbol.for("react.client.reference"),ReactSharedInternals={H:null,A:null,T:null,S:null,actQueue:null,asyncTransitions:0,isBatchingLegacy:!1,didScheduleLegacyUpdate:!1,didUsePromise:!1,thrownErrors:[],getCurrentStack:null,recentlyCreatedOwnerStacks:0},hasOwnProperty=Object.prototype.hasOwnProperty,createTask=console.createTask?console.createTask:function(){return null};deprecatedAPIs={react_stack_bottom_frame:function(callStackForError){return callStackForError()}};var specialPropKeyWarningShown,didWarnAboutOldJSXRuntime,didWarnAboutElementRef={},unknownOwnerDebugStack=deprecatedAPIs.react_stack_bottom_frame.bind(deprecatedAPIs,UnknownOwner)(),unknownOwnerDebugTask=createTask(getTaskName(UnknownOwner)),didWarnAboutMaps=!1,userProvidedKeyEscapeRegex=/\/+/g,reportGlobalError=typeof reportError=="function"?reportError:function(error){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var event=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof error=="object"&&error!==null&&typeof error.message=="string"?String(error.message):String(error),error});if(!window.dispatchEvent(event))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",error);return}console.error(error)},didWarnAboutMessageChannel=!1,enqueueTaskImpl=null,actScopeDepth=0,didWarnNoAwaitAct=!1,isFlushing=!1,queueSeveralMicrotasks=typeof queueMicrotask=="function"?function(callback){queueMicrotask(function(){return queueMicrotask(callback)})}:enqueueTask;deprecatedAPIs=Object.freeze({__proto__:null,c:function(size2){return resolveDispatcher().useMemoCache(size2)}});var fnName={map:mapChildren,forEach:function(children,forEachFunc,forEachContext){mapChildren(children,function(){forEachFunc.apply(this,arguments)},forEachContext)},count:function(children){var n3=0;return mapChildren(children,function(){n3++}),n3},toArray:function(children){return mapChildren(children,function(child){return child})||[]},only:function(children){if(!isValidElement3(children))throw Error("React.Children.only expected to receive a single React element child.");return children}};exports.Activity=REACT_ACTIVITY_TYPE,exports.Children=fnName,exports.Component=Component,exports.Fragment=REACT_FRAGMENT_TYPE,exports.Profiler=REACT_PROFILER_TYPE,exports.PureComponent=PureComponent,exports.StrictMode=REACT_STRICT_MODE_TYPE,exports.Suspense=REACT_SUSPENSE_TYPE,exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=ReactSharedInternals,exports.__COMPILER_RUNTIME=deprecatedAPIs,exports.act=function(callback){var prevActQueue=ReactSharedInternals.actQueue,prevActScopeDepth=actScopeDepth;actScopeDepth++;var queue=ReactSharedInternals.actQueue=prevActQueue!==null?prevActQueue:[],didAwaitActCall=!1;try{var result=callback()}catch(error){ReactSharedInternals.thrownErrors.push(error)}if(0<ReactSharedInternals.thrownErrors.length)throw popActScope(prevActQueue,prevActScopeDepth),callback=aggregateErrors(ReactSharedInternals.thrownErrors),ReactSharedInternals.thrownErrors.length=0,callback;if(result!==null&&typeof result=="object"&&typeof result.then=="function"){var thenable=result;return queueSeveralMicrotasks(function(){didAwaitActCall||didWarnNoAwaitAct||(didWarnNoAwaitAct=!0,console.error("You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"))}),{then:function(resolve,reject){didAwaitActCall=!0,thenable.then(function(returnValue){if(popActScope(prevActQueue,prevActScopeDepth),prevActScopeDepth===0){try{flushActQueue(queue),enqueueTask(function(){return recursivelyFlushAsyncActWork(returnValue,resolve,reject)})}catch(error$0){ReactSharedInternals.thrownErrors.push(error$0)}if(0<ReactSharedInternals.thrownErrors.length){var _thrownError=aggregateErrors(ReactSharedInternals.thrownErrors);ReactSharedInternals.thrownErrors.length=0,reject(_thrownError)}}else resolve(returnValue)},function(error){popActScope(prevActQueue,prevActScopeDepth),0<ReactSharedInternals.thrownErrors.length&&(error=aggregateErrors(ReactSharedInternals.thrownErrors),ReactSharedInternals.thrownErrors.length=0),reject(error)})}}}var returnValue$jscomp$0=result;if(popActScope(prevActQueue,prevActScopeDepth),prevActScopeDepth===0&&(flushActQueue(queue),queue.length!==0&&queueSeveralMicrotasks(function(){didAwaitActCall||didWarnNoAwaitAct||(didWarnNoAwaitAct=!0,console.error("A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\n\nawait act(() => ...)"))}),ReactSharedInternals.actQueue=null),0<ReactSharedInternals.thrownErrors.length)throw callback=aggregateErrors(ReactSharedInternals.thrownErrors),ReactSharedInternals.thrownErrors.length=0,callback;return{then:function(resolve,reject){didAwaitActCall=!0,prevActScopeDepth===0?(ReactSharedInternals.actQueue=queue,enqueueTask(function(){return recursivelyFlushAsyncActWork(returnValue$jscomp$0,resolve,reject)})):resolve(returnValue$jscomp$0)}}},exports.cache=function(fn3){return function(){return fn3.apply(null,arguments)}},exports.cacheSignal=function(){return null},exports.captureOwnerStack=function(){var getCurrentStack=ReactSharedInternals.getCurrentStack;return getCurrentStack===null?null:getCurrentStack()},exports.cloneElement=function(element,config,children){if(element==null)throw Error("The argument must be a React element, but you passed "+element+".");var props=assign({},element.props),key=element.key,owner=element._owner;if(config!=null){var JSCompiler_inline_result;a:{if(hasOwnProperty.call(config,"ref")&&(JSCompiler_inline_result=Object.getOwnPropertyDescriptor(config,"ref").get)&&JSCompiler_inline_result.isReactWarning){JSCompiler_inline_result=!1;break a}JSCompiler_inline_result=config.ref!==void 0}JSCompiler_inline_result&&(owner=getOwner()),hasValidKey(config)&&(checkKeyStringCoercion(config.key),key=""+config.key);for(propName in config)!hasOwnProperty.call(config,propName)||propName==="key"||propName==="__self"||propName==="__source"||propName==="ref"&&config.ref===void 0||(props[propName]=config[propName])}var propName=arguments.length-2;if(propName===1)props.children=children;else if(1<propName){JSCompiler_inline_result=Array(propName);for(var i3=0;i3<propName;i3++)JSCompiler_inline_result[i3]=arguments[i3+2];props.children=JSCompiler_inline_result}for(props=ReactElement(element.type,key,props,owner,element._debugStack,element._debugTask),key=2;key<arguments.length;key++)validateChildKeys(arguments[key]);return props},exports.createContext=function(defaultValue){return defaultValue={$$typeof:REACT_CONTEXT_TYPE,_currentValue:defaultValue,_currentValue2:defaultValue,_threadCount:0,Provider:null,Consumer:null},defaultValue.Provider=defaultValue,defaultValue.Consumer={$$typeof:REACT_CONSUMER_TYPE,_context:defaultValue},defaultValue._currentRenderer=null,defaultValue._currentRenderer2=null,defaultValue},exports.createElement=function(type,config,children){for(var i3=2;i3<arguments.length;i3++)validateChildKeys(arguments[i3]);i3={};var key=null;if(config!=null)for(propName in didWarnAboutOldJSXRuntime||!("__self"in config)||"key"in config||(didWarnAboutOldJSXRuntime=!0,console.warn("Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform")),hasValidKey(config)&&(checkKeyStringCoercion(config.key),key=""+config.key),config)hasOwnProperty.call(config,propName)&&propName!=="key"&&propName!=="__self"&&propName!=="__source"&&(i3[propName]=config[propName]);var childrenLength=arguments.length-2;if(childrenLength===1)i3.children=children;else if(1<childrenLength){for(var childArray=Array(childrenLength),_i3=0;_i3<childrenLength;_i3++)childArray[_i3]=arguments[_i3+2];Object.freeze&&Object.freeze(childArray),i3.children=childArray}if(type&&type.defaultProps)for(propName in childrenLength=type.defaultProps,childrenLength)i3[propName]===void 0&&(i3[propName]=childrenLength[propName]);key&&defineKeyPropWarningGetter(i3,typeof type=="function"?type.displayName||type.name||"Unknown":type);var propName=1e4>ReactSharedInternals.recentlyCreatedOwnerStacks++;return ReactElement(type,key,i3,getOwner(),propName?Error("react-stack-top-frame"):unknownOwnerDebugStack,propName?createTask(getTaskName(type)):unknownOwnerDebugTask)},exports.createRef=function(){var refObject={current:null};return Object.seal(refObject),refObject},exports.forwardRef=function(render2){render2!=null&&render2.$$typeof===REACT_MEMO_TYPE?console.error("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."):typeof render2!="function"?console.error("forwardRef requires a render function but was given %s.",render2===null?"null":typeof render2):render2.length!==0&&render2.length!==2&&console.error("forwardRef render functions accept exactly two parameters: props and ref. %s",render2.length===1?"Did you forget to use the ref parameter?":"Any additional parameter will be undefined."),render2!=null&&render2.defaultProps!=null&&console.error("forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?");var elementType={$$typeof:REACT_FORWARD_REF_TYPE,render:render2},ownName;return Object.defineProperty(elementType,"displayName",{enumerable:!1,configurable:!0,get:function(){return ownName},set:function(name){ownName=name,render2.name||render2.displayName||(Object.defineProperty(render2,"name",{value:name}),render2.displayName=name)}}),elementType},exports.isValidElement=isValidElement3,exports.lazy=function(ctor){ctor={_status:-1,_result:ctor};var lazyType2={$$typeof:REACT_LAZY_TYPE,_payload:ctor,_init:lazyInitializer},ioInfo={name:"lazy",start:-1,end:-1,value:null,owner:null,debugStack:Error("react-stack-top-frame"),debugTask:console.createTask?console.createTask("lazy()"):null};return ctor._ioInfo=ioInfo,lazyType2._debugInfo=[{awaited:ioInfo}],lazyType2},exports.memo=function(type,compare){type==null&&console.error("memo: The first argument must be a component. Instead received: %s",type===null?"null":typeof type),compare={$$typeof:REACT_MEMO_TYPE,type,compare:compare===void 0?null:compare};var ownName;return Object.defineProperty(compare,"displayName",{enumerable:!1,configurable:!0,get:function(){return ownName},set:function(name){ownName=name,type.name||type.displayName||(Object.defineProperty(type,"name",{value:name}),type.displayName=name)}}),compare},exports.startTransition=function(scope){var prevTransition=ReactSharedInternals.T,currentTransition={};currentTransition._updatedFibers=new Set,ReactSharedInternals.T=currentTransition;try{var returnValue=scope(),onStartTransitionFinish=ReactSharedInternals.S;onStartTransitionFinish!==null&&onStartTransitionFinish(currentTransition,returnValue),typeof returnValue=="object"&&returnValue!==null&&typeof returnValue.then=="function"&&(ReactSharedInternals.asyncTransitions++,returnValue.then(releaseAsyncTransition,releaseAsyncTransition),returnValue.then(noop,reportGlobalError))}catch(error){reportGlobalError(error)}finally{prevTransition===null&&currentTransition._updatedFibers&&(scope=currentTransition._updatedFibers.size,currentTransition._updatedFibers.clear(),10<scope&&console.warn("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.")),prevTransition!==null&&currentTransition.types!==null&&(prevTransition.types!==null&&prevTransition.types!==currentTransition.types&&console.error("We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React."),prevTransition.types=currentTransition.types),ReactSharedInternals.T=prevTransition}},exports.unstable_useCacheRefresh=function(){return resolveDispatcher().useCacheRefresh()},exports.use=function(usable){return resolveDispatcher().use(usable)},exports.useActionState=function(action,initialState,permalink){return resolveDispatcher().useActionState(action,initialState,permalink)},exports.useCallback=function(callback,deps){return resolveDispatcher().useCallback(callback,deps)},exports.useContext=function(Context){var dispatcher=resolveDispatcher();return Context.$$typeof===REACT_CONSUMER_TYPE&&console.error("Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?"),dispatcher.useContext(Context)},exports.useDebugValue=function(value,formatterFn){return resolveDispatcher().useDebugValue(value,formatterFn)},exports.useDeferredValue=function(value,initialValue){return resolveDispatcher().useDeferredValue(value,initialValue)},exports.useEffect=function(create,deps){return create==null&&console.warn("React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?"),resolveDispatcher().useEffect(create,deps)},exports.useEffectEvent=function(callback){return resolveDispatcher().useEffectEvent(callback)},exports.useId=function(){return resolveDispatcher().useId()},exports.useImperativeHandle=function(ref,create,deps){return resolveDispatcher().useImperativeHandle(ref,create,deps)},exports.useInsertionEffect=function(create,deps){return create==null&&console.warn("React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?"),resolveDispatcher().useInsertionEffect(create,deps)},exports.useLayoutEffect=function(create,deps){return create==null&&console.warn("React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?"),resolveDispatcher().useLayoutEffect(create,deps)},exports.useMemo=function(create,deps){return resolveDispatcher().useMemo(create,deps)},exports.useOptimistic=function(passthrough,reducer){return resolveDispatcher().useOptimistic(passthrough,reducer)},exports.useReducer=function(reducer,initialArg,init){return resolveDispatcher().useReducer(reducer,initialArg,init)},exports.useRef=function(initialValue){return resolveDispatcher().useRef(initialValue)},exports.useState=function(initialState){return resolveDispatcher().useState(initialState)},exports.useSyncExternalStore=function(subscribe,getSnapshot,getServerSnapshot){return resolveDispatcher().useSyncExternalStore(subscribe,getSnapshot,getServerSnapshot)},exports.useTransition=function(){return resolveDispatcher().useTransition()},exports.version="19.2.3",typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()}});var require_react=__commonJS({"node_modules/react/index.js"(exports,module){"use strict";module.exports=require_react_development()}});var util,objectUtil,ZodParsedType,getParsedType,init_util=__esm({"node_modules/zod/v3/helpers/util.js"(){"use strict";(function(util2){util2.assertEqual=_4=>{};function assertIs(_arg){}util2.assertIs=assertIs;function assertNever(_x2){throw new Error}util2.assertNever=assertNever,util2.arrayToEnum=items=>{let obj={};for(let item of items)obj[item]=item;return obj},util2.getValidEnumValues=obj=>{let validKeys=util2.objectKeys(obj).filter(k4=>typeof obj[obj[k4]]!="number"),filtered={};for(let k4 of validKeys)filtered[k4]=obj[k4];return util2.objectValues(filtered)},util2.objectValues=obj=>util2.objectKeys(obj).map(function(e4){return obj[e4]}),util2.objectKeys=typeof Object.keys=="function"?obj=>Object.keys(obj):object=>{let keys=[];for(let key in object)Object.prototype.hasOwnProperty.call(object,key)&&keys.push(key);return keys},util2.find=(arr,checker)=>{for(let item of arr)if(checker(item))return item},util2.isInteger=typeof Number.isInteger=="function"?val=>Number.isInteger(val):val=>typeof val=="number"&&Number.isFinite(val)&&Math.floor(val)===val;function joinValues(array2,separator=" | "){return array2.map(val=>typeof val=="string"?`'${val}'`:val).join(separator)}util2.joinValues=joinValues,util2.jsonStringifyReplacer=(_4,value)=>typeof value=="bigint"?value.toString():value})(util||(util={}));(function(objectUtil2){objectUtil2.mergeShapes=(first,second)=>({...first,...second})})(objectUtil||(objectUtil={}));ZodParsedType=util.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),getParsedType=data=>{switch(typeof data){case"undefined":return ZodParsedType.undefined;case"string":return ZodParsedType.string;case"number":return Number.isNaN(data)?ZodParsedType.nan:ZodParsedType.number;case"boolean":return ZodParsedType.boolean;case"function":return ZodParsedType.function;case"bigint":return ZodParsedType.bigint;case"symbol":return ZodParsedType.symbol;case"object":return Array.isArray(data)?ZodParsedType.array:data===null?ZodParsedType.null:data.then&&typeof data.then=="function"&&data.catch&&typeof data.catch=="function"?ZodParsedType.promise:typeof Map<"u"&&data instanceof Map?ZodParsedType.map:typeof Set<"u"&&data instanceof Set?ZodParsedType.set:typeof Date<"u"&&data instanceof Date?ZodParsedType.date:ZodParsedType.object;default:return ZodParsedType.unknown}}}});var ZodIssueCode,quotelessJson,ZodError,init_ZodError=__esm({"node_modules/zod/v3/ZodError.js"(){"use strict";init_util();ZodIssueCode=util.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"]),quotelessJson=obj=>JSON.stringify(obj,null,2).replace(/"([^"]+)":/g,"$1:"),ZodError=class _ZodError extends Error{get errors(){return this.issues}constructor(issues){super(),this.issues=[],this.addIssue=sub=>{this.issues=[...this.issues,sub]},this.addIssues=(subs=[])=>{this.issues=[...this.issues,...subs]};let actualProto=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,actualProto):this.__proto__=actualProto,this.name="ZodError",this.issues=issues}format(_mapper){let mapper=_mapper||function(issue){return issue.message},fieldErrors={_errors:[]},processError=error=>{for(let issue of error.issues)if(issue.code==="invalid_union")issue.unionErrors.map(processError);else if(issue.code==="invalid_return_type")processError(issue.returnTypeError);else if(issue.code==="invalid_arguments")processError(issue.argumentsError);else if(issue.path.length===0)fieldErrors._errors.push(mapper(issue));else{let curr=fieldErrors,i3=0;for(;i3<issue.path.length;){let el2=issue.path[i3];i3===issue.path.length-1?(curr[el2]=curr[el2]||{_errors:[]},curr[el2]._errors.push(mapper(issue))):curr[el2]=curr[el2]||{_errors:[]},curr=curr[el2],i3++}}};return processError(this),fieldErrors}static assert(value){if(!(value instanceof _ZodError))throw new Error(`Not a ZodError: ${value}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,util.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(mapper=issue=>issue.message){let fieldErrors={},formErrors=[];for(let sub of this.issues)if(sub.path.length>0){let firstEl=sub.path[0];fieldErrors[firstEl]=fieldErrors[firstEl]||[],fieldErrors[firstEl].push(mapper(sub))}else formErrors.push(mapper(sub));return{formErrors,fieldErrors}}get formErrors(){return this.flatten()}};ZodError.create=issues=>new ZodError(issues)}});var errorMap,en_default,init_en=__esm({"node_modules/zod/v3/locales/en.js"(){"use strict";init_ZodError();init_util();errorMap=(issue,_ctx)=>{let message;switch(issue.code){case ZodIssueCode.invalid_type:issue.received===ZodParsedType.undefined?message="Required":message=`Expected ${issue.expected}, received ${issue.received}`;break;case ZodIssueCode.invalid_literal:message=`Invalid literal value, expected ${JSON.stringify(issue.expected,util.jsonStringifyReplacer)}`;break;case ZodIssueCode.unrecognized_keys:message=`Unrecognized key(s) in object: ${util.joinValues(issue.keys,", ")}`;break;case ZodIssueCode.invalid_union:message="Invalid input";break;case ZodIssueCode.invalid_union_discriminator:message=`Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;break;case ZodIssueCode.invalid_enum_value:message=`Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;break;case ZodIssueCode.invalid_arguments:message="Invalid function arguments";break;case ZodIssueCode.invalid_return_type:message="Invalid function return type";break;case ZodIssueCode.invalid_date:message="Invalid date";break;case ZodIssueCode.invalid_string:typeof issue.validation=="object"?"includes"in issue.validation?(message=`Invalid input: must include "${issue.validation.includes}"`,typeof issue.validation.position=="number"&&(message=`${message} at one or more positions greater than or equal to ${issue.validation.position}`)):"startsWith"in issue.validation?message=`Invalid input: must start with "${issue.validation.startsWith}"`:"endsWith"in issue.validation?message=`Invalid input: must end with "${issue.validation.endsWith}"`:util.assertNever(issue.validation):issue.validation!=="regex"?message=`Invalid ${issue.validation}`:message="Invalid";break;case ZodIssueCode.too_small:issue.type==="array"?message=`Array must contain ${issue.exact?"exactly":issue.inclusive?"at least":"more than"} ${issue.minimum} element(s)`:issue.type==="string"?message=`String must contain ${issue.exact?"exactly":issue.inclusive?"at least":"over"} ${issue.minimum} character(s)`:issue.type==="number"?message=`Number must be ${issue.exact?"exactly equal to ":issue.inclusive?"greater than or equal to ":"greater than "}${issue.minimum}`:issue.type==="bigint"?message=`Number must be ${issue.exact?"exactly equal to ":issue.inclusive?"greater than or equal to ":"greater than "}${issue.minimum}`:issue.type==="date"?message=`Date must be ${issue.exact?"exactly equal to ":issue.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(issue.minimum))}`:message="Invalid input";break;case ZodIssueCode.too_big:issue.type==="array"?message=`Array must contain ${issue.exact?"exactly":issue.inclusive?"at most":"less than"} ${issue.maximum} element(s)`:issue.type==="string"?message=`String must contain ${issue.exact?"exactly":issue.inclusive?"at most":"under"} ${issue.maximum} character(s)`:issue.type==="number"?message=`Number must be ${issue.exact?"exactly":issue.inclusive?"less than or equal to":"less than"} ${issue.maximum}`:issue.type==="bigint"?message=`BigInt must be ${issue.exact?"exactly":issue.inclusive?"less than or equal to":"less than"} ${issue.maximum}`:issue.type==="date"?message=`Date must be ${issue.exact?"exactly":issue.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(issue.maximum))}`:message="Invalid input";break;case ZodIssueCode.custom:message="Invalid input";break;case ZodIssueCode.invalid_intersection_types:message="Intersection results could not be merged";break;case ZodIssueCode.not_multiple_of:message=`Number must be a multiple of ${issue.multipleOf}`;break;case ZodIssueCode.not_finite:message="Number must be finite";break;default:message=_ctx.defaultError,util.assertNever(issue)}return{message}},en_default=errorMap}});function setErrorMap(map){overrideErrorMap=map}function getErrorMap(){return overrideErrorMap}var overrideErrorMap,init_errors=__esm({"node_modules/zod/v3/errors.js"(){"use strict";init_en();overrideErrorMap=en_default}});function addIssueToContext(ctx,issueData){let overrideMap=getErrorMap(),issue=makeIssue({issueData,data:ctx.data,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,overrideMap,overrideMap===en_default?void 0:en_default].filter(x3=>!!x3)});ctx.common.issues.push(issue)}var makeIssue,EMPTY_PATH,ParseStatus,INVALID,DIRTY,OK,isAborted,isDirty,isValid,isAsync,init_parseUtil=__esm({"node_modules/zod/v3/helpers/parseUtil.js"(){"use strict";init_errors();init_en();makeIssue=params=>{let{data,path,errorMaps,issueData}=params,fullPath=[...path,...issueData.path||[]],fullIssue={...issueData,path:fullPath};if(issueData.message!==void 0)return{...issueData,path:fullPath,message:issueData.message};let errorMessage="",maps=errorMaps.filter(m3=>!!m3).slice().reverse();for(let map of maps)errorMessage=map(fullIssue,{data,defaultError:errorMessage}).message;return{...issueData,path:fullPath,message:errorMessage}},EMPTY_PATH=[];ParseStatus=class _ParseStatus{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(status,results){let arrayValue=[];for(let s3 of results){if(s3.status==="aborted")return INVALID;s3.status==="dirty"&&status.dirty(),arrayValue.push(s3.value)}return{status:status.value,value:arrayValue}}static async mergeObjectAsync(status,pairs3){let syncPairs=[];for(let pair of pairs3){let key=await pair.key,value=await pair.value;syncPairs.push({key,value})}return _ParseStatus.mergeObjectSync(status,syncPairs)}static mergeObjectSync(status,pairs3){let finalObject={};for(let pair of pairs3){let{key,value}=pair;if(key.status==="aborted"||value.status==="aborted")return INVALID;key.status==="dirty"&&status.dirty(),value.status==="dirty"&&status.dirty(),key.value!=="__proto__"&&(typeof value.value<"u"||pair.alwaysSet)&&(finalObject[key.value]=value.value)}return{status:status.value,value:finalObject}}},INVALID=Object.freeze({status:"aborted"}),DIRTY=value=>({status:"dirty",value}),OK=value=>({status:"valid",value}),isAborted=x3=>x3.status==="aborted",isDirty=x3=>x3.status==="dirty",isValid=x3=>x3.status==="valid",isAsync=x3=>typeof Promise<"u"&&x3 instanceof Promise}});var init_typeAliases=__esm({"node_modules/zod/v3/helpers/typeAliases.js"(){"use strict"}});var errorUtil,init_errorUtil=__esm({"node_modules/zod/v3/helpers/errorUtil.js"(){"use strict";(function(errorUtil2){errorUtil2.errToObj=message=>typeof message=="string"?{message}:message||{},errorUtil2.toString=message=>typeof message=="string"?message:message?.message})(errorUtil||(errorUtil={}))}});function processCreateParams(params){if(!params)return{};let{errorMap:errorMap2,invalid_type_error,required_error,description}=params;if(errorMap2&&(invalid_type_error||required_error))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return errorMap2?{errorMap:errorMap2,description}:{errorMap:(iss,ctx)=>{let{message}=params;return iss.code==="invalid_enum_value"?{message:message??ctx.defaultError}:typeof ctx.data>"u"?{message:message??required_error??ctx.defaultError}:iss.code!=="invalid_type"?{message:ctx.defaultError}:{message:message??invalid_type_error??ctx.defaultError}},description}}function timeRegexSource(args){let secondsRegexSource="[0-5]\\d";args.precision?secondsRegexSource=`${secondsRegexSource}\\.\\d{${args.precision}}`:args.precision==null&&(secondsRegexSource=`${secondsRegexSource}(\\.\\d+)?`);let secondsQuantifier=args.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${secondsRegexSource})${secondsQuantifier}`}function timeRegex(args){return new RegExp(`^${timeRegexSource(args)}$`)}function datetimeRegex(args){let regex=`${dateRegexSource}T${timeRegexSource(args)}`,opts=[];return opts.push(args.local?"Z?":"Z"),args.offset&&opts.push("([+-]\\d{2}:?\\d{2})"),regex=`${regex}(${opts.join("|")})`,new RegExp(`^${regex}$`)}function isValidIP(ip2,version){return!!((version==="v4"||!version)&&ipv4Regex.test(ip2)||(version==="v6"||!version)&&ipv6Regex.test(ip2))}function isValidJWT(jwt,alg){if(!jwtRegex.test(jwt))return!1;try{let[header]=jwt.split(".");if(!header)return!1;let base64=header.replace(/-/g,"+").replace(/_/g,"/").padEnd(header.length+(4-header.length%4)%4,"="),decoded=JSON.parse(atob(base64));return!(typeof decoded!="object"||decoded===null||"typ"in decoded&&decoded?.typ!=="JWT"||!decoded.alg||alg&&decoded.alg!==alg)}catch{return!1}}function isValidCidr(ip2,version){return!!((version==="v4"||!version)&&ipv4CidrRegex.test(ip2)||(version==="v6"||!version)&&ipv6CidrRegex.test(ip2))}function floatSafeRemainder(val,step){let valDecCount=(val.toString().split(".")[1]||"").length,stepDecCount=(step.toString().split(".")[1]||"").length,decCount=valDecCount>stepDecCount?valDecCount:stepDecCount,valInt=Number.parseInt(val.toFixed(decCount).replace(".","")),stepInt=Number.parseInt(step.toFixed(decCount).replace(".",""));return valInt%stepInt/10**decCount}function deepPartialify(schema){if(schema instanceof ZodObject){let newShape={};for(let key in schema.shape){let fieldSchema=schema.shape[key];newShape[key]=ZodOptional.create(deepPartialify(fieldSchema))}return new ZodObject({...schema._def,shape:()=>newShape})}else return schema instanceof ZodArray?new ZodArray({...schema._def,type:deepPartialify(schema.element)}):schema instanceof ZodOptional?ZodOptional.create(deepPartialify(schema.unwrap())):schema instanceof ZodNullable?ZodNullable.create(deepPartialify(schema.unwrap())):schema instanceof ZodTuple?ZodTuple.create(schema.items.map(item=>deepPartialify(item))):schema}function mergeValues(a2,b3){let aType=getParsedType(a2),bType=getParsedType(b3);if(a2===b3)return{valid:!0,data:a2};if(aType===ZodParsedType.object&&bType===ZodParsedType.object){let bKeys=util.objectKeys(b3),sharedKeys=util.objectKeys(a2).filter(key=>bKeys.indexOf(key)!==-1),newObj={...a2,...b3};for(let key of sharedKeys){let sharedValue=mergeValues(a2[key],b3[key]);if(!sharedValue.valid)return{valid:!1};newObj[key]=sharedValue.data}return{valid:!0,data:newObj}}else if(aType===ZodParsedType.array&&bType===ZodParsedType.array){if(a2.length!==b3.length)return{valid:!1};let newArray=[];for(let index=0;index<a2.length;index++){let itemA=a2[index],itemB=b3[index],sharedValue=mergeValues(itemA,itemB);if(!sharedValue.valid)return{valid:!1};newArray.push(sharedValue.data)}return{valid:!0,data:newArray}}else return aType===ZodParsedType.date&&bType===ZodParsedType.date&&+a2==+b3?{valid:!0,data:a2}:{valid:!1}}function createZodEnum(values,params){return new ZodEnum({values,typeName:ZodFirstPartyTypeKind.ZodEnum,...processCreateParams(params)})}function cleanParams(params,data){let p2=typeof params=="function"?params(data):typeof params=="string"?{message:params}:params;return typeof p2=="string"?{message:p2}:p2}function custom(check,_params={},fatal){return check?ZodAny.create().superRefine((data,ctx)=>{let r4=check(data);if(r4 instanceof Promise)return r4.then(r6=>{if(!r6){let params=cleanParams(_params,data),_fatal=params.fatal??fatal??!0;ctx.addIssue({code:"custom",...params,fatal:_fatal})}});if(!r4){let params=cleanParams(_params,data),_fatal=params.fatal??fatal??!0;ctx.addIssue({code:"custom",...params,fatal:_fatal})}}):ZodAny.create()}var ParseInputLazyPath,handleResult,ZodType,cuidRegex,cuid2Regex,ulidRegex,uuidRegex,nanoidRegex,jwtRegex,durationRegex,emailRegex,_emojiRegex,emojiRegex,ipv4Regex,ipv4CidrRegex,ipv6Regex,ipv6CidrRegex,base64Regex,base64urlRegex,dateRegexSource,dateRegex,ZodString,ZodNumber,ZodBigInt,ZodBoolean,ZodDate,ZodSymbol,ZodUndefined,ZodNull,ZodAny,ZodUnknown,ZodNever,ZodVoid,ZodArray,ZodObject,ZodUnion,getDiscriminator,ZodDiscriminatedUnion,ZodIntersection,ZodTuple,ZodRecord,ZodMap,ZodSet,ZodFunction,ZodLazy,ZodLiteral,ZodEnum,ZodNativeEnum,ZodPromise,ZodEffects,ZodOptional,ZodNullable,ZodDefault,ZodCatch,ZodNaN,BRAND,ZodBranded,ZodPipeline,ZodReadonly,late,ZodFirstPartyTypeKind,instanceOfType,stringType,numberType,nanType,bigIntType,booleanType,dateType,symbolType,undefinedType,nullType,anyType,unknownType,neverType,voidType,arrayType,objectType,strictObjectType,unionType,discriminatedUnionType,intersectionType,tupleType,recordType,mapType,setType,functionType,lazyType,literalType,enumType,nativeEnumType,promiseType,effectsType,optionalType,nullableType,preprocessType,pipelineType,ostring,onumber,oboolean,coerce,NEVER,init_types=__esm({"node_modules/zod/v3/types.js"(){"use strict";init_ZodError();init_errors();init_errorUtil();init_parseUtil();init_util();ParseInputLazyPath=class{constructor(parent,value,path,key){this._cachedPath=[],this.parent=parent,this.data=value,this._path=path,this._key=key}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},handleResult=(ctx,result)=>{if(isValid(result))return{success:!0,data:result.value};if(!ctx.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let error=new ZodError(ctx.common.issues);return this._error=error,this._error}}};ZodType=class{get description(){return this._def.description}_getType(input2){return getParsedType(input2.data)}_getOrReturnCtx(input2,ctx){return ctx||{common:input2.parent.common,data:input2.data,parsedType:getParsedType(input2.data),schemaErrorMap:this._def.errorMap,path:input2.path,parent:input2.parent}}_processInputParams(input2){return{status:new ParseStatus,ctx:{common:input2.parent.common,data:input2.data,parsedType:getParsedType(input2.data),schemaErrorMap:this._def.errorMap,path:input2.path,parent:input2.parent}}}_parseSync(input2){let result=this._parse(input2);if(isAsync(result))throw new Error("Synchronous parse encountered promise.");return result}_parseAsync(input2){let result=this._parse(input2);return Promise.resolve(result)}parse(data,params){let result=this.safeParse(data,params);if(result.success)return result.data;throw result.error}safeParse(data,params){let ctx={common:{issues:[],async:params?.async??!1,contextualErrorMap:params?.errorMap},path:params?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data,parsedType:getParsedType(data)},result=this._parseSync({data,path:ctx.path,parent:ctx});return handleResult(ctx,result)}"~validate"(data){let ctx={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data,parsedType:getParsedType(data)};if(!this["~standard"].async)try{let result=this._parseSync({data,path:[],parent:ctx});return isValid(result)?{value:result.value}:{issues:ctx.common.issues}}catch(err){err?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),ctx.common={issues:[],async:!0}}return this._parseAsync({data,path:[],parent:ctx}).then(result=>isValid(result)?{value:result.value}:{issues:ctx.common.issues})}async parseAsync(data,params){let result=await this.safeParseAsync(data,params);if(result.success)return result.data;throw result.error}async safeParseAsync(data,params){let ctx={common:{issues:[],contextualErrorMap:params?.errorMap,async:!0},path:params?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data,parsedType:getParsedType(data)},maybeAsyncResult=this._parse({data,path:ctx.path,parent:ctx}),result=await(isAsync(maybeAsyncResult)?maybeAsyncResult:Promise.resolve(maybeAsyncResult));return handleResult(ctx,result)}refine(check,message){let getIssueProperties=val=>typeof message=="string"||typeof message>"u"?{message}:typeof message=="function"?message(val):message;return this._refinement((val,ctx)=>{let result=check(val),setError=()=>ctx.addIssue({code:ZodIssueCode.custom,...getIssueProperties(val)});return typeof Promise<"u"&&result instanceof Promise?result.then(data=>data?!0:(setError(),!1)):result?!0:(setError(),!1)})}refinement(check,refinementData){return this._refinement((val,ctx)=>check(val)?!0:(ctx.addIssue(typeof refinementData=="function"?refinementData(val,ctx):refinementData),!1))}_refinement(refinement){return new ZodEffects({schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"refinement",refinement}})}superRefine(refinement){return this._refinement(refinement)}constructor(def){this.spa=this.safeParseAsync,this._def=def,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:data=>this["~validate"](data)}}optional(){return ZodOptional.create(this,this._def)}nullable(){return ZodNullable.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ZodArray.create(this)}promise(){return ZodPromise.create(this,this._def)}or(option){return ZodUnion.create([this,option],this._def)}and(incoming){return ZodIntersection.create(this,incoming,this._def)}transform(transform5){return new ZodEffects({...processCreateParams(this._def),schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"transform",transform:transform5}})}default(def){let defaultValueFunc=typeof def=="function"?def:()=>def;return new ZodDefault({...processCreateParams(this._def),innerType:this,defaultValue:defaultValueFunc,typeName:ZodFirstPartyTypeKind.ZodDefault})}brand(){return new ZodBranded({typeName:ZodFirstPartyTypeKind.ZodBranded,type:this,...processCreateParams(this._def)})}catch(def){let catchValueFunc=typeof def=="function"?def:()=>def;return new ZodCatch({...processCreateParams(this._def),innerType:this,catchValue:catchValueFunc,typeName:ZodFirstPartyTypeKind.ZodCatch})}describe(description){let This=this.constructor;return new This({...this._def,description})}pipe(target){return ZodPipeline.create(this,target)}readonly(){return ZodReadonly.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},cuidRegex=/^c[^\s-]{8,}$/i,cuid2Regex=/^[0-9a-z]+$/,ulidRegex=/^[0-9A-HJKMNP-TV-Z]{26}$/i,uuidRegex=/^[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,nanoidRegex=/^[a-z0-9_-]{21}$/i,jwtRegex=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,durationRegex=/^[-+]?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)?)??$/,emailRegex=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,_emojiRegex="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",ipv4Regex=/^(?:(?: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])$/,ipv4CidrRegex=/^(?:(?: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])$/,ipv6Regex=/^(([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]))$/,ipv6CidrRegex=/^(([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])$/,base64Regex=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64urlRegex=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,dateRegexSource="((\\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])))",dateRegex=new RegExp(`^${dateRegexSource}$`);ZodString=class _ZodString extends ZodType{_parse(input2){if(this._def.coerce&&(input2.data=String(input2.data)),this._getType(input2)!==ZodParsedType.string){let ctx2=this._getOrReturnCtx(input2);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.string,received:ctx2.parsedType}),INVALID}let status=new ParseStatus,ctx;for(let check of this._def.checks)if(check.kind==="min")input2.data.length<check.value&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:check.value,type:"string",inclusive:!0,exact:!1,message:check.message}),status.dirty());else if(check.kind==="max")input2.data.length>check.value&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check.value,type:"string",inclusive:!0,exact:!1,message:check.message}),status.dirty());else if(check.kind==="length"){let tooBig=input2.data.length>check.value,tooSmall=input2.data.length<check.value;(tooBig||tooSmall)&&(ctx=this._getOrReturnCtx(input2,ctx),tooBig?addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check.value,type:"string",inclusive:!0,exact:!0,message:check.message}):tooSmall&&addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:check.value,type:"string",inclusive:!0,exact:!0,message:check.message}),status.dirty())}else if(check.kind==="email")emailRegex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"email",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty());else if(check.kind==="emoji")emojiRegex||(emojiRegex=new RegExp(_emojiRegex,"u")),emojiRegex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"emoji",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty());else if(check.kind==="uuid")uuidRegex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"uuid",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty());else if(check.kind==="nanoid")nanoidRegex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"nanoid",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty());else if(check.kind==="cuid")cuidRegex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"cuid",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty());else if(check.kind==="cuid2")cuid2Regex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"cuid2",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty());else if(check.kind==="ulid")ulidRegex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"ulid",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty());else if(check.kind==="url")try{new URL(input2.data)}catch{ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"url",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty()}else check.kind==="regex"?(check.regex.lastIndex=0,check.regex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"regex",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty())):check.kind==="trim"?input2.data=input2.data.trim():check.kind==="includes"?input2.data.includes(check.value,check.position)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:{includes:check.value,position:check.position},message:check.message}),status.dirty()):check.kind==="toLowerCase"?input2.data=input2.data.toLowerCase():check.kind==="toUpperCase"?input2.data=input2.data.toUpperCase():check.kind==="startsWith"?input2.data.startsWith(check.value)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:{startsWith:check.value},message:check.message}),status.dirty()):check.kind==="endsWith"?input2.data.endsWith(check.value)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:{endsWith:check.value},message:check.message}),status.dirty()):check.kind==="datetime"?datetimeRegex(check).test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:"datetime",message:check.message}),status.dirty()):check.kind==="date"?dateRegex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:"date",message:check.message}),status.dirty()):check.kind==="time"?timeRegex(check).test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:"time",message:check.message}),status.dirty()):check.kind==="duration"?durationRegex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"duration",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty()):check.kind==="ip"?isValidIP(input2.data,check.version)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"ip",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty()):check.kind==="jwt"?isValidJWT(input2.data,check.alg)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"jwt",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty()):check.kind==="cidr"?isValidCidr(input2.data,check.version)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"cidr",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty()):check.kind==="base64"?base64Regex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"base64",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty()):check.kind==="base64url"?base64urlRegex.test(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{validation:"base64url",code:ZodIssueCode.invalid_string,message:check.message}),status.dirty()):util.assertNever(check);return{status:status.value,value:input2.data}}_regex(regex,validation,message){return this.refinement(data=>regex.test(data),{validation,code:ZodIssueCode.invalid_string,...errorUtil.errToObj(message)})}_addCheck(check){return new _ZodString({...this._def,checks:[...this._def.checks,check]})}email(message){return this._addCheck({kind:"email",...errorUtil.errToObj(message)})}url(message){return this._addCheck({kind:"url",...errorUtil.errToObj(message)})}emoji(message){return this._addCheck({kind:"emoji",...errorUtil.errToObj(message)})}uuid(message){return this._addCheck({kind:"uuid",...errorUtil.errToObj(message)})}nanoid(message){return this._addCheck({kind:"nanoid",...errorUtil.errToObj(message)})}cuid(message){return this._addCheck({kind:"cuid",...errorUtil.errToObj(message)})}cuid2(message){return this._addCheck({kind:"cuid2",...errorUtil.errToObj(message)})}ulid(message){return this._addCheck({kind:"ulid",...errorUtil.errToObj(message)})}base64(message){return this._addCheck({kind:"base64",...errorUtil.errToObj(message)})}base64url(message){return this._addCheck({kind:"base64url",...errorUtil.errToObj(message)})}jwt(options){return this._addCheck({kind:"jwt",...errorUtil.errToObj(options)})}ip(options){return this._addCheck({kind:"ip",...errorUtil.errToObj(options)})}cidr(options){return this._addCheck({kind:"cidr",...errorUtil.errToObj(options)})}datetime(options){return typeof options=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:options}):this._addCheck({kind:"datetime",precision:typeof options?.precision>"u"?null:options?.precision,offset:options?.offset??!1,local:options?.local??!1,...errorUtil.errToObj(options?.message)})}date(message){return this._addCheck({kind:"date",message})}time(options){return typeof options=="string"?this._addCheck({kind:"time",precision:null,message:options}):this._addCheck({kind:"time",precision:typeof options?.precision>"u"?null:options?.precision,...errorUtil.errToObj(options?.message)})}duration(message){return this._addCheck({kind:"duration",...errorUtil.errToObj(message)})}regex(regex,message){return this._addCheck({kind:"regex",regex,...errorUtil.errToObj(message)})}includes(value,options){return this._addCheck({kind:"includes",value,position:options?.position,...errorUtil.errToObj(options?.message)})}startsWith(value,message){return this._addCheck({kind:"startsWith",value,...errorUtil.errToObj(message)})}endsWith(value,message){return this._addCheck({kind:"endsWith",value,...errorUtil.errToObj(message)})}min(minLength,message){return this._addCheck({kind:"min",value:minLength,...errorUtil.errToObj(message)})}max(maxLength,message){return this._addCheck({kind:"max",value:maxLength,...errorUtil.errToObj(message)})}length(len,message){return this._addCheck({kind:"length",value:len,...errorUtil.errToObj(message)})}nonempty(message){return this.min(1,errorUtil.errToObj(message))}trim(){return new _ZodString({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new _ZodString({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new _ZodString({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(ch2=>ch2.kind==="datetime")}get isDate(){return!!this._def.checks.find(ch2=>ch2.kind==="date")}get isTime(){return!!this._def.checks.find(ch2=>ch2.kind==="time")}get isDuration(){return!!this._def.checks.find(ch2=>ch2.kind==="duration")}get isEmail(){return!!this._def.checks.find(ch2=>ch2.kind==="email")}get isURL(){return!!this._def.checks.find(ch2=>ch2.kind==="url")}get isEmoji(){return!!this._def.checks.find(ch2=>ch2.kind==="emoji")}get isUUID(){return!!this._def.checks.find(ch2=>ch2.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(ch2=>ch2.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(ch2=>ch2.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(ch2=>ch2.kind==="cuid2")}get isULID(){return!!this._def.checks.find(ch2=>ch2.kind==="ulid")}get isIP(){return!!this._def.checks.find(ch2=>ch2.kind==="ip")}get isCIDR(){return!!this._def.checks.find(ch2=>ch2.kind==="cidr")}get isBase64(){return!!this._def.checks.find(ch2=>ch2.kind==="base64")}get isBase64url(){return!!this._def.checks.find(ch2=>ch2.kind==="base64url")}get minLength(){let min=null;for(let ch2 of this._def.checks)ch2.kind==="min"&&(min===null||ch2.value>min)&&(min=ch2.value);return min}get maxLength(){let max=null;for(let ch2 of this._def.checks)ch2.kind==="max"&&(max===null||ch2.value<max)&&(max=ch2.value);return max}};ZodString.create=params=>new ZodString({checks:[],typeName:ZodFirstPartyTypeKind.ZodString,coerce:params?.coerce??!1,...processCreateParams(params)});ZodNumber=class _ZodNumber extends ZodType{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(input2){if(this._def.coerce&&(input2.data=Number(input2.data)),this._getType(input2)!==ZodParsedType.number){let ctx2=this._getOrReturnCtx(input2);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.number,received:ctx2.parsedType}),INVALID}let ctx,status=new ParseStatus;for(let check of this._def.checks)check.kind==="int"?util.isInteger(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:"integer",received:"float",message:check.message}),status.dirty()):check.kind==="min"?(check.inclusive?input2.data<check.value:input2.data<=check.value)&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:check.value,type:"number",inclusive:check.inclusive,exact:!1,message:check.message}),status.dirty()):check.kind==="max"?(check.inclusive?input2.data>check.value:input2.data>=check.value)&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check.value,type:"number",inclusive:check.inclusive,exact:!1,message:check.message}),status.dirty()):check.kind==="multipleOf"?floatSafeRemainder(input2.data,check.value)!==0&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.not_multiple_of,multipleOf:check.value,message:check.message}),status.dirty()):check.kind==="finite"?Number.isFinite(input2.data)||(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.not_finite,message:check.message}),status.dirty()):util.assertNever(check);return{status:status.value,value:input2.data}}gte(value,message){return this.setLimit("min",value,!0,errorUtil.toString(message))}gt(value,message){return this.setLimit("min",value,!1,errorUtil.toString(message))}lte(value,message){return this.setLimit("max",value,!0,errorUtil.toString(message))}lt(value,message){return this.setLimit("max",value,!1,errorUtil.toString(message))}setLimit(kind,value,inclusive,message){return new _ZodNumber({...this._def,checks:[...this._def.checks,{kind,value,inclusive,message:errorUtil.toString(message)}]})}_addCheck(check){return new _ZodNumber({...this._def,checks:[...this._def.checks,check]})}int(message){return this._addCheck({kind:"int",message:errorUtil.toString(message)})}positive(message){return this._addCheck({kind:"min",value:0,inclusive:!1,message:errorUtil.toString(message)})}negative(message){return this._addCheck({kind:"max",value:0,inclusive:!1,message:errorUtil.toString(message)})}nonpositive(message){return this._addCheck({kind:"max",value:0,inclusive:!0,message:errorUtil.toString(message)})}nonnegative(message){return this._addCheck({kind:"min",value:0,inclusive:!0,message:errorUtil.toString(message)})}multipleOf(value,message){return this._addCheck({kind:"multipleOf",value,message:errorUtil.toString(message)})}finite(message){return this._addCheck({kind:"finite",message:errorUtil.toString(message)})}safe(message){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:errorUtil.toString(message)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:errorUtil.toString(message)})}get minValue(){let min=null;for(let ch2 of this._def.checks)ch2.kind==="min"&&(min===null||ch2.value>min)&&(min=ch2.value);return min}get maxValue(){let max=null;for(let ch2 of this._def.checks)ch2.kind==="max"&&(max===null||ch2.value<max)&&(max=ch2.value);return max}get isInt(){return!!this._def.checks.find(ch2=>ch2.kind==="int"||ch2.kind==="multipleOf"&&util.isInteger(ch2.value))}get isFinite(){let max=null,min=null;for(let ch2 of this._def.checks){if(ch2.kind==="finite"||ch2.kind==="int"||ch2.kind==="multipleOf")return!0;ch2.kind==="min"?(min===null||ch2.value>min)&&(min=ch2.value):ch2.kind==="max"&&(max===null||ch2.value<max)&&(max=ch2.value)}return Number.isFinite(min)&&Number.isFinite(max)}};ZodNumber.create=params=>new ZodNumber({checks:[],typeName:ZodFirstPartyTypeKind.ZodNumber,coerce:params?.coerce||!1,...processCreateParams(params)});ZodBigInt=class _ZodBigInt extends ZodType{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(input2){if(this._def.coerce)try{input2.data=BigInt(input2.data)}catch{return this._getInvalidInput(input2)}if(this._getType(input2)!==ZodParsedType.bigint)return this._getInvalidInput(input2);let ctx,status=new ParseStatus;for(let check of this._def.checks)check.kind==="min"?(check.inclusive?input2.data<check.value:input2.data<=check.value)&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_small,type:"bigint",minimum:check.value,inclusive:check.inclusive,message:check.message}),status.dirty()):check.kind==="max"?(check.inclusive?input2.data>check.value:input2.data>=check.value)&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_big,type:"bigint",maximum:check.value,inclusive:check.inclusive,message:check.message}),status.dirty()):check.kind==="multipleOf"?input2.data%check.value!==BigInt(0)&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.not_multiple_of,multipleOf:check.value,message:check.message}),status.dirty()):util.assertNever(check);return{status:status.value,value:input2.data}}_getInvalidInput(input2){let ctx=this._getOrReturnCtx(input2);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.bigint,received:ctx.parsedType}),INVALID}gte(value,message){return this.setLimit("min",value,!0,errorUtil.toString(message))}gt(value,message){return this.setLimit("min",value,!1,errorUtil.toString(message))}lte(value,message){return this.setLimit("max",value,!0,errorUtil.toString(message))}lt(value,message){return this.setLimit("max",value,!1,errorUtil.toString(message))}setLimit(kind,value,inclusive,message){return new _ZodBigInt({...this._def,checks:[...this._def.checks,{kind,value,inclusive,message:errorUtil.toString(message)}]})}_addCheck(check){return new _ZodBigInt({...this._def,checks:[...this._def.checks,check]})}positive(message){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:errorUtil.toString(message)})}negative(message){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:errorUtil.toString(message)})}nonpositive(message){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:errorUtil.toString(message)})}nonnegative(message){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:errorUtil.toString(message)})}multipleOf(value,message){return this._addCheck({kind:"multipleOf",value,message:errorUtil.toString(message)})}get minValue(){let min=null;for(let ch2 of this._def.checks)ch2.kind==="min"&&(min===null||ch2.value>min)&&(min=ch2.value);return min}get maxValue(){let max=null;for(let ch2 of this._def.checks)ch2.kind==="max"&&(max===null||ch2.value<max)&&(max=ch2.value);return max}};ZodBigInt.create=params=>new ZodBigInt({checks:[],typeName:ZodFirstPartyTypeKind.ZodBigInt,coerce:params?.coerce??!1,...processCreateParams(params)});ZodBoolean=class extends ZodType{_parse(input2){if(this._def.coerce&&(input2.data=!!input2.data),this._getType(input2)!==ZodParsedType.boolean){let ctx=this._getOrReturnCtx(input2);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.boolean,received:ctx.parsedType}),INVALID}return OK(input2.data)}};ZodBoolean.create=params=>new ZodBoolean({typeName:ZodFirstPartyTypeKind.ZodBoolean,coerce:params?.coerce||!1,...processCreateParams(params)});ZodDate=class _ZodDate extends ZodType{_parse(input2){if(this._def.coerce&&(input2.data=new Date(input2.data)),this._getType(input2)!==ZodParsedType.date){let ctx2=this._getOrReturnCtx(input2);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.date,received:ctx2.parsedType}),INVALID}if(Number.isNaN(input2.data.getTime())){let ctx2=this._getOrReturnCtx(input2);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_date}),INVALID}let status=new ParseStatus,ctx;for(let check of this._def.checks)check.kind==="min"?input2.data.getTime()<check.value&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_small,message:check.message,inclusive:!0,exact:!1,minimum:check.value,type:"date"}),status.dirty()):check.kind==="max"?input2.data.getTime()>check.value&&(ctx=this._getOrReturnCtx(input2,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_big,message:check.message,inclusive:!0,exact:!1,maximum:check.value,type:"date"}),status.dirty()):util.assertNever(check);return{status:status.value,value:new Date(input2.data.getTime())}}_addCheck(check){return new _ZodDate({...this._def,checks:[...this._def.checks,check]})}min(minDate,message){return this._addCheck({kind:"min",value:minDate.getTime(),message:errorUtil.toString(message)})}max(maxDate,message){return this._addCheck({kind:"max",value:maxDate.getTime(),message:errorUtil.toString(message)})}get minDate(){let min=null;for(let ch2 of this._def.checks)ch2.kind==="min"&&(min===null||ch2.value>min)&&(min=ch2.value);return min!=null?new Date(min):null}get maxDate(){let max=null;for(let ch2 of this._def.checks)ch2.kind==="max"&&(max===null||ch2.value<max)&&(max=ch2.value);return max!=null?new Date(max):null}};ZodDate.create=params=>new ZodDate({checks:[],coerce:params?.coerce||!1,typeName:ZodFirstPartyTypeKind.ZodDate,...processCreateParams(params)});ZodSymbol=class extends ZodType{_parse(input2){if(this._getType(input2)!==ZodParsedType.symbol){let ctx=this._getOrReturnCtx(input2);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.symbol,received:ctx.parsedType}),INVALID}return OK(input2.data)}};ZodSymbol.create=params=>new ZodSymbol({typeName:ZodFirstPartyTypeKind.ZodSymbol,...processCreateParams(params)});ZodUndefined=class extends ZodType{_parse(input2){if(this._getType(input2)!==ZodParsedType.undefined){let ctx=this._getOrReturnCtx(input2);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.undefined,received:ctx.parsedType}),INVALID}return OK(input2.data)}};ZodUndefined.create=params=>new ZodUndefined({typeName:ZodFirstPartyTypeKind.ZodUndefined,...processCreateParams(params)});ZodNull=class extends ZodType{_parse(input2){if(this._getType(input2)!==ZodParsedType.null){let ctx=this._getOrReturnCtx(input2);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.null,received:ctx.parsedType}),INVALID}return OK(input2.data)}};ZodNull.create=params=>new ZodNull({typeName:ZodFirstPartyTypeKind.ZodNull,...processCreateParams(params)});ZodAny=class extends ZodType{constructor(){super(...arguments),this._any=!0}_parse(input2){return OK(input2.data)}};ZodAny.create=params=>new ZodAny({typeName:ZodFirstPartyTypeKind.ZodAny,...processCreateParams(params)});ZodUnknown=class extends ZodType{constructor(){super(...arguments),this._unknown=!0}_parse(input2){return OK(input2.data)}};ZodUnknown.create=params=>new ZodUnknown({typeName:ZodFirstPartyTypeKind.ZodUnknown,...processCreateParams(params)});ZodNever=class extends ZodType{_parse(input2){let ctx=this._getOrReturnCtx(input2);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.never,received:ctx.parsedType}),INVALID}};ZodNever.create=params=>new ZodNever({typeName:ZodFirstPartyTypeKind.ZodNever,...processCreateParams(params)});ZodVoid=class extends ZodType{_parse(input2){if(this._getType(input2)!==ZodParsedType.undefined){let ctx=this._getOrReturnCtx(input2);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.void,received:ctx.parsedType}),INVALID}return OK(input2.data)}};ZodVoid.create=params=>new ZodVoid({typeName:ZodFirstPartyTypeKind.ZodVoid,...processCreateParams(params)});ZodArray=class _ZodArray extends ZodType{_parse(input2){let{ctx,status}=this._processInputParams(input2),def=this._def;if(ctx.parsedType!==ZodParsedType.array)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:ctx.parsedType}),INVALID;if(def.exactLength!==null){let tooBig=ctx.data.length>def.exactLength.value,tooSmall=ctx.data.length<def.exactLength.value;(tooBig||tooSmall)&&(addIssueToContext(ctx,{code:tooBig?ZodIssueCode.too_big:ZodIssueCode.too_small,minimum:tooSmall?def.exactLength.value:void 0,maximum:tooBig?def.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:def.exactLength.message}),status.dirty())}if(def.minLength!==null&&ctx.data.length<def.minLength.value&&(addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:def.minLength.value,type:"array",inclusive:!0,exact:!1,message:def.minLength.message}),status.dirty()),def.maxLength!==null&&ctx.data.length>def.maxLength.value&&(addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:def.maxLength.value,type:"array",inclusive:!0,exact:!1,message:def.maxLength.message}),status.dirty()),ctx.common.async)return Promise.all([...ctx.data].map((item,i3)=>def.type._parseAsync(new ParseInputLazyPath(ctx,item,ctx.path,i3)))).then(result2=>ParseStatus.mergeArray(status,result2));let result=[...ctx.data].map((item,i3)=>def.type._parseSync(new ParseInputLazyPath(ctx,item,ctx.path,i3)));return ParseStatus.mergeArray(status,result)}get element(){return this._def.type}min(minLength,message){return new _ZodArray({...this._def,minLength:{value:minLength,message:errorUtil.toString(message)}})}max(maxLength,message){return new _ZodArray({...this._def,maxLength:{value:maxLength,message:errorUtil.toString(message)}})}length(len,message){return new _ZodArray({...this._def,exactLength:{value:len,message:errorUtil.toString(message)}})}nonempty(message){return this.min(1,message)}};ZodArray.create=(schema,params)=>new ZodArray({type:schema,minLength:null,maxLength:null,exactLength:null,typeName:ZodFirstPartyTypeKind.ZodArray,...processCreateParams(params)});ZodObject=class _ZodObject extends ZodType{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let shape=this._def.shape(),keys=util.objectKeys(shape);return this._cached={shape,keys},this._cached}_parse(input2){if(this._getType(input2)!==ZodParsedType.object){let ctx2=this._getOrReturnCtx(input2);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx2.parsedType}),INVALID}let{status,ctx}=this._processInputParams(input2),{shape,keys:shapeKeys}=this._getCached(),extraKeys=[];if(!(this._def.catchall instanceof ZodNever&&this._def.unknownKeys==="strip"))for(let key in ctx.data)shapeKeys.includes(key)||extraKeys.push(key);let pairs3=[];for(let key of shapeKeys){let keyValidator=shape[key],value=ctx.data[key];pairs3.push({key:{status:"valid",value:key},value:keyValidator._parse(new ParseInputLazyPath(ctx,value,ctx.path,key)),alwaysSet:key in ctx.data})}if(this._def.catchall instanceof ZodNever){let unknownKeys=this._def.unknownKeys;if(unknownKeys==="passthrough")for(let key of extraKeys)pairs3.push({key:{status:"valid",value:key},value:{status:"valid",value:ctx.data[key]}});else if(unknownKeys==="strict")extraKeys.length>0&&(addIssueToContext(ctx,{code:ZodIssueCode.unrecognized_keys,keys:extraKeys}),status.dirty());else if(unknownKeys!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let catchall=this._def.catchall;for(let key of extraKeys){let value=ctx.data[key];pairs3.push({key:{status:"valid",value:key},value:catchall._parse(new ParseInputLazyPath(ctx,value,ctx.path,key)),alwaysSet:key in ctx.data})}}return ctx.common.async?Promise.resolve().then(async()=>{let syncPairs=[];for(let pair of pairs3){let key=await pair.key,value=await pair.value;syncPairs.push({key,value,alwaysSet:pair.alwaysSet})}return syncPairs}).then(syncPairs=>ParseStatus.mergeObjectSync(status,syncPairs)):ParseStatus.mergeObjectSync(status,pairs3)}get shape(){return this._def.shape()}strict(message){return errorUtil.errToObj,new _ZodObject({...this._def,unknownKeys:"strict",...message!==void 0?{errorMap:(issue,ctx)=>{let defaultError=this._def.errorMap?.(issue,ctx).message??ctx.defaultError;return issue.code==="unrecognized_keys"?{message:errorUtil.errToObj(message).message??defaultError}:{message:defaultError}}}:{}})}strip(){return new _ZodObject({...this._def,unknownKeys:"strip"})}passthrough(){return new _ZodObject({...this._def,unknownKeys:"passthrough"})}extend(augmentation){return new _ZodObject({...this._def,shape:()=>({...this._def.shape(),...augmentation})})}merge(merging){return new _ZodObject({unknownKeys:merging._def.unknownKeys,catchall:merging._def.catchall,shape:()=>({...this._def.shape(),...merging._def.shape()}),typeName:ZodFirstPartyTypeKind.ZodObject})}setKey(key,schema){return this.augment({[key]:schema})}catchall(index){return new _ZodObject({...this._def,catchall:index})}pick(mask){let shape={};for(let key of util.objectKeys(mask))mask[key]&&this.shape[key]&&(shape[key]=this.shape[key]);return new _ZodObject({...this._def,shape:()=>shape})}omit(mask){let shape={};for(let key of util.objectKeys(this.shape))mask[key]||(shape[key]=this.shape[key]);return new _ZodObject({...this._def,shape:()=>shape})}deepPartial(){return deepPartialify(this)}partial(mask){let newShape={};for(let key of util.objectKeys(this.shape)){let fieldSchema=this.shape[key];mask&&!mask[key]?newShape[key]=fieldSchema:newShape[key]=fieldSchema.optional()}return new _ZodObject({...this._def,shape:()=>newShape})}required(mask){let newShape={};for(let key of util.objectKeys(this.shape))if(mask&&!mask[key])newShape[key]=this.shape[key];else{let newField=this.shape[key];for(;newField instanceof ZodOptional;)newField=newField._def.innerType;newShape[key]=newField}return new _ZodObject({...this._def,shape:()=>newShape})}keyof(){return createZodEnum(util.objectKeys(this.shape))}};ZodObject.create=(shape,params)=>new ZodObject({shape:()=>shape,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)});ZodObject.strictCreate=(shape,params)=>new ZodObject({shape:()=>shape,unknownKeys:"strict",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)});ZodObject.lazycreate=(shape,params)=>new ZodObject({shape,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)});ZodUnion=class extends ZodType{_parse(input2){let{ctx}=this._processInputParams(input2),options=this._def.options;function handleResults(results){for(let result of results)if(result.result.status==="valid")return result.result;for(let result of results)if(result.result.status==="dirty")return ctx.common.issues.push(...result.ctx.common.issues),result.result;let unionErrors=results.map(result=>new ZodError(result.ctx.common.issues));return addIssueToContext(ctx,{code:ZodIssueCode.invalid_union,unionErrors}),INVALID}if(ctx.common.async)return Promise.all(options.map(async option=>{let childCtx={...ctx,common:{...ctx.common,issues:[]},parent:null};return{result:await option._parseAsync({data:ctx.data,path:ctx.path,parent:childCtx}),ctx:childCtx}})).then(handleResults);{let dirty,issues=[];for(let option of options){let childCtx={...ctx,common:{...ctx.common,issues:[]},parent:null},result=option._parseSync({data:ctx.data,path:ctx.path,parent:childCtx});if(result.status==="valid")return result;result.status==="dirty"&&!dirty&&(dirty={result,ctx:childCtx}),childCtx.common.issues.length&&issues.push(childCtx.common.issues)}if(dirty)return ctx.common.issues.push(...dirty.ctx.common.issues),dirty.result;let unionErrors=issues.map(issues2=>new ZodError(issues2));return addIssueToContext(ctx,{code:ZodIssueCode.invalid_union,unionErrors}),INVALID}}get options(){return this._def.options}};ZodUnion.create=(types,params)=>new ZodUnion({options:types,typeName:ZodFirstPartyTypeKind.ZodUnion,...processCreateParams(params)});getDiscriminator=type=>type instanceof ZodLazy?getDiscriminator(type.schema):type instanceof ZodEffects?getDiscriminator(type.innerType()):type instanceof ZodLiteral?[type.value]:type instanceof ZodEnum?type.options:type instanceof ZodNativeEnum?util.objectValues(type.enum):type instanceof ZodDefault?getDiscriminator(type._def.innerType):type instanceof ZodUndefined?[void 0]:type instanceof ZodNull?[null]:type instanceof ZodOptional?[void 0,...getDiscriminator(type.unwrap())]:type instanceof ZodNullable?[null,...getDiscriminator(type.unwrap())]:type instanceof ZodBranded||type instanceof ZodReadonly?getDiscriminator(type.unwrap()):type instanceof ZodCatch?getDiscriminator(type._def.innerType):[],ZodDiscriminatedUnion=class _ZodDiscriminatedUnion extends ZodType{_parse(input2){let{ctx}=this._processInputParams(input2);if(ctx.parsedType!==ZodParsedType.object)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType}),INVALID;let discriminator=this.discriminator,discriminatorValue=ctx.data[discriminator],option=this.optionsMap.get(discriminatorValue);return option?ctx.common.async?option._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}):option._parseSync({data:ctx.data,path:ctx.path,parent:ctx}):(addIssueToContext(ctx,{code:ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[discriminator]}),INVALID)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(discriminator,options,params){let optionsMap=new Map;for(let type of options){let discriminatorValues=getDiscriminator(type.shape[discriminator]);if(!discriminatorValues.length)throw new Error(`A discriminator value for key \`${discriminator}\` could not be extracted from all schema options`);for(let value of discriminatorValues){if(optionsMap.has(value))throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);optionsMap.set(value,type)}}return new _ZodDiscriminatedUnion({typeName:ZodFirstPartyTypeKind.ZodDiscriminatedUnion,discriminator,options,optionsMap,...processCreateParams(params)})}};ZodIntersection=class extends ZodType{_parse(input2){let{status,ctx}=this._processInputParams(input2),handleParsed=(parsedLeft,parsedRight)=>{if(isAborted(parsedLeft)||isAborted(parsedRight))return INVALID;let merged=mergeValues(parsedLeft.value,parsedRight.value);return merged.valid?((isDirty(parsedLeft)||isDirty(parsedRight))&&status.dirty(),{status:status.value,value:merged.data}):(addIssueToContext(ctx,{code:ZodIssueCode.invalid_intersection_types}),INVALID)};return ctx.common.async?Promise.all([this._def.left._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}),this._def.right._parseAsync({data:ctx.data,path:ctx.path,parent:ctx})]).then(([left,right])=>handleParsed(left,right)):handleParsed(this._def.left._parseSync({data:ctx.data,path:ctx.path,parent:ctx}),this._def.right._parseSync({data:ctx.data,path:ctx.path,parent:ctx}))}};ZodIntersection.create=(left,right,params)=>new ZodIntersection({left,right,typeName:ZodFirstPartyTypeKind.ZodIntersection,...processCreateParams(params)});ZodTuple=class _ZodTuple extends ZodType{_parse(input2){let{status,ctx}=this._processInputParams(input2);if(ctx.parsedType!==ZodParsedType.array)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:ctx.parsedType}),INVALID;if(ctx.data.length<this._def.items.length)return addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),INVALID;!this._def.rest&&ctx.data.length>this._def.items.length&&(addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),status.dirty());let items=[...ctx.data].map((item,itemIndex)=>{let schema=this._def.items[itemIndex]||this._def.rest;return schema?schema._parse(new ParseInputLazyPath(ctx,item,ctx.path,itemIndex)):null}).filter(x3=>!!x3);return ctx.common.async?Promise.all(items).then(results=>ParseStatus.mergeArray(status,results)):ParseStatus.mergeArray(status,items)}get items(){return this._def.items}rest(rest){return new _ZodTuple({...this._def,rest})}};ZodTuple.create=(schemas,params)=>{if(!Array.isArray(schemas))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new ZodTuple({items:schemas,typeName:ZodFirstPartyTypeKind.ZodTuple,rest:null,...processCreateParams(params)})};ZodRecord=class _ZodRecord extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(input2){let{status,ctx}=this._processInputParams(input2);if(ctx.parsedType!==ZodParsedType.object)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType}),INVALID;let pairs3=[],keyType=this._def.keyType,valueType=this._def.valueType;for(let key in ctx.data)pairs3.push({key:keyType._parse(new ParseInputLazyPath(ctx,key,ctx.path,key)),value:valueType._parse(new ParseInputLazyPath(ctx,ctx.data[key],ctx.path,key)),alwaysSet:key in ctx.data});return ctx.common.async?ParseStatus.mergeObjectAsync(status,pairs3):ParseStatus.mergeObjectSync(status,pairs3)}get element(){return this._def.valueType}static create(first,second,third){return second instanceof ZodType?new _ZodRecord({keyType:first,valueType:second,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(third)}):new _ZodRecord({keyType:ZodString.create(),valueType:first,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(second)})}},ZodMap=class extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(input2){let{status,ctx}=this._processInputParams(input2);if(ctx.parsedType!==ZodParsedType.map)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.map,received:ctx.parsedType}),INVALID;let keyType=this._def.keyType,valueType=this._def.valueType,pairs3=[...ctx.data.entries()].map(([key,value],index)=>({key:keyType._parse(new ParseInputLazyPath(ctx,key,ctx.path,[index,"key"])),value:valueType._parse(new ParseInputLazyPath(ctx,value,ctx.path,[index,"value"]))}));if(ctx.common.async){let finalMap=new Map;return Promise.resolve().then(async()=>{for(let pair of pairs3){let key=await pair.key,value=await pair.value;if(key.status==="aborted"||value.status==="aborted")return INVALID;(key.status==="dirty"||value.status==="dirty")&&status.dirty(),finalMap.set(key.value,value.value)}return{status:status.value,value:finalMap}})}else{let finalMap=new Map;for(let pair of pairs3){let key=pair.key,value=pair.value;if(key.status==="aborted"||value.status==="aborted")return INVALID;(key.status==="dirty"||value.status==="dirty")&&status.dirty(),finalMap.set(key.value,value.value)}return{status:status.value,value:finalMap}}}};ZodMap.create=(keyType,valueType,params)=>new ZodMap({valueType,keyType,typeName:ZodFirstPartyTypeKind.ZodMap,...processCreateParams(params)});ZodSet=class _ZodSet extends ZodType{_parse(input2){let{status,ctx}=this._processInputParams(input2);if(ctx.parsedType!==ZodParsedType.set)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.set,received:ctx.parsedType}),INVALID;let def=this._def;def.minSize!==null&&ctx.data.size<def.minSize.value&&(addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:def.minSize.value,type:"set",inclusive:!0,exact:!1,message:def.minSize.message}),status.dirty()),def.maxSize!==null&&ctx.data.size>def.maxSize.value&&(addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:def.maxSize.value,type:"set",inclusive:!0,exact:!1,message:def.maxSize.message}),status.dirty());let valueType=this._def.valueType;function finalizeSet(elements2){let parsedSet=new Set;for(let element of elements2){if(element.status==="aborted")return INVALID;element.status==="dirty"&&status.dirty(),parsedSet.add(element.value)}return{status:status.value,value:parsedSet}}let elements=[...ctx.data.values()].map((item,i3)=>valueType._parse(new ParseInputLazyPath(ctx,item,ctx.path,i3)));return ctx.common.async?Promise.all(elements).then(elements2=>finalizeSet(elements2)):finalizeSet(elements)}min(minSize,message){return new _ZodSet({...this._def,minSize:{value:minSize,message:errorUtil.toString(message)}})}max(maxSize,message){return new _ZodSet({...this._def,maxSize:{value:maxSize,message:errorUtil.toString(message)}})}size(size2,message){return this.min(size2,message).max(size2,message)}nonempty(message){return this.min(1,message)}};ZodSet.create=(valueType,params)=>new ZodSet({valueType,minSize:null,maxSize:null,typeName:ZodFirstPartyTypeKind.ZodSet,...processCreateParams(params)});ZodFunction=class _ZodFunction extends ZodType{constructor(){super(...arguments),this.validate=this.implement}_parse(input2){let{ctx}=this._processInputParams(input2);if(ctx.parsedType!==ZodParsedType.function)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.function,received:ctx.parsedType}),INVALID;function makeArgsIssue(args,error){return makeIssue({data:args,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,getErrorMap(),en_default].filter(x3=>!!x3),issueData:{code:ZodIssueCode.invalid_arguments,argumentsError:error}})}function makeReturnsIssue(returns,error){return makeIssue({data:returns,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,getErrorMap(),en_default].filter(x3=>!!x3),issueData:{code:ZodIssueCode.invalid_return_type,returnTypeError:error}})}let params={errorMap:ctx.common.contextualErrorMap},fn3=ctx.data;if(this._def.returns instanceof ZodPromise){let me3=this;return OK(async function(...args){let error=new ZodError([]),parsedArgs=await me3._def.args.parseAsync(args,params).catch(e4=>{throw error.addIssue(makeArgsIssue(args,e4)),error}),result=await Reflect.apply(fn3,this,parsedArgs);return await me3._def.returns._def.type.parseAsync(result,params).catch(e4=>{throw error.addIssue(makeReturnsIssue(result,e4)),error})})}else{let me3=this;return OK(function(...args){let parsedArgs=me3._def.args.safeParse(args,params);if(!parsedArgs.success)throw new ZodError([makeArgsIssue(args,parsedArgs.error)]);let result=Reflect.apply(fn3,this,parsedArgs.data),parsedReturns=me3._def.returns.safeParse(result,params);if(!parsedReturns.success)throw new ZodError([makeReturnsIssue(result,parsedReturns.error)]);return parsedReturns.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...items){return new _ZodFunction({...this._def,args:ZodTuple.create(items).rest(ZodUnknown.create())})}returns(returnType){return new _ZodFunction({...this._def,returns:returnType})}implement(func){return this.parse(func)}strictImplement(func){return this.parse(func)}static create(args,returns,params){return new _ZodFunction({args:args||ZodTuple.create([]).rest(ZodUnknown.create()),returns:returns||ZodUnknown.create(),typeName:ZodFirstPartyTypeKind.ZodFunction,...processCreateParams(params)})}},ZodLazy=class extends ZodType{get schema(){return this._def.getter()}_parse(input2){let{ctx}=this._processInputParams(input2);return this._def.getter()._parse({data:ctx.data,path:ctx.path,parent:ctx})}};ZodLazy.create=(getter,params)=>new ZodLazy({getter,typeName:ZodFirstPartyTypeKind.ZodLazy,...processCreateParams(params)});ZodLiteral=class extends ZodType{_parse(input2){if(input2.data!==this._def.value){let ctx=this._getOrReturnCtx(input2);return addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_literal,expected:this._def.value}),INVALID}return{status:"valid",value:input2.data}}get value(){return this._def.value}};ZodLiteral.create=(value,params)=>new ZodLiteral({value,typeName:ZodFirstPartyTypeKind.ZodLiteral,...processCreateParams(params)});ZodEnum=class _ZodEnum extends ZodType{_parse(input2){if(typeof input2.data!="string"){let ctx=this._getOrReturnCtx(input2),expectedValues=this._def.values;return addIssueToContext(ctx,{expected:util.joinValues(expectedValues),received:ctx.parsedType,code:ZodIssueCode.invalid_type}),INVALID}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(input2.data)){let ctx=this._getOrReturnCtx(input2),expectedValues=this._def.values;return addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_enum_value,options:expectedValues}),INVALID}return OK(input2.data)}get options(){return this._def.values}get enum(){let enumValues={};for(let val of this._def.values)enumValues[val]=val;return enumValues}get Values(){let enumValues={};for(let val of this._def.values)enumValues[val]=val;return enumValues}get Enum(){let enumValues={};for(let val of this._def.values)enumValues[val]=val;return enumValues}extract(values,newDef=this._def){return _ZodEnum.create(values,{...this._def,...newDef})}exclude(values,newDef=this._def){return _ZodEnum.create(this.options.filter(opt2=>!values.includes(opt2)),{...this._def,...newDef})}};ZodEnum.create=createZodEnum;ZodNativeEnum=class extends ZodType{_parse(input2){let nativeEnumValues=util.getValidEnumValues(this._def.values),ctx=this._getOrReturnCtx(input2);if(ctx.parsedType!==ZodParsedType.string&&ctx.parsedType!==ZodParsedType.number){let expectedValues=util.objectValues(nativeEnumValues);return addIssueToContext(ctx,{expected:util.joinValues(expectedValues),received:ctx.parsedType,code:ZodIssueCode.invalid_type}),INVALID}if(this._cache||(this._cache=new Set(util.getValidEnumValues(this._def.values))),!this._cache.has(input2.data)){let expectedValues=util.objectValues(nativeEnumValues);return addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_enum_value,options:expectedValues}),INVALID}return OK(input2.data)}get enum(){return this._def.values}};ZodNativeEnum.create=(values,params)=>new ZodNativeEnum({values,typeName:ZodFirstPartyTypeKind.ZodNativeEnum,...processCreateParams(params)});ZodPromise=class extends ZodType{unwrap(){return this._def.type}_parse(input2){let{ctx}=this._processInputParams(input2);if(ctx.parsedType!==ZodParsedType.promise&&ctx.common.async===!1)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.promise,received:ctx.parsedType}),INVALID;let promisified=ctx.parsedType===ZodParsedType.promise?ctx.data:Promise.resolve(ctx.data);return OK(promisified.then(data=>this._def.type.parseAsync(data,{path:ctx.path,errorMap:ctx.common.contextualErrorMap})))}};ZodPromise.create=(schema,params)=>new ZodPromise({type:schema,typeName:ZodFirstPartyTypeKind.ZodPromise,...processCreateParams(params)});ZodEffects=class extends ZodType{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===ZodFirstPartyTypeKind.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(input2){let{status,ctx}=this._processInputParams(input2),effect=this._def.effect||null,checkCtx={addIssue:arg=>{addIssueToContext(ctx,arg),arg.fatal?status.abort():status.dirty()},get path(){return ctx.path}};if(checkCtx.addIssue=checkCtx.addIssue.bind(checkCtx),effect.type==="preprocess"){let processed=effect.transform(ctx.data,checkCtx);if(ctx.common.async)return Promise.resolve(processed).then(async processed2=>{if(status.value==="aborted")return INVALID;let result=await this._def.schema._parseAsync({data:processed2,path:ctx.path,parent:ctx});return result.status==="aborted"?INVALID:result.status==="dirty"?DIRTY(result.value):status.value==="dirty"?DIRTY(result.value):result});{if(status.value==="aborted")return INVALID;let result=this._def.schema._parseSync({data:processed,path:ctx.path,parent:ctx});return result.status==="aborted"?INVALID:result.status==="dirty"?DIRTY(result.value):status.value==="dirty"?DIRTY(result.value):result}}if(effect.type==="refinement"){let executeRefinement=acc=>{let result=effect.refinement(acc,checkCtx);if(ctx.common.async)return Promise.resolve(result);if(result instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return acc};if(ctx.common.async===!1){let inner=this._def.schema._parseSync({data:ctx.data,path:ctx.path,parent:ctx});return inner.status==="aborted"?INVALID:(inner.status==="dirty"&&status.dirty(),executeRefinement(inner.value),{status:status.value,value:inner.value})}else return this._def.schema._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}).then(inner=>inner.status==="aborted"?INVALID:(inner.status==="dirty"&&status.dirty(),executeRefinement(inner.value).then(()=>({status:status.value,value:inner.value}))))}if(effect.type==="transform")if(ctx.common.async===!1){let base=this._def.schema._parseSync({data:ctx.data,path:ctx.path,parent:ctx});if(!isValid(base))return INVALID;let result=effect.transform(base.value,checkCtx);if(result instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:status.value,value:result}}else return this._def.schema._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}).then(base=>isValid(base)?Promise.resolve(effect.transform(base.value,checkCtx)).then(result=>({status:status.value,value:result})):INVALID);util.assertNever(effect)}};ZodEffects.create=(schema,effect,params)=>new ZodEffects({schema,typeName:ZodFirstPartyTypeKind.ZodEffects,effect,...processCreateParams(params)});ZodEffects.createWithPreprocess=(preprocess,schema,params)=>new ZodEffects({schema,effect:{type:"preprocess",transform:preprocess},typeName:ZodFirstPartyTypeKind.ZodEffects,...processCreateParams(params)});ZodOptional=class extends ZodType{_parse(input2){return this._getType(input2)===ZodParsedType.undefined?OK(void 0):this._def.innerType._parse(input2)}unwrap(){return this._def.innerType}};ZodOptional.create=(type,params)=>new ZodOptional({innerType:type,typeName:ZodFirstPartyTypeKind.ZodOptional,...processCreateParams(params)});ZodNullable=class extends ZodType{_parse(input2){return this._getType(input2)===ZodParsedType.null?OK(null):this._def.innerType._parse(input2)}unwrap(){return this._def.innerType}};ZodNullable.create=(type,params)=>new ZodNullable({innerType:type,typeName:ZodFirstPartyTypeKind.ZodNullable,...processCreateParams(params)});ZodDefault=class extends ZodType{_parse(input2){let{ctx}=this._processInputParams(input2),data=ctx.data;return ctx.parsedType===ZodParsedType.undefined&&(data=this._def.defaultValue()),this._def.innerType._parse({data,path:ctx.path,parent:ctx})}removeDefault(){return this._def.innerType}};ZodDefault.create=(type,params)=>new ZodDefault({innerType:type,typeName:ZodFirstPartyTypeKind.ZodDefault,defaultValue:typeof params.default=="function"?params.default:()=>params.default,...processCreateParams(params)});ZodCatch=class extends ZodType{_parse(input2){let{ctx}=this._processInputParams(input2),newCtx={...ctx,common:{...ctx.common,issues:[]}},result=this._def.innerType._parse({data:newCtx.data,path:newCtx.path,parent:{...newCtx}});return isAsync(result)?result.then(result2=>({status:"valid",value:result2.status==="valid"?result2.value:this._def.catchValue({get error(){return new ZodError(newCtx.common.issues)},input:newCtx.data})})):{status:"valid",value:result.status==="valid"?result.value:this._def.catchValue({get error(){return new ZodError(newCtx.common.issues)},input:newCtx.data})}}removeCatch(){return this._def.innerType}};ZodCatch.create=(type,params)=>new ZodCatch({innerType:type,typeName:ZodFirstPartyTypeKind.ZodCatch,catchValue:typeof params.catch=="function"?params.catch:()=>params.catch,...processCreateParams(params)});ZodNaN=class extends ZodType{_parse(input2){if(this._getType(input2)!==ZodParsedType.nan){let ctx=this._getOrReturnCtx(input2);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.nan,received:ctx.parsedType}),INVALID}return{status:"valid",value:input2.data}}};ZodNaN.create=params=>new ZodNaN({typeName:ZodFirstPartyTypeKind.ZodNaN,...processCreateParams(params)});BRAND=Symbol("zod_brand"),ZodBranded=class extends ZodType{_parse(input2){let{ctx}=this._processInputParams(input2),data=ctx.data;return this._def.type._parse({data,path:ctx.path,parent:ctx})}unwrap(){return this._def.type}},ZodPipeline=class _ZodPipeline extends ZodType{_parse(input2){let{status,ctx}=this._processInputParams(input2);if(ctx.common.async)return(async()=>{let inResult=await this._def.in._parseAsync({data:ctx.data,path:ctx.path,parent:ctx});return inResult.status==="aborted"?INVALID:inResult.status==="dirty"?(status.dirty(),DIRTY(inResult.value)):this._def.out._parseAsync({data:inResult.value,path:ctx.path,parent:ctx})})();{let inResult=this._def.in._parseSync({data:ctx.data,path:ctx.path,parent:ctx});return inResult.status==="aborted"?INVALID:inResult.status==="dirty"?(status.dirty(),{status:"dirty",value:inResult.value}):this._def.out._parseSync({data:inResult.value,path:ctx.path,parent:ctx})}}static create(a2,b3){return new _ZodPipeline({in:a2,out:b3,typeName:ZodFirstPartyTypeKind.ZodPipeline})}},ZodReadonly=class extends ZodType{_parse(input2){let result=this._def.innerType._parse(input2),freeze=data=>(isValid(data)&&(data.value=Object.freeze(data.value)),data);return isAsync(result)?result.then(data=>freeze(data)):freeze(result)}unwrap(){return this._def.innerType}};ZodReadonly.create=(type,params)=>new ZodReadonly({innerType:type,typeName:ZodFirstPartyTypeKind.ZodReadonly,...processCreateParams(params)});late={object:ZodObject.lazycreate};(function(ZodFirstPartyTypeKind2){ZodFirstPartyTypeKind2.ZodString="ZodString",ZodFirstPartyTypeKind2.ZodNumber="ZodNumber",ZodFirstPartyTypeKind2.ZodNaN="ZodNaN",ZodFirstPartyTypeKind2.ZodBigInt="ZodBigInt",ZodFirstPartyTypeKind2.ZodBoolean="ZodBoolean",ZodFirstPartyTypeKind2.ZodDate="ZodDate",ZodFirstPartyTypeKind2.ZodSymbol="ZodSymbol",ZodFirstPartyTypeKind2.ZodUndefined="ZodUndefined",ZodFirstPartyTypeKind2.ZodNull="ZodNull",ZodFirstPartyTypeKind2.ZodAny="ZodAny",ZodFirstPartyTypeKind2.ZodUnknown="ZodUnknown",ZodFirstPartyTypeKind2.ZodNever="ZodNever",ZodFirstPartyTypeKind2.ZodVoid="ZodVoid",ZodFirstPartyTypeKind2.ZodArray="ZodArray",ZodFirstPartyTypeKind2.ZodObject="ZodObject",ZodFirstPartyTypeKind2.ZodUnion="ZodUnion",ZodFirstPartyTypeKind2.ZodDiscriminatedUnion="ZodDiscriminatedUnion",ZodFirstPartyTypeKind2.ZodIntersection="ZodIntersection",ZodFirstPartyTypeKind2.ZodTuple="ZodTuple",ZodFirstPartyTypeKind2.ZodRecord="ZodRecord",ZodFirstPartyTypeKind2.ZodMap="ZodMap",ZodFirstPartyTypeKind2.ZodSet="ZodSet",ZodFirstPartyTypeKind2.ZodFunction="ZodFunction",ZodFirstPartyTypeKind2.ZodLazy="ZodLazy",ZodFirstPartyTypeKind2.ZodLiteral="ZodLiteral",ZodFirstPartyTypeKind2.ZodEnum="ZodEnum",ZodFirstPartyTypeKind2.ZodEffects="ZodEffects",ZodFirstPartyTypeKind2.ZodNativeEnum="ZodNativeEnum",ZodFirstPartyTypeKind2.ZodOptional="ZodOptional",ZodFirstPartyTypeKind2.ZodNullable="ZodNullable",ZodFirstPartyTypeKind2.ZodDefault="ZodDefault",ZodFirstPartyTypeKind2.ZodCatch="ZodCatch",ZodFirstPartyTypeKind2.ZodPromise="ZodPromise",ZodFirstPartyTypeKind2.ZodBranded="ZodBranded",ZodFirstPartyTypeKind2.ZodPipeline="ZodPipeline",ZodFirstPartyTypeKind2.ZodReadonly="ZodReadonly"})(ZodFirstPartyTypeKind||(ZodFirstPartyTypeKind={}));instanceOfType=(cls,params={message:`Input not instance of ${cls.name}`})=>custom(data=>data instanceof cls,params),stringType=ZodString.create,numberType=ZodNumber.create,nanType=ZodNaN.create,bigIntType=ZodBigInt.create,booleanType=ZodBoolean.create,dateType=ZodDate.create,symbolType=ZodSymbol.create,undefinedType=ZodUndefined.create,nullType=ZodNull.create,anyType=ZodAny.create,unknownType=ZodUnknown.create,neverType=ZodNever.create,voidType=ZodVoid.create,arrayType=ZodArray.create,objectType=ZodObject.create,strictObjectType=ZodObject.strictCreate,unionType=ZodUnion.create,discriminatedUnionType=ZodDiscriminatedUnion.create,intersectionType=ZodIntersection.create,tupleType=ZodTuple.create,recordType=ZodRecord.create,mapType=ZodMap.create,setType=ZodSet.create,functionType=ZodFunction.create,lazyType=ZodLazy.create,literalType=ZodLiteral.create,enumType=ZodEnum.create,nativeEnumType=ZodNativeEnum.create,promiseType=ZodPromise.create,effectsType=ZodEffects.create,optionalType=ZodOptional.create,nullableType=ZodNullable.create,preprocessType=ZodEffects.createWithPreprocess,pipelineType=ZodPipeline.create,ostring=()=>stringType().optional(),onumber=()=>numberType().optional(),oboolean=()=>booleanType().optional(),coerce={string:(arg=>ZodString.create({...arg,coerce:!0})),number:(arg=>ZodNumber.create({...arg,coerce:!0})),boolean:(arg=>ZodBoolean.create({...arg,coerce:!0})),bigint:(arg=>ZodBigInt.create({...arg,coerce:!0})),date:(arg=>ZodDate.create({...arg,coerce:!0}))},NEVER=INVALID}});var external_exports={};__export(external_exports,{BRAND:()=>BRAND,DIRTY:()=>DIRTY,EMPTY_PATH:()=>EMPTY_PATH,INVALID:()=>INVALID,NEVER:()=>NEVER,OK:()=>OK,ParseStatus:()=>ParseStatus,Schema:()=>ZodType,ZodAny:()=>ZodAny,ZodArray:()=>ZodArray,ZodBigInt:()=>ZodBigInt,ZodBoolean:()=>ZodBoolean,ZodBranded:()=>ZodBranded,ZodCatch:()=>ZodCatch,ZodDate:()=>ZodDate,ZodDefault:()=>ZodDefault,ZodDiscriminatedUnion:()=>ZodDiscriminatedUnion,ZodEffects:()=>ZodEffects,ZodEnum:()=>ZodEnum,ZodError:()=>ZodError,ZodFirstPartyTypeKind:()=>ZodFirstPartyTypeKind,ZodFunction:()=>ZodFunction,ZodIntersection:()=>ZodIntersection,ZodIssueCode:()=>ZodIssueCode,ZodLazy:()=>ZodLazy,ZodLiteral:()=>ZodLiteral,ZodMap:()=>ZodMap,ZodNaN:()=>ZodNaN,ZodNativeEnum:()=>ZodNativeEnum,ZodNever:()=>ZodNever,ZodNull:()=>ZodNull,ZodNullable:()=>ZodNullable,ZodNumber:()=>ZodNumber,ZodObject:()=>ZodObject,ZodOptional:()=>ZodOptional,ZodParsedType:()=>ZodParsedType,ZodPipeline:()=>ZodPipeline,ZodPromise:()=>ZodPromise,ZodReadonly:()=>ZodReadonly,ZodRecord:()=>ZodRecord,ZodSchema:()=>ZodType,ZodSet:()=>ZodSet,ZodString:()=>ZodString,ZodSymbol:()=>ZodSymbol,ZodTransformer:()=>ZodEffects,ZodTuple:()=>ZodTuple,ZodType:()=>ZodType,ZodUndefined:()=>ZodUndefined,ZodUnion:()=>ZodUnion,ZodUnknown:()=>ZodUnknown,ZodVoid:()=>ZodVoid,addIssueToContext:()=>addIssueToContext,any:()=>anyType,array:()=>arrayType,bigint:()=>bigIntType,boolean:()=>booleanType,coerce:()=>coerce,custom:()=>custom,date:()=>dateType,datetimeRegex:()=>datetimeRegex,defaultErrorMap:()=>en_default,discriminatedUnion:()=>discriminatedUnionType,effect:()=>effectsType,enum:()=>enumType,function:()=>functionType,getErrorMap:()=>getErrorMap,getParsedType:()=>getParsedType,instanceof:()=>instanceOfType,intersection:()=>intersectionType,isAborted:()=>isAborted,isAsync:()=>isAsync,isDirty:()=>isDirty,isValid:()=>isValid,late:()=>late,lazy:()=>lazyType,literal:()=>literalType,makeIssue:()=>makeIssue,map:()=>mapType,nan:()=>nanType,nativeEnum:()=>nativeEnumType,never:()=>neverType,null:()=>nullType,nullable:()=>nullableType,number:()=>numberType,object:()=>objectType,objectUtil:()=>objectUtil,oboolean:()=>oboolean,onumber:()=>onumber,optional:()=>optionalType,ostring:()=>ostring,pipeline:()=>pipelineType,preprocess:()=>preprocessType,promise:()=>promiseType,quotelessJson:()=>quotelessJson,record:()=>recordType,set:()=>setType,setErrorMap:()=>setErrorMap,strictObject:()=>strictObjectType,string:()=>stringType,symbol:()=>symbolType,transformer:()=>effectsType,tuple:()=>tupleType,undefined:()=>undefinedType,union:()=>unionType,unknown:()=>unknownType,util:()=>util,void:()=>voidType});var init_external=__esm({"node_modules/zod/v3/external.js"(){"use strict";init_errors();init_parseUtil();init_typeAliases();init_util();init_types();init_ZodError()}});var init_zod=__esm({"node_modules/zod/index.js"(){"use strict";init_external();init_external()}});var dist_exports={};__export(dist_exports,{all_layers:()=>all_layers,any_circuit_element:()=>any_circuit_element,any_soup_element:()=>any_soup_element,any_source_component:()=>any_source_component,battery_capacity:()=>battery_capacity,brep_shape:()=>brep_shape,cad_component:()=>cad_component,capacitance:()=>capacitance,circuit_json_footprint_load_error:()=>circuit_json_footprint_load_error,current:()=>current,distance:()=>distance,duration_ms:()=>duration_ms,experiment_type:()=>experiment_type,external_footprint_load_error:()=>external_footprint_load_error,frequency:()=>frequency,getZodPrefixedIdWithDefault:()=>getZodPrefixedIdWithDefault,inductance:()=>inductance,layer_ref:()=>layer_ref,layer_string:()=>layer_string,length:()=>length,ms:()=>ms,ninePointAnchor:()=>ninePointAnchor,pcbRenderLayer:()=>pcbRenderLayer,pcb_autorouting_error:()=>pcb_autorouting_error,pcb_board:()=>pcb_board,pcb_breakout_point:()=>pcb_breakout_point,pcb_component:()=>pcb_component,pcb_component_invalid_layer_error:()=>pcb_component_invalid_layer_error,pcb_component_outside_board_error:()=>pcb_component_outside_board_error,pcb_copper_pour:()=>pcb_copper_pour,pcb_copper_pour_brep:()=>pcb_copper_pour_brep,pcb_copper_pour_polygon:()=>pcb_copper_pour_polygon,pcb_copper_pour_rect:()=>pcb_copper_pour_rect,pcb_copper_text:()=>pcb_copper_text,pcb_courtyard_outline:()=>pcb_courtyard_outline,pcb_courtyard_polygon:()=>pcb_courtyard_polygon,pcb_courtyard_rect:()=>pcb_courtyard_rect,pcb_cutout:()=>pcb_cutout,pcb_cutout_circle:()=>pcb_cutout_circle,pcb_cutout_path:()=>pcb_cutout_path,pcb_cutout_polygon:()=>pcb_cutout_polygon,pcb_cutout_rect:()=>pcb_cutout_rect,pcb_fabrication_note_dimension:()=>pcb_fabrication_note_dimension,pcb_fabrication_note_path:()=>pcb_fabrication_note_path,pcb_fabrication_note_rect:()=>pcb_fabrication_note_rect,pcb_fabrication_note_text:()=>pcb_fabrication_note_text,pcb_footprint_overlap_error:()=>pcb_footprint_overlap_error,pcb_ground_plane:()=>pcb_ground_plane,pcb_ground_plane_region:()=>pcb_ground_plane_region,pcb_group:()=>pcb_group,pcb_hole:()=>pcb_hole,pcb_hole_circle_or_square_shape:()=>pcb_hole_circle_or_square_shape,pcb_hole_circle_shape:()=>pcb_hole_circle_shape,pcb_hole_oval_shape:()=>pcb_hole_oval_shape,pcb_hole_pill_shape:()=>pcb_hole_pill_shape,pcb_hole_rect_shape:()=>pcb_hole_rect_shape,pcb_hole_rotated_pill_shape:()=>pcb_hole_rotated_pill_shape,pcb_keepout:()=>pcb_keepout,pcb_manual_edit_conflict_warning:()=>pcb_manual_edit_conflict_warning,pcb_missing_footprint_error:()=>pcb_missing_footprint_error,pcb_net:()=>pcb_net,pcb_note_dimension:()=>pcb_note_dimension,pcb_note_line:()=>pcb_note_line,pcb_note_path:()=>pcb_note_path,pcb_note_rect:()=>pcb_note_rect,pcb_note_text:()=>pcb_note_text,pcb_panel:()=>pcb_panel,pcb_placement_error:()=>pcb_placement_error,pcb_plated_hole:()=>pcb_plated_hole,pcb_port:()=>pcb_port,pcb_port_not_connected_error:()=>pcb_port_not_connected_error,pcb_port_not_matched_error:()=>pcb_port_not_matched_error,pcb_route_hint:()=>pcb_route_hint,pcb_route_hints:()=>pcb_route_hints,pcb_silkscreen_circle:()=>pcb_silkscreen_circle,pcb_silkscreen_line:()=>pcb_silkscreen_line,pcb_silkscreen_oval:()=>pcb_silkscreen_oval,pcb_silkscreen_path:()=>pcb_silkscreen_path,pcb_silkscreen_pill:()=>pcb_silkscreen_pill,pcb_silkscreen_rect:()=>pcb_silkscreen_rect,pcb_silkscreen_text:()=>pcb_silkscreen_text,pcb_smtpad:()=>pcb_smtpad,pcb_smtpad_pill:()=>pcb_smtpad_pill,pcb_solder_paste:()=>pcb_solder_paste,pcb_text:()=>pcb_text,pcb_thermal_spoke:()=>pcb_thermal_spoke,pcb_trace:()=>pcb_trace,pcb_trace_error:()=>pcb_trace_error,pcb_trace_hint:()=>pcb_trace_hint,pcb_trace_missing_error:()=>pcb_trace_missing_error,pcb_trace_route_point:()=>pcb_trace_route_point,pcb_trace_route_point_via:()=>pcb_trace_route_point_via,pcb_trace_route_point_wire:()=>pcb_trace_route_point_wire,pcb_via:()=>pcb_via,pcb_via_clearance_error:()=>pcb_via_clearance_error,point:()=>point,point3:()=>point3,point_with_bulge:()=>point_with_bulge,port_arrangement:()=>port_arrangement,position:()=>position,position3:()=>position3,resistance:()=>resistance,ring:()=>ring,rotation:()=>rotation,route_hint_point:()=>route_hint_point,schematic_arc:()=>schematic_arc,schematic_box:()=>schematic_box,schematic_circle:()=>schematic_circle,schematic_component:()=>schematic_component,schematic_component_port_arrangement_by_sides:()=>schematic_component_port_arrangement_by_sides,schematic_component_port_arrangement_by_size:()=>schematic_component_port_arrangement_by_size,schematic_debug_line:()=>schematic_debug_line,schematic_debug_object:()=>schematic_debug_object,schematic_debug_object_base:()=>schematic_debug_object_base,schematic_debug_point:()=>schematic_debug_point,schematic_debug_rect:()=>schematic_debug_rect,schematic_error:()=>schematic_error,schematic_group:()=>schematic_group,schematic_layout_error:()=>schematic_layout_error,schematic_line:()=>schematic_line,schematic_manual_edit_conflict_warning:()=>schematic_manual_edit_conflict_warning,schematic_net_label:()=>schematic_net_label,schematic_path:()=>schematic_path,schematic_pin_styles:()=>schematic_pin_styles,schematic_port:()=>schematic_port,schematic_rect:()=>schematic_rect,schematic_sheet:()=>schematic_sheet,schematic_table:()=>schematic_table,schematic_table_cell:()=>schematic_table_cell,schematic_text:()=>schematic_text,schematic_trace:()=>schematic_trace,schematic_voltage_probe:()=>schematic_voltage_probe,simulation_ac_current_source:()=>simulation_ac_current_source,simulation_ac_voltage_source:()=>simulation_ac_voltage_source,simulation_current_source:()=>simulation_current_source,simulation_dc_current_source:()=>simulation_dc_current_source,simulation_dc_voltage_source:()=>simulation_dc_voltage_source,simulation_experiment:()=>simulation_experiment,simulation_op_amp:()=>simulation_op_amp,simulation_switch:()=>simulation_switch,simulation_transient_voltage_graph:()=>simulation_transient_voltage_graph,simulation_unknown_experiment_error:()=>simulation_unknown_experiment_error,simulation_voltage_probe:()=>simulation_voltage_probe,simulation_voltage_source:()=>simulation_voltage_source,size:()=>size,source_board:()=>source_board,source_component_base:()=>source_component_base,source_component_internal_connection:()=>source_component_internal_connection,source_failed_to_create_component_error:()=>source_failed_to_create_component_error,source_group:()=>source_group,source_interconnect:()=>source_interconnect,source_manually_placed_via:()=>source_manually_placed_via,source_missing_property_error:()=>source_missing_property_error,source_net:()=>source_net,source_pcb_ground_plane:()=>source_pcb_ground_plane,source_pin_missing_trace_warning:()=>source_pin_missing_trace_warning,source_pin_must_be_connected_error:()=>source_pin_must_be_connected_error,source_port:()=>source_port,source_project_metadata:()=>source_project_metadata,source_property_ignored_warning:()=>source_property_ignored_warning,source_simple_battery:()=>source_simple_battery,source_simple_capacitor:()=>source_simple_capacitor,source_simple_chip:()=>source_simple_chip,source_simple_crystal:()=>source_simple_crystal,source_simple_diode:()=>source_simple_diode,source_simple_fiducial:()=>source_simple_fiducial,source_simple_ground:()=>source_simple_ground,source_simple_inductor:()=>source_simple_inductor,source_simple_led:()=>source_simple_led,source_simple_mosfet:()=>source_simple_mosfet,source_simple_op_amp:()=>source_simple_op_amp,source_simple_pin_header:()=>source_simple_pin_header,source_simple_pinout:()=>source_simple_pinout,source_simple_potentiometer:()=>source_simple_potentiometer,source_simple_power_source:()=>source_simple_power_source,source_simple_push_button:()=>source_simple_push_button,source_simple_resistor:()=>source_simple_resistor,source_simple_resonator:()=>source_simple_resonator,source_simple_switch:()=>source_simple_switch,source_simple_test_point:()=>source_simple_test_point,source_simple_transistor:()=>source_simple_transistor,source_simple_voltage_probe:()=>source_simple_voltage_probe,source_trace:()=>source_trace,source_trace_not_connected_error:()=>source_trace_not_connected_error,supplier_name:()=>supplier_name,time:()=>time,timestamp:()=>timestamp,unknown_error_finding_part:()=>unknown_error_finding_part,visible_layer:()=>visible_layer,voltage:()=>voltage,wave_shape:()=>wave_shape});function getBaseTscircuitUnit(unit){for(let[baseUnit,info]of Object.entries(unitMappings))if(unit in info.variants)return{baseUnit:info.baseUnit,conversionFactor:info.variants[unit]};return{baseUnit:unit,conversionFactor:1}}function parseAndConvertSiUnit(v4){if(v4==null)return{parsedUnit:null,unitOfValue:null,value:null};if(typeof v4=="string"&&v4.match(/^-?[\d\.]+$/))return{value:Number.parseFloat(v4),parsedUnit:null,unitOfValue:null};if(typeof v4=="number")return{value:v4,parsedUnit:null,unitOfValue:null};if(typeof v4=="object"&&"x"in v4&&"y"in v4){let{parsedUnit,unitOfValue}=parseAndConvertSiUnit(v4.x),xResult=parseAndConvertSiUnit(v4.x),yResult=parseAndConvertSiUnit(v4.y);return xResult.value===null||yResult.value===null?{parsedUnit:null,unitOfValue:null,value:null}:{parsedUnit,unitOfValue,value:{x:xResult.value,y:yResult.value}}}let unit_reversed=v4.toString().split("").reverse().join("").match(/[^\d\s]+/)?.[0];if(!unit_reversed)throw new Error(`Could not determine unit: "${v4}"`);let unit=unit_reversed.split("").reverse().join(""),numberPart=v4.slice(0,-unit.length);if(unit in si_prefix_multiplier&&!unitMappingAndVariantSuffixes.has(unit)){let siMultiplier=si_prefix_multiplier[unit];return{parsedUnit:null,unitOfValue:null,value:Number.parseFloat(numberPart)*siMultiplier}}let{baseUnit,conversionFactor}=getBaseTscircuitUnit(unit);return{parsedUnit:unit,unitOfValue:baseUnit,value:conversionFactor*Number.parseFloat(numberPart)}}var unitMappings,unitMappingAndVariantSuffixes,si_prefix_multiplier,resistance,capacitance,inductance,voltage,length,frequency,distance,current,duration_ms,time,ms,timestamp,rotation,battery_capacity,expectTypesMatch,expectStringUnionsMatch,point,position,point3,position3,size,randomId,getZodPrefixedIdWithDefault,ninePointAnchor,pcbRenderLayer,supplier_name,source_component_base,source_simple_capacitor,source_simple_resistor,source_simple_diode,source_simple_fiducial,source_simple_led,source_simple_ground,source_simple_chip,source_simple_power_source,source_simple_fuse,source_simple_battery,source_simple_inductor,source_simple_push_button,source_simple_potentiometer,source_simple_crystal,source_simple_pin_header,source_simple_pinout,source_simple_resonator,source_simple_transistor,source_simple_test_point,source_simple_mosfet,source_simple_op_amp,source_simple_switch,source_project_metadata,source_missing_property_error,source_failed_to_create_component_error,source_trace_not_connected_error,source_property_ignored_warning,source_pin_missing_trace_warning,source_simple_voltage_probe,source_interconnect,any_source_component,source_port,source_component_internal_connection,source_trace,source_group,source_net,source_board,source_pcb_ground_plane,all_layers,layer_string,layer_ref,visible_layer,source_manually_placed_via,source_pin_must_be_connected_error,unknown_error_finding_part,schematic_box,schematic_path,schematic_pin_styles,schematic_component_port_arrangement_by_size,schematic_component_port_arrangement_by_sides,port_arrangement,schematic_component,schematic_line,schematic_rect,schematic_circle,schematic_arc,schematic_trace,fivePointAnchor,schematic_text,schematic_port,schematic_net_label,schematic_error,schematic_layout_error,schematic_debug_object_base,schematic_debug_rect,schematic_debug_line,schematic_debug_point,schematic_debug_object,schematic_voltage_probe,schematic_manual_edit_conflict_warning,schematic_group,schematic_table,schematic_table_cell,schematic_sheet,point_with_bulge,ring,brep_shape,pcb_route_hint,pcb_route_hints,route_hint_point,pcb_component,pcb_hole_circle,pcb_hole_circle_shape,pcb_hole_rect,pcb_hole_rect_shape,pcb_hole_circle_or_square,pcb_hole_circle_or_square_shape,pcb_hole_oval,pcb_hole_oval_shape,pcb_hole_pill,pcb_hole_pill_shape,pcb_hole_rotated_pill,pcb_hole_rotated_pill_shape,pcb_hole,pcb_plated_hole_circle,pcb_plated_hole_oval,pcb_circular_hole_with_rect_pad,pcb_pill_hole_with_rect_pad,pcb_rotated_pill_hole_with_rect_pad,pcb_hole_with_polygon_pad,pcb_plated_hole,pcb_port,pcb_smtpad_circle,pcb_smtpad_rect,pcb_smtpad_rotated_rect,pcb_smtpad_pill,pcb_smtpad_rotated_pill,pcb_smtpad_polygon,pcb_smtpad,pcb_solder_paste_circle,pcb_solder_paste_rect,pcb_solder_paste_pill,pcb_solder_paste_rotated_rect,pcb_solder_paste_oval,pcb_solder_paste,pcb_text,pcb_trace_route_point_wire,pcb_trace_route_point_via,pcb_trace_route_point,pcb_trace,pcb_trace_error,pcb_trace_missing_error,pcb_port_not_matched_error,pcb_port_not_connected_error,pcb_net,pcb_via,pcb_board,pcb_panel,pcb_placement_error,pcb_trace_hint,pcb_silkscreen_line,pcb_silkscreen_path,pcb_silkscreen_text,pcb_copper_text,pcb_silkscreen_rect,pcb_silkscreen_circle,pcb_silkscreen_oval,pcb_silkscreen_pill,pcb_fabrication_note_text,pcb_fabrication_note_path,pcb_fabrication_note_rect,pcb_fabrication_note_dimension,pcb_note_text,pcb_note_rect,pcb_note_path,pcb_note_line,pcb_note_dimension,pcb_footprint_overlap_error,pcb_keepout,pcb_cutout_base,pcb_cutout_rect,pcb_cutout_circle,pcb_cutout_polygon,pcb_cutout_path,pcb_cutout,pcb_missing_footprint_error,external_footprint_load_error,circuit_json_footprint_load_error,pcb_group,pcb_autorouting_error,pcb_manual_edit_conflict_warning,pcb_breakout_point,pcb_ground_plane,pcb_ground_plane_region,pcb_thermal_spoke,pcb_copper_pour_base,pcb_copper_pour_rect,pcb_copper_pour_brep,pcb_copper_pour_polygon,pcb_copper_pour,pcb_component_outside_board_error,pcb_component_invalid_layer_error,pcb_via_clearance_error,pcb_courtyard_rect,pcb_courtyard_outline,pcb_courtyard_polygon,cad_component,wave_shape,percentage,simulation_dc_voltage_source,simulation_ac_voltage_source,simulation_voltage_source,percentage2,simulation_dc_current_source,simulation_ac_current_source,simulation_current_source,experiment_type,simulation_experiment,simulation_transient_voltage_graph,simulation_switch,simulation_voltage_probe,simulation_unknown_experiment_error,simulation_op_amp,any_circuit_element,any_soup_element,init_dist=__esm({"node_modules/circuit-json/dist/index.mjs"(){"use strict";init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();init_zod();unitMappings={Hz:{baseUnit:"Hz",variants:{MHz:1e6,kHz:1e3,Hz:1}},g:{baseUnit:"g",variants:{kg:1e3,g:1}},\u03A9:{baseUnit:"\u03A9",variants:{m\u03A9:.001,\u03A9:1,k\u03A9:1e3,K\u03A9:1e3,kohm:1e3,M\u03A9:1e6,G\u03A9:1e9,T\u03A9:1e12}},V:{baseUnit:"V",variants:{mV:.001,V:1,kV:1e3,KV:1e3,MV:1e6,GV:1e9,TV:1e12}},A:{baseUnit:"A",variants:{\u00B5A:1e-6,mA:.001,ma:.001,A:1,kA:1e3,MA:1e6}},F:{baseUnit:"F",variants:{pF:1e-12,nF:1e-9,\u00B5F: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:{fs:1e-12,ps:1e-9,ns:1e-6,us:.001,\u00B5s:.001,ms:1,s:1e3}},mm:{baseUnit:"mm",variants:{nm:1e-6,\u00B5m:.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}}},unitMappingAndVariantSuffixes=new Set;for(let[baseUnit,info]of Object.entries(unitMappings)){unitMappingAndVariantSuffixes.add(baseUnit);for(let variant of Object.keys(info.variants))unitMappingAndVariantSuffixes.add(variant)}si_prefix_multiplier={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,\u00B5:1e-6,nano:1e-9,n:1e-9,pico:1e-12,p:1e-12};resistance=external_exports.string().or(external_exports.number()).transform(v4=>parseAndConvertSiUnit(v4).value),capacitance=external_exports.string().or(external_exports.number()).transform(v4=>parseAndConvertSiUnit(v4).value).transform(value=>Number.parseFloat(value.toPrecision(12))),inductance=external_exports.string().or(external_exports.number()).transform(v4=>parseAndConvertSiUnit(v4).value),voltage=external_exports.string().or(external_exports.number()).transform(v4=>parseAndConvertSiUnit(v4).value),length=external_exports.string().or(external_exports.number()).transform(v4=>parseAndConvertSiUnit(v4).value),frequency=external_exports.string().or(external_exports.number()).transform(v4=>parseAndConvertSiUnit(v4).value),distance=length,current=external_exports.string().or(external_exports.number()).transform(v4=>parseAndConvertSiUnit(v4).value),duration_ms=external_exports.string().or(external_exports.number()).transform(v4=>parseAndConvertSiUnit(v4).value),time=duration_ms,ms=duration_ms,timestamp=external_exports.string().datetime(),rotation=external_exports.string().or(external_exports.number()).transform(arg=>typeof arg=="number"?arg:arg.endsWith("deg")?Number.parseFloat(arg.split("deg")[0]):arg.endsWith("rad")?Number.parseFloat(arg.split("rad")[0])*180/Math.PI:Number.parseFloat(arg)),battery_capacity=external_exports.number().or(external_exports.string().endsWith("mAh")).transform(v4=>{if(typeof v4=="string"){let valString=v4.replace("mAh",""),num=Number.parseFloat(valString);if(Number.isNaN(num))throw new Error("Invalid capacity");return num}return v4}).describe("Battery capacity in mAh"),expectTypesMatch=shouldBe=>{};expectTypesMatch("extra props b");expectTypesMatch("missing props b");expectTypesMatch(!0);expectTypesMatch("mismatched prop types: a");expectStringUnionsMatch=shouldBe=>{};expectStringUnionsMatch(!0);expectStringUnionsMatch('T1 has extra: "c", T2 has extra: "d"');expectStringUnionsMatch('T1 has extra: "c"');expectStringUnionsMatch('T2 has extra: "c"');expectStringUnionsMatch('T1 has extra: "d", T2 has extra: "c"');expectStringUnionsMatch(!0);point=external_exports.object({x:distance,y:distance}),position=point;expectTypesMatch(!0);expectTypesMatch(!0);point3=external_exports.object({x:distance,y:distance,z:distance}),position3=point3;expectTypesMatch(!0);size=external_exports.object({width:external_exports.number(),height:external_exports.number()});expectTypesMatch(!0);randomId=length3=>{let chars2="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";return Array.from({length:length3},()=>chars2[Math.floor(Math.random()*chars2.length)]).join("")},getZodPrefixedIdWithDefault=prefix=>external_exports.string().optional().default(()=>`${prefix}_${randomId(10)}`),ninePointAnchor=external_exports.enum(["top_left","top_center","top_right","center_left","center","center_right","bottom_left","bottom_center","bottom_right"]);expectTypesMatch(!0);pcbRenderLayer=external_exports.enum(["top_silkscreen","bottom_silkscreen","top_copper","bottom_copper","top_soldermask","bottom_soldermask","top_fabrication_note","bottom_fabrication_note","top_user_note","bottom_user_note","inner1_copper","inner2_copper","inner3_copper","inner4_copper","inner5_copper","inner6_copper","edge_cuts","drill"]);expectTypesMatch(!0);supplier_name=external_exports.enum(["jlcpcb","macrofab","pcbway","digikey","mouser","lcsc"]);expectTypesMatch(!0);source_component_base=external_exports.object({type:external_exports.literal("source_component"),ftype:external_exports.string().optional(),source_component_id:external_exports.string(),name:external_exports.string(),manufacturer_part_number:external_exports.string().optional(),supplier_part_numbers:external_exports.record(supplier_name,external_exports.array(external_exports.string())).optional(),display_value:external_exports.string().optional(),display_name:external_exports.string().optional(),are_pins_interchangeable:external_exports.boolean().optional(),internally_connected_source_port_ids:external_exports.array(external_exports.array(external_exports.string())).optional(),source_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional()});expectTypesMatch(!0);source_simple_capacitor=source_component_base.extend({ftype:external_exports.literal("simple_capacitor"),capacitance,max_voltage_rating:voltage.optional(),display_capacitance:external_exports.string().optional(),max_decoupling_trace_length:distance.optional()});expectTypesMatch(!0);source_simple_resistor=source_component_base.extend({ftype:external_exports.literal("simple_resistor"),resistance,display_resistance:external_exports.string().optional()});expectTypesMatch(!0);source_simple_diode=source_component_base.extend({ftype:external_exports.literal("simple_diode")});expectTypesMatch(!0);source_simple_fiducial=source_component_base.extend({ftype:external_exports.literal("simple_fiducial")});expectTypesMatch(!0);source_simple_led=source_simple_diode.extend({ftype:external_exports.literal("simple_led"),color:external_exports.string().optional(),wavelength:external_exports.string().optional()});expectTypesMatch(!0);source_simple_ground=source_component_base.extend({ftype:external_exports.literal("simple_ground")});expectTypesMatch(!0);source_simple_chip=source_component_base.extend({ftype:external_exports.literal("simple_chip")});expectTypesMatch(!0);source_simple_power_source=source_component_base.extend({ftype:external_exports.literal("simple_power_source"),voltage});expectTypesMatch(!0);source_simple_fuse=source_component_base.extend({ftype:external_exports.literal("simple_fuse"),current_rating_amps:external_exports.number().describe("Nominal current in amps the fuse is rated for"),voltage_rating_volts:external_exports.number().describe("Voltage rating in volts, e.g. \xB15V would be 5")});expectTypesMatch(!0);source_simple_battery=source_component_base.extend({ftype:external_exports.literal("simple_battery"),capacity:battery_capacity});expectTypesMatch(!0);source_simple_inductor=source_component_base.extend({ftype:external_exports.literal("simple_inductor"),inductance,max_current_rating:external_exports.number().optional()});expectTypesMatch(!0);source_simple_push_button=source_component_base.extend({ftype:external_exports.literal("simple_push_button")});expectTypesMatch(!0);source_simple_potentiometer=source_component_base.extend({ftype:external_exports.literal("simple_potentiometer"),max_resistance:resistance});expectTypesMatch(!0);source_simple_crystal=source_component_base.extend({ftype:external_exports.literal("simple_crystal"),frequency:external_exports.number().describe("Frequency in Hz"),load_capacitance:external_exports.number().optional().describe("Load capacitance in pF")});expectTypesMatch(!0);source_simple_pin_header=source_component_base.extend({ftype:external_exports.literal("simple_pin_header"),pin_count:external_exports.number(),gender:external_exports.enum(["male","female"]).optional().default("male")});expectTypesMatch(!0);source_simple_pinout=source_component_base.extend({ftype:external_exports.literal("simple_pinout")});expectTypesMatch(!0);source_simple_resonator=source_component_base.extend({ftype:external_exports.literal("simple_resonator"),load_capacitance:capacitance,equivalent_series_resistance:resistance.optional(),frequency});expectTypesMatch(!0);source_simple_transistor=source_component_base.extend({ftype:external_exports.literal("simple_transistor"),transistor_type:external_exports.enum(["npn","pnp"])});expectTypesMatch(!0);source_simple_test_point=source_component_base.extend({ftype:external_exports.literal("simple_test_point"),footprint_variant:external_exports.enum(["pad","through_hole"]).optional(),pad_shape:external_exports.enum(["rect","circle"]).optional(),pad_diameter:external_exports.union([external_exports.number(),external_exports.string()]).optional(),hole_diameter:external_exports.union([external_exports.number(),external_exports.string()]).optional(),width:external_exports.union([external_exports.number(),external_exports.string()]).optional(),height:external_exports.union([external_exports.number(),external_exports.string()]).optional()});expectTypesMatch(!0);source_simple_mosfet=source_component_base.extend({ftype:external_exports.literal("simple_mosfet"),channel_type:external_exports.enum(["n","p"]),mosfet_mode:external_exports.enum(["enhancement","depletion"])});expectTypesMatch(!0);source_simple_op_amp=source_component_base.extend({ftype:external_exports.literal("simple_op_amp")});expectTypesMatch(!0);source_simple_switch=source_component_base.extend({ftype:external_exports.literal("simple_switch")});expectTypesMatch(!0);source_project_metadata=external_exports.object({type:external_exports.literal("source_project_metadata"),name:external_exports.string().optional(),software_used_string:external_exports.string().optional(),project_url:external_exports.string().optional(),created_at:timestamp.optional()});expectTypesMatch(!0);source_missing_property_error=external_exports.object({type:external_exports.literal("source_missing_property_error"),source_missing_property_error_id:getZodPrefixedIdWithDefault("source_missing_property_error"),source_component_id:external_exports.string(),property_name:external_exports.string(),subcircuit_id:external_exports.string().optional(),error_type:external_exports.literal("source_missing_property_error").default("source_missing_property_error"),message:external_exports.string()}).describe("The source code is missing a property");expectTypesMatch(!0);source_failed_to_create_component_error=external_exports.object({type:external_exports.literal("source_failed_to_create_component_error"),source_failed_to_create_component_error_id:getZodPrefixedIdWithDefault("source_failed_to_create_component_error"),error_type:external_exports.literal("source_failed_to_create_component_error").default("source_failed_to_create_component_error"),component_name:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),parent_source_component_id:external_exports.string().optional(),message:external_exports.string(),pcb_center:external_exports.object({x:external_exports.number().optional(),y:external_exports.number().optional()}).optional(),schematic_center:external_exports.object({x:external_exports.number().optional(),y:external_exports.number().optional()}).optional()}).describe("Error emitted when a component fails to be constructed");expectTypesMatch(!0);source_trace_not_connected_error=external_exports.object({type:external_exports.literal("source_trace_not_connected_error"),source_trace_not_connected_error_id:getZodPrefixedIdWithDefault("source_trace_not_connected_error"),error_type:external_exports.literal("source_trace_not_connected_error").default("source_trace_not_connected_error"),message:external_exports.string(),subcircuit_id:external_exports.string().optional(),source_group_id:external_exports.string().optional(),source_trace_id:external_exports.string().optional(),connected_source_port_ids:external_exports.array(external_exports.string()).optional(),selectors_not_found:external_exports.array(external_exports.string()).optional()}).describe("Occurs when a source trace selector does not match any ports");expectTypesMatch(!0);source_property_ignored_warning=external_exports.object({type:external_exports.literal("source_property_ignored_warning"),source_property_ignored_warning_id:getZodPrefixedIdWithDefault("source_property_ignored_warning"),source_component_id:external_exports.string(),property_name:external_exports.string(),subcircuit_id:external_exports.string().optional(),error_type:external_exports.literal("source_property_ignored_warning").default("source_property_ignored_warning"),message:external_exports.string()}).describe("The source property was ignored");expectTypesMatch(!0);source_pin_missing_trace_warning=external_exports.object({type:external_exports.literal("source_pin_missing_trace_warning"),source_pin_missing_trace_warning_id:getZodPrefixedIdWithDefault("source_pin_missing_trace_warning"),warning_type:external_exports.literal("source_pin_missing_trace_warning").default("source_pin_missing_trace_warning"),message:external_exports.string(),source_component_id:external_exports.string(),source_port_id:external_exports.string(),subcircuit_id:external_exports.string().optional()}).describe("Warning emitted when a source component pin is missing a trace connection");expectTypesMatch(!0);source_simple_voltage_probe=source_component_base.extend({ftype:external_exports.literal("simple_voltage_probe")});expectTypesMatch(!0);source_interconnect=source_component_base.extend({ftype:external_exports.literal("interconnect")});expectTypesMatch(!0);any_source_component=external_exports.union([source_simple_resistor,source_simple_capacitor,source_simple_diode,source_simple_fiducial,source_simple_led,source_simple_ground,source_simple_chip,source_simple_power_source,source_simple_battery,source_simple_inductor,source_simple_push_button,source_simple_potentiometer,source_simple_crystal,source_simple_pin_header,source_simple_pinout,source_simple_resonator,source_simple_switch,source_simple_transistor,source_simple_test_point,source_simple_mosfet,source_simple_op_amp,source_simple_fuse,source_simple_voltage_probe,source_interconnect,source_project_metadata,source_missing_property_error,source_failed_to_create_component_error,source_trace_not_connected_error,source_property_ignored_warning,source_pin_missing_trace_warning]);expectTypesMatch(!0);source_port=external_exports.object({type:external_exports.literal("source_port"),pin_number:external_exports.number().optional(),port_hints:external_exports.array(external_exports.string()).optional(),name:external_exports.string(),source_port_id:external_exports.string(),source_component_id:external_exports.string().optional(),source_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),subcircuit_connectivity_map_key:external_exports.string().optional(),must_be_connected:external_exports.boolean().optional()});expectTypesMatch(!0);source_component_internal_connection=external_exports.object({type:external_exports.literal("source_component_internal_connection"),source_component_internal_connection_id:external_exports.string(),source_component_id:external_exports.string(),source_port_ids:external_exports.array(external_exports.string()),subcircuit_id:external_exports.string().optional()});expectTypesMatch(!0);source_trace=external_exports.object({type:external_exports.literal("source_trace"),source_trace_id:external_exports.string(),connected_source_port_ids:external_exports.array(external_exports.string()),connected_source_net_ids:external_exports.array(external_exports.string()),subcircuit_id:external_exports.string().optional(),subcircuit_connectivity_map_key:external_exports.string().optional(),max_length:external_exports.number().optional(),min_trace_thickness:external_exports.number().optional(),display_name:external_exports.string().optional()});expectTypesMatch(!0);source_group=external_exports.object({type:external_exports.literal("source_group"),source_group_id:external_exports.string(),subcircuit_id:external_exports.string().optional(),parent_subcircuit_id:external_exports.string().optional(),parent_source_group_id:external_exports.string().optional(),is_subcircuit:external_exports.boolean().optional(),show_as_schematic_box:external_exports.boolean().optional(),name:external_exports.string().optional(),was_automatically_named:external_exports.boolean().optional()});expectTypesMatch(!0);source_net=external_exports.object({type:external_exports.literal("source_net"),source_net_id:external_exports.string(),name:external_exports.string(),member_source_group_ids:external_exports.array(external_exports.string()),is_power:external_exports.boolean().optional(),is_ground:external_exports.boolean().optional(),is_digital_signal:external_exports.boolean().optional(),is_analog_signal:external_exports.boolean().optional(),is_positive_voltage_source:external_exports.boolean().optional(),trace_width:external_exports.number().optional(),subcircuit_id:external_exports.string().optional(),subcircuit_connectivity_map_key:external_exports.string().optional()});expectTypesMatch(!0);source_board=external_exports.object({type:external_exports.literal("source_board"),source_board_id:external_exports.string(),source_group_id:external_exports.string(),title:external_exports.string().optional()}).describe("Defines a board in the source domain");expectTypesMatch(!0);source_pcb_ground_plane=external_exports.object({type:external_exports.literal("source_pcb_ground_plane"),source_pcb_ground_plane_id:external_exports.string(),source_group_id:external_exports.string(),source_net_id:external_exports.string(),subcircuit_id:external_exports.string().optional()}).describe("Defines a ground plane in the source domain");expectTypesMatch(!0);all_layers=["top","bottom","inner1","inner2","inner3","inner4","inner5","inner6"],layer_string=external_exports.enum(all_layers),layer_ref=layer_string.or(external_exports.object({name:layer_string})).transform(layer=>typeof layer=="string"?layer:layer.name);expectTypesMatch(!0);visible_layer=external_exports.enum(["top","bottom"]),source_manually_placed_via=external_exports.object({type:external_exports.literal("source_manually_placed_via"),source_manually_placed_via_id:external_exports.string(),source_group_id:external_exports.string(),source_net_id:external_exports.string(),subcircuit_id:external_exports.string().optional(),source_trace_id:external_exports.string().optional()}).describe("Defines a via that is manually placed in the source domain");expectTypesMatch(!0);source_pin_must_be_connected_error=external_exports.object({type:external_exports.literal("source_pin_must_be_connected_error"),source_pin_must_be_connected_error_id:getZodPrefixedIdWithDefault("source_pin_must_be_connected_error"),error_type:external_exports.literal("source_pin_must_be_connected_error").default("source_pin_must_be_connected_error"),message:external_exports.string(),source_component_id:external_exports.string(),source_port_id:external_exports.string(),subcircuit_id:external_exports.string().optional()}).describe("Error emitted when a pin with mustBeConnected attribute is not connected to any trace");expectTypesMatch(!0);unknown_error_finding_part=external_exports.object({type:external_exports.literal("unknown_error_finding_part"),unknown_error_finding_part_id:getZodPrefixedIdWithDefault("unknown_error_finding_part"),error_type:external_exports.literal("unknown_error_finding_part").default("unknown_error_finding_part"),message:external_exports.string(),source_component_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional()}).describe("Error emitted when an unexpected error occurs while finding a part");expectTypesMatch(!0);schematic_box=external_exports.object({type:external_exports.literal("schematic_box"),schematic_component_id:external_exports.string().optional(),width:distance,height:distance,is_dashed:external_exports.boolean().default(!1),x:distance,y:distance,subcircuit_id:external_exports.string().optional()}).describe("Draws a box on the schematic");expectTypesMatch(!0);schematic_path=external_exports.object({type:external_exports.literal("schematic_path"),schematic_component_id:external_exports.string(),fill_color:external_exports.enum(["red","blue"]).optional(),is_filled:external_exports.boolean().optional(),points:external_exports.array(point),subcircuit_id:external_exports.string().optional()});expectTypesMatch(!0);schematic_pin_styles=external_exports.record(external_exports.object({left_margin:length.optional(),right_margin:length.optional(),top_margin:length.optional(),bottom_margin:length.optional()})),schematic_component_port_arrangement_by_size=external_exports.object({left_size:external_exports.number(),right_size:external_exports.number(),top_size:external_exports.number().optional(),bottom_size:external_exports.number().optional()});expectTypesMatch(!0);schematic_component_port_arrangement_by_sides=external_exports.object({left_side:external_exports.object({pins:external_exports.array(external_exports.number()),direction:external_exports.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),right_side:external_exports.object({pins:external_exports.array(external_exports.number()),direction:external_exports.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),top_side:external_exports.object({pins:external_exports.array(external_exports.number()),direction:external_exports.enum(["left-to-right","right-to-left"]).optional()}).optional(),bottom_side:external_exports.object({pins:external_exports.array(external_exports.number()),direction:external_exports.enum(["left-to-right","right-to-left"]).optional()}).optional()});expectTypesMatch(!0);port_arrangement=external_exports.union([schematic_component_port_arrangement_by_size,schematic_component_port_arrangement_by_sides]),schematic_component=external_exports.object({type:external_exports.literal("schematic_component"),size,center:point,source_component_id:external_exports.string().optional(),schematic_component_id:external_exports.string(),pin_spacing:length.optional(),pin_styles:schematic_pin_styles.optional(),box_width:length.optional(),symbol_name:external_exports.string().optional(),port_arrangement:port_arrangement.optional(),port_labels:external_exports.record(external_exports.string()).optional(),symbol_display_value:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),schematic_group_id:external_exports.string().optional(),is_schematic_group:external_exports.boolean().optional(),source_group_id:external_exports.string().optional(),is_box_with_pins:external_exports.boolean().optional().default(!0)});expectTypesMatch(!0);schematic_line=external_exports.object({type:external_exports.literal("schematic_line"),schematic_line_id:getZodPrefixedIdWithDefault("schematic_line"),schematic_component_id:external_exports.string(),x1:distance,y1:distance,x2:distance,y2:distance,stroke_width:distance.nullable().optional(),color:external_exports.string().default("#000000"),is_dashed:external_exports.boolean().default(!1),subcircuit_id:external_exports.string().optional()}).describe("Draws a styled line on the schematic");expectTypesMatch(!0);schematic_rect=external_exports.object({type:external_exports.literal("schematic_rect"),schematic_rect_id:getZodPrefixedIdWithDefault("schematic_rect"),schematic_component_id:external_exports.string(),center:point,width:distance,height:distance,rotation:rotation.default(0),stroke_width:distance.nullable().optional(),color:external_exports.string().default("#000000"),is_filled:external_exports.boolean().default(!1),fill_color:external_exports.string().optional(),is_dashed:external_exports.boolean().default(!1),subcircuit_id:external_exports.string().optional()}).describe("Draws a styled rectangle on the schematic");expectTypesMatch(!0);schematic_circle=external_exports.object({type:external_exports.literal("schematic_circle"),schematic_circle_id:getZodPrefixedIdWithDefault("schematic_circle"),schematic_component_id:external_exports.string(),center:point,radius:distance,stroke_width:distance.nullable().optional(),color:external_exports.string().default("#000000"),is_filled:external_exports.boolean().default(!1),fill_color:external_exports.string().optional(),is_dashed:external_exports.boolean().default(!1),subcircuit_id:external_exports.string().optional()}).describe("Draws a styled circle on the schematic");expectTypesMatch(!0);schematic_arc=external_exports.object({type:external_exports.literal("schematic_arc"),schematic_arc_id:getZodPrefixedIdWithDefault("schematic_arc"),schematic_component_id:external_exports.string(),center:point,radius:distance,start_angle_degrees:rotation,end_angle_degrees:rotation,direction:external_exports.enum(["clockwise","counterclockwise"]).default("counterclockwise"),stroke_width:distance.nullable().optional(),color:external_exports.string().default("#000000"),is_dashed:external_exports.boolean().default(!1),subcircuit_id:external_exports.string().optional()}).describe("Draws a styled arc on the schematic");expectTypesMatch(!0);schematic_trace=external_exports.object({type:external_exports.literal("schematic_trace"),schematic_trace_id:external_exports.string(),source_trace_id:external_exports.string().optional(),junctions:external_exports.array(external_exports.object({x:external_exports.number(),y:external_exports.number()})),edges:external_exports.array(external_exports.object({from:external_exports.object({x:external_exports.number(),y:external_exports.number()}),to:external_exports.object({x:external_exports.number(),y:external_exports.number()}),is_crossing:external_exports.boolean().optional(),from_schematic_port_id:external_exports.string().optional(),to_schematic_port_id:external_exports.string().optional()})),subcircuit_id:external_exports.string().optional(),subcircuit_connectivity_map_key:external_exports.string().optional()});expectTypesMatch(!0);fivePointAnchor=external_exports.enum(["center","left","right","top","bottom"]);expectTypesMatch(!0);schematic_text=external_exports.object({type:external_exports.literal("schematic_text"),schematic_component_id:external_exports.string().optional(),schematic_text_id:external_exports.string(),text:external_exports.string(),font_size:external_exports.number().default(.18),position:external_exports.object({x:distance,y:distance}),rotation:external_exports.number().default(0),anchor:external_exports.union([fivePointAnchor.describe("legacy"),ninePointAnchor]).default("center"),color:external_exports.string().default("#000000"),subcircuit_id:external_exports.string().optional()});expectTypesMatch(!0);schematic_port=external_exports.object({type:external_exports.literal("schematic_port"),schematic_port_id:external_exports.string(),source_port_id:external_exports.string(),schematic_component_id:external_exports.string().optional(),center:point,facing_direction:external_exports.enum(["up","down","left","right"]).optional(),distance_from_component_edge:external_exports.number().optional(),side_of_component:external_exports.enum(["top","bottom","left","right"]).optional(),true_ccw_index:external_exports.number().optional(),pin_number:external_exports.number().optional(),display_pin_label:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),is_connected:external_exports.boolean().optional(),has_input_arrow:external_exports.boolean().optional(),has_output_arrow:external_exports.boolean().optional()}).describe("Defines a port on a schematic component");expectTypesMatch(!0);schematic_net_label=external_exports.object({type:external_exports.literal("schematic_net_label"),schematic_net_label_id:getZodPrefixedIdWithDefault("schematic_net_label"),schematic_trace_id:external_exports.string().optional(),source_trace_id:external_exports.string().optional(),source_net_id:external_exports.string(),center:point,anchor_position:point.optional(),anchor_side:external_exports.enum(["top","bottom","left","right"]),text:external_exports.string(),symbol_name:external_exports.string().optional(),is_movable:external_exports.boolean().optional(),subcircuit_id:external_exports.string().optional()});expectTypesMatch(!0);schematic_error=external_exports.object({type:external_exports.literal("schematic_error"),schematic_error_id:external_exports.string(),error_type:external_exports.literal("schematic_port_not_found").default("schematic_port_not_found"),message:external_exports.string(),subcircuit_id:external_exports.string().optional()}).describe("Defines a schematic error on the schematic");expectTypesMatch(!0);schematic_layout_error=external_exports.object({type:external_exports.literal("schematic_layout_error"),schematic_layout_error_id:getZodPrefixedIdWithDefault("schematic_layout_error"),error_type:external_exports.literal("schematic_layout_error").default("schematic_layout_error"),message:external_exports.string(),source_group_id:external_exports.string(),schematic_group_id:external_exports.string(),subcircuit_id:external_exports.string().optional()}).describe("Error emitted when schematic layout fails for a group");expectTypesMatch(!0);schematic_debug_object_base=external_exports.object({type:external_exports.literal("schematic_debug_object"),label:external_exports.string().optional(),subcircuit_id:external_exports.string().optional()}),schematic_debug_rect=schematic_debug_object_base.extend({shape:external_exports.literal("rect"),center:point,size}),schematic_debug_line=schematic_debug_object_base.extend({shape:external_exports.literal("line"),start:point,end:point}),schematic_debug_point=schematic_debug_object_base.extend({shape:external_exports.literal("point"),center:point}),schematic_debug_object=external_exports.discriminatedUnion("shape",[schematic_debug_rect,schematic_debug_line,schematic_debug_point]);expectTypesMatch(!0);schematic_voltage_probe=external_exports.object({type:external_exports.literal("schematic_voltage_probe"),schematic_voltage_probe_id:external_exports.string(),source_component_id:external_exports.string().optional(),name:external_exports.string().optional(),position:point,schematic_trace_id:external_exports.string(),voltage:voltage.optional(),subcircuit_id:external_exports.string().optional(),color:external_exports.string().optional(),label_alignment:ninePointAnchor.optional()}).describe("Defines a voltage probe measurement point on a schematic trace");expectTypesMatch(!0);schematic_manual_edit_conflict_warning=external_exports.object({type:external_exports.literal("schematic_manual_edit_conflict_warning"),schematic_manual_edit_conflict_warning_id:getZodPrefixedIdWithDefault("schematic_manual_edit_conflict_warning"),warning_type:external_exports.literal("schematic_manual_edit_conflict_warning").default("schematic_manual_edit_conflict_warning"),message:external_exports.string(),schematic_component_id:external_exports.string(),schematic_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),source_component_id:external_exports.string()}).describe("Warning emitted when a component has both manual placement and explicit schX/schY coordinates");expectTypesMatch(!0);schematic_group=external_exports.object({type:external_exports.literal("schematic_group"),schematic_group_id:getZodPrefixedIdWithDefault("schematic_group"),source_group_id:external_exports.string(),is_subcircuit:external_exports.boolean().optional(),subcircuit_id:external_exports.string().optional(),width:length,height:length,center:point,schematic_component_ids:external_exports.array(external_exports.string()),show_as_schematic_box:external_exports.boolean().optional(),name:external_exports.string().optional(),description:external_exports.string().optional()}).describe("Defines a group of components on the schematic");expectTypesMatch(!0);schematic_table=external_exports.object({type:external_exports.literal("schematic_table"),schematic_table_id:getZodPrefixedIdWithDefault("schematic_table"),anchor_position:point,column_widths:external_exports.array(distance),row_heights:external_exports.array(distance),cell_padding:distance.optional(),border_width:distance.optional(),subcircuit_id:external_exports.string().optional(),schematic_component_id:external_exports.string().optional(),anchor:ninePointAnchor.optional()}).describe("Defines a table on the schematic");expectTypesMatch(!0);schematic_table_cell=external_exports.object({type:external_exports.literal("schematic_table_cell"),schematic_table_cell_id:getZodPrefixedIdWithDefault("schematic_table_cell"),schematic_table_id:external_exports.string(),start_row_index:external_exports.number(),end_row_index:external_exports.number(),start_column_index:external_exports.number(),end_column_index:external_exports.number(),text:external_exports.string().optional(),center:point,width:distance,height:distance,horizontal_align:external_exports.enum(["left","center","right"]).optional(),vertical_align:external_exports.enum(["top","middle","bottom"]).optional(),font_size:distance.optional(),subcircuit_id:external_exports.string().optional()}).describe("Defines a cell within a schematic_table");expectTypesMatch(!0);schematic_sheet=external_exports.object({type:external_exports.literal("schematic_sheet"),schematic_sheet_id:getZodPrefixedIdWithDefault("schematic_sheet"),name:external_exports.string().optional(),subcircuit_id:external_exports.string().optional()}).describe("Defines a schematic sheet or page that components can be placed on");expectTypesMatch(!0);point_with_bulge=external_exports.object({x:distance,y:distance,bulge:external_exports.number().optional()});expectTypesMatch(!0);ring=external_exports.object({vertices:external_exports.array(point_with_bulge)});expectTypesMatch(!0);brep_shape=external_exports.object({outer_ring:ring,inner_rings:external_exports.array(ring).default([])});expectTypesMatch(!0);pcb_route_hint=external_exports.object({x:distance,y:distance,via:external_exports.boolean().optional(),via_to_layer:layer_ref.optional()}),pcb_route_hints=external_exports.array(pcb_route_hint);expectTypesMatch(!0);expectTypesMatch(!0);route_hint_point=external_exports.object({x:distance,y:distance,via:external_exports.boolean().optional(),to_layer:layer_ref.optional(),trace_width:distance.optional()});expectTypesMatch(!0);pcb_component=external_exports.object({type:external_exports.literal("pcb_component"),pcb_component_id:getZodPrefixedIdWithDefault("pcb_component"),source_component_id:external_exports.string(),center:point,layer:layer_ref,rotation,display_offset_x:external_exports.string().optional().describe("How to display the x offset for this part, usually corresponding with how the user specified it"),display_offset_y:external_exports.string().optional().describe("How to display the y offset for this part, usually corresponding with how the user specified it"),width:length,height:length,do_not_place:external_exports.boolean().optional(),subcircuit_id:external_exports.string().optional(),pcb_group_id:external_exports.string().optional(),position_mode:external_exports.enum(["packed","relative_to_group_anchor","none"]).optional(),positioned_relative_to_pcb_group_id:external_exports.string().optional(),positioned_relative_to_pcb_board_id:external_exports.string().optional(),obstructs_within_bounds:external_exports.boolean().default(!0).describe("Does this component take up all the space within its bounds on a layer. This is generally true except for when separated pin headers are being represented by a single component (in which case, chips can be placed between the pin headers) or for tall modules where chips fit underneath")}).describe("Defines a component on the PCB");expectTypesMatch(!0);pcb_hole_circle=external_exports.object({type:external_exports.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault("pcb_hole"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),pcb_component_id:external_exports.string().optional(),hole_shape:external_exports.literal("circle"),hole_diameter:external_exports.number(),x:distance,y:distance,is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_hole_circle_shape=pcb_hole_circle.describe("Defines a circular hole on the PCB");expectTypesMatch(!0);pcb_hole_rect=external_exports.object({type:external_exports.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault("pcb_hole"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),pcb_component_id:external_exports.string().optional(),hole_shape:external_exports.literal("rect"),hole_width:external_exports.number(),hole_height:external_exports.number(),x:distance,y:distance,is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_hole_rect_shape=pcb_hole_rect.describe("Defines a rectangular (square-capable) hole on the PCB. Use equal width/height for square.");expectTypesMatch(!0);pcb_hole_circle_or_square=external_exports.object({type:external_exports.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault("pcb_hole"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),pcb_component_id:external_exports.string().optional(),hole_shape:external_exports.enum(["circle","square"]),hole_diameter:external_exports.number(),x:distance,y:distance,is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_hole_circle_or_square_shape=pcb_hole_circle_or_square.describe("Defines a circular or square hole on the PCB");expectTypesMatch(!0);pcb_hole_oval=external_exports.object({type:external_exports.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault("pcb_hole"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),pcb_component_id:external_exports.string().optional(),hole_shape:external_exports.literal("oval"),hole_width:external_exports.number(),hole_height:external_exports.number(),x:distance,y:distance,is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_hole_oval_shape=pcb_hole_oval.describe("Defines an oval hole on the PCB");expectTypesMatch(!0);pcb_hole_pill=external_exports.object({type:external_exports.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault("pcb_hole"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),pcb_component_id:external_exports.string().optional(),hole_shape:external_exports.literal("pill"),hole_width:external_exports.number(),hole_height:external_exports.number(),x:distance,y:distance,is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_hole_pill_shape=pcb_hole_pill.describe("Defines a pill-shaped hole on the PCB");expectTypesMatch(!0);pcb_hole_rotated_pill=external_exports.object({type:external_exports.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault("pcb_hole"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),pcb_component_id:external_exports.string().optional(),hole_shape:external_exports.literal("rotated_pill"),hole_width:external_exports.number(),hole_height:external_exports.number(),x:distance,y:distance,ccw_rotation:rotation,is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_hole_rotated_pill_shape=pcb_hole_rotated_pill.describe("Defines a rotated pill-shaped hole on the PCB");expectTypesMatch(!0);pcb_hole=pcb_hole_circle_or_square.or(pcb_hole_oval).or(pcb_hole_pill).or(pcb_hole_rotated_pill).or(pcb_hole_circle).or(pcb_hole_rect),pcb_plated_hole_circle=external_exports.object({type:external_exports.literal("pcb_plated_hole"),shape:external_exports.literal("circle"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),outer_diameter:external_exports.number(),hole_diameter:external_exports.number(),is_covered_with_solder_mask:external_exports.boolean().optional(),x:distance,y:distance,layers:external_exports.array(layer_ref),port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault("pcb_plated_hole"),soldermask_margin:external_exports.number().optional()}),pcb_plated_hole_oval=external_exports.object({type:external_exports.literal("pcb_plated_hole"),shape:external_exports.enum(["oval","pill"]),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),outer_width:external_exports.number(),outer_height:external_exports.number(),hole_width:external_exports.number(),hole_height:external_exports.number(),is_covered_with_solder_mask:external_exports.boolean().optional(),x:distance,y:distance,ccw_rotation:rotation,layers:external_exports.array(layer_ref),port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault("pcb_plated_hole"),soldermask_margin:external_exports.number().optional()}),pcb_circular_hole_with_rect_pad=external_exports.object({type:external_exports.literal("pcb_plated_hole"),shape:external_exports.literal("circular_hole_with_rect_pad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),hole_shape:external_exports.literal("circle"),pad_shape:external_exports.literal("rect"),hole_diameter:external_exports.number(),rect_pad_width:external_exports.number(),rect_pad_height:external_exports.number(),rect_border_radius:external_exports.number().optional(),hole_offset_x:distance.default(0),hole_offset_y:distance.default(0),is_covered_with_solder_mask:external_exports.boolean().optional(),x:distance,y:distance,layers:external_exports.array(layer_ref),port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault("pcb_plated_hole"),soldermask_margin:external_exports.number().optional()}),pcb_pill_hole_with_rect_pad=external_exports.object({type:external_exports.literal("pcb_plated_hole"),shape:external_exports.literal("pill_hole_with_rect_pad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),hole_shape:external_exports.literal("pill"),pad_shape:external_exports.literal("rect"),hole_width:external_exports.number(),hole_height:external_exports.number(),rect_pad_width:external_exports.number(),rect_pad_height:external_exports.number(),rect_border_radius:external_exports.number().optional(),hole_offset_x:distance.default(0),hole_offset_y:distance.default(0),is_covered_with_solder_mask:external_exports.boolean().optional(),x:distance,y:distance,layers:external_exports.array(layer_ref),port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault("pcb_plated_hole"),soldermask_margin:external_exports.number().optional()}),pcb_rotated_pill_hole_with_rect_pad=external_exports.object({type:external_exports.literal("pcb_plated_hole"),shape:external_exports.literal("rotated_pill_hole_with_rect_pad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),hole_shape:external_exports.literal("rotated_pill"),pad_shape:external_exports.literal("rect"),hole_width:external_exports.number(),hole_height:external_exports.number(),hole_ccw_rotation:rotation,rect_pad_width:external_exports.number(),rect_pad_height:external_exports.number(),rect_border_radius:external_exports.number().optional(),rect_ccw_rotation:rotation,hole_offset_x:distance.default(0),hole_offset_y:distance.default(0),is_covered_with_solder_mask:external_exports.boolean().optional(),x:distance,y:distance,layers:external_exports.array(layer_ref),port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault("pcb_plated_hole"),soldermask_margin:external_exports.number().optional()}),pcb_hole_with_polygon_pad=external_exports.object({type:external_exports.literal("pcb_plated_hole"),shape:external_exports.literal("hole_with_polygon_pad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),hole_shape:external_exports.enum(["circle","oval","pill","rotated_pill"]),hole_diameter:external_exports.number().optional(),hole_width:external_exports.number().optional(),hole_height:external_exports.number().optional(),pad_outline:external_exports.array(external_exports.object({x:distance,y:distance})).min(3),hole_offset_x:distance.default(0),hole_offset_y:distance.default(0),is_covered_with_solder_mask:external_exports.boolean().optional(),x:distance,y:distance,layers:external_exports.array(layer_ref),port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault("pcb_plated_hole"),soldermask_margin:external_exports.number().optional(),ccw_rotation:rotation.optional()}),pcb_plated_hole=external_exports.union([pcb_plated_hole_circle,pcb_plated_hole_oval,pcb_circular_hole_with_rect_pad,pcb_pill_hole_with_rect_pad,pcb_rotated_pill_hole_with_rect_pad,pcb_hole_with_polygon_pad]);expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);pcb_port=external_exports.object({type:external_exports.literal("pcb_port"),pcb_port_id:getZodPrefixedIdWithDefault("pcb_port"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),source_port_id:external_exports.string(),pcb_component_id:external_exports.string().optional(),x:distance,y:distance,layers:external_exports.array(layer_ref),is_board_pinout:external_exports.boolean().optional()}).describe("Defines a port on the PCB");expectTypesMatch(!0);pcb_smtpad_circle=external_exports.object({type:external_exports.literal("pcb_smtpad"),shape:external_exports.literal("circle"),pcb_smtpad_id:getZodPrefixedIdWithDefault("pcb_smtpad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,radius:external_exports.number(),layer:layer_ref,port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_smtpad_rect=external_exports.object({type:external_exports.literal("pcb_smtpad"),shape:external_exports.literal("rect"),pcb_smtpad_id:getZodPrefixedIdWithDefault("pcb_smtpad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,width:external_exports.number(),height:external_exports.number(),rect_border_radius:external_exports.number().optional(),corner_radius:external_exports.number().optional(),layer:layer_ref,port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional(),soldermask_margin_left:external_exports.number().optional(),soldermask_margin_top:external_exports.number().optional(),soldermask_margin_right:external_exports.number().optional(),soldermask_margin_bottom:external_exports.number().optional()}),pcb_smtpad_rotated_rect=external_exports.object({type:external_exports.literal("pcb_smtpad"),shape:external_exports.literal("rotated_rect"),pcb_smtpad_id:getZodPrefixedIdWithDefault("pcb_smtpad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,width:external_exports.number(),height:external_exports.number(),rect_border_radius:external_exports.number().optional(),corner_radius:external_exports.number().optional(),ccw_rotation:rotation,layer:layer_ref,port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional(),soldermask_margin_left:external_exports.number().optional(),soldermask_margin_top:external_exports.number().optional(),soldermask_margin_right:external_exports.number().optional(),soldermask_margin_bottom:external_exports.number().optional()}),pcb_smtpad_pill=external_exports.object({type:external_exports.literal("pcb_smtpad"),shape:external_exports.literal("pill"),pcb_smtpad_id:getZodPrefixedIdWithDefault("pcb_smtpad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,width:external_exports.number(),height:external_exports.number(),radius:external_exports.number(),layer:layer_ref,port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_smtpad_rotated_pill=external_exports.object({type:external_exports.literal("pcb_smtpad"),shape:external_exports.literal("rotated_pill"),pcb_smtpad_id:getZodPrefixedIdWithDefault("pcb_smtpad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,width:external_exports.number(),height:external_exports.number(),radius:external_exports.number(),ccw_rotation:rotation,layer:layer_ref,port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_smtpad_polygon=external_exports.object({type:external_exports.literal("pcb_smtpad"),shape:external_exports.literal("polygon"),pcb_smtpad_id:getZodPrefixedIdWithDefault("pcb_smtpad"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),points:external_exports.array(point),layer:layer_ref,port_hints:external_exports.array(external_exports.string()).optional(),pcb_component_id:external_exports.string().optional(),pcb_port_id:external_exports.string().optional(),is_covered_with_solder_mask:external_exports.boolean().optional(),soldermask_margin:external_exports.number().optional()}),pcb_smtpad=external_exports.discriminatedUnion("shape",[pcb_smtpad_circle,pcb_smtpad_rect,pcb_smtpad_rotated_rect,pcb_smtpad_rotated_pill,pcb_smtpad_pill,pcb_smtpad_polygon]).describe("Defines an SMT pad on the PCB");expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);pcb_solder_paste_circle=external_exports.object({type:external_exports.literal("pcb_solder_paste"),shape:external_exports.literal("circle"),pcb_solder_paste_id:getZodPrefixedIdWithDefault("pcb_solder_paste"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,radius:external_exports.number(),layer:layer_ref,pcb_component_id:external_exports.string().optional(),pcb_smtpad_id:external_exports.string().optional()}),pcb_solder_paste_rect=external_exports.object({type:external_exports.literal("pcb_solder_paste"),shape:external_exports.literal("rect"),pcb_solder_paste_id:getZodPrefixedIdWithDefault("pcb_solder_paste"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,width:external_exports.number(),height:external_exports.number(),layer:layer_ref,pcb_component_id:external_exports.string().optional(),pcb_smtpad_id:external_exports.string().optional()}),pcb_solder_paste_pill=external_exports.object({type:external_exports.literal("pcb_solder_paste"),shape:external_exports.literal("pill"),pcb_solder_paste_id:getZodPrefixedIdWithDefault("pcb_solder_paste"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,width:external_exports.number(),height:external_exports.number(),radius:external_exports.number(),layer:layer_ref,pcb_component_id:external_exports.string().optional(),pcb_smtpad_id:external_exports.string().optional()}),pcb_solder_paste_rotated_rect=external_exports.object({type:external_exports.literal("pcb_solder_paste"),shape:external_exports.literal("rotated_rect"),pcb_solder_paste_id:getZodPrefixedIdWithDefault("pcb_solder_paste"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,width:external_exports.number(),height:external_exports.number(),ccw_rotation:distance,layer:layer_ref,pcb_component_id:external_exports.string().optional(),pcb_smtpad_id:external_exports.string().optional()}),pcb_solder_paste_oval=external_exports.object({type:external_exports.literal("pcb_solder_paste"),shape:external_exports.literal("oval"),pcb_solder_paste_id:getZodPrefixedIdWithDefault("pcb_solder_paste"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),x:distance,y:distance,width:external_exports.number(),height:external_exports.number(),layer:layer_ref,pcb_component_id:external_exports.string().optional(),pcb_smtpad_id:external_exports.string().optional()}),pcb_solder_paste=external_exports.union([pcb_solder_paste_circle,pcb_solder_paste_rect,pcb_solder_paste_pill,pcb_solder_paste_rotated_rect,pcb_solder_paste_oval]).describe("Defines solderpaste on the PCB");expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);pcb_text=external_exports.object({type:external_exports.literal("pcb_text"),pcb_text_id:getZodPrefixedIdWithDefault("pcb_text"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),text:external_exports.string(),center:point,layer:layer_ref,width:length,height:length,lines:external_exports.number(),align:external_exports.enum(["bottom-left"])}).describe("Defines text on the PCB");expectTypesMatch(!0);pcb_trace_route_point_wire=external_exports.object({route_type:external_exports.literal("wire"),x:distance,y:distance,width:distance,start_pcb_port_id:external_exports.string().optional(),end_pcb_port_id:external_exports.string().optional(),layer:layer_ref}),pcb_trace_route_point_via=external_exports.object({route_type:external_exports.literal("via"),x:distance,y:distance,hole_diameter:distance.optional(),outer_diameter:distance.optional(),from_layer:external_exports.string(),to_layer:external_exports.string()}),pcb_trace_route_point=external_exports.union([pcb_trace_route_point_wire,pcb_trace_route_point_via]),pcb_trace=external_exports.object({type:external_exports.literal("pcb_trace"),source_trace_id:external_exports.string().optional(),pcb_component_id:external_exports.string().optional(),pcb_trace_id:getZodPrefixedIdWithDefault("pcb_trace"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),route_thickness_mode:external_exports.enum(["constant","interpolated"]).default("constant").optional(),route_order_index:external_exports.number().optional(),should_round_corners:external_exports.boolean().optional(),trace_length:external_exports.number().optional(),highlight_color:external_exports.string().optional(),route:external_exports.array(pcb_trace_route_point)}).describe("Defines a trace on the PCB");expectTypesMatch(!0);expectTypesMatch(!0);pcb_trace_error=external_exports.object({type:external_exports.literal("pcb_trace_error"),pcb_trace_error_id:getZodPrefixedIdWithDefault("pcb_trace_error"),error_type:external_exports.literal("pcb_trace_error").default("pcb_trace_error"),message:external_exports.string(),center:point.optional(),pcb_trace_id:external_exports.string(),source_trace_id:external_exports.string(),pcb_component_ids:external_exports.array(external_exports.string()),pcb_port_ids:external_exports.array(external_exports.string()),subcircuit_id:external_exports.string().optional()}).describe("Defines a trace error on the PCB");expectTypesMatch(!0);pcb_trace_missing_error=external_exports.object({type:external_exports.literal("pcb_trace_missing_error"),pcb_trace_missing_error_id:getZodPrefixedIdWithDefault("pcb_trace_missing_error"),error_type:external_exports.literal("pcb_trace_missing_error").default("pcb_trace_missing_error"),message:external_exports.string(),center:point.optional(),source_trace_id:external_exports.string(),pcb_component_ids:external_exports.array(external_exports.string()),pcb_port_ids:external_exports.array(external_exports.string()),subcircuit_id:external_exports.string().optional()}).describe("Defines an error when a source trace has no corresponding PCB trace");expectTypesMatch(!0);pcb_port_not_matched_error=external_exports.object({type:external_exports.literal("pcb_port_not_matched_error"),pcb_error_id:getZodPrefixedIdWithDefault("pcb_error"),error_type:external_exports.literal("pcb_port_not_matched_error").default("pcb_port_not_matched_error"),message:external_exports.string(),pcb_component_ids:external_exports.array(external_exports.string()),subcircuit_id:external_exports.string().optional()}).describe("Defines a trace error on the PCB where a port is not matched");expectTypesMatch(!0);pcb_port_not_connected_error=external_exports.object({type:external_exports.literal("pcb_port_not_connected_error"),pcb_port_not_connected_error_id:getZodPrefixedIdWithDefault("pcb_port_not_connected_error"),error_type:external_exports.literal("pcb_port_not_connected_error").default("pcb_port_not_connected_error"),message:external_exports.string(),pcb_port_ids:external_exports.array(external_exports.string()),pcb_component_ids:external_exports.array(external_exports.string()),subcircuit_id:external_exports.string().optional()}).describe("Defines an error when a pcb port is not connected to any trace");expectTypesMatch(!0);pcb_net=external_exports.object({type:external_exports.literal("pcb_net"),pcb_net_id:getZodPrefixedIdWithDefault("pcb_net"),source_net_id:external_exports.string().optional(),highlight_color:external_exports.string().optional()}).describe("Defines a net on the PCB");expectTypesMatch(!0);pcb_via=external_exports.object({type:external_exports.literal("pcb_via"),pcb_via_id:getZodPrefixedIdWithDefault("pcb_via"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),subcircuit_connectivity_map_key:external_exports.string().optional(),x:distance,y:distance,outer_diameter:distance.default("0.6mm"),hole_diameter:distance.default("0.25mm"),from_layer:layer_ref.optional(),to_layer:layer_ref.optional(),layers:external_exports.array(layer_ref),pcb_trace_id:external_exports.string().optional(),net_is_assignable:external_exports.boolean().optional(),net_assigned:external_exports.boolean().optional(),is_tented:external_exports.boolean().optional()}).describe("Defines a via on the PCB");expectTypesMatch(!0);pcb_board=external_exports.object({type:external_exports.literal("pcb_board"),pcb_board_id:getZodPrefixedIdWithDefault("pcb_board"),pcb_panel_id:external_exports.string().optional(),is_subcircuit:external_exports.boolean().optional(),subcircuit_id:external_exports.string().optional(),width:length.optional(),height:length.optional(),center:point,display_offset_x:external_exports.string().optional().describe("How to display the x offset for this board, usually corresponding with how the user specified it"),display_offset_y:external_exports.string().optional().describe("How to display the y offset for this board, usually corresponding with how the user specified it"),thickness:length.optional().default(1.4),num_layers:external_exports.number().optional().default(4),outline:external_exports.array(point).optional(),shape:external_exports.enum(["rect","polygon"]).optional(),material:external_exports.enum(["fr4","fr1"]).default("fr4"),anchor_position:point.optional(),anchor_alignment:ninePointAnchor.optional(),position_mode:external_exports.enum(["relative_to_panel_anchor","none"]).optional()}).describe("Defines the board outline of the PCB");expectTypesMatch(!0);pcb_panel=external_exports.object({type:external_exports.literal("pcb_panel"),pcb_panel_id:getZodPrefixedIdWithDefault("pcb_panel"),width:length,height:length,center:point,covered_with_solder_mask:external_exports.boolean().optional().default(!0)}).describe("Defines a PCB panel that can contain multiple boards");expectTypesMatch(!0);pcb_placement_error=external_exports.object({type:external_exports.literal("pcb_placement_error"),pcb_placement_error_id:getZodPrefixedIdWithDefault("pcb_placement_error"),error_type:external_exports.literal("pcb_placement_error").default("pcb_placement_error"),message:external_exports.string(),subcircuit_id:external_exports.string().optional()}).describe("Defines a placement error on the PCB");expectTypesMatch(!0);pcb_trace_hint=external_exports.object({type:external_exports.literal("pcb_trace_hint"),pcb_trace_hint_id:getZodPrefixedIdWithDefault("pcb_trace_hint"),pcb_port_id:external_exports.string(),pcb_component_id:external_exports.string(),route:external_exports.array(route_hint_point),subcircuit_id:external_exports.string().optional()}).describe("A hint that can be used during generation of a PCB trace");expectTypesMatch(!0);pcb_silkscreen_line=external_exports.object({type:external_exports.literal("pcb_silkscreen_line"),pcb_silkscreen_line_id:getZodPrefixedIdWithDefault("pcb_silkscreen_line"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),stroke_width:distance.default("0.1mm"),x1:distance,y1:distance,x2:distance,y2:distance,layer:visible_layer}).describe("Defines a silkscreen line on the PCB");expectTypesMatch(!0);pcb_silkscreen_path=external_exports.object({type:external_exports.literal("pcb_silkscreen_path"),pcb_silkscreen_path_id:getZodPrefixedIdWithDefault("pcb_silkscreen_path"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),layer:visible_layer,route:external_exports.array(point),stroke_width:length}).describe("Defines a silkscreen path on the PCB");expectTypesMatch(!0);pcb_silkscreen_text=external_exports.object({type:external_exports.literal("pcb_silkscreen_text"),pcb_silkscreen_text_id:getZodPrefixedIdWithDefault("pcb_silkscreen_text"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),font:external_exports.literal("tscircuit2024").default("tscircuit2024"),font_size:distance.default("0.2mm"),pcb_component_id:external_exports.string(),text:external_exports.string(),is_knockout:external_exports.boolean().default(!1).optional(),knockout_padding:external_exports.object({left:length,top:length,bottom:length,right:length}).default({left:"0.2mm",top:"0.2mm",bottom:"0.2mm",right:"0.2mm"}).optional(),ccw_rotation:external_exports.number().optional(),layer:layer_ref,is_mirrored:external_exports.boolean().default(!1).optional(),anchor_position:point.default({x:0,y:0}),anchor_alignment:ninePointAnchor.default("center")}).describe("Defines silkscreen text on the PCB");expectTypesMatch(!0);pcb_copper_text=external_exports.object({type:external_exports.literal("pcb_copper_text"),pcb_copper_text_id:getZodPrefixedIdWithDefault("pcb_copper_text"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),font:external_exports.literal("tscircuit2024").default("tscircuit2024"),font_size:distance.default("0.2mm"),pcb_component_id:external_exports.string(),text:external_exports.string(),is_knockout:external_exports.boolean().default(!1).optional(),knockout_padding:external_exports.object({left:length,top:length,bottom:length,right:length}).default({left:"0.2mm",top:"0.2mm",bottom:"0.2mm",right:"0.2mm"}).optional(),ccw_rotation:external_exports.number().optional(),layer:layer_ref,is_mirrored:external_exports.boolean().default(!1).optional(),anchor_position:point.default({x:0,y:0}),anchor_alignment:ninePointAnchor.default("center")}).describe("Defines copper text on the PCB");expectTypesMatch(!0);pcb_silkscreen_rect=external_exports.object({type:external_exports.literal("pcb_silkscreen_rect"),pcb_silkscreen_rect_id:getZodPrefixedIdWithDefault("pcb_silkscreen_rect"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),center:point,width:length,height:length,layer:layer_ref,stroke_width:length.default("1mm"),corner_radius:length.optional(),is_filled:external_exports.boolean().default(!0).optional(),has_stroke:external_exports.boolean().optional(),is_stroke_dashed:external_exports.boolean().optional(),ccw_rotation:external_exports.number().optional()}).describe("Defines a silkscreen rect on the PCB");expectTypesMatch(!0);pcb_silkscreen_circle=external_exports.object({type:external_exports.literal("pcb_silkscreen_circle"),pcb_silkscreen_circle_id:getZodPrefixedIdWithDefault("pcb_silkscreen_circle"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),center:point,radius:length,layer:visible_layer,stroke_width:length.default("1mm")}).describe("Defines a silkscreen circle on the PCB");expectTypesMatch(!0);pcb_silkscreen_oval=external_exports.object({type:external_exports.literal("pcb_silkscreen_oval"),pcb_silkscreen_oval_id:getZodPrefixedIdWithDefault("pcb_silkscreen_oval"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),center:point,radius_x:distance,radius_y:distance,layer:visible_layer,ccw_rotation:rotation.optional()}).describe("Defines a silkscreen oval on the PCB");expectTypesMatch(!0);pcb_silkscreen_pill=external_exports.object({type:external_exports.literal("pcb_silkscreen_pill"),pcb_silkscreen_pill_id:getZodPrefixedIdWithDefault("pcb_silkscreen_pill"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),center:point,width:length,height:length,layer:layer_ref,ccw_rotation:external_exports.number().optional()}).describe("Defines a silkscreen pill on the PCB");expectTypesMatch(!0);pcb_fabrication_note_text=external_exports.object({type:external_exports.literal("pcb_fabrication_note_text"),pcb_fabrication_note_text_id:getZodPrefixedIdWithDefault("pcb_fabrication_note_text"),subcircuit_id:external_exports.string().optional(),pcb_group_id:external_exports.string().optional(),font:external_exports.literal("tscircuit2024").default("tscircuit2024"),font_size:distance.default("1mm"),pcb_component_id:external_exports.string(),text:external_exports.string(),layer:visible_layer,anchor_position:point.default({x:0,y:0}),anchor_alignment:external_exports.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),color:external_exports.string().optional()}).describe("Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators");expectTypesMatch(!0);pcb_fabrication_note_path=external_exports.object({type:external_exports.literal("pcb_fabrication_note_path"),pcb_fabrication_note_path_id:getZodPrefixedIdWithDefault("pcb_fabrication_note_path"),pcb_component_id:external_exports.string(),subcircuit_id:external_exports.string().optional(),layer:layer_ref,route:external_exports.array(point),stroke_width:length,color:external_exports.string().optional()}).describe("Defines a fabrication path on the PCB for fabricators or assemblers");expectTypesMatch(!0);pcb_fabrication_note_rect=external_exports.object({type:external_exports.literal("pcb_fabrication_note_rect"),pcb_fabrication_note_rect_id:getZodPrefixedIdWithDefault("pcb_fabrication_note_rect"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),center:point,width:length,height:length,layer:visible_layer,stroke_width:length.default("0.1mm"),corner_radius:length.optional(),is_filled:external_exports.boolean().optional(),has_stroke:external_exports.boolean().optional(),is_stroke_dashed:external_exports.boolean().optional(),color:external_exports.string().optional()}).describe("Defines a fabrication note rectangle on the PCB");expectTypesMatch(!0);pcb_fabrication_note_dimension=external_exports.object({type:external_exports.literal("pcb_fabrication_note_dimension"),pcb_fabrication_note_dimension_id:getZodPrefixedIdWithDefault("pcb_fabrication_note_dimension"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),layer:visible_layer,from:point,to:point,text:external_exports.string().optional(),text_ccw_rotation:external_exports.number().optional(),offset:length.optional(),offset_distance:length.optional(),offset_direction:external_exports.object({x:external_exports.number(),y:external_exports.number()}).optional(),font:external_exports.literal("tscircuit2024").default("tscircuit2024"),font_size:length.default("1mm"),color:external_exports.string().optional(),arrow_size:length.default("1mm")}).describe("Defines a measurement annotation within PCB fabrication notes");expectTypesMatch(!0);pcb_note_text=external_exports.object({type:external_exports.literal("pcb_note_text"),pcb_note_text_id:getZodPrefixedIdWithDefault("pcb_note_text"),pcb_component_id:external_exports.string().optional(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),name:external_exports.string().optional(),font:external_exports.literal("tscircuit2024").default("tscircuit2024"),font_size:distance.default("1mm"),text:external_exports.string().optional(),anchor_position:point.default({x:0,y:0}),anchor_alignment:external_exports.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),color:external_exports.string().optional()}).describe("Defines a documentation note in text on the PCB");expectTypesMatch(!0);pcb_note_rect=external_exports.object({type:external_exports.literal("pcb_note_rect"),pcb_note_rect_id:getZodPrefixedIdWithDefault("pcb_note_rect"),pcb_component_id:external_exports.string().optional(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),name:external_exports.string().optional(),text:external_exports.string().optional(),center:point,width:length,height:length,stroke_width:length.default("0.1mm"),corner_radius:length.optional(),is_filled:external_exports.boolean().optional(),has_stroke:external_exports.boolean().optional(),is_stroke_dashed:external_exports.boolean().optional(),color:external_exports.string().optional()}).describe("Defines a rectangular documentation note on the PCB");expectTypesMatch(!0);pcb_note_path=external_exports.object({type:external_exports.literal("pcb_note_path"),pcb_note_path_id:getZodPrefixedIdWithDefault("pcb_note_path"),pcb_component_id:external_exports.string().optional(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),name:external_exports.string().optional(),text:external_exports.string().optional(),route:external_exports.array(point),stroke_width:length.default("0.1mm"),color:external_exports.string().optional()}).describe("Defines a polyline documentation note on the PCB");expectTypesMatch(!0);pcb_note_line=external_exports.object({type:external_exports.literal("pcb_note_line"),pcb_note_line_id:getZodPrefixedIdWithDefault("pcb_note_line"),pcb_component_id:external_exports.string().optional(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),name:external_exports.string().optional(),text:external_exports.string().optional(),x1:distance,y1:distance,x2:distance,y2:distance,stroke_width:distance.default("0.1mm"),color:external_exports.string().optional(),is_dashed:external_exports.boolean().optional()}).describe("Defines a straight documentation note line on the PCB");expectTypesMatch(!0);pcb_note_dimension=external_exports.object({type:external_exports.literal("pcb_note_dimension"),pcb_note_dimension_id:getZodPrefixedIdWithDefault("pcb_note_dimension"),pcb_component_id:external_exports.string().optional(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),name:external_exports.string().optional(),from:point,to:point,text:external_exports.string().optional(),text_ccw_rotation:external_exports.number().optional(),offset_distance:length.optional(),offset_direction:external_exports.object({x:external_exports.number(),y:external_exports.number()}).optional(),font:external_exports.literal("tscircuit2024").default("tscircuit2024"),font_size:length.default("1mm"),color:external_exports.string().optional(),arrow_size:length.default("1mm")}).describe("Defines a measurement annotation within PCB documentation notes");expectTypesMatch(!0);pcb_footprint_overlap_error=external_exports.object({type:external_exports.literal("pcb_footprint_overlap_error"),pcb_error_id:getZodPrefixedIdWithDefault("pcb_error"),error_type:external_exports.literal("pcb_footprint_overlap_error").default("pcb_footprint_overlap_error"),message:external_exports.string(),pcb_smtpad_ids:external_exports.array(external_exports.string()).optional(),pcb_plated_hole_ids:external_exports.array(external_exports.string()).optional(),pcb_hole_ids:external_exports.array(external_exports.string()).optional(),pcb_keepout_ids:external_exports.array(external_exports.string()).optional()}).describe("Error emitted when a pcb footprint overlaps with another element");expectTypesMatch(!0);pcb_keepout=external_exports.object({type:external_exports.literal("pcb_keepout"),shape:external_exports.literal("rect"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),center:point,width:distance,height:distance,pcb_keepout_id:external_exports.string(),layers:external_exports.array(external_exports.string()),description:external_exports.string().optional()}).or(external_exports.object({type:external_exports.literal("pcb_keepout"),shape:external_exports.literal("circle"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),center:point,radius:distance,pcb_keepout_id:external_exports.string(),layers:external_exports.array(external_exports.string()),description:external_exports.string().optional()}));expectTypesMatch(!0);pcb_cutout_base=external_exports.object({type:external_exports.literal("pcb_cutout"),pcb_cutout_id:getZodPrefixedIdWithDefault("pcb_cutout"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),pcb_board_id:external_exports.string().optional(),pcb_panel_id:external_exports.string().optional()}),pcb_cutout_rect=pcb_cutout_base.extend({shape:external_exports.literal("rect"),center:point,width:length,height:length,rotation:rotation.optional(),corner_radius:length.optional()});expectTypesMatch(!0);pcb_cutout_circle=pcb_cutout_base.extend({shape:external_exports.literal("circle"),center:point,radius:length});expectTypesMatch(!0);pcb_cutout_polygon=pcb_cutout_base.extend({shape:external_exports.literal("polygon"),points:external_exports.array(point)});expectTypesMatch(!0);pcb_cutout_path=pcb_cutout_base.extend({shape:external_exports.literal("path"),route:external_exports.array(point),slot_width:length,slot_length:length.optional(),space_between_slots:length.optional(),slot_corner_radius:length.optional()});expectTypesMatch(!0);pcb_cutout=external_exports.discriminatedUnion("shape",[pcb_cutout_rect,pcb_cutout_circle,pcb_cutout_polygon,pcb_cutout_path]).describe("Defines a cutout on the PCB, removing board material.");expectTypesMatch(!0);pcb_missing_footprint_error=external_exports.object({type:external_exports.literal("pcb_missing_footprint_error"),pcb_missing_footprint_error_id:getZodPrefixedIdWithDefault("pcb_missing_footprint_error"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),error_type:external_exports.literal("pcb_missing_footprint_error").default("pcb_missing_footprint_error"),source_component_id:external_exports.string(),message:external_exports.string()}).describe("Defines a missing footprint error on the PCB");expectTypesMatch(!0);external_footprint_load_error=external_exports.object({type:external_exports.literal("external_footprint_load_error"),external_footprint_load_error_id:getZodPrefixedIdWithDefault("external_footprint_load_error"),pcb_component_id:external_exports.string(),source_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),footprinter_string:external_exports.string().optional(),error_type:external_exports.literal("external_footprint_load_error").default("external_footprint_load_error"),message:external_exports.string()}).describe("Defines an error when an external footprint fails to load");expectTypesMatch(!0);circuit_json_footprint_load_error=external_exports.object({type:external_exports.literal("circuit_json_footprint_load_error"),circuit_json_footprint_load_error_id:getZodPrefixedIdWithDefault("circuit_json_footprint_load_error"),pcb_component_id:external_exports.string(),source_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),error_type:external_exports.literal("circuit_json_footprint_load_error").default("circuit_json_footprint_load_error"),message:external_exports.string(),circuit_json:external_exports.array(external_exports.any()).optional()}).describe("Defines an error when a circuit JSON footprint fails to load");expectTypesMatch(!0);pcb_group=external_exports.object({type:external_exports.literal("pcb_group"),pcb_group_id:getZodPrefixedIdWithDefault("pcb_group"),source_group_id:external_exports.string(),is_subcircuit:external_exports.boolean().optional(),subcircuit_id:external_exports.string().optional(),width:length.optional(),height:length.optional(),center:point,display_offset_x:external_exports.string().optional().describe("How to display the x offset for this group, usually corresponding with how the user specified it"),display_offset_y:external_exports.string().optional().describe("How to display the y offset for this group, usually corresponding with how the user specified it"),outline:external_exports.array(point).optional(),anchor_position:point.optional(),anchor_alignment:ninePointAnchor.default("center"),position_mode:external_exports.enum(["packed","relative_to_group_anchor","none"]).optional(),positioned_relative_to_pcb_group_id:external_exports.string().optional(),positioned_relative_to_pcb_board_id:external_exports.string().optional(),pcb_component_ids:external_exports.array(external_exports.string()),child_layout_mode:external_exports.enum(["packed","none"]).optional(),name:external_exports.string().optional(),description:external_exports.string().optional(),layout_mode:external_exports.string().optional(),autorouter_configuration:external_exports.object({trace_clearance:length}).optional(),autorouter_used_string:external_exports.string().optional()}).describe("Defines a group of components on the PCB");expectTypesMatch(!0);pcb_autorouting_error=external_exports.object({type:external_exports.literal("pcb_autorouting_error"),pcb_error_id:getZodPrefixedIdWithDefault("pcb_autorouting_error"),error_type:external_exports.literal("pcb_autorouting_error").default("pcb_autorouting_error"),message:external_exports.string(),subcircuit_id:external_exports.string().optional()}).describe("The autorouting has failed to route a portion of the board");expectTypesMatch(!0);pcb_manual_edit_conflict_warning=external_exports.object({type:external_exports.literal("pcb_manual_edit_conflict_warning"),pcb_manual_edit_conflict_warning_id:getZodPrefixedIdWithDefault("pcb_manual_edit_conflict_warning"),warning_type:external_exports.literal("pcb_manual_edit_conflict_warning").default("pcb_manual_edit_conflict_warning"),message:external_exports.string(),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),source_component_id:external_exports.string()}).describe("Warning emitted when a component has both manual placement and explicit pcbX/pcbY coordinates");expectTypesMatch(!0);pcb_breakout_point=external_exports.object({type:external_exports.literal("pcb_breakout_point"),pcb_breakout_point_id:getZodPrefixedIdWithDefault("pcb_breakout_point"),pcb_group_id:external_exports.string(),subcircuit_id:external_exports.string().optional(),source_trace_id:external_exports.string().optional(),source_port_id:external_exports.string().optional(),source_net_id:external_exports.string().optional(),x:distance,y:distance}).describe("Defines a routing target within a pcb_group for a source_trace or source_net");expectTypesMatch(!0);pcb_ground_plane=external_exports.object({type:external_exports.literal("pcb_ground_plane"),pcb_ground_plane_id:getZodPrefixedIdWithDefault("pcb_ground_plane"),source_pcb_ground_plane_id:external_exports.string(),source_net_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional()}).describe("Defines a ground plane on the PCB");expectTypesMatch(!0);pcb_ground_plane_region=external_exports.object({type:external_exports.literal("pcb_ground_plane_region"),pcb_ground_plane_region_id:getZodPrefixedIdWithDefault("pcb_ground_plane_region"),pcb_ground_plane_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),layer:layer_ref,points:external_exports.array(point)}).describe("Defines a polygon region of a ground plane");expectTypesMatch(!0);pcb_thermal_spoke=external_exports.object({type:external_exports.literal("pcb_thermal_spoke"),pcb_thermal_spoke_id:getZodPrefixedIdWithDefault("pcb_thermal_spoke"),pcb_ground_plane_id:external_exports.string(),shape:external_exports.string(),spoke_count:external_exports.number(),spoke_thickness:distance,spoke_inner_diameter:distance,spoke_outer_diameter:distance,pcb_plated_hole_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional()}).describe("Pattern for connecting a ground plane to a plated hole");expectTypesMatch(!0);pcb_copper_pour_base=external_exports.object({type:external_exports.literal("pcb_copper_pour"),pcb_copper_pour_id:getZodPrefixedIdWithDefault("pcb_copper_pour"),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),layer:layer_ref,source_net_id:external_exports.string().optional(),covered_with_solder_mask:external_exports.boolean().optional().default(!0)}),pcb_copper_pour_rect=pcb_copper_pour_base.extend({shape:external_exports.literal("rect"),center:point,width:length,height:length,rotation:rotation.optional()});expectTypesMatch(!0);pcb_copper_pour_brep=pcb_copper_pour_base.extend({shape:external_exports.literal("brep"),brep_shape});expectTypesMatch(!0);pcb_copper_pour_polygon=pcb_copper_pour_base.extend({shape:external_exports.literal("polygon"),points:external_exports.array(point)});expectTypesMatch(!0);pcb_copper_pour=external_exports.discriminatedUnion("shape",[pcb_copper_pour_rect,pcb_copper_pour_brep,pcb_copper_pour_polygon]).describe("Defines a copper pour on the PCB.");expectTypesMatch(!0);pcb_component_outside_board_error=external_exports.object({type:external_exports.literal("pcb_component_outside_board_error"),pcb_component_outside_board_error_id:getZodPrefixedIdWithDefault("pcb_component_outside_board_error"),error_type:external_exports.literal("pcb_component_outside_board_error").default("pcb_component_outside_board_error"),message:external_exports.string(),pcb_component_id:external_exports.string(),pcb_board_id:external_exports.string(),component_center:point,component_bounds:external_exports.object({min_x:external_exports.number(),max_x:external_exports.number(),min_y:external_exports.number(),max_y:external_exports.number()}),subcircuit_id:external_exports.string().optional(),source_component_id:external_exports.string().optional()}).describe("Error emitted when a PCB component is placed outside the board boundaries");expectTypesMatch(!0);pcb_component_invalid_layer_error=external_exports.object({type:external_exports.literal("pcb_component_invalid_layer_error"),pcb_component_invalid_layer_error_id:getZodPrefixedIdWithDefault("pcb_component_invalid_layer_error"),error_type:external_exports.literal("pcb_component_invalid_layer_error").default("pcb_component_invalid_layer_error"),message:external_exports.string(),pcb_component_id:external_exports.string().optional(),source_component_id:external_exports.string(),layer:layer_ref,subcircuit_id:external_exports.string().optional()}).describe("Error emitted when a component is placed on an invalid layer (components can only be on 'top' or 'bottom' layers)");expectTypesMatch(!0);pcb_via_clearance_error=external_exports.object({type:external_exports.literal("pcb_via_clearance_error"),pcb_error_id:getZodPrefixedIdWithDefault("pcb_error"),error_type:external_exports.literal("pcb_via_clearance_error").default("pcb_via_clearance_error"),message:external_exports.string(),pcb_via_ids:external_exports.array(external_exports.string()).min(2),minimum_clearance:distance.optional(),actual_clearance:distance.optional(),pcb_center:external_exports.object({x:external_exports.number().optional(),y:external_exports.number().optional()}).optional(),subcircuit_id:external_exports.string().optional()}).describe("Error emitted when vias are closer than the allowed clearance");expectTypesMatch(!0);pcb_courtyard_rect=external_exports.object({type:external_exports.literal("pcb_courtyard_rect"),pcb_courtyard_rect_id:getZodPrefixedIdWithDefault("pcb_courtyard_rect"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),center:point,width:length,height:length,layer:visible_layer,color:external_exports.string().optional()}).describe("Defines a courtyard rectangle on the PCB");expectTypesMatch(!0);pcb_courtyard_outline=external_exports.object({type:external_exports.literal("pcb_courtyard_outline"),pcb_courtyard_outline_id:getZodPrefixedIdWithDefault("pcb_courtyard_outline"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),layer:visible_layer,outline:external_exports.array(point).min(2),stroke_width:length.default("0.1mm"),is_closed:external_exports.boolean().optional(),is_stroke_dashed:external_exports.boolean().optional(),color:external_exports.string().optional()}).describe("Defines a courtyard outline on the PCB");expectTypesMatch(!0);pcb_courtyard_polygon=external_exports.object({type:external_exports.literal("pcb_courtyard_polygon"),pcb_courtyard_polygon_id:getZodPrefixedIdWithDefault("pcb_courtyard_polygon"),pcb_component_id:external_exports.string(),pcb_group_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),layer:visible_layer,points:external_exports.array(point).min(3),color:external_exports.string().optional()}).describe("Defines a courtyard polygon on the PCB");expectTypesMatch(!0);cad_component=external_exports.object({type:external_exports.literal("cad_component"),cad_component_id:external_exports.string(),pcb_component_id:external_exports.string(),source_component_id:external_exports.string(),position:point3,rotation:point3.optional(),size:point3.optional(),layer:layer_ref.optional(),subcircuit_id:external_exports.string().optional(),footprinter_string:external_exports.string().optional(),model_obj_url:external_exports.string().optional(),model_stl_url:external_exports.string().optional(),model_3mf_url:external_exports.string().optional(),model_gltf_url:external_exports.string().optional(),model_glb_url:external_exports.string().optional(),model_step_url:external_exports.string().optional(),model_wrl_url:external_exports.string().optional(),model_unit_to_mm_scale_factor:external_exports.number().optional(),model_jscad:external_exports.any().optional(),show_as_translucent_model:external_exports.boolean().optional()}).describe("Defines a component on the PCB");expectTypesMatch(!0);wave_shape=external_exports.enum(["sinewave","square","triangle","sawtooth"]),percentage=external_exports.union([external_exports.string(),external_exports.number()]).transform(val=>typeof val=="string"?val.endsWith("%")?parseFloat(val.slice(0,-1))/100:parseFloat(val):val).pipe(external_exports.number().min(0,"Duty cycle must be non-negative").max(1,"Duty cycle cannot be greater than 100%")),simulation_dc_voltage_source=external_exports.object({type:external_exports.literal("simulation_voltage_source"),simulation_voltage_source_id:getZodPrefixedIdWithDefault("simulation_voltage_source"),is_dc_source:external_exports.literal(!0).optional().default(!0),positive_source_port_id:external_exports.string().optional(),negative_source_port_id:external_exports.string().optional(),positive_source_net_id:external_exports.string().optional(),negative_source_net_id:external_exports.string().optional(),voltage}).describe("Defines a DC voltage source for simulation"),simulation_ac_voltage_source=external_exports.object({type:external_exports.literal("simulation_voltage_source"),simulation_voltage_source_id:getZodPrefixedIdWithDefault("simulation_voltage_source"),is_dc_source:external_exports.literal(!1),terminal1_source_port_id:external_exports.string().optional(),terminal2_source_port_id:external_exports.string().optional(),terminal1_source_net_id:external_exports.string().optional(),terminal2_source_net_id:external_exports.string().optional(),voltage:voltage.optional(),frequency:frequency.optional(),peak_to_peak_voltage:voltage.optional(),wave_shape:wave_shape.optional(),phase:rotation.optional(),duty_cycle:percentage.optional()}).describe("Defines an AC voltage source for simulation"),simulation_voltage_source=external_exports.union([simulation_dc_voltage_source,simulation_ac_voltage_source]).describe("Defines a voltage source for simulation");expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);percentage2=external_exports.union([external_exports.string(),external_exports.number()]).transform(val=>typeof val=="string"?val.endsWith("%")?parseFloat(val.slice(0,-1))/100:parseFloat(val):val).pipe(external_exports.number().min(0,"Duty cycle must be non-negative").max(1,"Duty cycle cannot be greater than 100%")),simulation_dc_current_source=external_exports.object({type:external_exports.literal("simulation_current_source"),simulation_current_source_id:getZodPrefixedIdWithDefault("simulation_current_source"),is_dc_source:external_exports.literal(!0).optional().default(!0),positive_source_port_id:external_exports.string().optional(),negative_source_port_id:external_exports.string().optional(),positive_source_net_id:external_exports.string().optional(),negative_source_net_id:external_exports.string().optional(),current}).describe("Defines a DC current source for simulation"),simulation_ac_current_source=external_exports.object({type:external_exports.literal("simulation_current_source"),simulation_current_source_id:getZodPrefixedIdWithDefault("simulation_current_source"),is_dc_source:external_exports.literal(!1),terminal1_source_port_id:external_exports.string().optional(),terminal2_source_port_id:external_exports.string().optional(),terminal1_source_net_id:external_exports.string().optional(),terminal2_source_net_id:external_exports.string().optional(),current:current.optional(),frequency:frequency.optional(),peak_to_peak_current:current.optional(),wave_shape:wave_shape.optional(),phase:rotation.optional(),duty_cycle:percentage2.optional()}).describe("Defines an AC current source for simulation"),simulation_current_source=external_exports.union([simulation_dc_current_source,simulation_ac_current_source]).describe("Defines a current source for simulation");expectTypesMatch(!0);expectTypesMatch(!0);expectTypesMatch(!0);experiment_type=external_exports.union([external_exports.literal("spice_dc_sweep"),external_exports.literal("spice_dc_operating_point"),external_exports.literal("spice_transient_analysis"),external_exports.literal("spice_ac_analysis")]),simulation_experiment=external_exports.object({type:external_exports.literal("simulation_experiment"),simulation_experiment_id:getZodPrefixedIdWithDefault("simulation_experiment"),name:external_exports.string(),experiment_type,time_per_step:duration_ms.optional(),start_time_ms:ms.optional(),end_time_ms:ms.optional()}).describe("Defines a simulation experiment configuration");expectTypesMatch(!0);simulation_transient_voltage_graph=external_exports.object({type:external_exports.literal("simulation_transient_voltage_graph"),simulation_transient_voltage_graph_id:getZodPrefixedIdWithDefault("simulation_transient_voltage_graph"),simulation_experiment_id:external_exports.string(),timestamps_ms:external_exports.array(external_exports.number()).optional(),voltage_levels:external_exports.array(external_exports.number()),source_component_id:external_exports.string().optional(),subcircuit_connectivity_map_key:external_exports.string().optional(),time_per_step:duration_ms,start_time_ms:ms,end_time_ms:ms,name:external_exports.string().optional(),color:external_exports.string().optional()}).describe("Stores voltage measurements over time for a simulation");expectTypesMatch(!0);simulation_switch=external_exports.object({type:external_exports.literal("simulation_switch"),simulation_switch_id:getZodPrefixedIdWithDefault("simulation_switch"),source_component_id:external_exports.string().optional(),closes_at:ms.optional(),opens_at:ms.optional(),starts_closed:external_exports.boolean().optional(),switching_frequency:frequency.optional()}).describe("Defines a switch for simulation timing control");expectTypesMatch(!0);simulation_voltage_probe=external_exports.object({type:external_exports.literal("simulation_voltage_probe"),simulation_voltage_probe_id:getZodPrefixedIdWithDefault("simulation_voltage_probe"),source_component_id:external_exports.string().optional(),name:external_exports.string().optional(),signal_input_source_port_id:external_exports.string().optional(),signal_input_source_net_id:external_exports.string().optional(),reference_input_source_port_id:external_exports.string().optional(),reference_input_source_net_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional(),color:external_exports.string().optional()}).describe("Defines a voltage probe for simulation. If a reference input is not provided, it measures against ground. If a reference input is provided, it measures the differential voltage between two points.").superRefine((data,ctx)=>{if(data.reference_input_source_port_id||data.reference_input_source_net_id){let has_ports=!!data.signal_input_source_port_id||!!data.reference_input_source_port_id,has_nets=!!data.signal_input_source_net_id||!!data.reference_input_source_net_id;has_ports&&has_nets?ctx.addIssue({code:external_exports.ZodIssueCode.custom,message:"Cannot mix port and net connections in a differential probe."}):has_ports?(!data.signal_input_source_port_id||!data.reference_input_source_port_id)&&ctx.addIssue({code:external_exports.ZodIssueCode.custom,message:"Differential port probe requires both signal_input_source_port_id and reference_input_source_port_id."}):has_nets&&(!data.signal_input_source_net_id||!data.reference_input_source_net_id)&&ctx.addIssue({code:external_exports.ZodIssueCode.custom,message:"Differential net probe requires both signal_input_source_net_id and reference_input_source_net_id."})}else!!data.signal_input_source_port_id==!!data.signal_input_source_net_id&&ctx.addIssue({code:external_exports.ZodIssueCode.custom,message:"A voltage probe must have exactly one of signal_input_source_port_id or signal_input_source_net_id."})});expectTypesMatch(!0);simulation_unknown_experiment_error=external_exports.object({type:external_exports.literal("simulation_unknown_experiment_error"),simulation_unknown_experiment_error_id:getZodPrefixedIdWithDefault("simulation_unknown_experiment_error"),error_type:external_exports.literal("simulation_unknown_experiment_error").default("simulation_unknown_experiment_error"),message:external_exports.string(),simulation_experiment_id:external_exports.string().optional(),subcircuit_id:external_exports.string().optional()}).describe("An unknown error occurred during the simulation experiment.");expectTypesMatch(!0);simulation_op_amp=external_exports.object({type:external_exports.literal("simulation_op_amp"),simulation_op_amp_id:getZodPrefixedIdWithDefault("simulation_op_amp"),source_component_id:external_exports.string().optional(),inverting_input_source_port_id:external_exports.string(),non_inverting_input_source_port_id:external_exports.string(),output_source_port_id:external_exports.string(),positive_supply_source_port_id:external_exports.string(),negative_supply_source_port_id:external_exports.string()}).describe("Defines a simple ideal operational amplifier for simulation");expectTypesMatch(!0);any_circuit_element=external_exports.union([source_trace,source_port,source_component_internal_connection,any_source_component,source_net,source_group,source_simple_chip,source_simple_capacitor,source_simple_diode,source_simple_led,source_simple_resistor,source_simple_power_source,source_simple_battery,source_simple_inductor,source_simple_pin_header,source_simple_pinout,source_simple_resonator,source_simple_switch,source_simple_transistor,source_simple_test_point,source_simple_mosfet,source_simple_op_amp,source_simple_potentiometer,source_simple_push_button,source_pcb_ground_plane,source_manually_placed_via,source_board,source_project_metadata,source_trace_not_connected_error,source_pin_missing_trace_warning,source_pin_must_be_connected_error,unknown_error_finding_part,pcb_component,pcb_hole,pcb_missing_footprint_error,external_footprint_load_error,circuit_json_footprint_load_error,pcb_manual_edit_conflict_warning,pcb_plated_hole,pcb_keepout,pcb_port,pcb_net,pcb_text,pcb_trace,pcb_via,pcb_smtpad,pcb_solder_paste,pcb_board,pcb_panel,pcb_group,pcb_trace_hint,pcb_silkscreen_line,pcb_silkscreen_path,pcb_silkscreen_text,pcb_silkscreen_pill,pcb_copper_text,pcb_silkscreen_rect,pcb_silkscreen_circle,pcb_silkscreen_oval,pcb_trace_error,pcb_trace_missing_error,pcb_placement_error,pcb_port_not_matched_error,pcb_port_not_connected_error,pcb_via_clearance_error,pcb_fabrication_note_path,pcb_fabrication_note_text,pcb_fabrication_note_rect,pcb_fabrication_note_dimension,pcb_note_text,pcb_note_rect,pcb_note_path,pcb_note_line,pcb_note_dimension,pcb_autorouting_error,pcb_footprint_overlap_error,pcb_breakout_point,pcb_cutout,pcb_ground_plane,pcb_ground_plane_region,pcb_thermal_spoke,pcb_copper_pour,pcb_component_outside_board_error,pcb_component_invalid_layer_error,pcb_courtyard_rect,pcb_courtyard_outline,pcb_courtyard_polygon,schematic_box,schematic_text,schematic_line,schematic_rect,schematic_circle,schematic_arc,schematic_component,schematic_port,schematic_trace,schematic_path,schematic_error,schematic_layout_error,schematic_net_label,schematic_debug_object,schematic_voltage_probe,schematic_manual_edit_conflict_warning,schematic_group,schematic_sheet,schematic_table,schematic_table_cell,cad_component,simulation_voltage_source,simulation_current_source,simulation_experiment,simulation_transient_voltage_graph,simulation_switch,simulation_voltage_probe,simulation_unknown_experiment_error,simulation_op_amp]),any_soup_element=any_circuit_element;expectTypesMatch(!0);expectStringUnionsMatch(!0)}});var require_ms=__commonJS({"node_modules/ms/index.js"(exports,module){"use strict";var s3=1e3,m3=s3*60,h2=m3*60,d3=h2*24,w4=d3*7,y3=d3*365.25;module.exports=function(val,options){options=options||{};var type=typeof val;if(type==="string"&&val.length>0)return parse5(val);if(type==="number"&&isFinite(val))return options.long?fmtLong(val):fmtShort(val);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(val))};function parse5(str){if(str=String(str),!(str.length>100)){var match2=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);if(match2){var n3=parseFloat(match2[1]),type=(match2[2]||"ms").toLowerCase();switch(type){case"years":case"year":case"yrs":case"yr":case"y":return n3*y3;case"weeks":case"week":case"w":return n3*w4;case"days":case"day":case"d":return n3*d3;case"hours":case"hour":case"hrs":case"hr":case"h":return n3*h2;case"minutes":case"minute":case"mins":case"min":case"m":return n3*m3;case"seconds":case"second":case"secs":case"sec":case"s":return n3*s3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n3;default:return}}}}function fmtShort(ms4){var msAbs=Math.abs(ms4);return msAbs>=d3?Math.round(ms4/d3)+"d":msAbs>=h2?Math.round(ms4/h2)+"h":msAbs>=m3?Math.round(ms4/m3)+"m":msAbs>=s3?Math.round(ms4/s3)+"s":ms4+"ms"}function fmtLong(ms4){var msAbs=Math.abs(ms4);return msAbs>=d3?plural(ms4,msAbs,d3,"day"):msAbs>=h2?plural(ms4,msAbs,h2,"hour"):msAbs>=m3?plural(ms4,msAbs,m3,"minute"):msAbs>=s3?plural(ms4,msAbs,s3,"second"):ms4+" ms"}function plural(ms4,msAbs,n3,name){var isPlural=msAbs>=n3*1.5;return Math.round(ms4/n3)+" "+name+(isPlural?"s":"")}}});var require_common=__commonJS({"node_modules/debug/src/common.js"(exports,module){"use strict";function setup(env){createDebug.debug=createDebug,createDebug.default=createDebug,createDebug.coerce=coerce2,createDebug.disable=disable,createDebug.enable=enable,createDebug.enabled=enabled,createDebug.humanize=require_ms(),createDebug.destroy=destroy,Object.keys(env).forEach(key=>{createDebug[key]=env[key]}),createDebug.names=[],createDebug.skips=[],createDebug.formatters={};function selectColor(namespace){let hash=0;for(let i3=0;i3<namespace.length;i3++)hash=(hash<<5)-hash+namespace.charCodeAt(i3),hash|=0;return createDebug.colors[Math.abs(hash)%createDebug.colors.length]}createDebug.selectColor=selectColor;function createDebug(namespace){let prevTime,enableOverride=null,namespacesCache,enabledCache;function debug19(...args){if(!debug19.enabled)return;let self2=debug19,curr=Number(new Date),ms4=curr-(prevTime||curr);self2.diff=ms4,self2.prev=prevTime,self2.curr=curr,prevTime=curr,args[0]=createDebug.coerce(args[0]),typeof args[0]!="string"&&args.unshift("%O");let index=0;args[0]=args[0].replace(/%([a-zA-Z%])/g,(match2,format)=>{if(match2==="%%")return"%";index++;let formatter=createDebug.formatters[format];if(typeof formatter=="function"){let val=args[index];match2=formatter.call(self2,val),args.splice(index,1),index--}return match2}),createDebug.formatArgs.call(self2,args),(self2.log||createDebug.log).apply(self2,args)}return debug19.namespace=namespace,debug19.useColors=createDebug.useColors(),debug19.color=createDebug.selectColor(namespace),debug19.extend=extend,debug19.destroy=createDebug.destroy,Object.defineProperty(debug19,"enabled",{enumerable:!0,configurable:!1,get:()=>enableOverride!==null?enableOverride:(namespacesCache!==createDebug.namespaces&&(namespacesCache=createDebug.namespaces,enabledCache=createDebug.enabled(namespace)),enabledCache),set:v4=>{enableOverride=v4}}),typeof createDebug.init=="function"&&createDebug.init(debug19),debug19}function extend(namespace,delimiter){let newDebug=createDebug(this.namespace+(typeof delimiter>"u"?":":delimiter)+namespace);return newDebug.log=this.log,newDebug}function enable(namespaces){createDebug.save(namespaces),createDebug.namespaces=namespaces,createDebug.names=[],createDebug.skips=[];let split=(typeof namespaces=="string"?namespaces:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let ns3 of split)ns3[0]==="-"?createDebug.skips.push(ns3.slice(1)):createDebug.names.push(ns3)}function matchesTemplate(search,template){let searchIndex=0,templateIndex=0,starIndex=-1,matchIndex=0;for(;searchIndex<search.length;)if(templateIndex<template.length&&(template[templateIndex]===search[searchIndex]||template[templateIndex]==="*"))template[templateIndex]==="*"?(starIndex=templateIndex,matchIndex=searchIndex,templateIndex++):(searchIndex++,templateIndex++);else if(starIndex!==-1)templateIndex=starIndex+1,matchIndex++,searchIndex=matchIndex;else return!1;for(;templateIndex<template.length&&template[templateIndex]==="*";)templateIndex++;return templateIndex===template.length}function disable(){let namespaces=[...createDebug.names,...createDebug.skips.map(namespace=>"-"+namespace)].join(",");return createDebug.enable(""),namespaces}function enabled(name){for(let skip of createDebug.skips)if(matchesTemplate(name,skip))return!1;for(let ns3 of createDebug.names)if(matchesTemplate(name,ns3))return!0;return!1}function coerce2(val){return val instanceof Error?val.stack||val.message:val}function destroy(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return createDebug.enable(createDebug.load()),createDebug}module.exports=setup}});var require_browser=__commonJS({"node_modules/debug/src/browser.js"(exports,module){"use strict";exports.formatArgs=formatArgs;exports.save=save;exports.load=load;exports.useColors=useColors;exports.storage=localstorage();exports.destroy=(()=>{let warned=!1;return()=>{warned||(warned=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();exports.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function useColors(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let m3;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(m3=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(m3[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function formatArgs(args){if(args[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+args[0]+(this.useColors?"%c ":" ")+"+"+module.exports.humanize(this.diff),!this.useColors)return;let c3="color: "+this.color;args.splice(1,0,c3,"color: inherit");let index=0,lastC=0;args[0].replace(/%[a-zA-Z%]/g,match2=>{match2!=="%%"&&(index++,match2==="%c"&&(lastC=index))}),args.splice(lastC,0,c3)}exports.log=console.debug||console.log||(()=>{});function save(namespaces){try{namespaces?exports.storage.setItem("debug",namespaces):exports.storage.removeItem("debug")}catch{}}function load(){let r4;try{r4=exports.storage.getItem("debug")||exports.storage.getItem("DEBUG")}catch{}return!r4&&typeof process<"u"&&"env"in process&&(r4=process.env.DEBUG),r4}function localstorage(){try{return localStorage}catch{}}module.exports=require_common()(exports);var{formatters}=module.exports;formatters.j=function(v4){try{return JSON.stringify(v4)}catch(error){return"[UnexpectedJSONParseError]: "+error.message}}}});var require_scheduler_development=__commonJS({"node_modules/react-reconciler/node_modules/scheduler/cjs/scheduler.development.js"(exports){"use strict";(function(){function performWorkUntilDeadline(){if(needsPaint=!1,isMessageLoopRunning){var currentTime=exports.unstable_now();startTime=currentTime;var hasMoreWork=!0;try{a:{isHostCallbackScheduled=!1,isHostTimeoutScheduled&&(isHostTimeoutScheduled=!1,localClearTimeout(taskTimeoutID),taskTimeoutID=-1),isPerformingWork=!0;var previousPriorityLevel=currentPriorityLevel;try{b:{for(advanceTimers(currentTime),currentTask=peek(taskQueue);currentTask!==null&&!(currentTask.expirationTime>currentTime&&shouldYieldToHost());){var callback=currentTask.callback;if(typeof callback=="function"){currentTask.callback=null,currentPriorityLevel=currentTask.priorityLevel;var continuationCallback=callback(currentTask.expirationTime<=currentTime);if(currentTime=exports.unstable_now(),typeof continuationCallback=="function"){currentTask.callback=continuationCallback,advanceTimers(currentTime),hasMoreWork=!0;break b}currentTask===peek(taskQueue)&&pop(taskQueue),advanceTimers(currentTime)}else pop(taskQueue);currentTask=peek(taskQueue)}if(currentTask!==null)hasMoreWork=!0;else{var firstTimer=peek(timerQueue);firstTimer!==null&&requestHostTimeout(handleTimeout,firstTimer.startTime-currentTime),hasMoreWork=!1}}break a}finally{currentTask=null,currentPriorityLevel=previousPriorityLevel,isPerformingWork=!1}hasMoreWork=void 0}}finally{hasMoreWork?schedulePerformWorkUntilDeadline():isMessageLoopRunning=!1}}}function push(heap,node){var index=heap.length;heap.push(node);a:for(;0<index;){var parentIndex=index-1>>>1,parent=heap[parentIndex];if(0<compare(parent,node))heap[parentIndex]=node,heap[index]=parent,index=parentIndex;else break a}}function peek(heap){return heap.length===0?null:heap[0]}function pop(heap){if(heap.length===0)return null;var first=heap[0],last=heap.pop();if(last!==first){heap[0]=last;a:for(var index=0,length3=heap.length,halfLength=length3>>>1;index<halfLength;){var leftIndex=2*(index+1)-1,left=heap[leftIndex],rightIndex=leftIndex+1,right=heap[rightIndex];if(0>compare(left,last))rightIndex<length3&&0>compare(right,left)?(heap[index]=right,heap[rightIndex]=last,index=rightIndex):(heap[index]=left,heap[leftIndex]=last,index=leftIndex);else if(rightIndex<length3&&0>compare(right,last))heap[index]=right,heap[rightIndex]=last,index=rightIndex;else break a}}return first}function compare(a2,b3){var diff=a2.sortIndex-b3.sortIndex;return diff!==0?diff:a2.id-b3.id}function advanceTimers(currentTime){for(var timer=peek(timerQueue);timer!==null;){if(timer.callback===null)pop(timerQueue);else if(timer.startTime<=currentTime)pop(timerQueue),timer.sortIndex=timer.expirationTime,push(taskQueue,timer);else break;timer=peek(timerQueue)}}function handleTimeout(currentTime){if(isHostTimeoutScheduled=!1,advanceTimers(currentTime),!isHostCallbackScheduled)if(peek(taskQueue)!==null)isHostCallbackScheduled=!0,isMessageLoopRunning||(isMessageLoopRunning=!0,schedulePerformWorkUntilDeadline());else{var firstTimer=peek(timerQueue);firstTimer!==null&&requestHostTimeout(handleTimeout,firstTimer.startTime-currentTime)}}function shouldYieldToHost(){return needsPaint?!0:!(exports.unstable_now()-startTime<frameInterval)}function requestHostTimeout(callback,ms4){taskTimeoutID=localSetTimeout(function(){callback(exports.unstable_now())},ms4)}if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()),exports.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var localPerformance=performance;exports.unstable_now=function(){return localPerformance.now()}}else{var localDate=Date,initialTime=localDate.now();exports.unstable_now=function(){return localDate.now()-initialTime}}var taskQueue=[],timerQueue=[],taskIdCounter=1,currentTask=null,currentPriorityLevel=3,isPerformingWork=!1,isHostCallbackScheduled=!1,isHostTimeoutScheduled=!1,needsPaint=!1,localSetTimeout=typeof setTimeout=="function"?setTimeout:null,localClearTimeout=typeof clearTimeout=="function"?clearTimeout:null,localSetImmediate=typeof setImmediate<"u"?setImmediate:null,isMessageLoopRunning=!1,taskTimeoutID=-1,frameInterval=5,startTime=-1;if(typeof localSetImmediate=="function")var schedulePerformWorkUntilDeadline=function(){localSetImmediate(performWorkUntilDeadline)};else if(typeof MessageChannel<"u"){var channel=new MessageChannel,port=channel.port2;channel.port1.onmessage=performWorkUntilDeadline,schedulePerformWorkUntilDeadline=function(){port.postMessage(null)}}else schedulePerformWorkUntilDeadline=function(){localSetTimeout(performWorkUntilDeadline,0)};exports.unstable_IdlePriority=5,exports.unstable_ImmediatePriority=1,exports.unstable_LowPriority=4,exports.unstable_NormalPriority=3,exports.unstable_Profiling=null,exports.unstable_UserBlockingPriority=2,exports.unstable_cancelCallback=function(task){task.callback=null},exports.unstable_forceFrameRate=function(fps){0>fps||125<fps?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):frameInterval=0<fps?Math.floor(1e3/fps):5},exports.unstable_getCurrentPriorityLevel=function(){return currentPriorityLevel},exports.unstable_next=function(eventHandler){switch(currentPriorityLevel){case 1:case 2:case 3:var priorityLevel=3;break;default:priorityLevel=currentPriorityLevel}var previousPriorityLevel=currentPriorityLevel;currentPriorityLevel=priorityLevel;try{return eventHandler()}finally{currentPriorityLevel=previousPriorityLevel}},exports.unstable_requestPaint=function(){needsPaint=!0},exports.unstable_runWithPriority=function(priorityLevel,eventHandler){switch(priorityLevel){case 1:case 2:case 3:case 4:case 5:break;default:priorityLevel=3}var previousPriorityLevel=currentPriorityLevel;currentPriorityLevel=priorityLevel;try{return eventHandler()}finally{currentPriorityLevel=previousPriorityLevel}},exports.unstable_scheduleCallback=function(priorityLevel,callback,options){var currentTime=exports.unstable_now();switch(typeof options=="object"&&options!==null?(options=options.delay,options=typeof options=="number"&&0<options?currentTime+options:currentTime):options=currentTime,priorityLevel){case 1:var timeout=-1;break;case 2:timeout=250;break;case 5:timeout=1073741823;break;case 4:timeout=1e4;break;default:timeout=5e3}return timeout=options+timeout,priorityLevel={id:taskIdCounter++,callback,priorityLevel,startTime:options,expirationTime:timeout,sortIndex:-1},options>currentTime?(priorityLevel.sortIndex=options,push(timerQueue,priorityLevel),peek(taskQueue)===null&&priorityLevel===peek(timerQueue)&&(isHostTimeoutScheduled?(localClearTimeout(taskTimeoutID),taskTimeoutID=-1):isHostTimeoutScheduled=!0,requestHostTimeout(handleTimeout,options-currentTime))):(priorityLevel.sortIndex=timeout,push(taskQueue,priorityLevel),isHostCallbackScheduled||isPerformingWork||(isHostCallbackScheduled=!0,isMessageLoopRunning||(isMessageLoopRunning=!0,schedulePerformWorkUntilDeadline()))),priorityLevel},exports.unstable_shouldYield=shouldYieldToHost,exports.unstable_wrapCallback=function(callback){var parentPriorityLevel=currentPriorityLevel;return function(){var previousPriorityLevel=currentPriorityLevel;currentPriorityLevel=parentPriorityLevel;try{return callback.apply(this,arguments)}finally{currentPriorityLevel=previousPriorityLevel}}},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()}});var require_scheduler=__commonJS({"node_modules/react-reconciler/node_modules/scheduler/index.js"(exports,module){"use strict";module.exports=require_scheduler_development()}});var require_react_reconciler_development=__commonJS({"node_modules/react-reconciler/cjs/react-reconciler.development.js"(exports,module){"use strict";module.exports=function($$$config){function findHook(fiber,id2){for(fiber=fiber.memoizedState;fiber!==null&&0<id2;)fiber=fiber.next,id2--;return fiber}function copyWithSetImpl(obj,path,index,value){if(index>=path.length)return value;var key=path[index],updated=isArrayImpl(obj)?obj.slice():assign({},obj);return updated[key]=copyWithSetImpl(obj[key],path,index+1,value),updated}function copyWithRename(obj,oldPath,newPath){if(oldPath.length!==newPath.length)console.warn("copyWithRename() expects paths of the same length");else{for(var i3=0;i3<newPath.length-1;i3++)if(oldPath[i3]!==newPath[i3]){console.warn("copyWithRename() expects paths to be the same except for the deepest key");return}return copyWithRenameImpl(obj,oldPath,newPath,0)}}function copyWithRenameImpl(obj,oldPath,newPath,index){var oldKey=oldPath[index],updated=isArrayImpl(obj)?obj.slice():assign({},obj);return index+1===oldPath.length?(updated[newPath[index]]=updated[oldKey],isArrayImpl(updated)?updated.splice(oldKey,1):delete updated[oldKey]):updated[oldKey]=copyWithRenameImpl(obj[oldKey],oldPath,newPath,index+1),updated}function copyWithDeleteImpl(obj,path,index){var key=path[index],updated=isArrayImpl(obj)?obj.slice():assign({},obj);return index+1===path.length?(isArrayImpl(updated)?updated.splice(key,1):delete updated[key],updated):(updated[key]=copyWithDeleteImpl(obj[key],path,index+1),updated)}function shouldSuspendImpl(){return!1}function shouldErrorImpl(){return null}function createFiber(tag,pendingProps,key,mode){return new FiberNode(tag,pendingProps,key,mode)}function scheduleRoot(root,element){root.context===emptyContextObject&&(updateContainerSync(element,root,null,null),flushSyncWork())}function scheduleRefresh(root,update){if(resolveFamily!==null){var staleFamilies=update.staleFamilies;update=update.updatedFamilies,flushPendingEffects(),scheduleFibersWithFamiliesRecursively(root.current,update,staleFamilies),flushSyncWork()}}function setRefreshHandler(handler){resolveFamily=handler}function warnForMissingKey(){}function warnInvalidHookAccess(){console.error("Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. You can only call Hooks at the top level of your React function. For more information, see https://react.dev/link/rules-of-hooks")}function warnInvalidContextAccess(){console.error("Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().")}function noop(){}function setToSortedString(set){var array2=[];return set.forEach(function(value){array2.push(value)}),array2.sort().join(", ")}function getNearestMountedFiber(fiber){var node=fiber,nearestMounted=fiber;if(fiber.alternate)for(;node.return;)node=node.return;else{fiber=node;do node=fiber,(node.flags&4098)!==0&&(nearestMounted=node.return),fiber=node.return;while(fiber)}return node.tag===3?nearestMounted:null}function assertIsMounted(fiber){if(getNearestMountedFiber(fiber)!==fiber)throw Error("Unable to find node on an unmounted component.")}function findCurrentFiberUsingSlowPath(fiber){var alternate=fiber.alternate;if(!alternate){if(alternate=getNearestMountedFiber(fiber),alternate===null)throw Error("Unable to find node on an unmounted component.");return alternate!==fiber?null:fiber}for(var a2=fiber,b3=alternate;;){var parentA=a2.return;if(parentA===null)break;var parentB=parentA.alternate;if(parentB===null){if(b3=parentA.return,b3!==null){a2=b3;continue}break}if(parentA.child===parentB.child){for(parentB=parentA.child;parentB;){if(parentB===a2)return assertIsMounted(parentA),fiber;if(parentB===b3)return assertIsMounted(parentA),alternate;parentB=parentB.sibling}throw Error("Unable to find node on an unmounted component.")}if(a2.return!==b3.return)a2=parentA,b3=parentB;else{for(var didFindChild=!1,_child=parentA.child;_child;){if(_child===a2){didFindChild=!0,a2=parentA,b3=parentB;break}if(_child===b3){didFindChild=!0,b3=parentA,a2=parentB;break}_child=_child.sibling}if(!didFindChild){for(_child=parentB.child;_child;){if(_child===a2){didFindChild=!0,a2=parentB,b3=parentA;break}if(_child===b3){didFindChild=!0,b3=parentB,a2=parentA;break}_child=_child.sibling}if(!didFindChild)throw Error("Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.")}}if(a2.alternate!==b3)throw Error("Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.")}if(a2.tag!==3)throw Error("Unable to find node on an unmounted component.");return a2.stateNode.current===a2?fiber:alternate}function findCurrentHostFiber(parent){return parent=findCurrentFiberUsingSlowPath(parent),parent!==null?findCurrentHostFiberImpl(parent):null}function findCurrentHostFiberImpl(node){var tag=node.tag;if(tag===5||tag===26||tag===27||tag===6)return node;for(node=node.child;node!==null;){if(tag=findCurrentHostFiberImpl(node),tag!==null)return tag;node=node.sibling}return null}function findCurrentHostFiberWithNoPortalsImpl(node){var tag=node.tag;if(tag===5||tag===26||tag===27||tag===6)return node;for(node=node.child;node!==null;){if(node.tag!==4&&(tag=findCurrentHostFiberWithNoPortalsImpl(node),tag!==null))return tag;node=node.sibling}return null}function getIteratorFn(maybeIterable){return maybeIterable===null||typeof maybeIterable!="object"?null:(maybeIterable=MAYBE_ITERATOR_SYMBOL&&maybeIterable[MAYBE_ITERATOR_SYMBOL]||maybeIterable["@@iterator"],typeof maybeIterable=="function"?maybeIterable:null)}function getComponentNameFromType(type){if(type==null)return null;if(typeof type=="function")return type.$$typeof===REACT_CLIENT_REFERENCE?null:type.displayName||type.name||null;if(typeof type=="string")return type;switch(type){case REACT_FRAGMENT_TYPE:return"Fragment";case REACT_PROFILER_TYPE:return"Profiler";case REACT_STRICT_MODE_TYPE:return"StrictMode";case REACT_SUSPENSE_TYPE:return"Suspense";case REACT_SUSPENSE_LIST_TYPE:return"SuspenseList";case REACT_ACTIVITY_TYPE:return"Activity"}if(typeof type=="object")switch(typeof type.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),type.$$typeof){case REACT_PORTAL_TYPE:return"Portal";case REACT_CONTEXT_TYPE:return(type.displayName||"Context")+".Provider";case REACT_CONSUMER_TYPE:return(type._context.displayName||"Context")+".Consumer";case REACT_FORWARD_REF_TYPE:var innerType=type.render;return type=type.displayName,type||(type=innerType.displayName||innerType.name||"",type=type!==""?"ForwardRef("+type+")":"ForwardRef"),type;case REACT_MEMO_TYPE:return innerType=type.displayName||null,innerType!==null?innerType:getComponentNameFromType(type.type)||"Memo";case REACT_LAZY_TYPE:innerType=type._payload,type=type._init;try{return getComponentNameFromType(type(innerType))}catch{}}return null}function getComponentNameFromFiber(fiber){var type=fiber.type;switch(fiber.tag){case 31:return"Activity";case 24:return"Cache";case 9:return(type._context.displayName||"Context")+".Consumer";case 10:return(type.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return fiber=type.render,fiber=fiber.displayName||fiber.name||"",type.displayName||(fiber!==""?"ForwardRef("+fiber+")":"ForwardRef");case 7:return"Fragment";case 26:case 27:case 5:return type;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return getComponentNameFromType(type);case 8:return type===REACT_STRICT_MODE_TYPE?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 14:case 15:if(typeof type=="function")return type.displayName||type.name||null;if(typeof type=="string")return type;break;case 29:if(type=fiber._debugInfo,type!=null){for(var i3=type.length-1;0<=i3;i3--)if(typeof type[i3].name=="string")return type[i3].name}if(fiber.return!==null)return getComponentNameFromFiber(fiber.return)}return null}function createCursor(defaultValue){return{current:defaultValue}}function pop(cursor,fiber){0>index$jscomp$0?console.error("Unexpected pop."):(fiber!==fiberStack[index$jscomp$0]&&console.error("Unexpected Fiber popped."),cursor.current=valueStack[index$jscomp$0],valueStack[index$jscomp$0]=null,fiberStack[index$jscomp$0]=null,index$jscomp$0--)}function push(cursor,value,fiber){index$jscomp$0++,valueStack[index$jscomp$0]=cursor.current,fiberStack[index$jscomp$0]=fiber,cursor.current=value}function clz32Fallback(x3){return x3>>>=0,x3===0?32:31-(log$1(x3)/LN2|0)|0}function getLabelForLane(lane){if(lane&1)return"SyncHydrationLane";if(lane&2)return"Sync";if(lane&4)return"InputContinuousHydration";if(lane&8)return"InputContinuous";if(lane&16)return"DefaultHydration";if(lane&32)return"Default";if(lane&128)return"TransitionHydration";if(lane&4194048)return"Transition";if(lane&62914560)return"Retry";if(lane&67108864)return"SelectiveHydration";if(lane&134217728)return"IdleHydration";if(lane&268435456)return"Idle";if(lane&536870912)return"Offscreen";if(lane&1073741824)return"Deferred"}function getHighestPriorityLanes(lanes){var pendingSyncLanes=lanes&42;if(pendingSyncLanes!==0)return pendingSyncLanes;switch(lanes&-lanes){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return lanes&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return lanes&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return console.error("Should have found matching lanes. This is a bug in React."),lanes}}function getNextLanes(root,wipLanes,rootHasPendingCommit){var pendingLanes=root.pendingLanes;if(pendingLanes===0)return 0;var nextLanes=0,suspendedLanes=root.suspendedLanes,pingedLanes=root.pingedLanes;root=root.warmLanes;var nonIdlePendingLanes=pendingLanes&134217727;return nonIdlePendingLanes!==0?(pendingLanes=nonIdlePendingLanes&~suspendedLanes,pendingLanes!==0?nextLanes=getHighestPriorityLanes(pendingLanes):(pingedLanes&=nonIdlePendingLanes,pingedLanes!==0?nextLanes=getHighestPriorityLanes(pingedLanes):rootHasPendingCommit||(rootHasPendingCommit=nonIdlePendingLanes&~root,rootHasPendingCommit!==0&&(nextLanes=getHighestPriorityLanes(rootHasPendingCommit))))):(nonIdlePendingLanes=pendingLanes&~suspendedLanes,nonIdlePendingLanes!==0?nextLanes=getHighestPriorityLanes(nonIdlePendingLanes):pingedLanes!==0?nextLanes=getHighestPriorityLanes(pingedLanes):rootHasPendingCommit||(rootHasPendingCommit=pendingLanes&~root,rootHasPendingCommit!==0&&(nextLanes=getHighestPriorityLanes(rootHasPendingCommit)))),nextLanes===0?0:wipLanes!==0&&wipLanes!==nextLanes&&(wipLanes&suspendedLanes)===0&&(suspendedLanes=nextLanes&-nextLanes,rootHasPendingCommit=wipLanes&-wipLanes,suspendedLanes>=rootHasPendingCommit||suspendedLanes===32&&(rootHasPendingCommit&4194048)!==0)?wipLanes:nextLanes}function checkIfRootIsPrerendering(root,renderLanes2){return(root.pendingLanes&~(root.suspendedLanes&~root.pingedLanes)&renderLanes2)===0}function computeExpirationTime(lane,currentTime){switch(lane){case 1:case 2:case 4:case 8:case 64:return currentTime+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return currentTime+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return console.error("Should have found matching lanes. This is a bug in React."),-1}}function claimNextTransitionLane(){var lane=nextTransitionLane;return nextTransitionLane<<=1,(nextTransitionLane&4194048)===0&&(nextTransitionLane=256),lane}function claimNextRetryLane(){var lane=nextRetryLane;return nextRetryLane<<=1,(nextRetryLane&62914560)===0&&(nextRetryLane=4194304),lane}function createLaneMap(initial){for(var laneMap=[],i3=0;31>i3;i3++)laneMap.push(initial);return laneMap}function markRootUpdated$1(root,updateLane){root.pendingLanes|=updateLane,updateLane!==268435456&&(root.suspendedLanes=0,root.pingedLanes=0,root.warmLanes=0)}function markRootFinished(root,finishedLanes,remainingLanes,spawnedLane,updatedLanes,suspendedRetryLanes){var previouslyPendingLanes=root.pendingLanes;root.pendingLanes=remainingLanes,root.suspendedLanes=0,root.pingedLanes=0,root.warmLanes=0,root.expiredLanes&=remainingLanes,root.entangledLanes&=remainingLanes,root.errorRecoveryDisabledLanes&=remainingLanes,root.shellSuspendCounter=0;var entanglements=root.entanglements,expirationTimes=root.expirationTimes,hiddenUpdates=root.hiddenUpdates;for(remainingLanes=previouslyPendingLanes&~remainingLanes;0<remainingLanes;){var index=31-clz32(remainingLanes),lane=1<<index;entanglements[index]=0,expirationTimes[index]=-1;var hiddenUpdatesForLane=hiddenUpdates[index];if(hiddenUpdatesForLane!==null)for(hiddenUpdates[index]=null,index=0;index<hiddenUpdatesForLane.length;index++){var update=hiddenUpdatesForLane[index];update!==null&&(update.lane&=-536870913)}remainingLanes&=~lane}spawnedLane!==0&&markSpawnedDeferredLane(root,spawnedLane,0),suspendedRetryLanes!==0&&updatedLanes===0&&root.tag!==0&&(root.suspendedLanes|=suspendedRetryLanes&~(previouslyPendingLanes&~finishedLanes))}function markSpawnedDeferredLane(root,spawnedLane,entangledLanes){root.pendingLanes|=spawnedLane,root.suspendedLanes&=~spawnedLane;var spawnedLaneIndex=31-clz32(spawnedLane);root.entangledLanes|=spawnedLane,root.entanglements[spawnedLaneIndex]=root.entanglements[spawnedLaneIndex]|1073741824|entangledLanes&4194090}function markRootEntangled(root,entangledLanes){var rootEntangledLanes=root.entangledLanes|=entangledLanes;for(root=root.entanglements;rootEntangledLanes;){var index=31-clz32(rootEntangledLanes),lane=1<<index;lane&entangledLanes|root[index]&entangledLanes&&(root[index]|=entangledLanes),rootEntangledLanes&=~lane}}function getBumpedLaneForHydrationByLane(lane){switch(lane){case 2:lane=1;break;case 8:lane=4;break;case 32:lane=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:lane=128;break;case 268435456:lane=134217728;break;default:lane=0}return lane}function addFiberToLanesMap(root,fiber,lanes){if(isDevToolsPresent)for(root=root.pendingUpdatersLaneMap;0<lanes;){var index=31-clz32(lanes),lane=1<<index;root[index].add(fiber),lanes&=~lane}}function movePendingFibersToMemoized(root,lanes){if(isDevToolsPresent)for(var pendingUpdatersLaneMap=root.pendingUpdatersLaneMap,memoizedUpdaters=root.memoizedUpdaters;0<lanes;){var index=31-clz32(lanes);root=1<<index,index=pendingUpdatersLaneMap[index],0<index.size&&(index.forEach(function(fiber){var alternate=fiber.alternate;alternate!==null&&memoizedUpdaters.has(alternate)||memoizedUpdaters.add(fiber)}),index.clear()),lanes&=~root}}function lanesToEventPriority(lanes){return lanes&=-lanes,2<lanes?8<lanes?(lanes&134217727)!==0?32:268435456:8:2}function injectInternals(internals){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")return!1;var hook=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(hook.isDisabled)return!0;if(!hook.supportsFiber)return console.error("The installed version of React DevTools is too old and will not work with the current version of React. Please update React DevTools. https://react.dev/link/react-devtools"),!0;try{rendererID=hook.inject(internals),injectedHook=hook}catch(err){console.error("React instrumentation encountered an error: %s.",err)}return!!hook.checkDCE}function setIsStrictModeForDevtools(newIsStrictMode){if(typeof log=="function"&&unstable_setDisableYieldValue(newIsStrictMode),injectedHook&&typeof injectedHook.setStrictMode=="function")try{injectedHook.setStrictMode(rendererID,newIsStrictMode)}catch(err){hasLoggedError||(hasLoggedError=!0,console.error("React instrumentation encountered an error: %s",err))}}function injectProfilingHooks(profilingHooks){injectedProfilingHooks=profilingHooks}function markCommitStopped(){injectedProfilingHooks!==null&&typeof injectedProfilingHooks.markCommitStopped=="function"&&injectedProfilingHooks.markCommitStopped()}function markComponentRenderStarted(fiber){injectedProfilingHooks!==null&&typeof injectedProfilingHooks.markComponentRenderStarted=="function"&&injectedProfilingHooks.markComponentRenderStarted(fiber)}function markComponentRenderStopped(){injectedProfilingHooks!==null&&typeof injectedProfilingHooks.markComponentRenderStopped=="function"&&injectedProfilingHooks.markComponentRenderStopped()}function markRenderStarted(lanes){injectedProfilingHooks!==null&&typeof injectedProfilingHooks.markRenderStarted=="function"&&injectedProfilingHooks.markRenderStarted(lanes)}function markRenderStopped(){injectedProfilingHooks!==null&&typeof injectedProfilingHooks.markRenderStopped=="function"&&injectedProfilingHooks.markRenderStopped()}function markStateUpdateScheduled(fiber,lane){injectedProfilingHooks!==null&&typeof injectedProfilingHooks.markStateUpdateScheduled=="function"&&injectedProfilingHooks.markStateUpdateScheduled(fiber,lane)}function disabledLog(){}function disableLogs(){if(disabledDepth===0){prevLog=console.log,prevInfo=console.info,prevWarn=console.warn,prevError=console.error,prevGroup=console.group,prevGroupCollapsed=console.groupCollapsed,prevGroupEnd=console.groupEnd;var props={configurable:!0,enumerable:!0,value:disabledLog,writable:!0};Object.defineProperties(console,{info:props,log:props,warn:props,error:props,group:props,groupCollapsed:props,groupEnd:props})}disabledDepth++}function reenableLogs(){if(disabledDepth--,disabledDepth===0){var props={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:assign({},props,{value:prevLog}),info:assign({},props,{value:prevInfo}),warn:assign({},props,{value:prevWarn}),error:assign({},props,{value:prevError}),group:assign({},props,{value:prevGroup}),groupCollapsed:assign({},props,{value:prevGroupCollapsed}),groupEnd:assign({},props,{value:prevGroupEnd})})}0>disabledDepth&&console.error("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}function describeBuiltInComponentFrame(name){if(prefix===void 0)try{throw Error()}catch(x3){var match2=x3.stack.trim().match(/\n( *(at )?)/);prefix=match2&&match2[1]||"",suffix=-1<x3.stack.indexOf(`
14
14
  at`)?" (<anonymous>)":-1<x3.stack.indexOf("@")?"@unknown:0:0":""}return`
15
15
  `+prefix+name+suffix}function describeNativeComponentFrame(fn3,construct){if(!fn3||reentry)return"";var frame=componentFrameCache.get(fn3);if(frame!==void 0)return frame;reentry=!0,frame=Error.prepareStackTrace,Error.prepareStackTrace=void 0;var previousDispatcher=null;previousDispatcher=ReactSharedInternals.H,ReactSharedInternals.H=null,disableLogs();try{var RunInRootFrame={DetermineComponentFrameRoot:function(){try{if(construct){var Fake=function(){throw Error()};if(Object.defineProperty(Fake.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(Fake,[])}catch(x3){var control=x3}Reflect.construct(fn3,[],Fake)}else{try{Fake.call()}catch(x$0){control=x$0}fn3.call(Fake.prototype)}}else{try{throw Error()}catch(x$1){control=x$1}(Fake=fn3())&&typeof Fake.catch=="function"&&Fake.catch(function(){})}}catch(sample){if(sample&&control&&typeof sample.stack=="string")return[sample.stack,control.stack]}return[null,null]}};RunInRootFrame.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var namePropDescriptor=Object.getOwnPropertyDescriptor(RunInRootFrame.DetermineComponentFrameRoot,"name");namePropDescriptor&&namePropDescriptor.configurable&&Object.defineProperty(RunInRootFrame.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var _RunInRootFrame$Deter=RunInRootFrame.DetermineComponentFrameRoot(),sampleStack=_RunInRootFrame$Deter[0],controlStack=_RunInRootFrame$Deter[1];if(sampleStack&&controlStack){var sampleLines=sampleStack.split(`
16
16
  `),controlLines=controlStack.split(`
@@ -621,8 +621,8 @@ ${error.stack}`),asyncEffect.complete=!0;let root2=this._getRootCircuit();root2&
621
621
  ${spiceString}`)}catch(error){debug10(`Failed to convert circuit JSON to SPICE: ${error}`);return}for(let analogSim of analogSims){let engineName=analogSim._parsedProps.spiceEngine??"spicey",spiceEngine2=spiceEngineMap[engineName];if(!spiceEngine2)throw new Error(`SPICE engine "${engineName}" not found in platform config. Available engines: ${JSON.stringify(Object.keys(spiceEngineMap).filter(k4=>k4!=="spicey"))}`);let effectId=`spice-simulation-${engineName}-${analogSim.source_component_id}`;debug10(`Queueing simulation for spice engine: ${engineName} (id: ${effectId})`),group._queueAsyncEffect(effectId,async()=>{try{debug10(`Running simulation with engine: ${engineName}`);let result=await spiceEngine2.simulate(spiceString);debug10(`Simulation completed, received ${result.simulationResultCircuitJson.length} elements`);let simulationExperiment=root.db.simulation_experiment.list()[0];if(!simulationExperiment){debug10("No simulation experiment found, skipping result insertion");return}for(let element of result.simulationResultCircuitJson){if(element.type==="simulation_transient_voltage_graph"){element.simulation_experiment_id=simulationExperiment.simulation_experiment_id;let probeMatch=voltageProbes.find(p2=>p2.finalProbeName===element.name);probeMatch&&(element.color=probeMatch.color)}let elementType=element.type;elementType&&root.db[elementType]?(root.db[elementType].insert(element),debug10(`Inserted ${elementType} into database`)):(debug10(`Warning: Unknown element type ${elementType}, adding to raw db`),root.db._addElement(element))}group._markDirty("SimulationSpiceEngineRender")}catch(error){debug10(`Simulation failed for engine ${engineName}: ${error}`);let simulationExperiment=root.db.simulation_experiment.list()[0];root.db.simulation_unknown_experiment_error.insert({simulation_experiment_id:simulationExperiment?.simulation_experiment_id,error_type:"simulation_unknown_experiment_error",message:error instanceof Error?error.message:String(error)})}})}}function Group_doInitialPcbComponentAnchorAlignment(group){if(group.root?.pcbDisabled||!group.pcb_group_id)return;let pcbPositionAnchor=group._parsedProps?.pcbPositionAnchor;if(!pcbPositionAnchor)return;let targetPosition=group._getGlobalPcbPositionBeforeLayout(),{pcbX,pcbY}=group._parsedProps;if(pcbX===void 0&&pcbY===void 0)return;let{db:db2}=group.root,pcbGroup=db2.pcb_group.get(group.pcb_group_id);if(!pcbGroup)return;let width=pcbGroup.width,height=pcbGroup.height,{center:center2}=pcbGroup;if(pcbGroup.outline&&pcbGroup.outline.length>0){let bounds2=getBoundsFromPoints(pcbGroup.outline);bounds2&&(width=bounds2.maxX-bounds2.minX,height=bounds2.maxY-bounds2.minY)}if(!width||!height)return;let bounds={left:center2.x-width/2,right:center2.x+width/2,top:center2.y+height/2,bottom:center2.y-height/2},currentCenter={...center2},anchorPos=null;if(new Set(["center","top_left","top_center","top_right","center_left","center_right","bottom_left","bottom_center","bottom_right"]).has(pcbPositionAnchor))switch(pcbPositionAnchor){case"center":anchorPos=currentCenter;break;case"top_left":anchorPos={x:bounds.left,y:bounds.top};break;case"top_center":anchorPos={x:currentCenter.x,y:bounds.top};break;case"top_right":anchorPos={x:bounds.right,y:bounds.top};break;case"center_left":anchorPos={x:bounds.left,y:currentCenter.y};break;case"center_right":anchorPos={x:bounds.right,y:currentCenter.y};break;case"bottom_left":anchorPos={x:bounds.left,y:bounds.bottom};break;case"bottom_center":anchorPos={x:currentCenter.x,y:bounds.bottom};break;case"bottom_right":anchorPos={x:bounds.right,y:bounds.bottom};break}if(!anchorPos)return;let newCenter={...currentCenter};targetPosition.x!==void 0&&(newCenter.x+=targetPosition.x-anchorPos.x),targetPosition.y!==void 0&&(newCenter.y+=targetPosition.y-anchorPos.y),(Math.abs(newCenter.x-currentCenter.x)>1e-6||Math.abs(newCenter.y-currentCenter.y)>1e-6)&&(group._repositionOnPcb(newCenter),db2.pcb_group.update(group.pcb_group_id,{center:newCenter})),db2.pcb_group.update(group.pcb_group_id,{anchor_position:targetPosition,anchor_alignment:pcbPositionAnchor,display_offset_x:pcbX,display_offset_y:pcbY})}function computeCenterFromAnchorPosition(anchorPosition,ctx){let{width,height,pcbAnchorAlignment}=ctx;if(!pcbAnchorAlignment)return anchorPosition;let alignment=pcbAnchorAlignment;if(typeof width!="number"||typeof height!="number")return console.log("width or height is not a number"),anchorPosition;let ax2=anchorPosition.x,ay2=anchorPosition.y;switch(alignment){case"top_left":return{x:ax2+width/2,y:ay2-height/2};case"top_center":return{x:ax2,y:ay2-height/2};case"top_right":return{x:ax2-width/2,y:ay2-height/2};case"center_left":return{x:ax2+width/2,y:ay2};case"center_right":return{x:ax2-width/2,y:ay2};case"bottom_left":return{x:ax2+width/2,y:ay2+height/2};case"bottom_center":return{x:ax2,y:ay2+height/2};case"bottom_right":return{x:ax2-width/2,y:ay2+height/2};default:return anchorPosition}}function groupPadsByInternalConnection(pads,orientation4){let groups=[];for(let pad2 of pads){let key=orientation4==="vertical"?pad2.center.y:pad2.center.x,foundGroup=!1;for(let group of groups){let groupKey=orientation4==="vertical"?group[0].center.y:group[0].center.x;if(Math.abs(key-groupKey)<.01){group.push(pad2),foundGroup=!0;break}}foundGroup||groups.push([pad2])}return groups.filter(g4=>g4.length>=2)}function insertAutoplacedJumpers(params){let{db:db2,output_jumpers,subcircuit_id}=params;for(let jumperIndex=0;jumperIndex<output_jumpers.length;jumperIndex++){let jumper=output_jumpers[jumperIndex],sourceComponent=db2.source_component.insert({ftype:"simple_chip",name:`__autoplaced_jumper_${jumperIndex}`,supplier_part_numbers:{}}),rotation4=jumper.orientation==="horizontal"?0:90,firstPadLayer=jumper.pads[0]?.layer||jumper.pads[0]?.layers?.[0]||"top",pcbComponent=db2.pcb_component.insert({source_component_id:sourceComponent.source_component_id,center:jumper.center,rotation:rotation4,layer:firstPadLayer,width:jumper.width||0,height:jumper.height||0,obstructs_within_bounds:!1}),padData=[];for(let padIndex=0;padIndex<jumper.pads.length;padIndex++){let pad2=jumper.pads[padIndex],pinNumber=padIndex+1,sourcePort=db2.source_port.insert({source_component_id:sourceComponent.source_component_id,name:`pin${pinNumber}`,pin_number:pinNumber}),padLayer=pad2.layer||pad2.layers?.[0]||"top",pcbPort=db2.pcb_port.insert({pcb_component_id:pcbComponent.pcb_component_id,source_port_id:sourcePort.source_port_id,x:pad2.center.x,y:pad2.center.y,layers:[padLayer]}),pcbSmtpad=db2.pcb_smtpad.insert({pcb_component_id:pcbComponent.pcb_component_id,pcb_port_id:pcbPort.pcb_port_id,shape:"rect",x:pad2.center.x,y:pad2.center.y,width:pad2.width,height:pad2.height,layer:padLayer});padData.push({pad:pad2,sourcePortId:sourcePort.source_port_id,pcbSmtpadId:pcbSmtpad.pcb_smtpad_id})}let internalGroups=groupPadsByInternalConnection(jumper.pads,jumper.orientation);for(let group of internalGroups){let sourcePortIds=[];for(let groupPad of group){let padInfo=padData.find(p2=>Math.abs(p2.pad.center.x-groupPad.center.x)<.01&&Math.abs(p2.pad.center.y-groupPad.center.y)<.01);padInfo&&sourcePortIds.push(padInfo.sourcePortId)}sourcePortIds.length>=2&&db2.source_component_internal_connection.insert({source_component_id:sourceComponent.source_component_id,subcircuit_id:subcircuit_id??void 0,source_port_ids:sourcePortIds})}}}function splitPcbTracesOnJumperSegments(route){let jumperRoutes=route.filter(p2=>p2.route_type==="jumper"),wireAndViaRoutes=route.filter(p2=>p2.route_type!=="jumper");if(jumperRoutes.length===0)return null;let splitRanges=[];for(let jumperRoute of jumperRoutes){let jumperStart=jumperRoute.start,jumperEnd=jumperRoute.end,startIdx=-1,endIdx=-1,minStartDist=1/0,minEndDist=1/0;for(let i3=0;i3<wireAndViaRoutes.length;i3++){let p2=wireAndViaRoutes[i3];if(p2.route_type!=="wire")continue;let distToStart=Math.hypot(p2.x-jumperStart.x,p2.y-jumperStart.y),distToEnd=Math.hypot(p2.x-jumperEnd.x,p2.y-jumperEnd.y);distToStart<minStartDist&&(minStartDist=distToStart,startIdx=i3),distToEnd<minEndDist&&(minEndDist=distToEnd,endIdx=i3)}startIdx>endIdx&&([startIdx,endIdx]=[endIdx,startIdx]),startIdx>=0&&endIdx>=0&&startIdx!==endIdx&&splitRanges.push({startIdx,endIdx})}splitRanges.sort((a2,b3)=>a2.startIdx-b3.startIdx);let segments=[],currentStart=0;for(let range2 of splitRanges)currentStart<range2.startIdx&&segments.push(wireAndViaRoutes.slice(currentStart,range2.startIdx+1)),currentStart=range2.endIdx;return currentStart<wireAndViaRoutes.length&&segments.push(wireAndViaRoutes.slice(currentStart)),segments}function getJumperPadInfos(db2){let padInfos=[],jumperSmtpads=db2.pcb_smtpad.list().filter(pad2=>{let component=db2.pcb_component.get(pad2.pcb_component_id);return component?db2.source_component.get(component.source_component_id)?.name?.startsWith("__autoplaced_jumper"):!1});for(let smtpad2 of jumperSmtpads)if(smtpad2.shape!=="polygon"&&smtpad2.pcb_port_id){if(smtpad2.shape==="rect"||smtpad2.shape==="rotated_rect"){let halfWidth=smtpad2.width/2,halfHeight=smtpad2.height/2;padInfos.push({pcb_port_id:smtpad2.pcb_port_id,x:smtpad2.x,y:smtpad2.y,minX:smtpad2.x-halfWidth,maxX:smtpad2.x+halfWidth,minY:smtpad2.y-halfHeight,maxY:smtpad2.y+halfHeight})}else if(smtpad2.shape==="circle"){let radius=smtpad2.radius;padInfos.push({pcb_port_id:smtpad2.pcb_port_id,x:smtpad2.x,y:smtpad2.y,minX:smtpad2.x-radius,maxX:smtpad2.x+radius,minY:smtpad2.y-radius,maxY:smtpad2.y+radius})}}return padInfos}function findJumperPortAtPosition(padInfos,x3,y3,tolerance=.01){for(let pad2 of padInfos)if(Math.abs(pad2.x-x3)<tolerance&&Math.abs(pad2.y-y3)<tolerance)return pad2.pcb_port_id}function findJumperPortContainingPoint(padInfos,x3,y3){for(let pad2 of padInfos)if(x3>=pad2.minX&&x3<=pad2.maxX&&y3>=pad2.minY&&y3<=pad2.maxY)return pad2}function splitRouteAtJumperPads(route,padInfos){if(route.length===0||padInfos.length===0)return[route];let segments=[],currentSegment=[];for(let i3=0;i3<route.length;i3++){let point6=route[i3];if(currentSegment.push(point6),point6.route_type==="wire"&&i3>0&&i3<route.length-1){let padInfo=findJumperPortContainingPoint(padInfos,point6.x,point6.y);if(padInfo){point6.end_pcb_port_id||(point6.end_pcb_port_id=padInfo.pcb_port_id),segments.push(currentSegment);let newStartPoint={...point6};delete newStartPoint.end_pcb_port_id,newStartPoint.start_pcb_port_id||(newStartPoint.start_pcb_port_id=padInfo.pcb_port_id),currentSegment=[newStartPoint]}}}return currentSegment.length>0&&segments.push(currentSegment),segments}function addPortIdsToTracesAtJumperPads(segments,db2){let padInfos=getJumperPadInfos(db2);if(padInfos.length===0)return segments;let result=[];for(let segment2 of segments){let subSegments=splitRouteAtJumperPads(segment2,padInfos);for(let subSegment of subSegments)if(subSegment.length>0){let firstPoint=subSegment[0],lastPoint=subSegment[subSegment.length-1];if(firstPoint.route_type==="wire"&&!firstPoint.start_pcb_port_id){let portId=findJumperPortAtPosition(padInfos,firstPoint.x,firstPoint.y);portId&&(firstPoint.start_pcb_port_id=portId)}if(lastPoint.route_type==="wire"&&!lastPoint.end_pcb_port_id){let portId=findJumperPortAtPosition(padInfos,lastPoint.x,lastPoint.y);portId&&(lastPoint.end_pcb_port_id=portId)}result.push(subSegment)}}return result}var Group6=class extends NormalComponent3{constructor(){super(...arguments);__publicField(this,"pcb_group_id",null);__publicField(this,"schematic_group_id",null);__publicField(this,"subcircuit_id",null);__publicField(this,"_hasStartedAsyncAutorouting",!1);__publicField(this,"_normalComponentNameMap",null);__publicField(this,"_asyncAutoroutingResult",null);__publicField(this,"unnamedElementCounter",{})}getNormalComponentNameMap(){if(this._normalComponentNameMap)return this._normalComponentNameMap;let nameMap=new Map,collectNamedComponents=component=>{if(component._isNormalComponent&&component.name){let componentsWithSameName=nameMap.get(component.name);componentsWithSameName?componentsWithSameName.push(component):nameMap.set(component.name,[component])}for(let child of component.children)child.isSubcircuit||collectNamedComponents(child)};for(let child of this.children)child.isSubcircuit||collectNamedComponents(child);return this._normalComponentNameMap=nameMap,nameMap}get config(){return{zodProps:groupProps,componentName:"Group"}}doInitialSourceGroupRender(){let{db:db2}=this.root,hasExplicitName=typeof this._parsedProps.name=="string"&&this._parsedProps.name.length>0,source_group2=db2.source_group.insert({name:this.name,is_subcircuit:this.isSubcircuit,was_automatically_named:!hasExplicitName});this.source_group_id=source_group2.source_group_id,this.isSubcircuit&&(this.subcircuit_id=`subcircuit_${source_group2.source_group_id}`,db2.source_group.update(source_group2.source_group_id,{subcircuit_id:this.subcircuit_id}))}doInitialSourceRender(){let{db:db2}=this.root;for(let child of this.children)db2.source_component.update(child.source_component_id,{source_group_id:this.source_group_id})}doInitialSourceParentAttachment(){let{db:db2}=this.root,parentGroup=this.parent?.getGroup?.();if(parentGroup?.source_group_id&&db2.source_group.update(this.source_group_id,{parent_source_group_id:parentGroup.source_group_id}),!this.isSubcircuit)return;let parent_subcircuit_id=this.parent?.getSubcircuit?.()?.subcircuit_id;parent_subcircuit_id&&db2.source_group.update(this.source_group_id,{parent_subcircuit_id})}doInitialPcbComponentRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,groupProps2=props,hasOutline=groupProps2.outline&&groupProps2.outline.length>0,numericOutline=hasOutline?groupProps2.outline.map(point6=>({x:distance.parse(point6.x),y:distance.parse(point6.y)})):void 0,ctx=this.props,anchorPosition=this._getGlobalPcbPositionBeforeLayout(),center2=computeCenterFromAnchorPosition(anchorPosition,ctx),pcb_group2=db2.pcb_group.insert({is_subcircuit:this.isSubcircuit,subcircuit_id:this.subcircuit_id??this.getSubcircuit()?.subcircuit_id,name:this.name,anchor_position:anchorPosition,center:center2,...hasOutline?{outline:numericOutline}:{width:0,height:0},pcb_component_ids:[],source_group_id:this.source_group_id,autorouter_configuration:props.autorouter?{trace_clearance:props.autorouter.traceClearance}:void 0,anchor_alignment:props.pcbAnchorAlignment??null});this.pcb_group_id=pcb_group2.pcb_group_id;for(let child of this.children)db2.pcb_component.update(child.pcb_component_id,{pcb_group_id:pcb_group2.pcb_group_id})}doInitialPcbPrimitiveRender(){this.calculatePcbGroupBounds()}calculatePcbGroupBounds(){if(!this.pcb_group_id||this.root?.pcbDisabled)return;let{db:db2}=this.root,props=this._parsedProps,hasOutline=props.outline&&props.outline.length>0,hasExplicitPositioning=this._parsedProps.pcbX!==void 0||this._parsedProps.pcbY!==void 0;if(hasOutline){let numericOutline=props.outline.map(point6=>({x:distance.parse(point6.x),y:distance.parse(point6.y)})),outlineBounds=getBoundsFromPoints(numericOutline);if(!outlineBounds)return;let centerX2=(outlineBounds.minX+outlineBounds.maxX)/2,centerY2=(outlineBounds.minY+outlineBounds.maxY)/2,center22=hasExplicitPositioning?db2.pcb_group.get(this.pcb_group_id)?.center??{x:centerX2,y:centerY2}:{x:centerX2,y:centerY2};db2.pcb_group.update(this.pcb_group_id,{center:center22});return}let bounds=getBoundsOfPcbComponents(this.children),width=bounds.width,height=bounds.height,centerX=(bounds.minX+bounds.maxX)/2,centerY=(bounds.minY+bounds.maxY)/2;if(this.isSubcircuit){let{padLeft,padRight,padTop,padBottom}=this._resolvePcbPadding();width+=padLeft+padRight,height+=padTop+padBottom,centerX+=(padRight-padLeft)/2,centerY+=(padTop-padBottom)/2}let center2=hasExplicitPositioning?db2.pcb_group.get(this.pcb_group_id)?.center??{x:centerX,y:centerY}:{x:centerX,y:centerY};db2.pcb_group.update(this.pcb_group_id,{width:Number(props.width??width),height:Number(props.height??height),center:center2})}updatePcbPrimitiveRender(){this.calculatePcbGroupBounds()}getNextAvailableName(elm){var _a360,_b2;return(_a360=this.unnamedElementCounter)[_b2=elm.lowercaseComponentName]??(_a360[_b2]=1),`unnamed_${elm.lowercaseComponentName}${this.unnamedElementCounter[elm.lowercaseComponentName]++}`}_resolvePcbPadding(){let props=this._parsedProps,layout=props.pcbLayout,getPaddingValue=key=>{let layoutValue=layout?.[key],propsValue=props[key];if(typeof layoutValue=="number")return layoutValue;if(typeof propsValue=="number")return propsValue},generalPadding=getPaddingValue("padding")??0,paddingX=getPaddingValue("paddingX"),paddingY=getPaddingValue("paddingY"),padLeft=getPaddingValue("paddingLeft")??paddingX??generalPadding,padRight=getPaddingValue("paddingRight")??paddingX??generalPadding,padTop=getPaddingValue("paddingTop")??paddingY??generalPadding,padBottom=getPaddingValue("paddingBottom")??paddingY??generalPadding;return{padLeft,padRight,padTop,padBottom}}doInitialCreateTraceHintsFromProps(){let{_parsedProps:props}=this,{db:db2}=this.root,groupProps2=props;if(!this.isSubcircuit)return;let manualTraceHints=groupProps2.manualEdits?.manual_trace_hints;if(manualTraceHints)for(let manualTraceHint of manualTraceHints)this.add(new TraceHint({for:manualTraceHint.pcb_port_selector,offsets:manualTraceHint.offsets}))}doInitialSourceAddConnectivityMapKey(){Group_doInitialSourceAddConnectivityMapKey(this)}_areChildSubcircuitsRouted(){let subcircuitChildren=this.selectAll("group").filter(g4=>g4.isSubcircuit);for(let subcircuitChild of subcircuitChildren)if(subcircuitChild._shouldRouteAsync()&&!subcircuitChild._asyncAutoroutingResult)return!1;return!0}_shouldRouteAsync(){let autorouter=this._getAutorouterConfig();return autorouter.groupMode==="sequential-trace"?!1:!!(autorouter.local&&autorouter.groupMode==="subcircuit"||!autorouter.local)}_hasTracesToRoute(){let debug112=(0,import_debug10.default)("tscircuit:core:_hasTracesToRoute"),traces=this.selectAll("trace");return debug112(`[${this.getString()}] has ${traces.length} traces to route`),traces.length>0}async _runEffectMakeHttpAutoroutingRequest(){let{db:db2}=this.root,debug112=(0,import_debug10.default)("tscircuit:core:_runEffectMakeHttpAutoroutingRequest"),props=this._parsedProps,autorouterConfig2=this._getAutorouterConfig(),serverUrl=autorouterConfig2.serverUrl,serverMode=autorouterConfig2.serverMode,fetchWithDebug=(url,options)=>(debug112("fetching",url),options.headers&&(options.headers["Tscircuit-Core-Version"]=this.root?.getCoreVersion()),fetch(url,options)),pcbAndSourceCircuitJson=this.root.db.toArray().filter(element=>element.type.startsWith("source_")||element.type.startsWith("pcb_"));if(serverMode==="solve-endpoint"){if(this.props.autorouter?.inputFormat==="simplified"){let{autorouting_result:autorouting_result2}=await fetchWithDebug(`${serverUrl}/autorouting/solve`,{method:"POST",body:JSON.stringify({input_simple_route_json:getSimpleRouteJsonFromCircuitJson({db:db2,minTraceWidth:this.props.autorouter?.minTraceWidth??.15,nominalTraceWidth:this.props.nominalTraceWidth,subcircuit_id:this.subcircuit_id}).simpleRouteJson,subcircuit_id:this.subcircuit_id}),headers:{"Content-Type":"application/json"}}).then(r4=>r4.json());this._asyncAutoroutingResult=autorouting_result2,this._markDirty("PcbTraceRender");return}let{autorouting_result}=await fetchWithDebug(`${serverUrl}/autorouting/solve`,{method:"POST",body:JSON.stringify({input_circuit_json:pcbAndSourceCircuitJson,subcircuit_id:this.subcircuit_id}),headers:{"Content-Type":"application/json"}}).then(r4=>r4.json());this._asyncAutoroutingResult=autorouting_result,this._markDirty("PcbTraceRender");return}let{autorouting_job}=await fetchWithDebug(`${serverUrl}/autorouting/jobs/create`,{method:"POST",body:JSON.stringify({input_circuit_json:pcbAndSourceCircuitJson,provider:"freerouting",autostart:!0,display_name:this.root?.name,subcircuit_id:this.subcircuit_id,server_cache_enabled:autorouterConfig2.serverCacheEnabled}),headers:{"Content-Type":"application/json"}}).then(r4=>r4.json());for(;;){let{autorouting_job:job}=await fetchWithDebug(`${serverUrl}/autorouting/jobs/get`,{method:"POST",body:JSON.stringify({autorouting_job_id:autorouting_job.autorouting_job_id}),headers:{"Content-Type":"application/json"}}).then(r4=>r4.json());if(job.is_finished){let{autorouting_job_output}=await fetchWithDebug(`${serverUrl}/autorouting/jobs/get_output`,{method:"POST",body:JSON.stringify({autorouting_job_id:autorouting_job.autorouting_job_id}),headers:{"Content-Type":"application/json"}}).then(r4=>r4.json());this._asyncAutoroutingResult={output_pcb_traces:autorouting_job_output.output_pcb_traces},this._markDirty("PcbTraceRender");break}if(job.has_error){let err=new AutorouterError(`Autorouting job failed: ${JSON.stringify(job.error)}`);throw db2.pcb_autorouting_error.insert({pcb_error_id:autorouting_job.autorouting_job_id,error_type:"pcb_autorouting_error",message:err.message}),err}await new Promise(resolve=>setTimeout(resolve,100))}}async _runLocalAutorouting(){let{db:db2}=this.root,props=this._parsedProps,debug112=(0,import_debug10.default)("tscircuit:core:_runLocalAutorouting");debug112(`[${this.getString()}] starting local autorouting`);let autorouterConfig2=this._getAutorouterConfig(),isLaserPrefabPreset=this._isLaserPrefabAutorouter(autorouterConfig2),isAutoJumperPreset=this._isAutoJumperAutorouter(autorouterConfig2),isSingleLayerBoard=this._getSubcircuitLayerCount()===1,{simpleRouteJson}=getSimpleRouteJsonFromCircuitJson({db:db2,minTraceWidth:this.props.autorouter?.minTraceWidth??.15,nominalTraceWidth:this.props.nominalTraceWidth,subcircuit_id:this.subcircuit_id});if(isAutoJumperPreset&&(simpleRouteJson.allowJumpers=!0),debug112.enabled&&global.debugOutputArray?.push({name:`simpleroutejson-${this.props.name}.json`,obj:simpleRouteJson}),debug112.enabled){let graphicsObject=sn2(simpleRouteJson);graphicsObject.title=`autorouting-${this.props.name}`,global.debugGraphics?.push(graphicsObject)}this.root?.emit("autorouting:start",{subcircuit_id:this.subcircuit_id,componentDisplayName:this.getString(),simpleRouteJson});let autorouter;if(autorouterConfig2.algorithmFn)autorouter=await autorouterConfig2.algorithmFn(simpleRouteJson);else{let autorouterVersion2=this.props.autorouterVersion,effortLevel=this.props.autorouterEffortLevel,effort=effortLevel?Number.parseInt(effortLevel.replace("x",""),10):void 0;autorouter=new TscircuitAutorouter(simpleRouteJson,{capacityDepth:this.props.autorouter?.capacityDepth,targetMinCapacity:this.props.autorouter?.targetMinCapacity,useAssignableSolver:isLaserPrefabPreset||isSingleLayerBoard,useAutoJumperSolver:isAutoJumperPreset,autorouterVersion:autorouterVersion2,effort,onSolverStarted:({solverName,solverParams})=>this.root?.emit("solver:started",{type:"solver:started",solverName,solverParams,componentName:this.getString()})})}let routingPromise=new Promise((resolve,reject)=>{autorouter.on("complete",event=>{debug112(`[${this.getString()}] local autorouting complete`),resolve(event.traces)}),autorouter.on("error",event=>{debug112(`[${this.getString()}] local autorouting error: ${event.error.message}`),reject(event.error)})});autorouter.on("progress",event=>{this.root?.emit("autorouting:progress",{subcircuit_id:this.subcircuit_id,componentDisplayName:this.getString(),...event})}),autorouter.start();try{let traces=await routingPromise;if(autorouter.getConnectedOffboardObstacles){let connectedOffboardObstacles=autorouter.getConnectedOffboardObstacles();createSourceTracesFromOffboardConnections({db:db2,connectedOffboardObstacles,simpleRouteJson,subcircuit_id:this.subcircuit_id})}let outputJumpers=[],solver=autorouter.solver;solver?.getOutputJumpers&&(outputJumpers=solver.getOutputJumpers()||[]),this._asyncAutoroutingResult={output_pcb_traces:traces,output_jumpers:outputJumpers},this._markDirty("PcbTraceRender")}catch(error){let{db:db22}=this.root;throw db22.pcb_autorouting_error.insert({pcb_error_id:`pcb_autorouter_error_subcircuit_${this.subcircuit_id}`,error_type:"pcb_autorouting_error",message:error instanceof Error?error.message:String(error)}),this.root?.emit("autorouting:error",{subcircuit_id:this.subcircuit_id,componentDisplayName:this.getString(),error:{message:error instanceof Error?error.message:String(error)},simpleRouteJson}),error}finally{autorouter.stop()}}_startAsyncAutorouting(){this._hasStartedAsyncAutorouting||(this._hasStartedAsyncAutorouting=!0,this._getAutorouterConfig().local?this._queueAsyncEffect("capacity-mesh-autorouting",async()=>this._runLocalAutorouting()):this._queueAsyncEffect("make-http-autorouting-request",async()=>this._runEffectMakeHttpAutoroutingRequest()))}doInitialPcbTraceRender(){let debug112=(0,import_debug10.default)("tscircuit:core:doInitialPcbTraceRender");if(this.isSubcircuit&&!this.root?.pcbDisabled&&!this.getInheritedProperty("routingDisabled")&&!this._shouldUseTraceByTraceRouting()){if(!this._areChildSubcircuitsRouted()){debug112(`[${this.getString()}] child subcircuits are not routed, skipping async autorouting until subcircuits routed`);return}debug112(`[${this.getString()}] no child subcircuits to wait for, initiating async routing`),this._hasTracesToRoute()&&this._startAsyncAutorouting()}}doInitialSchematicTraceRender(){Group_doInitialSchematicTraceRender(this)}updatePcbTraceRender(){let debug112=(0,import_debug10.default)("tscircuit:core:updatePcbTraceRender");if(debug112(`[${this.getString()}] updating...`),!this.isSubcircuit)return;if(this._shouldRouteAsync()&&this._hasTracesToRoute()&&!this._hasStartedAsyncAutorouting){this._areChildSubcircuitsRouted()&&(debug112(`[${this.getString()}] child subcircuits are now routed, starting async autorouting`),this._startAsyncAutorouting());return}if(!this._asyncAutoroutingResult||this._shouldUseTraceByTraceRouting())return;let{db:db2}=this.root;if(this._asyncAutoroutingResult.output_simple_route_json){debug112(`[${this.getString()}] updating PCB traces from simple route json (${this._asyncAutoroutingResult.output_simple_route_json.traces?.length} traces)`),this._updatePcbTraceRenderFromSimpleRouteJson();return}if(this._asyncAutoroutingResult.output_pcb_traces){debug112(`[${this.getString()}] updating PCB traces from ${this._asyncAutoroutingResult.output_pcb_traces.length} traces`),this._updatePcbTraceRenderFromPcbTraces();return}}_updatePcbTraceRenderFromSimpleRouteJson(){let{db:db2}=this.root,{traces:routedTraces}=this._asyncAutoroutingResult.output_simple_route_json;if(routedTraces)for(let routedTrace of routedTraces){let pcb_trace2=db2.pcb_trace.insert({subcircuit_id:this.subcircuit_id,route:routedTrace.route})}}_updatePcbTraceRenderFromPcbTraces(){let{output_pcb_traces,output_jumpers}=this._asyncAutoroutingResult;if(!output_pcb_traces)return;let{db:db2}=this.root,pcbStyle2=this.getInheritedMergedProperty("pcbStyle"),{holeDiameter,padDiameter}=getViaDiameterDefaults(pcbStyle2);output_jumpers&&output_jumpers.length>0&&insertAutoplacedJumpers({db:db2,output_jumpers,subcircuit_id:this.subcircuit_id});for(let pcb_trace2 of output_pcb_traces){if(pcb_trace2.type!=="pcb_trace")continue;if(pcb_trace2.subcircuit_id=this.subcircuit_id,pcb_trace2.connection_name){let sourceTraceId=pcb_trace2.connection_name;pcb_trace2.source_trace_id=sourceTraceId}let segments=splitPcbTracesOnJumperSegments(pcb_trace2.route);segments===null&&(segments=[pcb_trace2.route]);let processedSegments=addPortIdsToTracesAtJumperPads(segments,db2);for(let segment2 of processedSegments)segment2.length>0&&db2.pcb_trace.insert({...pcb_trace2,route:segment2})}for(let pcb_trace2 of output_pcb_traces)if(pcb_trace2.type!=="pcb_via"&&pcb_trace2.type==="pcb_trace")for(let point6 of pcb_trace2.route)point6.route_type==="via"&&db2.pcb_via.insert({pcb_trace_id:pcb_trace2.pcb_trace_id,x:point6.x,y:point6.y,hole_diameter:holeDiameter,outer_diameter:padDiameter,layers:[point6.from_layer,point6.to_layer],from_layer:point6.from_layer,to_layer:point6.to_layer})}doInitialSchematicComponentRender(){if(this.root?.schematicDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,schematic_group2=db2.schematic_group.insert({is_subcircuit:this.isSubcircuit,subcircuit_id:this.subcircuit_id,name:this.name,center:this._getGlobalSchematicPositionBeforeLayout(),width:0,height:0,schematic_component_ids:[],source_group_id:this.source_group_id});this.schematic_group_id=schematic_group2.schematic_group_id;for(let child of this.children)child.schematic_component_id&&db2.schematic_component.update(child.schematic_component_id,{schematic_group_id:schematic_group2.schematic_group_id})}_getSchematicLayoutMode(){let props=this._parsedProps;if(props.schLayout?.layoutMode==="none"||props.schLayout?.layoutMode==="relative")return"relative";if(props.schLayout?.matchAdapt)return"match-adapt";if(props.schLayout?.flex)return"flex";if(props.schLayout?.grid)return"grid";if(props.schMatchAdapt)return"match-adapt";if(props.schFlex)return"flex";if(props.schGrid)return"grid";if(props.matchAdapt)return"match-adapt";if(props.flex)return"flex";if(props.grid)return"grid";if(props.relative||props.schRelative)return"relative";let anyChildHasSchCoords=this.children.some(child=>{let cProps=child._parsedProps;return cProps?.schX!==void 0||cProps?.schY!==void 0}),hasManualEdits=(props.manualEdits?.schematic_placements?.length??0)>0;return!anyChildHasSchCoords&&!hasManualEdits?"match-adapt":"relative"}doInitialSchematicLayout(){let schematicLayoutMode=this._getSchematicLayoutMode();schematicLayoutMode==="match-adapt"&&this._doInitialSchematicLayoutMatchpack(),schematicLayoutMode==="grid"&&this._doInitialSchematicLayoutGrid(),schematicLayoutMode==="flex"&&this._doInitialSchematicLayoutFlex(),this._insertSchematicBorder()}_doInitialSchematicLayoutMatchAdapt(){Group_doInitialSchematicLayoutMatchAdapt(this)}_doInitialSchematicLayoutMatchpack(){Group_doInitialSchematicLayoutMatchPack(this)}_doInitialSchematicLayoutGrid(){Group_doInitialSchematicLayoutGrid(this)}_doInitialSchematicLayoutFlex(){Group_doInitialSchematicLayoutFlex(this)}_getPcbLayoutMode(){let props=this._parsedProps;if(props.pcbRelative)return"none";if(props.pcbLayout?.matchAdapt)return"match-adapt";if(props.pcbLayout?.flex)return"flex";if(props.pcbLayout?.grid)return"grid";if(props.pcbLayout?.pack)return"pack";if(props.pcbFlex)return"flex";if(props.pcbGrid)return"grid";if(props.pcbPack||props.pack)return"pack";if(props.matchAdapt)return"match-adapt";if(props.flex)return"flex";if(props.grid)return"grid";let groupHasCoords=props.pcbX!==void 0||props.pcbY!==void 0,hasManualEdits=(props.manualEdits?.pcb_placements?.length??0)>0,unpositionedDirectChildrenCount=this.children.reduce((count,child)=>{if(!child.pcb_component_id&&!child.pcb_group_id)return count;let childProps=child._parsedProps,hasCoords=childProps?.pcbX!==void 0||childProps?.pcbY!==void 0;return count+(hasCoords?0:1)},0);return!hasManualEdits&&unpositionedDirectChildrenCount>1?"pack":"none"}doInitialPcbLayout(){if(this.root?.pcbDisabled)return;if(this.pcb_group_id){let{db:db2}=this.root,props=this._parsedProps;if(props.pcbX!==void 0||props.pcbY!==void 0){let parentGroup=this.parent?.getGroup?.(),pcbParentGroupId=parentGroup?.pcb_group_id?db2.pcb_group.get(parentGroup.pcb_group_id)?.pcb_group_id:void 0,positionedRelativeToBoardId=pcbParentGroupId?void 0:this._getBoard()?.pcb_board_id??void 0;db2.pcb_group.update(this.pcb_group_id,{position_mode:"relative_to_group_anchor",positioned_relative_to_pcb_group_id:pcbParentGroupId,positioned_relative_to_pcb_board_id:positionedRelativeToBoardId,display_offset_x:props.pcbX,display_offset_y:props.pcbY})}}let pcbLayoutMode=this._getPcbLayoutMode();pcbLayoutMode==="grid"?this._doInitialPcbLayoutGrid():pcbLayoutMode==="pack"?this._doInitialPcbLayoutPack():pcbLayoutMode==="flex"&&this._doInitialPcbLayoutFlex()}_doInitialPcbLayoutGrid(){Group_doInitialPcbLayoutGrid(this)}_doInitialPcbLayoutPack(){Group_doInitialPcbLayoutPack(this)}_doInitialPcbLayoutFlex(){Group_doInitialPcbLayoutFlex(this)}_insertSchematicBorder(){if(this.root?.schematicDisabled)return;let{db:db2}=this.root,props=this._parsedProps;if(!props.border)return;let width=typeof props.schWidth=="number"?props.schWidth:void 0,height=typeof props.schHeight=="number"?props.schHeight:void 0,paddingGeneral=typeof props.schPadding=="number"?props.schPadding:0,paddingLeft=typeof props.schPaddingLeft=="number"?props.schPaddingLeft:paddingGeneral,paddingRight=typeof props.schPaddingRight=="number"?props.schPaddingRight:paddingGeneral,paddingTop=typeof props.schPaddingTop=="number"?props.schPaddingTop:paddingGeneral,paddingBottom=typeof props.schPaddingBottom=="number"?props.schPaddingBottom:paddingGeneral,schematicGroup=this.schematic_group_id?db2.schematic_group.get(this.schematic_group_id):null;if(schematicGroup&&(width===void 0&&typeof schematicGroup.width=="number"&&(width=schematicGroup.width),height===void 0&&typeof schematicGroup.height=="number"&&(height=schematicGroup.height)),width===void 0||height===void 0)return;let center2=schematicGroup?.center??this._getGlobalSchematicPositionBeforeLayout(),left=center2.x-width/2-paddingLeft,bottom=center2.y-height/2-paddingBottom,finalWidth=width+paddingLeft+paddingRight,finalHeight=height+paddingTop+paddingBottom;db2.schematic_box.insert({width:finalWidth,height:finalHeight,x:left,y:bottom,is_dashed:props.border?.dashed??!1})}_determineSideFromPosition(port,component){if(!port.center||!component.center)return"left";let dx2=port.center.x-component.center.x,dy2=port.center.y-component.center.y;return Math.abs(dx2)>Math.abs(dy2)?dx2>0?"right":"left":dy2>0?"bottom":"top"}_calculateSchematicBounds(boxes){if(boxes.length===0)return{minX:0,maxX:0,minY:0,maxY:0};let minX=1/0,maxX=-1/0,minY=1/0,maxY=-1/0;for(let box2 of boxes)minX=Math.min(minX,box2.centerX),maxX=Math.max(maxX,box2.centerX),minY=Math.min(minY,box2.centerY),maxY=Math.max(maxY,box2.centerY);let padding=2;return{minX:minX-padding,maxX:maxX+padding,minY:minY-padding,maxY:maxY+padding}}_getAutorouterConfig(){let autorouter=this._parsedProps.autorouter||this.getInheritedProperty("autorouter");return getPresetAutoroutingConfig(autorouter)}_isLaserPrefabAutorouter(autorouterConfig2=this._getAutorouterConfig()){let autorouterProp2=this.props.autorouter,normalize3=value=>value?.replace(/-/g,"_")??value;return autorouterConfig2.preset==="laser_prefab"?!0:typeof autorouterProp2=="string"?normalize3(autorouterProp2)==="laser_prefab":typeof autorouterProp2=="object"&&autorouterProp2?normalize3(autorouterProp2.preset)==="laser_prefab":!1}_isAutoJumperAutorouter(autorouterConfig2=this._getAutorouterConfig()){let autorouterProp2=this.props.autorouter,normalize3=value=>value?.replace(/-/g,"_")??value;return autorouterConfig2.preset==="auto_jumper"?!0:typeof autorouterProp2=="string"?normalize3(autorouterProp2)==="auto_jumper":typeof autorouterProp2=="object"&&autorouterProp2?normalize3(autorouterProp2.preset)==="auto_jumper":!1}_getSubcircuitLayerCount(){let layers=this.getInheritedProperty("layers");return typeof layers=="number"?layers:2}_shouldUseTraceByTraceRouting(){return this._getAutorouterConfig().groupMode==="sequential-trace"}doInitialPcbDesignRuleChecks(){if(this.root?.pcbDisabled||this.getInheritedProperty("routingDisabled"))return;let{db:db2}=this.root;if(this.isSubcircuit){let subcircuitComponentsByName=new Map;for(let child of this.children)if(!child.isSubcircuit&&child._parsedProps.name){let components=subcircuitComponentsByName.get(child._parsedProps.name)||[];components.push(child),subcircuitComponentsByName.set(child._parsedProps.name,components)}for(let[name,components]of subcircuitComponentsByName.entries())components.length>1&&db2.pcb_trace_error.insert({error_type:"pcb_trace_error",message:`Multiple components found with name "${name}" in subcircuit "${this.name||"unnamed"}". Component names must be unique within a subcircuit.`,source_trace_id:"",pcb_trace_id:"",pcb_component_ids:components.map(c3=>c3.pcb_component_id).filter(Boolean),pcb_port_ids:[]})}}doInitialSchematicReplaceNetLabelsWithSymbols(){if(this.root?.schematicDisabled||!this.isSubcircuit)return;let{db:db2}=this.root,subtree=db2;for(let nl2 of subtree.schematic_net_label.list()){let net=subtree.source_net.get(nl2.source_net_id),text=nl2.text||net?.name||"";if(nl2.anchor_side==="top"&&/^gnd/i.test(text)){subtree.schematic_net_label.update(nl2.schematic_net_label_id,{symbol_name:"rail_down"});continue}nl2.anchor_side==="bottom"&&/^v/i.test(text)&&subtree.schematic_net_label.update(nl2.schematic_net_label_id,{symbol_name:"rail_up"})}}doInitialSimulationSpiceEngineRender(){Group_doInitialSimulationSpiceEngineRender(this)}doInitialPcbComponentAnchorAlignment(){Group_doInitialPcbComponentAnchorAlignment(this)}updatePcbComponentAnchorAlignment(){this.doInitialPcbComponentAnchorAlignment()}_getMinimumFlexContainerSize(){return super._getMinimumFlexContainerSize()}_repositionOnPcb(position2){return super._repositionOnPcb(position2)}};function inflatePcbBoard(pcbBoard,inflatorContext){let{subcircuit}=inflatorContext;if(subcircuit.lowercaseComponentName==="board"||subcircuit.parent?.lowercaseComponentName==="board")return;let boardProps2={name:"inflated_board"};pcbBoard.width&&(boardProps2.width=pcbBoard.width),pcbBoard.height&&(boardProps2.height=pcbBoard.height),pcbBoard.center&&(boardProps2.pcbX=pcbBoard.center.x,boardProps2.pcbY=pcbBoard.center.y),pcbBoard.outline&&(boardProps2.outline=pcbBoard.outline),pcbBoard.thickness&&(boardProps2.thickness=pcbBoard.thickness),pcbBoard.material&&(boardProps2.material=pcbBoard.material);let board=new Board(boardProps2);return board.pcb_board_id=pcbBoard.pcb_board_id,subcircuit.add(board),board}var stringProxy=new Proxy({},{get:(target,prop)=>prop}),FTYPE=stringProxy,SCHEMATIC_COMPONENT_OUTLINE_COLOR="rgba(132, 0, 0)",SCHEMATIC_COMPONENT_OUTLINE_STROKE_WIDTH=.12,Capacitor=class extends NormalComponent3{constructor(){super(...arguments);__publicField(this,"_adjustSilkscreenTextAutomatically",!0)}get config(){return{componentName:"Capacitor",schematicSymbolName:this.props.polarized?"capacitor_polarized":this.props.symbolName??"capacitor",zodProps:capacitorProps,sourceFtype:FTYPE.simple_capacitor}}initPorts(){typeof this.props.footprint=="string"?super.initPorts({additionalAliases:{pin1:["anode","pos"],pin2:["cathode","neg"]}}):super.initPorts()}_getSchematicSymbolDisplayValue(){let inputCapacitance=this.props.capacitance,capacitanceDisplay=typeof inputCapacitance=="string"?inputCapacitance:`${formatSiUnit(this._parsedProps.capacitance)}F`;return this._parsedProps.schShowRatings&&this._parsedProps.maxVoltageRating?`${capacitanceDisplay}/${formatSiUnit(this._parsedProps.maxVoltageRating)}V`:capacitanceDisplay}doInitialCreateNetsFromProps(){this._createNetsFromProps([this.props.decouplingFor,this.props.decouplingTo,...this._getNetsFromConnectionsProp()])}doInitialCreateTracesFromProps(){this.props.decouplingFor&&this.props.decouplingTo&&(this.add(new Trace3({from:`${this.getSubcircuitSelector()} > port.1`,to:this.props.decouplingFor})),this.add(new Trace3({from:`${this.getSubcircuitSelector()} > port.2`,to:this.props.decouplingTo}))),this._createTracesFromConnectionsProp()}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,source_component=db2.source_component.insert({ftype:"simple_capacitor",name:this.name,manufacturer_part_number:props.manufacturerPartNumber??props.mfn,supplier_part_numbers:props.supplierPartNumbers,capacitance:props.capacitance,max_voltage_rating:props.maxVoltageRating,max_decoupling_trace_length:props.maxDecouplingTraceLength,display_capacitance:this._getSchematicSymbolDisplayValue(),are_pins_interchangeable:!props.polarized,display_name:props.displayName});this.source_component_id=source_component.source_component_id}},inflatePcbComponent=(pcbElm,inflatorContext)=>{let{injectionDb,normalComponent}=inflatorContext;if(!normalComponent)return;let componentCenter=pcbElm.center||{x:0,y:0},componentRotation=pcbElm.rotation||0,absoluteToComponentRelativeTransform=inverse(compose(translate(componentCenter.x,componentCenter.y),rotate(componentRotation*Math.PI/180))),relativeElements=injectionDb.toArray().filter(elm=>"pcb_component_id"in elm&&elm.pcb_component_id===pcbElm.pcb_component_id),clonedRelativeElements=structuredClone(relativeElements);transformPCBElements(clonedRelativeElements,absoluteToComponentRelativeTransform);let components=createComponentsFromCircuitJson({componentName:normalComponent.name,componentRotation:"0deg"},clonedRelativeElements);normalComponent.addAll(components)};function inflateSourceCapacitor(sourceElm,inflatorContext){let{injectionDb,subcircuit,groupsMap}=inflatorContext,pcbElm=injectionDb.pcb_component.getWhere({source_component_id:sourceElm.source_component_id}),cadElm=injectionDb.cad_component.getWhere({source_component_id:sourceElm.source_component_id}),capacitor=new Capacitor({name:sourceElm.name,capacitance:sourceElm.capacitance,layer:pcbElm?.layer,pcbX:pcbElm?.center?.x,pcbY:pcbElm?.center?.y,pcbRotation:pcbElm?.rotation,doNotPlace:pcbElm?.do_not_place,obstructsWithinBounds:pcbElm?.obstructs_within_bounds});pcbElm&&inflatePcbComponent(pcbElm,{...inflatorContext,normalComponent:capacitor}),sourceElm.source_group_id&&groupsMap?.has(sourceElm.source_group_id)?groupsMap.get(sourceElm.source_group_id).add(capacitor):subcircuit.add(capacitor)}var Chip=class extends NormalComponent3{constructor(props){super(props);__publicField(this,"schematicBoxDimensions",null)}get config(){return{componentName:"Chip",zodProps:chipProps,shouldRenderAsSchematicBox:!0}}initPorts(opts={}){super.initPorts(opts);let{_parsedProps:props}=this,{pcbX,pcbY}=this.getResolvedPcbPositionProp();if(props.externallyConnectedPins){let requiredPorts=new Set;for(let[pin1,pin2]of props.externallyConnectedPins)requiredPorts.add(pin1),requiredPorts.add(pin2);for(let pinIdentifier of requiredPorts)if(!this.children.find(child=>child instanceof Port&&child.isMatchingAnyOf([pinIdentifier]))){let pinMatch=pinIdentifier.match(/^pin(\d+)$/);if(pinMatch){let pinNumber=parseInt(pinMatch[1]);this.add(new Port({pinNumber,aliases:[pinIdentifier]}))}else this.add(new Port({name:pinIdentifier,aliases:[pinIdentifier]}))}}}doInitialSchematicComponentRender(){let{_parsedProps:props}=this;props?.noSchematicRepresentation!==!0&&super.doInitialSchematicComponentRender()}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,{pcbX,pcbY}=this.getResolvedPcbPositionProp(),source_component=db2.source_component.insert({ftype:"simple_chip",name:this.name,manufacturer_part_number:props.manufacturerPartNumber,supplier_part_numbers:props.supplierPartNumbers,display_name:props.displayName});this.source_component_id=source_component.source_component_id}doInitialPcbComponentRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,{pcbX,pcbY}=this.getResolvedPcbPositionProp(),componentLayer=props.layer??"top";if(componentLayer!=="top"&&componentLayer!=="bottom"){let subcircuit=this.getSubcircuit(),error=pcb_component_invalid_layer_error.parse({type:"pcb_component_invalid_layer_error",message:`Component cannot be placed on layer '${componentLayer}'. Components can only be placed on 'top' or 'bottom' layers.`,source_component_id:this.source_component_id,layer:componentLayer,subcircuit_id:subcircuit.subcircuit_id??void 0});db2.pcb_component_invalid_layer_error.insert(error)}let pcb_component2=db2.pcb_component.insert({center:{x:pcbX,y:pcbY},width:2,height:3,layer:componentLayer==="top"||componentLayer==="bottom"?componentLayer:"top",rotation:props.pcbRotation??0,source_component_id:this.source_component_id,subcircuit_id:this.getSubcircuit().subcircuit_id??void 0,do_not_place:props.doNotPlace??!1,obstructs_within_bounds:props.obstructsWithinBounds??!0});this.pcb_component_id=pcb_component2.pcb_component_id}doInitialCreateTracesFromProps(){let{_parsedProps:props}=this;if(props.externallyConnectedPins)for(let[pin1,pin2]of props.externallyConnectedPins)this.add(new Trace3({from:`${this.getSubcircuitSelector()} > port.${pin1}`,to:`${this.getSubcircuitSelector()} > port.${pin2}`}));this._createTracesFromConnectionsProp()}doInitialSimulationRender(){let{db:db2}=this.root,{pinAttributes}=this.props;if(!pinAttributes)return;let powerPort=null,groundPort=null,voltage2,ports=this.selectAll("port");for(let port of ports)for(let alias of port.getNameAndAliases())if(pinAttributes[alias]){let attributes2=pinAttributes[alias];attributes2.providesPower&&(powerPort=port,voltage2=attributes2.providesVoltage),attributes2.providesGround&&(groundPort=port)}if(!powerPort||!groundPort||voltage2===void 0)return;let powerSourcePort=db2.source_port.get(powerPort.source_port_id);if(!powerSourcePort?.subcircuit_connectivity_map_key)return;let groundSourcePort=db2.source_port.get(groundPort.source_port_id);if(!groundSourcePort?.subcircuit_connectivity_map_key)return;let powerNet=db2.source_net.getWhere({subcircuit_connectivity_map_key:powerSourcePort.subcircuit_connectivity_map_key}),groundNet=db2.source_net.getWhere({subcircuit_connectivity_map_key:groundSourcePort.subcircuit_connectivity_map_key});!powerNet||!groundNet||db2.simulation_voltage_source.insert({type:"simulation_voltage_source",positive_source_port_id:powerPort.source_port_id,positive_source_net_id:powerNet.source_net_id,negative_source_port_id:groundPort.source_port_id,negative_source_net_id:groundNet.source_net_id,voltage:voltage2})}},mapInternallyConnectedSourcePortIdsToPinLabels=(sourcePortIds,inflatorContext)=>{if(!sourcePortIds||sourcePortIds.length===0)return;let{injectionDb}=inflatorContext,mapped=sourcePortIds.map(group=>group.map(sourcePortId=>{let port=injectionDb.source_port.get(sourcePortId);return port?port.pin_number!==void 0&&port.pin_number!==null?`pin${port.pin_number}`:port.name:null}).filter(value=>value!==null)).filter(group=>group.length>0);return mapped.length>0?mapped:void 0},inflateSourceChip=(sourceElm,inflatorContext)=>{let{injectionDb,subcircuit,groupsMap}=inflatorContext,pcbElm=injectionDb.pcb_component.getWhere({source_component_id:sourceElm.source_component_id}),schematicElm=injectionDb.schematic_component.getWhere({source_component_id:sourceElm.source_component_id}),cadElm=injectionDb.cad_component.getWhere({source_component_id:sourceElm.source_component_id}),internallyConnectedPins=mapInternallyConnectedSourcePortIdsToPinLabels(sourceElm.internally_connected_source_port_ids,inflatorContext),chip=new Chip({name:sourceElm.name,manufacturerPartNumber:sourceElm.manufacturer_part_number,supplierPartNumbers:sourceElm.supplier_part_numbers??void 0,pinLabels:schematicElm?.port_labels??void 0,schWidth:schematicElm?.size?.width,schHeight:schematicElm?.size?.height,schPinSpacing:schematicElm?.pin_spacing,schX:schematicElm?.center?.x,schY:schematicElm?.center?.y,layer:pcbElm?.layer,pcbX:pcbElm?.center?.x,pcbY:pcbElm?.center?.y,pcbRotation:pcbElm?.rotation,doNotPlace:pcbElm?.do_not_place,obstructsWithinBounds:pcbElm?.obstructs_within_bounds,internallyConnectedPins}),footprint=cadElm?.footprinter_string??null;footprint&&(Object.assign(chip.props,{footprint}),Object.assign(chip._parsedProps,{footprint}),cadElm||chip._addChildrenFromStringFootprint?.()),pcbElm&&inflatePcbComponent(pcbElm,{...inflatorContext,normalComponent:chip}),sourceElm.source_group_id&&groupsMap?.has(sourceElm.source_group_id)?groupsMap.get(sourceElm.source_group_id).add(chip):subcircuit.add(chip)},Diode=class extends NormalComponent3{constructor(){super(...arguments);__publicField(this,"pos",this.portMap.pin1);__publicField(this,"anode",this.portMap.pin1);__publicField(this,"neg",this.portMap.pin2);__publicField(this,"cathode",this.portMap.pin2)}get config(){let symbolMap={schottky:"schottky_diode",avalanche:"avalanche_diode",zener:"zener_diode",photodiode:"photodiode"},variantSymbol=this.props.schottky?"schottky":this.props.avalanche?"avalanche":this.props.zener?"zener":this.props.photo?"photodiode":null;return{schematicSymbolName:variantSymbol?symbolMap[variantSymbol]:this.props.symbolName??"diode",componentName:"Diode",zodProps:diodeProps,sourceFtype:"simple_diode"}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,source_component=db2.source_component.insert({ftype:"simple_diode",name:this.name,manufacturer_part_number:props.manufacturerPartNumber??props.mfn,supplier_part_numbers:props.supplierPartNumbers,are_pins_interchangeable:!1,display_name:props.displayName});this.source_component_id=source_component.source_component_id}};function inflateSourceDiode(sourceElm,inflatorContext){let{injectionDb,subcircuit,groupsMap}=inflatorContext,pcbElm=injectionDb.pcb_component.getWhere({source_component_id:sourceElm.source_component_id}),cadElm=injectionDb.cad_component.getWhere({source_component_id:sourceElm.source_component_id}),diode2=new Diode({name:sourceElm.name,layer:pcbElm?.layer,pcbX:pcbElm?.center?.x,pcbY:pcbElm?.center?.y,pcbRotation:pcbElm?.rotation,doNotPlace:pcbElm?.do_not_place,obstructsWithinBounds:pcbElm?.obstructs_within_bounds});pcbElm&&inflatePcbComponent(pcbElm,{...inflatorContext,normalComponent:diode2}),sourceElm.source_group_id&&groupsMap?.has(sourceElm.source_group_id)?groupsMap.get(sourceElm.source_group_id).add(diode2):subcircuit.add(diode2)}function inflateSourceGroup(sourceGroup,inflatorContext){let{subcircuit,groupsMap}=inflatorContext,group=new Group6({name:sourceGroup.name??`inflated_group_${sourceGroup.source_group_id}`});return group.source_group_id=sourceGroup.source_group_id,groupsMap&&groupsMap.set(sourceGroup.source_group_id,group),sourceGroup.parent_source_group_id&&groupsMap?.has(sourceGroup.parent_source_group_id)?groupsMap.get(sourceGroup.parent_source_group_id).add(group):subcircuit.add(group),group}var Inductor=class extends NormalComponent3{constructor(){super(...arguments);__publicField(this,"_adjustSilkscreenTextAutomatically",!0)}get config(){return{componentName:"Inductor",schematicSymbolName:this.props.symbolName??"inductor",zodProps:inductorProps,sourceFtype:FTYPE.simple_inductor}}_getSchematicSymbolDisplayValue(){return`${formatSiUnit(this._parsedProps.inductance)}H`}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,source_component=db2.source_component.insert({name:this.name,ftype:FTYPE.simple_inductor,inductance:this.props.inductance,display_inductance:this._getSchematicSymbolDisplayValue(),supplier_part_numbers:props.supplierPartNumbers,are_pins_interchangeable:!0,display_name:props.displayName});this.source_component_id=source_component.source_component_id}};function inflateSourceInductor(sourceElm,inflatorContext){let{injectionDb,subcircuit,groupsMap}=inflatorContext,pcbElm=injectionDb.pcb_component.getWhere({source_component_id:sourceElm.source_component_id}),cadElm=injectionDb.cad_component.getWhere({source_component_id:sourceElm.source_component_id}),inductor=new Inductor({name:sourceElm.name,inductance:sourceElm.inductance,layer:pcbElm?.layer,pcbX:pcbElm?.center?.x,pcbY:pcbElm?.center?.y,pcbRotation:pcbElm?.rotation,doNotPlace:pcbElm?.do_not_place,obstructsWithinBounds:pcbElm?.obstructs_within_bounds});pcbElm&&inflatePcbComponent(pcbElm,{...inflatorContext,normalComponent:inductor}),sourceElm.source_group_id&&groupsMap?.has(sourceElm.source_group_id)?groupsMap.get(sourceElm.source_group_id).add(inductor):subcircuit.add(inductor)}function inflateSourcePort(sourcePort,inflatorContext){let{injectionDb,subcircuit}=inflatorContext;if(sourcePort.source_component_id!==null)return;let pcbPortFromInjection=injectionDb.pcb_port.getWhere({source_port_id:sourcePort.source_port_id}),port=new Port({name:sourcePort.name,pinNumber:sourcePort.pin_number});subcircuit.add(port),port.source_port_id=sourcePort.source_port_id;let root=subcircuit.root;if(root&&pcbPortFromInjection){let{db:db2}=root,pcb_port2=db2.pcb_port.insert({pcb_component_id:void 0,layers:pcbPortFromInjection.layers,subcircuit_id:subcircuit.subcircuit_id??void 0,pcb_group_id:subcircuit.getGroup()?.pcb_group_id??void 0,x:pcbPortFromInjection.x,y:pcbPortFromInjection.y,source_port_id:sourcePort.source_port_id,is_board_pinout:!1});port.pcb_port_id=pcb_port2.pcb_port_id}}var Resistor=class extends NormalComponent3{constructor(){super(...arguments);__publicField(this,"_adjustSilkscreenTextAutomatically",!0)}get config(){return{componentName:"Resistor",schematicSymbolName:this.props.symbolName??"boxresistor",zodProps:resistorProps,sourceFtype:"simple_resistor"}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}_getSchematicSymbolDisplayValue(){return`${formatSiUnit(this._parsedProps.resistance)}\u03A9`}doInitialCreateNetsFromProps(){this._createNetsFromProps([this.props.pullupFor,this.props.pullupTo,this.props.pulldownFor,this.props.pulldownTo,...this._getNetsFromConnectionsProp()])}doInitialCreateTracesFromProps(){this.props.pullupFor&&this.props.pullupTo&&(this.add(new Trace3({from:`${this.getSubcircuitSelector()} > port.1`,to:this.props.pullupFor})),this.add(new Trace3({from:`${this.getSubcircuitSelector()} > port.2`,to:this.props.pullupTo}))),this.props.pulldownFor&&this.props.pulldownTo&&(this.add(new Trace3({from:`${this.getSubcircuitSelector()} > port.1`,to:this.props.pulldownFor})),this.add(new Trace3({from:`${this.getSubcircuitSelector()} > port.2`,to:this.props.pulldownTo}))),this._createTracesFromConnectionsProp()}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,source_component=db2.source_component.insert({ftype:"simple_resistor",name:this.name,manufacturer_part_number:props.manufacturerPartNumber??props.mfn,supplier_part_numbers:props.supplierPartNumbers,resistance:props.resistance,display_resistance:this._getSchematicSymbolDisplayValue(),are_pins_interchangeable:!0,display_name:props.displayName});this.source_component_id=source_component.source_component_id}};function inflateSourceResistor(sourceElm,inflatorContext){let{injectionDb,subcircuit,groupsMap}=inflatorContext,pcbElm=injectionDb.pcb_component.getWhere({source_component_id:sourceElm.source_component_id}),cadElm=injectionDb.cad_component.getWhere({source_component_id:sourceElm.source_component_id}),resistor=new Resistor({name:sourceElm.name,resistance:sourceElm.resistance,layer:pcbElm?.layer,pcbX:pcbElm?.center?.x,pcbY:pcbElm?.center?.y,pcbRotation:pcbElm?.rotation,doNotPlace:pcbElm?.do_not_place,obstructsWithinBounds:pcbElm?.obstructs_within_bounds});pcbElm&&inflatePcbComponent(pcbElm,{...inflatorContext,normalComponent:resistor}),sourceElm.source_group_id&&groupsMap?.has(sourceElm.source_group_id)?groupsMap.get(sourceElm.source_group_id).add(resistor):subcircuit.add(resistor)}var getSelectorPath=(component,inflatorContext)=>{let{injectionDb,subcircuit,groupsMap}=inflatorContext,path_parts=[],currentGroupId=component.source_group_id;for(;currentGroupId&&currentGroupId!==subcircuit.source_group_id;){let sourceGroup=injectionDb.source_group.get(currentGroupId),groupInstance=groupsMap?.get(currentGroupId);if(!sourceGroup||!groupInstance)break;let groupName=groupInstance.props.name??groupInstance.fallbackUnassignedName;path_parts.unshift(`.${groupName}`),currentGroupId=sourceGroup.parent_source_group_id}return path_parts.push(`.${component.name}`),path_parts.join(" > ")};function inflateSourceTrace(sourceTrace,inflatorContext){let{injectionDb,subcircuit}=inflatorContext,connectedSelectors=[];for(let sourcePortId of sourceTrace.connected_source_port_ids){let sourcePort=injectionDb.source_port.get(sourcePortId);if(!sourcePort)continue;let selector;if(sourcePort.source_component_id){let sourceComponent=injectionDb.source_component.get(sourcePort.source_component_id);sourceComponent&&(selector=`${getSelectorPath({name:sourceComponent.name,source_group_id:sourceComponent.source_group_id},inflatorContext)} > .${sourcePort.name}`)}else selector=`.${sourcePort.name}`;selector&&connectedSelectors.push(selector)}for(let sourceNetId of sourceTrace.connected_source_net_ids){let sourceNet=injectionDb.source_net.get(sourceNetId);sourceNet&&connectedSelectors.push(`net.${sourceNet.name}`)}if(connectedSelectors.length<2)return;let trace=new Trace3({path:connectedSelectors});trace.source_trace_id=sourceTrace.source_trace_id,subcircuit.add(trace)}var Transistor=class extends NormalComponent3{constructor(){super(...arguments);__publicField(this,"emitter",this.portMap.pin1);__publicField(this,"collector",this.portMap.pin2);__publicField(this,"base",this.portMap.pin3)}get config(){let baseSymbolName=this.props.type==="npn"?"npn_bipolar_transistor":"pnp_bipolar_transistor";return{componentName:"Transistor",schematicSymbolName:this.props.symbolName??baseSymbolName,zodProps:transistorProps,sourceFtype:"simple_transistor",shouldRenderAsSchematicBox:!1}}initPorts(){let pinAliases={pin1:["collector","c"],pin2:["emitter","e"],pin3:["base","b"]};super.initPorts({pinCount:3,additionalAliases:pinAliases})}doInitialCreateNetsFromProps(){this._createNetsFromProps([...this._getNetsFromConnectionsProp()])}doInitialCreateTracesFromProps(){this._createTracesFromConnectionsProp()}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,source_component=db2.source_component.insert({ftype:"simple_transistor",name:this.name,transistor_type:props.type,display_name:props.displayName});this.source_component_id=source_component.source_component_id}};function inflateSourceTransistor(sourceElm,inflatorContext){let{injectionDb,subcircuit,groupsMap}=inflatorContext,pcbElm=injectionDb.pcb_component.getWhere({source_component_id:sourceElm.source_component_id}),cadElm=injectionDb.cad_component.getWhere({source_component_id:sourceElm.source_component_id}),transistor=new Transistor({name:sourceElm.name,type:sourceElm.transistor_type,layer:pcbElm?.layer,pcbX:pcbElm?.center?.x,pcbY:pcbElm?.center?.y,pcbRotation:pcbElm?.rotation,doNotPlace:pcbElm?.do_not_place,obstructsWithinBounds:pcbElm?.obstructs_within_bounds});pcbElm&&inflatePcbComponent(pcbElm,{...inflatorContext,normalComponent:transistor}),sourceElm.source_group_id&&groupsMap?.has(sourceElm.source_group_id)?groupsMap.get(sourceElm.source_group_id).add(transistor):subcircuit.add(transistor)}var inflateCircuitJson=(target,circuitJson,children)=>{if(!circuitJson)return;let injectionDb=cju_default(circuitJson);if(circuitJson&&children?.length>0)throw new Error("Component cannot have both circuitJson and children");let inflationCtx={injectionDb,subcircuit:target,groupsMap:new Map},sourceGroups=injectionDb.source_group.list();for(let sourceGroup of sourceGroups)inflateSourceGroup(sourceGroup,inflationCtx);let pcbBoards=injectionDb.pcb_board.list();for(let pcbBoard of pcbBoards)inflatePcbBoard(pcbBoard,inflationCtx);let sourceComponents=injectionDb.source_component.list();for(let sourceComponent of sourceComponents)switch(sourceComponent.ftype){case"simple_resistor":inflateSourceResistor(sourceComponent,inflationCtx);break;case"simple_capacitor":inflateSourceCapacitor(sourceComponent,inflationCtx);break;case"simple_inductor":inflateSourceInductor(sourceComponent,inflationCtx);break;case"simple_diode":inflateSourceDiode(sourceComponent,inflationCtx);break;case"simple_chip":inflateSourceChip(sourceComponent,inflationCtx);break;case"simple_transistor":inflateSourceTransistor(sourceComponent,inflationCtx);break;default:throw new Error(`No inflator implemented for source component ftype: "${sourceComponent.ftype}"`)}let sourcePorts=injectionDb.source_port.list();for(let sourcePort of sourcePorts)inflateSourcePort(sourcePort,inflationCtx);let sourceTraces=injectionDb.source_trace.list();for(let sourceTrace of sourceTraces)inflateSourceTrace(sourceTrace,inflationCtx)},MIN_EFFECTIVE_BORDER_RADIUS_MM=.01,getRoundedRectOutline=(width,height,radius)=>{let w22=width/2,h2=height/2,r4=Math.min(radius,w22,h2);if(r4<MIN_EFFECTIVE_BORDER_RADIUS_MM)return[{x:-w22,y:-h2},{x:w22,y:-h2},{x:w22,y:h2},{x:-w22,y:h2}];let segments=Math.max(1,Math.ceil(Math.PI/2*r4/.1)),step=Math.PI/2/segments,outline=[];outline.push({x:-w22+r4,y:-h2}),outline.push({x:w22-r4,y:-h2});for(let i3=1;i3<=segments;i3++){let theta=-Math.PI/2+i3*step;outline.push({x:w22-r4+r4*Math.cos(theta),y:-h2+r4+r4*Math.sin(theta)})}outline.push({x:w22,y:h2-r4});for(let i3=1;i3<=segments;i3++){let theta=0+i3*step;outline.push({x:w22-r4+r4*Math.cos(theta),y:h2-r4+r4*Math.sin(theta)})}outline.push({x:-w22+r4,y:h2});for(let i3=1;i3<=segments;i3++){let theta=Math.PI/2+i3*step;outline.push({x:-w22+r4+r4*Math.cos(theta),y:h2-r4+r4*Math.sin(theta)})}outline.push({x:-w22,y:-h2+r4});for(let i3=1;i3<=segments;i3++){let theta=Math.PI+i3*step;outline.push({x:-w22+r4+r4*Math.cos(theta),y:-h2+r4+r4*Math.sin(theta)})}return outline},Board=class extends Group6{constructor(){super(...arguments);__publicField(this,"pcb_board_id",null);__publicField(this,"source_board_id",null);__publicField(this,"_drcChecksComplete",!1);__publicField(this,"_connectedSchematicPortPairs",new Set);__publicField(this,"_panelPositionOffset",null)}get isSubcircuit(){return!0}get isGroup(){return!0}get config(){return{componentName:"Board",zodProps:boardProps}}get boardThickness(){return this._parsedProps.thickness??1.4}get allLayers(){let layerCount=this._parsedProps.layers??2;return layerCount===1?["top"]:layerCount===4?["top","bottom","inner1","inner2"]:["top","bottom"]}_getSubcircuitLayerCount(){return this._parsedProps.layers??2}_computePcbGlobalTransformBeforeLayout(){if(this._panelPositionOffset){let parentTransform=this.parent?._computePcbGlobalTransformBeforeLayout?.()??{a:1,b:0,c:0,d:1,e:0,f:0};return compose(parentTransform,translate(this._panelPositionOffset.x,this._panelPositionOffset.y))}return super._computePcbGlobalTransformBeforeLayout()}_getBoardCalcVariables(){let{_parsedProps:props}=this;if((props.width==null||props.height==null)&&!props.outline)return{};let dbBoard=this.pcb_board_id?this.root?.db.pcb_board.get(this.pcb_board_id):null,width=dbBoard?.width??props.width,height=dbBoard?.height??props.height;if((width==null||height==null)&&props.outline?.length){let outlineBounds=getBoundsFromPoints(props.outline);outlineBounds&&(width??(width=outlineBounds.maxX-outlineBounds.minX),height??(height=outlineBounds.maxY-outlineBounds.minY))}let{pcbX,pcbY}=this.getResolvedPcbPositionProp(),center2=dbBoard?.center??{x:pcbX+(props.outlineOffsetX??0),y:pcbY+(props.outlineOffsetY??0)},resolvedWidth=width??0,resolvedHeight=height??0;return{"board.minx":center2.x-resolvedWidth/2,"board.maxx":center2.x+resolvedWidth/2,"board.miny":center2.y-resolvedHeight/2,"board.maxy":center2.y+resolvedHeight/2}}doInitialPcbBoardAutoSize(){if(this.root?.pcbDisabled||!this.pcb_board_id)return;let{db:db2}=this.root,{_parsedProps:props}=this,globalPos=this._getGlobalPcbPositionBeforeLayout(),pcbBoard=db2.pcb_board.get(this.pcb_board_id);if(pcbBoard?.width&&pcbBoard?.height||pcbBoard?.outline&&pcbBoard.outline.length>0)return;let minX=1/0,minY=1/0,maxX=-1/0,maxY=-1/0,descendantIds=getDescendantSubcircuitIds(db2,this.subcircuit_id),allowedSubcircuitIds=new Set([this.subcircuit_id,...descendantIds]),allPcbComponents=db2.pcb_component.list().filter(c3=>c3.subcircuit_id&&allowedSubcircuitIds.has(c3.subcircuit_id)),allPcbGroups=db2.pcb_group.list().filter(g4=>g4.subcircuit_id&&allowedSubcircuitIds.has(g4.subcircuit_id)),hasComponents=!1,updateBounds=(center22,width,height)=>{width===0||height===0||(hasComponents=!0,minX=Math.min(minX,center22.x-width/2),minY=Math.min(minY,center22.y-height/2),maxX=Math.max(maxX,center22.x+width/2),maxY=Math.max(maxY,center22.y+height/2))};for(let pcbComponent of allPcbComponents)updateBounds(pcbComponent.center,pcbComponent.width,pcbComponent.height);for(let pcbGroup of allPcbGroups){let width=pcbGroup.width??0,height=pcbGroup.height??0;if(pcbGroup.outline&&pcbGroup.outline.length>0){let bounds=getBoundsFromPoints(pcbGroup.outline);bounds&&(width=bounds.maxX-bounds.minX,height=bounds.maxY-bounds.minY)}updateBounds(pcbGroup.center,width,height)}if(props.boardAnchorPosition){let{x:x3,y:y3}=props.boardAnchorPosition;minX=Math.min(minX,x3),minY=Math.min(minY,y3),maxX=Math.max(maxX,x3),maxY=Math.max(maxY,y3)}let padding=2,computedWidth=hasComponents?maxX-minX+padding*2:0,computedHeight=hasComponents?maxY-minY+padding*2:0,center2={x:hasComponents?(minX+maxX)/2+(props.outlineOffsetX??0):(props.outlineOffsetX??0)+globalPos.x,y:hasComponents?(minY+maxY)/2+(props.outlineOffsetY??0):(props.outlineOffsetY??0)+globalPos.y},finalWidth=props.width??computedWidth,finalHeight=props.height??computedHeight,outline=props.outline;!outline&&props.borderRadius!=null&&finalWidth>0&&finalHeight>0&&(outline=getRoundedRectOutline(finalWidth,finalHeight,props.borderRadius));let update={width:finalWidth,height:finalHeight,center:center2};outline&&(update.outline=outline.map(point6=>({x:point6.x+(props.outlineOffsetX??0),y:point6.y+(props.outlineOffsetY??0)}))),db2.pcb_board.update(this.pcb_board_id,update)}updatePcbBoardAutoSize(){this.doInitialPcbBoardAutoSize()}_addBoardInformationToSilkscreen(){let platform=this.root?.platform;if(!platform?.printBoardInformationToSilkscreen)return;let pcbBoard=this.root.db.pcb_board.get(this.pcb_board_id);if(!pcbBoard)return;let boardInformation=[];if(platform.projectName&&boardInformation.push(platform.projectName),platform.version&&boardInformation.push(`v${platform.version}`),platform.url&&boardInformation.push(platform.url),boardInformation.length===0)return;let text=boardInformation.join(`
622
622
  `),position2={x:pcbBoard.center.x+pcbBoard.width/2-.25,y:pcbBoard.center.y-pcbBoard.height/2+1};this.root.db.pcb_silkscreen_text.insert({pcb_component_id:this.pcb_board_id,layer:"top",font:"tscircuit2024",font_size:.45,text,ccw_rotation:0,anchor_alignment:"bottom_right",anchor_position:position2})}doInitialSourceRender(){let nestedBoard=this.getDescendants().find(d3=>d3.lowercaseComponentName==="board");if(nestedBoard)throw new Error(`Nested boards are not supported: found board "${nestedBoard.name}" inside board "${this.name}"`);super.doInitialSourceRender();let{db:db2}=this.root,source_board2=db2.source_board.insert({source_group_id:this.source_group_id,title:this.props.title||this.props.name});this.source_board_id=source_board2.source_board_id}doInitialInflateSubcircuitCircuitJson(){let{circuitJson,children}=this._parsedProps;inflateCircuitJson(this,circuitJson,children)}doInitialPcbComponentRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,pcbBoardFromCircuitJson=props.circuitJson?.find(elm=>elm.type==="pcb_board"),computedWidth=props.width??pcbBoardFromCircuitJson?.width??0,computedHeight=props.height??pcbBoardFromCircuitJson?.height??0,globalPos=this._getGlobalPcbPositionBeforeLayout(),center2={x:globalPos.x+(props.outlineOffsetX??0),y:globalPos.y+(props.outlineOffsetY??0)},{boardAnchorPosition,boardAnchorAlignment}=props;if(boardAnchorPosition&&(center2=getBoardCenterFromAnchor({boardAnchorPosition,boardAnchorAlignment:boardAnchorAlignment??"center",width:computedWidth,height:computedHeight})),props.outline){let xValues=props.outline.map(point6=>point6.x),yValues=props.outline.map(point6=>point6.y),minX=Math.min(...xValues),maxX=Math.max(...xValues),minY=Math.min(...yValues),maxY=Math.max(...yValues);computedWidth=maxX-minX,computedHeight=maxY-minY}let outline=props.outline;!outline&&props.borderRadius!=null&&computedWidth>0&&computedHeight>0&&(outline=getRoundedRectOutline(computedWidth,computedHeight,props.borderRadius));let outlineTranslation={x:0,y:0};if(outline&&outline.length>0&&this.parent?.lowercaseComponentName==="panel"){let outlineBounds=getBoundsFromPoints(outline);if(outlineBounds){let outlineCenterX=(outlineBounds.minX+outlineBounds.maxX)/2,outlineCenterY=(outlineBounds.minY+outlineBounds.maxY)/2;outlineTranslation={x:center2.x-outlineCenterX,y:center2.y-outlineCenterY}}}let pcb_board2=db2.pcb_board.insert({source_board_id:this.source_board_id,center:center2,thickness:this.boardThickness,num_layers:this.allLayers.length,width:computedWidth,height:computedHeight,outline:outline?.map(point6=>({x:point6.x+(props.outlineOffsetX??0)+outlineTranslation.x,y:point6.y+(props.outlineOffsetY??0)+outlineTranslation.y})),material:props.material});this.pcb_board_id=pcb_board2.pcb_board_id,this._addBoardInformationToSilkscreen()}removePcbComponentRender(){let{db:db2}=this.root;this.pcb_board_id&&(db2.pcb_board.delete(this.pcb_board_id),this.pcb_board_id=null)}doInitialPcbDesignRuleChecks(){this.root?.pcbDisabled||this.getInheritedProperty("routingDisabled")||super.doInitialPcbDesignRuleChecks()}updatePcbDesignRuleChecks(){if(this.root?.pcbDisabled||this.getInheritedProperty("routingDisabled"))return;let{db:db2}=this.root;if(!this._areChildSubcircuitsRouted()||this._drcChecksComplete)return;let runDrcChecks=circuitJson=>{let pcbTraceOverlappingErrors=checkEachPcbTraceNonOverlapping(circuitJson);for(let error of pcbTraceOverlappingErrors)db2.pcb_trace_error.insert(error);let pcbPortNotConnectedErrors=checkEachPcbPortConnectedToPcbTraces(circuitJson);for(let error of pcbPortNotConnectedErrors)db2.pcb_port_not_connected_error.insert(error);let pcbComponentOutsideErrors=checkPcbComponentsOutOfBoard(circuitJson);for(let error of pcbComponentOutsideErrors)db2.pcb_component_outside_board_error.insert(error);let pcbTracesOutOfBoardErrors=checkPcbTracesOutOfBoard(circuitJson);for(let error of pcbTracesOutOfBoardErrors)db2.pcb_trace_error.insert(error);let differentNetViaErrors=checkDifferentNetViaSpacing(circuitJson);for(let error of differentNetViaErrors)db2.pcb_via_clearance_error.insert(error);let sameNetViaErrors=checkSameNetViaSpacing(circuitJson);for(let error of sameNetViaErrors)db2.pcb_via_clearance_error.insert(error);let pcbComponentOverlapErrors=checkPcbComponentOverlap(circuitJson);for(let error of pcbComponentOverlapErrors)db2.pcb_footprint_overlap_error.insert(error);let sourcePinMustBeConnectedErrors=checkPinMustBeConnected(circuitJson);for(let error of sourcePinMustBeConnectedErrors)db2.source_pin_must_be_connected_error.insert(error)},subcircuitCircuitJson=db2.subtree({subcircuit_id:this.subcircuit_id}).toArray();runDrcChecks(subcircuitCircuitJson),this._drcChecksComplete=!0}_emitRenderLifecycleEvent(phase,startOrEnd){super._emitRenderLifecycleEvent(phase,startOrEnd),startOrEnd==="start"&&this.root?.emit("board:renderPhaseStarted",{renderId:this._renderId,phase})}_repositionOnPcb(position2){let{db:db2}=this.root,pcbBoard=this.pcb_board_id?db2.pcb_board.get(this.pcb_board_id):null,oldPos=pcbBoard?.center;if(!oldPos){this.pcb_board_id&&db2.pcb_board.update(this.pcb_board_id,{center:position2});return}let deltaX=position2.x-oldPos.x,deltaY=position2.y-oldPos.y;if(!(Math.abs(deltaX)<1e-6&&Math.abs(deltaY)<1e-6)&&this.pcb_board_id&&(db2.pcb_board.update(this.pcb_board_id,{center:position2}),pcbBoard?.outline)){let outlineBounds=getBoundsFromPoints(pcbBoard.outline);if(outlineBounds){let oldOutlineCenter={x:(outlineBounds.minX+outlineBounds.maxX)/2,y:(outlineBounds.minY+outlineBounds.maxY)/2},outlineDeltaX=position2.x-oldOutlineCenter.x,outlineDeltaY=position2.y-oldOutlineCenter.y,newOutline=pcbBoard.outline.map(p2=>({x:p2.x+outlineDeltaX,y:p2.y+outlineDeltaY}));db2.pcb_board.update(this.pcb_board_id,{outline:newOutline})}}}},DEFAULT_TAB_LENGTH=5,DEFAULT_TAB_WIDTH=2,generateCutoutsAndMousebitesForOutline=(outline,options)=>{let{gapLength,cutoutWidth,mouseBites,mouseBiteHoleDiameter,mouseBiteHoleSpacing}=options,tabCutouts=[],mouseBiteHoles=[];if(outline.length<2)return{tabCutouts,mouseBiteHoles};let outlinePolygon=new Polygon$1(outline.map(p2=>point4(p2.x,p2.y))),is_ccw;if(outline.length>2){let p02=point4(outline[0].x,outline[0].y),p12=point4(outline[1].x,outline[1].y),segmentDir=vector$1(p02,p12).normalize(),normalToLeft=segmentDir.rotate(Math.PI/2),testPoint=p02.translate(segmentDir.multiply(segment(p02,p12).length/2)).translate(normalToLeft.multiply(.01));is_ccw=outlinePolygon.contains(testPoint)}else is_ccw=outlinePolygon.area()>0;for(let i3=0;i3<outline.length;i3++){let p1_=outline[i3],p2_=outline[(i3+1)%outline.length];if(!p1_||!p2_)continue;let p12=point4(p1_.x,p1_.y),p2=point4(p2_.x,p2_.y),segment2=segment(p12,p2),segmentLength=segment2.length;if(segmentLength<1e-6)continue;let segmentVec=vector$1(p12,p2),segmentDir=segmentVec.normalize(),normalVec=segmentDir.rotate(Math.PI/2),testPoint=segment2.middle().translate(normalVec.multiply(.01));outlinePolygon.contains(testPoint)&&(normalVec=normalVec.multiply(-1));let numBitesInGap=2,totalBitesLength=numBitesInGap*mouseBiteHoleDiameter+(numBitesInGap-1)*mouseBiteHoleSpacing,effectiveGapLength;mouseBites?effectiveGapLength=totalBitesLength:effectiveGapLength=gapLength,effectiveGapLength=Math.min(effectiveGapLength,segmentLength*.9);let gapStartDist=(segmentLength-effectiveGapLength)/2,gapEndDist=gapStartDist+effectiveGapLength;if(mouseBites){let holeAndSpacing=mouseBiteHoleDiameter+mouseBiteHoleSpacing;if(effectiveGapLength>=totalBitesLength&&holeAndSpacing>0){let firstBiteCenterOffsetInGap=(effectiveGapLength-totalBitesLength)/2+mouseBiteHoleDiameter/2,firstBiteDistFromP1=gapStartDist+firstBiteCenterOffsetInGap;for(let k4=0;k4<numBitesInGap;k4++){let biteDist=firstBiteDistFromP1+k4*holeAndSpacing,pos=p12.translate(segmentDir.multiply(biteDist));mouseBiteHoles.push({x:pos.x,y:pos.y})}}}let p_prev_=outline[(i3-1+outline.length)%outline.length],p_next_=outline[(i3+2)%outline.length],start_ext=0,end_ext=0;if(p_prev_&&p_next_){let vec_in_p1=vector$1(point4(p_prev_.x,p_prev_.y),p12),p1_cross=vec_in_p1.cross(segmentVec),is_p1_convex=is_ccw?p1_cross>1e-9:p1_cross<-1e-9,vec_out_p2=vector$1(p2,point4(p_next_.x,p_next_.y)),p2_cross=segmentVec.cross(vec_out_p2),is_p2_convex=is_ccw?p2_cross>1e-9:p2_cross<-1e-9;if(is_p1_convex){let angle=vec_in_p1.angleTo(segmentVec);angle>Math.PI&&(angle=2*Math.PI-angle),start_ext=cutoutWidth*Math.tan(angle/2)}else start_ext=0;if(is_p2_convex){let angle=segmentVec.angleTo(vec_out_p2);angle>Math.PI&&(angle=2*Math.PI-angle),end_ext=cutoutWidth*Math.tan(angle/2)}else end_ext=0}let cutoutParts=[{start:0-start_ext,end:gapStartDist},{start:gapEndDist,end:segmentLength+end_ext}],extrusion=normalVec.multiply(cutoutWidth);for(let part of cutoutParts){let partLength=part.end-part.start;if(partLength<1e-6)continue;let center2=p12.translate(segmentDir.multiply(part.start+partLength/2)).translate(extrusion.multiply(.5)),width=partLength,height=cutoutWidth,rotationDeg=segmentDir.slope*180/Math.PI;tabCutouts.push({type:"pcb_cutout",shape:"rect",center:{x:center2.x,y:center2.y},width,height,rotation:rotationDeg,corner_radius:cutoutWidth/2})}}return{tabCutouts,mouseBiteHoles}};function generatePanelTabsAndMouseBites(boards,options){let finalTabCutouts=[],allMouseBites=[],{tabWidth,tabLength,mouseBites:useMouseBites}=options,boardDimensions=[];for(let board of boards)if(board.width&&board.height)boardDimensions.push(Math.min(board.width,board.height));else if(board.outline&&board.outline.length>0){let outlinePolygon=new Polygon$1(board.outline.map(p2=>point4(p2.x,p2.y))),area=Math.abs(outlinePolygon.area());area>0&&boardDimensions.push(Math.sqrt(area))}if(boardDimensions.length>0){let scaleFactor=Math.min(...boardDimensions)/20;tabWidth=Math.min(tabWidth,DEFAULT_TAB_WIDTH*Math.max(scaleFactor,.3)),tabLength=Math.min(tabLength,DEFAULT_TAB_LENGTH*Math.max(scaleFactor,.3))}let processedBoards=boards.map(board=>{if((!board.outline||board.outline.length===0)&&board.width&&board.height){let w22=board.width/2,h2=board.height/2;return{...board,outline:[{x:board.center.x-w22,y:board.center.y-h2},{x:board.center.x+w22,y:board.center.y-h2},{x:board.center.x+w22,y:board.center.y+h2},{x:board.center.x-w22,y:board.center.y+h2}]}}return board});for(let board of processedBoards)if(board.outline&&board.outline.length>0){let mouseBiteDiameter2=tabWidth*.45,mouseBiteSpacing=mouseBiteDiameter2*.1,generated=generateCutoutsAndMousebitesForOutline(board.outline,{gapLength:tabLength,cutoutWidth:tabWidth,mouseBites:useMouseBites,mouseBiteHoleDiameter:mouseBiteDiameter2,mouseBiteHoleSpacing:mouseBiteSpacing});finalTabCutouts.push(...generated.tabCutouts),allMouseBites.push(...generated.mouseBiteHoles)}let tabCutouts=finalTabCutouts.map((tab,index)=>({...tab,pcb_cutout_id:`panel_tab_${index}`})),mouseBiteDiameter=tabWidth*.45,mouseBiteHoles=allMouseBites.map((bite,index)=>({type:"pcb_hole",pcb_hole_id:`panel_mouse_bite_${index}`,hole_shape:"circle",hole_diameter:mouseBiteDiameter,x:bite.x,y:bite.y}));return{tabCutouts,mouseBiteHoles}}var getBoardDimensionsFromProps=board=>{let props=board._parsedProps,width=props.width!=null?distance.parse(props.width):void 0,height=props.height!=null?distance.parse(props.height):void 0;if((width===void 0||height===void 0)&&props.outline?.length){let outlineBounds=getBoundsFromPoints(props.outline);outlineBounds&&(width??(width=outlineBounds.maxX-outlineBounds.minX),height??(height=outlineBounds.maxY-outlineBounds.minY))}if((width===void 0||height===void 0)&&props.circuitJson?.length){let pcbBoardFromJson=props.circuitJson.find(elm=>elm.type==="pcb_board");pcbBoardFromJson&&(width??(width=pcbBoardFromJson.width),height??(height=pcbBoardFromJson.height))}return{width:width??0,height:height??0}},packBoardsIntoGrid=({boards,db:db2,row,col,cellWidth,cellHeight,boardGap})=>{let boardsWithDims=boards.map(board=>{let width,height;if(db2&&board.pcb_board_id){let pcbBoard=db2.pcb_board.get(board.pcb_board_id);pcbBoard?.width!==void 0&&pcbBoard?.height!==void 0&&(width=pcbBoard.width,height=pcbBoard.height)}if(width===void 0||height===void 0){let propsDims=getBoardDimensionsFromProps(board);width=propsDims.width,height=propsDims.height}return width===0&&height===0?null:{board,width,height}}).filter(b3=>b3!==null);if(boardsWithDims.length===0)return{positions:[],gridWidth:0,gridHeight:0};let explicitRow=row,cols=col??Math.ceil(explicitRow?boardsWithDims.length/explicitRow:Math.sqrt(boardsWithDims.length)),rows=explicitRow??Math.ceil(boardsWithDims.length/cols),colWidths=Array(cols).fill(0),rowHeights=Array(rows).fill(0);boardsWithDims.forEach((b3,i3)=>{let colIdx=i3%cols,rowIdx=Math.floor(i3/cols);rowIdx<rowHeights.length&&b3.height>rowHeights[rowIdx]&&(rowHeights[rowIdx]=b3.height),colIdx<colWidths.length&&b3.width>colWidths[colIdx]&&(colWidths[colIdx]=b3.width)});let minCellWidth=cellWidth?distance.parse(cellWidth):0,minCellHeight=cellHeight?distance.parse(cellHeight):0;for(let i3=0;i3<colWidths.length;i3++)colWidths[i3]=Math.max(colWidths[i3],minCellWidth);for(let i3=0;i3<rowHeights.length;i3++)rowHeights[i3]=Math.max(rowHeights[i3],minCellHeight);let totalGridWidth=colWidths.reduce((a2,b3)=>a2+b3,0)+(cols>1?(cols-1)*boardGap:0),totalGridHeight=rowHeights.reduce((a2,b3)=>a2+b3,0)+(rows>1?(rows-1)*boardGap:0),startX=-totalGridWidth/2,rowYOffsets=[-totalGridHeight/2];for(let i3=1;i3<rows;i3++)rowYOffsets.push(rowYOffsets[i3-1]+rowHeights[i3-1]+boardGap);let colXOffsets=[startX];for(let i3=1;i3<cols;i3++)colXOffsets.push(colXOffsets[i3-1]+colWidths[i3-1]+boardGap);let positions=[];return boardsWithDims.forEach((b3,i3)=>{let colIdx=i3%cols,rowIdx=Math.floor(i3/cols);if(rowIdx>=rowYOffsets.length||colIdx>=colXOffsets.length)return;let cellX=colXOffsets[colIdx],cellY=rowYOffsets[rowIdx],currentCellWidth=colWidths[colIdx],currentCellHeight=rowHeights[rowIdx],boardX=cellX+currentCellWidth/2,boardY=cellY+currentCellHeight/2;positions.push({board:b3.board,pos:{x:boardX,y:boardY}})}),{positions,gridWidth:totalGridWidth,gridHeight:totalGridHeight}},Panel=class extends Group6{constructor(){super(...arguments);__publicField(this,"pcb_panel_id",null);__publicField(this,"_tabsAndMouseBitesGenerated",!1);__publicField(this,"_cachedGridWidth",0);__publicField(this,"_cachedGridHeight",0)}get config(){return{componentName:"Panel",zodProps:panelProps}}get isGroup(){return!0}get isSubcircuit(){return!0}add(component){if(component.lowercaseComponentName!=="board")throw new Error("<panel> can only contain <board> elements");super.add(component)}doInitialPanelBoardLayout(){if(this.root?.pcbDisabled)return;let layoutMode=this._parsedProps.layoutMode??"none",childBoardInstances=this.children.filter(c3=>c3 instanceof Board);if(layoutMode!=="none")for(let board of childBoardInstances){let hasPcbX=board._parsedProps.pcbX!==void 0,hasPcbY=board._parsedProps.pcbY!==void 0;if(hasPcbX||hasPcbY){let properties=[];hasPcbX&&properties.push("pcbX"),hasPcbY&&properties.push("pcbY");let propertyNames=properties.join(" and ");this.root.db.source_property_ignored_warning.insert({source_component_id:board.source_component_id,property_name:propertyNames,message:`Board has manual positioning (${propertyNames}) but panel layout mode is "${layoutMode}". Manual positioning will be ignored.`,error_type:"source_property_ignored_warning"})}}if(layoutMode!=="grid")return;let tabWidth=this._parsedProps.tabWidth??DEFAULT_TAB_WIDTH,boardGap=this._parsedProps.boardGap??tabWidth,{positions,gridWidth,gridHeight}=packBoardsIntoGrid({boards:childBoardInstances,row:this._parsedProps.row,col:this._parsedProps.col,cellWidth:this._parsedProps.cellWidth,cellHeight:this._parsedProps.cellHeight,boardGap});this._cachedGridWidth=gridWidth,this._cachedGridHeight=gridHeight;for(let{board,pos}of positions)board._panelPositionOffset=pos}doInitialPanelLayout(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,childBoardInstances=this.children.filter(c3=>c3 instanceof Board);if((this._parsedProps.layoutMode??"none")==="grid"){for(let board of childBoardInstances)!board.pcb_board_id||!board._panelPositionOffset||db2.pcb_board.update(board.pcb_board_id,{position_mode:"relative_to_panel_anchor",display_offset_x:`${board._panelPositionOffset.x}mm`,display_offset_y:`${board._panelPositionOffset.y}mm`});let hasExplicitWidth=this._parsedProps.width!==void 0,hasExplicitHeight=this._parsedProps.height!==void 0,gridWidth=this._cachedGridWidth,gridHeight=this._cachedGridHeight;if(hasExplicitWidth&&hasExplicitHeight)db2.pcb_panel.update(this.pcb_panel_id,{width:distance.parse(this._parsedProps.width),height:distance.parse(this._parsedProps.height)});else if(gridWidth>0||gridHeight>0){let{edgePadding:edgePaddingProp,edgePaddingLeft:edgePaddingLeftProp,edgePaddingRight:edgePaddingRightProp,edgePaddingTop:edgePaddingTopProp,edgePaddingBottom:edgePaddingBottomProp}=this._parsedProps,edgePadding=distance.parse(edgePaddingProp??5),edgePaddingLeft=distance.parse(edgePaddingLeftProp??edgePadding),edgePaddingRight=distance.parse(edgePaddingRightProp??edgePadding),edgePaddingTop=distance.parse(edgePaddingTopProp??edgePadding),edgePaddingBottom=distance.parse(edgePaddingBottomProp??edgePadding);db2.pcb_panel.update(this.pcb_panel_id,{width:hasExplicitWidth?distance.parse(this._parsedProps.width):gridWidth+edgePaddingLeft+edgePaddingRight,height:hasExplicitHeight?distance.parse(this._parsedProps.height):gridHeight+edgePaddingTop+edgePaddingBottom})}}else{let panelGlobalPos=this._getGlobalPcbPositionBeforeLayout();for(let board of childBoardInstances){let boardDb=db2.pcb_board.get(board.pcb_board_id);if(!boardDb)continue;let relativeX=boardDb.center.x-panelGlobalPos.x,relativeY=boardDb.center.y-panelGlobalPos.y;db2.pcb_board.update(board.pcb_board_id,{position_mode:"relative_to_panel_anchor",display_offset_x:`${relativeX}mm`,display_offset_y:`${relativeY}mm`})}}if(this._tabsAndMouseBitesGenerated)return;let props=this._parsedProps;if((props.panelizationMethod??"none")!=="none"){let childBoardIds=childBoardInstances.map(c3=>c3.pcb_board_id).filter(id2=>!!id2),boardsInPanel=db2.pcb_board.list().filter(b3=>childBoardIds.includes(b3.pcb_board_id));if(boardsInPanel.length===0)return;let tabWidth=props.tabWidth??DEFAULT_TAB_WIDTH,boardGap=props.boardGap??tabWidth,{tabCutouts,mouseBiteHoles}=generatePanelTabsAndMouseBites(boardsInPanel,{boardGap,tabWidth,tabLength:props.tabLength??DEFAULT_TAB_LENGTH,mouseBites:props.mouseBites??!0});for(let tabCutout of tabCutouts)db2.pcb_cutout.insert(tabCutout);for(let mouseBiteHole of mouseBiteHoles)db2.pcb_hole.insert(mouseBiteHole)}this._tabsAndMouseBitesGenerated=!0}runRenderCycle(){if(!this.children.some(child=>child.componentName==="Board"))throw new Error("<panel> must contain at least one <board>");super.runRenderCycle()}doInitialPcbComponentRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,props=this._parsedProps,inserted=db2.pcb_panel.insert({width:props.width!==void 0?distance.parse(props.width):0,height:props.height!==void 0?distance.parse(props.height):0,center:this._getGlobalPcbPositionBeforeLayout(),covered_with_solder_mask:!(props.noSolderMask??!1)});this.pcb_panel_id=inserted.pcb_panel_id}updatePcbComponentRender(){if(this.root?.pcbDisabled||!this.pcb_panel_id)return;let{db:db2}=this.root,props=this._parsedProps,currentPanel=db2.pcb_panel.get(this.pcb_panel_id);db2.pcb_panel.update(this.pcb_panel_id,{width:props.width!==void 0?distance.parse(props.width):currentPanel?.width,height:props.height!==void 0?distance.parse(props.height):currentPanel?.height,center:this._getGlobalPcbPositionBeforeLayout(),covered_with_solder_mask:!(props.noSolderMask??!1)})}removePcbComponentRender(){this.pcb_panel_id&&(this.root?.db.pcb_panel.delete(this.pcb_panel_id),this.pcb_panel_id=null)}},Pinout=class extends Chip{constructor(props){super(props)}get config(){return{...super.config,componentName:"Pinout",zodProps:pinoutProps}}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,source_component=db2.source_component.insert({ftype:"simple_pinout",name:this.name,manufacturer_part_number:props.manufacturerPartNumber,supplier_part_numbers:props.supplierPartNumbers,display_name:props.displayName});this.source_component_id=source_component.source_component_id}},Fuse=class extends NormalComponent3{get config(){return{componentName:"fuse",schematicSymbolName:this.props.symbolName??"fuse",zodProps:fuseProps,sourceFtype:FTYPE.simple_fuse}}_getSchematicSymbolDisplayValue(){let rawCurrent=this._parsedProps.currentRating,rawVoltage=this._parsedProps.voltageRating,current2=typeof rawCurrent=="string"?parseFloat(rawCurrent):rawCurrent,voltage2=typeof rawVoltage=="string"?parseFloat(rawVoltage):rawVoltage;return`${formatSiUnit(current2)}A / ${formatSiUnit(voltage2)}V`}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,currentRating=typeof props.currentRating=="string"?parseFloat(props.currentRating):props.currentRating,voltageRating=typeof props.voltageRating=="string"?parseFloat(props.voltageRating):props.voltageRating,source_component=db2.source_component.insert({name:this.name,ftype:FTYPE.simple_fuse,current_rating_amps:currentRating,voltage_rating_volts:voltageRating,display_current_rating:`${formatSiUnit(currentRating)}A`,display_voltage_rating:`${formatSiUnit(voltageRating)}V`,display_name:props.displayName});this.source_component_id=source_component.source_component_id}},Jumper=class extends NormalComponent3{constructor(){super(...arguments);__publicField(this,"schematicDimensions",null)}get config(){return{schematicSymbolName:void 0,componentName:"Jumper",zodProps:jumperProps,shouldRenderAsSchematicBox:!0}}_getSchematicPortArrangement(){let arrangement=super._getSchematicPortArrangement();if(arrangement&&Object.keys(arrangement).length>0)return arrangement;let pinCount=this._parsedProps.pinCount??(Array.isArray(this._parsedProps.pinLabels)?this._parsedProps.pinLabels.length:this._parsedProps.pinLabels?Object.keys(this._parsedProps.pinLabels).length:this.getPortsFromFootprint().length),direction2=this._parsedProps.schDirection??"right";return{leftSize:direction2==="left"?pinCount:0,rightSize:direction2==="right"?pinCount:0}}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,{pcbX,pcbY}=this.getResolvedPcbPositionProp(),source_component=db2.source_component.insert({ftype:"simple_chip",name:this.name,manufacturer_part_number:props.manufacturerPartNumber,supplier_part_numbers:props.supplierPartNumbers,are_pins_interchangeable:!0,display_name:props.displayName});this.source_component_id=source_component.source_component_id}doInitialPcbComponentRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,{pcbX,pcbY}=this.getResolvedPcbPositionProp(),pcb_component2=db2.pcb_component.insert({center:{x:pcbX,y:pcbY},width:2,height:3,layer:props.layer??"top",rotation:props.pcbRotation??0,source_component_id:this.source_component_id,subcircuit_id:this.getSubcircuit().subcircuit_id??void 0,do_not_place:props.doNotPlace??!1,obstructs_within_bounds:props.obstructsWithinBounds??!0});this.pcb_component_id=pcb_component2.pcb_component_id}doInitialPcbTraceRender(){let{db:db2}=this.root,pcb_ports=db2.pcb_port.list({pcb_component_id:this.pcb_component_id}),pinLabelToPortId={};for(let i3=0;i3<pcb_ports.length;i3++){let port=pcb_ports[i3],sourcePort=db2.source_port.get(port.source_port_id),pinLabel="";if(typeof sourcePort?.pin_number=="number")pinLabel=sourcePort.pin_number.toString();else if(Array.isArray(sourcePort?.port_hints)){let matchedHint=sourcePort.port_hints.find(h2=>/^(pin)?\d+$/.test(h2));matchedHint&&(/^pin\d+$/.test(matchedHint)?pinLabel=matchedHint.replace(/^pin/,""):pinLabel=matchedHint)}pinLabelToPortId[pinLabel]=port.pcb_port_id}let traces=db2.pcb_trace.list({pcb_component_id:this.pcb_component_id}),updatePortId=portId=>{if(portId&&typeof portId=="string"&&portId.startsWith("{PIN")){let pin=portId.replace("{PIN","").replace("}","");return pinLabelToPortId[pin]||portId}return portId};for(let trace of traces)if(trace.route)for(let segment2 of trace.route)segment2.route_type==="wire"&&(segment2.start_pcb_port_id=updatePortId(segment2.start_pcb_port_id),segment2.end_pcb_port_id=updatePortId(segment2.end_pcb_port_id))}},INTERCONNECT_STANDARD_FOOTPRINTS={"0402":"0402","0603":"0603","0805":"0805",1206:"1206"},Interconnect=class extends NormalComponent3{get config(){return{componentName:"Interconnect",zodProps:interconnectProps,shouldRenderAsSchematicBox:!0,sourceFtype:"interconnect"}}get defaultInternallyConnectedPinNames(){let{standard}=this._parsedProps;return standard&&INTERCONNECT_STANDARD_FOOTPRINTS[standard]?[["pin1","pin2"]]:[]}_getImpliedFootprintString(){let{standard}=this._parsedProps;return standard?INTERCONNECT_STANDARD_FOOTPRINTS[standard]??null:null}doInitialSourceRender(){let{db:db2}=this.root,source_component=db2.source_component.insert({ftype:"interconnect",name:this.name,are_pins_interchangeable:!0,display_name:this._parsedProps.displayName});this.source_component_id=source_component.source_component_id}doInitialSourceParentAttachment(){let{db:db2}=this.root,internallyConnectedPorts=this._getInternallyConnectedPins();for(let ports of internallyConnectedPorts){let sourcePortIds=ports.map(port=>port.source_port_id).filter(id2=>id2!==null);sourcePortIds.length>=2&&db2.source_component_internal_connection.insert({source_component_id:this.source_component_id,subcircuit_id:this.getSubcircuit()?.subcircuit_id,source_port_ids:sourcePortIds})}}},SolderJumper=class extends NormalComponent3{constructor(){super(...arguments);__publicField(this,"schematicDimensions",null)}_getPinNumberFromBridgedPinName(pinName){return this.selectOne(`port.${pinName}`,{type:"port"})?._parsedProps.pinNumber??null}get defaultInternallyConnectedPinNames(){if(this._parsedProps.bridged){let pins=this.children.filter(c3=>c3.componentName==="Port").map(p2=>p2.name);return pins.length>0?[pins]:[]}return this._parsedProps.bridgedPins??[]}get config(){let props=this._parsedProps??this.props,resolvedPinCount=props.pinCount;if(props.pinCount==null&&!props.footprint&&(resolvedPinCount=2),props.pinCount==null){let nums=(props.bridgedPins??[]).flat().map(p_str=>this._getPinNumberFromBridgedPinName(p_str)).filter(n3=>n3!==null),maxPinFromBridged=nums.length>0?Math.max(...nums):0,pinCountFromLabels=props.pinLabels?Object.keys(props.pinLabels).length:0,finalPinCount=Math.max(maxPinFromBridged,pinCountFromLabels);(finalPinCount===2||finalPinCount===3)&&(resolvedPinCount=finalPinCount),resolvedPinCount==null&&props.footprint&&[2,3].includes(this.getPortsFromFootprint().length)&&(resolvedPinCount=this.getPortsFromFootprint().length)}let symbolName="";resolvedPinCount?symbolName+=`solderjumper${resolvedPinCount}`:symbolName="solderjumper";let bridgedPinNumbers=[];return Array.isArray(props.bridgedPins)&&props.bridgedPins.length>0?bridgedPinNumbers=Array.from(new Set(props.bridgedPins.flat().map(pinName=>this._getPinNumberFromBridgedPinName(pinName)).filter(n3=>n3!==null))).sort((a2,b3)=>a2-b3):props.bridged&&resolvedPinCount&&(bridgedPinNumbers=Array.from({length:resolvedPinCount},(_4,i3)=>i3+1)),bridgedPinNumbers.length>0&&(symbolName+=`_bridged${bridgedPinNumbers.join("")}`),{schematicSymbolName:props.symbolName??symbolName,componentName:"SolderJumper",zodProps:solderjumperProps,shouldRenderAsSchematicBox:!0}}_getSchematicPortArrangement(){let arrangement=super._getSchematicPortArrangement();if(arrangement&&Object.keys(arrangement).length>0)return arrangement;let pinCount=this._parsedProps.pinCount??(Array.isArray(this._parsedProps.pinLabels)?this._parsedProps.pinLabels.length:this._parsedProps.pinLabels?Object.keys(this._parsedProps.pinLabels).length:this.getPortsFromFootprint().length);pinCount==null&&!this._parsedProps.footprint&&(pinCount=2);let direction2=this._parsedProps.schDirection??"right";return{leftSize:direction2==="left"?pinCount:0,rightSize:direction2==="right"?pinCount:0}}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,{pcbX,pcbY}=this.getResolvedPcbPositionProp(),source_component=db2.source_component.insert({ftype:"simple_chip",name:this.name,manufacturer_part_number:props.manufacturerPartNumber,supplier_part_numbers:props.supplierPartNumbers,are_pins_interchangeable:!0,display_name:props.displayName});this.source_component_id=source_component.source_component_id}doInitialPcbComponentRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,{pcbX,pcbY}=this.getResolvedPcbPositionProp(),pcb_component2=db2.pcb_component.insert({center:{x:pcbX,y:pcbY},width:2,height:3,layer:props.layer??"top",rotation:props.pcbRotation??0,source_component_id:this.source_component_id,subcircuit_id:this.getSubcircuit().subcircuit_id??void 0,do_not_place:props.doNotPlace??!1,obstructs_within_bounds:props.obstructsWithinBounds??!0});this.pcb_component_id=pcb_component2.pcb_component_id}doInitialPcbTraceRender(){let{db:db2}=this.root,pcb_ports=db2.pcb_port.list({pcb_component_id:this.pcb_component_id}),pinLabelToPortId={};for(let i3=0;i3<pcb_ports.length;i3++){let port=pcb_ports[i3],sourcePort=db2.source_port.get(port.source_port_id),pinLabel="";if(typeof sourcePort?.pin_number=="number")pinLabel=sourcePort.pin_number.toString();else if(Array.isArray(sourcePort?.port_hints)){let matchedHint=sourcePort.port_hints.find(h2=>/^(pin)?\d+$/.test(h2));matchedHint&&(/^pin\d+$/.test(matchedHint)?pinLabel=matchedHint.replace(/^pin/,""):pinLabel=matchedHint)}pinLabelToPortId[pinLabel]=port.pcb_port_id}let traces=db2.pcb_trace.list({pcb_component_id:this.pcb_component_id}),updatePortId=portId=>{if(portId&&typeof portId=="string"&&portId.startsWith("{PIN")){let pin=portId.replace("{PIN","").replace("}","");return pinLabelToPortId[pin]||portId}return portId};for(let trace of traces)if(trace.route)for(let segment2 of trace.route)segment2.route_type==="wire"&&(segment2.start_pcb_port_id=updatePortId(segment2.start_pcb_port_id),segment2.end_pcb_port_id=updatePortId(segment2.end_pcb_port_id))}},Led=class extends NormalComponent3{constructor(){super(...arguments);__publicField(this,"pos",this.portMap.pin1);__publicField(this,"anode",this.portMap.pin1);__publicField(this,"neg",this.portMap.pin2);__publicField(this,"cathode",this.portMap.pin2)}get config(){let symbolMap={laser:"laser_diode"},variantSymbol=this.props.laser?"laser":null;return{schematicSymbolName:variantSymbol?symbolMap[variantSymbol]:this.props.symbolName??"led",componentName:"Led",zodProps:ledProps,sourceFtype:"simple_led"}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}_getSchematicSymbolDisplayValue(){return this._parsedProps.schDisplayValue||this._parsedProps.color||void 0}getFootprinterString(){let baseFootprint=super.getFootprinterString();return baseFootprint&&this.props.color?`${baseFootprint}_color(${this.props.color})`:baseFootprint}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,source_component=db2.source_component.insert({ftype:"simple_led",name:this.name,wave_length:props.wavelength,color:props.color,symbol_display_value:this._getSchematicSymbolDisplayValue(),manufacturer_part_number:props.manufacturerPartNumber??props.mfn,supplier_part_numbers:props.supplierPartNumbers,are_pins_interchangeable:!1,display_name:props.displayName});this.source_component_id=source_component.source_component_id}},PowerSource=class extends NormalComponent3{constructor(){super(...arguments);__publicField(this,"pos",this.portMap.pin1);__publicField(this,"positive",this.portMap.pin1);__publicField(this,"neg",this.portMap.pin2);__publicField(this,"negative",this.portMap.pin2)}get config(){return{schematicSymbolName:this.props.symbolName??"power_factor_meter_horz",componentName:"PowerSource",zodProps:powerSourceProps,sourceFtype:"simple_power_source"}}initPorts(){this.add(new Port({name:"pin1",pinNumber:1,aliases:["positive","pos"]})),this.add(new Port({name:"pin2",pinNumber:2,aliases:["negative","neg"]}))}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,source_component=db2.source_component.insert({ftype:"simple_power_source",name:this.name,voltage:props.voltage,supplier_part_numbers:props.supplierPartNumbers,are_pins_interchangeable:!1,display_name:props.displayName});this.source_component_id=source_component.source_component_id}},VoltageSource=class extends NormalComponent3{constructor(){super(...arguments);__publicField(this,"terminal1",this.portMap.terminal1);__publicField(this,"terminal2",this.portMap.terminal2)}get config(){return{componentName:"VoltageSource",schematicSymbolName:this.props.waveShape==="square"?"square_wave":"ac_voltmeter",zodProps:voltageSourceProps,sourceFtype:"simple_voltage_source"}}runRenderPhaseForChildren(phase){if(!phase.startsWith("Pcb"))for(let child of this.children)child.runRenderPhaseForChildren(phase),child.runRenderPhase(phase)}doInitialPcbComponentRender(){}initPorts(){super.initPorts({additionalAliases:{pin1:["terminal1"],pin2:["terminal2"]}})}_getSchematicSymbolDisplayValue(){let{voltage:voltage2,frequency:frequency2}=this._parsedProps,parts=[];return voltage2!==void 0&&parts.push(`${formatSiUnit(voltage2)}V`),frequency2!==void 0&&parts.push(`${formatSiUnit(frequency2)}Hz`),parts.length>0?parts.join(" "):void 0}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,source_component=db2.source_component.insert({ftype:"simple_voltage_source",name:this.name,voltage:props.voltage,frequency:props.frequency,peak_to_peak_voltage:props.peakToPeakVoltage,wave_shape:props.waveShape,phase:props.phase,duty_cycle:props.dutyCycle,supplier_part_numbers:props.supplierPartNumbers,are_pins_interchangeable:!0,display_name:props.displayName});this.source_component_id=source_component.source_component_id}doInitialSimulationRender(){let{db:db2}=this.root,{_parsedProps:props}=this,terminal1Port=this.portMap.terminal1,terminal2Port=this.portMap.terminal2;db2.simulation_voltage_source.insert({type:"simulation_voltage_source",is_dc_source:!1,terminal1_source_port_id:terminal1Port.source_port_id,terminal2_source_port_id:terminal2Port.source_port_id,voltage:props.voltage,frequency:props.frequency,peak_to_peak_voltage:props.peakToPeakVoltage,wave_shape:props.waveShape,phase:props.phase,duty_cycle:props.dutyCycle})}},CurrentSource=class extends NormalComponent3{constructor(){super(...arguments);__publicField(this,"pos",this.portMap.pos);__publicField(this,"neg",this.portMap.neg)}get config(){return{componentName:"CurrentSource",schematicSymbolName:"current_source",zodProps:currentSourceProps,sourceFtype:"simple_current_source"}}runRenderPhaseForChildren(phase){if(!phase.startsWith("Pcb"))for(let child of this.children)child.runRenderPhaseForChildren(phase),child.runRenderPhase(phase)}doInitialPcbComponentRender(){}initPorts(){super.initPorts({additionalAliases:{pin1:["pos"],pin2:["neg"]}})}_getSchematicSymbolDisplayValue(){let{current:current2,frequency:frequency2,peakToPeakCurrent}=this._parsedProps,parts=[];return current2!==void 0&&parts.push(`${formatSiUnit(current2)}A`),peakToPeakCurrent!==void 0&&parts.push(`${formatSiUnit(peakToPeakCurrent)}A p-p`),frequency2!==void 0&&parts.push(`${formatSiUnit(frequency2)}Hz`),parts.length>0?parts.join(" "):void 0}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,source_component=db2.source_component.insert({ftype:"simple_current_source",name:this.name,current:props.current,frequency:props.frequency,peak_to_peak_current:props.peakToPeakCurrent,wave_shape:props.waveShape,phase:props.phase,duty_cycle:props.dutyCycle,supplier_part_numbers:props.supplierPartNumbers,are_pins_interchangeable:!0,display_name:props.displayName});this.source_component_id=source_component.source_component_id}doInitialSimulationRender(){let{db:db2}=this.root,{_parsedProps:props}=this,isAc=props.frequency!==void 0||props.peakToPeakCurrent!==void 0||props.waveShape!==void 0,posPort=this.portMap.pos,negPort=this.portMap.neg;if(isAc)db2.simulation_current_source.insert({type:"simulation_current_source",is_dc_source:!1,terminal1_source_port_id:posPort.source_port_id,terminal2_source_port_id:negPort.source_port_id,current:props.current,frequency:props.frequency,peak_to_peak_current:props.peakToPeakCurrent,wave_shape:props.waveShape,phase:props.phase,duty_cycle:props.dutyCycle});else{if(props.current===void 0)return;db2.simulation_current_source.insert({type:"simulation_current_source",is_dc_source:!0,positive_source_port_id:posPort.source_port_id,negative_source_port_id:negPort.source_port_id,current:props.current})}}},edgeSpecifiers=["leftedge","rightedge","topedge","bottomedge","center"],Constraint3=class extends PrimitiveComponent2{get config(){return{componentName:"Constraint",zodProps:constraintProps}}constructor(props){if(super(props),("xdist"in props||"ydist"in props)&&!("edgeToEdge"in props)&&!("centerToCenter"in props))throw new Error(`edgeToEdge, centerToCenter must be set for xDist or yDist for ${this}`);if("for"in props&&props.for.length<2)throw new Error(`"for" must have at least two selectors for ${this}`)}_getAllReferencedComponents(){let componentsWithSelectors=[],container=this.getPrimitiveContainer();function addComponentFromSelector(selector){let maybeEdge=selector.split(" ").pop(),edge=edgeSpecifiers.includes(maybeEdge)?maybeEdge:void 0,componentSelector=edge?selector.replace(` ${edge}`,""):selector,component=container.selectOne(componentSelector,{pcbPrimitive:!0});component&&componentsWithSelectors.push({selector,component,componentSelector,edge})}for(let key of["left","right","top","bottom"])key in this._parsedProps&&addComponentFromSelector(this._parsedProps[key]);if("for"in this._parsedProps)for(let selector of this._parsedProps.for)addComponentFromSelector(selector);return{componentsWithSelectors}}},FabricationNoteRect=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"fabrication_note_rect_id",null);__publicField(this,"isPcbPrimitive",!0)}get config(){return{componentName:"FabricationNoteRect",zodProps:fabricationNoteRectProps}}doInitialPcbPrimitiveRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,position2=this._getGlobalPcbPositionBeforeLayout(),{maybeFlipLayer}=this._getPcbPrimitiveFlippedHelpers(),layer=maybeFlipLayer(props.layer??"top");if(layer!=="top"&&layer!=="bottom")throw new Error(`Invalid layer "${layer}" for FabricationNoteRect. Must be "top" or "bottom".`);let pcb_component_id=this.parent?.pcb_component_id??this.getPrimitiveContainer()?.pcb_component_id,subcircuit=this.getSubcircuit(),hasStroke=props.hasStroke??(props.strokeWidth!==void 0&&props.strokeWidth!==null),fabrication_note_rect=db2.pcb_fabrication_note_rect.insert({pcb_component_id,layer,color:props.color,center:{x:position2.x,y:position2.y},width:props.width,height:props.height,stroke_width:props.strokeWidth??1,is_filled:props.isFilled??!1,has_stroke:hasStroke,is_stroke_dashed:props.isStrokeDashed??!1,subcircuit_id:subcircuit?.subcircuit_id??void 0,pcb_group_id:this.getGroup()?.pcb_group_id??void 0,corner_radius:props.cornerRadius??void 0});this.fabrication_note_rect_id=fabrication_note_rect.pcb_fabrication_note_rect_id}getPcbSize(){let{_parsedProps:props}=this;return{width:props.width,height:props.height}}_moveCircuitJsonElements({deltaX,deltaY}){if(this.root?.pcbDisabled)return;let{db:db2}=this.root;if(!this.fabrication_note_rect_id)return;let rect=db2.pcb_fabrication_note_rect.get(this.fabrication_note_rect_id);rect&&db2.pcb_fabrication_note_rect.update(this.fabrication_note_rect_id,{center:{x:rect.center.x+deltaX,y:rect.center.y+deltaY}})}},FabricationNotePath=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"fabrication_note_path_id",null);__publicField(this,"isPcbPrimitive",!0)}get config(){return{componentName:"FabricationNotePath",zodProps:fabricationNotePathProps}}doInitialPcbPrimitiveRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,subcircuit=this.getSubcircuit(),{_parsedProps:props}=this,layer=props.layer??"top";if(layer!=="top"&&layer!=="bottom")throw new Error(`Invalid layer "${layer}" for SilkscreenPath. Must be "top" or "bottom".`);let transform5=this._computePcbGlobalTransformBeforeLayout(),pcb_component_id=this.parent?.pcb_component_id??this.getPrimitiveContainer()?.pcb_component_id,fabrication_note_path=db2.pcb_fabrication_note_path.insert({pcb_component_id,layer,color:props.color,route:props.route.map(p2=>{let transformedPosition=applyToPoint(transform5,{x:p2.x,y:p2.y});return{...p2,x:transformedPosition.x,y:transformedPosition.y}}),stroke_width:props.strokeWidth??.1,subcircuit_id:subcircuit?.subcircuit_id??void 0});this.fabrication_note_path_id=fabrication_note_path.pcb_fabrication_note_path_id}getPcbSize(){let{_parsedProps:props}=this;if(props.route.length===0)return{width:0,height:0};let xs3=props.route.map(point6=>typeof point6.x=="string"?parseFloat(point6.x):point6.x),ys3=props.route.map(point6=>typeof point6.y=="string"?parseFloat(point6.y):point6.y),minX=Math.min(...xs3),maxX=Math.max(...xs3),minY=Math.min(...ys3),maxY=Math.max(...ys3);return{width:maxX-minX,height:maxY-minY}}_moveCircuitJsonElements({deltaX,deltaY}){if(this.root?.pcbDisabled)return;let{db:db2}=this.root;if(!this.fabrication_note_path_id)return;let path=db2.pcb_fabrication_note_path.get(this.fabrication_note_path_id);path&&db2.pcb_fabrication_note_path.update(this.fabrication_note_path_id,{route:path.route.map(p2=>({...p2,x:p2.x+deltaX,y:p2.y+deltaY}))})}},FabricationNoteText=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"pcb_fabrication_note_text_id",null);__publicField(this,"isPcbPrimitive",!0)}get config(){return{componentName:"FabricationNoteText",zodProps:fabricationNoteTextProps}}doInitialPcbPrimitiveRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,position2=this._getGlobalPcbPositionBeforeLayout(),container=this.getPrimitiveContainer(),subcircuit=this.getSubcircuit(),pcb_fabrication_note_text2=db2.pcb_fabrication_note_text.insert({anchor_alignment:props.anchorAlignment,anchor_position:{x:position2.x,y:position2.y},font:props.font??"tscircuit2024",font_size:props.fontSize??1,layer:"top",color:props.color,text:normalizeTextForCircuitJson(props.text??""),pcb_component_id:container.pcb_component_id,subcircuit_id:subcircuit?.subcircuit_id??void 0,pcb_group_id:this.getGroup()?.pcb_group_id??void 0});this.pcb_fabrication_note_text_id=pcb_fabrication_note_text2.pcb_fabrication_note_text_id}getPcbSize(){let{_parsedProps:props}=this,fontSize=typeof props.fontSize=="string"?parseFloat(props.fontSize):props.fontSize??1,charWidth=fontSize*.6;return{width:(props.text??"").length*charWidth,height:fontSize}}_moveCircuitJsonElements({deltaX,deltaY}){if(this.root?.pcbDisabled)return;let{db:db2}=this.root;if(this.pcb_fabrication_note_text_id){let text=db2.pcb_fabrication_note_text.get(this.pcb_fabrication_note_text_id);text&&db2.pcb_fabrication_note_text.update(this.pcb_fabrication_note_text_id,{anchor_position:{x:text.anchor_position.x+deltaX,y:text.anchor_position.y+deltaY}})}}},FabricationNoteDimension=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"fabrication_note_dimension_id",null);__publicField(this,"isPcbPrimitive",!0)}get config(){return{componentName:"FabricationNoteDimension",zodProps:fabricationNoteDimensionProps}}_resolvePoint(input2,transform5){if(typeof input2=="string"){let target=this.getSubcircuit().selectOne(input2);return target?target._getGlobalPcbPositionBeforeLayout():(this.renderError(`FabricationNoteDimension could not find selector "${input2}"`),applyToPoint(transform5,{x:0,y:0}))}let numericX=typeof input2.x=="string"?parseFloat(input2.x):input2.x,numericY=typeof input2.y=="string"?parseFloat(input2.y):input2.y;return applyToPoint(transform5,{x:numericX,y:numericY})}doInitialPcbPrimitiveRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,transform5=this._computePcbGlobalTransformBeforeLayout(),from=this._resolvePoint(props.from,transform5),to3=this._resolvePoint(props.to,transform5),subcircuit=this.getSubcircuit(),group=this.getGroup(),{maybeFlipLayer}=this._getPcbPrimitiveFlippedHelpers(),layer=maybeFlipLayer(props.layer??"top");if(layer!=="top"&&layer!=="bottom")throw new Error(`Invalid layer "${layer}" for FabricationNoteDimension. Must be "top" or "bottom".`);let pcb_component_id=this.parent?.pcb_component_id??this.getPrimitiveContainer()?.pcb_component_id,text=props.text??this._formatDistanceText({from,to:to3,units:props.units??"mm"}),fabrication_note_dimension=db2.pcb_fabrication_note_dimension.insert({pcb_component_id,subcircuit_id:subcircuit?.subcircuit_id??void 0,pcb_group_id:group?.pcb_group_id??void 0,layer,from,to:to3,text,offset:props.offset,font:props.font??"tscircuit2024",font_size:props.fontSize??1,color:props.color,arrow_size:props.arrowSize??1});this.fabrication_note_dimension_id=fabrication_note_dimension.pcb_fabrication_note_dimension_id}_moveCircuitJsonElements({deltaX,deltaY}){if(this.root?.pcbDisabled)return;let{db:db2}=this.root;if(!this.fabrication_note_dimension_id)return;let dimension=db2.pcb_fabrication_note_dimension.get(this.fabrication_note_dimension_id);dimension&&db2.pcb_fabrication_note_dimension.update(this.fabrication_note_dimension_id,{from:{x:dimension.from.x+deltaX,y:dimension.from.y+deltaY},to:{x:dimension.to.x+deltaX,y:dimension.to.y+deltaY}})}getPcbSize(){let transform5=this._computePcbGlobalTransformBeforeLayout(),from=this._resolvePoint(this._parsedProps.from,transform5),to3=this._resolvePoint(this._parsedProps.to,transform5);return{width:Math.abs(to3.x-from.x),height:Math.abs(to3.y-from.y)}}_formatDistanceText({from,to:to3,units}){let dx2=to3.x-from.x,dy2=to3.y-from.y,distanceInMillimeters=Math.sqrt(dx2*dx2+dy2*dy2),distanceInUnits=units==="in"?distanceInMillimeters/25.4:distanceInMillimeters,roundedDistance=Math.round(distanceInUnits);if(Math.abs(distanceInUnits-roundedDistance)<1e-9)return`${roundedDistance}${units}`;let decimalPlaces=units==="in"?3:2;return`${units==="in"?Number(distanceInUnits.toFixed(decimalPlaces)).toString():distanceInUnits.toFixed(decimalPlaces)}${units}`}},PcbNoteLine=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"pcb_note_line_id",null);__publicField(this,"isPcbPrimitive",!0)}get config(){return{componentName:"PcbNoteLine",zodProps:pcbNoteLineProps}}doInitialPcbPrimitiveRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,subcircuit=this.getSubcircuit(),group=this.getGroup(),transform5=this._computePcbGlobalTransformBeforeLayout(),start=applyToPoint(transform5,{x:props.x1,y:props.y1}),end=applyToPoint(transform5,{x:props.x2,y:props.y2}),pcb_component_id=this.parent?.pcb_component_id??this.getPrimitiveContainer()?.pcb_component_id??void 0,pcb_note_line2=db2.pcb_note_line.insert({pcb_component_id,subcircuit_id:subcircuit?.subcircuit_id??void 0,pcb_group_id:group?.pcb_group_id??void 0,x1:start.x,y1:start.y,x2:end.x,y2:end.y,stroke_width:props.strokeWidth??.1,color:props.color,is_dashed:props.isDashed});this.pcb_note_line_id=pcb_note_line2.pcb_note_line_id}getPcbSize(){let{_parsedProps:props}=this;return{width:Math.abs(props.x2-props.x1),height:Math.abs(props.y2-props.y1)}}_moveCircuitJsonElements({deltaX,deltaY}){if(this.root?.pcbDisabled)return;let{db:db2}=this.root;if(!this.pcb_note_line_id)return;let line2=db2.pcb_note_line.get(this.pcb_note_line_id);line2&&db2.pcb_note_line.update(this.pcb_note_line_id,{x1:line2.x1+deltaX,y1:line2.y1+deltaY,x2:line2.x2+deltaX,y2:line2.y2+deltaY})}},PcbNoteRect=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"pcb_note_rect_id",null);__publicField(this,"isPcbPrimitive",!0)}get config(){return{componentName:"PcbNoteRect",zodProps:pcbNoteRectProps}}doInitialPcbPrimitiveRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,transform5=this._computePcbGlobalTransformBeforeLayout(),center2=applyToPoint(transform5,{x:0,y:0}),subcircuit=this.getSubcircuit(),group=this.getGroup(),pcb_component_id=this.parent?.pcb_component_id??this.getPrimitiveContainer()?.pcb_component_id??void 0,pcb_note_rect2=db2.pcb_note_rect.insert({pcb_component_id,subcircuit_id:subcircuit?.subcircuit_id??void 0,pcb_group_id:group?.pcb_group_id??void 0,center:center2,width:props.width,height:props.height,stroke_width:props.strokeWidth??.1,is_filled:props.isFilled??!1,has_stroke:props.hasStroke??!0,is_stroke_dashed:props.isStrokeDashed??!1,color:props.color,corner_radius:props.cornerRadius??void 0});this.pcb_note_rect_id=pcb_note_rect2.pcb_note_rect_id}getPcbSize(){let{_parsedProps:props}=this,width=typeof props.width=="string"?parseFloat(props.width):props.width,height=typeof props.height=="string"?parseFloat(props.height):props.height;return{width,height}}_moveCircuitJsonElements({deltaX,deltaY}){if(this.root?.pcbDisabled)return;let{db:db2}=this.root;if(!this.pcb_note_rect_id)return;let rect=db2.pcb_note_rect.get(this.pcb_note_rect_id);rect&&db2.pcb_note_rect.update(this.pcb_note_rect_id,{center:{x:rect.center.x+deltaX,y:rect.center.y+deltaY}})}},PcbNoteText=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"pcb_note_text_id",null);__publicField(this,"isPcbPrimitive",!0)}get config(){return{componentName:"PcbNoteText",zodProps:pcbNoteTextProps}}doInitialPcbPrimitiveRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,transform5=this._computePcbGlobalTransformBeforeLayout(),anchorPosition=applyToPoint(transform5,{x:0,y:0}),subcircuit=this.getSubcircuit(),group=this.getGroup(),pcb_component_id=this.parent?.pcb_component_id??this.getPrimitiveContainer()?.pcb_component_id??void 0,pcb_note_text2=db2.pcb_note_text.insert({pcb_component_id,subcircuit_id:subcircuit?.subcircuit_id??void 0,pcb_group_id:group?.pcb_group_id??void 0,font:props.font??"tscircuit2024",font_size:props.fontSize??1,text:normalizeTextForCircuitJson(props.text),anchor_position:anchorPosition,anchor_alignment:props.anchorAlignment??"center",color:props.color});this.pcb_note_text_id=pcb_note_text2.pcb_note_text_id}getPcbSize(){let{_parsedProps:props}=this,fontSize=typeof props.fontSize=="string"?parseFloat(props.fontSize):props.fontSize??1,charWidth=fontSize*.6;return{width:props.text.length*charWidth,height:fontSize}}_moveCircuitJsonElements({deltaX,deltaY}){if(this.root?.pcbDisabled)return;let{db:db2}=this.root;if(!this.pcb_note_text_id)return;let text=db2.pcb_note_text.get(this.pcb_note_text_id);text&&db2.pcb_note_text.update(this.pcb_note_text_id,{anchor_position:{x:text.anchor_position.x+deltaX,y:text.anchor_position.y+deltaY}})}},PcbNotePath=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"pcb_note_path_id",null);__publicField(this,"isPcbPrimitive",!0)}get config(){return{componentName:"PcbNotePath",zodProps:pcbNotePathProps}}doInitialPcbPrimitiveRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,transform5=this._computePcbGlobalTransformBeforeLayout(),subcircuit=this.getSubcircuit(),group=this.getGroup(),pcb_component_id=this.parent?.pcb_component_id??this.getPrimitiveContainer()?.pcb_component_id??void 0,transformedRoute=props.route.map(point6=>{let{x:x3,y:y3,...rest}=point6,numericX=typeof x3=="string"?parseFloat(x3):x3,numericY=typeof y3=="string"?parseFloat(y3):y3,transformed=applyToPoint(transform5,{x:numericX,y:numericY});return{...rest,x:transformed.x,y:transformed.y}}),pcb_note_path2=db2.pcb_note_path.insert({pcb_component_id,subcircuit_id:subcircuit?.subcircuit_id??void 0,pcb_group_id:group?.pcb_group_id??void 0,route:transformedRoute,stroke_width:props.strokeWidth??.1,color:props.color});this.pcb_note_path_id=pcb_note_path2.pcb_note_path_id}getPcbSize(){let{_parsedProps:props}=this;if(props.route.length===0)return{width:0,height:0};let xs3=props.route.map(point6=>typeof point6.x=="string"?parseFloat(point6.x):point6.x),ys3=props.route.map(point6=>typeof point6.y=="string"?parseFloat(point6.y):point6.y),minX=Math.min(...xs3),maxX=Math.max(...xs3),minY=Math.min(...ys3),maxY=Math.max(...ys3);return{width:maxX-minX,height:maxY-minY}}_moveCircuitJsonElements({deltaX,deltaY}){if(this.root?.pcbDisabled)return;let{db:db2}=this.root;if(!this.pcb_note_path_id)return;let path=db2.pcb_note_path.get(this.pcb_note_path_id);path&&db2.pcb_note_path.update(this.pcb_note_path_id,{route:path.route.map(p2=>({...p2,x:p2.x+deltaX,y:p2.y+deltaY}))})}},PcbNoteDimension=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"pcb_note_dimension_id",null);__publicField(this,"isPcbPrimitive",!0)}get config(){return{componentName:"PcbNoteDimension",zodProps:pcbNoteDimensionProps}}_resolvePoint(input2,transform5){if(typeof input2=="string"){let target=this.getSubcircuit().selectOne(`.${input2}`);return target?target._getGlobalPcbPositionBeforeLayout():(this.renderError(`PcbNoteDimension could not find selector "${input2}"`),applyToPoint(transform5,{x:0,y:0}))}let numericX=typeof input2.x=="string"?parseFloat(input2.x):input2.x,numericY=typeof input2.y=="string"?parseFloat(input2.y):input2.y;return applyToPoint(transform5,{x:numericX,y:numericY})}doInitialPcbPrimitiveRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,transform5=this._computePcbGlobalTransformBeforeLayout(),from=this._resolvePoint(props.from,transform5),to3=this._resolvePoint(props.to,transform5),subcircuit=this.getSubcircuit(),group=this.getGroup(),pcb_component_id=this.parent?.pcb_component_id??this.getPrimitiveContainer()?.pcb_component_id??void 0,text=props.text??this._formatDistanceText({from,to:to3,units:props.units??"mm"}),pcb_note_dimension2=db2.pcb_note_dimension.insert({pcb_component_id,subcircuit_id:subcircuit?.subcircuit_id??void 0,pcb_group_id:group?.pcb_group_id??void 0,from,to:to3,text,font:props.font??"tscircuit2024",font_size:props.fontSize??1,color:props.color,arrow_size:props.arrowSize??1});this.pcb_note_dimension_id=pcb_note_dimension2.pcb_note_dimension_id}getPcbSize(){let transform5=this._computePcbGlobalTransformBeforeLayout(),from=this._resolvePoint(this._parsedProps.from,transform5),to3=this._resolvePoint(this._parsedProps.to,transform5);return{width:Math.abs(to3.x-from.x),height:Math.abs(to3.y-from.y)}}_formatDistanceText({from,to:to3,units}){let dx2=to3.x-from.x,dy2=to3.y-from.y,distanceInMillimeters=Math.sqrt(dx2*dx2+dy2*dy2),distanceInUnits=units==="in"?distanceInMillimeters/25.4:distanceInMillimeters,roundedDistance=Math.round(distanceInUnits);if(Math.abs(distanceInUnits-roundedDistance)<1e-9)return`${roundedDistance}${units}`;let decimalPlaces=units==="in"?3:2;return`${units==="in"?Number(distanceInUnits.toFixed(decimalPlaces)).toString():distanceInUnits.toFixed(decimalPlaces)}${units}`}_moveCircuitJsonElements({deltaX,deltaY}){if(this.root?.pcbDisabled)return;let{db:db2}=this.root;if(!this.pcb_note_dimension_id)return;let dimension=db2.pcb_note_dimension.get(this.pcb_note_dimension_id);dimension&&db2.pcb_note_dimension.update(this.pcb_note_dimension_id,{from:{x:dimension.from.x+deltaX,y:dimension.from.y+deltaY},to:{x:dimension.to.x+deltaX,y:dimension.to.y+deltaY}})}},Subcircuit=class extends Group6{constructor(props){super({...props,subcircuit:!0})}doInitialInflateSubcircuitCircuitJson(){let{circuitJson,children}=this._parsedProps;inflateCircuitJson(this,circuitJson,children)}},Breakout=class extends Group6{constructor(props){super({...props,subcircuit:!0})}doInitialPcbPrimitiveRender(){if(super.doInitialPcbPrimitiveRender(),this.root?.pcbDisabled)return;let{db:db2}=this.root,props=this._parsedProps;if(!this.pcb_group_id)return;let pcb_group2=db2.pcb_group.get(this.pcb_group_id),padLeft=props.paddingLeft??props.padding??0,padRight=props.paddingRight??props.padding??0,padTop=props.paddingTop??props.padding??0,padBottom=props.paddingBottom??props.padding??0;db2.pcb_group.update(this.pcb_group_id,{width:(pcb_group2.width??0)+padLeft+padRight,height:(pcb_group2.height??0)+padTop+padBottom,center:{x:pcb_group2.center.x+(padRight-padLeft)/2,y:pcb_group2.center.y+(padTop-padBottom)/2}})}},BreakoutPoint=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"pcb_breakout_point_id",null);__publicField(this,"matchedPort",null);__publicField(this,"matchedNet",null);__publicField(this,"isPcbPrimitive",!0)}get config(){return{componentName:"BreakoutPoint",zodProps:breakoutPointProps}}_matchConnection(){let{connection}=this._parsedProps,subcircuit=this.getSubcircuit();subcircuit&&(this.matchedPort=subcircuit.selectOne(connection,{type:"port"}),this.matchedPort||(this.matchedNet=subcircuit.selectOne(connection,{type:"net"})),!this.matchedPort&&!this.matchedNet&&this.renderError(`Could not find connection target "${connection}"`))}_getSourceTraceIdForPort(port){let{db:db2}=this.root;return db2.source_trace.list().find(st3=>st3.connected_source_port_ids.includes(port.source_port_id))?.source_trace_id}_getSourceNetIdForPort(port){let{db:db2}=this.root;return db2.source_trace.list().find(st3=>st3.connected_source_port_ids.includes(port.source_port_id))?.connected_source_net_ids[0]}doInitialPcbPrimitiveRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root;this._matchConnection();let position2=this._getGlobalPcbPositionBeforeLayout(),group=this.parent?.getGroup(),subcircuit=this.getSubcircuit();if(!group||!group.pcb_group_id)return;let pcb_breakout_point2=db2.pcb_breakout_point.insert({pcb_group_id:group.pcb_group_id,subcircuit_id:subcircuit?.subcircuit_id??void 0,source_port_id:this.matchedPort?.source_port_id??void 0,source_trace_id:this.matchedPort?this._getSourceTraceIdForPort(this.matchedPort):void 0,source_net_id:this.matchedNet?this.matchedNet.source_net_id:this.matchedPort?this._getSourceNetIdForPort(this.matchedPort):void 0,x:position2.x,y:position2.y});this.pcb_breakout_point_id=pcb_breakout_point2.pcb_breakout_point_id}_getPcbCircuitJsonBounds(){let position2=this._getGlobalPcbPositionBeforeLayout();return{center:{x:position2.x,y:position2.y},bounds:{left:position2.x,top:position2.y,right:position2.x,bottom:position2.y},width:0,height:0}}_setPositionFromLayout(newCenter){let{db:db2}=this.root;this.pcb_breakout_point_id&&db2.pcb_breakout_point.update(this.pcb_breakout_point_id,{x:newCenter.x,y:newCenter.y})}_moveCircuitJsonElements({deltaX,deltaY}){if(this.root?.pcbDisabled)return;let{db:db2}=this.root;if(!this.pcb_breakout_point_id)return;let point6=db2.pcb_breakout_point.get(this.pcb_breakout_point_id);point6&&db2.pcb_breakout_point.update(this.pcb_breakout_point_id,{x:point6.x+deltaX,y:point6.y+deltaY})}getPcbSize(){return{width:0,height:0}}},NetLabel=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"source_net_label_id")}get config(){return{componentName:"NetLabel",zodProps:netLabelProps}}_getAnchorSide(){let{_parsedProps:props}=this;if(props.anchorSide)return props.anchorSide;if(!this._resolveConnectsTo())return"right";let anchorPos=this._getGlobalSchematicPositionBeforeLayout(),connectedPorts=this._getConnectedPorts();if(connectedPorts.length===0)return"right";let connectedPortPosition=connectedPorts[0]._getGlobalSchematicPositionBeforeLayout(),dx2=connectedPortPosition.x-anchorPos.x,dy2=connectedPortPosition.y-anchorPos.y;if(Math.abs(dx2)>Math.abs(dy2)){if(dx2>0)return"right";if(dx2<0)return"left"}else{if(dy2>0)return"top";if(dy2<0)return"bottom"}return"right"}_getConnectedPorts(){let connectsTo=this._resolveConnectsTo();if(!connectsTo)return[];let connectedPorts=[];for(let connection of connectsTo){let port=this.getSubcircuit().selectOne(connection);port&&connectedPorts.push(port)}return connectedPorts}computeSchematicPropsTransform(){let{_parsedProps:props}=this;if(props.schX===void 0&&props.schY===void 0){let connectedPorts=this._getConnectedPorts();if(connectedPorts.length>0){let portPos=connectedPorts[0]._getGlobalSchematicPositionBeforeLayout(),parentCenter=applyToPoint(this.parent?.computeSchematicGlobalTransform?.()??identity(),{x:0,y:0});return translate(portPos.x-parentCenter.x,portPos.y-parentCenter.y)}}return super.computeSchematicPropsTransform()}doInitialSchematicPrimitiveRender(){if(this.root?.schematicDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,anchorPos=this._getGlobalSchematicPositionBeforeLayout(),net=this.getSubcircuit().selectOne(`net.${this._getNetName()}`),anchorSide=props.anchorSide??"right",center2=computeSchematicNetLabelCenter({anchor_position:anchorPos,anchor_side:anchorSide,text:props.net}),netLabel=db2.schematic_net_label.insert({text:props.net,source_net_id:net.source_net_id,anchor_position:anchorPos,center:center2,anchor_side:this._getAnchorSide()});this.source_net_label_id=netLabel.source_net_id}_resolveConnectsTo(){let{_parsedProps:props}=this,connectsTo=props.connectsTo??props.connection;if(Array.isArray(connectsTo))return connectsTo;if(typeof connectsTo=="string")return[connectsTo]}_getNetName(){let{_parsedProps:props}=this;return props.net}doInitialCreateNetsFromProps(){let{_parsedProps:props}=this;props.net&&createNetsFromProps(this,[`net.${props.net}`])}doInitialCreateTracesFromNetLabels(){if(this.root?.schematicDisabled)return;let connectsTo=this._resolveConnectsTo();if(connectsTo)for(let connection of connectsTo)this.add(new Trace3({from:connection,to:`net.${this._getNetName()}`}))}doInitialSchematicTraceRender(){if(!this.root?._featureMspSchematicTraceRouting||this.root?.schematicDisabled)return;let{db:db2}=this.root,connectsTo=this._resolveConnectsTo();if(!connectsTo||connectsTo.length===0)return;let anchorPos=this._getGlobalSchematicPositionBeforeLayout(),anchorSide=this._getAnchorSide(),anchorFacing={left:"x-",right:"x+",top:"y+",bottom:"y-"}[anchorSide],net=this.getSubcircuit().selectOne(`net.${this._getNetName()}`);for(let connection of connectsTo){let port=this.getSubcircuit().selectOne(connection,{type:"port"});if(!port||!port.schematic_port_id)continue;let existingTraceForThisConnection=!1;if(net?.source_net_id){let candidateSourceTrace=db2.source_trace.list().find(st3=>st3.connected_source_net_ids?.includes(net.source_net_id)&&st3.connected_source_port_ids?.includes(port.source_port_id??""));if(candidateSourceTrace&&(existingTraceForThisConnection=db2.schematic_trace.list().some(t5=>t5.source_trace_id===candidateSourceTrace.source_trace_id)),existingTraceForThisConnection)continue}let portPos=port._getGlobalSchematicPositionAfterLayout(),portFacing=convertFacingDirectionToElbowDirection(port.facingDirection??"right")??"x+",path=calculateElbow({x:portPos.x,y:portPos.y,facingDirection:portFacing},{x:anchorPos.x,y:anchorPos.y,facingDirection:anchorFacing});if(!Array.isArray(path)||path.length<2)continue;let edges=[];for(let i3=0;i3<path.length-1;i3++)edges.push({from:{x:path[i3].x,y:path[i3].y},to:{x:path[i3+1].x,y:path[i3+1].y}});let source_trace_id,subcircuit_connectivity_map_key;if(net?.source_net_id&&port.source_port_id){let st3=db2.source_trace.list().find(s3=>s3.connected_source_net_ids?.includes(net.source_net_id)&&s3.connected_source_port_ids?.includes(port.source_port_id));source_trace_id=st3?.source_trace_id,subcircuit_connectivity_map_key=st3?.subcircuit_connectivity_map_key||db2.source_net.get(net.source_net_id)?.subcircuit_connectivity_map_key}db2.schematic_trace.insert({source_trace_id,edges,junctions:[],subcircuit_connectivity_map_key}),db2.schematic_port.update(port.schematic_port_id,{is_connected:!0})}}},SilkscreenCircle=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"pcb_silkscreen_circle_id",null);__publicField(this,"isPcbPrimitive",!0)}get config(){return{componentName:"SilkscreenCircle",zodProps:silkscreenCircleProps}}doInitialPcbPrimitiveRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,position2=this._getGlobalPcbPositionBeforeLayout(),{maybeFlipLayer}=this._getPcbPrimitiveFlippedHelpers(),layer=maybeFlipLayer(props.layer??"top");if(layer!=="top"&&layer!=="bottom")throw new Error(`Invalid layer "${layer}" for SilkscreenCircle. Must be "top" or "bottom".`);let subcircuit=this.getSubcircuit(),pcb_component_id=this.parent?.pcb_component_id??this.getPrimitiveContainer()?.pcb_component_id,pcb_silkscreen_circle2=db2.pcb_silkscreen_circle.insert({pcb_component_id,layer,center:{x:position2.x,y:position2.y},radius:props.radius,subcircuit_id:subcircuit?.subcircuit_id??void 0,pcb_group_id:this.getGroup()?.pcb_group_id??void 0,stroke_width:props.strokeWidth??.1});this.pcb_silkscreen_circle_id=pcb_silkscreen_circle2.pcb_silkscreen_circle_id}getPcbSize(){let{_parsedProps:props}=this,diameter=props.radius*2;return{width:diameter,height:diameter}}_moveCircuitJsonElements({deltaX,deltaY}){if(this.root?.pcbDisabled)return;let{db:db2}=this.root;if(!this.pcb_silkscreen_circle_id)return;let circle2=db2.pcb_silkscreen_circle.get(this.pcb_silkscreen_circle_id);circle2&&db2.pcb_silkscreen_circle.update(this.pcb_silkscreen_circle_id,{center:{x:circle2.center.x+deltaX,y:circle2.center.y+deltaY}})}},SilkscreenRect=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"pcb_silkscreen_rect_id",null);__publicField(this,"isPcbPrimitive",!0)}get config(){return{componentName:"SilkscreenRect",zodProps:silkscreenRectProps}}_isRotated90Degrees(){let globalTransform=this._computePcbGlobalTransformBeforeLayout(),normalizedRotationDegrees=(decomposeTSR(globalTransform).rotation.angle*180/Math.PI%360+360)%360,rotationTolerance=.01;return Math.abs(normalizedRotationDegrees-90)<rotationTolerance||Math.abs(normalizedRotationDegrees-270)<rotationTolerance}doInitialPcbPrimitiveRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,{maybeFlipLayer}=this._getPcbPrimitiveFlippedHelpers(),layer=maybeFlipLayer(props.layer??"top");if(layer!=="top"&&layer!=="bottom")throw new Error(`Invalid layer "${layer}" for SilkscreenRect. Must be "top" or "bottom".`);let subcircuit=this.getSubcircuit(),position2=this._getGlobalPcbPositionBeforeLayout(),isRotated90Degrees=this._isRotated90Degrees(),finalWidth=isRotated90Degrees?props.height:props.width,finalHeight=isRotated90Degrees?props.width:props.height,pcb_component_id=this.parent?.pcb_component_id??this.getPrimitiveContainer()?.pcb_component_id,pcb_silkscreen_rect2=db2.pcb_silkscreen_rect.insert({pcb_component_id,layer,center:{x:position2.x,y:position2.y},width:finalWidth,height:finalHeight,subcircuit_id:subcircuit?.subcircuit_id??void 0,pcb_group_id:this?.getGroup()?.pcb_group_id??void 0,stroke_width:props.strokeWidth??.1,is_filled:props.filled??!1,corner_radius:props.cornerRadius??void 0});this.pcb_silkscreen_rect_id=pcb_silkscreen_rect2.pcb_silkscreen_rect_id}getPcbSize(){let{_parsedProps:props}=this;return this._isRotated90Degrees()?{width:props.height,height:props.width}:{width:props.width,height:props.height}}_moveCircuitJsonElements({deltaX,deltaY}){if(this.root?.pcbDisabled)return;let{db:db2}=this.root;if(!this.pcb_silkscreen_rect_id)return;let rect=db2.pcb_silkscreen_rect.get(this.pcb_silkscreen_rect_id);rect&&db2.pcb_silkscreen_rect.update(this.pcb_silkscreen_rect_id,{center:{x:rect.center.x+deltaX,y:rect.center.y+deltaY}})}},SilkscreenLine=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"pcb_silkscreen_line_id",null);__publicField(this,"isPcbPrimitive",!0)}get config(){return{componentName:"SilkscreenLine",zodProps:silkscreenLineProps}}doInitialPcbPrimitiveRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,{maybeFlipLayer}=this._getPcbPrimitiveFlippedHelpers(),layer=maybeFlipLayer(props.layer??"top");if(layer!=="top"&&layer!=="bottom")throw new Error(`Invalid layer "${layer}" for SilkscreenLine. Must be "top" or "bottom".`);let subcircuit=this.getSubcircuit(),transform5=this._computePcbGlobalTransformBeforeLayout(),p12=applyToPoint(transform5,{x:props.x1,y:props.y1}),p2=applyToPoint(transform5,{x:props.x2,y:props.y2}),pcb_component_id=this.parent?.pcb_component_id??this.getPrimitiveContainer()?.pcb_component_id,pcb_silkscreen_line2=db2.pcb_silkscreen_line.insert({pcb_component_id,layer,x1:p12.x,y1:p12.y,x2:p2.x,y2:p2.y,stroke_width:props.strokeWidth??.1,subcircuit_id:subcircuit?.subcircuit_id??void 0,pcb_group_id:subcircuit?.getGroup()?.pcb_group_id??void 0});this.pcb_silkscreen_line_id=pcb_silkscreen_line2.pcb_silkscreen_line_id}getPcbSize(){let{_parsedProps:props}=this,width=Math.abs(props.x2-props.x1),height=Math.abs(props.y2-props.y1);return{width,height}}_moveCircuitJsonElements({deltaX,deltaY}){if(this.root?.pcbDisabled)return;let{db:db2}=this.root;if(!this.pcb_silkscreen_line_id)return;let line2=db2.pcb_silkscreen_line.get(this.pcb_silkscreen_line_id);line2&&db2.pcb_silkscreen_line.update(this.pcb_silkscreen_line_id,{x1:line2.x1+deltaX,y1:line2.y1+deltaY,x2:line2.x2+deltaX,y2:line2.y2+deltaY})}},Fiducial=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"pcb_smtpad_id",null);__publicField(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Fiducial",zodProps:fiducialProps,sourceFtype:"simple_fiducial"}}doInitialPcbPrimitiveRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,position2=this._getGlobalPcbPositionBeforeLayout(),{maybeFlipLayer}=this._getPcbPrimitiveFlippedHelpers(),pcb_component_id=this.parent?.pcb_component_id??this.getPrimitiveContainer()?.pcb_component_id,pcb_smtpad2=db2.pcb_smtpad.insert({pcb_component_id,layer:maybeFlipLayer(props.layer||"top"),shape:"circle",x:position2.x,y:position2.y,radius:distance.parse(props.padDiameter)/2,soldermask_margin:props.soldermaskPullback?distance.parse(props.soldermaskPullback):distance.parse(props.padDiameter)/2,is_covered_with_solder_mask:!0});this.pcb_smtpad_id=pcb_smtpad2.pcb_smtpad_id}getPcbSize(){let{_parsedProps:props}=this,d3=distance.parse(props.padDiameter);return{width:d3,height:d3}}_setPositionFromLayout(newCenter){if(!this.pcb_smtpad_id)return;let{db:db2}=this.root;db2.pcb_smtpad.update(this.pcb_smtpad_id,{x:newCenter.x,y:newCenter.y})}_moveCircuitJsonElements({deltaX,deltaY}){if(this.root?.pcbDisabled)return;let{db:db2}=this.root;if(!this.pcb_smtpad_id)return;let pad2=db2.pcb_smtpad.get(this.pcb_smtpad_id);pad2&&(pad2.shape==="rect"||pad2.shape==="circle"||pad2.shape==="rotated_rect"||pad2.shape==="pill"?this._setPositionFromLayout({x:pad2.x+deltaX,y:pad2.y+deltaY}):pad2.shape==="polygon"&&db2.pcb_smtpad.update(this.pcb_smtpad_id,{points:pad2.points.map(p2=>({x:p2.x+deltaX,y:p2.y+deltaY}))}))}},Via=class extends PrimitiveComponent2{constructor(props){super(props);__publicField(this,"pcb_via_id",null);__publicField(this,"matchedPort",null);__publicField(this,"isPcbPrimitive",!0);__publicField(this,"source_manually_placed_via_id",null);__publicField(this,"subcircuit_connectivity_map_key",null);let layers=this._getLayers();this._parsedProps.layers=layers,this.initPorts()}get config(){return{componentName:"Via",zodProps:viaProps}}getAvailablePcbLayers(){return["top","inner1","inner2","bottom"]}_getResolvedViaDiameters(pcbStyle2){return getViaDiameterDefaultsWithOverrides({holeDiameter:this._parsedProps.holeDiameter,padDiameter:this._parsedProps.outerDiameter},pcbStyle2)}getPcbSize(){let pcbStyle2=this.getInheritedMergedProperty("pcbStyle"),{padDiameter}=this._getResolvedViaDiameters(pcbStyle2);return{width:padDiameter,height:padDiameter}}_getPcbCircuitJsonBounds(){let{db:db2}=this.root,via=db2.pcb_via.get(this.pcb_via_id),size2=this.getPcbSize();return{center:{x:via.x,y:via.y},bounds:{left:via.x-size2.width/2,top:via.y-size2.height/2,right:via.x+size2.width/2,bottom:via.y+size2.height/2},width:size2.width,height:size2.height}}_setPositionFromLayout(newCenter){let{db:db2}=this.root;db2.pcb_via.update(this.pcb_via_id,{x:newCenter.x,y:newCenter.y})}_getLayers(){let{fromLayer="top",toLayer="bottom"}=this._parsedProps;return fromLayer===toLayer?[fromLayer]:[fromLayer,toLayer]}initPorts(){let layers=this._parsedProps.layers;for(let layer of layers){let port2=new Port({name:layer,layer});port2.registerMatch(this),this.add(port2)}let port=new Port({name:"pin1"});port.registerMatch(this),this.add(port)}_getConnectedNetOrTrace(){let connectsTo=this._parsedProps.connectsTo;if(!connectsTo)return null;let subcircuit=this.getSubcircuit(),selectors=Array.isArray(connectsTo)?connectsTo:[connectsTo];for(let selector of selectors)if(selector.startsWith("net.")){let net=subcircuit.selectOne(selector,{type:"net"});if(net)return net}return null}doInitialPcbComponentRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,pcbStyle2=this.getInheritedMergedProperty("pcbStyle"),{padDiameter}=this._getResolvedViaDiameters(pcbStyle2),position2=this._getGlobalPcbPositionBeforeLayout(),subcircuit=this.getSubcircuit(),pcb_component2=db2.pcb_component.insert({center:position2,width:padDiameter,height:padDiameter,layer:this._parsedProps.fromLayer??"top",rotation:0,source_component_id:this.source_component_id,subcircuit_id:subcircuit?.subcircuit_id??void 0,obstructs_within_bounds:!0});this.pcb_component_id=pcb_component2.pcb_component_id}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,group=this.getGroup(),subcircuit=this.getSubcircuit(),source_via=db2.source_manually_placed_via.insert({source_group_id:group?.source_group_id,source_net_id:props.net??"",subcircuit_id:subcircuit?.subcircuit_id??void 0});this.source_component_id=source_via.source_manually_placed_via_id}doInitialPcbPrimitiveRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,pcbStyle2=this.getInheritedMergedProperty("pcbStyle"),{holeDiameter,padDiameter}=this._getResolvedViaDiameters(pcbStyle2),position2=this._getGlobalPcbPositionBeforeLayout(),subcircuit=this.getSubcircuit(),pcb_via2=db2.pcb_via.insert({x:position2.x,y:position2.y,hole_diameter:holeDiameter,outer_diameter:padDiameter,layers:["bottom","top"],from_layer:this._parsedProps.fromLayer||"bottom",to_layer:this._parsedProps.toLayer||"top",subcircuit_id:subcircuit?.subcircuit_id??void 0,subcircuit_connectivity_map_key:this.subcircuit_connectivity_map_key??void 0,pcb_group_id:this.getGroup()?.pcb_group_id??void 0,net_is_assignable:this._parsedProps.netIsAssignable??void 0});this.pcb_via_id=pcb_via2.pcb_via_id}},CopperPour=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"isPcbPrimitive",!0)}get config(){return{componentName:"CopperPour",zodProps:copperPourProps}}getPcbSize(){return{width:0,height:0}}doInitialCreateNetsFromProps(){let{_parsedProps:props}=this;createNetsFromProps(this,[props.connectsTo])}doInitialPcbCopperPourRender(){this.root?.pcbDisabled||this._queueAsyncEffect("PcbCopperPourRender",async()=>{let{db:db2}=this.root,{_parsedProps:props}=this,net=this.getSubcircuit().selectOne(props.connectsTo);if(!net||!net.source_net_id){this.renderError(`Net "${props.connectsTo}" not found for copper pour`);return}let subcircuit=this.getSubcircuit(),sourceNet=db2.toArray().filter(elm=>elm.type==="source_net"&&elm.name===net.name)[0]||"",clearance=props.clearance??.2,inputProblem=convertCircuitJsonToInputProblem(db2.toArray(),{layer:props.layer,pour_connectivity_key:sourceNet.subcircuit_connectivity_map_key||"",pad_margin:props.padMargin??clearance,trace_margin:props.traceMargin??clearance,board_edge_margin:props.boardEdgeMargin??clearance,cutout_margin:props.cutoutMargin??clearance}),solver=new CopperPourPipelineSolver(inputProblem);this.root.emit("solver:started",{solverName:"CopperPourPipelineSolver",solverParams:inputProblem,componentName:this.props.name});let{brep_shapes}=solver.getOutput(),coveredWithSolderMask=props.coveredWithSolderMask??!1;for(let brep_shape2 of brep_shapes)db2.pcb_copper_pour.insert({shape:"brep",layer:props.layer,brep_shape:brep_shape2,source_net_id:net.source_net_id,subcircuit_id:subcircuit?.subcircuit_id??void 0,covered_with_solder_mask:coveredWithSolderMask})})}},CopperText=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"isPcbPrimitive",!0);__publicField(this,"pcb_copper_text_id",null)}get config(){return{componentName:"CopperText",zodProps:copperTextProps}}doInitialPcbPrimitiveRender(){if(this.root?.pcbDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,container=this.getPrimitiveContainer(),position2=this._getGlobalPcbPositionBeforeLayout(),subcircuit=this.getSubcircuit(),pcb_copper_text2=db2.pcb_copper_text.insert({anchor_alignment:props.anchorAlignment,anchor_position:{x:position2.x,y:position2.y},font:"tscircuit2024",font_size:props.fontSize,layer:props.layer??"top",text:normalizeTextForCircuitJson(props.text),ccw_rotation:props.pcbRotation,is_mirrored:props.mirrored,is_knockout:props.knockout,pcb_component_id:container.pcb_component_id,subcircuit_id:subcircuit?.subcircuit_id??void 0,pcb_group_id:this.getGroup()?.pcb_group_id??void 0});this.pcb_copper_text_id=pcb_copper_text2.pcb_copper_text_id}getPcbSize(){let{_parsedProps:props}=this,fontSize=props.fontSize??1,textWidth=(props.text??"").length*fontSize,textHeight=fontSize;return{width:textWidth*fontSize,height:textHeight*fontSize}}_moveCircuitJsonElements({deltaX,deltaY}){if(this.root?.pcbDisabled)return;let{db:db2}=this.root;if(!this.pcb_copper_text_id)return;let text=db2.pcb_copper_text.get(this.pcb_copper_text_id);text&&db2.pcb_copper_text.update(this.pcb_copper_text_id,{anchor_position:{x:text.anchor_position.x+deltaX,y:text.anchor_position.y+deltaY}})}},Battery=class extends NormalComponent3{get config(){return{componentName:"Battery",schematicSymbolName:this.props.symbolName??"battery",zodProps:batteryProps,sourceFtype:"simple_power_source"}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,source_component=db2.source_component.insert({name:this.name,ftype:"simple_power_source",capacity:props.capacity,supplier_part_numbers:props.supplierPartNumbers,are_pins_interchangeable:!1,display_name:props.displayName});this.source_component_id=source_component.source_component_id}},PinHeader=class extends NormalComponent3{_getPcbRotationBeforeLayout(){let orientationRotation=this.props.pcbOrientation==="vertical"?-90:0;return(super._getPcbRotationBeforeLayout()??0)+orientationRotation}get config(){return{componentName:"PinHeader",zodProps:pinHeaderProps,shouldRenderAsSchematicBox:!0}}_getImpliedFootprintString(){let pinCount=this._parsedProps.pinCount??(Array.isArray(this._parsedProps.pinLabels)?this._parsedProps.pinLabels.length:this._parsedProps.pinLabels?Object.keys(this._parsedProps.pinLabels).length:0),holeDiameter=this._parsedProps.holeDiameter,platedDiameter=this._parsedProps.platedDiameter,pitch=this._parsedProps.pitch,showSilkscreenPinLabels=this._parsedProps.showSilkscreenPinLabels,rows=this._parsedProps.doubleRow?2:1;if(pinCount>0){let footprintString;if(pitch)!holeDiameter&&!platedDiameter?footprintString=`pinrow${pinCount}_p${pitch}`:footprintString=`pinrow${pinCount}_p${pitch}_id${holeDiameter}_od${platedDiameter}`;else if(!holeDiameter&&!platedDiameter)footprintString=`pinrow${pinCount}`;else return null;return showSilkscreenPinLabels!==!0&&(footprintString+="_nopinlabels"),rows>1&&(footprintString+=`_rows${rows}`),footprintString}return null}initPorts(){let pinCount=this._parsedProps.pinCount??(Array.isArray(this._parsedProps.pinLabels)?this._parsedProps.pinLabels.length:this._parsedProps.pinLabels?Object.keys(this._parsedProps.pinLabels).length:1);for(let i3=1;i3<=pinCount;i3++){let rawLabel=Array.isArray(this._parsedProps.pinLabels)?this._parsedProps.pinLabels[i3-1]:this._parsedProps.pinLabels?.[`pin${i3}`];if(rawLabel){let primaryLabel=Array.isArray(rawLabel)?rawLabel[0]:rawLabel,otherLabels=Array.isArray(rawLabel)?rawLabel.slice(1):[];this.add(new Port({pinNumber:i3,name:primaryLabel,aliases:[`pin${i3}`,...otherLabels]}))}else this.add(new Port({pinNumber:i3,name:`pin${i3}`}))}}_getSchematicPortArrangement(){let pinCount=this._parsedProps.pinCount??1,facingDirection=this._parsedProps.schFacingDirection??this._parsedProps.facingDirection??"right",schPinArrangement=this._parsedProps.schPinArrangement;return facingDirection==="left"?{leftSide:{direction:schPinArrangement?.leftSide?.direction??"top-to-bottom",pins:schPinArrangement?.leftSide?.pins??Array.from({length:pinCount},(_4,i3)=>`pin${i3+1}`)}}:{rightSide:{direction:schPinArrangement?.rightSide?.direction??"top-to-bottom",pins:schPinArrangement?.rightSide?.pins??Array.from({length:pinCount},(_4,i3)=>`pin${i3+1}`)}}}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,source_component=db2.source_component.insert({ftype:"simple_pin_header",name:this.name,supplier_part_numbers:props.supplierPartNumbers,pin_count:props.pinCount,gender:props.gender,are_pins_interchangeable:!0,display_name:props.displayName});this.source_component_id=source_component.source_component_id}};function getResonatorSymbolName(variant){switch(variant){case"two_ground_pins":return"crystal_4pin";case"ground_pin":return"resonator";case"no_ground":return"crystal";default:return"crystal"}}var Resonator=class extends NormalComponent3{get config(){return{componentName:"Resonator",schematicSymbolName:this.props.symbolName??getResonatorSymbolName(this.props.pinVariant),zodProps:resonatorProps,shouldRenderAsSchematicBox:!1}}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,pinVariant=props.pinVariant||"no_ground",source_component=db2.source_component.insert({ftype:"simple_resonator",name:this.name,frequency:props.frequency,load_capacitance:props.loadCapacitance,supplier_part_numbers:props.supplierPartNumbers,pin_variant:pinVariant,are_pins_interchangeable:pinVariant==="no_ground"||pinVariant==="ground_pin",display_name:props.displayName});this.source_component_id=source_component.source_component_id}_getSchematicSymbolDisplayValue(){let freqDisplay=`${formatSiUnit(this._parsedProps.frequency)}Hz`;return this._parsedProps.loadCapacitance?`${freqDisplay} / ${formatSiUnit(this._parsedProps.loadCapacitance)}F`:freqDisplay}};function getPotentiometerSymbolName(variant){switch(variant){case"three_pin":return"potentiometer3";case"two_pin":return"potentiometer2";default:return"potentiometer2"}}var Potentiometer=class extends NormalComponent3{get config(){return{componentName:"Potentiometer",schematicSymbolName:this.props.symbolName??getPotentiometerSymbolName(this.props.pinVariant),zodProps:potentiometerProps,shouldRenderAsSchematicBox:!1}}_getSchematicSymbolDisplayValue(){return`${formatSiUnit(this._parsedProps.maxResistance)}\u03A9`}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,pinVariant=props.pinVariant||"two_pin",source_component=db2.source_component.insert({ftype:"simple_potentiometer",name:this.name,max_resistance:props.maxResistance,pin_variant:pinVariant,are_pins_interchangeable:pinVariant==="two_pin",display_name:props.displayName});this.source_component_id=source_component.source_component_id}},PushButton=class extends NormalComponent3{get config(){return{componentName:"PushButton",schematicSymbolName:this.props.symbolName??"push_button_normally_open_momentary",zodProps:pushButtonProps,sourceFtype:FTYPE.simple_push_button}}get defaultInternallyConnectedPinNames(){return[]}initPorts(){super.initPorts({pinCount:2,ignoreSymbolPorts:!0});let symbol=cf[this._getSchematicSymbolNameOrThrow()],symPort1=symbol.ports.find(p2=>p2.labels.includes("1")),symPort2=symbol.ports.find(p2=>p2.labels.includes("2")),ports=this.selectAll("port"),pin1Port=ports.find(p2=>p2.props.pinNumber===1),pin2Port=ports.find(p2=>p2.props.pinNumber===2),pin3Port=ports.find(p2=>p2.props.pinNumber===3),pin4Port=ports.find(p2=>p2.props.pinNumber===4),{internallyConnectedPins}=this._parsedProps;pin1Port.schematicSymbolPortDef=symPort1,(!internallyConnectedPins||internallyConnectedPins.length===0)&&(pin2Port.schematicSymbolPortDef=symPort2);for(let[pn3,port]of[[2,pin2Port],[3,pin3Port],[4,pin4Port]]){let internallyConnectedRow=internallyConnectedPins?.find(([pin1,pin2])=>pin1===`pin${pn3}`||pin2===`pin${pn3}`);if(!internallyConnectedRow){port.schematicSymbolPortDef=symPort2;break}(internallyConnectedRow?.[0]===`pin${pn3}`?internallyConnectedRow[1]:internallyConnectedRow?.[0])!=="pin1"&&(port.schematicSymbolPortDef=symPort2)}}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,source_component=db2.source_component.insert({name:this.name,ftype:FTYPE.simple_push_button,supplier_part_numbers:props.supplierPartNumbers,are_pins_interchangeable:!0,display_name:props.displayName});this.source_component_id=source_component.source_component_id}},Crystal=class extends NormalComponent3{get config(){return{schematicSymbolName:this.props.symbolName??(this.props.pinVariant==="four_pin"?"crystal_4pin":"crystal"),componentName:"Crystal",zodProps:crystalProps,sourceFtype:"simple_crystal"}}initPorts(){let additionalAliases=this.props.pinVariant==="four_pin"?{pin1:["left1","1"],pin2:["top1","2","gnd1"],pin3:["right1","3"],pin4:["bottom1","4","gnd2"]}:{pin1:["pos","left"],pin2:["neg","right"]};super.initPorts({additionalAliases})}_getSchematicSymbolDisplayValue(){let freqDisplay=`${formatSiUnit(this._parsedProps.frequency)}Hz`;return this._parsedProps.loadCapacitance?`${freqDisplay} / ${formatSiUnit(this._parsedProps.loadCapacitance)}F`:freqDisplay}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,source_component=db2.source_component.insert({name:this.name,ftype:"simple_crystal",frequency:props.frequency,load_capacitance:props.loadCapacitance,pin_variant:props.pinVariant||"two_pin",are_pins_interchangeable:(props.pinVariant||"two_pin")==="two_pin",display_name:props.displayName});this.source_component_id=source_component.source_component_id}},Mosfet=class extends NormalComponent3{get config(){let mosfetMode=this.props.mosfetMode==="depletion"?"d":"e",baseSymbolName=`${this.props.channelType}_channel_${mosfetMode}_mosfet_transistor`;return{componentName:"Mosfet",schematicSymbolName:this.props.symbolName??baseSymbolName,zodProps:mosfetProps,shouldRenderAsSchematicBox:!1}}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,source_component=db2.source_component.insert({ftype:"simple_mosfet",name:this.name,mosfet_mode:props.mosfetMode,channel_type:props.channelType,display_name:props.displayName});this.source_component_id=source_component.source_component_id}},OpAmp=class extends NormalComponent3{constructor(){super(...arguments);__publicField(this,"inverting_input",this.portMap.inverting_input);__publicField(this,"non_inverting_input",this.portMap.non_inverting_input);__publicField(this,"output",this.portMap.output);__publicField(this,"positive_supply",this.portMap.positive_supply);__publicField(this,"negative_supply",this.portMap.negative_supply)}get config(){let hasPowerConnections=this.props.connections?.positive_supply||this.props.connections?.negative_supply;return{componentName:"OpAmp",schematicSymbolName:this.props.symbolName?this.props.symbolName:hasPowerConnections?"opamp_with_power":"opamp_no_power",zodProps:opampProps,sourceFtype:"simple_op_amp"}}initPorts(){super.initPorts({pinCount:5,additionalAliases:{pin1:["non_inverting_input"],pin2:["inverting_input"],pin3:["output"],pin4:["positive_supply","vcc","vdd"],pin5:["negative_supply","vee","vss","gnd"]}})}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,source_component=db2.source_component.insert({ftype:"simple_op_amp",name:this.name,supplier_part_numbers:props.supplierPartNumbers,display_name:props.displayName});this.source_component_id=source_component.source_component_id}doInitialSimulationRender(){let{db:db2}=this.root,invertingInputPort=this.portMap.inverting_input,nonInvertingInputPort=this.portMap.non_inverting_input,outputPort=this.portMap.output,positiveSupplyPort=this.portMap.positive_supply,negativeSupplyPort=this.portMap.negative_supply;!invertingInputPort?.source_port_id||!nonInvertingInputPort?.source_port_id||!outputPort?.source_port_id||!positiveSupplyPort?.source_port_id||!negativeSupplyPort?.source_port_id||db2.simulation_op_amp.insert({type:"simulation_op_amp",source_component_id:this.source_component_id,inverting_input_source_port_id:invertingInputPort.source_port_id,non_inverting_input_source_port_id:nonInvertingInputPort.source_port_id,output_source_port_id:outputPort.source_port_id,positive_supply_source_port_id:positiveSupplyPort.source_port_id,negative_supply_source_port_id:negativeSupplyPort.source_port_id})}};function hasSimProps(props){return props.simSwitchFrequency!==void 0||props.simCloseAt!==void 0||props.simOpenAt!==void 0||props.simStartClosed!==void 0||props.simStartOpen!==void 0}var Switch=class extends NormalComponent3{_getSwitchType(){let props=this._parsedProps;return props?props.dpdt?"dpdt":props.spst?"spst":props.spdt?"spdt":props.dpst?"dpst":props.type??"spst":"spst"}get config(){let switchType=this._getSwitchType(),isNormallyClosed=this._parsedProps?.isNormallyClosed??!1,symbolMap={spst:isNormallyClosed?"spst_normally_closed_switch":"spst_switch",spdt:isNormallyClosed?"spdt_normally_closed_switch":"spdt_switch",dpst:isNormallyClosed?"dpst_normally_closed_switch":"dpst_switch",dpdt:isNormallyClosed?"dpdt_normally_closed_switch":"dpdt_switch"};return{componentName:"Switch",schematicSymbolName:this.props.symbolName??symbolMap[switchType],zodProps:switchProps,shouldRenderAsSchematicBox:!1}}doInitialSourceRender(){let{db:db2}=this.root,props=this._parsedProps??{},source_component=db2.source_component.insert({ftype:"simple_switch",name:this.name,are_pins_interchangeable:this._getSwitchType()==="spst",display_name:props?.displayName});this.source_component_id=source_component.source_component_id}doInitialSimulationRender(){let{_parsedProps:props}=this;if(!hasSimProps(props))return;let{db:db2}=this.root,simulationSwitch={type:"simulation_switch",source_component_id:this.source_component_id||""};props.simSwitchFrequency!==void 0&&(simulationSwitch.switching_frequency=frequency.parse(props.simSwitchFrequency)),props.simCloseAt!==void 0&&(simulationSwitch.closes_at=ms.parse(props.simCloseAt)),props.simOpenAt!==void 0&&(simulationSwitch.opens_at=ms.parse(props.simOpenAt)),props.simStartOpen!==void 0&&(simulationSwitch.starts_closed=!props.simStartOpen),props.simStartClosed!==void 0&&(simulationSwitch.starts_closed=props.simStartClosed),db2.simulation_switch.insert(simulationSwitch)}},TESTPOINT_DEFAULTS={HOLE_DIAMETER:.5,SMT_CIRCLE_DIAMETER:1.2,SMT_RECT_SIZE:2},TestPoint=class extends NormalComponent3{get config(){return{componentName:"TestPoint",schematicSymbolName:this.props.symbolName??"testpoint",zodProps:testpointProps,sourceFtype:FTYPE.simple_test_point}}_getPropsWithDefaults(){let{padShape,holeDiameter,footprintVariant,padDiameter,width,height}=this._parsedProps;return!footprintVariant&&holeDiameter&&(footprintVariant="through_hole"),footprintVariant??(footprintVariant="through_hole"),padShape??(padShape="circle"),footprintVariant==="pad"?padShape==="circle"?padDiameter??(padDiameter=TESTPOINT_DEFAULTS.SMT_CIRCLE_DIAMETER):padShape==="rect"&&(width??(width=TESTPOINT_DEFAULTS.SMT_RECT_SIZE),height??(height=width)):footprintVariant==="through_hole"&&(holeDiameter??(holeDiameter=TESTPOINT_DEFAULTS.HOLE_DIAMETER)),{padShape,holeDiameter,footprintVariant,padDiameter,width,height}}_getImpliedFootprintString(){let{padShape,holeDiameter,footprintVariant,padDiameter,width,height}=this._getPropsWithDefaults();if(footprintVariant==="through_hole")return`platedhole_d${holeDiameter}`;if(footprintVariant==="pad"){if(padShape==="circle")return`smtpad_circle_d${padDiameter}`;if(padShape==="rect")return`smtpad_rect_w${width}_h${height}`}throw new Error(`Footprint variant "${footprintVariant}" with pad shape "${padShape}" not implemented`)}doInitialSourceRender(){let{db:db2}=this.root,{_parsedProps:props}=this,{padShape,holeDiameter,footprintVariant,padDiameter,width,height}=this._getPropsWithDefaults(),source_component=db2.source_component.insert({ftype:FTYPE.simple_test_point,name:this.name,supplier_part_numbers:props.supplierPartNumbers,footprint_variant:footprintVariant,pad_shape:padShape,pad_diameter:padDiameter,hole_diameter:holeDiameter,width,height,are_pins_interchangeable:!0,display_name:props.displayName});this.source_component_id=source_component.source_component_id}},SchematicText=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"isSchematicPrimitive",!0)}get config(){return{componentName:"SchematicText",zodProps:schematicTextProps}}doInitialSchematicPrimitiveRender(){if(this.root?.schematicDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,globalPos=this._getGlobalSchematicPositionBeforeLayout();db2.schematic_text.insert({anchor:props.anchor??"center",text:normalizeTextForCircuitJson(props.text),font_size:props.fontSize,color:props.color||"#000000",position:{x:globalPos.x,y:globalPos.y},rotation:props.schRotation??0})}},SchematicLine=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"isSchematicPrimitive",!0);__publicField(this,"schematic_line_id")}get config(){return{componentName:"SchematicLine",zodProps:schematicLineProps}}doInitialSchematicPrimitiveRender(){if(this.root?.schematicDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,globalPos=this._getGlobalSchematicPositionBeforeLayout(),schematic_component_id=this.getPrimitiveContainer()?.parent?.schematic_component_id,schematic_line2=db2.schematic_line.insert({schematic_component_id,x1:props.x1+globalPos.x,y1:props.y1+globalPos.y,x2:props.x2+globalPos.x,y2:props.y2+globalPos.y,stroke_width:props.strokeWidth??SCHEMATIC_COMPONENT_OUTLINE_STROKE_WIDTH,color:props.color??SCHEMATIC_COMPONENT_OUTLINE_COLOR,is_dashed:!1,subcircuit_id:this.getSubcircuit().subcircuit_id??void 0});this.schematic_line_id=schematic_line2.schematic_line_id}},SchematicRect=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"isSchematicPrimitive",!0);__publicField(this,"schematic_rect_id")}get config(){return{componentName:"SchematicRect",zodProps:schematicRectProps}}doInitialSchematicPrimitiveRender(){if(this.root?.schematicDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,globalPos=this._getGlobalSchematicPositionBeforeLayout(),schematic_component_id=this.getPrimitiveContainer()?.parent?.schematic_component_id,schematic_rect2=db2.schematic_rect.insert({center:{x:globalPos.x,y:globalPos.y},width:props.width,height:props.height,stroke_width:props.strokeWidth??SCHEMATIC_COMPONENT_OUTLINE_STROKE_WIDTH,color:props.color??SCHEMATIC_COMPONENT_OUTLINE_COLOR,is_filled:props.isFilled,schematic_component_id,is_dashed:props.isDashed,rotation:props.rotation??0,subcircuit_id:this.getSubcircuit().subcircuit_id??void 0});this.schematic_rect_id=schematic_rect2.schematic_rect_id}},SchematicArc=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"isSchematicPrimitive",!0);__publicField(this,"schematic_arc_id")}get config(){return{componentName:"SchematicArc",zodProps:schematicArcProps}}doInitialSchematicPrimitiveRender(){if(this.root?.schematicDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,globalPos=this._getGlobalSchematicPositionBeforeLayout(),schematic_component_id=this.getPrimitiveContainer()?.parent?.schematic_component_id,schematic_arc2=db2.schematic_arc.insert({schematic_component_id,center:{x:props.center.x+globalPos.x,y:props.center.y+globalPos.y},radius:props.radius,start_angle_degrees:props.startAngleDegrees,end_angle_degrees:props.endAngleDegrees,direction:props.direction,stroke_width:props.strokeWidth??SCHEMATIC_COMPONENT_OUTLINE_STROKE_WIDTH,color:props.color??SCHEMATIC_COMPONENT_OUTLINE_COLOR,is_dashed:props.isDashed,subcircuit_id:this.getSubcircuit().subcircuit_id??void 0});this.schematic_arc_id=schematic_arc2.schematic_arc_id}},SchematicCircle=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"isSchematicPrimitive",!0);__publicField(this,"schematic_circle_id")}get config(){return{componentName:"SchematicCircle",zodProps:schematicCircleProps}}doInitialSchematicPrimitiveRender(){if(this.root?.schematicDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,globalPos=this._getGlobalSchematicPositionBeforeLayout(),schematic_component_id=this.getPrimitiveContainer()?.parent?.schematic_component_id,schematic_circle2=db2.schematic_circle.insert({schematic_component_id,center:{x:props.center.x+globalPos.x,y:props.center.y+globalPos.y},radius:props.radius,stroke_width:props.strokeWidth??SCHEMATIC_COMPONENT_OUTLINE_STROKE_WIDTH,color:props.color??SCHEMATIC_COMPONENT_OUTLINE_COLOR,is_filled:props.isFilled,fill_color:props.fillColor,is_dashed:props.isDashed,subcircuit_id:this.getSubcircuit().subcircuit_id??void 0});this.schematic_circle_id=schematic_circle2.schematic_circle_id}},SchematicPath=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"isSchematicPrimitive",!0)}get config(){return{componentName:"SchematicPath",zodProps:schematicPathProps}}doInitialSchematicPrimitiveRender(){if(this.root?.schematicDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,globalPos=this._getGlobalSchematicPositionBeforeLayout(),schematic_component_id=this.getPrimitiveContainer()?.parent?.schematic_component_id;db2.schematic_path.insert({schematic_component_id,points:props.points.map(point6=>({x:point6.x+globalPos.x,y:point6.y+globalPos.y})),is_filled:props.isFilled,fill_color:props.fillColor,subcircuit_id:this.getSubcircuit().subcircuit_id??void 0})}};function getTitleAnchorAndPosition({anchor,x:x3,y:y3,width,height,isInside}){switch(anchor){case"top_left":return{x:x3,y:y3+height,textAnchor:isInside?"top_left":"bottom_left"};case"top_center":return{x:x3+width/2,y:y3+height,textAnchor:isInside?"top_center":"bottom_center"};case"top_right":return{x:x3+width,y:y3+height,textAnchor:isInside?"top_right":"bottom_right"};case"center_left":return{x:x3,y:y3+height/2,textAnchor:isInside?"center_left":"center_right"};case"center":return{x:x3+width/2,y:y3+height/2,textAnchor:"center"};case"center_right":return{x:x3+width,y:y3+height/2,textAnchor:isInside?"center_right":"center_left"};case"bottom_left":return{x:x3,y:y3,textAnchor:isInside?"bottom_left":"top_left"};case"bottom_center":return{x:x3+width/2,y:y3,textAnchor:isInside?"bottom_center":"top_center"};case"bottom_right":return{x:x3+width,y:y3,textAnchor:isInside?"bottom_right":"top_right"};default:return{x:x3+width/2,y:y3+height,textAnchor:"center"}}}var SchematicBox=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"isSchematicPrimitive",!0)}get config(){return{componentName:"SchematicBox",zodProps:schematicBoxProps,shouldRenderAsSchematicBox:!0}}doInitialSchematicPrimitiveRender(){if(this.root?.schematicDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,basePadding=.6,generalPadding=typeof props.padding=="number"?props.padding:0,paddingTop=typeof props.paddingTop=="number"?props.paddingTop:generalPadding,paddingBottom=typeof props.paddingBottom=="number"?props.paddingBottom:generalPadding,paddingLeft=typeof props.paddingLeft=="number"?props.paddingLeft:generalPadding,paddingRight=typeof props.paddingRight=="number"?props.paddingRight:generalPadding,hasOverlay=props.overlay&&props.overlay.length>0,hasFixedSize=typeof props.width=="number"&&typeof props.height=="number",width,height,x3,y3,centerX,centerY;if(hasOverlay){let portsWithPosition=props.overlay.map(selector=>({selector,port:this.getSubcircuit().selectOne(selector,{type:"port"})})).filter(({port})=>port!=null).map(({port})=>({position:port._getGlobalSchematicPositionAfterLayout()}));if(portsWithPosition.length===0)return;let xs3=portsWithPosition.map(p2=>p2.position.x),ys3=portsWithPosition.map(p2=>p2.position.y),minX=Math.min(...xs3),maxX=Math.max(...xs3),minY=Math.min(...ys3),maxY=Math.max(...ys3),rawWidth=maxX-minX,rawHeight=maxY-minY,defaultHorizontalPadding=rawWidth===0?basePadding:0,defaultVerticalPadding=rawHeight===0?basePadding:0,finalPaddingLeft=paddingLeft+defaultHorizontalPadding/2,finalPaddingRight=paddingRight+defaultHorizontalPadding/2,finalPaddingTop=paddingTop+defaultVerticalPadding/2,finalPaddingBottom=paddingBottom+defaultVerticalPadding/2,left=minX-finalPaddingLeft,right=maxX+finalPaddingRight,top=minY-finalPaddingBottom,bottom=maxY+finalPaddingTop;width=right-left,height=bottom-top,x3=left+(props.schX??0),y3=top+(props.schY??0),centerX=x3+width/2,centerY=y3+height/2}else if(hasFixedSize){width=props.width,height=props.height;let center2=this._getGlobalSchematicPositionBeforeLayout();centerX=center2.x,centerY=center2.y,x3=centerX-width/2,y3=centerY-height/2}else return;if(db2.schematic_box.insert({height,width,x:x3,y:y3,is_dashed:props.strokeStyle==="dashed"}),props.title){let isInside=props.titleInside,TITLE_PADDING=.1,anchor=props.titleAlignment,anchorPos=getTitleAnchorAndPosition({anchor,x:x3,y:y3,width,height,isInside}),titleOffsetY,titleOffsetX,textAnchor=anchorPos.textAnchor;isInside?(titleOffsetY=anchor.includes("top")?-TITLE_PADDING:anchor.includes("bottom")?TITLE_PADDING:0,titleOffsetX=anchor.includes("left")?TITLE_PADDING:anchor.includes("right")?-TITLE_PADDING:0):(titleOffsetY=anchor.includes("top")?TITLE_PADDING:anchor.includes("bottom")?-TITLE_PADDING:0,titleOffsetX=anchor.includes("center_left")?-TITLE_PADDING:anchor.includes("center_right")?TITLE_PADDING:0);let titleX=anchorPos.x+titleOffsetX,titleY=anchorPos.y+titleOffsetY;db2.schematic_text.insert({anchor:textAnchor,text:props.title,font_size:props.titleFontSize??.18,color:props.titleColor??"#000000",position:{x:titleX,y:titleY},rotation:0})}}},SchematicTable=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"isSchematicPrimitive",!0);__publicField(this,"schematic_table_id",null)}get config(){return{componentName:"SchematicTable",zodProps:schematicTableProps}}doInitialSchematicPrimitiveRender(){if(this.root?.schematicDisabled)return;let{db:db2}=this.root,{_parsedProps:props}=this,rows=this.children.filter(c3=>c3.componentName==="SchematicRow");if(rows.length===0)return;let grid4=[],maxCols=0;for(let row of rows){let cells=row.children.filter(c3=>c3.componentName==="SchematicCell");maxCols=Math.max(maxCols,cells.length)}for(let i3=0;i3<rows.length;i3++)grid4[i3]=[];for(let i3=0;i3<rows.length;i3++){let cells=rows[i3].children.filter(c3=>c3.componentName==="SchematicCell"),k4=0;for(let j3=0;j3<cells.length;j3++){for(;grid4[i3][k4];)k4++;let cell=cells[j3],colSpan=cell._parsedProps.colSpan??1,rowSpan=cell._parsedProps.rowSpan??1;for(let r4=0;r4<rowSpan;r4++)for(let c3=0;c3<colSpan;c3++)grid4[i3+r4]||(grid4[i3+r4]=[]),grid4[i3+r4][k4+c3]=cell;k4+=colSpan}}maxCols=Math.max(0,...grid4.map(r4=>r4.length));let rowHeights=rows.map((row,i3)=>row._parsedProps.height??1),colWidths=Array.from({length:maxCols},(_4,j3)=>{let maxWidth=0;for(let i3=0;i3<rows.length;i3++){let cell=grid4[i3]?.[j3];if(cell){let text=cell._parsedProps.text??cell._parsedProps.children,cellWidth=cell._parsedProps.width??(text?.length??2)*.5;cellWidth>maxWidth&&(maxWidth=cellWidth)}}return maxWidth||10}),anchorPos=this._getGlobalSchematicPositionBeforeLayout(),table=db2.schematic_table.insert({anchor_position:anchorPos,column_widths:colWidths,row_heights:rowHeights,cell_padding:props.cellPadding,border_width:props.borderWidth,anchor:props.anchor,subcircuit_id:this.getSubcircuit()?.subcircuit_id||"",schematic_component_id:this.parent?.schematic_component_id||""});this.schematic_table_id=table.schematic_table_id;let processedCells=new Set,yOffset=0;for(let i3=0;i3<rows.length;i3++){let xOffset=0;for(let j3=0;j3<maxCols;j3++){let cell=grid4[i3]?.[j3];if(cell&&!processedCells.has(cell)){processedCells.add(cell);let cellProps=cell._parsedProps,rowSpan=cellProps.rowSpan??1,colSpan=cellProps.colSpan??1,cellWidth=0;for(let c3=0;c3<colSpan;c3++)cellWidth+=colWidths[j3+c3];let cellHeight=0;for(let r4=0;r4<rowSpan;r4++)cellHeight+=rowHeights[i3+r4];db2.schematic_table_cell.insert({schematic_table_id:this.schematic_table_id,start_row_index:i3,end_row_index:i3+rowSpan-1,start_column_index:j3,end_column_index:j3+colSpan-1,text:cellProps.text??cellProps.children,center:{x:anchorPos.x+xOffset+cellWidth/2,y:anchorPos.y-yOffset-cellHeight/2},width:cellWidth,height:cellHeight,horizontal_align:cellProps.horizontalAlign,vertical_align:cellProps.verticalAlign,font_size:cellProps.fontSize??props.fontSize,subcircuit_id:this.getSubcircuit()?.subcircuit_id||""})}colWidths[j3]&&(xOffset+=colWidths[j3])}yOffset+=rowHeights[i3]}}},SchematicRow=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"isSchematicPrimitive",!0)}get config(){return{componentName:"SchematicRow",zodProps:schematicRowProps}}},SchematicCell=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"isSchematicPrimitive",!0);__publicField(this,"canHaveTextChildren",!0)}get config(){return{componentName:"SchematicCell",zodProps:schematicCellProps}}},SymbolComponent=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"isPrimitiveContainer",!0)}get config(){return{componentName:"Symbol",zodProps:symbolProps}}},AnalogSimulation=class extends PrimitiveComponent2{get config(){return{componentName:"AnalogSimulation",zodProps:analogSimulationProps}}doInitialSimulationRender(){let{db:db2}=this.root,{duration,timePerStep}=this._parsedProps,durationMs=duration||10,timePerStepMs=timePerStep||.01;db2.simulation_experiment.insert({name:"spice_transient_analysis",experiment_type:"spice_transient_analysis",end_time_ms:durationMs,time_per_step:timePerStepMs})}};function getLabelBounds(probePosition,labelText,alignment,labelOffset=.3){let labelWidth=Math.max(labelText.length*.1,.3),labelHeightWithPadding=.25+.2,anchorX=probePosition.x,anchorY=probePosition.y,offsetMultiplier=labelOffset+labelWidth/2;alignment.includes("top")?anchorY+=offsetMultiplier:alignment.includes("bottom")&&(anchorY-=offsetMultiplier),alignment.includes("right")?anchorX+=offsetMultiplier:alignment.includes("left")&&(anchorX-=offsetMultiplier);let minX,maxX,minY,maxY;return alignment.includes("left")?(minX=anchorX,maxX=anchorX+labelWidth):alignment.includes("right")?(minX=anchorX-labelWidth,maxX=anchorX):(minX=anchorX-labelWidth/2,maxX=anchorX+labelWidth/2),alignment.includes("top")?(minY=anchorY-labelHeightWithPadding,maxY=anchorY):alignment.includes("bottom")?(minY=anchorY,maxY=anchorY+labelHeightWithPadding):(minY=anchorY-labelHeightWithPadding/2,maxY=anchorY+labelHeightWithPadding/2),{minX,maxX,minY,maxY}}function getElementBounds(elm){let cx2,cy2,w4,h2;if(elm.type==="schematic_component")cx2=elm.center?.x,cy2=elm.center?.y,w4=elm.size?.width,h2=elm.size?.height;else if(elm.type==="schematic_text")cx2=elm.position?.x,cy2=elm.position?.y,w4=(elm.text?.length??0)*.1,h2=.2;else return null;return typeof cx2=="number"&&typeof cy2=="number"&&typeof w4=="number"&&typeof h2=="number"?{minX:cx2-w4/2,maxX:cx2+w4/2,minY:cy2-h2/2,maxY:cy2+h2/2}:null}function getOverlapArea(a2,b3){if(!doBoundsOverlap(a2,b3))return 0;let overlapWidth=Math.min(a2.maxX,b3.maxX)-Math.max(a2.minX,b3.minX),overlapHeight=Math.min(a2.maxY,b3.maxY)-Math.max(a2.minY,b3.minY);return overlapWidth*overlapHeight}function selectBestLabelAlignment({probePosition,labelText,schematicElements,defaultAlignment="top_right"}){let orderedAlignments=[defaultAlignment,...["top_right","top_left","bottom_right","bottom_left","top_center","bottom_center","center_right","center_left"].filter(a2=>a2!==defaultAlignment)],bestAlignment=defaultAlignment,minOverlapArea=1/0;for(let alignment of orderedAlignments){let labelBounds=getLabelBounds(probePosition,labelText,alignment),totalOverlapArea=0;for(let element of schematicElements){let elementBounds=getElementBounds(element);elementBounds&&(totalOverlapArea+=getOverlapArea(labelBounds,elementBounds))}if(totalOverlapArea===0)return alignment;totalOverlapArea<minOverlapArea&&(minOverlapArea=totalOverlapArea,bestAlignment=alignment)}return bestAlignment}var VoltageProbe=class extends PrimitiveComponent2{constructor(){super(...arguments);__publicField(this,"simulation_voltage_probe_id",null);__publicField(this,"schematic_voltage_probe_id",null);__publicField(this,"finalProbeName",null);__publicField(this,"color",null)}get config(){return{componentName:"VoltageProbe",zodProps:voltageProbeProps}}doInitialSimulationRender(){let{db:db2}=this.root,{connectsTo,name,referenceTo,color}=this._parsedProps,subcircuit=this.getSubcircuit();if(!subcircuit){this.renderError("VoltageProbe must be inside a subcircuit");return}let targets=Array.isArray(connectsTo)?connectsTo:[connectsTo];if(targets.length!==1){this.renderError("VoltageProbe must connect to exactly one port or net");return}let targetSelector=targets[0],port=subcircuit.selectOne(targetSelector,{type:"port"}),net=port?null:subcircuit.selectOne(targetSelector,{type:"net"});if(net&&net.componentName!=="Net"){this.renderError(`VoltageProbe connection target "${targetSelector}" resolved to a non-net component "${net.componentName}".`);return}if(!port&&!net){this.renderError(`VoltageProbe could not find connection target "${targetSelector}"`);return}let connectedId=port?.source_port_id??net?.source_net_id;if(!connectedId){this.renderError("Could not identify connected source for VoltageProbe");return}let referencePort=null,referenceNet=null;if(referenceTo){let referenceTargets=Array.isArray(referenceTo)?referenceTo:[referenceTo];if(referenceTargets.length!==1){this.renderError("VoltageProbe must reference exactly one port or net");return}let referenceSelector=referenceTargets[0];if(referencePort=subcircuit.selectOne(referenceSelector,{type:"port"}),referenceNet=referencePort?null:subcircuit.selectOne(referenceSelector,{type:"net"}),referenceNet&&referenceNet.componentName!=="Net"){this.renderError(`VoltageProbe reference target "${referenceSelector}" resolved to a non-net component "${referenceNet.componentName}".`);return}if(!referencePort&&!referenceNet){this.renderError(`VoltageProbe could not find reference target "${referenceSelector}"`);return}}this.color=color??getSimulationColorForId(connectedId);let finalName=name;finalName||(finalName=targets[0].split(" > ").map(s3=>s3.replace(/^\./,"")).join(".")),this.finalProbeName=finalName??null;let{simulation_voltage_probe_id}=db2.simulation_voltage_probe.insert({name:finalName,signal_input_source_port_id:port?.source_port_id??void 0,signal_input_source_net_id:net?.source_net_id??void 0,reference_input_source_port_id:referencePort?.source_port_id??void 0,reference_input_source_net_id:referenceNet?.source_net_id??void 0,subcircuit_id:subcircuit.subcircuit_id||void 0,color:this.color});this.simulation_voltage_probe_id=simulation_voltage_probe_id}doInitialSchematicReplaceNetLabelsWithSymbols(){if(this.root?.schematicDisabled)return;let{db:db2}=this.root,{connectsTo,name}=this._parsedProps,subcircuit=this.getSubcircuit();if(!subcircuit)return;let targets=Array.isArray(connectsTo)?connectsTo:[connectsTo];if(targets.length!==1)return;let targetSelector=targets[0],port=subcircuit.selectOne(targetSelector,{type:"port"});if(!port||!port.schematic_port_id)return;let position2=port._getGlobalSchematicPositionAfterLayout(),targetTraceId=null;for(let trace of db2.schematic_trace.list()){for(let edge of trace.edges)if(Math.abs(edge.from.x-position2.x)<1e-6&&Math.abs(edge.from.y-position2.y)<1e-6||Math.abs(edge.to.x-position2.x)<1e-6&&Math.abs(edge.to.y-position2.y)<1e-6){targetTraceId=trace.schematic_trace_id;break}if(targetTraceId)break}if(!targetTraceId)return;let probeName=this.finalProbeName,labelAlignment=selectBestLabelAlignment({probePosition:position2,labelText:probeName,schematicElements:[...db2.schematic_component.list(),...db2.schematic_text.list()],defaultAlignment:"top_right"}),schematic_voltage_probe2=db2.schematic_voltage_probe.insert({name:probeName,position:position2,schematic_trace_id:targetTraceId,subcircuit_id:subcircuit.subcircuit_id||void 0,color:this.color??void 0,label_alignment:labelAlignment});this.schematic_voltage_probe_id=schematic_voltage_probe2.schematic_voltage_probe_id}},package_default3={name:"@tscircuit/core",type:"module",version:"0.0.987",types:"dist/index.d.ts",main:"dist/index.js",module:"dist/index.js",exports:{".":{import:"./dist/index.js",types:"./dist/index.d.ts"}},files:["dist"],repository:{type:"git",url:"https://github.com/tscircuit/core"},scripts:{build:"tsup-node index.ts --format esm --dts",format:"biome format . --write","measure-bundle":"howfat -r table .","pkg-pr-new-release":"bunx pkg-pr-new publish --comment=off --peerDeps","smoke-test:dist":"bun run scripts/smoke-tests/test-dist-simple-circuit.tsx","build:benchmarking":"bun build --experimental-html ./benchmarking/website/index.html --outdir ./benchmarking-dist","build:benchmarking:watch":`chokidar "./{benchmarking,lib}/**/*.{ts,tsx}" -c 'bun build --experimental-html ./benchmarking/website/index.html --outdir ./benchmarking-dist'`,"start:benchmarking":'concurrently "bun run build:benchmarking:watch" "live-server ./benchmarking-dist"',"generate-test-plan":"bun run scripts/generate-test-plan.ts"},devDependencies:{"@biomejs/biome":"^1.8.3","@resvg/resvg-js":"^2.6.2","@tscircuit/capacity-autorouter":"^0.0.264","@tscircuit/checks":"^0.0.87","@tscircuit/circuit-json-util":"^0.0.77","@tscircuit/common":"^0.0.20","@tscircuit/copper-pour-solver":"^0.0.14","@tscircuit/footprinter":"^0.0.288","@tscircuit/infgrid-ijump-astar":"^0.0.35","@tscircuit/log-soup":"^1.0.2","@tscircuit/matchpack":"^0.0.16","@tscircuit/math-utils":"^0.0.29","@tscircuit/miniflex":"^0.0.4","@tscircuit/ngspice-spice-engine":"^0.0.8","@tscircuit/props":"^0.0.448","@tscircuit/schematic-match-adapt":"^0.0.16","@tscircuit/schematic-trace-solver":"^v0.0.45","@tscircuit/solver-utils":"^0.0.3","@types/bun":"^1.2.16","@types/debug":"^4.1.12","@types/react":"^19.1.8","@types/react-dom":"^19.1.6","@types/react-reconciler":"^0.28.9","bpc-graph":"^0.0.57","bun-match-svg":"0.0.12","calculate-elbow":"^0.0.12","chokidar-cli":"^3.0.0","circuit-json":"^0.0.357","circuit-json-to-bpc":"^0.0.13","circuit-json-to-connectivity-map":"^0.0.23","circuit-json-to-gltf":"^0.0.31","circuit-json-to-simple-3d":"^0.0.9","circuit-json-to-spice":"^0.0.33","circuit-to-svg":"^0.0.316",concurrently:"^9.1.2","connectivity-map":"^1.0.0",debug:"^4.3.6","eecircuit-engine":"^1.5.6",flatbush:"^4.5.0","graphics-debug":"^0.0.60",howfat:"^0.3.8","live-server":"^1.2.2","looks-same":"^9.0.1",minicssgrid:"^0.0.9","pkg-pr-new":"^0.0.37",poppygl:"^0.0.16",react:"^19.1.0","react-dom":"^19.1.0","schematic-symbols":"^0.0.206",spicey:"^0.0.14","ts-expect":"^1.3.0",tsup:"^8.2.4","@tscircuit/soup-util":"^0.0.41"},peerDependencies:{"@tscircuit/capacity-autorouter":"*","@tscircuit/checks":"*","@tscircuit/circuit-json-util":"*","@tscircuit/footprinter":"*","@tscircuit/infgrid-ijump-astar":"*","@tscircuit/math-utils":"*","@tscircuit/props":"*","@tscircuit/schematic-match-adapt":"*","circuit-json-to-bpc":"*","bpc-graph":"*","@tscircuit/matchpack":"*","circuit-json":"*","circuit-json-to-connectivity-map":"*","schematic-symbols":"*",typescript:"^5.0.0"},dependencies:{"@flatten-js/core":"^1.6.2","@lume/kiwi":"^0.4.3","calculate-packing":"0.0.68","css-select":"5.1.0","format-si-unit":"^0.0.3",nanoid:"^5.0.7","performance-now":"^2.1.0","react-reconciler":"^0.32.0","transformation-matrix":"^2.16.1",zod:"^3.25.67"}},RootCircuit=class{constructor({platform,projectUrl}={}){__publicField(this,"firstChild",null);__publicField(this,"children");__publicField(this,"db");__publicField(this,"root",null);__publicField(this,"isRoot",!0);__publicField(this,"_schematicDisabledOverride");__publicField(this,"pcbDisabled",!1);__publicField(this,"pcbRoutingDisabled",!1);__publicField(this,"_featureMspSchematicTraceRouting",!0);__publicField(this,"name");__publicField(this,"platform");__publicField(this,"projectUrl");__publicField(this,"_hasRenderedAtleastOnce",!1);__publicField(this,"_asyncEffectIdsByPhase",new Map);__publicField(this,"_asyncEffectPhaseById",new Map);__publicField(this,"_eventListeners",{});this.children=[],this.db=su2([]),this.root=this,this.platform=platform,this.projectUrl=projectUrl,this.pcbDisabled=platform?.pcbDisabled??!1}get schematicDisabled(){return this._schematicDisabledOverride!==void 0?this._schematicDisabledOverride:this._getBoard()?._parsedProps?.schematicDisabled??!1}set schematicDisabled(value){this._schematicDisabledOverride=value}add(componentOrElm){let component;(0,import_react4.isValidElement)(componentOrElm)?component=createInstanceFromReactElement(componentOrElm):component=componentOrElm,this.children.push(component)}setPlatform(platform){this.platform={...this.platform,...platform}}_getBoard(){let directBoard=this.children.find(c3=>c3.componentName==="Board");if(directBoard)return directBoard}_guessRootComponent(){if(this.firstChild)return;if(this.children.length===0)throw new Error("Not able to guess root component: RootCircuit has no children (use circuit.add(...))");let panels=this.children.filter(child=>child.lowercaseComponentName==="panel");if(panels.length>1)throw new Error("Only one <panel> is allowed per circuit");if(panels.length===1){if(this.children.length!==1)throw new Error("<panel> must be the root element of the circuit");this.firstChild=panels[0];return}if(this.children.length===1&&this.children[0].isGroup){this.firstChild=this.children[0];return}let group=new Group6({subcircuit:!0});group.parent=this,group.addAll(this.children),this.children=[group],this.firstChild=group}render(){this.firstChild||this._guessRootComponent();let{firstChild,db:db2}=this;if(!firstChild)throw new Error("RootCircuit has no root component");firstChild.parent=this,firstChild.runRenderCycle(),this._hasRenderedAtleastOnce=!0}async renderUntilSettled(){for(this.db.source_project_metadata.list()?.[0]||this.db.source_project_metadata.insert({software_used_string:`@tscircuit/core@${this.getCoreVersion()}`,...this.projectUrl?{project_url:this.projectUrl}:{}}),this.render();this._hasIncompleteAsyncEffects();)await new Promise(resolve=>setTimeout(resolve,100)),this.render();this.emit("renderComplete")}_hasIncompleteAsyncEffects(){return this._asyncEffectPhaseById.size>0?!0:this.children.some(child=>child._hasIncompleteAsyncEffects())}_hasIncompleteAsyncEffectsForPhase(phase){return(this._asyncEffectIdsByPhase.get(phase)?.size??0)>0}getCircuitJson(){return this._hasRenderedAtleastOnce||this.render(),this.db.toArray()}toJson(){return this.getCircuitJson()}async getSvg(options){let circuitToSvg=await Promise.resolve().then(()=>(init_dist8(),dist_exports3)).catch(e4=>{throw new Error(`To use circuit.getSvg, you must install the "circuit-to-svg" package.
623
623
 
624
- "${e4.message}"`)});if(options.view==="pcb")return circuitToSvg.convertCircuitJsonToPcbSvg(this.getCircuitJson());if(options.view==="schematic")return circuitToSvg.convertCircuitJsonToSchematicSvg(this.getCircuitJson());throw new Error(`Invalid view: ${options.view}`)}getCoreVersion(){let[major,minor,patch]=package_default3.version.split(".").map(Number);return`${major}.${minor}.${patch+1}`}async preview(previewNameOrOpts){let previewOpts=typeof previewNameOrOpts=="object"?previewNameOrOpts:{previewName:previewNameOrOpts};throw new Error("project.preview is not yet implemented")}computeSchematicGlobalTransform(){return identity()}_computePcbGlobalTransformBeforeLayout(){return identity()}selectAll(selector){return this._guessRootComponent(),this.firstChild?.selectAll(selector)??[]}selectOne(selector,opts){return this._guessRootComponent(),this.firstChild?.selectOne(selector,opts)??null}emit(event,...args){if(event==="asyncEffect:start"?this._registerAsyncEffectStart(args[0]):event==="asyncEffect:end"&&this._registerAsyncEffectEnd(args[0]),!!this._eventListeners[event])for(let listener of this._eventListeners[event])listener(...args)}on(event,listener){this._eventListeners[event]||(this._eventListeners[event]=[]),this._eventListeners[event].push(listener)}removeListener(event,listener){this._eventListeners[event]&&(this._eventListeners[event]=this._eventListeners[event].filter(l2=>l2!==listener))}enableDebug(debug112){typeof debug112=="string"?import_debug18.default.enable(debug112):(debug112===null||debug112===!1)&&import_debug18.default.disable()}getClientOrigin(){return typeof window<"u"&&window.location?window.location.origin:typeof self<"u"&&self.location?self.location.origin:""}_registerAsyncEffectStart(payload){if(!payload?.asyncEffectId||!payload.phase)return;let{asyncEffectId,phase}=payload,existingPhase=this._asyncEffectPhaseById.get(asyncEffectId);existingPhase&&existingPhase!==phase&&this._asyncEffectIdsByPhase.get(existingPhase)?.delete(asyncEffectId),this._asyncEffectIdsByPhase.has(phase)||this._asyncEffectIdsByPhase.set(phase,new Set),this._asyncEffectIdsByPhase.get(phase).add(asyncEffectId),this._asyncEffectPhaseById.set(asyncEffectId,phase)}_registerAsyncEffectEnd(payload){if(!payload?.asyncEffectId)return;let{asyncEffectId}=payload,phase=this._asyncEffectPhaseById.get(asyncEffectId)??payload.phase;if(phase){let phaseSet=this._asyncEffectIdsByPhase.get(phase);phaseSet?.delete(asyncEffectId),phaseSet&&phaseSet.size===0&&this._asyncEffectIdsByPhase.delete(phase)}this._asyncEffectPhaseById.delete(asyncEffectId)}},Project=RootCircuit,Circuit=RootCircuit,useRenderedCircuit=reactElements=>{let[isLoading,setIsLoading]=import_react5.default.useState(!0),[error,setError]=import_react5.default.useState(null),[circuit,setCircuit]=import_react5.default.useState(),[circuitJson,setCircuitJson]=import_react5.default.useState();return import_react5.default.useEffect(()=>{setIsLoading(!0),setError(null),reactElements&&setTimeout(()=>{try{let circuit2=new RootCircuit;circuit2.add(reactElements),setCircuit(circuit2),setCircuitJson(circuit2.toJson())}catch(error2){setError(error2)}setIsLoading(!1)},1)},[reactElements]),{isLoading,error,circuit,circuitJson}},createUseComponent=(Component2,pins)=>(name,props)=>{let pinLabelsFlatArray=[];Array.isArray(pins)?pinLabelsFlatArray.push(...pins.flat()):typeof pins=="object"&&pinLabelsFlatArray.push(...Object.values(pins).flat(),...Object.keys(pins));let R4=props2=>{if(props2?.name&&props2.name!==name)throw new Error(`Component name mismatch. Hook name: ${name}, Component prop name: ${props2.name}`);let combinedProps={...props,...props2,name},tracesToCreate=[];for(let portLabel of pinLabelsFlatArray)if(combinedProps[portLabel]){let from=`.${name} > .${portLabel}`,to3=combinedProps[portLabel];tracesToCreate.push({from,to:to3}),delete combinedProps[portLabel]}return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(Component2,{...combinedProps}),tracesToCreate.map((trace,i3)=>(0,import_jsx_runtime.jsx)("trace",{...trace},i3))]})};for(let port of pinLabelsFlatArray)R4[port]=`.${name} > .${port}`;return R4},useCapacitor=createUseComponent(props=>(0,import_jsx_runtime2.jsx)("capacitor",{...props}),capacitorPins),useChip=pinLabels=>createUseComponent(props=>(0,import_jsx_runtime3.jsx)("chip",{pinLabels,...props}),pinLabels),useDiode=createUseComponent(props=>(0,import_jsx_runtime4.jsx)("diode",{...props}),diodePins),useLed=createUseComponent(props=>(0,import_jsx_runtime5.jsx)("led",{...props}),ledPins),useResistor=createUseComponent(props=>(0,import_jsx_runtime6.jsx)("resistor",{...props}),resistorPins),sel=new Proxy(refdes=>new Proxy({},{get:(_4,pin)=>`.${refdes} > .${pin}`}),{get:(_4,prop1)=>{let fn3=(...args)=>{let chipFnOrPinType=args[0];return new Proxy({},{get:(_22,pinName)=>`.${prop1} > .${pinName}`})};return new Proxy(fn3,{get:(_22,prop2)=>prop1==="net"?`net.${prop2}`:prop1==="subcircuit"?new Proxy({},{get:(_32,prop3)=>new Proxy({},{get:(_42,prop4)=>`subcircuit.${prop2} > .${prop3} > .${prop4}`})}):`.${prop1} > .${prop2}`,apply:(target,_22,args)=>prop1==="net"?new Proxy({},{get:(_32,netName)=>`net.${netName}`}):new Proxy({},{get:(_32,pinOrSubComponentName)=>{let pinResult=`.${prop1} > .${pinOrSubComponentName}`;return["U","J","CN"].some(p2=>prop1.startsWith(p2))?pinResult:new Proxy(new String(pinResult),{get:(_42,nestedProp)=>typeof nestedProp=="symbol"||nestedProp==="toString"?()=>pinResult:`.${prop1} > .${pinOrSubComponentName} > .${nestedProp}`})}})})}});extendCatalogue(components_exports);extendCatalogue({Bug:Chip});var React=__toESM(require_react(),1),ReactJsxRuntime=__toESM(require_jsx_runtime(),1);var getFootprinterStringFromKicad=kicadFootprint=>{let match2=kicadFootprint.match(/:[RC]_(\d{4})_/);if(match2||(match2=kicadFootprint.match(/:(SOIC-\d+|SOT-\d+|SOD-\d+|SSOP-\d+|TSSOP-\d+|QFP-\d+|QFN-\d+)/),match2))return match2[1]};var getJlcPackageFromFootprinterString=footprinterString=>footprinterString.includes("cap")?footprinterString.replace(/cap/g,""):footprinterString;var getJlcpcbPackageName=footprint=>{if(footprint){if(footprint.startsWith("kicad:")){let footprinterString=getFootprinterStringFromKicad(footprint);return footprinterString?getJlcPackageFromFootprinterString(footprinterString):footprint}return getJlcPackageFromFootprinterString(footprint)}};var cache=new Map,getJlcPartsCached=async(name,params)=>{let paramString=new URLSearchParams({...params,json:"true"}).toString();if(cache.has(paramString))return cache.get(paramString);let responseJson=await(await fetch(`https://jlcsearch.tscircuit.com/${name}/list?${paramString}`)).json();return cache.set(paramString,responseJson),responseJson},withBasicPartPreference=parts=>parts?[...parts].sort((a2,b3)=>Number(b3.is_basic??!1)-Number(a2.is_basic??!1)):[],jlcPartsEngine={findPart:async({sourceComponent,footprinterString})=>{let jlcpcbPackage=getJlcpcbPackageName(footprinterString);if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_resistor"){let{resistors}=await getJlcPartsCached("resistors",{resistance:sourceComponent.resistance,package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(resistors).map(r4=>`C${r4.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_capacitor"){let{capacitors}=await getJlcPartsCached("capacitors",{capacitance:sourceComponent.capacitance,package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(capacitors).map(c3=>`C${c3.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_pin_header"){let pitch;footprinterString?.includes("_p")&&(pitch=Number(footprinterString.split("_p")[1]));let{headers}=await getJlcPartsCached("headers",pitch?{pitch,num_pins:sourceComponent.pin_count,gender:sourceComponent.gender}:{num_pins:sourceComponent.pin_count,gender:sourceComponent.gender});return{jlcpcb:withBasicPartPreference(headers).map(h2=>`C${h2.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_potentiometer"){let{potentiometers}=await getJlcPartsCached("potentiometers",{resistance:sourceComponent.max_resistance,package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(potentiometers).map(p2=>`C${p2.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_diode"){let{diodes}=await getJlcPartsCached("diodes",{package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(diodes).map(d3=>`C${d3.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_chip"){if(!jlcpcbPackage||!footprinterString)return{};let{chips}=await getJlcPartsCached("chips",{package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(chips).map(c3=>`C${c3.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_transistor"){let{transistors}=await getJlcPartsCached("transistors",{package:jlcpcbPackage,transistor_type:sourceComponent.transistor_type});return{jlcpcb:withBasicPartPreference(transistors).map(t5=>`C${t5.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_power_source"){let{power_sources}=await getJlcPartsCached("power_sources",{voltage:sourceComponent.voltage,package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(power_sources).map(p2=>`C${p2.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_inductor"){let{inductors}=await getJlcPartsCached("inductors",{inductance:sourceComponent.inductance,package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(inductors).map(i3=>`C${i3.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_crystal"){let{crystals}=await getJlcPartsCached("crystals",{frequency:sourceComponent.frequency,load_capacitance:sourceComponent.load_capacitance,package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(crystals).map(c3=>`C${c3.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_mosfet"){let{mosfets}=await getJlcPartsCached("mosfets",{package:jlcpcbPackage,mosfet_mode:sourceComponent.mosfet_mode,channel_type:sourceComponent.channel_type});return{jlcpcb:withBasicPartPreference(mosfets).map(m3=>`C${m3.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_resonator"){let{resonators}=await getJlcPartsCached("resonators",{frequency:sourceComponent.frequency,package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(resonators).map(r4=>`C${r4.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_switch"){let{switches}=await getJlcPartsCached("switches",{switch_type:sourceComponent.type,package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(switches).map(s3=>`C${s3.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_led"){let{leds}=await getJlcPartsCached("leds",{package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(leds).map(l2=>`C${l2.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_fuse"){let{fuses}=await getJlcPartsCached("fuses",{package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(fuses).map(l2=>`C${l2.lcsc}`).slice(0,3)}}return{}}};var import_s_expression=__toESM(require_s_expression(),1);init_zod();var import_debug19=__toESM(require_browser(),1),import_debug20=__toESM(require_browser(),1),point22=external_exports.tuple([external_exports.coerce.number(),external_exports.coerce.number()]),point33=external_exports.tuple([external_exports.number(),external_exports.number(),external_exports.number()]),point5=external_exports.union([point22,point33]),fp_poly_arc_segment_def=external_exports.object({kind:external_exports.literal("arc"),start:point22,mid:point22,end:point22}),fp_poly_point_def=external_exports.union([point22,fp_poly_arc_segment_def]),attributes_def=external_exports.object({at:point5,size:point22,layer:external_exports.string(),layers:external_exports.array(external_exports.string()),roundrect_rratio:external_exports.number(),uuid:external_exports.string()}).partial(),property_def=external_exports.object({key:external_exports.string(),val:external_exports.string(),attributes:attributes_def}),drill_def=external_exports.object({oval:external_exports.boolean().default(!1),width:external_exports.number().optional(),height:external_exports.number().optional(),offset:point22.optional()}),hole_def=external_exports.object({name:external_exports.string(),pad_type:external_exports.enum(["thru_hole","smd","np_thru_hole","connect"]),pad_shape:external_exports.enum(["roundrect","circle","rect","oval","trapezoid","custom"]),at:point5,drill:external_exports.union([external_exports.number(),external_exports.array(external_exports.any()),drill_def]).transform(a2=>typeof a2=="number"?{oval:!1,width:a2,height:a2}:"oval"in a2?a2:a2.length===2?{oval:!1,width:Number.parseFloat(a2[0]),height:Number.parseFloat(a2[0]),offset:point22.parse(a2[1].slice(1))}:a2.length===3||a2.length===4?{oval:a2[0]==="oval",width:Number.parseFloat(a2[1]),height:Number.parseFloat(a2[2]),offset:a2[3]?point22.parse(a2[3].slice(1)):void 0}:a2).pipe(drill_def),size:external_exports.union([external_exports.array(external_exports.number()).length(2).transform(([w4,h2])=>({width:w4,height:h2})),external_exports.object({width:external_exports.number(),height:external_exports.number()})]),layers:external_exports.array(external_exports.string()).optional(),roundrect_rratio:external_exports.number().optional(),uuid:external_exports.string().optional()}),pad_def2=external_exports.object({name:external_exports.string(),pad_type:external_exports.enum(["thru_hole","smd","np_thru_hole","connect"]),pad_shape:external_exports.enum(["roundrect","circle","rect","oval","trapezoid","custom"]),at:point5,size:point22,drill:external_exports.union([external_exports.number(),external_exports.array(external_exports.any()),drill_def]).transform(a2=>typeof a2=="number"?{oval:!1,width:a2,height:a2}:"oval"in a2?a2:a2.length===2?{oval:!1,width:Number.parseFloat(a2[0]),height:Number.parseFloat(a2[0]),offset:point22.parse(a2[1].slice(1))}:a2.length===3||a2.length===4?{oval:a2[0]==="oval",width:Number.parseFloat(a2[1]),height:Number.parseFloat(a2[2]),offset:a2[3]?point22.parse(a2[3].slice(1)):void 0}:a2).pipe(drill_def).optional(),layers:external_exports.array(external_exports.string()).optional(),roundrect_rratio:external_exports.number().optional(),chamfer_ratio:external_exports.number().optional(),solder_paste_margin:external_exports.number().optional(),solder_paste_margin_ratio:external_exports.number().optional(),clearance:external_exports.number().optional(),zone_connection:external_exports.union([external_exports.literal(0).describe("Pad is not connect to zone"),external_exports.literal(1).describe("Pad is connected to zone using thermal relief"),external_exports.literal(2).describe("Pad is connected to zone using solid fill")]).optional(),thermal_width:external_exports.number().optional(),thermal_gap:external_exports.number().optional(),uuid:external_exports.string().optional()}),effects_def=external_exports.object({font:external_exports.object({size:point22,thickness:external_exports.number().optional()})}).partial(),fp_text_def=external_exports.object({fp_text_type:external_exports.literal("user"),text:external_exports.string(),at:point5,layer:external_exports.string(),uuid:external_exports.string().optional(),effects:effects_def.partial()}),fp_arc_def=external_exports.object({start:point22,mid:point22,end:point22,stroke:external_exports.object({width:external_exports.number(),type:external_exports.string()}),layer:external_exports.string(),uuid:external_exports.string().optional()}),fp_circle_def=external_exports.object({center:point22,end:point22,stroke:external_exports.object({width:external_exports.number(),type:external_exports.string()}),fill:external_exports.string().optional(),layer:external_exports.string(),uuid:external_exports.string().optional()}),fp_poly_def=external_exports.object({pts:external_exports.array(fp_poly_point_def),stroke:external_exports.object({width:external_exports.number(),type:external_exports.string()}).optional(),width:external_exports.number().optional(),layer:external_exports.string(),uuid:external_exports.string().optional(),fill:external_exports.string().optional()}).transform(data=>({...data,width:void 0,stroke:data.stroke??{width:data.width}})),fp_line=external_exports.object({start:point22,end:point22,stroke:external_exports.object({width:external_exports.number(),type:external_exports.string()}).optional(),width:external_exports.number().optional(),layer:external_exports.string(),uuid:external_exports.string().optional()}).transform(data=>({...data,width:void 0,stroke:data.stroke??{width:data.width}})),kicad_mod_json_def=external_exports.object({footprint_name:external_exports.string(),version:external_exports.string().optional(),generator:external_exports.string().optional(),generator_version:external_exports.string().optional(),layer:external_exports.string(),descr:external_exports.string().default(""),tags:external_exports.array(external_exports.string()).optional(),properties:external_exports.array(property_def),fp_lines:external_exports.array(fp_line),fp_texts:external_exports.array(fp_text_def),fp_arcs:external_exports.array(fp_arc_def),fp_circles:external_exports.array(fp_circle_def).optional(),fp_polys:external_exports.array(fp_poly_def).optional(),pads:external_exports.array(pad_def2),holes:external_exports.array(hole_def).optional()}),formatAttr=(val,attrKey)=>{if(attrKey==="effects"&&Array.isArray(val)){let effectsObj={};for(let elm of val)if(elm[0]==="font"){let fontObj={};for(let fontElm of elm.slice(1))fontElm.length===2?fontObj[fontElm[0].valueOf()]=Number.parseFloat(fontElm[1].valueOf()):fontObj[fontElm[0].valueOf()]=fontElm.slice(1).map(n3=>Number.parseFloat(n3.valueOf()));effectsObj.font=fontObj}return effects_def.parse(effectsObj)}if(attrKey==="pts")return val.map(segment2=>{let segmentType=segment2[0]?.valueOf?.()??segment2[0];if(segmentType==="xy")return segment2.slice(1).map(n3=>Number.parseFloat(n3.valueOf()));if(segmentType==="arc"){let arcObj={kind:"arc"};for(let arcAttr of segment2.slice(1)){let key=arcAttr[0].valueOf();arcObj[key]=arcAttr.slice(1).map(n3=>Number.parseFloat(n3.valueOf()))}return arcObj}return segment2});if(attrKey==="stroke"){let strokeObj={};for(let strokeElm of val){let strokePropKey=strokeElm[0].valueOf();strokeObj[strokePropKey]=formatAttr(strokeElm.slice(1),strokePropKey)}return strokeObj}return attrKey==="at"||attrKey==="size"||attrKey==="start"||attrKey==="mid"||attrKey==="end"?(Array.isArray(val)?val:[val]).map(n3=>n3?.valueOf?.()??n3).filter(v4=>typeof v4=="number"||typeof v4=="string"&&/^[-+]?\d*\.?\d+(e[-+]?\d+)?$/i.test(v4)).map(v4=>typeof v4=="number"?v4:Number.parseFloat(v4)):attrKey==="tags"?val.map(n3=>n3.valueOf()):attrKey==="generator_version"||attrKey==="version"?val[0].valueOf():val.length===2?val.valueOf():attrKey==="uuid"?Array.isArray(val)?val[0].valueOf():val.valueOf():/^[\d\.]+$/.test(val)&&!Number.isNaN(Number.parseFloat(val))?Number.parseFloat(val):Array.isArray(val)&&val.length===1?val[0].valueOf():Array.isArray(val)?val.map(s3=>s3.valueOf()):val},getAttr=(s3,key)=>{for(let elm of s3)if(Array.isArray(elm)&&elm[0]===key)return formatAttr(elm.slice(1),key)},debug11=(0,import_debug19.default)("kicad-mod-converter"),parseKicadModToKicadJson=fileContent=>{let kicadSExpr=(0,import_s_expression.default)(fileContent),footprintName=kicadSExpr[1].valueOf(),topLevelAttributes={},simpleTopLevelAttributes=Object.entries(kicad_mod_json_def.shape).filter(([attributeKey,def])=>def._def.typeName==="ZodString"||attributeKey==="tags").map(([attributeKey])=>attributeKey);for(let kicadSExprRow of kicadSExpr.slice(2)){if(!simpleTopLevelAttributes.includes(kicadSExprRow[0]))continue;let key=kicadSExprRow[0].valueOf(),val=formatAttr(kicadSExprRow.slice(1),key);topLevelAttributes[key]=val}let properties=kicadSExpr.slice(2).filter(row=>row[0]==="property").map(row=>{let key=row[1].valueOf(),val=row[2].valueOf(),attributes2=attributes_def.parse(row.slice(3).reduce((acc,attrAr)=>{let attrKey=attrAr[0].valueOf();return acc[attrKey]=formatAttr(attrAr.slice(1),attrKey),acc},{}));return{key,val,attributes:attributes2}}),padRows=kicadSExpr.slice(2).filter(row=>row[0]==="pad"),pads=[];for(let row of padRows){let at3=getAttr(row,"at"),size2=getAttr(row,"size"),drill=getAttr(row,"drill"),layers=getAttr(row,"layers");if(Array.isArray(layers)?layers=layers.map(layer=>layer.valueOf()):typeof layers=="string"?layers=[layers]:layers||(layers=[]),!layers.includes("F.Cu")){debug11(`Skipping pad without F.Cu layer: layers=${layers.join(", ")}`);continue}let roundrect_rratio=getAttr(row,"roundrect_rratio"),uuid=getAttr(row,"uuid"),padRaw={name:row[1].valueOf(),pad_type:row[2].valueOf(),pad_shape:row[3].valueOf(),at:at3,drill,size:size2,layers,roundrect_rratio,uuid};debug11(`attempting to parse pad: ${JSON.stringify(padRaw,null," ")}`),pads.push(pad_def2.parse(padRaw))}let fp_texts_rows=kicadSExpr.slice(2).filter(row=>row[0]==="fp_text"),fp_texts=[];for(let fp_text_row of fp_texts_rows){let text=fp_text_row[2].valueOf(),at3=getAttr(fp_text_row,"at"),layer=getAttr(fp_text_row,"layer"),uuid=getAttr(fp_text_row,"uuid"),effects=getAttr(fp_text_row,"effects");fp_texts.push({fp_text_type:"user",text,at:at3,layer,uuid,effects})}let fp_lines=[],fp_lines_rows=kicadSExpr.slice(2).filter(row=>row[0]==="fp_line");for(let fp_line_row of fp_lines_rows){let start=getAttr(fp_line_row,"start"),end=getAttr(fp_line_row,"end"),stroke=getAttr(fp_line_row,"stroke"),layer=getAttr(fp_line_row,"layer"),uuid=getAttr(fp_line_row,"uuid");fp_lines.push({start,end,stroke,layer,uuid})}let fp_arcs=[],fp_arcs_rows=kicadSExpr.slice(2).filter(row=>row[0]==="fp_arc");for(let fp_arc_row of fp_arcs_rows){let start=getAttr(fp_arc_row,"start"),mid=getAttr(fp_arc_row,"mid"),end=getAttr(fp_arc_row,"end"),stroke=getAttr(fp_arc_row,"stroke"),layer=getAttr(fp_arc_row,"layer"),uuid=getAttr(fp_arc_row,"uuid");!start||!end||!mid||!stroke||!layer||fp_arcs.push({start,mid,end,stroke,layer,uuid})}let fp_circles=[],fp_circles_rows=kicadSExpr.slice(2).filter(row=>row[0]==="fp_circle");for(let fp_circle_row of fp_circles_rows){let center2=getAttr(fp_circle_row,"center"),end=getAttr(fp_circle_row,"end"),stroke=getAttr(fp_circle_row,"stroke"),fill=getAttr(fp_circle_row,"fill"),layer=getAttr(fp_circle_row,"layer"),uuid=getAttr(fp_circle_row,"uuid");!center2||!end||!stroke||!layer||fp_circles.push({center:center2,end,stroke,fill,layer,uuid})}let fp_polys=[],fp_polys_rows=kicadSExpr.slice(2).filter(row=>row[0]==="fp_poly");for(let fp_poly_row of fp_polys_rows){let pts=getAttr(fp_poly_row,"pts"),stroke=getAttr(fp_poly_row,"stroke"),width=getAttr(fp_poly_row,"width"),layer=getAttr(fp_poly_row,"layer"),uuid=getAttr(fp_poly_row,"uuid"),fill=getAttr(fp_poly_row,"fill"),normalizedStroke=stroke;!normalizedStroke&&typeof width=="number"?normalizedStroke={width,type:"solid"}:normalizedStroke&&typeof normalizedStroke=="object"&&typeof width=="number"&&normalizedStroke.width===void 0&&(normalizedStroke={...normalizedStroke,width}),fp_polys.push({pts,stroke:normalizedStroke,layer,uuid,fill})}let holes=[];for(let row of kicadSExpr.slice(2)){if(row[0]!=="pad"||row[2]?.valueOf?.()!=="thru_hole")continue;let name=row[1]?.valueOf?.(),pad_type=row[2]?.valueOf?.(),pad_shape=row[3]?.valueOf?.(),at3=getAttr(row,"at"),drill=getAttr(row,"drill"),size2=getAttr(row,"size");Array.isArray(size2)&&(size2[0]==="size"&&(size2=size2.slice(1)),size2={width:Number(size2[0]),height:Number(size2[1])});let uuid=getAttr(row,"uuid"),roundrect_rratio=getAttr(row,"roundrect_rratio"),layers=getAttr(row,"layers");Array.isArray(layers)?layers=layers.map(layer=>layer.valueOf()):typeof layers=="string"?layers=[layers]:layers||(layers=[]);let holeRaw={name,pad_type,pad_shape,at:at3,drill,size:size2,layers,roundrect_rratio,uuid};debug11(`attempting to parse holes: ${JSON.stringify(holeRaw,null,2)}`),holes.push(hole_def.parse(holeRaw))}return kicad_mod_json_def.parse({footprint_name:footprintName,...topLevelAttributes,properties,fp_lines,fp_texts,fp_arcs,fp_circles,pads,holes,fp_polys})},TWO_PI=Math.PI*2,normalizeAngle2=angle=>{let result=angle%TWO_PI;return result<0&&(result+=TWO_PI),result},directedAngleCCW=(start,target)=>{let startNorm=normalizeAngle2(start),delta=normalizeAngle2(target)-startNorm;return delta<0&&(delta+=TWO_PI),delta};function calculateCenter(start,mid,end){let mid1={x:(start.x+mid.x)/2,y:(start.y+mid.y)/2},mid2={x:(mid.x+end.x)/2,y:(mid.y+end.y)/2},slope1=-(start.x-mid.x)/(start.y-mid.y),slope2=-(mid.x-end.x)/(mid.y-end.y),centerX=(mid1.y-mid2.y+slope2*mid2.x-slope1*mid1.x)/(slope2-slope1),centerY=mid1.y+slope1*(centerX-mid1.x);return{x:centerX,y:centerY}}function calculateRadius(center2,point42){return Math.sqrt((center2.x-point42.x)**2+(center2.y-point42.y)**2)}function calculateAngle(center2,point42){return Math.atan2(point42.y-center2.y,point42.x-center2.x)}var getArcLength=(start,mid,end)=>{let center2=calculateCenter(start,mid,end),radius=calculateRadius(center2,start),angleStart=calculateAngle(center2,start),angleMid=calculateAngle(center2,mid),angleEnd=calculateAngle(center2,end),ccwToMid=directedAngleCCW(angleStart,angleMid),ccwToEnd=directedAngleCCW(angleStart,angleEnd),angleDelta=ccwToEnd;return ccwToMid>ccwToEnd&&(angleDelta=ccwToEnd-TWO_PI),Math.abs(radius*angleDelta)};function generateArcPath(start,mid,end,numPoints){let center2=calculateCenter(start,mid,end),radius=calculateRadius(center2,start),angleStart=calculateAngle(center2,start),angleMid=calculateAngle(center2,mid),angleEnd=calculateAngle(center2,end),ccwToMid=directedAngleCCW(angleStart,angleMid),ccwToEnd=directedAngleCCW(angleStart,angleEnd),angleDelta=ccwToEnd;ccwToMid>ccwToEnd&&(angleDelta=ccwToEnd-TWO_PI);let path=[];for(let i3=0;i3<=numPoints;i3++){let angle=angleStart+i3/numPoints*angleDelta,x3=center2.x+radius*Math.cos(angle),y3=center2.y+radius*Math.sin(angle);path.push({x:x3,y:y3})}return path}var makePoint=p2=>Array.isArray(p2)?{x:p2[0],y:p2[1]}:p2,pointsEqual=(p12,p2,tolerance=1e-4)=>Math.abs(p12.x-p2.x)<tolerance&&Math.abs(p12.y-p2.y)<tolerance,findClosedPolygons=segments=>{let polygons=[],used=new Set;for(let i3=0;i3<segments.length;i3++){if(used.has(i3))continue;let polygon2=[segments[i3]];used.add(i3);let currentEnd=segments[i3].end,foundNext=!0;for(;foundNext;){if(foundNext=!1,polygon2.length>1&&pointsEqual(currentEnd,polygon2[0].start)){polygons.push(polygon2);break}for(let j3=0;j3<segments.length;j3++)if(!used.has(j3)){if(pointsEqual(currentEnd,segments[j3].start)){polygon2.push(segments[j3]),used.add(j3),currentEnd=segments[j3].end,foundNext=!0;break}else if(pointsEqual(currentEnd,segments[j3].end)){segments[j3].type==="arc"?polygon2.push({...segments[j3],reversed:!0}):polygon2.push({...segments[j3],start:segments[j3].end,end:segments[j3].start}),used.add(j3),currentEnd=segments[j3].start,foundNext=!0;break}}if(!foundNext){for(let k4=polygon2.length-1;k4>=0;k4--){let idx=segments.indexOf(polygon2[k4]);idx!==-1&&used.delete(idx)}break}}}return polygons},polygonToPoints=polygon2=>{let points=[];for(let segment2 of polygon2)if(segment2.type==="line")points.push(segment2.start);else if(segment2.type==="arc"&&segment2.mid){let arcLength=getArcLength(segment2.start,segment2.mid,segment2.end),numPoints=Math.max(3,Math.ceil(arcLength)),arcPoints=generateArcPath(segment2.start,segment2.mid,segment2.end,numPoints);segment2.reversed&&(arcPoints=arcPoints.reverse()),points.push(...arcPoints.slice(0,-1))}return points};function getSilkscreenFontSizeFromFpTexts(fp_texts){if(!Array.isArray(fp_texts))return null;let refText=fp_texts.find(t5=>t5.layer?.toLowerCase()==="f.silks"&&(t5.text?.includes("${REFERENCE}")||t5.fp_text_type?.toLowerCase()==="reference"||t5.text?.match(/^R\d+|C\d+|U\d+/))),fallbackText=refText||fp_texts.find(t5=>t5.layer?.toLowerCase()==="f.fab"&&(t5.text?.includes("${REFERENCE}")||t5.fp_text_type?.toLowerCase()==="reference")),target=refText||fallbackText;if(!target?.effects?.font?.size)return null;let[width,height]=target.effects.font.size;return height??width??1}var degToRad=deg=>deg*Math.PI/180,rotatePoint3=(x3,y3,deg)=>{let r4=degToRad(deg),cos4=Math.cos(r4),sin4=Math.sin(r4);return{x:x3*cos4-y3*sin4,y:x3*sin4+y3*cos4}},getAxisAlignedRectFromPoints=points=>{let uniquePoints=[...new Map(points.map(p2=>[`${p2.x},${p2.y}`,p2])).values()];if(uniquePoints.length!==4)return null;let xs3=uniquePoints.map(p2=>p2.x),ys3=uniquePoints.map(p2=>p2.y),uniqueXs=[...new Set(xs3)],uniqueYs=[...new Set(ys3)];if(uniqueXs.length!==2||uniqueYs.length!==2)return null;let[minX,maxX]=uniqueXs.sort((a2,b3)=>a2-b3),[minY,maxY]=uniqueYs.sort((a2,b3)=>a2-b3);return minX===void 0||maxX===void 0||minY===void 0||maxY===void 0?null:{x:(minX+maxX)/2,y:(minY+maxY)/2,width:maxX-minX,height:maxY-minY}},fpPolyHasFill=fill=>{if(!fill)return!1;let normalized=fill.toLowerCase();return normalized!=="no"&&normalized!=="none"&&normalized!=="outline"},getRotationDeg=at3=>at3&&Array.isArray(at3)&&at3.length>=3&&typeof at3[2]=="number"?at3[2]:0,isNinetyLike=deg=>{let n3=(deg%360+360)%360;return n3===90||n3===270},normalizePortName=name=>{if(name!=null)return`${name}`},getPinNumber=name=>{let normalized=normalizePortName(name),parsed=normalized!==void 0?Number(normalized):NaN;return Number.isFinite(parsed)?parsed:void 0},debug23=(0,import_debug20.default)("kicad-mod-converter"),convertKicadLayerToTscircuitLayer=kicadLayer=>{switch(kicadLayer.toLowerCase()){case"f.cu":case"f.fab":case"f.silks":case"edge.cuts":return"top";case"b.cu":case"b.fab":case"b.silks":return"bottom"}},convertKicadJsonToTsCircuitSoup=async kicadJson=>{let{fp_lines,fp_texts,fp_arcs,fp_circles,pads,properties,holes,fp_polys}=kicadJson,circuitJson=[];circuitJson.push({type:"source_component",source_component_id:"source_component_0",supplier_part_numbers:{}}),circuitJson.push({type:"schematic_component",schematic_component_id:"schematic_component_0",source_component_id:"source_component_0",center:{x:0,y:0},rotation:0,size:{width:0,height:0}});let portNames=new Set,portNameToPinNumber=new Map;for(let pad2 of pads){let portName=normalizePortName(pad2.name);if(portName){portNames.add(portName);let pinNumber=getPinNumber(pad2.name);pinNumber!==void 0&&portNameToPinNumber.set(portName,pinNumber)}}if(holes)for(let hole of holes){let portName=normalizePortName(hole.name);if(portName){portNames.add(portName);let pinNumber=getPinNumber(hole.name);pinNumber!==void 0&&portNameToPinNumber.set(portName,pinNumber)}}let sourcePortId=0,portNameToSourcePortId=new Map;for(let portName of portNames){let source_port_id=`source_port_${sourcePortId++}`;portNameToSourcePortId.set(portName,source_port_id);let pinNumber=portNameToPinNumber.get(portName);circuitJson.push({type:"source_port",source_port_id,source_component_id:"source_component_0",name:portName,port_hints:[portName],pin_number:pinNumber,pin_label:pinNumber!==void 0?`pin${pinNumber}`:void 0}),circuitJson.push({type:"schematic_port",schematic_port_id:`schematic_port_${sourcePortId++}`,source_port_id,schematic_component_id:"schematic_component_0",center:{x:0,y:0}})}let minX=Number.POSITIVE_INFINITY,maxX=Number.NEGATIVE_INFINITY,minY=Number.POSITIVE_INFINITY,maxY=Number.NEGATIVE_INFINITY;for(let pad2 of pads){let x3=pad2.at[0],y3=-pad2.at[1],w4=pad2.size[0],h2=pad2.size[1];minX=Math.min(minX,x3-w4/2),maxX=Math.max(maxX,x3+w4/2),minY=Math.min(minY,y3-h2/2),maxY=Math.max(maxY,y3+h2/2)}let pcb_component_id="pcb_component_0";circuitJson.push({type:"pcb_component",source_component_id:"source_component_0",pcb_component_id,layer:"top",center:{x:0,y:0},rotation:0,width:Number.isFinite(minX)?maxX-minX:0,height:Number.isFinite(minY)?maxY-minY:0});let pcbPortId=0,portNameToPcbPortId=new Map;for(let portName of portNames){let pcb_port_id=`pcb_port_${pcbPortId++}`,source_port_id=portNameToSourcePortId.get(portName);portNameToPcbPortId.set(portName,pcb_port_id);let x3=0,y3=0,layers=["top","bottom"],pad2=pads.find(p2=>normalizePortName(p2.name)===portName);if(pad2)x3=pad2.at[0],y3=-pad2.at[1],layers=pad2.layers?pad2.layers.map(l2=>convertKicadLayerToTscircuitLayer(l2)).filter(Boolean):["top","bottom"];else if(holes){let hole=holes.find(h2=>normalizePortName(h2.name)===portName);hole&&(x3=hole.at[0],y3=-hole.at[1],layers=hole.layers?hole.layers.map(l2=>convertKicadLayerToTscircuitLayer(l2)).filter(Boolean):["top","bottom"])}circuitJson.push({type:"pcb_port",pcb_port_id,source_port_id,pcb_component_id,x:x3,y:y3,layers})}let smtpadId=0,platedHoleId=0,holeId=0;for(let pad2 of pads){let portName=normalizePortName(pad2.name),pinNumber=portName?portNameToPinNumber.get(portName):void 0;if(pad2.pad_type==="smd"){let rotation4=getRotationDeg(pad2.at),width=isNinetyLike(rotation4)?pad2.size[1]:pad2.size[0],height=isNinetyLike(rotation4)?pad2.size[0]:pad2.size[1],pcb_port_id=portName?portNameToPcbPortId.get(portName):void 0,pinLabel=pinNumber!==void 0?`pin${pinNumber}`:void 0;circuitJson.push({type:"pcb_smtpad",pcb_smtpad_id:`pcb_smtpad_${smtpadId++}`,shape:"rect",x:pad2.at[0],y:-pad2.at[1],width,height,layer:convertKicadLayerToTscircuitLayer(pad2.layers?.[0]??"F.Cu"),pcb_component_id,port_hints:pinLabel?[pinLabel]:portName?[portName]:[],pcb_port_id,pin_number:pinNumber,pin_label:pinLabel})}else if(pad2.pad_type==="thru_hole"){if(pad2.pad_shape==="rect"){let rotation4=getRotationDeg(pad2.at),width=isNinetyLike(rotation4)?pad2.size[1]:pad2.size[0],height=isNinetyLike(rotation4)?pad2.size[0]:pad2.size[1],offX=pad2.drill?.offset?.[0]??0,offY=pad2.drill?.offset?.[1]??0,rotOff=rotatePoint3(offX,offY,rotation4),pcb_port_id=portName?portNameToPcbPortId.get(portName):void 0,pinLabel=pinNumber!==void 0?`pin${pinNumber}`:void 0;circuitJson.push({type:"pcb_plated_hole",pcb_plated_hole_id:`pcb_plated_hole_${platedHoleId++}`,shape:"circular_hole_with_rect_pad",hole_shape:"circle",pad_shape:"rect",x:pad2.at[0],y:-pad2.at[1],hole_offset_x:-rotOff.x,hole_offset_y:-rotOff.y,hole_diameter:pad2.drill?.width,rect_pad_width:width,rect_pad_height:height,layers:["top","bottom"],pcb_component_id,port_hints:pinLabel?[pinLabel]:portName?[portName]:[],pcb_port_id,pin_number:pinNumber,pin_label:pinLabel})}else if(pad2.pad_shape==="circle"){let pcb_port_id=portName?portNameToPcbPortId.get(portName):void 0,pinLabel=pinNumber!==void 0?`pin${pinNumber}`:void 0;circuitJson.push({type:"pcb_plated_hole",pcb_plated_hole_id:`pcb_plated_hole_${platedHoleId++}`,shape:"circle",x:pad2.at[0],y:-pad2.at[1],outer_diameter:pad2.size[0],hole_diameter:pad2.drill?.width,layers:["top","bottom"],pcb_component_id,port_hints:pinLabel?[pinLabel]:portName?[portName]:[],pcb_port_id,pin_number:pinNumber,pin_label:pinLabel})}else if(pad2.pad_shape==="oval"){let pcb_port_id=portName?portNameToPcbPortId.get(portName):void 0,pinLabel=pinNumber!==void 0?`pin${pinNumber}`:void 0;circuitJson.push({type:"pcb_plated_hole",pcb_plated_hole_id:`pcb_plated_hole_${platedHoleId++}`,shape:"pill",x:pad2.at[0],y:-pad2.at[1],outer_width:pad2.size[0],outer_height:pad2.size[1],hole_width:pad2.drill?.width,hole_height:pad2.drill?.height,layers:["top","bottom"],pcb_component_id,port_hints:pinLabel?[pinLabel]:portName?[portName]:[],pcb_port_id,pin_number:pinNumber,pin_label:pinLabel})}}else pad2.pad_type==="np_thru_hole"&&circuitJson.push({type:"pcb_hole",pcb_hole_id:`pcb_hole_${holeId++}`,x:pad2.at[0],y:-pad2.at[1],hole_diameter:pad2.drill?.width,pcb_component_id})}if(holes)for(let hole of holes){let portName=normalizePortName(hole.name),pinNumber=portName?portNameToPinNumber.get(portName):void 0,hasCuLayer=hole.layers?.some(l2=>l2.endsWith(".Cu")||l2==="*.Cu"),rotation4=getRotationDeg(hole.at),offX=hole.drill?.offset?.[0]??0,offY=hole.drill?.offset?.[1]??0,rotOff=rotatePoint3(offX,offY,rotation4),x3=hole.at[0]+rotOff.x,y3=-(hole.at[1]+rotOff.y),holeDiameter=hole.drill?.width??0,outerDiameter=hole.size?.width??holeDiameter,rr3=hole.roundrect_rratio??0,rectBorderRadius=rr3>0?Math.min(isNinetyLike(rotation4)?hole.size?.height??outerDiameter:hole.size?.width??outerDiameter,isNinetyLike(rotation4)?hole.size?.width??outerDiameter:hole.size?.height??outerDiameter)/2*rr3:0;if(hasCuLayer)if(hole.pad_shape==="rect"){let pcb_port_id=portName?portNameToPcbPortId.get(portName):void 0;circuitJson.push({type:"pcb_plated_hole",pcb_plated_hole_id:`pcb_plated_hole_${platedHoleId++}`,shape:"circular_hole_with_rect_pad",hole_shape:"circle",pad_shape:"rect",x:hole.at[0],y:-hole.at[1],hole_offset_x:-rotOff.x,hole_offset_y:-rotOff.y,hole_diameter:holeDiameter,rect_pad_width:isNinetyLike(rotation4)?hole.size?.height??outerDiameter:hole.size?.width??outerDiameter,rect_pad_height:isNinetyLike(rotation4)?hole.size?.width??outerDiameter:hole.size?.height??outerDiameter,rect_border_radius:rectBorderRadius,port_hints:pinNumber!==void 0?[`pin${pinNumber}`]:portName?[portName]:[],layers:["top","bottom"],pcb_component_id,pcb_port_id,pin_number:pinNumber,pin_label:pinNumber!==void 0?`pin${pinNumber}`:void 0})}else if(hole.pad_shape==="oval"){let pcb_port_id=portName?portNameToPcbPortId.get(portName):void 0;circuitJson.push({type:"pcb_plated_hole",pcb_plated_hole_id:`pcb_plated_hole_${platedHoleId++}`,shape:"pill",x:x3,y:y3,outer_width:isNinetyLike(rotation4)?hole.size?.height??outerDiameter:hole.size?.width??outerDiameter,outer_height:isNinetyLike(rotation4)?hole.size?.width??outerDiameter:hole.size?.height??outerDiameter,hole_width:isNinetyLike(rotation4)?hole.drill?.height??holeDiameter:hole.drill?.width??holeDiameter,hole_height:isNinetyLike(rotation4)?hole.drill?.width??holeDiameter:hole.drill?.height??holeDiameter,port_hints:pinNumber!==void 0?[`pin${pinNumber}`]:portName?[portName]:[],layers:["top","bottom"],pcb_component_id,pcb_port_id,pin_number:pinNumber,pin_label:pinNumber!==void 0?`pin${pinNumber}`:void 0})}else if(hole.pad_shape==="roundrect"){let pcb_port_id=portName?portNameToPcbPortId.get(portName):void 0,offX2=hole.drill?.offset?.[0]??0,offY2=hole.drill?.offset?.[1]??0,rotOff2=rotatePoint3(offX2,offY2,rotation4),width=isNinetyLike(rotation4)?hole.size?.height??outerDiameter:hole.size?.width??outerDiameter,height=isNinetyLike(rotation4)?hole.size?.width??outerDiameter:hole.size?.height??outerDiameter;circuitJson.push({type:"pcb_plated_hole",pcb_plated_hole_id:`pcb_plated_hole_${platedHoleId++}`,shape:"circular_hole_with_rect_pad",hole_shape:"circle",pad_shape:"rect",x:x3,y:y3,hole_offset_x:-rotOff2.x,hole_offset_y:rotOff2.y,hole_diameter:holeDiameter,rect_pad_width:width,rect_pad_height:height,rect_border_radius:rectBorderRadius,port_hints:pinNumber!==void 0?[`pin${pinNumber}`]:portName?[portName]:[],layers:["top","bottom"],pcb_component_id,pcb_port_id,pin_number:pinNumber,pin_label:pinNumber!==void 0?`pin${pinNumber}`:void 0})}else{let pcb_port_id=portName?portNameToPcbPortId.get(portName):void 0;circuitJson.push({type:"pcb_plated_hole",pcb_plated_hole_id:`pcb_plated_hole_${platedHoleId++}`,shape:"circle",x:x3,y:y3,outer_diameter:outerDiameter,hole_diameter:holeDiameter,port_hints:pinNumber!==void 0?[`pin${pinNumber}`]:portName?[portName]:[],layers:["top","bottom"],pcb_component_id,pcb_port_id,pin_number:pinNumber,pin_label:pinNumber!==void 0?`pin${pinNumber}`:void 0})}else circuitJson.push({type:"pcb_hole",pcb_hole_id:`pcb_hole_${holeId++}`,x:x3,y:y3,hole_diameter:outerDiameter,hole_shape:"circle",pcb_component_id})}let edgeCutSegments=[];for(let fp_line2 of fp_lines)fp_line2.layer.toLowerCase()==="edge.cuts"&&edgeCutSegments.push({type:"line",start:{x:fp_line2.start[0],y:fp_line2.start[1]},end:{x:fp_line2.end[0],y:fp_line2.end[1]},strokeWidth:fp_line2.stroke.width});for(let fp_arc of fp_arcs)fp_arc.layer.toLowerCase()==="edge.cuts"&&edgeCutSegments.push({type:"arc",start:{x:fp_arc.start[0],y:fp_arc.start[1]},mid:{x:fp_arc.mid[0],y:fp_arc.mid[1]},end:{x:fp_arc.end[0],y:fp_arc.end[1]},strokeWidth:fp_arc.stroke.width});let closedPolygons=findClosedPolygons(edgeCutSegments),cutoutId=0;for(let polygon2 of closedPolygons){let points=polygonToPoints(polygon2);points.length>=3&&circuitJson.push({type:"pcb_cutout",pcb_cutout_id:`pcb_cutout_${cutoutId++}`,shape:"polygon",points:points.map(p2=>({x:p2.x,y:-p2.y})),pcb_component_id})}let traceId=0,silkPathId=0,fabPathId=0,noteLineId=0;for(let fp_line2 of fp_lines){let route=[{x:fp_line2.start[0],y:-fp_line2.start[1]},{x:fp_line2.end[0],y:-fp_line2.end[1]}],lowerLayer=fp_line2.layer.toLowerCase();lowerLayer==="f.cu"?circuitJson.push({type:"pcb_trace",pcb_trace_id:`pcb_trace_${traceId++}`,pcb_component_id,layer:convertKicadLayerToTscircuitLayer(fp_line2.layer),route,thickness:fp_line2.stroke.width}):lowerLayer==="f.silks"?circuitJson.push({type:"pcb_silkscreen_path",pcb_silkscreen_path_id:`pcb_silkscreen_path_${silkPathId++}`,pcb_component_id,layer:"top",route,stroke_width:fp_line2.stroke.width}):lowerLayer==="edge.cuts"?debug23("Skipping Edge.Cuts fp_line (converted to pcb_cutout)",fp_line2.layer):lowerLayer==="f.fab"?circuitJson.push({type:"pcb_fabrication_note_path",fabrication_note_path_id:`fabrication_note_path_${fabPathId++}`,pcb_component_id,layer:"top",route,stroke_width:fp_line2.stroke.width,port_hints:[]}):lowerLayer.startsWith("user.")?circuitJson.push({type:"pcb_note_line",pcb_note_line_id:`pcb_note_line_${noteLineId++}`,pcb_component_id,x1:fp_line2.start[0],y1:-fp_line2.start[1],x2:fp_line2.end[0],y2:-fp_line2.end[1],stroke_width:fp_line2.stroke.width}):debug23("Unhandled layer for fp_line",fp_line2.layer)}if(fp_polys)for(let fp_poly of fp_polys){let route=[],pushRoutePoint=point42=>{!Number.isFinite(point42.x)||!Number.isFinite(point42.y)||route.push(point42)};for(let segment2 of fp_poly.pts){if(Array.isArray(segment2)){pushRoutePoint({x:segment2[0],y:-segment2[1]});continue}if(segment2&&typeof segment2=="object"&&"kind"in segment2){if(segment2.kind==="arc"){let start=makePoint(segment2.start),mid=makePoint(segment2.mid),end=makePoint(segment2.end),arcLength=getArcLength(start,mid,end),numPoints=Math.max(8,Math.ceil(arcLength)),adjustedNumPoints=Math.max(2,Math.ceil(arcLength/.1)),arcPoints=generateArcPath(start,mid,end,adjustedNumPoints).map(p2=>({x:p2.x,y:-p2.y}));for(let point42 of arcPoints)pushRoutePoint(point42)}continue}}let routePoints=route,polygonPoints=routePoints.length>2&&routePoints[0].x===routePoints[routePoints.length-1].x&&routePoints[0].y===routePoints[routePoints.length-1].y?routePoints.slice(0,-1):routePoints;if(routePoints.length===0)continue;let strokeWidth=fp_poly.stroke?.width??0;if(fp_poly.layer.endsWith(".Cu")){let rect=getAxisAlignedRectFromPoints(polygonPoints);rect?circuitJson.push({type:"pcb_smtpad",pcb_smtpad_id:`pcb_smtpad_${smtpadId++}`,shape:"rect",x:rect.x,y:rect.y,width:rect.width,height:rect.height,layer:convertKicadLayerToTscircuitLayer(fp_poly.layer),pcb_component_id}):fpPolyHasFill(fp_poly.fill)?polygonPoints.length>=3?circuitJson.push({type:"pcb_smtpad",pcb_smtpad_id:`pcb_smtpad_${smtpadId++}`,shape:"polygon",points:polygonPoints,layer:convertKicadLayerToTscircuitLayer(fp_poly.layer),pcb_component_id}):polygonPoints.length>=2&&circuitJson.push({type:"pcb_trace",pcb_trace_id:`pcb_trace_${traceId++}`,pcb_component_id,layer:convertKicadLayerToTscircuitLayer(fp_poly.layer),route:polygonPoints,thickness:strokeWidth}):polygonPoints.length>=2&&circuitJson.push({type:"pcb_trace",pcb_trace_id:`pcb_trace_${traceId++}`,pcb_component_id,layer:convertKicadLayerToTscircuitLayer(fp_poly.layer),route:polygonPoints,thickness:strokeWidth})}else fp_poly.layer.endsWith(".SilkS")?circuitJson.push({type:"pcb_silkscreen_path",pcb_silkscreen_path_id:`pcb_silkscreen_path_${silkPathId++}`,pcb_component_id,layer:convertKicadLayerToTscircuitLayer(fp_poly.layer),route:routePoints,stroke_width:strokeWidth}):fp_poly.layer.endsWith(".Fab")?circuitJson.push({type:"pcb_fabrication_note_path",fabrication_note_path_id:`fabrication_note_path_${fabPathId++}`,pcb_component_id,layer:convertKicadLayerToTscircuitLayer(fp_poly.layer),route:polygonPoints,stroke_width:strokeWidth,port_hints:[]}):debug23("Unhandled layer for fp_poly",fp_poly.layer)}let notePathId=0;for(let fp_arc of fp_arcs){let lowerLayer=fp_arc.layer.toLowerCase();if(lowerLayer==="edge.cuts"){debug23("Skipping Edge.Cuts fp_arc (converted to pcb_cutout)",fp_arc.layer);continue}let start=makePoint(fp_arc.start),mid=makePoint(fp_arc.mid),end=makePoint(fp_arc.end),arcLength=getArcLength(start,mid,end),arcPoints=generateArcPath(start,mid,end,Math.ceil(arcLength));if(lowerLayer.startsWith("user.")){circuitJson.push({type:"pcb_note_path",pcb_note_path_id:`pcb_note_path_${notePathId++}`,pcb_component_id,route:arcPoints.map(p2=>({x:p2.x,y:-p2.y})),stroke_width:fp_arc.stroke.width});continue}let tscircuitLayer=convertKicadLayerToTscircuitLayer(fp_arc.layer);if(!tscircuitLayer){debug23("Unable to convert layer for fp_arc",fp_arc.layer);continue}circuitJson.push({type:"pcb_silkscreen_path",pcb_silkscreen_path_id:`pcb_silkscreen_path_${silkPathId++}`,layer:tscircuitLayer,pcb_component_id,route:arcPoints.map(p2=>({x:p2.x,y:-p2.y})),stroke_width:fp_arc.stroke.width})}if(fp_circles)for(let fp_circle of fp_circles){let lowerLayer=fp_circle.layer.toLowerCase(),center2=makePoint(fp_circle.center),endPoint=makePoint(fp_circle.end),radius=Math.sqrt((endPoint.x-center2.x)**2+(endPoint.y-center2.y)**2),numPoints=Math.max(16,Math.ceil(2*Math.PI*radius)),circlePoints=[];for(let i3=0;i3<=numPoints;i3++){let angle=i3/numPoints*2*Math.PI;circlePoints.push({x:center2.x+radius*Math.cos(angle),y:center2.y+radius*Math.sin(angle)})}lowerLayer.startsWith("user.")&&circuitJson.push({type:"pcb_note_path",pcb_note_path_id:`pcb_note_path_${notePathId++}`,pcb_component_id,route:circlePoints.map(p2=>({x:p2.x,y:-p2.y})),stroke_width:fp_circle.stroke.width})}for(let fp_text of fp_texts){let layerRef=convertKicadLayerToTscircuitLayer(fp_text.layer);fp_text.layer.endsWith(".SilkS")?circuitJson.push({type:"pcb_silkscreen_text",layer:layerRef,font:"tscircuit2024",font_size:fp_text.effects?.font?.size[0]??1,pcb_component_id,anchor_position:{x:fp_text.at[0],y:-fp_text.at[1]},anchor_alignment:"center",text:fp_text.text}):fp_text.layer.endsWith(".Fab")?circuitJson.push({type:"pcb_fabrication_note_text",layer:layerRef,font:"tscircuit2024",font_size:fp_text.effects?.font?.size[0]??1,pcb_component_id,anchor_position:{x:fp_text.at[0],y:-fp_text.at[1]},anchor_alignment:"center",text:fp_text.text}):debug23("Unhandled layer for fp_text",fp_text.layer)}let refProp=properties.find(prop=>prop.key==="Reference"),valProp=properties.find(prop=>prop.key==="Value"),propFabTexts=[refProp,valProp].filter(p2=>p2&&!!p2.val);for(let propFab of propFabTexts){let at3=propFab.attributes.at;if(!at3)continue;let isFabLayer=propFab.attributes.layer?.toLowerCase()?.endsWith(".fab"),font_size=getSilkscreenFontSizeFromFpTexts(fp_texts);circuitJson.push({type:isFabLayer?"pcb_fabrication_note_text":"pcb_silkscreen_text",layer:"top",font:"tscircuit2024",font_size,pcb_component_id,anchor_position:{x:at3[0],y:-at3[1]},anchor_alignment:"center",text:propFab.val})}return circuitJson},parseKicadModToCircuitJson=async kicadMod=>{let kicadJson=parseKicadModToKicadJson(kicadMod);return await convertKicadJsonToTsCircuitSoup(kicadJson)};var transformJsDelivrImports=code=>code.replace(/from\s*["']\/npm\//g,'from "https://cdn.jsdelivr.net/npm/').replace(/import\s*\(\s*["']\/npm\//g,'import("https://cdn.jsdelivr.net/npm/'),dynamicallyLoadDependencyWithCdnBackup=async packageName=>{try{return(await import(packageName)).default}catch{console.log(`Failed to load ${packageName} locally, trying CDN fallback...`);try{let res2=await fetch(`https://cdn.jsdelivr.net/npm/${packageName}/+esm`);if(!res2.ok)throw new Error(`Failed to fetch ${packageName} from CDN: ${res2.statusText}`);let code=await res2.text();code=transformJsDelivrImports(code);let blob=new Blob([code],{type:"application/javascript"}),url=URL.createObjectURL(blob);try{let{default:loadedModule}=await import(url);return loadedModule}finally{URL.revokeObjectURL(url)}}catch(cdnError){throw console.error(`CDN fallback for ${packageName} also failed:`,cdnError),cdnError}}};var KICAD_FOOTPRINT_CACHE_URL="https://kicad-mod-cache.tscircuit.com",ngspiceEngineCache=null,getPlatformConfig=()=>({partsEngine:jlcPartsEngine,spiceEngineMap:{ngspice:{simulate:async spice=>{if(!ngspiceEngineCache){let createNgspiceSpiceEngine=await dynamicallyLoadDependencyWithCdnBackup("@tscircuit/ngspice-spice-engine").catch(error=>{throw new Error("Could not load ngspice engine from local node_modules or CDN fallback.",{cause:error})});createNgspiceSpiceEngine&&(ngspiceEngineCache=await createNgspiceSpiceEngine())}if(!ngspiceEngineCache)throw new Error("Could not load ngspice engine from local node_modules or CDN fallback.");return ngspiceEngineCache.simulate(spice)}}},footprintLibraryMap:{kicad:async footprintName=>{let baseUrl=`${KICAD_FOOTPRINT_CACHE_URL}/${footprintName}`,circuitJsonUrl=`${baseUrl}.circuit.json`,raw=await(await fetch(circuitJsonUrl)).json(),filtered=Array.isArray(raw)?raw.filter(el2=>el2?.type==="pcb_silkscreen_text"?el2?.text==="REF**":!0):raw,wrlUrl=`${baseUrl}.wrl`;return{footprintCircuitJson:filtered,cadModel:{wrlUrl,modelUnitToMmScale:2.54}}}},footprintFileParserMap:{kicad_mod:{loadFromUrl:async url=>{let kicadContent=await fetch(url).then(res2=>res2.text()),kicadJson=await parseKicadModToCircuitJson(kicadContent);return{footprintCircuitJson:Array.isArray(kicadJson)?kicadJson:[kicadJson]}}}}});var tslib_es6_exports={};__export(tslib_es6_exports,{__addDisposableResource:()=>__addDisposableResource,__assign:()=>__assign,__asyncDelegator:()=>__asyncDelegator,__asyncGenerator:()=>__asyncGenerator,__asyncValues:()=>__asyncValues,__await:()=>__await,__awaiter:()=>__awaiter,__classPrivateFieldGet:()=>__classPrivateFieldGet,__classPrivateFieldIn:()=>__classPrivateFieldIn,__classPrivateFieldSet:()=>__classPrivateFieldSet,__createBinding:()=>__createBinding,__decorate:()=>__decorate,__disposeResources:()=>__disposeResources,__esDecorate:()=>__esDecorate,__exportStar:()=>__exportStar,__extends:()=>__extends,__generator:()=>__generator,__importDefault:()=>__importDefault,__importStar:()=>__importStar,__makeTemplateObject:()=>__makeTemplateObject,__metadata:()=>__metadata,__param:()=>__param,__propKey:()=>__propKey,__read:()=>__read,__rest:()=>__rest,__rewriteRelativeImportExtension:()=>__rewriteRelativeImportExtension,__runInitializers:()=>__runInitializers,__setFunctionName:()=>__setFunctionName,__spread:()=>__spread,__spreadArray:()=>__spreadArray,__spreadArrays:()=>__spreadArrays,__values:()=>__values,default:()=>tslib_es6_default});var extendStatics=function(d3,b3){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d4,b4){d4.__proto__=b4}||function(d4,b4){for(var p2 in b4)Object.prototype.hasOwnProperty.call(b4,p2)&&(d4[p2]=b4[p2])},extendStatics(d3,b3)};function __extends(d3,b3){if(typeof b3!="function"&&b3!==null)throw new TypeError("Class extends value "+String(b3)+" is not a constructor or null");extendStatics(d3,b3);function __(){this.constructor=d3}d3.prototype=b3===null?Object.create(b3):(__.prototype=b3.prototype,new __)}var __assign=function(){return __assign=Object.assign||function(t5){for(var s3,i3=1,n3=arguments.length;i3<n3;i3++){s3=arguments[i3];for(var p2 in s3)Object.prototype.hasOwnProperty.call(s3,p2)&&(t5[p2]=s3[p2])}return t5},__assign.apply(this,arguments)};function __rest(s3,e4){var t5={};for(var p2 in s3)Object.prototype.hasOwnProperty.call(s3,p2)&&e4.indexOf(p2)<0&&(t5[p2]=s3[p2]);if(s3!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i3=0,p2=Object.getOwnPropertySymbols(s3);i3<p2.length;i3++)e4.indexOf(p2[i3])<0&&Object.prototype.propertyIsEnumerable.call(s3,p2[i3])&&(t5[p2[i3]]=s3[p2[i3]]);return t5}function __decorate(decorators,target,key,desc){var c3=arguments.length,r4=c3<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d3;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r4=Reflect.decorate(decorators,target,key,desc);else for(var i3=decorators.length-1;i3>=0;i3--)(d3=decorators[i3])&&(r4=(c3<3?d3(r4):c3>3?d3(target,key,r4):d3(target,key))||r4);return c3>3&&r4&&Object.defineProperty(target,key,r4),r4}function __param(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}}function __esDecorate(ctor,descriptorIn,decorators,contextIn,initializers,extraInitializers){function accept(f2){if(f2!==void 0&&typeof f2!="function")throw new TypeError("Function expected");return f2}for(var kind=contextIn.kind,key=kind==="getter"?"get":kind==="setter"?"set":"value",target=!descriptorIn&&ctor?contextIn.static?ctor:ctor.prototype:null,descriptor=descriptorIn||(target?Object.getOwnPropertyDescriptor(target,contextIn.name):{}),_4,done=!1,i3=decorators.length-1;i3>=0;i3--){var context={};for(var p2 in contextIn)context[p2]=p2==="access"?{}:contextIn[p2];for(var p2 in contextIn.access)context.access[p2]=contextIn.access[p2];context.addInitializer=function(f2){if(done)throw new TypeError("Cannot add initializers after decoration has completed");extraInitializers.push(accept(f2||null))};var result=(0,decorators[i3])(kind==="accessor"?{get:descriptor.get,set:descriptor.set}:descriptor[key],context);if(kind==="accessor"){if(result===void 0)continue;if(result===null||typeof result!="object")throw new TypeError("Object expected");(_4=accept(result.get))&&(descriptor.get=_4),(_4=accept(result.set))&&(descriptor.set=_4),(_4=accept(result.init))&&initializers.unshift(_4)}else(_4=accept(result))&&(kind==="field"?initializers.unshift(_4):descriptor[key]=_4)}target&&Object.defineProperty(target,contextIn.name,descriptor),done=!0}function __runInitializers(thisArg,initializers,value){for(var useValue=arguments.length>2,i3=0;i3<initializers.length;i3++)value=useValue?initializers[i3].call(thisArg,value):initializers[i3].call(thisArg);return useValue?value:void 0}function __propKey(x3){return typeof x3=="symbol"?x3:"".concat(x3)}function __setFunctionName(f2,name,prefix){return typeof name=="symbol"&&(name=name.description?"[".concat(name.description,"]"):""),Object.defineProperty(f2,"name",{configurable:!0,value:prefix?"".concat(prefix," ",name):name})}function __metadata(metadataKey,metadataValue){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(metadataKey,metadataValue)}function __awaiter(thisArg,_arguments,P4,generator){function adopt(value){return value instanceof P4?value:new P4(function(resolve){resolve(value)})}return new(P4||(P4=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e4){reject(e4)}}function rejected(value){try{step(generator.throw(value))}catch(e4){reject(e4)}}function step(result){result.done?resolve(result.value):adopt(result.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})}function __generator(thisArg,body){var _4={label:0,sent:function(){if(t5[0]&1)throw t5[1];return t5[1]},trys:[],ops:[]},f2,y3,t5,g4=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return g4.next=verb(0),g4.throw=verb(1),g4.return=verb(2),typeof Symbol=="function"&&(g4[Symbol.iterator]=function(){return this}),g4;function verb(n3){return function(v4){return step([n3,v4])}}function step(op2){if(f2)throw new TypeError("Generator is already executing.");for(;g4&&(g4=0,op2[0]&&(_4=0)),_4;)try{if(f2=1,y3&&(t5=op2[0]&2?y3.return:op2[0]?y3.throw||((t5=y3.return)&&t5.call(y3),0):y3.next)&&!(t5=t5.call(y3,op2[1])).done)return t5;switch(y3=0,t5&&(op2=[op2[0]&2,t5.value]),op2[0]){case 0:case 1:t5=op2;break;case 4:return _4.label++,{value:op2[1],done:!1};case 5:_4.label++,y3=op2[1],op2=[0];continue;case 7:op2=_4.ops.pop(),_4.trys.pop();continue;default:if(t5=_4.trys,!(t5=t5.length>0&&t5[t5.length-1])&&(op2[0]===6||op2[0]===2)){_4=0;continue}if(op2[0]===3&&(!t5||op2[1]>t5[0]&&op2[1]<t5[3])){_4.label=op2[1];break}if(op2[0]===6&&_4.label<t5[1]){_4.label=t5[1],t5=op2;break}if(t5&&_4.label<t5[2]){_4.label=t5[2],_4.ops.push(op2);break}t5[2]&&_4.ops.pop(),_4.trys.pop();continue}op2=body.call(thisArg,_4)}catch(e4){op2=[6,e4],y3=0}finally{f2=t5=0}if(op2[0]&5)throw op2[1];return{value:op2[0]?op2[1]:void 0,done:!0}}}var __createBinding=Object.create?(function(o4,m3,k4,k22){k22===void 0&&(k22=k4);var desc=Object.getOwnPropertyDescriptor(m3,k4);(!desc||("get"in desc?!m3.__esModule:desc.writable||desc.configurable))&&(desc={enumerable:!0,get:function(){return m3[k4]}}),Object.defineProperty(o4,k22,desc)}):(function(o4,m3,k4,k22){k22===void 0&&(k22=k4),o4[k22]=m3[k4]});function __exportStar(m3,o4){for(var p2 in m3)p2!=="default"&&!Object.prototype.hasOwnProperty.call(o4,p2)&&__createBinding(o4,m3,p2)}function __values(o4){var s3=typeof Symbol=="function"&&Symbol.iterator,m3=s3&&o4[s3],i3=0;if(m3)return m3.call(o4);if(o4&&typeof o4.length=="number")return{next:function(){return o4&&i3>=o4.length&&(o4=void 0),{value:o4&&o4[i3++],done:!o4}}};throw new TypeError(s3?"Object is not iterable.":"Symbol.iterator is not defined.")}function __read(o4,n3){var m3=typeof Symbol=="function"&&o4[Symbol.iterator];if(!m3)return o4;var i3=m3.call(o4),r4,ar3=[],e4;try{for(;(n3===void 0||n3-- >0)&&!(r4=i3.next()).done;)ar3.push(r4.value)}catch(error){e4={error}}finally{try{r4&&!r4.done&&(m3=i3.return)&&m3.call(i3)}finally{if(e4)throw e4.error}}return ar3}function __spread(){for(var ar3=[],i3=0;i3<arguments.length;i3++)ar3=ar3.concat(__read(arguments[i3]));return ar3}function __spreadArrays(){for(var s3=0,i3=0,il2=arguments.length;i3<il2;i3++)s3+=arguments[i3].length;for(var r4=Array(s3),k4=0,i3=0;i3<il2;i3++)for(var a2=arguments[i3],j3=0,jl2=a2.length;j3<jl2;j3++,k4++)r4[k4]=a2[j3];return r4}function __spreadArray(to3,from,pack2){if(pack2||arguments.length===2)for(var i3=0,l2=from.length,ar3;i3<l2;i3++)(ar3||!(i3 in from))&&(ar3||(ar3=Array.prototype.slice.call(from,0,i3)),ar3[i3]=from[i3]);return to3.concat(ar3||Array.prototype.slice.call(from))}function __await(v4){return this instanceof __await?(this.v=v4,this):new __await(v4)}function __asyncGenerator(thisArg,_arguments,generator){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var g4=generator.apply(thisArg,_arguments||[]),i3,q4=[];return i3=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),verb("next"),verb("throw"),verb("return",awaitReturn),i3[Symbol.asyncIterator]=function(){return this},i3;function awaitReturn(f2){return function(v4){return Promise.resolve(v4).then(f2,reject)}}function verb(n3,f2){g4[n3]&&(i3[n3]=function(v4){return new Promise(function(a2,b3){q4.push([n3,v4,a2,b3])>1||resume(n3,v4)})},f2&&(i3[n3]=f2(i3[n3])))}function resume(n3,v4){try{step(g4[n3](v4))}catch(e4){settle(q4[0][3],e4)}}function step(r4){r4.value instanceof __await?Promise.resolve(r4.value.v).then(fulfill,reject):settle(q4[0][2],r4)}function fulfill(value){resume("next",value)}function reject(value){resume("throw",value)}function settle(f2,v4){f2(v4),q4.shift(),q4.length&&resume(q4[0][0],q4[0][1])}}function __asyncDelegator(o4){var i3,p2;return i3={},verb("next"),verb("throw",function(e4){throw e4}),verb("return"),i3[Symbol.iterator]=function(){return this},i3;function verb(n3,f2){i3[n3]=o4[n3]?function(v4){return(p2=!p2)?{value:__await(o4[n3](v4)),done:!1}:f2?f2(v4):v4}:f2}}function __asyncValues(o4){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var m3=o4[Symbol.asyncIterator],i3;return m3?m3.call(o4):(o4=typeof __values=="function"?__values(o4):o4[Symbol.iterator](),i3={},verb("next"),verb("throw"),verb("return"),i3[Symbol.asyncIterator]=function(){return this},i3);function verb(n3){i3[n3]=o4[n3]&&function(v4){return new Promise(function(resolve,reject){v4=o4[n3](v4),settle(resolve,reject,v4.done,v4.value)})}}function settle(resolve,reject,d3,v4){Promise.resolve(v4).then(function(v6){resolve({value:v6,done:d3})},reject)}}function __makeTemplateObject(cooked,raw){return Object.defineProperty?Object.defineProperty(cooked,"raw",{value:raw}):cooked.raw=raw,cooked}var __setModuleDefault=Object.create?(function(o4,v4){Object.defineProperty(o4,"default",{enumerable:!0,value:v4})}):function(o4,v4){o4.default=v4},ownKeys=function(o4){return ownKeys=Object.getOwnPropertyNames||function(o5){var ar3=[];for(var k4 in o5)Object.prototype.hasOwnProperty.call(o5,k4)&&(ar3[ar3.length]=k4);return ar3},ownKeys(o4)};function __importStar(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k4=ownKeys(mod),i3=0;i3<k4.length;i3++)k4[i3]!=="default"&&__createBinding(result,mod,k4[i3]);return __setModuleDefault(result,mod),result}function __importDefault(mod){return mod&&mod.__esModule?mod:{default:mod}}function __classPrivateFieldGet(receiver,state2,kind,f2){if(kind==="a"&&!f2)throw new TypeError("Private accessor was defined without a getter");if(typeof state2=="function"?receiver!==state2||!f2:!state2.has(receiver))throw new TypeError("Cannot read private member from an object whose class did not declare it");return kind==="m"?f2:kind==="a"?f2.call(receiver):f2?f2.value:state2.get(receiver)}function __classPrivateFieldSet(receiver,state2,value,kind,f2){if(kind==="m")throw new TypeError("Private method is not writable");if(kind==="a"&&!f2)throw new TypeError("Private accessor was defined without a setter");if(typeof state2=="function"?receiver!==state2||!f2:!state2.has(receiver))throw new TypeError("Cannot write private member to an object whose class did not declare it");return kind==="a"?f2.call(receiver,value):f2?f2.value=value:state2.set(receiver,value),value}function __classPrivateFieldIn(state2,receiver){if(receiver===null||typeof receiver!="object"&&typeof receiver!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof state2=="function"?receiver===state2:state2.has(receiver)}function __addDisposableResource(env,value,async){if(value!=null){if(typeof value!="object"&&typeof value!="function")throw new TypeError("Object expected.");var dispose,inner;if(async){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");dispose=value[Symbol.asyncDispose]}if(dispose===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");dispose=value[Symbol.dispose],async&&(inner=dispose)}if(typeof dispose!="function")throw new TypeError("Object not disposable.");inner&&(dispose=function(){try{inner.call(this)}catch(e4){return Promise.reject(e4)}}),env.stack.push({value,dispose,async})}else async&&env.stack.push({async:!0});return value}var _SuppressedError=typeof SuppressedError=="function"?SuppressedError:function(error,suppressed,message){var e4=new Error(message);return e4.name="SuppressedError",e4.error=error,e4.suppressed=suppressed,e4};function __disposeResources(env){function fail(e4){env.error=env.hasError?new _SuppressedError(e4,env.error,"An error was suppressed during disposal."):e4,env.hasError=!0}var r4,s3=0;function next2(){for(;r4=env.stack.pop();)try{if(!r4.async&&s3===1)return s3=0,env.stack.push(r4),Promise.resolve().then(next2);if(r4.dispose){var result=r4.dispose.call(r4.value);if(r4.async)return s3|=2,Promise.resolve(result).then(next2,function(e4){return fail(e4),next2()})}else s3|=1}catch(e4){fail(e4)}if(s3===1)return env.hasError?Promise.reject(env.error):Promise.resolve();if(env.hasError)throw env.error}return next2()}function __rewriteRelativeImportExtension(path,preserveJsx){return typeof path=="string"&&/^\.\.?\//.test(path)?path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(m3,tsx,d3,ext,cm2){return tsx?preserveJsx?".jsx":".js":d3&&(!ext||!cm2)?m3:d3+ext+"."+cm2.toLowerCase()+"js"}):path}var tslib_es6_default={__extends,__assign,__rest,__decorate,__param,__esDecorate,__runInitializers,__propKey,__setFunctionName,__metadata,__awaiter,__generator,__createBinding,__exportStar,__values,__read,__spread,__spreadArrays,__spreadArray,__await,__asyncGenerator,__asyncDelegator,__asyncValues,__makeTemplateObject,__importStar,__importDefault,__classPrivateFieldGet,__classPrivateFieldSet,__classPrivateFieldIn,__addDisposableResource,__disposeResources,__rewriteRelativeImportExtension};var import_debug21=__toESM(require_browser(),1),debug12=(0,import_debug21.default)("tsci:eval:execution-context");function createExecutionContext(webWorkerConfiguration,opts={}){globalThis.React=React;let basePlatform=opts.platform||getPlatformConfig(),platform=opts.projectConfig?{...basePlatform,...opts.projectConfig}:basePlatform;platform.partsEngineDisabled&&(platform.partsEngine=void 0);let circuit=new RootCircuit({platform});opts.name&&(circuit.name=opts.name),opts.debugNamespace&&circuit.enableDebug(opts.debugNamespace);let logs=[];return{fsMap:{},entrypoint:"",logger:{info:message=>{logs.push({msg:message})},getLogs:()=>logs,stringifyLogs:()=>logs.map(log=>log.msg).join(`
625
- `)},preSuppliedImports:{"@tscircuit/core":dist_exports4,tscircuit:dist_exports4,"@tscircuit/math-utils":dist_exports2,react:React,"react/jsx-runtime":ReactJsxRuntime,debug:import_debug21.default,tslib:tslib_es6_exports,"@tscircuit/props":{}},circuit,tsConfig:null,importStack:[],currentlyImporting:new Set,...webWorkerConfiguration}}function normalizeFilePath(filePath){let normFilePath=filePath;return normFilePath=normFilePath.replace(/\\/g,"/"),normFilePath=normFilePath.trim(),normFilePath.startsWith("./")&&(normFilePath=normFilePath.slice(2)),normFilePath.startsWith("/")&&(normFilePath=normFilePath.slice(1)),normFilePath}function normalizeFsMap(fsMap){let normalizedFsMap={};for(let[fsPath,fileContent]of Object.entries(fsMap))normalizedFsMap[normalizeFilePath(fsPath)]=fileContent;return normalizedFsMap}function dirname(path){if(!path)return".";let cleanPath=path.replace(/\\/g,"/").replace(/\/+$/,"");return cleanPath.indexOf("/")===-1?".":cleanPath.substring(0,cleanPath.lastIndexOf("/"))||"/"}function resolveRelativePath(importPath,cwd){if(importPath.startsWith("../")){let parentDir=dirname(cwd);return resolveRelativePath(importPath.slice(3),parentDir)}return importPath.startsWith("./")?resolveRelativePath(importPath.slice(2),cwd):importPath.startsWith("/")?importPath.slice(1):`${cwd}/${importPath}`}function getTsConfig(fsMapOrAllFilePaths){if(Array.isArray(fsMapOrAllFilePaths))return null;let tsconfigContent=fsMapOrAllFilePaths["tsconfig.json"];if(!tsconfigContent)return null;try{let sanitizedContent=tsconfigContent.replace(/\/\*[\s\S]*?\*\/|\/\/.*/g,"");return JSON.parse(sanitizedContent)}catch(e4){throw new Error(`Failed to parse tsconfig.json: ${e4.message}`)}}function resolveWithTsconfigPaths(opts){let{importPath,normalizedFilePathMap,extensions,tsConfig,tsconfigDir}=opts,paths=tsConfig?.compilerOptions?.paths;if(!paths)return null;let baseUrl=tsConfig?.compilerOptions?.baseUrl||".",tryResolveCandidate=candidate=>{let normalizedCandidate=normalizeFilePath(candidate);if(normalizedFilePathMap.has(normalizedCandidate))return normalizedFilePathMap.get(normalizedCandidate);for(let ext of extensions){let withExt=`${normalizedCandidate}.${ext}`;if(normalizedFilePathMap.has(withExt))return normalizedFilePathMap.get(withExt)}return null};for(let[alias,targets]of Object.entries(paths))if(alias.includes("*")){let[prefix,suffix]=alias.split("*");if(!importPath.startsWith(prefix)||!importPath.endsWith(suffix||""))continue;let starMatch=importPath.slice(prefix.length,importPath.length-(suffix?suffix.length:0));for(let target of targets){let replaced=target.replace("*",starMatch),candidate=baseUrl&&!replaced.startsWith("./")&&!replaced.startsWith("/")?`${baseUrl}/${replaced}`:replaced,resolved=tryResolveCandidate(candidate);if(resolved)return resolved}}else{if(importPath!==alias)continue;for(let target of targets){let candidate=baseUrl&&!target.startsWith("./")&&!target.startsWith("/")?`${baseUrl}/${target}`:target,resolved=tryResolveCandidate(candidate);if(resolved)return resolved}}let resolvedPathFromBaseUrl=resolveWithBaseUrl({importPath,normalizedFilePathMap,extensions,tsConfig,tsconfigDir});return resolvedPathFromBaseUrl||null}function resolveWithBaseUrl(opts){let{importPath,normalizedFilePathMap,extensions,tsConfig,tsconfigDir}=opts,baseUrl=tsConfig?.compilerOptions?.baseUrl;if(!baseUrl)return null;let filePathToResolve=`${tsconfigDir||"."}/${baseUrl}/${importPath}`;filePathToResolve=filePathToResolve.replace(/\/+/g,"/"),filePathToResolve=filePathToResolve.replace(/\/\.\//g,"/");let normalizedFilePath=normalizeFilePath(filePathToResolve);if(normalizedFilePathMap.has(normalizedFilePath))return normalizedFilePathMap.get(normalizedFilePath);for(let ext of extensions){let withExt=`${normalizedFilePath}.${ext}`;if(normalizedFilePathMap.has(withExt))return normalizedFilePathMap.get(withExt)}return null}function matchesTsconfigPathPattern(importPath,tsConfig){let paths=tsConfig?.compilerOptions?.paths;if(!paths)return!1;for(let[alias]of Object.entries(paths))if(alias.includes("*")){let[prefix,suffix]=alias.split("*");if(importPath.startsWith(prefix)&&importPath.endsWith(suffix||""))return!0}else if(importPath===alias)return!0;return!1}var FILE_EXTENSIONS=["tsx","ts","json","js","jsx","obj","gltf","glb","stl","step","stp"],resolveFilePath=(unknownFilePath,fsMapOrAllFilePaths,cwd,opts={})=>{let tsConfig=opts.tsConfig??null,isRelativeImport=unknownFilePath.startsWith("./")||unknownFilePath.startsWith("../"),hasBaseUrl=!!tsConfig?.compilerOptions?.baseUrl,resolvedPath=cwd&&(isRelativeImport||!hasBaseUrl)?resolveRelativePath(unknownFilePath,cwd):unknownFilePath,filePaths=new Set(Array.isArray(fsMapOrAllFilePaths)?fsMapOrAllFilePaths:Object.keys(fsMapOrAllFilePaths));if(filePaths.has(resolvedPath))return resolvedPath;let normalizedFilePathMap=new Map;for(let filePath of filePaths)normalizedFilePathMap.set(normalizeFilePath(filePath),filePath);let normalizedResolvedPath=normalizeFilePath(resolvedPath);if(isRelativeImport||!hasBaseUrl){if(normalizedFilePathMap.has(normalizedResolvedPath))return normalizedFilePathMap.get(normalizedResolvedPath);for(let ext of FILE_EXTENSIONS){let possibleFilePath=`${normalizedResolvedPath}.${ext}`;if(normalizedFilePathMap.has(possibleFilePath))return normalizedFilePathMap.get(possibleFilePath)}}if(!isRelativeImport){let resolvedPathFromPaths=resolveWithTsconfigPaths({importPath:unknownFilePath,normalizedFilePathMap,extensions:FILE_EXTENSIONS,tsConfig,tsconfigDir:opts.tsconfigDir});if(resolvedPathFromPaths)return resolvedPathFromPaths;let resolvedPathFromBaseUrl=resolveWithBaseUrl({importPath:unknownFilePath,normalizedFilePathMap,extensions:FILE_EXTENSIONS,tsConfig,tsconfigDir:opts.tsconfigDir});if(resolvedPathFromBaseUrl)return resolvedPathFromBaseUrl}if(!isRelativeImport&&!hasBaseUrl){let normalizedUnknownFilePath=normalizeFilePath(unknownFilePath);if(normalizedFilePathMap.has(normalizedUnknownFilePath))return normalizedFilePathMap.get(normalizedUnknownFilePath);for(let ext of FILE_EXTENSIONS){let possibleFilePath=`${normalizedUnknownFilePath}.${ext}`;if(normalizedFilePathMap.has(possibleFilePath))return normalizedFilePathMap.get(possibleFilePath)}}return null},resolveFilePathOrThrow=(unknownFilePath,fsMapOrAllFilePaths,cwd,opts={})=>{let resolvedFilePath=resolveFilePath(unknownFilePath,fsMapOrAllFilePaths,cwd,opts);if(!resolvedFilePath)throw new Error(`File not found "${unknownFilePath}", available paths:
624
+ "${e4.message}"`)});if(options.view==="pcb")return circuitToSvg.convertCircuitJsonToPcbSvg(this.getCircuitJson());if(options.view==="schematic")return circuitToSvg.convertCircuitJsonToSchematicSvg(this.getCircuitJson());throw new Error(`Invalid view: ${options.view}`)}getCoreVersion(){let[major,minor,patch]=package_default3.version.split(".").map(Number);return`${major}.${minor}.${patch+1}`}async preview(previewNameOrOpts){let previewOpts=typeof previewNameOrOpts=="object"?previewNameOrOpts:{previewName:previewNameOrOpts};throw new Error("project.preview is not yet implemented")}computeSchematicGlobalTransform(){return identity()}_computePcbGlobalTransformBeforeLayout(){return identity()}selectAll(selector){return this._guessRootComponent(),this.firstChild?.selectAll(selector)??[]}selectOne(selector,opts){return this._guessRootComponent(),this.firstChild?.selectOne(selector,opts)??null}emit(event,...args){if(event==="asyncEffect:start"?this._registerAsyncEffectStart(args[0]):event==="asyncEffect:end"&&this._registerAsyncEffectEnd(args[0]),!!this._eventListeners[event])for(let listener of this._eventListeners[event])listener(...args)}on(event,listener){this._eventListeners[event]||(this._eventListeners[event]=[]),this._eventListeners[event].push(listener)}removeListener(event,listener){this._eventListeners[event]&&(this._eventListeners[event]=this._eventListeners[event].filter(l2=>l2!==listener))}enableDebug(debug112){typeof debug112=="string"?import_debug18.default.enable(debug112):(debug112===null||debug112===!1)&&import_debug18.default.disable()}getClientOrigin(){return typeof window<"u"&&window.location?window.location.origin:typeof self<"u"&&self.location?self.location.origin:""}_registerAsyncEffectStart(payload){if(!payload?.asyncEffectId||!payload.phase)return;let{asyncEffectId,phase}=payload,existingPhase=this._asyncEffectPhaseById.get(asyncEffectId);existingPhase&&existingPhase!==phase&&this._asyncEffectIdsByPhase.get(existingPhase)?.delete(asyncEffectId),this._asyncEffectIdsByPhase.has(phase)||this._asyncEffectIdsByPhase.set(phase,new Set),this._asyncEffectIdsByPhase.get(phase).add(asyncEffectId),this._asyncEffectPhaseById.set(asyncEffectId,phase)}_registerAsyncEffectEnd(payload){if(!payload?.asyncEffectId)return;let{asyncEffectId}=payload,phase=this._asyncEffectPhaseById.get(asyncEffectId)??payload.phase;if(phase){let phaseSet=this._asyncEffectIdsByPhase.get(phase);phaseSet?.delete(asyncEffectId),phaseSet&&phaseSet.size===0&&this._asyncEffectIdsByPhase.delete(phase)}this._asyncEffectPhaseById.delete(asyncEffectId)}},Project=RootCircuit,Circuit=RootCircuit,useRenderedCircuit=reactElements=>{let[isLoading,setIsLoading]=import_react5.default.useState(!0),[error,setError]=import_react5.default.useState(null),[circuit,setCircuit]=import_react5.default.useState(),[circuitJson,setCircuitJson]=import_react5.default.useState();return import_react5.default.useEffect(()=>{setIsLoading(!0),setError(null),reactElements&&setTimeout(()=>{try{let circuit2=new RootCircuit;circuit2.add(reactElements),setCircuit(circuit2),setCircuitJson(circuit2.toJson())}catch(error2){setError(error2)}setIsLoading(!1)},1)},[reactElements]),{isLoading,error,circuit,circuitJson}},createUseComponent=(Component2,pins)=>(name,props)=>{let pinLabelsFlatArray=[];Array.isArray(pins)?pinLabelsFlatArray.push(...pins.flat()):typeof pins=="object"&&pinLabelsFlatArray.push(...Object.values(pins).flat(),...Object.keys(pins));let R4=props2=>{if(props2?.name&&props2.name!==name)throw new Error(`Component name mismatch. Hook name: ${name}, Component prop name: ${props2.name}`);let combinedProps={...props,...props2,name},tracesToCreate=[];for(let portLabel of pinLabelsFlatArray)if(combinedProps[portLabel]){let from=`.${name} > .${portLabel}`,to3=combinedProps[portLabel];tracesToCreate.push({from,to:to3}),delete combinedProps[portLabel]}return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(Component2,{...combinedProps}),tracesToCreate.map((trace,i3)=>(0,import_jsx_runtime.jsx)("trace",{...trace},i3))]})};for(let port of pinLabelsFlatArray)R4[port]=`.${name} > .${port}`;return R4},useCapacitor=createUseComponent(props=>(0,import_jsx_runtime2.jsx)("capacitor",{...props}),capacitorPins),useChip=pinLabels=>createUseComponent(props=>(0,import_jsx_runtime3.jsx)("chip",{pinLabels,...props}),pinLabels),useDiode=createUseComponent(props=>(0,import_jsx_runtime4.jsx)("diode",{...props}),diodePins),useLed=createUseComponent(props=>(0,import_jsx_runtime5.jsx)("led",{...props}),ledPins),useResistor=createUseComponent(props=>(0,import_jsx_runtime6.jsx)("resistor",{...props}),resistorPins),sel=new Proxy(refdes=>new Proxy({},{get:(_4,pin)=>`.${refdes} > .${pin}`}),{get:(_4,prop1)=>{let fn3=(...args)=>{let chipFnOrPinType=args[0];return new Proxy({},{get:(_22,pinName)=>`.${prop1} > .${pinName}`})};return new Proxy(fn3,{get:(_22,prop2)=>prop1==="net"?`net.${prop2}`:prop1==="subcircuit"?new Proxy({},{get:(_32,prop3)=>new Proxy({},{get:(_42,prop4)=>`subcircuit.${prop2} > .${prop3} > .${prop4}`})}):`.${prop1} > .${prop2}`,apply:(target,_22,args)=>prop1==="net"?new Proxy({},{get:(_32,netName)=>`net.${netName}`}):new Proxy({},{get:(_32,pinOrSubComponentName)=>{let pinResult=`.${prop1} > .${pinOrSubComponentName}`;return["U","J","CN"].some(p2=>prop1.startsWith(p2))?pinResult:new Proxy(new String(pinResult),{get:(_42,nestedProp)=>typeof nestedProp=="symbol"||nestedProp==="toString"?()=>pinResult:`.${prop1} > .${pinOrSubComponentName} > .${nestedProp}`})}})})}});extendCatalogue(components_exports);extendCatalogue({Bug:Chip});var React=__toESM(require_react(),1),ReactJsxRuntime=__toESM(require_jsx_runtime(),1);var getFootprinterStringFromKicad=kicadFootprint=>{let match2=kicadFootprint.match(/:[RC]_(\d{4})_/);if(match2||(match2=kicadFootprint.match(/:(SOIC-\d+|SOT-\d+|SOD-\d+|SSOP-\d+|TSSOP-\d+|QFP-\d+|QFN-\d+)/),match2))return match2[1]};var getJlcPackageFromFootprinterString=footprinterString=>footprinterString.includes("cap")?footprinterString.replace(/cap/g,""):footprinterString;var getJlcpcbPackageName=footprint=>{if(footprint){if(footprint.startsWith("kicad:")){let footprinterString=getFootprinterStringFromKicad(footprint);return footprinterString?getJlcPackageFromFootprinterString(footprinterString):footprint}return getJlcPackageFromFootprinterString(footprint)}};var cache=new Map,getJlcPartsCached=async(name,params)=>{let paramString=new URLSearchParams({...params,json:"true"}).toString();if(cache.has(paramString))return cache.get(paramString);let responseJson=await(await fetch(`https://jlcsearch.tscircuit.com/${name}/list?${paramString}`)).json();return cache.set(paramString,responseJson),responseJson},withBasicPartPreference=parts=>parts?[...parts].sort((a2,b3)=>Number(b3.is_basic??!1)-Number(a2.is_basic??!1)):[],jlcPartsEngine={findPart:async({sourceComponent,footprinterString})=>{let jlcpcbPackage=getJlcpcbPackageName(footprinterString);if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_resistor"){let{resistors}=await getJlcPartsCached("resistors",{resistance:sourceComponent.resistance,package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(resistors).map(r4=>`C${r4.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_capacitor"){let{capacitors}=await getJlcPartsCached("capacitors",{capacitance:sourceComponent.capacitance,package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(capacitors).map(c3=>`C${c3.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_pin_header"){let pitch;footprinterString?.includes("_p")&&(pitch=Number(footprinterString.split("_p")[1]));let{headers}=await getJlcPartsCached("headers",pitch?{pitch,num_pins:sourceComponent.pin_count,gender:sourceComponent.gender}:{num_pins:sourceComponent.pin_count,gender:sourceComponent.gender});return{jlcpcb:withBasicPartPreference(headers).map(h2=>`C${h2.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_potentiometer"){let{potentiometers}=await getJlcPartsCached("potentiometers",{resistance:sourceComponent.max_resistance,package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(potentiometers).map(p2=>`C${p2.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_diode"){let{diodes}=await getJlcPartsCached("diodes",{package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(diodes).map(d3=>`C${d3.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_chip"){if(!jlcpcbPackage||!footprinterString)return{};let{chips}=await getJlcPartsCached("chips",{package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(chips).map(c3=>`C${c3.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_transistor"){let{transistors}=await getJlcPartsCached("transistors",{package:jlcpcbPackage,transistor_type:sourceComponent.transistor_type});return{jlcpcb:withBasicPartPreference(transistors).map(t5=>`C${t5.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_power_source"){let{power_sources}=await getJlcPartsCached("power_sources",{voltage:sourceComponent.voltage,package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(power_sources).map(p2=>`C${p2.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_inductor"){let{inductors}=await getJlcPartsCached("inductors",{inductance:sourceComponent.inductance,package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(inductors).map(i3=>`C${i3.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_crystal"){let{crystals}=await getJlcPartsCached("crystals",{frequency:sourceComponent.frequency,load_capacitance:sourceComponent.load_capacitance,package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(crystals).map(c3=>`C${c3.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_mosfet"){let{mosfets}=await getJlcPartsCached("mosfets",{package:jlcpcbPackage,mosfet_mode:sourceComponent.mosfet_mode,channel_type:sourceComponent.channel_type});return{jlcpcb:withBasicPartPreference(mosfets).map(m3=>`C${m3.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_resonator"){let{resonators}=await getJlcPartsCached("resonators",{frequency:sourceComponent.frequency,package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(resonators).map(r4=>`C${r4.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_switch"){let{switches}=await getJlcPartsCached("switches",{switch_type:sourceComponent.type,package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(switches).map(s3=>`C${s3.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_led"){let{leds}=await getJlcPartsCached("leds",{package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(leds).map(l2=>`C${l2.lcsc}`).slice(0,3)}}else if(sourceComponent.type==="source_component"&&sourceComponent.ftype==="simple_fuse"){let{fuses}=await getJlcPartsCached("fuses",{package:jlcpcbPackage});return{jlcpcb:withBasicPartPreference(fuses).map(l2=>`C${l2.lcsc}`).slice(0,3)}}return{}}};var import_s_expression=__toESM(require_s_expression(),1);init_zod();var import_debug19=__toESM(require_browser(),1),import_debug20=__toESM(require_browser(),1),point22=external_exports.tuple([external_exports.coerce.number(),external_exports.coerce.number()]),point33=external_exports.tuple([external_exports.number(),external_exports.number(),external_exports.number()]),point5=external_exports.union([point22,point33]),fp_poly_arc_segment_def=external_exports.object({kind:external_exports.literal("arc"),start:point22,mid:point22,end:point22}),fp_poly_point_def=external_exports.union([point22,fp_poly_arc_segment_def]),attributes_def=external_exports.object({at:point5,size:point22,layer:external_exports.string(),layers:external_exports.array(external_exports.string()),roundrect_rratio:external_exports.number(),uuid:external_exports.string()}).partial(),property_def=external_exports.object({key:external_exports.string(),val:external_exports.string(),attributes:attributes_def}),drill_def=external_exports.object({oval:external_exports.boolean().default(!1),width:external_exports.number().optional(),height:external_exports.number().optional(),offset:point22.optional()}),hole_def=external_exports.object({name:external_exports.string(),pad_type:external_exports.enum(["thru_hole","smd","np_thru_hole","connect"]),pad_shape:external_exports.enum(["roundrect","circle","rect","oval","trapezoid","custom"]),at:point5,drill:external_exports.union([external_exports.number(),external_exports.array(external_exports.any()),drill_def]).transform(a2=>typeof a2=="number"?{oval:!1,width:a2,height:a2}:"oval"in a2?a2:a2.length===2?{oval:!1,width:Number.parseFloat(a2[0]),height:Number.parseFloat(a2[0]),offset:point22.parse(a2[1].slice(1))}:a2.length===3||a2.length===4?{oval:a2[0]==="oval",width:Number.parseFloat(a2[1]),height:Number.parseFloat(a2[2]),offset:a2[3]?point22.parse(a2[3].slice(1)):void 0}:a2).pipe(drill_def),size:external_exports.union([external_exports.array(external_exports.number()).length(2).transform(([w4,h2])=>({width:w4,height:h2})),external_exports.object({width:external_exports.number(),height:external_exports.number()})]),layers:external_exports.array(external_exports.string()).optional(),roundrect_rratio:external_exports.number().optional(),uuid:external_exports.string().optional()}),pad_def2=external_exports.object({name:external_exports.string(),pad_type:external_exports.enum(["thru_hole","smd","np_thru_hole","connect"]),pad_shape:external_exports.enum(["roundrect","circle","rect","oval","trapezoid","custom"]),at:point5,size:point22,drill:external_exports.union([external_exports.number(),external_exports.array(external_exports.any()),drill_def]).transform(a2=>typeof a2=="number"?{oval:!1,width:a2,height:a2}:"oval"in a2?a2:a2.length===2?{oval:!1,width:Number.parseFloat(a2[0]),height:Number.parseFloat(a2[0]),offset:point22.parse(a2[1].slice(1))}:a2.length===3||a2.length===4?{oval:a2[0]==="oval",width:Number.parseFloat(a2[1]),height:Number.parseFloat(a2[2]),offset:a2[3]?point22.parse(a2[3].slice(1)):void 0}:a2).pipe(drill_def).optional(),layers:external_exports.array(external_exports.string()).optional(),roundrect_rratio:external_exports.number().optional(),chamfer_ratio:external_exports.number().optional(),solder_paste_margin:external_exports.number().optional(),solder_paste_margin_ratio:external_exports.number().optional(),clearance:external_exports.number().optional(),zone_connection:external_exports.union([external_exports.literal(0).describe("Pad is not connect to zone"),external_exports.literal(1).describe("Pad is connected to zone using thermal relief"),external_exports.literal(2).describe("Pad is connected to zone using solid fill")]).optional(),thermal_width:external_exports.number().optional(),thermal_gap:external_exports.number().optional(),uuid:external_exports.string().optional()}),effects_def=external_exports.object({font:external_exports.object({size:point22,thickness:external_exports.number().optional()})}).partial(),fp_text_def=external_exports.object({fp_text_type:external_exports.literal("user"),text:external_exports.string(),at:point5,layer:external_exports.string(),uuid:external_exports.string().optional(),effects:effects_def.partial()}),fp_arc_def=external_exports.object({start:point22,mid:point22,end:point22,stroke:external_exports.object({width:external_exports.number(),type:external_exports.string()}),layer:external_exports.string(),uuid:external_exports.string().optional()}),fp_circle_def=external_exports.object({center:point22,end:point22,stroke:external_exports.object({width:external_exports.number(),type:external_exports.string()}),fill:external_exports.string().optional(),layer:external_exports.string(),uuid:external_exports.string().optional()}),fp_poly_def=external_exports.object({pts:external_exports.array(fp_poly_point_def),stroke:external_exports.object({width:external_exports.number(),type:external_exports.string()}).optional(),width:external_exports.number().optional(),layer:external_exports.string(),uuid:external_exports.string().optional(),fill:external_exports.string().optional()}).transform(data=>({...data,width:void 0,stroke:data.stroke??{width:data.width}})),fp_line=external_exports.object({start:point22,end:point22,stroke:external_exports.object({width:external_exports.number(),type:external_exports.string()}).optional(),width:external_exports.number().optional(),layer:external_exports.string(),uuid:external_exports.string().optional()}).transform(data=>({...data,width:void 0,stroke:data.stroke??{width:data.width}})),kicad_mod_json_def=external_exports.object({footprint_name:external_exports.string(),version:external_exports.string().optional(),generator:external_exports.string().optional(),generator_version:external_exports.string().optional(),layer:external_exports.string(),descr:external_exports.string().default(""),tags:external_exports.array(external_exports.string()).optional(),properties:external_exports.array(property_def),fp_lines:external_exports.array(fp_line),fp_texts:external_exports.array(fp_text_def),fp_arcs:external_exports.array(fp_arc_def),fp_circles:external_exports.array(fp_circle_def).optional(),fp_polys:external_exports.array(fp_poly_def).optional(),pads:external_exports.array(pad_def2),holes:external_exports.array(hole_def).optional()}),formatAttr=(val,attrKey)=>{if(attrKey==="effects"&&Array.isArray(val)){let effectsObj={};for(let elm of val)if(elm[0]==="font"){let fontObj={};for(let fontElm of elm.slice(1))fontElm.length===2?fontObj[fontElm[0].valueOf()]=Number.parseFloat(fontElm[1].valueOf()):fontObj[fontElm[0].valueOf()]=fontElm.slice(1).map(n3=>Number.parseFloat(n3.valueOf()));effectsObj.font=fontObj}return effects_def.parse(effectsObj)}if(attrKey==="pts")return val.map(segment2=>{let segmentType=segment2[0]?.valueOf?.()??segment2[0];if(segmentType==="xy")return segment2.slice(1).map(n3=>Number.parseFloat(n3.valueOf()));if(segmentType==="arc"){let arcObj={kind:"arc"};for(let arcAttr of segment2.slice(1)){let key=arcAttr[0].valueOf();arcObj[key]=arcAttr.slice(1).map(n3=>Number.parseFloat(n3.valueOf()))}return arcObj}return segment2});if(attrKey==="stroke"){let strokeObj={};for(let strokeElm of val){let strokePropKey=strokeElm[0].valueOf();strokeObj[strokePropKey]=formatAttr(strokeElm.slice(1),strokePropKey)}return strokeObj}return attrKey==="at"||attrKey==="size"||attrKey==="start"||attrKey==="mid"||attrKey==="end"?(Array.isArray(val)?val:[val]).map(n3=>n3?.valueOf?.()??n3).filter(v4=>typeof v4=="number"||typeof v4=="string"&&/^[-+]?\d*\.?\d+(e[-+]?\d+)?$/i.test(v4)).map(v4=>typeof v4=="number"?v4:Number.parseFloat(v4)):attrKey==="tags"?val.map(n3=>n3.valueOf()):attrKey==="generator_version"||attrKey==="version"?val[0].valueOf():val.length===2?val.valueOf():attrKey==="uuid"?Array.isArray(val)?val[0].valueOf():val.valueOf():/^[\d\.]+$/.test(val)&&!Number.isNaN(Number.parseFloat(val))?Number.parseFloat(val):Array.isArray(val)&&val.length===1?val[0].valueOf():Array.isArray(val)?val.map(s3=>s3.valueOf()):val},getAttr=(s3,key)=>{for(let elm of s3)if(Array.isArray(elm)&&elm[0]===key)return formatAttr(elm.slice(1),key)},debug11=(0,import_debug19.default)("kicad-mod-converter"),parseKicadModToKicadJson=fileContent=>{let kicadSExpr=(0,import_s_expression.default)(fileContent),footprintName=kicadSExpr[1].valueOf(),topLevelAttributes={},simpleTopLevelAttributes=Object.entries(kicad_mod_json_def.shape).filter(([attributeKey,def])=>def._def.typeName==="ZodString"||attributeKey==="tags").map(([attributeKey])=>attributeKey);for(let kicadSExprRow of kicadSExpr.slice(2)){if(!simpleTopLevelAttributes.includes(kicadSExprRow[0]))continue;let key=kicadSExprRow[0].valueOf(),val=formatAttr(kicadSExprRow.slice(1),key);topLevelAttributes[key]=val}let properties=kicadSExpr.slice(2).filter(row=>row[0]==="property").map(row=>{let key=row[1].valueOf(),val=row[2].valueOf(),attributes2=attributes_def.parse(row.slice(3).reduce((acc,attrAr)=>{let attrKey=attrAr[0].valueOf();return acc[attrKey]=formatAttr(attrAr.slice(1),attrKey),acc},{}));return{key,val,attributes:attributes2}}),padRows=kicadSExpr.slice(2).filter(row=>row[0]==="pad"),pads=[];for(let row of padRows){let at3=getAttr(row,"at"),size2=getAttr(row,"size"),drill=getAttr(row,"drill"),layers=getAttr(row,"layers");if(Array.isArray(layers)?layers=layers.map(layer=>layer.valueOf()):typeof layers=="string"?layers=[layers]:layers||(layers=[]),!layers.includes("F.Cu")){debug11(`Skipping pad without F.Cu layer: layers=${layers.join(", ")}`);continue}let roundrect_rratio=getAttr(row,"roundrect_rratio"),uuid=getAttr(row,"uuid"),padRaw={name:row[1].valueOf(),pad_type:row[2].valueOf(),pad_shape:row[3].valueOf(),at:at3,drill,size:size2,layers,roundrect_rratio,uuid};debug11(`attempting to parse pad: ${JSON.stringify(padRaw,null," ")}`),pads.push(pad_def2.parse(padRaw))}let fp_texts_rows=kicadSExpr.slice(2).filter(row=>row[0]==="fp_text"),fp_texts=[];for(let fp_text_row of fp_texts_rows){let text=fp_text_row[2].valueOf(),at3=getAttr(fp_text_row,"at"),layer=getAttr(fp_text_row,"layer"),uuid=getAttr(fp_text_row,"uuid"),effects=getAttr(fp_text_row,"effects");fp_texts.push({fp_text_type:"user",text,at:at3,layer,uuid,effects})}let fp_lines=[],fp_lines_rows=kicadSExpr.slice(2).filter(row=>row[0]==="fp_line");for(let fp_line_row of fp_lines_rows){let start=getAttr(fp_line_row,"start"),end=getAttr(fp_line_row,"end"),stroke=getAttr(fp_line_row,"stroke"),layer=getAttr(fp_line_row,"layer"),uuid=getAttr(fp_line_row,"uuid");fp_lines.push({start,end,stroke,layer,uuid})}let fp_arcs=[],fp_arcs_rows=kicadSExpr.slice(2).filter(row=>row[0]==="fp_arc");for(let fp_arc_row of fp_arcs_rows){let start=getAttr(fp_arc_row,"start"),mid=getAttr(fp_arc_row,"mid"),end=getAttr(fp_arc_row,"end"),stroke=getAttr(fp_arc_row,"stroke"),layer=getAttr(fp_arc_row,"layer"),uuid=getAttr(fp_arc_row,"uuid");!start||!end||!mid||!stroke||!layer||fp_arcs.push({start,mid,end,stroke,layer,uuid})}let fp_circles=[],fp_circles_rows=kicadSExpr.slice(2).filter(row=>row[0]==="fp_circle");for(let fp_circle_row of fp_circles_rows){let center2=getAttr(fp_circle_row,"center"),end=getAttr(fp_circle_row,"end"),stroke=getAttr(fp_circle_row,"stroke"),fill=getAttr(fp_circle_row,"fill"),layer=getAttr(fp_circle_row,"layer"),uuid=getAttr(fp_circle_row,"uuid");!center2||!end||!stroke||!layer||fp_circles.push({center:center2,end,stroke,fill,layer,uuid})}let fp_polys=[],fp_polys_rows=kicadSExpr.slice(2).filter(row=>row[0]==="fp_poly");for(let fp_poly_row of fp_polys_rows){let pts=getAttr(fp_poly_row,"pts"),stroke=getAttr(fp_poly_row,"stroke"),width=getAttr(fp_poly_row,"width"),layer=getAttr(fp_poly_row,"layer"),uuid=getAttr(fp_poly_row,"uuid"),fill=getAttr(fp_poly_row,"fill"),normalizedStroke=stroke;!normalizedStroke&&typeof width=="number"?normalizedStroke={width,type:"solid"}:normalizedStroke&&typeof normalizedStroke=="object"&&typeof width=="number"&&normalizedStroke.width===void 0&&(normalizedStroke={...normalizedStroke,width}),fp_polys.push({pts,stroke:normalizedStroke,layer,uuid,fill})}let holes=[];for(let row of kicadSExpr.slice(2)){if(row[0]!=="pad"||row[2]?.valueOf?.()!=="thru_hole")continue;let name=row[1]?.valueOf?.(),pad_type=row[2]?.valueOf?.(),pad_shape=row[3]?.valueOf?.(),at3=getAttr(row,"at"),drill=getAttr(row,"drill"),size2=getAttr(row,"size");Array.isArray(size2)&&(size2[0]==="size"&&(size2=size2.slice(1)),size2={width:Number(size2[0]),height:Number(size2[1])});let uuid=getAttr(row,"uuid"),roundrect_rratio=getAttr(row,"roundrect_rratio"),layers=getAttr(row,"layers");Array.isArray(layers)?layers=layers.map(layer=>layer.valueOf()):typeof layers=="string"?layers=[layers]:layers||(layers=[]);let holeRaw={name,pad_type,pad_shape,at:at3,drill,size:size2,layers,roundrect_rratio,uuid};debug11(`attempting to parse holes: ${JSON.stringify(holeRaw,null,2)}`),holes.push(hole_def.parse(holeRaw))}return kicad_mod_json_def.parse({footprint_name:footprintName,...topLevelAttributes,properties,fp_lines,fp_texts,fp_arcs,fp_circles,pads,holes,fp_polys})},TWO_PI=Math.PI*2,normalizeAngle2=angle=>{let result=angle%TWO_PI;return result<0&&(result+=TWO_PI),result},directedAngleCCW=(start,target)=>{let startNorm=normalizeAngle2(start),delta=normalizeAngle2(target)-startNorm;return delta<0&&(delta+=TWO_PI),delta};function calculateCenter(start,mid,end){let mid1={x:(start.x+mid.x)/2,y:(start.y+mid.y)/2},mid2={x:(mid.x+end.x)/2,y:(mid.y+end.y)/2},slope1=-(start.x-mid.x)/(start.y-mid.y),slope2=-(mid.x-end.x)/(mid.y-end.y),centerX=(mid1.y-mid2.y+slope2*mid2.x-slope1*mid1.x)/(slope2-slope1),centerY=mid1.y+slope1*(centerX-mid1.x);return{x:centerX,y:centerY}}function calculateRadius(center2,point42){return Math.sqrt((center2.x-point42.x)**2+(center2.y-point42.y)**2)}function calculateAngle(center2,point42){return Math.atan2(point42.y-center2.y,point42.x-center2.x)}var getArcLength=(start,mid,end)=>{let center2=calculateCenter(start,mid,end),radius=calculateRadius(center2,start),angleStart=calculateAngle(center2,start),angleMid=calculateAngle(center2,mid),angleEnd=calculateAngle(center2,end),ccwToMid=directedAngleCCW(angleStart,angleMid),ccwToEnd=directedAngleCCW(angleStart,angleEnd),angleDelta=ccwToEnd;return ccwToMid>ccwToEnd&&(angleDelta=ccwToEnd-TWO_PI),Math.abs(radius*angleDelta)};function generateArcPath(start,mid,end,numPoints){let center2=calculateCenter(start,mid,end),radius=calculateRadius(center2,start),angleStart=calculateAngle(center2,start),angleMid=calculateAngle(center2,mid),angleEnd=calculateAngle(center2,end),ccwToMid=directedAngleCCW(angleStart,angleMid),ccwToEnd=directedAngleCCW(angleStart,angleEnd),angleDelta=ccwToEnd;ccwToMid>ccwToEnd&&(angleDelta=ccwToEnd-TWO_PI);let path=[];for(let i3=0;i3<=numPoints;i3++){let angle=angleStart+i3/numPoints*angleDelta,x3=center2.x+radius*Math.cos(angle),y3=center2.y+radius*Math.sin(angle);path.push({x:x3,y:y3})}return path}var makePoint=p2=>Array.isArray(p2)?{x:p2[0],y:p2[1]}:p2,pointsEqual=(p12,p2,tolerance=1e-4)=>Math.abs(p12.x-p2.x)<tolerance&&Math.abs(p12.y-p2.y)<tolerance,findClosedPolygons=segments=>{let polygons=[],used=new Set;for(let i3=0;i3<segments.length;i3++){if(used.has(i3))continue;let polygon2=[segments[i3]];used.add(i3);let currentEnd=segments[i3].end,foundNext=!0;for(;foundNext;){if(foundNext=!1,polygon2.length>1&&pointsEqual(currentEnd,polygon2[0].start)){polygons.push(polygon2);break}for(let j3=0;j3<segments.length;j3++)if(!used.has(j3)){if(pointsEqual(currentEnd,segments[j3].start)){polygon2.push(segments[j3]),used.add(j3),currentEnd=segments[j3].end,foundNext=!0;break}else if(pointsEqual(currentEnd,segments[j3].end)){segments[j3].type==="arc"?polygon2.push({...segments[j3],reversed:!0}):polygon2.push({...segments[j3],start:segments[j3].end,end:segments[j3].start}),used.add(j3),currentEnd=segments[j3].start,foundNext=!0;break}}if(!foundNext){for(let k4=polygon2.length-1;k4>=0;k4--){let idx=segments.indexOf(polygon2[k4]);idx!==-1&&used.delete(idx)}break}}}return polygons},polygonToPoints=polygon2=>{let points=[];for(let segment2 of polygon2)if(segment2.type==="line")points.push(segment2.start);else if(segment2.type==="arc"&&segment2.mid){let arcLength=getArcLength(segment2.start,segment2.mid,segment2.end),numPoints=Math.max(3,Math.ceil(arcLength)),arcPoints=generateArcPath(segment2.start,segment2.mid,segment2.end,numPoints);segment2.reversed&&(arcPoints=arcPoints.reverse()),points.push(...arcPoints.slice(0,-1))}return points};function getSilkscreenFontSizeFromFpTexts(fp_texts){if(!Array.isArray(fp_texts))return null;let refText=fp_texts.find(t5=>t5.layer?.toLowerCase()==="f.silks"&&(t5.text?.includes("${REFERENCE}")||t5.fp_text_type?.toLowerCase()==="reference"||t5.text?.match(/^R\d+|C\d+|U\d+/))),fallbackText=refText||fp_texts.find(t5=>t5.layer?.toLowerCase()==="f.fab"&&(t5.text?.includes("${REFERENCE}")||t5.fp_text_type?.toLowerCase()==="reference")),target=refText||fallbackText;if(!target?.effects?.font?.size)return null;let[width,height]=target.effects.font.size;return height??width??1}var degToRad=deg=>deg*Math.PI/180,rotatePoint3=(x3,y3,deg)=>{let r4=degToRad(deg),cos4=Math.cos(r4),sin4=Math.sin(r4);return{x:x3*cos4-y3*sin4,y:x3*sin4+y3*cos4}},getAxisAlignedRectFromPoints=points=>{let uniquePoints=[...new Map(points.map(p2=>[`${p2.x},${p2.y}`,p2])).values()];if(uniquePoints.length!==4)return null;let xs3=uniquePoints.map(p2=>p2.x),ys3=uniquePoints.map(p2=>p2.y),uniqueXs=[...new Set(xs3)],uniqueYs=[...new Set(ys3)];if(uniqueXs.length!==2||uniqueYs.length!==2)return null;let[minX,maxX]=uniqueXs.sort((a2,b3)=>a2-b3),[minY,maxY]=uniqueYs.sort((a2,b3)=>a2-b3);return minX===void 0||maxX===void 0||minY===void 0||maxY===void 0?null:{x:(minX+maxX)/2,y:(minY+maxY)/2,width:maxX-minX,height:maxY-minY}},fpPolyHasFill=fill=>{if(!fill)return!1;let normalized=fill.toLowerCase();return normalized!=="no"&&normalized!=="none"&&normalized!=="outline"},getRotationDeg=at3=>at3&&Array.isArray(at3)&&at3.length>=3&&typeof at3[2]=="number"?at3[2]:0,isNinetyLike=deg=>{let n3=(deg%360+360)%360;return n3===90||n3===270},normalizePortName=name=>{if(name!=null)return`${name}`},getPinNumber=name=>{let normalized=normalizePortName(name),parsed=normalized!==void 0?Number(normalized):NaN;return Number.isFinite(parsed)?parsed:void 0},debug23=(0,import_debug20.default)("kicad-mod-converter"),convertKicadLayerToTscircuitLayer=kicadLayer=>{switch(kicadLayer.toLowerCase()){case"f.cu":case"f.fab":case"f.silks":case"edge.cuts":return"top";case"b.cu":case"b.fab":case"b.silks":return"bottom"}},convertKicadJsonToTsCircuitSoup=async kicadJson=>{let{fp_lines,fp_texts,fp_arcs,fp_circles,pads,properties,holes,fp_polys}=kicadJson,circuitJson=[];circuitJson.push({type:"source_component",source_component_id:"source_component_0",supplier_part_numbers:{}}),circuitJson.push({type:"schematic_component",schematic_component_id:"schematic_component_0",source_component_id:"source_component_0",center:{x:0,y:0},rotation:0,size:{width:0,height:0}});let portNames=new Set,portNameToPinNumber=new Map;for(let pad2 of pads){let portName=normalizePortName(pad2.name);if(portName){portNames.add(portName);let pinNumber=getPinNumber(pad2.name);pinNumber!==void 0&&portNameToPinNumber.set(portName,pinNumber)}}if(holes)for(let hole of holes){let portName=normalizePortName(hole.name);if(portName){portNames.add(portName);let pinNumber=getPinNumber(hole.name);pinNumber!==void 0&&portNameToPinNumber.set(portName,pinNumber)}}let sourcePortId=0,portNameToSourcePortId=new Map;for(let portName of portNames){let source_port_id=`source_port_${sourcePortId++}`;portNameToSourcePortId.set(portName,source_port_id);let pinNumber=portNameToPinNumber.get(portName);circuitJson.push({type:"source_port",source_port_id,source_component_id:"source_component_0",name:portName,port_hints:[portName],pin_number:pinNumber,pin_label:pinNumber!==void 0?`pin${pinNumber}`:void 0}),circuitJson.push({type:"schematic_port",schematic_port_id:`schematic_port_${sourcePortId++}`,source_port_id,schematic_component_id:"schematic_component_0",center:{x:0,y:0}})}let minX=Number.POSITIVE_INFINITY,maxX=Number.NEGATIVE_INFINITY,minY=Number.POSITIVE_INFINITY,maxY=Number.NEGATIVE_INFINITY;for(let pad2 of pads){let x3=pad2.at[0],y3=-pad2.at[1],w4=pad2.size[0],h2=pad2.size[1];minX=Math.min(minX,x3-w4/2),maxX=Math.max(maxX,x3+w4/2),minY=Math.min(minY,y3-h2/2),maxY=Math.max(maxY,y3+h2/2)}let pcb_component_id="pcb_component_0";circuitJson.push({type:"pcb_component",source_component_id:"source_component_0",pcb_component_id,layer:"top",center:{x:0,y:0},rotation:0,width:Number.isFinite(minX)?maxX-minX:0,height:Number.isFinite(minY)?maxY-minY:0});let pcbPortId=0,portNameToPcbPortId=new Map;for(let portName of portNames){let pcb_port_id=`pcb_port_${pcbPortId++}`,source_port_id=portNameToSourcePortId.get(portName);portNameToPcbPortId.set(portName,pcb_port_id);let x3=0,y3=0,layers=["top","bottom"],pad2=pads.find(p2=>normalizePortName(p2.name)===portName);if(pad2)x3=pad2.at[0],y3=-pad2.at[1],layers=pad2.layers?pad2.layers.map(l2=>convertKicadLayerToTscircuitLayer(l2)).filter(Boolean):["top","bottom"];else if(holes){let hole=holes.find(h2=>normalizePortName(h2.name)===portName);hole&&(x3=hole.at[0],y3=-hole.at[1],layers=hole.layers?hole.layers.map(l2=>convertKicadLayerToTscircuitLayer(l2)).filter(Boolean):["top","bottom"])}circuitJson.push({type:"pcb_port",pcb_port_id,source_port_id,pcb_component_id,x:x3,y:y3,layers})}let smtpadId=0,platedHoleId=0,holeId=0;for(let pad2 of pads){let portName=normalizePortName(pad2.name),pinNumber=portName?portNameToPinNumber.get(portName):void 0;if(pad2.pad_type==="smd"){let rotation4=getRotationDeg(pad2.at),width=isNinetyLike(rotation4)?pad2.size[1]:pad2.size[0],height=isNinetyLike(rotation4)?pad2.size[0]:pad2.size[1],pcb_port_id=portName?portNameToPcbPortId.get(portName):void 0,pinLabel=pinNumber!==void 0?`pin${pinNumber}`:void 0;circuitJson.push({type:"pcb_smtpad",pcb_smtpad_id:`pcb_smtpad_${smtpadId++}`,shape:"rect",x:pad2.at[0],y:-pad2.at[1],width,height,layer:convertKicadLayerToTscircuitLayer(pad2.layers?.[0]??"F.Cu"),pcb_component_id,port_hints:pinLabel?[pinLabel]:portName?[portName]:[],pcb_port_id,pin_number:pinNumber,pin_label:pinLabel})}else if(pad2.pad_type==="thru_hole"){if(pad2.pad_shape==="rect"){let rotation4=getRotationDeg(pad2.at),width=isNinetyLike(rotation4)?pad2.size[1]:pad2.size[0],height=isNinetyLike(rotation4)?pad2.size[0]:pad2.size[1],offX=pad2.drill?.offset?.[0]??0,offY=pad2.drill?.offset?.[1]??0,rotOff=rotatePoint3(offX,offY,rotation4),pcb_port_id=portName?portNameToPcbPortId.get(portName):void 0,pinLabel=pinNumber!==void 0?`pin${pinNumber}`:void 0;circuitJson.push({type:"pcb_plated_hole",pcb_plated_hole_id:`pcb_plated_hole_${platedHoleId++}`,shape:"circular_hole_with_rect_pad",hole_shape:"circle",pad_shape:"rect",x:pad2.at[0],y:-pad2.at[1],hole_offset_x:-rotOff.x,hole_offset_y:-rotOff.y,hole_diameter:pad2.drill?.width,rect_pad_width:width,rect_pad_height:height,layers:["top","bottom"],pcb_component_id,port_hints:pinLabel?[pinLabel]:portName?[portName]:[],pcb_port_id,pin_number:pinNumber,pin_label:pinLabel})}else if(pad2.pad_shape==="circle"){let pcb_port_id=portName?portNameToPcbPortId.get(portName):void 0,pinLabel=pinNumber!==void 0?`pin${pinNumber}`:void 0;circuitJson.push({type:"pcb_plated_hole",pcb_plated_hole_id:`pcb_plated_hole_${platedHoleId++}`,shape:"circle",x:pad2.at[0],y:-pad2.at[1],outer_diameter:pad2.size[0],hole_diameter:pad2.drill?.width,layers:["top","bottom"],pcb_component_id,port_hints:pinLabel?[pinLabel]:portName?[portName]:[],pcb_port_id,pin_number:pinNumber,pin_label:pinLabel})}else if(pad2.pad_shape==="oval"){let pcb_port_id=portName?portNameToPcbPortId.get(portName):void 0,pinLabel=pinNumber!==void 0?`pin${pinNumber}`:void 0;circuitJson.push({type:"pcb_plated_hole",pcb_plated_hole_id:`pcb_plated_hole_${platedHoleId++}`,shape:"pill",x:pad2.at[0],y:-pad2.at[1],outer_width:pad2.size[0],outer_height:pad2.size[1],hole_width:pad2.drill?.width,hole_height:pad2.drill?.height,layers:["top","bottom"],pcb_component_id,port_hints:pinLabel?[pinLabel]:portName?[portName]:[],pcb_port_id,pin_number:pinNumber,pin_label:pinLabel})}}else pad2.pad_type==="np_thru_hole"&&circuitJson.push({type:"pcb_hole",pcb_hole_id:`pcb_hole_${holeId++}`,x:pad2.at[0],y:-pad2.at[1],hole_diameter:pad2.drill?.width,pcb_component_id})}if(holes)for(let hole of holes){let portName=normalizePortName(hole.name),pinNumber=portName?portNameToPinNumber.get(portName):void 0,hasCuLayer=hole.layers?.some(l2=>l2.endsWith(".Cu")||l2==="*.Cu"),rotation4=getRotationDeg(hole.at),offX=hole.drill?.offset?.[0]??0,offY=hole.drill?.offset?.[1]??0,rotOff=rotatePoint3(offX,offY,rotation4),x3=hole.at[0]+rotOff.x,y3=-(hole.at[1]+rotOff.y),holeDiameter=hole.drill?.width??0,outerDiameter=hole.size?.width??holeDiameter,rr3=hole.roundrect_rratio??0,rectBorderRadius=rr3>0?Math.min(isNinetyLike(rotation4)?hole.size?.height??outerDiameter:hole.size?.width??outerDiameter,isNinetyLike(rotation4)?hole.size?.width??outerDiameter:hole.size?.height??outerDiameter)/2*rr3:0;if(hasCuLayer)if(hole.pad_shape==="rect"){let pcb_port_id=portName?portNameToPcbPortId.get(portName):void 0;circuitJson.push({type:"pcb_plated_hole",pcb_plated_hole_id:`pcb_plated_hole_${platedHoleId++}`,shape:"circular_hole_with_rect_pad",hole_shape:"circle",pad_shape:"rect",x:hole.at[0],y:-hole.at[1],hole_offset_x:-rotOff.x,hole_offset_y:-rotOff.y,hole_diameter:holeDiameter,rect_pad_width:isNinetyLike(rotation4)?hole.size?.height??outerDiameter:hole.size?.width??outerDiameter,rect_pad_height:isNinetyLike(rotation4)?hole.size?.width??outerDiameter:hole.size?.height??outerDiameter,rect_border_radius:rectBorderRadius,port_hints:pinNumber!==void 0?[`pin${pinNumber}`]:portName?[portName]:[],layers:["top","bottom"],pcb_component_id,pcb_port_id,pin_number:pinNumber,pin_label:pinNumber!==void 0?`pin${pinNumber}`:void 0})}else if(hole.pad_shape==="oval"){let pcb_port_id=portName?portNameToPcbPortId.get(portName):void 0;circuitJson.push({type:"pcb_plated_hole",pcb_plated_hole_id:`pcb_plated_hole_${platedHoleId++}`,shape:"pill",x:x3,y:y3,outer_width:isNinetyLike(rotation4)?hole.size?.height??outerDiameter:hole.size?.width??outerDiameter,outer_height:isNinetyLike(rotation4)?hole.size?.width??outerDiameter:hole.size?.height??outerDiameter,hole_width:isNinetyLike(rotation4)?hole.drill?.height??holeDiameter:hole.drill?.width??holeDiameter,hole_height:isNinetyLike(rotation4)?hole.drill?.width??holeDiameter:hole.drill?.height??holeDiameter,port_hints:pinNumber!==void 0?[`pin${pinNumber}`]:portName?[portName]:[],layers:["top","bottom"],pcb_component_id,pcb_port_id,pin_number:pinNumber,pin_label:pinNumber!==void 0?`pin${pinNumber}`:void 0})}else if(hole.pad_shape==="roundrect"){let pcb_port_id=portName?portNameToPcbPortId.get(portName):void 0,offX2=hole.drill?.offset?.[0]??0,offY2=hole.drill?.offset?.[1]??0,rotOff2=rotatePoint3(offX2,offY2,rotation4),width=isNinetyLike(rotation4)?hole.size?.height??outerDiameter:hole.size?.width??outerDiameter,height=isNinetyLike(rotation4)?hole.size?.width??outerDiameter:hole.size?.height??outerDiameter;circuitJson.push({type:"pcb_plated_hole",pcb_plated_hole_id:`pcb_plated_hole_${platedHoleId++}`,shape:"circular_hole_with_rect_pad",hole_shape:"circle",pad_shape:"rect",x:x3,y:y3,hole_offset_x:-rotOff2.x,hole_offset_y:rotOff2.y,hole_diameter:holeDiameter,rect_pad_width:width,rect_pad_height:height,rect_border_radius:rectBorderRadius,port_hints:pinNumber!==void 0?[`pin${pinNumber}`]:portName?[portName]:[],layers:["top","bottom"],pcb_component_id,pcb_port_id,pin_number:pinNumber,pin_label:pinNumber!==void 0?`pin${pinNumber}`:void 0})}else{let pcb_port_id=portName?portNameToPcbPortId.get(portName):void 0;circuitJson.push({type:"pcb_plated_hole",pcb_plated_hole_id:`pcb_plated_hole_${platedHoleId++}`,shape:"circle",x:x3,y:y3,outer_diameter:outerDiameter,hole_diameter:holeDiameter,port_hints:pinNumber!==void 0?[`pin${pinNumber}`]:portName?[portName]:[],layers:["top","bottom"],pcb_component_id,pcb_port_id,pin_number:pinNumber,pin_label:pinNumber!==void 0?`pin${pinNumber}`:void 0})}else circuitJson.push({type:"pcb_hole",pcb_hole_id:`pcb_hole_${holeId++}`,x:x3,y:y3,hole_diameter:outerDiameter,hole_shape:"circle",pcb_component_id})}let edgeCutSegments=[];for(let fp_line2 of fp_lines)fp_line2.layer.toLowerCase()==="edge.cuts"&&edgeCutSegments.push({type:"line",start:{x:fp_line2.start[0],y:fp_line2.start[1]},end:{x:fp_line2.end[0],y:fp_line2.end[1]},strokeWidth:fp_line2.stroke.width});for(let fp_arc of fp_arcs)fp_arc.layer.toLowerCase()==="edge.cuts"&&edgeCutSegments.push({type:"arc",start:{x:fp_arc.start[0],y:fp_arc.start[1]},mid:{x:fp_arc.mid[0],y:fp_arc.mid[1]},end:{x:fp_arc.end[0],y:fp_arc.end[1]},strokeWidth:fp_arc.stroke.width});let closedPolygons=findClosedPolygons(edgeCutSegments),cutoutId=0;for(let polygon2 of closedPolygons){let points=polygonToPoints(polygon2);points.length>=3&&circuitJson.push({type:"pcb_cutout",pcb_cutout_id:`pcb_cutout_${cutoutId++}`,shape:"polygon",points:points.map(p2=>({x:p2.x,y:-p2.y})),pcb_component_id})}let traceId=0,silkPathId=0,fabPathId=0,noteLineId=0;for(let fp_line2 of fp_lines){let route=[{x:fp_line2.start[0],y:-fp_line2.start[1]},{x:fp_line2.end[0],y:-fp_line2.end[1]}],lowerLayer=fp_line2.layer.toLowerCase();lowerLayer==="f.cu"?circuitJson.push({type:"pcb_trace",pcb_trace_id:`pcb_trace_${traceId++}`,pcb_component_id,layer:convertKicadLayerToTscircuitLayer(fp_line2.layer),route,thickness:fp_line2.stroke.width}):lowerLayer==="f.silks"?circuitJson.push({type:"pcb_silkscreen_path",pcb_silkscreen_path_id:`pcb_silkscreen_path_${silkPathId++}`,pcb_component_id,layer:"top",route,stroke_width:fp_line2.stroke.width}):lowerLayer==="edge.cuts"?debug23("Skipping Edge.Cuts fp_line (converted to pcb_cutout)",fp_line2.layer):lowerLayer==="f.fab"?circuitJson.push({type:"pcb_fabrication_note_path",fabrication_note_path_id:`fabrication_note_path_${fabPathId++}`,pcb_component_id,layer:"top",route,stroke_width:fp_line2.stroke.width,port_hints:[]}):lowerLayer.startsWith("user.")?circuitJson.push({type:"pcb_note_line",pcb_note_line_id:`pcb_note_line_${noteLineId++}`,pcb_component_id,x1:fp_line2.start[0],y1:-fp_line2.start[1],x2:fp_line2.end[0],y2:-fp_line2.end[1],stroke_width:fp_line2.stroke.width}):debug23("Unhandled layer for fp_line",fp_line2.layer)}if(fp_polys)for(let fp_poly of fp_polys){let route=[],pushRoutePoint=point42=>{!Number.isFinite(point42.x)||!Number.isFinite(point42.y)||route.push(point42)};for(let segment2 of fp_poly.pts){if(Array.isArray(segment2)){pushRoutePoint({x:segment2[0],y:-segment2[1]});continue}if(segment2&&typeof segment2=="object"&&"kind"in segment2){if(segment2.kind==="arc"){let start=makePoint(segment2.start),mid=makePoint(segment2.mid),end=makePoint(segment2.end),arcLength=getArcLength(start,mid,end),numPoints=Math.max(8,Math.ceil(arcLength)),adjustedNumPoints=Math.max(2,Math.ceil(arcLength/.1)),arcPoints=generateArcPath(start,mid,end,adjustedNumPoints).map(p2=>({x:p2.x,y:-p2.y}));for(let point42 of arcPoints)pushRoutePoint(point42)}continue}}let routePoints=route,polygonPoints=routePoints.length>2&&routePoints[0].x===routePoints[routePoints.length-1].x&&routePoints[0].y===routePoints[routePoints.length-1].y?routePoints.slice(0,-1):routePoints;if(routePoints.length===0)continue;let strokeWidth=fp_poly.stroke?.width??0;if(fp_poly.layer.endsWith(".Cu")){let rect=getAxisAlignedRectFromPoints(polygonPoints);rect?circuitJson.push({type:"pcb_smtpad",pcb_smtpad_id:`pcb_smtpad_${smtpadId++}`,shape:"rect",x:rect.x,y:rect.y,width:rect.width,height:rect.height,layer:convertKicadLayerToTscircuitLayer(fp_poly.layer),pcb_component_id}):fpPolyHasFill(fp_poly.fill)?polygonPoints.length>=3?circuitJson.push({type:"pcb_smtpad",pcb_smtpad_id:`pcb_smtpad_${smtpadId++}`,shape:"polygon",points:polygonPoints,layer:convertKicadLayerToTscircuitLayer(fp_poly.layer),pcb_component_id}):polygonPoints.length>=2&&circuitJson.push({type:"pcb_trace",pcb_trace_id:`pcb_trace_${traceId++}`,pcb_component_id,layer:convertKicadLayerToTscircuitLayer(fp_poly.layer),route:polygonPoints,thickness:strokeWidth}):polygonPoints.length>=2&&circuitJson.push({type:"pcb_trace",pcb_trace_id:`pcb_trace_${traceId++}`,pcb_component_id,layer:convertKicadLayerToTscircuitLayer(fp_poly.layer),route:polygonPoints,thickness:strokeWidth})}else fp_poly.layer.endsWith(".SilkS")?circuitJson.push({type:"pcb_silkscreen_path",pcb_silkscreen_path_id:`pcb_silkscreen_path_${silkPathId++}`,pcb_component_id,layer:convertKicadLayerToTscircuitLayer(fp_poly.layer),route:routePoints,stroke_width:strokeWidth}):fp_poly.layer.endsWith(".Fab")?circuitJson.push({type:"pcb_fabrication_note_path",fabrication_note_path_id:`fabrication_note_path_${fabPathId++}`,pcb_component_id,layer:convertKicadLayerToTscircuitLayer(fp_poly.layer),route:polygonPoints,stroke_width:strokeWidth,port_hints:[]}):debug23("Unhandled layer for fp_poly",fp_poly.layer)}let notePathId=0;for(let fp_arc of fp_arcs){let lowerLayer=fp_arc.layer.toLowerCase();if(lowerLayer==="edge.cuts"){debug23("Skipping Edge.Cuts fp_arc (converted to pcb_cutout)",fp_arc.layer);continue}let start=makePoint(fp_arc.start),mid=makePoint(fp_arc.mid),end=makePoint(fp_arc.end),arcLength=getArcLength(start,mid,end),arcPoints=generateArcPath(start,mid,end,Math.ceil(arcLength));if(lowerLayer.startsWith("user.")){circuitJson.push({type:"pcb_note_path",pcb_note_path_id:`pcb_note_path_${notePathId++}`,pcb_component_id,route:arcPoints.map(p2=>({x:p2.x,y:-p2.y})),stroke_width:fp_arc.stroke.width});continue}let tscircuitLayer=convertKicadLayerToTscircuitLayer(fp_arc.layer);if(!tscircuitLayer){debug23("Unable to convert layer for fp_arc",fp_arc.layer);continue}circuitJson.push({type:"pcb_silkscreen_path",pcb_silkscreen_path_id:`pcb_silkscreen_path_${silkPathId++}`,layer:tscircuitLayer,pcb_component_id,route:arcPoints.map(p2=>({x:p2.x,y:-p2.y})),stroke_width:fp_arc.stroke.width})}if(fp_circles)for(let fp_circle of fp_circles){let lowerLayer=fp_circle.layer.toLowerCase(),center2=makePoint(fp_circle.center),endPoint=makePoint(fp_circle.end),radius=Math.sqrt((endPoint.x-center2.x)**2+(endPoint.y-center2.y)**2),numPoints=Math.max(16,Math.ceil(2*Math.PI*radius)),circlePoints=[];for(let i3=0;i3<=numPoints;i3++){let angle=i3/numPoints*2*Math.PI;circlePoints.push({x:center2.x+radius*Math.cos(angle),y:center2.y+radius*Math.sin(angle)})}lowerLayer.startsWith("user.")&&circuitJson.push({type:"pcb_note_path",pcb_note_path_id:`pcb_note_path_${notePathId++}`,pcb_component_id,route:circlePoints.map(p2=>({x:p2.x,y:-p2.y})),stroke_width:fp_circle.stroke.width})}for(let fp_text of fp_texts){let layerRef=convertKicadLayerToTscircuitLayer(fp_text.layer);fp_text.layer.endsWith(".SilkS")?circuitJson.push({type:"pcb_silkscreen_text",layer:layerRef,font:"tscircuit2024",font_size:fp_text.effects?.font?.size[0]??1,pcb_component_id,anchor_position:{x:fp_text.at[0],y:-fp_text.at[1]},anchor_alignment:"center",text:fp_text.text}):fp_text.layer.endsWith(".Fab")?circuitJson.push({type:"pcb_fabrication_note_text",layer:layerRef,font:"tscircuit2024",font_size:fp_text.effects?.font?.size[0]??1,pcb_component_id,anchor_position:{x:fp_text.at[0],y:-fp_text.at[1]},anchor_alignment:"center",text:fp_text.text}):debug23("Unhandled layer for fp_text",fp_text.layer)}let refProp=properties.find(prop=>prop.key==="Reference"),valProp=properties.find(prop=>prop.key==="Value"),propFabTexts=[refProp,valProp].filter(p2=>p2&&!!p2.val);for(let propFab of propFabTexts){let at3=propFab.attributes.at;if(!at3)continue;let isFabLayer=propFab.attributes.layer?.toLowerCase()?.endsWith(".fab"),font_size=getSilkscreenFontSizeFromFpTexts(fp_texts);circuitJson.push({type:isFabLayer?"pcb_fabrication_note_text":"pcb_silkscreen_text",layer:"top",font:"tscircuit2024",font_size,pcb_component_id,anchor_position:{x:at3[0],y:-at3[1]},anchor_alignment:"center",text:propFab.val})}return circuitJson},parseKicadModToCircuitJson=async kicadMod=>{let kicadJson=parseKicadModToKicadJson(kicadMod);return await convertKicadJsonToTsCircuitSoup(kicadJson)};var transformJsDelivrImports=code=>code.replace(/from\s*["']\/npm\//g,'from "https://cdn.jsdelivr.net/npm/').replace(/import\s*\(\s*["']\/npm\//g,'import("https://cdn.jsdelivr.net/npm/'),dynamicallyLoadDependencyWithCdnBackup=async packageName=>{try{return(await import(packageName)).default}catch{console.log(`Failed to load ${packageName} locally, trying CDN fallback...`);try{let res2=await fetch(`https://cdn.jsdelivr.net/npm/${packageName}/+esm`);if(!res2.ok)throw new Error(`Failed to fetch ${packageName} from CDN: ${res2.statusText}`);let code=await res2.text();code=transformJsDelivrImports(code);let blob=new Blob([code],{type:"application/javascript"}),url=URL.createObjectURL(blob);try{let{default:loadedModule}=await import(url);return loadedModule}finally{URL.revokeObjectURL(url)}}catch(cdnError){throw console.error(`CDN fallback for ${packageName} also failed:`,cdnError),cdnError}}};var import_debug21=__toESM(require_browser(),1),debug12=(0,import_debug21.default)("tscircuit-eval:utils:partsEngineWithFileSystemCache");function createPartsEngineCacheKey(params){let{sourceComponent,footprinterString}=params;return{type:sourceComponent.type,ftype:sourceComponent.ftype,...sourceComponent.resistance&&{resistance:sourceComponent.resistance},...sourceComponent.capacitance&&{capacitance:sourceComponent.capacitance},...sourceComponent.inductance&&{inductance:sourceComponent.inductance},...sourceComponent.frequency&&{frequency:sourceComponent.frequency},...sourceComponent.load_capacitance&&{load_capacitance:sourceComponent.load_capacitance},...sourceComponent.voltage&&{voltage:sourceComponent.voltage},...sourceComponent.max_resistance&&{max_resistance:sourceComponent.max_resistance},...sourceComponent.pin_count&&{pin_count:sourceComponent.pin_count},...sourceComponent.gender&&{gender:sourceComponent.gender},...sourceComponent.transistor_type&&{transistor_type:sourceComponent.transistor_type},...sourceComponent.mosfet_mode&&{mosfet_mode:sourceComponent.mosfet_mode},...sourceComponent.channel_type&&{channel_type:sourceComponent.channel_type},...footprinterString&&{footprinterString}}}function partsEngineWithFilesystemCache(baseEngine,cacheEngine){return cacheEngine?{findPart:async params=>{let cacheKey=createPartsEngineCacheKey(params);try{let cached=await cacheEngine.get(JSON.stringify(cacheKey));if(cached)return JSON.parse(cached)}catch{}let result=await baseEngine.findPart(params);debug12("found part",{cacheKey,result});try{await cacheEngine.set(JSON.stringify(cacheKey),JSON.stringify(result))}catch{}return result}}:baseEngine}var KICAD_FOOTPRINT_CACHE_URL="https://kicad-mod-cache.tscircuit.com",ngspiceEngineCache=null,getPlatformConfig=(options={})=>({partsEngine:partsEngineWithFilesystemCache(jlcPartsEngine,options.filesystemCache),spiceEngineMap:{ngspice:{simulate:async spice=>{if(!ngspiceEngineCache){let createNgspiceSpiceEngine=await dynamicallyLoadDependencyWithCdnBackup("@tscircuit/ngspice-spice-engine").catch(error=>{throw new Error("Could not load ngspice engine from local node_modules or CDN fallback.",{cause:error})});createNgspiceSpiceEngine&&(ngspiceEngineCache=await createNgspiceSpiceEngine())}if(!ngspiceEngineCache)throw new Error("Could not load ngspice engine from local node_modules or CDN fallback.");return ngspiceEngineCache.simulate(spice)}}},footprintLibraryMap:{kicad:async footprintName=>{let baseUrl=`${KICAD_FOOTPRINT_CACHE_URL}/${footprintName}`,circuitJsonUrl=`${baseUrl}.circuit.json`,raw=await(await fetch(circuitJsonUrl)).json(),filtered=Array.isArray(raw)?raw.filter(el2=>el2?.type==="pcb_silkscreen_text"?el2?.text==="REF**":!0):raw,wrlUrl=`${baseUrl}.wrl`;return{footprintCircuitJson:filtered,cadModel:{wrlUrl,modelUnitToMmScale:2.54}}}},footprintFileParserMap:{kicad_mod:{loadFromUrl:async url=>{let kicadContent=await fetch(url).then(res2=>res2.text()),kicadJson=await parseKicadModToCircuitJson(kicadContent);return{footprintCircuitJson:Array.isArray(kicadJson)?kicadJson:[kicadJson]}}}}});var tslib_es6_exports={};__export(tslib_es6_exports,{__addDisposableResource:()=>__addDisposableResource,__assign:()=>__assign,__asyncDelegator:()=>__asyncDelegator,__asyncGenerator:()=>__asyncGenerator,__asyncValues:()=>__asyncValues,__await:()=>__await,__awaiter:()=>__awaiter,__classPrivateFieldGet:()=>__classPrivateFieldGet,__classPrivateFieldIn:()=>__classPrivateFieldIn,__classPrivateFieldSet:()=>__classPrivateFieldSet,__createBinding:()=>__createBinding,__decorate:()=>__decorate,__disposeResources:()=>__disposeResources,__esDecorate:()=>__esDecorate,__exportStar:()=>__exportStar,__extends:()=>__extends,__generator:()=>__generator,__importDefault:()=>__importDefault,__importStar:()=>__importStar,__makeTemplateObject:()=>__makeTemplateObject,__metadata:()=>__metadata,__param:()=>__param,__propKey:()=>__propKey,__read:()=>__read,__rest:()=>__rest,__rewriteRelativeImportExtension:()=>__rewriteRelativeImportExtension,__runInitializers:()=>__runInitializers,__setFunctionName:()=>__setFunctionName,__spread:()=>__spread,__spreadArray:()=>__spreadArray,__spreadArrays:()=>__spreadArrays,__values:()=>__values,default:()=>tslib_es6_default});var extendStatics=function(d3,b3){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d4,b4){d4.__proto__=b4}||function(d4,b4){for(var p2 in b4)Object.prototype.hasOwnProperty.call(b4,p2)&&(d4[p2]=b4[p2])},extendStatics(d3,b3)};function __extends(d3,b3){if(typeof b3!="function"&&b3!==null)throw new TypeError("Class extends value "+String(b3)+" is not a constructor or null");extendStatics(d3,b3);function __(){this.constructor=d3}d3.prototype=b3===null?Object.create(b3):(__.prototype=b3.prototype,new __)}var __assign=function(){return __assign=Object.assign||function(t5){for(var s3,i3=1,n3=arguments.length;i3<n3;i3++){s3=arguments[i3];for(var p2 in s3)Object.prototype.hasOwnProperty.call(s3,p2)&&(t5[p2]=s3[p2])}return t5},__assign.apply(this,arguments)};function __rest(s3,e4){var t5={};for(var p2 in s3)Object.prototype.hasOwnProperty.call(s3,p2)&&e4.indexOf(p2)<0&&(t5[p2]=s3[p2]);if(s3!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i3=0,p2=Object.getOwnPropertySymbols(s3);i3<p2.length;i3++)e4.indexOf(p2[i3])<0&&Object.prototype.propertyIsEnumerable.call(s3,p2[i3])&&(t5[p2[i3]]=s3[p2[i3]]);return t5}function __decorate(decorators,target,key,desc){var c3=arguments.length,r4=c3<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d3;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r4=Reflect.decorate(decorators,target,key,desc);else for(var i3=decorators.length-1;i3>=0;i3--)(d3=decorators[i3])&&(r4=(c3<3?d3(r4):c3>3?d3(target,key,r4):d3(target,key))||r4);return c3>3&&r4&&Object.defineProperty(target,key,r4),r4}function __param(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}}function __esDecorate(ctor,descriptorIn,decorators,contextIn,initializers,extraInitializers){function accept(f2){if(f2!==void 0&&typeof f2!="function")throw new TypeError("Function expected");return f2}for(var kind=contextIn.kind,key=kind==="getter"?"get":kind==="setter"?"set":"value",target=!descriptorIn&&ctor?contextIn.static?ctor:ctor.prototype:null,descriptor=descriptorIn||(target?Object.getOwnPropertyDescriptor(target,contextIn.name):{}),_4,done=!1,i3=decorators.length-1;i3>=0;i3--){var context={};for(var p2 in contextIn)context[p2]=p2==="access"?{}:contextIn[p2];for(var p2 in contextIn.access)context.access[p2]=contextIn.access[p2];context.addInitializer=function(f2){if(done)throw new TypeError("Cannot add initializers after decoration has completed");extraInitializers.push(accept(f2||null))};var result=(0,decorators[i3])(kind==="accessor"?{get:descriptor.get,set:descriptor.set}:descriptor[key],context);if(kind==="accessor"){if(result===void 0)continue;if(result===null||typeof result!="object")throw new TypeError("Object expected");(_4=accept(result.get))&&(descriptor.get=_4),(_4=accept(result.set))&&(descriptor.set=_4),(_4=accept(result.init))&&initializers.unshift(_4)}else(_4=accept(result))&&(kind==="field"?initializers.unshift(_4):descriptor[key]=_4)}target&&Object.defineProperty(target,contextIn.name,descriptor),done=!0}function __runInitializers(thisArg,initializers,value){for(var useValue=arguments.length>2,i3=0;i3<initializers.length;i3++)value=useValue?initializers[i3].call(thisArg,value):initializers[i3].call(thisArg);return useValue?value:void 0}function __propKey(x3){return typeof x3=="symbol"?x3:"".concat(x3)}function __setFunctionName(f2,name,prefix){return typeof name=="symbol"&&(name=name.description?"[".concat(name.description,"]"):""),Object.defineProperty(f2,"name",{configurable:!0,value:prefix?"".concat(prefix," ",name):name})}function __metadata(metadataKey,metadataValue){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(metadataKey,metadataValue)}function __awaiter(thisArg,_arguments,P4,generator){function adopt(value){return value instanceof P4?value:new P4(function(resolve){resolve(value)})}return new(P4||(P4=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e4){reject(e4)}}function rejected(value){try{step(generator.throw(value))}catch(e4){reject(e4)}}function step(result){result.done?resolve(result.value):adopt(result.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})}function __generator(thisArg,body){var _4={label:0,sent:function(){if(t5[0]&1)throw t5[1];return t5[1]},trys:[],ops:[]},f2,y3,t5,g4=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return g4.next=verb(0),g4.throw=verb(1),g4.return=verb(2),typeof Symbol=="function"&&(g4[Symbol.iterator]=function(){return this}),g4;function verb(n3){return function(v4){return step([n3,v4])}}function step(op2){if(f2)throw new TypeError("Generator is already executing.");for(;g4&&(g4=0,op2[0]&&(_4=0)),_4;)try{if(f2=1,y3&&(t5=op2[0]&2?y3.return:op2[0]?y3.throw||((t5=y3.return)&&t5.call(y3),0):y3.next)&&!(t5=t5.call(y3,op2[1])).done)return t5;switch(y3=0,t5&&(op2=[op2[0]&2,t5.value]),op2[0]){case 0:case 1:t5=op2;break;case 4:return _4.label++,{value:op2[1],done:!1};case 5:_4.label++,y3=op2[1],op2=[0];continue;case 7:op2=_4.ops.pop(),_4.trys.pop();continue;default:if(t5=_4.trys,!(t5=t5.length>0&&t5[t5.length-1])&&(op2[0]===6||op2[0]===2)){_4=0;continue}if(op2[0]===3&&(!t5||op2[1]>t5[0]&&op2[1]<t5[3])){_4.label=op2[1];break}if(op2[0]===6&&_4.label<t5[1]){_4.label=t5[1],t5=op2;break}if(t5&&_4.label<t5[2]){_4.label=t5[2],_4.ops.push(op2);break}t5[2]&&_4.ops.pop(),_4.trys.pop();continue}op2=body.call(thisArg,_4)}catch(e4){op2=[6,e4],y3=0}finally{f2=t5=0}if(op2[0]&5)throw op2[1];return{value:op2[0]?op2[1]:void 0,done:!0}}}var __createBinding=Object.create?(function(o4,m3,k4,k22){k22===void 0&&(k22=k4);var desc=Object.getOwnPropertyDescriptor(m3,k4);(!desc||("get"in desc?!m3.__esModule:desc.writable||desc.configurable))&&(desc={enumerable:!0,get:function(){return m3[k4]}}),Object.defineProperty(o4,k22,desc)}):(function(o4,m3,k4,k22){k22===void 0&&(k22=k4),o4[k22]=m3[k4]});function __exportStar(m3,o4){for(var p2 in m3)p2!=="default"&&!Object.prototype.hasOwnProperty.call(o4,p2)&&__createBinding(o4,m3,p2)}function __values(o4){var s3=typeof Symbol=="function"&&Symbol.iterator,m3=s3&&o4[s3],i3=0;if(m3)return m3.call(o4);if(o4&&typeof o4.length=="number")return{next:function(){return o4&&i3>=o4.length&&(o4=void 0),{value:o4&&o4[i3++],done:!o4}}};throw new TypeError(s3?"Object is not iterable.":"Symbol.iterator is not defined.")}function __read(o4,n3){var m3=typeof Symbol=="function"&&o4[Symbol.iterator];if(!m3)return o4;var i3=m3.call(o4),r4,ar3=[],e4;try{for(;(n3===void 0||n3-- >0)&&!(r4=i3.next()).done;)ar3.push(r4.value)}catch(error){e4={error}}finally{try{r4&&!r4.done&&(m3=i3.return)&&m3.call(i3)}finally{if(e4)throw e4.error}}return ar3}function __spread(){for(var ar3=[],i3=0;i3<arguments.length;i3++)ar3=ar3.concat(__read(arguments[i3]));return ar3}function __spreadArrays(){for(var s3=0,i3=0,il2=arguments.length;i3<il2;i3++)s3+=arguments[i3].length;for(var r4=Array(s3),k4=0,i3=0;i3<il2;i3++)for(var a2=arguments[i3],j3=0,jl2=a2.length;j3<jl2;j3++,k4++)r4[k4]=a2[j3];return r4}function __spreadArray(to3,from,pack2){if(pack2||arguments.length===2)for(var i3=0,l2=from.length,ar3;i3<l2;i3++)(ar3||!(i3 in from))&&(ar3||(ar3=Array.prototype.slice.call(from,0,i3)),ar3[i3]=from[i3]);return to3.concat(ar3||Array.prototype.slice.call(from))}function __await(v4){return this instanceof __await?(this.v=v4,this):new __await(v4)}function __asyncGenerator(thisArg,_arguments,generator){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var g4=generator.apply(thisArg,_arguments||[]),i3,q4=[];return i3=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),verb("next"),verb("throw"),verb("return",awaitReturn),i3[Symbol.asyncIterator]=function(){return this},i3;function awaitReturn(f2){return function(v4){return Promise.resolve(v4).then(f2,reject)}}function verb(n3,f2){g4[n3]&&(i3[n3]=function(v4){return new Promise(function(a2,b3){q4.push([n3,v4,a2,b3])>1||resume(n3,v4)})},f2&&(i3[n3]=f2(i3[n3])))}function resume(n3,v4){try{step(g4[n3](v4))}catch(e4){settle(q4[0][3],e4)}}function step(r4){r4.value instanceof __await?Promise.resolve(r4.value.v).then(fulfill,reject):settle(q4[0][2],r4)}function fulfill(value){resume("next",value)}function reject(value){resume("throw",value)}function settle(f2,v4){f2(v4),q4.shift(),q4.length&&resume(q4[0][0],q4[0][1])}}function __asyncDelegator(o4){var i3,p2;return i3={},verb("next"),verb("throw",function(e4){throw e4}),verb("return"),i3[Symbol.iterator]=function(){return this},i3;function verb(n3,f2){i3[n3]=o4[n3]?function(v4){return(p2=!p2)?{value:__await(o4[n3](v4)),done:!1}:f2?f2(v4):v4}:f2}}function __asyncValues(o4){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var m3=o4[Symbol.asyncIterator],i3;return m3?m3.call(o4):(o4=typeof __values=="function"?__values(o4):o4[Symbol.iterator](),i3={},verb("next"),verb("throw"),verb("return"),i3[Symbol.asyncIterator]=function(){return this},i3);function verb(n3){i3[n3]=o4[n3]&&function(v4){return new Promise(function(resolve,reject){v4=o4[n3](v4),settle(resolve,reject,v4.done,v4.value)})}}function settle(resolve,reject,d3,v4){Promise.resolve(v4).then(function(v6){resolve({value:v6,done:d3})},reject)}}function __makeTemplateObject(cooked,raw){return Object.defineProperty?Object.defineProperty(cooked,"raw",{value:raw}):cooked.raw=raw,cooked}var __setModuleDefault=Object.create?(function(o4,v4){Object.defineProperty(o4,"default",{enumerable:!0,value:v4})}):function(o4,v4){o4.default=v4},ownKeys=function(o4){return ownKeys=Object.getOwnPropertyNames||function(o5){var ar3=[];for(var k4 in o5)Object.prototype.hasOwnProperty.call(o5,k4)&&(ar3[ar3.length]=k4);return ar3},ownKeys(o4)};function __importStar(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k4=ownKeys(mod),i3=0;i3<k4.length;i3++)k4[i3]!=="default"&&__createBinding(result,mod,k4[i3]);return __setModuleDefault(result,mod),result}function __importDefault(mod){return mod&&mod.__esModule?mod:{default:mod}}function __classPrivateFieldGet(receiver,state2,kind,f2){if(kind==="a"&&!f2)throw new TypeError("Private accessor was defined without a getter");if(typeof state2=="function"?receiver!==state2||!f2:!state2.has(receiver))throw new TypeError("Cannot read private member from an object whose class did not declare it");return kind==="m"?f2:kind==="a"?f2.call(receiver):f2?f2.value:state2.get(receiver)}function __classPrivateFieldSet(receiver,state2,value,kind,f2){if(kind==="m")throw new TypeError("Private method is not writable");if(kind==="a"&&!f2)throw new TypeError("Private accessor was defined without a setter");if(typeof state2=="function"?receiver!==state2||!f2:!state2.has(receiver))throw new TypeError("Cannot write private member to an object whose class did not declare it");return kind==="a"?f2.call(receiver,value):f2?f2.value=value:state2.set(receiver,value),value}function __classPrivateFieldIn(state2,receiver){if(receiver===null||typeof receiver!="object"&&typeof receiver!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof state2=="function"?receiver===state2:state2.has(receiver)}function __addDisposableResource(env,value,async){if(value!=null){if(typeof value!="object"&&typeof value!="function")throw new TypeError("Object expected.");var dispose,inner;if(async){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");dispose=value[Symbol.asyncDispose]}if(dispose===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");dispose=value[Symbol.dispose],async&&(inner=dispose)}if(typeof dispose!="function")throw new TypeError("Object not disposable.");inner&&(dispose=function(){try{inner.call(this)}catch(e4){return Promise.reject(e4)}}),env.stack.push({value,dispose,async})}else async&&env.stack.push({async:!0});return value}var _SuppressedError=typeof SuppressedError=="function"?SuppressedError:function(error,suppressed,message){var e4=new Error(message);return e4.name="SuppressedError",e4.error=error,e4.suppressed=suppressed,e4};function __disposeResources(env){function fail(e4){env.error=env.hasError?new _SuppressedError(e4,env.error,"An error was suppressed during disposal."):e4,env.hasError=!0}var r4,s3=0;function next2(){for(;r4=env.stack.pop();)try{if(!r4.async&&s3===1)return s3=0,env.stack.push(r4),Promise.resolve().then(next2);if(r4.dispose){var result=r4.dispose.call(r4.value);if(r4.async)return s3|=2,Promise.resolve(result).then(next2,function(e4){return fail(e4),next2()})}else s3|=1}catch(e4){fail(e4)}if(s3===1)return env.hasError?Promise.reject(env.error):Promise.resolve();if(env.hasError)throw env.error}return next2()}function __rewriteRelativeImportExtension(path,preserveJsx){return typeof path=="string"&&/^\.\.?\//.test(path)?path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(m3,tsx,d3,ext,cm2){return tsx?preserveJsx?".jsx":".js":d3&&(!ext||!cm2)?m3:d3+ext+"."+cm2.toLowerCase()+"js"}):path}var tslib_es6_default={__extends,__assign,__rest,__decorate,__param,__esDecorate,__runInitializers,__propKey,__setFunctionName,__metadata,__awaiter,__generator,__createBinding,__exportStar,__values,__read,__spread,__spreadArrays,__spreadArray,__await,__asyncGenerator,__asyncDelegator,__asyncValues,__makeTemplateObject,__importStar,__importDefault,__classPrivateFieldGet,__classPrivateFieldSet,__classPrivateFieldIn,__addDisposableResource,__disposeResources,__rewriteRelativeImportExtension};var import_debug22=__toESM(require_browser(),1),debug13=(0,import_debug22.default)("tsci:eval:execution-context");function createExecutionContext(webWorkerConfiguration,opts={}){globalThis.React=React;let basePlatform=opts.platform||getPlatformConfig(),platform=opts.projectConfig?{...basePlatform,...opts.projectConfig}:basePlatform;platform.partsEngineDisabled&&(platform.partsEngine=void 0);let circuit=new RootCircuit({platform});opts.name&&(circuit.name=opts.name),opts.debugNamespace&&circuit.enableDebug(opts.debugNamespace);let logs=[];return{fsMap:{},entrypoint:"",logger:{info:message=>{logs.push({msg:message})},getLogs:()=>logs,stringifyLogs:()=>logs.map(log=>log.msg).join(`
625
+ `)},preSuppliedImports:{"@tscircuit/core":dist_exports4,tscircuit:dist_exports4,"@tscircuit/math-utils":dist_exports2,react:React,"react/jsx-runtime":ReactJsxRuntime,debug:import_debug22.default,tslib:tslib_es6_exports,"@tscircuit/props":{}},circuit,tsConfig:null,importStack:[],currentlyImporting:new Set,...webWorkerConfiguration}}function normalizeFilePath(filePath){let normFilePath=filePath;return normFilePath=normFilePath.replace(/\\/g,"/"),normFilePath=normFilePath.trim(),normFilePath.startsWith("./")&&(normFilePath=normFilePath.slice(2)),normFilePath.startsWith("/")&&(normFilePath=normFilePath.slice(1)),normFilePath}function normalizeFsMap(fsMap){let normalizedFsMap={};for(let[fsPath,fileContent]of Object.entries(fsMap))normalizedFsMap[normalizeFilePath(fsPath)]=fileContent;return normalizedFsMap}function dirname(path){if(!path)return".";let cleanPath=path.replace(/\\/g,"/").replace(/\/+$/,"");return cleanPath.indexOf("/")===-1?".":cleanPath.substring(0,cleanPath.lastIndexOf("/"))||"/"}function resolveRelativePath(importPath,cwd){if(importPath.startsWith("../")){let parentDir=dirname(cwd);return resolveRelativePath(importPath.slice(3),parentDir)}return importPath.startsWith("./")?resolveRelativePath(importPath.slice(2),cwd):importPath.startsWith("/")?importPath.slice(1):`${cwd}/${importPath}`}function getTsConfig(fsMapOrAllFilePaths){if(Array.isArray(fsMapOrAllFilePaths))return null;let tsconfigContent=fsMapOrAllFilePaths["tsconfig.json"];if(!tsconfigContent)return null;try{let sanitizedContent=tsconfigContent.replace(/\/\*[\s\S]*?\*\/|\/\/.*/g,"");return JSON.parse(sanitizedContent)}catch(e4){throw new Error(`Failed to parse tsconfig.json: ${e4.message}`)}}function resolveWithTsconfigPaths(opts){let{importPath,normalizedFilePathMap,extensions,tsConfig,tsconfigDir}=opts,paths=tsConfig?.compilerOptions?.paths;if(!paths)return null;let baseUrl=tsConfig?.compilerOptions?.baseUrl||".",tryResolveCandidate=candidate=>{let normalizedCandidate=normalizeFilePath(candidate);if(normalizedFilePathMap.has(normalizedCandidate))return normalizedFilePathMap.get(normalizedCandidate);for(let ext of extensions){let withExt=`${normalizedCandidate}.${ext}`;if(normalizedFilePathMap.has(withExt))return normalizedFilePathMap.get(withExt)}return null};for(let[alias,targets]of Object.entries(paths))if(alias.includes("*")){let[prefix,suffix]=alias.split("*");if(!importPath.startsWith(prefix)||!importPath.endsWith(suffix||""))continue;let starMatch=importPath.slice(prefix.length,importPath.length-(suffix?suffix.length:0));for(let target of targets){let replaced=target.replace("*",starMatch),candidate=baseUrl&&!replaced.startsWith("./")&&!replaced.startsWith("/")?`${baseUrl}/${replaced}`:replaced,resolved=tryResolveCandidate(candidate);if(resolved)return resolved}}else{if(importPath!==alias)continue;for(let target of targets){let candidate=baseUrl&&!target.startsWith("./")&&!target.startsWith("/")?`${baseUrl}/${target}`:target,resolved=tryResolveCandidate(candidate);if(resolved)return resolved}}let resolvedPathFromBaseUrl=resolveWithBaseUrl({importPath,normalizedFilePathMap,extensions,tsConfig,tsconfigDir});return resolvedPathFromBaseUrl||null}function resolveWithBaseUrl(opts){let{importPath,normalizedFilePathMap,extensions,tsConfig,tsconfigDir}=opts,baseUrl=tsConfig?.compilerOptions?.baseUrl;if(!baseUrl)return null;let filePathToResolve=`${tsconfigDir||"."}/${baseUrl}/${importPath}`;filePathToResolve=filePathToResolve.replace(/\/+/g,"/"),filePathToResolve=filePathToResolve.replace(/\/\.\//g,"/");let normalizedFilePath=normalizeFilePath(filePathToResolve);if(normalizedFilePathMap.has(normalizedFilePath))return normalizedFilePathMap.get(normalizedFilePath);for(let ext of extensions){let withExt=`${normalizedFilePath}.${ext}`;if(normalizedFilePathMap.has(withExt))return normalizedFilePathMap.get(withExt)}return null}function matchesTsconfigPathPattern(importPath,tsConfig){let paths=tsConfig?.compilerOptions?.paths;if(!paths)return!1;for(let[alias]of Object.entries(paths))if(alias.includes("*")){let[prefix,suffix]=alias.split("*");if(importPath.startsWith(prefix)&&importPath.endsWith(suffix||""))return!0}else if(importPath===alias)return!0;return!1}var FILE_EXTENSIONS=["tsx","ts","json","js","jsx","obj","gltf","glb","stl","step","stp"],resolveFilePath=(unknownFilePath,fsMapOrAllFilePaths,cwd,opts={})=>{let tsConfig=opts.tsConfig??null,isRelativeImport=unknownFilePath.startsWith("./")||unknownFilePath.startsWith("../"),hasBaseUrl=!!tsConfig?.compilerOptions?.baseUrl,resolvedPath=cwd&&(isRelativeImport||!hasBaseUrl)?resolveRelativePath(unknownFilePath,cwd):unknownFilePath,filePaths=new Set(Array.isArray(fsMapOrAllFilePaths)?fsMapOrAllFilePaths:Object.keys(fsMapOrAllFilePaths));if(filePaths.has(resolvedPath))return resolvedPath;let normalizedFilePathMap=new Map;for(let filePath of filePaths)normalizedFilePathMap.set(normalizeFilePath(filePath),filePath);let normalizedResolvedPath=normalizeFilePath(resolvedPath);if(isRelativeImport||!hasBaseUrl){if(normalizedFilePathMap.has(normalizedResolvedPath))return normalizedFilePathMap.get(normalizedResolvedPath);for(let ext of FILE_EXTENSIONS){let possibleFilePath=`${normalizedResolvedPath}.${ext}`;if(normalizedFilePathMap.has(possibleFilePath))return normalizedFilePathMap.get(possibleFilePath)}}if(!isRelativeImport){let resolvedPathFromPaths=resolveWithTsconfigPaths({importPath:unknownFilePath,normalizedFilePathMap,extensions:FILE_EXTENSIONS,tsConfig,tsconfigDir:opts.tsconfigDir});if(resolvedPathFromPaths)return resolvedPathFromPaths;let resolvedPathFromBaseUrl=resolveWithBaseUrl({importPath:unknownFilePath,normalizedFilePathMap,extensions:FILE_EXTENSIONS,tsConfig,tsconfigDir:opts.tsconfigDir});if(resolvedPathFromBaseUrl)return resolvedPathFromBaseUrl}if(!isRelativeImport&&!hasBaseUrl){let normalizedUnknownFilePath=normalizeFilePath(unknownFilePath);if(normalizedFilePathMap.has(normalizedUnknownFilePath))return normalizedFilePathMap.get(normalizedUnknownFilePath);for(let ext of FILE_EXTENSIONS){let possibleFilePath=`${normalizedUnknownFilePath}.${ext}`;if(normalizedFilePathMap.has(possibleFilePath))return normalizedFilePathMap.get(possibleFilePath)}}return null},resolveFilePathOrThrow=(unknownFilePath,fsMapOrAllFilePaths,cwd,opts={})=>{let resolvedFilePath=resolveFilePath(unknownFilePath,fsMapOrAllFilePaths,cwd,opts);if(!resolvedFilePath)throw new Error(`File not found "${unknownFilePath}", available paths:
626
626
 
627
627
  ${Object.keys(fsMapOrAllFilePaths).join(", ")}`);return resolvedFilePath};var stripComments=code=>{let out="",i3=0,inSingle=!1,inDouble=!1,inTemplate=!1;for(;i3<code.length;){let ch2=code[i3],next2=code[i3+1];if(!inDouble&&!inTemplate&&ch2==="'"&&code[i3-1]!=="\\"){inSingle=!inSingle,out+=ch2,i3++;continue}if(!inSingle&&!inTemplate&&ch2==='"'&&code[i3-1]!=="\\"){inDouble=!inDouble,out+=ch2,i3++;continue}if(!inSingle&&!inDouble&&ch2==="`"&&code[i3-1]!=="\\"){inTemplate=!inTemplate,out+=ch2,i3++;continue}if(!inSingle&&!inDouble&&!inTemplate){if(ch2==="/"&&next2==="/"){for(out+=" ",i3+=2;i3<code.length&&code[i3]!==`
628
628
  `;)out+=" ",i3++;continue}if(ch2==="/"&&next2==="*"){for(out+=" ",i3+=2;i3<code.length;){if(code[i3]===`
@@ -635,7 +635,7 @@ If "${propName}" is a type, use "export type { ${propName} }" instead of "export
635
635
  var module = { exports };
636
636
  var circuit = globalThis.__tscircuit_circuit;
637
637
  ${compiledCode};
638
- return module;`.trim();return Function(functionBody).call(globalThis)}var import_debug22=__toESM(require_browser(),1);var STATIC_ASSET_EXTENSIONS=[".glb",".kicad_mod",".gltf",".obj",".stl",".step",".stp"],isStaticAssetPath2=path=>STATIC_ASSET_EXTENSIONS.some(ext=>path.endsWith(ext));var ContextualKeyword;(function(ContextualKeyword2){ContextualKeyword2[ContextualKeyword2.NONE=0]="NONE";let _abstract=1;ContextualKeyword2[ContextualKeyword2._abstract=_abstract]="_abstract";let _accessor=_abstract+1;ContextualKeyword2[ContextualKeyword2._accessor=_accessor]="_accessor";let _as=_accessor+1;ContextualKeyword2[ContextualKeyword2._as=_as]="_as";let _assert=_as+1;ContextualKeyword2[ContextualKeyword2._assert=_assert]="_assert";let _asserts=_assert+1;ContextualKeyword2[ContextualKeyword2._asserts=_asserts]="_asserts";let _async=_asserts+1;ContextualKeyword2[ContextualKeyword2._async=_async]="_async";let _await=_async+1;ContextualKeyword2[ContextualKeyword2._await=_await]="_await";let _checks=_await+1;ContextualKeyword2[ContextualKeyword2._checks=_checks]="_checks";let _constructor=_checks+1;ContextualKeyword2[ContextualKeyword2._constructor=_constructor]="_constructor";let _declare=_constructor+1;ContextualKeyword2[ContextualKeyword2._declare=_declare]="_declare";let _enum=_declare+1;ContextualKeyword2[ContextualKeyword2._enum=_enum]="_enum";let _exports=_enum+1;ContextualKeyword2[ContextualKeyword2._exports=_exports]="_exports";let _from=_exports+1;ContextualKeyword2[ContextualKeyword2._from=_from]="_from";let _get=_from+1;ContextualKeyword2[ContextualKeyword2._get=_get]="_get";let _global=_get+1;ContextualKeyword2[ContextualKeyword2._global=_global]="_global";let _implements=_global+1;ContextualKeyword2[ContextualKeyword2._implements=_implements]="_implements";let _infer=_implements+1;ContextualKeyword2[ContextualKeyword2._infer=_infer]="_infer";let _interface=_infer+1;ContextualKeyword2[ContextualKeyword2._interface=_interface]="_interface";let _is=_interface+1;ContextualKeyword2[ContextualKeyword2._is=_is]="_is";let _keyof=_is+1;ContextualKeyword2[ContextualKeyword2._keyof=_keyof]="_keyof";let _mixins=_keyof+1;ContextualKeyword2[ContextualKeyword2._mixins=_mixins]="_mixins";let _module=_mixins+1;ContextualKeyword2[ContextualKeyword2._module=_module]="_module";let _namespace=_module+1;ContextualKeyword2[ContextualKeyword2._namespace=_namespace]="_namespace";let _of=_namespace+1;ContextualKeyword2[ContextualKeyword2._of=_of]="_of";let _opaque=_of+1;ContextualKeyword2[ContextualKeyword2._opaque=_opaque]="_opaque";let _out=_opaque+1;ContextualKeyword2[ContextualKeyword2._out=_out]="_out";let _override=_out+1;ContextualKeyword2[ContextualKeyword2._override=_override]="_override";let _private=_override+1;ContextualKeyword2[ContextualKeyword2._private=_private]="_private";let _protected=_private+1;ContextualKeyword2[ContextualKeyword2._protected=_protected]="_protected";let _proto=_protected+1;ContextualKeyword2[ContextualKeyword2._proto=_proto]="_proto";let _public=_proto+1;ContextualKeyword2[ContextualKeyword2._public=_public]="_public";let _readonly=_public+1;ContextualKeyword2[ContextualKeyword2._readonly=_readonly]="_readonly";let _require=_readonly+1;ContextualKeyword2[ContextualKeyword2._require=_require]="_require";let _satisfies=_require+1;ContextualKeyword2[ContextualKeyword2._satisfies=_satisfies]="_satisfies";let _set=_satisfies+1;ContextualKeyword2[ContextualKeyword2._set=_set]="_set";let _static=_set+1;ContextualKeyword2[ContextualKeyword2._static=_static]="_static";let _symbol=_static+1;ContextualKeyword2[ContextualKeyword2._symbol=_symbol]="_symbol";let _type=_symbol+1;ContextualKeyword2[ContextualKeyword2._type=_type]="_type";let _unique=_type+1;ContextualKeyword2[ContextualKeyword2._unique=_unique]="_unique";let _using=_unique+1;ContextualKeyword2[ContextualKeyword2._using=_using]="_using"})(ContextualKeyword||(ContextualKeyword={}));var TokenType;(function(TokenType2){TokenType2[TokenType2.PRECEDENCE_MASK=15]="PRECEDENCE_MASK";let IS_KEYWORD=16;TokenType2[TokenType2.IS_KEYWORD=IS_KEYWORD]="IS_KEYWORD";let IS_ASSIGN=32;TokenType2[TokenType2.IS_ASSIGN=IS_ASSIGN]="IS_ASSIGN";let IS_RIGHT_ASSOCIATIVE=64;TokenType2[TokenType2.IS_RIGHT_ASSOCIATIVE=IS_RIGHT_ASSOCIATIVE]="IS_RIGHT_ASSOCIATIVE";let IS_PREFIX=128;TokenType2[TokenType2.IS_PREFIX=IS_PREFIX]="IS_PREFIX";let IS_POSTFIX=256;TokenType2[TokenType2.IS_POSTFIX=IS_POSTFIX]="IS_POSTFIX";let IS_EXPRESSION_START=512;TokenType2[TokenType2.IS_EXPRESSION_START=IS_EXPRESSION_START]="IS_EXPRESSION_START";let num=512;TokenType2[TokenType2.num=num]="num";let bigint=1536;TokenType2[TokenType2.bigint=bigint]="bigint";let decimal=2560;TokenType2[TokenType2.decimal=decimal]="decimal";let regexp=3584;TokenType2[TokenType2.regexp=regexp]="regexp";let string=4608;TokenType2[TokenType2.string=string]="string";let name=5632;TokenType2[TokenType2.name=name]="name";let eof=6144;TokenType2[TokenType2.eof=eof]="eof";let bracketL=7680;TokenType2[TokenType2.bracketL=bracketL]="bracketL";let bracketR=8192;TokenType2[TokenType2.bracketR=bracketR]="bracketR";let braceL=9728;TokenType2[TokenType2.braceL=braceL]="braceL";let braceBarL=10752;TokenType2[TokenType2.braceBarL=braceBarL]="braceBarL";let braceR=11264;TokenType2[TokenType2.braceR=braceR]="braceR";let braceBarR=12288;TokenType2[TokenType2.braceBarR=braceBarR]="braceBarR";let parenL=13824;TokenType2[TokenType2.parenL=parenL]="parenL";let parenR=14336;TokenType2[TokenType2.parenR=parenR]="parenR";let comma2=15360;TokenType2[TokenType2.comma=comma2]="comma";let semi=16384;TokenType2[TokenType2.semi=semi]="semi";let colon=17408;TokenType2[TokenType2.colon=colon]="colon";let doubleColon=18432;TokenType2[TokenType2.doubleColon=doubleColon]="doubleColon";let dot=19456;TokenType2[TokenType2.dot=dot]="dot";let question=20480;TokenType2[TokenType2.question=question]="question";let questionDot=21504;TokenType2[TokenType2.questionDot=questionDot]="questionDot";let arrow=22528;TokenType2[TokenType2.arrow=arrow]="arrow";let template=23552;TokenType2[TokenType2.template=template]="template";let ellipsis=24576;TokenType2[TokenType2.ellipsis=ellipsis]="ellipsis";let backQuote=25600;TokenType2[TokenType2.backQuote=backQuote]="backQuote";let dollarBraceL=27136;TokenType2[TokenType2.dollarBraceL=dollarBraceL]="dollarBraceL";let at3=27648;TokenType2[TokenType2.at=at3]="at";let hash=29184;TokenType2[TokenType2.hash=hash]="hash";let eq=29728;TokenType2[TokenType2.eq=eq]="eq";let assign=30752;TokenType2[TokenType2.assign=assign]="assign";let preIncDec=32640;TokenType2[TokenType2.preIncDec=preIncDec]="preIncDec";let postIncDec=33664;TokenType2[TokenType2.postIncDec=postIncDec]="postIncDec";let bang=34432;TokenType2[TokenType2.bang=bang]="bang";let tilde=35456;TokenType2[TokenType2.tilde=tilde]="tilde";let pipeline=35841;TokenType2[TokenType2.pipeline=pipeline]="pipeline";let nullishCoalescing=36866;TokenType2[TokenType2.nullishCoalescing=nullishCoalescing]="nullishCoalescing";let logicalOR=37890;TokenType2[TokenType2.logicalOR=logicalOR]="logicalOR";let logicalAND=38915;TokenType2[TokenType2.logicalAND=logicalAND]="logicalAND";let bitwiseOR=39940;TokenType2[TokenType2.bitwiseOR=bitwiseOR]="bitwiseOR";let bitwiseXOR=40965;TokenType2[TokenType2.bitwiseXOR=bitwiseXOR]="bitwiseXOR";let bitwiseAND=41990;TokenType2[TokenType2.bitwiseAND=bitwiseAND]="bitwiseAND";let equality=43015;TokenType2[TokenType2.equality=equality]="equality";let lessThan=44040;TokenType2[TokenType2.lessThan=lessThan]="lessThan";let greaterThan=45064;TokenType2[TokenType2.greaterThan=greaterThan]="greaterThan";let relationalOrEqual=46088;TokenType2[TokenType2.relationalOrEqual=relationalOrEqual]="relationalOrEqual";let bitShiftL=47113;TokenType2[TokenType2.bitShiftL=bitShiftL]="bitShiftL";let bitShiftR=48137;TokenType2[TokenType2.bitShiftR=bitShiftR]="bitShiftR";let plus=49802;TokenType2[TokenType2.plus=plus]="plus";let minus=50826;TokenType2[TokenType2.minus=minus]="minus";let modulo=51723;TokenType2[TokenType2.modulo=modulo]="modulo";let star=52235;TokenType2[TokenType2.star=star]="star";let slash=53259;TokenType2[TokenType2.slash=slash]="slash";let exponent=54348;TokenType2[TokenType2.exponent=exponent]="exponent";let jsxName=55296;TokenType2[TokenType2.jsxName=jsxName]="jsxName";let jsxText=56320;TokenType2[TokenType2.jsxText=jsxText]="jsxText";let jsxEmptyText=57344;TokenType2[TokenType2.jsxEmptyText=jsxEmptyText]="jsxEmptyText";let jsxTagStart=58880;TokenType2[TokenType2.jsxTagStart=jsxTagStart]="jsxTagStart";let jsxTagEnd=59392;TokenType2[TokenType2.jsxTagEnd=jsxTagEnd]="jsxTagEnd";let typeParameterStart=60928;TokenType2[TokenType2.typeParameterStart=typeParameterStart]="typeParameterStart";let nonNullAssertion=61440;TokenType2[TokenType2.nonNullAssertion=nonNullAssertion]="nonNullAssertion";let _break=62480;TokenType2[TokenType2._break=_break]="_break";let _case=63504;TokenType2[TokenType2._case=_case]="_case";let _catch=64528;TokenType2[TokenType2._catch=_catch]="_catch";let _continue=65552;TokenType2[TokenType2._continue=_continue]="_continue";let _debugger=66576;TokenType2[TokenType2._debugger=_debugger]="_debugger";let _default=67600;TokenType2[TokenType2._default=_default]="_default";let _do=68624;TokenType2[TokenType2._do=_do]="_do";let _else=69648;TokenType2[TokenType2._else=_else]="_else";let _finally=70672;TokenType2[TokenType2._finally=_finally]="_finally";let _for=71696;TokenType2[TokenType2._for=_for]="_for";let _function=73232;TokenType2[TokenType2._function=_function]="_function";let _if=73744;TokenType2[TokenType2._if=_if]="_if";let _return=74768;TokenType2[TokenType2._return=_return]="_return";let _switch=75792;TokenType2[TokenType2._switch=_switch]="_switch";let _throw=77456;TokenType2[TokenType2._throw=_throw]="_throw";let _try=77840;TokenType2[TokenType2._try=_try]="_try";let _var=78864;TokenType2[TokenType2._var=_var]="_var";let _let=79888;TokenType2[TokenType2._let=_let]="_let";let _const=80912;TokenType2[TokenType2._const=_const]="_const";let _while=81936;TokenType2[TokenType2._while=_while]="_while";let _with=82960;TokenType2[TokenType2._with=_with]="_with";let _new=84496;TokenType2[TokenType2._new=_new]="_new";let _this=85520;TokenType2[TokenType2._this=_this]="_this";let _super=86544;TokenType2[TokenType2._super=_super]="_super";let _class=87568;TokenType2[TokenType2._class=_class]="_class";let _extends=88080;TokenType2[TokenType2._extends=_extends]="_extends";let _export=89104;TokenType2[TokenType2._export=_export]="_export";let _import=90640;TokenType2[TokenType2._import=_import]="_import";let _yield=91664;TokenType2[TokenType2._yield=_yield]="_yield";let _null=92688;TokenType2[TokenType2._null=_null]="_null";let _true=93712;TokenType2[TokenType2._true=_true]="_true";let _false=94736;TokenType2[TokenType2._false=_false]="_false";let _in=95256;TokenType2[TokenType2._in=_in]="_in";let _instanceof=96280;TokenType2[TokenType2._instanceof=_instanceof]="_instanceof";let _typeof=97936;TokenType2[TokenType2._typeof=_typeof]="_typeof";let _void=98960;TokenType2[TokenType2._void=_void]="_void";let _delete=99984;TokenType2[TokenType2._delete=_delete]="_delete";let _async=100880;TokenType2[TokenType2._async=_async]="_async";let _get=101904;TokenType2[TokenType2._get=_get]="_get";let _set=102928;TokenType2[TokenType2._set=_set]="_set";let _declare=103952;TokenType2[TokenType2._declare=_declare]="_declare";let _readonly=104976;TokenType2[TokenType2._readonly=_readonly]="_readonly";let _abstract=106e3;TokenType2[TokenType2._abstract=_abstract]="_abstract";let _static=107024;TokenType2[TokenType2._static=_static]="_static";let _public=107536;TokenType2[TokenType2._public=_public]="_public";let _private=108560;TokenType2[TokenType2._private=_private]="_private";let _protected=109584;TokenType2[TokenType2._protected=_protected]="_protected";let _override=110608;TokenType2[TokenType2._override=_override]="_override";let _as=112144;TokenType2[TokenType2._as=_as]="_as";let _enum=113168;TokenType2[TokenType2._enum=_enum]="_enum";let _type=114192;TokenType2[TokenType2._type=_type]="_type";let _implements=115216;TokenType2[TokenType2._implements=_implements]="_implements"})(TokenType||(TokenType={}));function formatTokenType(tokenType){switch(tokenType){case TokenType.num:return"num";case TokenType.bigint:return"bigint";case TokenType.decimal:return"decimal";case TokenType.regexp:return"regexp";case TokenType.string:return"string";case TokenType.name:return"name";case TokenType.eof:return"eof";case TokenType.bracketL:return"[";case TokenType.bracketR:return"]";case TokenType.braceL:return"{";case TokenType.braceBarL:return"{|";case TokenType.braceR:return"}";case TokenType.braceBarR:return"|}";case TokenType.parenL:return"(";case TokenType.parenR:return")";case TokenType.comma:return",";case TokenType.semi:return";";case TokenType.colon:return":";case TokenType.doubleColon:return"::";case TokenType.dot:return".";case TokenType.question:return"?";case TokenType.questionDot:return"?.";case TokenType.arrow:return"=>";case TokenType.template:return"template";case TokenType.ellipsis:return"...";case TokenType.backQuote:return"`";case TokenType.dollarBraceL:return"${";case TokenType.at:return"@";case TokenType.hash:return"#";case TokenType.eq:return"=";case TokenType.assign:return"_=";case TokenType.preIncDec:return"++/--";case TokenType.postIncDec:return"++/--";case TokenType.bang:return"!";case TokenType.tilde:return"~";case TokenType.pipeline:return"|>";case TokenType.nullishCoalescing:return"??";case TokenType.logicalOR:return"||";case TokenType.logicalAND:return"&&";case TokenType.bitwiseOR:return"|";case TokenType.bitwiseXOR:return"^";case TokenType.bitwiseAND:return"&";case TokenType.equality:return"==/!=";case TokenType.lessThan:return"<";case TokenType.greaterThan:return">";case TokenType.relationalOrEqual:return"<=/>=";case TokenType.bitShiftL:return"<<";case TokenType.bitShiftR:return">>/>>>";case TokenType.plus:return"+";case TokenType.minus:return"-";case TokenType.modulo:return"%";case TokenType.star:return"*";case TokenType.slash:return"/";case TokenType.exponent:return"**";case TokenType.jsxName:return"jsxName";case TokenType.jsxText:return"jsxText";case TokenType.jsxEmptyText:return"jsxEmptyText";case TokenType.jsxTagStart:return"jsxTagStart";case TokenType.jsxTagEnd:return"jsxTagEnd";case TokenType.typeParameterStart:return"typeParameterStart";case TokenType.nonNullAssertion:return"nonNullAssertion";case TokenType._break:return"break";case TokenType._case:return"case";case TokenType._catch:return"catch";case TokenType._continue:return"continue";case TokenType._debugger:return"debugger";case TokenType._default:return"default";case TokenType._do:return"do";case TokenType._else:return"else";case TokenType._finally:return"finally";case TokenType._for:return"for";case TokenType._function:return"function";case TokenType._if:return"if";case TokenType._return:return"return";case TokenType._switch:return"switch";case TokenType._throw:return"throw";case TokenType._try:return"try";case TokenType._var:return"var";case TokenType._let:return"let";case TokenType._const:return"const";case TokenType._while:return"while";case TokenType._with:return"with";case TokenType._new:return"new";case TokenType._this:return"this";case TokenType._super:return"super";case TokenType._class:return"class";case TokenType._extends:return"extends";case TokenType._export:return"export";case TokenType._import:return"import";case TokenType._yield:return"yield";case TokenType._null:return"null";case TokenType._true:return"true";case TokenType._false:return"false";case TokenType._in:return"in";case TokenType._instanceof:return"instanceof";case TokenType._typeof:return"typeof";case TokenType._void:return"void";case TokenType._delete:return"delete";case TokenType._async:return"async";case TokenType._get:return"get";case TokenType._set:return"set";case TokenType._declare:return"declare";case TokenType._readonly:return"readonly";case TokenType._abstract:return"abstract";case TokenType._static:return"static";case TokenType._public:return"public";case TokenType._private:return"private";case TokenType._protected:return"protected";case TokenType._override:return"override";case TokenType._as:return"as";case TokenType._enum:return"enum";case TokenType._type:return"type";case TokenType._implements:return"implements";default:return""}}var Scope=class{constructor(startTokenIndex,endTokenIndex,isFunctionScope){this.startTokenIndex=startTokenIndex,this.endTokenIndex=endTokenIndex,this.isFunctionScope=isFunctionScope}},StateSnapshot=class{constructor(potentialArrowAt,noAnonFunctionType,inDisallowConditionalTypesContext,tokensLength,scopesLength,pos,type,contextualKeyword,start,end,isType,scopeDepth,error){this.potentialArrowAt=potentialArrowAt,this.noAnonFunctionType=noAnonFunctionType,this.inDisallowConditionalTypesContext=inDisallowConditionalTypesContext,this.tokensLength=tokensLength,this.scopesLength=scopesLength,this.pos=pos,this.type=type,this.contextualKeyword=contextualKeyword,this.start=start,this.end=end,this.isType=isType,this.scopeDepth=scopeDepth,this.error=error}},State=class _State{constructor(){_State.prototype.__init.call(this),_State.prototype.__init2.call(this),_State.prototype.__init3.call(this),_State.prototype.__init4.call(this),_State.prototype.__init5.call(this),_State.prototype.__init6.call(this),_State.prototype.__init7.call(this),_State.prototype.__init8.call(this),_State.prototype.__init9.call(this),_State.prototype.__init10.call(this),_State.prototype.__init11.call(this),_State.prototype.__init12.call(this),_State.prototype.__init13.call(this)}__init(){this.potentialArrowAt=-1}__init2(){this.noAnonFunctionType=!1}__init3(){this.inDisallowConditionalTypesContext=!1}__init4(){this.tokens=[]}__init5(){this.scopes=[]}__init6(){this.pos=0}__init7(){this.type=TokenType.eof}__init8(){this.contextualKeyword=ContextualKeyword.NONE}__init9(){this.start=0}__init10(){this.end=0}__init11(){this.isType=!1}__init12(){this.scopeDepth=0}__init13(){this.error=null}snapshot(){return new StateSnapshot(this.potentialArrowAt,this.noAnonFunctionType,this.inDisallowConditionalTypesContext,this.tokens.length,this.scopes.length,this.pos,this.type,this.contextualKeyword,this.start,this.end,this.isType,this.scopeDepth,this.error)}restoreFromSnapshot(snapshot){this.potentialArrowAt=snapshot.potentialArrowAt,this.noAnonFunctionType=snapshot.noAnonFunctionType,this.inDisallowConditionalTypesContext=snapshot.inDisallowConditionalTypesContext,this.tokens.length=snapshot.tokensLength,this.scopes.length=snapshot.scopesLength,this.pos=snapshot.pos,this.type=snapshot.type,this.contextualKeyword=snapshot.contextualKeyword,this.start=snapshot.start,this.end=snapshot.end,this.isType=snapshot.isType,this.scopeDepth=snapshot.scopeDepth,this.error=snapshot.error}};var charCodes;(function(charCodes2){charCodes2[charCodes2.backSpace=8]="backSpace";let lineFeed=10;charCodes2[charCodes2.lineFeed=lineFeed]="lineFeed";let tab=9;charCodes2[charCodes2.tab=tab]="tab";let carriageReturn=13;charCodes2[charCodes2.carriageReturn=carriageReturn]="carriageReturn";let shiftOut=14;charCodes2[charCodes2.shiftOut=shiftOut]="shiftOut";let space=32;charCodes2[charCodes2.space=space]="space";let exclamationMark=33;charCodes2[charCodes2.exclamationMark=exclamationMark]="exclamationMark";let quotationMark=34;charCodes2[charCodes2.quotationMark=quotationMark]="quotationMark";let numberSign=35;charCodes2[charCodes2.numberSign=numberSign]="numberSign";let dollarSign=36;charCodes2[charCodes2.dollarSign=dollarSign]="dollarSign";let percentSign=37;charCodes2[charCodes2.percentSign=percentSign]="percentSign";let ampersand=38;charCodes2[charCodes2.ampersand=ampersand]="ampersand";let apostrophe=39;charCodes2[charCodes2.apostrophe=apostrophe]="apostrophe";let leftParenthesis=40;charCodes2[charCodes2.leftParenthesis=leftParenthesis]="leftParenthesis";let rightParenthesis=41;charCodes2[charCodes2.rightParenthesis=rightParenthesis]="rightParenthesis";let asterisk=42;charCodes2[charCodes2.asterisk=asterisk]="asterisk";let plusSign=43;charCodes2[charCodes2.plusSign=plusSign]="plusSign";let comma2=44;charCodes2[charCodes2.comma=comma2]="comma";let dash=45;charCodes2[charCodes2.dash=dash]="dash";let dot=46;charCodes2[charCodes2.dot=dot]="dot";let slash=47;charCodes2[charCodes2.slash=slash]="slash";let digit0=48;charCodes2[charCodes2.digit0=digit0]="digit0";let digit1=49;charCodes2[charCodes2.digit1=digit1]="digit1";let digit2=50;charCodes2[charCodes2.digit2=digit2]="digit2";let digit3=51;charCodes2[charCodes2.digit3=digit3]="digit3";let digit4=52;charCodes2[charCodes2.digit4=digit4]="digit4";let digit5=53;charCodes2[charCodes2.digit5=digit5]="digit5";let digit6=54;charCodes2[charCodes2.digit6=digit6]="digit6";let digit7=55;charCodes2[charCodes2.digit7=digit7]="digit7";let digit8=56;charCodes2[charCodes2.digit8=digit8]="digit8";let digit9=57;charCodes2[charCodes2.digit9=digit9]="digit9";let colon=58;charCodes2[charCodes2.colon=colon]="colon";let semicolon3=59;charCodes2[charCodes2.semicolon=semicolon3]="semicolon";let lessThan=60;charCodes2[charCodes2.lessThan=lessThan]="lessThan";let equalsTo=61;charCodes2[charCodes2.equalsTo=equalsTo]="equalsTo";let greaterThan=62;charCodes2[charCodes2.greaterThan=greaterThan]="greaterThan";let questionMark=63;charCodes2[charCodes2.questionMark=questionMark]="questionMark";let atSign=64;charCodes2[charCodes2.atSign=atSign]="atSign";let uppercaseA=65;charCodes2[charCodes2.uppercaseA=uppercaseA]="uppercaseA";let uppercaseB=66;charCodes2[charCodes2.uppercaseB=uppercaseB]="uppercaseB";let uppercaseC=67;charCodes2[charCodes2.uppercaseC=uppercaseC]="uppercaseC";let uppercaseD=68;charCodes2[charCodes2.uppercaseD=uppercaseD]="uppercaseD";let uppercaseE=69;charCodes2[charCodes2.uppercaseE=uppercaseE]="uppercaseE";let uppercaseF=70;charCodes2[charCodes2.uppercaseF=uppercaseF]="uppercaseF";let uppercaseG=71;charCodes2[charCodes2.uppercaseG=uppercaseG]="uppercaseG";let uppercaseH=72;charCodes2[charCodes2.uppercaseH=uppercaseH]="uppercaseH";let uppercaseI=73;charCodes2[charCodes2.uppercaseI=uppercaseI]="uppercaseI";let uppercaseJ=74;charCodes2[charCodes2.uppercaseJ=uppercaseJ]="uppercaseJ";let uppercaseK=75;charCodes2[charCodes2.uppercaseK=uppercaseK]="uppercaseK";let uppercaseL=76;charCodes2[charCodes2.uppercaseL=uppercaseL]="uppercaseL";let uppercaseM=77;charCodes2[charCodes2.uppercaseM=uppercaseM]="uppercaseM";let uppercaseN=78;charCodes2[charCodes2.uppercaseN=uppercaseN]="uppercaseN";let uppercaseO=79;charCodes2[charCodes2.uppercaseO=uppercaseO]="uppercaseO";let uppercaseP=80;charCodes2[charCodes2.uppercaseP=uppercaseP]="uppercaseP";let uppercaseQ=81;charCodes2[charCodes2.uppercaseQ=uppercaseQ]="uppercaseQ";let uppercaseR=82;charCodes2[charCodes2.uppercaseR=uppercaseR]="uppercaseR";let uppercaseS=83;charCodes2[charCodes2.uppercaseS=uppercaseS]="uppercaseS";let uppercaseT=84;charCodes2[charCodes2.uppercaseT=uppercaseT]="uppercaseT";let uppercaseU=85;charCodes2[charCodes2.uppercaseU=uppercaseU]="uppercaseU";let uppercaseV=86;charCodes2[charCodes2.uppercaseV=uppercaseV]="uppercaseV";let uppercaseW=87;charCodes2[charCodes2.uppercaseW=uppercaseW]="uppercaseW";let uppercaseX=88;charCodes2[charCodes2.uppercaseX=uppercaseX]="uppercaseX";let uppercaseY=89;charCodes2[charCodes2.uppercaseY=uppercaseY]="uppercaseY";let uppercaseZ=90;charCodes2[charCodes2.uppercaseZ=uppercaseZ]="uppercaseZ";let leftSquareBracket=91;charCodes2[charCodes2.leftSquareBracket=leftSquareBracket]="leftSquareBracket";let backslash=92;charCodes2[charCodes2.backslash=backslash]="backslash";let rightSquareBracket=93;charCodes2[charCodes2.rightSquareBracket=rightSquareBracket]="rightSquareBracket";let caret=94;charCodes2[charCodes2.caret=caret]="caret";let underscore=95;charCodes2[charCodes2.underscore=underscore]="underscore";let graveAccent=96;charCodes2[charCodes2.graveAccent=graveAccent]="graveAccent";let lowercaseA=97;charCodes2[charCodes2.lowercaseA=lowercaseA]="lowercaseA";let lowercaseB=98;charCodes2[charCodes2.lowercaseB=lowercaseB]="lowercaseB";let lowercaseC=99;charCodes2[charCodes2.lowercaseC=lowercaseC]="lowercaseC";let lowercaseD=100;charCodes2[charCodes2.lowercaseD=lowercaseD]="lowercaseD";let lowercaseE=101;charCodes2[charCodes2.lowercaseE=lowercaseE]="lowercaseE";let lowercaseF=102;charCodes2[charCodes2.lowercaseF=lowercaseF]="lowercaseF";let lowercaseG=103;charCodes2[charCodes2.lowercaseG=lowercaseG]="lowercaseG";let lowercaseH=104;charCodes2[charCodes2.lowercaseH=lowercaseH]="lowercaseH";let lowercaseI=105;charCodes2[charCodes2.lowercaseI=lowercaseI]="lowercaseI";let lowercaseJ=106;charCodes2[charCodes2.lowercaseJ=lowercaseJ]="lowercaseJ";let lowercaseK=107;charCodes2[charCodes2.lowercaseK=lowercaseK]="lowercaseK";let lowercaseL=108;charCodes2[charCodes2.lowercaseL=lowercaseL]="lowercaseL";let lowercaseM=109;charCodes2[charCodes2.lowercaseM=lowercaseM]="lowercaseM";let lowercaseN=110;charCodes2[charCodes2.lowercaseN=lowercaseN]="lowercaseN";let lowercaseO=111;charCodes2[charCodes2.lowercaseO=lowercaseO]="lowercaseO";let lowercaseP=112;charCodes2[charCodes2.lowercaseP=lowercaseP]="lowercaseP";let lowercaseQ=113;charCodes2[charCodes2.lowercaseQ=lowercaseQ]="lowercaseQ";let lowercaseR=114;charCodes2[charCodes2.lowercaseR=lowercaseR]="lowercaseR";let lowercaseS=115;charCodes2[charCodes2.lowercaseS=lowercaseS]="lowercaseS";let lowercaseT=116;charCodes2[charCodes2.lowercaseT=lowercaseT]="lowercaseT";let lowercaseU=117;charCodes2[charCodes2.lowercaseU=lowercaseU]="lowercaseU";let lowercaseV=118;charCodes2[charCodes2.lowercaseV=lowercaseV]="lowercaseV";let lowercaseW=119;charCodes2[charCodes2.lowercaseW=lowercaseW]="lowercaseW";let lowercaseX=120;charCodes2[charCodes2.lowercaseX=lowercaseX]="lowercaseX";let lowercaseY=121;charCodes2[charCodes2.lowercaseY=lowercaseY]="lowercaseY";let lowercaseZ=122;charCodes2[charCodes2.lowercaseZ=lowercaseZ]="lowercaseZ";let leftCurlyBrace=123;charCodes2[charCodes2.leftCurlyBrace=leftCurlyBrace]="leftCurlyBrace";let verticalBar=124;charCodes2[charCodes2.verticalBar=verticalBar]="verticalBar";let rightCurlyBrace=125;charCodes2[charCodes2.rightCurlyBrace=rightCurlyBrace]="rightCurlyBrace";let tilde=126;charCodes2[charCodes2.tilde=tilde]="tilde";let nonBreakingSpace=160;charCodes2[charCodes2.nonBreakingSpace=nonBreakingSpace]="nonBreakingSpace";let oghamSpaceMark=5760;charCodes2[charCodes2.oghamSpaceMark=oghamSpaceMark]="oghamSpaceMark";let lineSeparator=8232;charCodes2[charCodes2.lineSeparator=lineSeparator]="lineSeparator";let paragraphSeparator=8233;charCodes2[charCodes2.paragraphSeparator=paragraphSeparator]="paragraphSeparator"})(charCodes||(charCodes={}));var isJSXEnabled,isTypeScriptEnabled,isFlowEnabled,state,input,nextContextId;function getNextContextId(){return nextContextId++}function augmentError(error){if("pos"in error){let loc=locationForIndex(error.pos);error.message+=` (${loc.line}:${loc.column})`,error.loc=loc}return error}var Loc=class{constructor(line2,column){this.line=line2,this.column=column}};function locationForIndex(pos){let line2=1,column=1;for(let i3=0;i3<pos;i3++)input.charCodeAt(i3)===charCodes.lineFeed?(line2++,column=1):column++;return new Loc(line2,column)}function initParser(inputCode,isJSXEnabledArg,isTypeScriptEnabledArg,isFlowEnabledArg){input=inputCode,state=new State,nextContextId=1,isJSXEnabled=isJSXEnabledArg,isTypeScriptEnabled=isTypeScriptEnabledArg,isFlowEnabled=isFlowEnabledArg}function isContextual(contextualKeyword){return state.contextualKeyword===contextualKeyword}function isLookaheadContextual(contextualKeyword){let l2=lookaheadTypeAndKeyword();return l2.type===TokenType.name&&l2.contextualKeyword===contextualKeyword}function eatContextual(contextualKeyword){return state.contextualKeyword===contextualKeyword&&eat(TokenType.name)}function expectContextual(contextualKeyword){eatContextual(contextualKeyword)||unexpected()}function canInsertSemicolon(){return match(TokenType.eof)||match(TokenType.braceR)||hasPrecedingLineBreak()}function hasPrecedingLineBreak(){let prevToken=state.tokens[state.tokens.length-1],lastTokEnd=prevToken?prevToken.end:0;for(let i3=lastTokEnd;i3<state.start;i3++){let code=input.charCodeAt(i3);if(code===charCodes.lineFeed||code===charCodes.carriageReturn||code===8232||code===8233)return!0}return!1}function hasFollowingLineBreak(){let nextStart=nextTokenStart();for(let i3=state.end;i3<nextStart;i3++){let code=input.charCodeAt(i3);if(code===charCodes.lineFeed||code===charCodes.carriageReturn||code===8232||code===8233)return!0}return!1}function isLineTerminator(){return eat(TokenType.semi)||canInsertSemicolon()}function semicolon(){isLineTerminator()||unexpected('Unexpected token, expected ";"')}function expect(type){eat(type)||unexpected(`Unexpected token, expected "${formatTokenType(type)}"`)}function unexpected(message="Unexpected token",pos=state.start){if(state.error)return;let err=new SyntaxError(message);err.pos=pos,state.error=err,state.pos=input.length,finishToken(TokenType.eof)}var WHITESPACE_CHARS=[9,11,12,charCodes.space,charCodes.nonBreakingSpace,charCodes.oghamSpaceMark,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279],skipWhiteSpace=/(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g,IS_WHITESPACE=new Uint8Array(65536);for(let char of WHITESPACE_CHARS)IS_WHITESPACE[char]=1;function computeIsIdentifierChar(code){if(code<48)return code===36;if(code<58)return!0;if(code<65)return!1;if(code<91)return!0;if(code<97)return code===95;if(code<123)return!0;if(code<128)return!1;throw new Error("Should not be called with non-ASCII char code.")}var IS_IDENTIFIER_CHAR=new Uint8Array(65536);for(let i3=0;i3<128;i3++)IS_IDENTIFIER_CHAR[i3]=computeIsIdentifierChar(i3)?1:0;for(let i3=128;i3<65536;i3++)IS_IDENTIFIER_CHAR[i3]=1;for(let whitespaceChar of WHITESPACE_CHARS)IS_IDENTIFIER_CHAR[whitespaceChar]=0;IS_IDENTIFIER_CHAR[8232]=0;IS_IDENTIFIER_CHAR[8233]=0;var IS_IDENTIFIER_START=IS_IDENTIFIER_CHAR.slice();for(let numChar=charCodes.digit0;numChar<=charCodes.digit9;numChar++)IS_IDENTIFIER_START[numChar]=0;var READ_WORD_TREE=new Int32Array([-1,27,783,918,1755,2376,2862,3483,-1,3699,-1,4617,4752,4833,5130,5508,5940,-1,6480,6939,7749,8181,8451,8613,-1,8829,-1,-1,-1,54,243,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,432,-1,-1,-1,675,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,81,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,108,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,135,-1,-1,-1,-1,-1,-1,-1,-1,-1,162,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,189,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,216,-1,-1,-1,-1,-1,-1,ContextualKeyword._abstract<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,270,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,297,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,324,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,351,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,378,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,405,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._accessor<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._as<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,459,-1,-1,-1,-1,-1,594,-1,-1,-1,-1,-1,-1,486,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,513,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,540,-1,-1,-1,-1,-1,-1,ContextualKeyword._assert<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,567,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._asserts<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,621,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,648,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._async<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,702,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,729,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,756,-1,-1,-1,-1,-1,-1,ContextualKeyword._await<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,810,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,837,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,864,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,891,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._break<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,945,-1,-1,-1,-1,-1,-1,1107,-1,-1,-1,1242,-1,-1,1350,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,972,1026,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,999,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._case<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1053,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1080,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._catch<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1134,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1161,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1188,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1215,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._checks<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1269,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1296,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1323,-1,-1,-1,-1,-1,-1,-1,(TokenType._class<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1377,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1404,1620,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1431,-1,-1,-1,-1,-1,-1,(TokenType._const<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1458,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1485,-1,-1,-1,-1,-1,-1,-1,-1,1512,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1539,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1566,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1593,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._constructor<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1647,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1674,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1701,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1728,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._continue<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1782,-1,-1,-1,-1,-1,-1,-1,-1,-1,2349,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1809,1971,-1,-1,2106,-1,-1,-1,-1,-1,2241,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1836,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1863,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1890,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1917,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1944,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._debugger<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1998,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2025,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2052,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2079,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._declare<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2133,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2160,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2187,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2214,-1,-1,-1,-1,-1,-1,(TokenType._default<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2268,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2295,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2322,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._delete<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._do<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2403,-1,2484,-1,-1,-1,-1,-1,-1,-1,-1,-1,2565,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2430,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2457,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._else<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2511,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2538,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._enum<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2592,-1,-1,-1,2727,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2619,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2646,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2673,-1,-1,-1,-1,-1,-1,(TokenType._export<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2700,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._exports<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2754,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2781,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2808,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2835,-1,-1,-1,-1,-1,-1,-1,(TokenType._extends<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2889,-1,-1,-1,-1,-1,-1,-1,2997,-1,-1,-1,-1,-1,3159,-1,-1,3213,-1,-1,3294,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2916,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2943,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2970,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._false<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3024,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3051,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3078,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3105,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3132,-1,(TokenType._finally<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3186,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._for<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3240,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3267,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._from<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3321,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3348,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3375,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3402,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3429,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3456,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._function<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3510,-1,-1,-1,-1,-1,-1,3564,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3537,-1,-1,-1,-1,-1,-1,ContextualKeyword._get<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3591,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3618,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3645,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3672,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._global<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3726,-1,-1,-1,-1,-1,-1,3753,4077,-1,-1,-1,-1,4590,-1,-1,-1,-1,-1,-1,-1,(TokenType._if<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3780,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3807,-1,-1,3996,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3834,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3861,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3888,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3915,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3942,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3969,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._implements<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4023,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4050,-1,-1,-1,-1,-1,-1,(TokenType._import<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._in<<1)+1,-1,-1,-1,-1,-1,4104,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4185,4401,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4131,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4158,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._infer<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4212,-1,-1,-1,-1,-1,-1,-1,4239,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4266,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4293,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4320,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4347,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4374,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._instanceof<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4428,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4455,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4482,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4509,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4536,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4563,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._interface<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._is<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4644,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4671,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4698,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4725,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._keyof<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4779,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4806,-1,-1,-1,-1,-1,-1,(TokenType._let<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4860,-1,-1,-1,-1,-1,4995,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4887,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4914,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4941,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4968,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._mixins<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5022,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5049,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5076,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5103,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._module<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5157,-1,-1,-1,5373,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5427,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5184,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5211,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5238,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5265,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5292,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5319,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5346,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._namespace<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5400,-1,-1,-1,(TokenType._new<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5454,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5481,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._null<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5535,-1,-1,-1,-1,-1,-1,-1,-1,-1,5562,-1,-1,-1,-1,5697,5751,-1,-1,-1,-1,ContextualKeyword._of<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5589,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5616,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5643,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5670,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._opaque<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5724,-1,-1,-1,-1,-1,-1,ContextualKeyword._out<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5778,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5805,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5832,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5859,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5886,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5913,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._override<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5967,-1,-1,6345,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5994,-1,-1,-1,-1,-1,6129,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6021,-1,-1,-1,-1,-1,6048,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6075,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6102,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._private<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6156,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6183,-1,-1,-1,-1,-1,-1,-1,-1,-1,6318,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6210,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6237,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6264,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6291,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._protected<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._proto<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6372,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6399,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6426,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6453,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._public<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6507,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6534,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6696,-1,-1,6831,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6561,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6588,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6615,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6642,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6669,-1,ContextualKeyword._readonly<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6723,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6750,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6777,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6804,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._require<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6858,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6885,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6912,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._return<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6966,-1,-1,-1,7182,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7236,7371,-1,7479,-1,7614,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6993,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7020,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7047,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7074,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7101,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7128,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7155,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._satisfies<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7209,-1,-1,-1,-1,-1,-1,ContextualKeyword._set<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7263,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7290,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7317,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7344,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._static<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7398,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7425,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7452,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._super<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7506,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7533,-1,-1,-1,-1,-1,-1,-1,-1,-1,7560,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7587,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._switch<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7641,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7668,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7695,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7722,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._symbol<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7776,-1,-1,-1,-1,-1,-1,-1,-1,-1,7938,-1,-1,-1,-1,-1,-1,8046,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7803,-1,-1,-1,-1,-1,-1,-1,-1,7857,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7830,-1,-1,-1,-1,-1,-1,-1,(TokenType._this<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7884,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7911,-1,-1,-1,(TokenType._throw<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7965,-1,-1,-1,8019,-1,-1,-1,-1,-1,-1,7992,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._true<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._try<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8073,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8100,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._type<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8127,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8154,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._typeof<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8208,-1,-1,-1,-1,8343,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8235,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8262,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8289,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8316,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._unique<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8370,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8397,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8424,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._using<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8478,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8532,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8505,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._var<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8559,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8586,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._void<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8640,8748,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8667,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8694,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8721,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._while<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8775,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8802,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._with<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8856,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8883,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8910,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8937,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._yield<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]);function readWord(){let treePos=0,code=0,pos=state.pos;for(;pos<input.length&&(code=input.charCodeAt(pos),!(code<charCodes.lowercaseA||code>charCodes.lowercaseZ));){let next2=READ_WORD_TREE[treePos+(code-charCodes.lowercaseA)+1];if(next2===-1)break;treePos=next2,pos++}let keywordValue=READ_WORD_TREE[treePos];if(keywordValue>-1&&!IS_IDENTIFIER_CHAR[code]){state.pos=pos,keywordValue&1?finishToken(keywordValue>>>1):finishToken(TokenType.name,keywordValue>>>1);return}for(;pos<input.length;){let ch2=input.charCodeAt(pos);if(IS_IDENTIFIER_CHAR[ch2])pos++;else if(ch2===charCodes.backslash){if(pos+=2,input.charCodeAt(pos)===charCodes.leftCurlyBrace){for(;pos<input.length&&input.charCodeAt(pos)!==charCodes.rightCurlyBrace;)pos++;pos++}}else if(ch2===charCodes.atSign&&input.charCodeAt(pos+1)===charCodes.atSign)pos+=2;else break}state.pos=pos,finishToken(TokenType.name)}var IdentifierRole;(function(IdentifierRole2){IdentifierRole2[IdentifierRole2.Access=0]="Access";let ExportAccess=1;IdentifierRole2[IdentifierRole2.ExportAccess=ExportAccess]="ExportAccess";let TopLevelDeclaration=ExportAccess+1;IdentifierRole2[IdentifierRole2.TopLevelDeclaration=TopLevelDeclaration]="TopLevelDeclaration";let FunctionScopedDeclaration=TopLevelDeclaration+1;IdentifierRole2[IdentifierRole2.FunctionScopedDeclaration=FunctionScopedDeclaration]="FunctionScopedDeclaration";let BlockScopedDeclaration=FunctionScopedDeclaration+1;IdentifierRole2[IdentifierRole2.BlockScopedDeclaration=BlockScopedDeclaration]="BlockScopedDeclaration";let ObjectShorthandTopLevelDeclaration=BlockScopedDeclaration+1;IdentifierRole2[IdentifierRole2.ObjectShorthandTopLevelDeclaration=ObjectShorthandTopLevelDeclaration]="ObjectShorthandTopLevelDeclaration";let ObjectShorthandFunctionScopedDeclaration=ObjectShorthandTopLevelDeclaration+1;IdentifierRole2[IdentifierRole2.ObjectShorthandFunctionScopedDeclaration=ObjectShorthandFunctionScopedDeclaration]="ObjectShorthandFunctionScopedDeclaration";let ObjectShorthandBlockScopedDeclaration=ObjectShorthandFunctionScopedDeclaration+1;IdentifierRole2[IdentifierRole2.ObjectShorthandBlockScopedDeclaration=ObjectShorthandBlockScopedDeclaration]="ObjectShorthandBlockScopedDeclaration";let ObjectShorthand=ObjectShorthandBlockScopedDeclaration+1;IdentifierRole2[IdentifierRole2.ObjectShorthand=ObjectShorthand]="ObjectShorthand";let ImportDeclaration=ObjectShorthand+1;IdentifierRole2[IdentifierRole2.ImportDeclaration=ImportDeclaration]="ImportDeclaration";let ObjectKey=ImportDeclaration+1;IdentifierRole2[IdentifierRole2.ObjectKey=ObjectKey]="ObjectKey";let ImportAccess=ObjectKey+1;IdentifierRole2[IdentifierRole2.ImportAccess=ImportAccess]="ImportAccess"})(IdentifierRole||(IdentifierRole={}));var JSXRole;(function(JSXRole2){JSXRole2[JSXRole2.NoChildren=0]="NoChildren";let OneChild=1;JSXRole2[JSXRole2.OneChild=OneChild]="OneChild";let StaticChildren=OneChild+1;JSXRole2[JSXRole2.StaticChildren=StaticChildren]="StaticChildren";let KeyAfterPropSpread=StaticChildren+1;JSXRole2[JSXRole2.KeyAfterPropSpread=KeyAfterPropSpread]="KeyAfterPropSpread"})(JSXRole||(JSXRole={}));function isDeclaration(token){let role=token.identifierRole;return role===IdentifierRole.TopLevelDeclaration||role===IdentifierRole.FunctionScopedDeclaration||role===IdentifierRole.BlockScopedDeclaration||role===IdentifierRole.ObjectShorthandTopLevelDeclaration||role===IdentifierRole.ObjectShorthandFunctionScopedDeclaration||role===IdentifierRole.ObjectShorthandBlockScopedDeclaration}function isNonTopLevelDeclaration(token){let role=token.identifierRole;return role===IdentifierRole.FunctionScopedDeclaration||role===IdentifierRole.BlockScopedDeclaration||role===IdentifierRole.ObjectShorthandFunctionScopedDeclaration||role===IdentifierRole.ObjectShorthandBlockScopedDeclaration}function isTopLevelDeclaration(token){let role=token.identifierRole;return role===IdentifierRole.TopLevelDeclaration||role===IdentifierRole.ObjectShorthandTopLevelDeclaration||role===IdentifierRole.ImportDeclaration}function isBlockScopedDeclaration(token){let role=token.identifierRole;return role===IdentifierRole.TopLevelDeclaration||role===IdentifierRole.BlockScopedDeclaration||role===IdentifierRole.ObjectShorthandTopLevelDeclaration||role===IdentifierRole.ObjectShorthandBlockScopedDeclaration}function isFunctionScopedDeclaration(token){let role=token.identifierRole;return role===IdentifierRole.FunctionScopedDeclaration||role===IdentifierRole.ObjectShorthandFunctionScopedDeclaration}function isObjectShorthandDeclaration(token){return token.identifierRole===IdentifierRole.ObjectShorthandTopLevelDeclaration||token.identifierRole===IdentifierRole.ObjectShorthandBlockScopedDeclaration||token.identifierRole===IdentifierRole.ObjectShorthandFunctionScopedDeclaration}var Token=class{constructor(){this.type=state.type,this.contextualKeyword=state.contextualKeyword,this.start=state.start,this.end=state.end,this.scopeDepth=state.scopeDepth,this.isType=state.isType,this.identifierRole=null,this.jsxRole=null,this.shadowsGlobal=!1,this.isAsyncOperation=!1,this.contextId=null,this.rhsEndIndex=null,this.isExpression=!1,this.numNullishCoalesceStarts=0,this.numNullishCoalesceEnds=0,this.isOptionalChainStart=!1,this.isOptionalChainEnd=!1,this.subscriptStartIndex=null,this.nullishStartIndex=null}};function next(){state.tokens.push(new Token),nextToken()}function nextTemplateToken(){state.tokens.push(new Token),state.start=state.pos,readTmplToken()}function retokenizeSlashAsRegex(){state.type===TokenType.assign&&--state.pos,readRegexp()}function pushTypeContext(existingTokensInType){for(let i3=state.tokens.length-existingTokensInType;i3<state.tokens.length;i3++)state.tokens[i3].isType=!0;let oldIsType=state.isType;return state.isType=!0,oldIsType}function popTypeContext(oldIsType){state.isType=oldIsType}function eat(type){return match(type)?(next(),!0):!1}function eatTypeToken(tokenType){let oldIsType=state.isType;state.isType=!0,eat(tokenType),state.isType=oldIsType}function match(type){return state.type===type}function lookaheadType(){let snapshot=state.snapshot();next();let type=state.type;return state.restoreFromSnapshot(snapshot),type}var TypeAndKeyword=class{constructor(type,contextualKeyword){this.type=type,this.contextualKeyword=contextualKeyword}};function lookaheadTypeAndKeyword(){let snapshot=state.snapshot();next();let type=state.type,contextualKeyword=state.contextualKeyword;return state.restoreFromSnapshot(snapshot),new TypeAndKeyword(type,contextualKeyword)}function nextTokenStart(){return nextTokenStartSince(state.pos)}function nextTokenStartSince(pos){skipWhiteSpace.lastIndex=pos;let skip=skipWhiteSpace.exec(input);return pos+skip[0].length}function lookaheadCharCode(){return input.charCodeAt(nextTokenStart())}function nextToken(){if(skipSpace(),state.start=state.pos,state.pos>=input.length){let tokens=state.tokens;tokens.length>=2&&tokens[tokens.length-1].start>=input.length&&tokens[tokens.length-2].start>=input.length&&unexpected("Unexpectedly reached the end of input."),finishToken(TokenType.eof);return}readToken(input.charCodeAt(state.pos))}function readToken(code){IS_IDENTIFIER_START[code]||code===charCodes.backslash||code===charCodes.atSign&&input.charCodeAt(state.pos+1)===charCodes.atSign?readWord():getTokenFromCode(code)}function skipBlockComment(){for(;input.charCodeAt(state.pos)!==charCodes.asterisk||input.charCodeAt(state.pos+1)!==charCodes.slash;)if(state.pos++,state.pos>input.length){unexpected("Unterminated comment",state.pos-2);return}state.pos+=2}function skipLineComment(startSkip){let ch2=input.charCodeAt(state.pos+=startSkip);if(state.pos<input.length)for(;ch2!==charCodes.lineFeed&&ch2!==charCodes.carriageReturn&&ch2!==charCodes.lineSeparator&&ch2!==charCodes.paragraphSeparator&&++state.pos<input.length;)ch2=input.charCodeAt(state.pos)}function skipSpace(){for(;state.pos<input.length;){let ch2=input.charCodeAt(state.pos);switch(ch2){case charCodes.carriageReturn:input.charCodeAt(state.pos+1)===charCodes.lineFeed&&++state.pos;case charCodes.lineFeed:case charCodes.lineSeparator:case charCodes.paragraphSeparator:++state.pos;break;case charCodes.slash:switch(input.charCodeAt(state.pos+1)){case charCodes.asterisk:state.pos+=2,skipBlockComment();break;case charCodes.slash:skipLineComment(2);break;default:return}break;default:if(IS_WHITESPACE[ch2])++state.pos;else return}}}function finishToken(type,contextualKeyword=ContextualKeyword.NONE){state.end=state.pos,state.type=type,state.contextualKeyword=contextualKeyword}function readToken_dot(){let nextChar=input.charCodeAt(state.pos+1);if(nextChar>=charCodes.digit0&&nextChar<=charCodes.digit9){readNumber(!0);return}nextChar===charCodes.dot&&input.charCodeAt(state.pos+2)===charCodes.dot?(state.pos+=3,finishToken(TokenType.ellipsis)):(++state.pos,finishToken(TokenType.dot))}function readToken_slash(){input.charCodeAt(state.pos+1)===charCodes.equalsTo?finishOp(TokenType.assign,2):finishOp(TokenType.slash,1)}function readToken_mult_modulo(code){let tokenType=code===charCodes.asterisk?TokenType.star:TokenType.modulo,width=1,nextChar=input.charCodeAt(state.pos+1);code===charCodes.asterisk&&nextChar===charCodes.asterisk&&(width++,nextChar=input.charCodeAt(state.pos+2),tokenType=TokenType.exponent),nextChar===charCodes.equalsTo&&input.charCodeAt(state.pos+2)!==charCodes.greaterThan&&(width++,tokenType=TokenType.assign),finishOp(tokenType,width)}function readToken_pipe_amp(code){let nextChar=input.charCodeAt(state.pos+1);if(nextChar===code){input.charCodeAt(state.pos+2)===charCodes.equalsTo?finishOp(TokenType.assign,3):finishOp(code===charCodes.verticalBar?TokenType.logicalOR:TokenType.logicalAND,2);return}if(code===charCodes.verticalBar){if(nextChar===charCodes.greaterThan){finishOp(TokenType.pipeline,2);return}else if(nextChar===charCodes.rightCurlyBrace&&isFlowEnabled){finishOp(TokenType.braceBarR,2);return}}if(nextChar===charCodes.equalsTo){finishOp(TokenType.assign,2);return}finishOp(code===charCodes.verticalBar?TokenType.bitwiseOR:TokenType.bitwiseAND,1)}function readToken_caret(){input.charCodeAt(state.pos+1)===charCodes.equalsTo?finishOp(TokenType.assign,2):finishOp(TokenType.bitwiseXOR,1)}function readToken_plus_min(code){let nextChar=input.charCodeAt(state.pos+1);if(nextChar===code){finishOp(TokenType.preIncDec,2);return}nextChar===charCodes.equalsTo?finishOp(TokenType.assign,2):code===charCodes.plusSign?finishOp(TokenType.plus,1):finishOp(TokenType.minus,1)}function readToken_lt(){let nextChar=input.charCodeAt(state.pos+1);if(nextChar===charCodes.lessThan){if(input.charCodeAt(state.pos+2)===charCodes.equalsTo){finishOp(TokenType.assign,3);return}state.isType?finishOp(TokenType.lessThan,1):finishOp(TokenType.bitShiftL,2);return}nextChar===charCodes.equalsTo?finishOp(TokenType.relationalOrEqual,2):finishOp(TokenType.lessThan,1)}function readToken_gt(){if(state.isType){finishOp(TokenType.greaterThan,1);return}let nextChar=input.charCodeAt(state.pos+1);if(nextChar===charCodes.greaterThan){let size2=input.charCodeAt(state.pos+2)===charCodes.greaterThan?3:2;if(input.charCodeAt(state.pos+size2)===charCodes.equalsTo){finishOp(TokenType.assign,size2+1);return}finishOp(TokenType.bitShiftR,size2);return}nextChar===charCodes.equalsTo?finishOp(TokenType.relationalOrEqual,2):finishOp(TokenType.greaterThan,1)}function rescan_gt(){state.type===TokenType.greaterThan&&(state.pos-=1,readToken_gt())}function readToken_eq_excl(code){let nextChar=input.charCodeAt(state.pos+1);if(nextChar===charCodes.equalsTo){finishOp(TokenType.equality,input.charCodeAt(state.pos+2)===charCodes.equalsTo?3:2);return}if(code===charCodes.equalsTo&&nextChar===charCodes.greaterThan){state.pos+=2,finishToken(TokenType.arrow);return}finishOp(code===charCodes.equalsTo?TokenType.eq:TokenType.bang,1)}function readToken_question(){let nextChar=input.charCodeAt(state.pos+1),nextChar2=input.charCodeAt(state.pos+2);nextChar===charCodes.questionMark&&!(isFlowEnabled&&state.isType)?nextChar2===charCodes.equalsTo?finishOp(TokenType.assign,3):finishOp(TokenType.nullishCoalescing,2):nextChar===charCodes.dot&&!(nextChar2>=charCodes.digit0&&nextChar2<=charCodes.digit9)?(state.pos+=2,finishToken(TokenType.questionDot)):(++state.pos,finishToken(TokenType.question))}function getTokenFromCode(code){switch(code){case charCodes.numberSign:++state.pos,finishToken(TokenType.hash);return;case charCodes.dot:readToken_dot();return;case charCodes.leftParenthesis:++state.pos,finishToken(TokenType.parenL);return;case charCodes.rightParenthesis:++state.pos,finishToken(TokenType.parenR);return;case charCodes.semicolon:++state.pos,finishToken(TokenType.semi);return;case charCodes.comma:++state.pos,finishToken(TokenType.comma);return;case charCodes.leftSquareBracket:++state.pos,finishToken(TokenType.bracketL);return;case charCodes.rightSquareBracket:++state.pos,finishToken(TokenType.bracketR);return;case charCodes.leftCurlyBrace:isFlowEnabled&&input.charCodeAt(state.pos+1)===charCodes.verticalBar?finishOp(TokenType.braceBarL,2):(++state.pos,finishToken(TokenType.braceL));return;case charCodes.rightCurlyBrace:++state.pos,finishToken(TokenType.braceR);return;case charCodes.colon:input.charCodeAt(state.pos+1)===charCodes.colon?finishOp(TokenType.doubleColon,2):(++state.pos,finishToken(TokenType.colon));return;case charCodes.questionMark:readToken_question();return;case charCodes.atSign:++state.pos,finishToken(TokenType.at);return;case charCodes.graveAccent:++state.pos,finishToken(TokenType.backQuote);return;case charCodes.digit0:{let nextChar=input.charCodeAt(state.pos+1);if(nextChar===charCodes.lowercaseX||nextChar===charCodes.uppercaseX||nextChar===charCodes.lowercaseO||nextChar===charCodes.uppercaseO||nextChar===charCodes.lowercaseB||nextChar===charCodes.uppercaseB){readRadixNumber();return}}case charCodes.digit1:case charCodes.digit2:case charCodes.digit3:case charCodes.digit4:case charCodes.digit5:case charCodes.digit6:case charCodes.digit7:case charCodes.digit8:case charCodes.digit9:readNumber(!1);return;case charCodes.quotationMark:case charCodes.apostrophe:readString(code);return;case charCodes.slash:readToken_slash();return;case charCodes.percentSign:case charCodes.asterisk:readToken_mult_modulo(code);return;case charCodes.verticalBar:case charCodes.ampersand:readToken_pipe_amp(code);return;case charCodes.caret:readToken_caret();return;case charCodes.plusSign:case charCodes.dash:readToken_plus_min(code);return;case charCodes.lessThan:readToken_lt();return;case charCodes.greaterThan:readToken_gt();return;case charCodes.equalsTo:case charCodes.exclamationMark:readToken_eq_excl(code);return;case charCodes.tilde:finishOp(TokenType.tilde,1);return;default:break}unexpected(`Unexpected character '${String.fromCharCode(code)}'`,state.pos)}function finishOp(type,size2){state.pos+=size2,finishToken(type)}function readRegexp(){let start=state.pos,escaped=!1,inClass=!1;for(;;){if(state.pos>=input.length){unexpected("Unterminated regular expression",start);return}let code=input.charCodeAt(state.pos);if(escaped)escaped=!1;else{if(code===charCodes.leftSquareBracket)inClass=!0;else if(code===charCodes.rightSquareBracket&&inClass)inClass=!1;else if(code===charCodes.slash&&!inClass)break;escaped=code===charCodes.backslash}++state.pos}++state.pos,skipWord(),finishToken(TokenType.regexp)}function readInt(){for(;;){let code=input.charCodeAt(state.pos);if(code>=charCodes.digit0&&code<=charCodes.digit9||code===charCodes.underscore)state.pos++;else break}}function readRadixNumber(){for(state.pos+=2;;){let code=input.charCodeAt(state.pos);if(code>=charCodes.digit0&&code<=charCodes.digit9||code>=charCodes.lowercaseA&&code<=charCodes.lowercaseF||code>=charCodes.uppercaseA&&code<=charCodes.uppercaseF||code===charCodes.underscore)state.pos++;else break}input.charCodeAt(state.pos)===charCodes.lowercaseN?(++state.pos,finishToken(TokenType.bigint)):finishToken(TokenType.num)}function readNumber(startsWithDot){let isBigInt=!1,isDecimal=!1;startsWithDot||readInt();let nextChar=input.charCodeAt(state.pos);if(nextChar===charCodes.dot&&(++state.pos,readInt(),nextChar=input.charCodeAt(state.pos)),(nextChar===charCodes.uppercaseE||nextChar===charCodes.lowercaseE)&&(nextChar=input.charCodeAt(++state.pos),(nextChar===charCodes.plusSign||nextChar===charCodes.dash)&&++state.pos,readInt(),nextChar=input.charCodeAt(state.pos)),nextChar===charCodes.lowercaseN?(++state.pos,isBigInt=!0):nextChar===charCodes.lowercaseM&&(++state.pos,isDecimal=!0),isBigInt){finishToken(TokenType.bigint);return}if(isDecimal){finishToken(TokenType.decimal);return}finishToken(TokenType.num)}function readString(quote){for(state.pos++;;){if(state.pos>=input.length){unexpected("Unterminated string constant");return}let ch2=input.charCodeAt(state.pos);if(ch2===charCodes.backslash)state.pos++;else if(ch2===quote)break;state.pos++}state.pos++,finishToken(TokenType.string)}function readTmplToken(){for(;;){if(state.pos>=input.length){unexpected("Unterminated template");return}let ch2=input.charCodeAt(state.pos);if(ch2===charCodes.graveAccent||ch2===charCodes.dollarSign&&input.charCodeAt(state.pos+1)===charCodes.leftCurlyBrace){if(state.pos===state.start&&match(TokenType.template))if(ch2===charCodes.dollarSign){state.pos+=2,finishToken(TokenType.dollarBraceL);return}else{++state.pos,finishToken(TokenType.backQuote);return}finishToken(TokenType.template);return}ch2===charCodes.backslash&&state.pos++,state.pos++}}function skipWord(){for(;state.pos<input.length;){let ch2=input.charCodeAt(state.pos);if(IS_IDENTIFIER_CHAR[ch2])state.pos++;else if(ch2===charCodes.backslash){if(state.pos+=2,input.charCodeAt(state.pos)===charCodes.leftCurlyBrace){for(;state.pos<input.length&&input.charCodeAt(state.pos)!==charCodes.rightCurlyBrace;)state.pos++;state.pos++}}else break}}function getImportExportSpecifierInfo(tokens,index=tokens.currentIndex()){let endIndex=index+1;if(isSpecifierEnd(tokens,endIndex)){let name=tokens.identifierNameAtIndex(index);return{isType:!1,leftName:name,rightName:name,endIndex}}if(endIndex++,isSpecifierEnd(tokens,endIndex))return{isType:!0,leftName:null,rightName:null,endIndex};if(endIndex++,isSpecifierEnd(tokens,endIndex))return{isType:!1,leftName:tokens.identifierNameAtIndex(index),rightName:tokens.identifierNameAtIndex(index+2),endIndex};if(endIndex++,isSpecifierEnd(tokens,endIndex))return{isType:!0,leftName:null,rightName:null,endIndex};throw new Error(`Unexpected import/export specifier at ${index}`)}function isSpecifierEnd(tokens,index){let token=tokens.tokens[index];return token.type===TokenType.braceR||token.type===TokenType.comma}var xhtml_default=new Map([["quot",'"'],["amp","&"],["apos","'"],["lt","<"],["gt",">"],["nbsp","\xA0"],["iexcl","\xA1"],["cent","\xA2"],["pound","\xA3"],["curren","\xA4"],["yen","\xA5"],["brvbar","\xA6"],["sect","\xA7"],["uml","\xA8"],["copy","\xA9"],["ordf","\xAA"],["laquo","\xAB"],["not","\xAC"],["shy","\xAD"],["reg","\xAE"],["macr","\xAF"],["deg","\xB0"],["plusmn","\xB1"],["sup2","\xB2"],["sup3","\xB3"],["acute","\xB4"],["micro","\xB5"],["para","\xB6"],["middot","\xB7"],["cedil","\xB8"],["sup1","\xB9"],["ordm","\xBA"],["raquo","\xBB"],["frac14","\xBC"],["frac12","\xBD"],["frac34","\xBE"],["iquest","\xBF"],["Agrave","\xC0"],["Aacute","\xC1"],["Acirc","\xC2"],["Atilde","\xC3"],["Auml","\xC4"],["Aring","\xC5"],["AElig","\xC6"],["Ccedil","\xC7"],["Egrave","\xC8"],["Eacute","\xC9"],["Ecirc","\xCA"],["Euml","\xCB"],["Igrave","\xCC"],["Iacute","\xCD"],["Icirc","\xCE"],["Iuml","\xCF"],["ETH","\xD0"],["Ntilde","\xD1"],["Ograve","\xD2"],["Oacute","\xD3"],["Ocirc","\xD4"],["Otilde","\xD5"],["Ouml","\xD6"],["times","\xD7"],["Oslash","\xD8"],["Ugrave","\xD9"],["Uacute","\xDA"],["Ucirc","\xDB"],["Uuml","\xDC"],["Yacute","\xDD"],["THORN","\xDE"],["szlig","\xDF"],["agrave","\xE0"],["aacute","\xE1"],["acirc","\xE2"],["atilde","\xE3"],["auml","\xE4"],["aring","\xE5"],["aelig","\xE6"],["ccedil","\xE7"],["egrave","\xE8"],["eacute","\xE9"],["ecirc","\xEA"],["euml","\xEB"],["igrave","\xEC"],["iacute","\xED"],["icirc","\xEE"],["iuml","\xEF"],["eth","\xF0"],["ntilde","\xF1"],["ograve","\xF2"],["oacute","\xF3"],["ocirc","\xF4"],["otilde","\xF5"],["ouml","\xF6"],["divide","\xF7"],["oslash","\xF8"],["ugrave","\xF9"],["uacute","\xFA"],["ucirc","\xFB"],["uuml","\xFC"],["yacute","\xFD"],["thorn","\xFE"],["yuml","\xFF"],["OElig","\u0152"],["oelig","\u0153"],["Scaron","\u0160"],["scaron","\u0161"],["Yuml","\u0178"],["fnof","\u0192"],["circ","\u02C6"],["tilde","\u02DC"],["Alpha","\u0391"],["Beta","\u0392"],["Gamma","\u0393"],["Delta","\u0394"],["Epsilon","\u0395"],["Zeta","\u0396"],["Eta","\u0397"],["Theta","\u0398"],["Iota","\u0399"],["Kappa","\u039A"],["Lambda","\u039B"],["Mu","\u039C"],["Nu","\u039D"],["Xi","\u039E"],["Omicron","\u039F"],["Pi","\u03A0"],["Rho","\u03A1"],["Sigma","\u03A3"],["Tau","\u03A4"],["Upsilon","\u03A5"],["Phi","\u03A6"],["Chi","\u03A7"],["Psi","\u03A8"],["Omega","\u03A9"],["alpha","\u03B1"],["beta","\u03B2"],["gamma","\u03B3"],["delta","\u03B4"],["epsilon","\u03B5"],["zeta","\u03B6"],["eta","\u03B7"],["theta","\u03B8"],["iota","\u03B9"],["kappa","\u03BA"],["lambda","\u03BB"],["mu","\u03BC"],["nu","\u03BD"],["xi","\u03BE"],["omicron","\u03BF"],["pi","\u03C0"],["rho","\u03C1"],["sigmaf","\u03C2"],["sigma","\u03C3"],["tau","\u03C4"],["upsilon","\u03C5"],["phi","\u03C6"],["chi","\u03C7"],["psi","\u03C8"],["omega","\u03C9"],["thetasym","\u03D1"],["upsih","\u03D2"],["piv","\u03D6"],["ensp","\u2002"],["emsp","\u2003"],["thinsp","\u2009"],["zwnj","\u200C"],["zwj","\u200D"],["lrm","\u200E"],["rlm","\u200F"],["ndash","\u2013"],["mdash","\u2014"],["lsquo","\u2018"],["rsquo","\u2019"],["sbquo","\u201A"],["ldquo","\u201C"],["rdquo","\u201D"],["bdquo","\u201E"],["dagger","\u2020"],["Dagger","\u2021"],["bull","\u2022"],["hellip","\u2026"],["permil","\u2030"],["prime","\u2032"],["Prime","\u2033"],["lsaquo","\u2039"],["rsaquo","\u203A"],["oline","\u203E"],["frasl","\u2044"],["euro","\u20AC"],["image","\u2111"],["weierp","\u2118"],["real","\u211C"],["trade","\u2122"],["alefsym","\u2135"],["larr","\u2190"],["uarr","\u2191"],["rarr","\u2192"],["darr","\u2193"],["harr","\u2194"],["crarr","\u21B5"],["lArr","\u21D0"],["uArr","\u21D1"],["rArr","\u21D2"],["dArr","\u21D3"],["hArr","\u21D4"],["forall","\u2200"],["part","\u2202"],["exist","\u2203"],["empty","\u2205"],["nabla","\u2207"],["isin","\u2208"],["notin","\u2209"],["ni","\u220B"],["prod","\u220F"],["sum","\u2211"],["minus","\u2212"],["lowast","\u2217"],["radic","\u221A"],["prop","\u221D"],["infin","\u221E"],["ang","\u2220"],["and","\u2227"],["or","\u2228"],["cap","\u2229"],["cup","\u222A"],["int","\u222B"],["there4","\u2234"],["sim","\u223C"],["cong","\u2245"],["asymp","\u2248"],["ne","\u2260"],["equiv","\u2261"],["le","\u2264"],["ge","\u2265"],["sub","\u2282"],["sup","\u2283"],["nsub","\u2284"],["sube","\u2286"],["supe","\u2287"],["oplus","\u2295"],["otimes","\u2297"],["perp","\u22A5"],["sdot","\u22C5"],["lceil","\u2308"],["rceil","\u2309"],["lfloor","\u230A"],["rfloor","\u230B"],["lang","\u2329"],["rang","\u232A"],["loz","\u25CA"],["spades","\u2660"],["clubs","\u2663"],["hearts","\u2665"],["diams","\u2666"]]);function getJSXPragmaInfo(options){let[base,suffix]=splitPragma(options.jsxPragma||"React.createElement"),[fragmentBase,fragmentSuffix]=splitPragma(options.jsxFragmentPragma||"React.Fragment");return{base,suffix,fragmentBase,fragmentSuffix}}function splitPragma(pragma){let dotIndex=pragma.indexOf(".");return dotIndex===-1&&(dotIndex=pragma.length),[pragma.slice(0,dotIndex),pragma.slice(dotIndex)]}var Transformer=class{getPrefixCode(){return""}getHoistedCode(){return""}getSuffixCode(){return""}};var JSXTransformer=class _JSXTransformer extends Transformer{__init(){this.lastLineNumber=1}__init2(){this.lastIndex=0}__init3(){this.filenameVarName=null}__init4(){this.esmAutomaticImportNameResolutions={}}__init5(){this.cjsAutomaticModuleNameResolutions={}}constructor(rootTransformer,tokens,importProcessor,nameManager,options){super(),this.rootTransformer=rootTransformer,this.tokens=tokens,this.importProcessor=importProcessor,this.nameManager=nameManager,this.options=options,_JSXTransformer.prototype.__init.call(this),_JSXTransformer.prototype.__init2.call(this),_JSXTransformer.prototype.__init3.call(this),_JSXTransformer.prototype.__init4.call(this),_JSXTransformer.prototype.__init5.call(this),this.jsxPragmaInfo=getJSXPragmaInfo(options),this.isAutomaticRuntime=options.jsxRuntime==="automatic",this.jsxImportSource=options.jsxImportSource||"react"}process(){return this.tokens.matches1(TokenType.jsxTagStart)?(this.processJSXTag(),!0):!1}getPrefixCode(){let prefix="";if(this.filenameVarName&&(prefix+=`const ${this.filenameVarName} = ${JSON.stringify(this.options.filePath||"")};`),this.isAutomaticRuntime)if(this.importProcessor)for(let[path,resolvedName]of Object.entries(this.cjsAutomaticModuleNameResolutions))prefix+=`var ${resolvedName} = require("${path}");`;else{let{createElement:createElementResolution,...otherResolutions}=this.esmAutomaticImportNameResolutions;createElementResolution&&(prefix+=`import {createElement as ${createElementResolution}} from "${this.jsxImportSource}";`);let importSpecifiers=Object.entries(otherResolutions).map(([name,resolvedName])=>`${name} as ${resolvedName}`).join(", ");if(importSpecifiers){let importPath=this.jsxImportSource+(this.options.production?"/jsx-runtime":"/jsx-dev-runtime");prefix+=`import {${importSpecifiers}} from "${importPath}";`}}return prefix}processJSXTag(){let{jsxRole,start}=this.tokens.currentToken(),elementLocationCode=this.options.production?null:this.getElementLocationCode(start);this.isAutomaticRuntime&&jsxRole!==JSXRole.KeyAfterPropSpread?this.transformTagToJSXFunc(elementLocationCode,jsxRole):this.transformTagToCreateElement(elementLocationCode)}getElementLocationCode(firstTokenStart){return`lineNumber: ${this.getLineNumberForIndex(firstTokenStart)}`}getLineNumberForIndex(index){let code=this.tokens.code;for(;this.lastIndex<index&&this.lastIndex<code.length;)code[this.lastIndex]===`
638
+ return module;`.trim();return Function(functionBody).call(globalThis)}var import_debug23=__toESM(require_browser(),1);var STATIC_ASSET_EXTENSIONS=[".glb",".kicad_mod",".gltf",".obj",".stl",".step",".stp"],isStaticAssetPath2=path=>STATIC_ASSET_EXTENSIONS.some(ext=>path.endsWith(ext));var ContextualKeyword;(function(ContextualKeyword2){ContextualKeyword2[ContextualKeyword2.NONE=0]="NONE";let _abstract=1;ContextualKeyword2[ContextualKeyword2._abstract=_abstract]="_abstract";let _accessor=_abstract+1;ContextualKeyword2[ContextualKeyword2._accessor=_accessor]="_accessor";let _as=_accessor+1;ContextualKeyword2[ContextualKeyword2._as=_as]="_as";let _assert=_as+1;ContextualKeyword2[ContextualKeyword2._assert=_assert]="_assert";let _asserts=_assert+1;ContextualKeyword2[ContextualKeyword2._asserts=_asserts]="_asserts";let _async=_asserts+1;ContextualKeyword2[ContextualKeyword2._async=_async]="_async";let _await=_async+1;ContextualKeyword2[ContextualKeyword2._await=_await]="_await";let _checks=_await+1;ContextualKeyword2[ContextualKeyword2._checks=_checks]="_checks";let _constructor=_checks+1;ContextualKeyword2[ContextualKeyword2._constructor=_constructor]="_constructor";let _declare=_constructor+1;ContextualKeyword2[ContextualKeyword2._declare=_declare]="_declare";let _enum=_declare+1;ContextualKeyword2[ContextualKeyword2._enum=_enum]="_enum";let _exports=_enum+1;ContextualKeyword2[ContextualKeyword2._exports=_exports]="_exports";let _from=_exports+1;ContextualKeyword2[ContextualKeyword2._from=_from]="_from";let _get=_from+1;ContextualKeyword2[ContextualKeyword2._get=_get]="_get";let _global=_get+1;ContextualKeyword2[ContextualKeyword2._global=_global]="_global";let _implements=_global+1;ContextualKeyword2[ContextualKeyword2._implements=_implements]="_implements";let _infer=_implements+1;ContextualKeyword2[ContextualKeyword2._infer=_infer]="_infer";let _interface=_infer+1;ContextualKeyword2[ContextualKeyword2._interface=_interface]="_interface";let _is=_interface+1;ContextualKeyword2[ContextualKeyword2._is=_is]="_is";let _keyof=_is+1;ContextualKeyword2[ContextualKeyword2._keyof=_keyof]="_keyof";let _mixins=_keyof+1;ContextualKeyword2[ContextualKeyword2._mixins=_mixins]="_mixins";let _module=_mixins+1;ContextualKeyword2[ContextualKeyword2._module=_module]="_module";let _namespace=_module+1;ContextualKeyword2[ContextualKeyword2._namespace=_namespace]="_namespace";let _of=_namespace+1;ContextualKeyword2[ContextualKeyword2._of=_of]="_of";let _opaque=_of+1;ContextualKeyword2[ContextualKeyword2._opaque=_opaque]="_opaque";let _out=_opaque+1;ContextualKeyword2[ContextualKeyword2._out=_out]="_out";let _override=_out+1;ContextualKeyword2[ContextualKeyword2._override=_override]="_override";let _private=_override+1;ContextualKeyword2[ContextualKeyword2._private=_private]="_private";let _protected=_private+1;ContextualKeyword2[ContextualKeyword2._protected=_protected]="_protected";let _proto=_protected+1;ContextualKeyword2[ContextualKeyword2._proto=_proto]="_proto";let _public=_proto+1;ContextualKeyword2[ContextualKeyword2._public=_public]="_public";let _readonly=_public+1;ContextualKeyword2[ContextualKeyword2._readonly=_readonly]="_readonly";let _require=_readonly+1;ContextualKeyword2[ContextualKeyword2._require=_require]="_require";let _satisfies=_require+1;ContextualKeyword2[ContextualKeyword2._satisfies=_satisfies]="_satisfies";let _set=_satisfies+1;ContextualKeyword2[ContextualKeyword2._set=_set]="_set";let _static=_set+1;ContextualKeyword2[ContextualKeyword2._static=_static]="_static";let _symbol=_static+1;ContextualKeyword2[ContextualKeyword2._symbol=_symbol]="_symbol";let _type=_symbol+1;ContextualKeyword2[ContextualKeyword2._type=_type]="_type";let _unique=_type+1;ContextualKeyword2[ContextualKeyword2._unique=_unique]="_unique";let _using=_unique+1;ContextualKeyword2[ContextualKeyword2._using=_using]="_using"})(ContextualKeyword||(ContextualKeyword={}));var TokenType;(function(TokenType2){TokenType2[TokenType2.PRECEDENCE_MASK=15]="PRECEDENCE_MASK";let IS_KEYWORD=16;TokenType2[TokenType2.IS_KEYWORD=IS_KEYWORD]="IS_KEYWORD";let IS_ASSIGN=32;TokenType2[TokenType2.IS_ASSIGN=IS_ASSIGN]="IS_ASSIGN";let IS_RIGHT_ASSOCIATIVE=64;TokenType2[TokenType2.IS_RIGHT_ASSOCIATIVE=IS_RIGHT_ASSOCIATIVE]="IS_RIGHT_ASSOCIATIVE";let IS_PREFIX=128;TokenType2[TokenType2.IS_PREFIX=IS_PREFIX]="IS_PREFIX";let IS_POSTFIX=256;TokenType2[TokenType2.IS_POSTFIX=IS_POSTFIX]="IS_POSTFIX";let IS_EXPRESSION_START=512;TokenType2[TokenType2.IS_EXPRESSION_START=IS_EXPRESSION_START]="IS_EXPRESSION_START";let num=512;TokenType2[TokenType2.num=num]="num";let bigint=1536;TokenType2[TokenType2.bigint=bigint]="bigint";let decimal=2560;TokenType2[TokenType2.decimal=decimal]="decimal";let regexp=3584;TokenType2[TokenType2.regexp=regexp]="regexp";let string=4608;TokenType2[TokenType2.string=string]="string";let name=5632;TokenType2[TokenType2.name=name]="name";let eof=6144;TokenType2[TokenType2.eof=eof]="eof";let bracketL=7680;TokenType2[TokenType2.bracketL=bracketL]="bracketL";let bracketR=8192;TokenType2[TokenType2.bracketR=bracketR]="bracketR";let braceL=9728;TokenType2[TokenType2.braceL=braceL]="braceL";let braceBarL=10752;TokenType2[TokenType2.braceBarL=braceBarL]="braceBarL";let braceR=11264;TokenType2[TokenType2.braceR=braceR]="braceR";let braceBarR=12288;TokenType2[TokenType2.braceBarR=braceBarR]="braceBarR";let parenL=13824;TokenType2[TokenType2.parenL=parenL]="parenL";let parenR=14336;TokenType2[TokenType2.parenR=parenR]="parenR";let comma2=15360;TokenType2[TokenType2.comma=comma2]="comma";let semi=16384;TokenType2[TokenType2.semi=semi]="semi";let colon=17408;TokenType2[TokenType2.colon=colon]="colon";let doubleColon=18432;TokenType2[TokenType2.doubleColon=doubleColon]="doubleColon";let dot=19456;TokenType2[TokenType2.dot=dot]="dot";let question=20480;TokenType2[TokenType2.question=question]="question";let questionDot=21504;TokenType2[TokenType2.questionDot=questionDot]="questionDot";let arrow=22528;TokenType2[TokenType2.arrow=arrow]="arrow";let template=23552;TokenType2[TokenType2.template=template]="template";let ellipsis=24576;TokenType2[TokenType2.ellipsis=ellipsis]="ellipsis";let backQuote=25600;TokenType2[TokenType2.backQuote=backQuote]="backQuote";let dollarBraceL=27136;TokenType2[TokenType2.dollarBraceL=dollarBraceL]="dollarBraceL";let at3=27648;TokenType2[TokenType2.at=at3]="at";let hash=29184;TokenType2[TokenType2.hash=hash]="hash";let eq=29728;TokenType2[TokenType2.eq=eq]="eq";let assign=30752;TokenType2[TokenType2.assign=assign]="assign";let preIncDec=32640;TokenType2[TokenType2.preIncDec=preIncDec]="preIncDec";let postIncDec=33664;TokenType2[TokenType2.postIncDec=postIncDec]="postIncDec";let bang=34432;TokenType2[TokenType2.bang=bang]="bang";let tilde=35456;TokenType2[TokenType2.tilde=tilde]="tilde";let pipeline=35841;TokenType2[TokenType2.pipeline=pipeline]="pipeline";let nullishCoalescing=36866;TokenType2[TokenType2.nullishCoalescing=nullishCoalescing]="nullishCoalescing";let logicalOR=37890;TokenType2[TokenType2.logicalOR=logicalOR]="logicalOR";let logicalAND=38915;TokenType2[TokenType2.logicalAND=logicalAND]="logicalAND";let bitwiseOR=39940;TokenType2[TokenType2.bitwiseOR=bitwiseOR]="bitwiseOR";let bitwiseXOR=40965;TokenType2[TokenType2.bitwiseXOR=bitwiseXOR]="bitwiseXOR";let bitwiseAND=41990;TokenType2[TokenType2.bitwiseAND=bitwiseAND]="bitwiseAND";let equality=43015;TokenType2[TokenType2.equality=equality]="equality";let lessThan=44040;TokenType2[TokenType2.lessThan=lessThan]="lessThan";let greaterThan=45064;TokenType2[TokenType2.greaterThan=greaterThan]="greaterThan";let relationalOrEqual=46088;TokenType2[TokenType2.relationalOrEqual=relationalOrEqual]="relationalOrEqual";let bitShiftL=47113;TokenType2[TokenType2.bitShiftL=bitShiftL]="bitShiftL";let bitShiftR=48137;TokenType2[TokenType2.bitShiftR=bitShiftR]="bitShiftR";let plus=49802;TokenType2[TokenType2.plus=plus]="plus";let minus=50826;TokenType2[TokenType2.minus=minus]="minus";let modulo=51723;TokenType2[TokenType2.modulo=modulo]="modulo";let star=52235;TokenType2[TokenType2.star=star]="star";let slash=53259;TokenType2[TokenType2.slash=slash]="slash";let exponent=54348;TokenType2[TokenType2.exponent=exponent]="exponent";let jsxName=55296;TokenType2[TokenType2.jsxName=jsxName]="jsxName";let jsxText=56320;TokenType2[TokenType2.jsxText=jsxText]="jsxText";let jsxEmptyText=57344;TokenType2[TokenType2.jsxEmptyText=jsxEmptyText]="jsxEmptyText";let jsxTagStart=58880;TokenType2[TokenType2.jsxTagStart=jsxTagStart]="jsxTagStart";let jsxTagEnd=59392;TokenType2[TokenType2.jsxTagEnd=jsxTagEnd]="jsxTagEnd";let typeParameterStart=60928;TokenType2[TokenType2.typeParameterStart=typeParameterStart]="typeParameterStart";let nonNullAssertion=61440;TokenType2[TokenType2.nonNullAssertion=nonNullAssertion]="nonNullAssertion";let _break=62480;TokenType2[TokenType2._break=_break]="_break";let _case=63504;TokenType2[TokenType2._case=_case]="_case";let _catch=64528;TokenType2[TokenType2._catch=_catch]="_catch";let _continue=65552;TokenType2[TokenType2._continue=_continue]="_continue";let _debugger=66576;TokenType2[TokenType2._debugger=_debugger]="_debugger";let _default=67600;TokenType2[TokenType2._default=_default]="_default";let _do=68624;TokenType2[TokenType2._do=_do]="_do";let _else=69648;TokenType2[TokenType2._else=_else]="_else";let _finally=70672;TokenType2[TokenType2._finally=_finally]="_finally";let _for=71696;TokenType2[TokenType2._for=_for]="_for";let _function=73232;TokenType2[TokenType2._function=_function]="_function";let _if=73744;TokenType2[TokenType2._if=_if]="_if";let _return=74768;TokenType2[TokenType2._return=_return]="_return";let _switch=75792;TokenType2[TokenType2._switch=_switch]="_switch";let _throw=77456;TokenType2[TokenType2._throw=_throw]="_throw";let _try=77840;TokenType2[TokenType2._try=_try]="_try";let _var=78864;TokenType2[TokenType2._var=_var]="_var";let _let=79888;TokenType2[TokenType2._let=_let]="_let";let _const=80912;TokenType2[TokenType2._const=_const]="_const";let _while=81936;TokenType2[TokenType2._while=_while]="_while";let _with=82960;TokenType2[TokenType2._with=_with]="_with";let _new=84496;TokenType2[TokenType2._new=_new]="_new";let _this=85520;TokenType2[TokenType2._this=_this]="_this";let _super=86544;TokenType2[TokenType2._super=_super]="_super";let _class=87568;TokenType2[TokenType2._class=_class]="_class";let _extends=88080;TokenType2[TokenType2._extends=_extends]="_extends";let _export=89104;TokenType2[TokenType2._export=_export]="_export";let _import=90640;TokenType2[TokenType2._import=_import]="_import";let _yield=91664;TokenType2[TokenType2._yield=_yield]="_yield";let _null=92688;TokenType2[TokenType2._null=_null]="_null";let _true=93712;TokenType2[TokenType2._true=_true]="_true";let _false=94736;TokenType2[TokenType2._false=_false]="_false";let _in=95256;TokenType2[TokenType2._in=_in]="_in";let _instanceof=96280;TokenType2[TokenType2._instanceof=_instanceof]="_instanceof";let _typeof=97936;TokenType2[TokenType2._typeof=_typeof]="_typeof";let _void=98960;TokenType2[TokenType2._void=_void]="_void";let _delete=99984;TokenType2[TokenType2._delete=_delete]="_delete";let _async=100880;TokenType2[TokenType2._async=_async]="_async";let _get=101904;TokenType2[TokenType2._get=_get]="_get";let _set=102928;TokenType2[TokenType2._set=_set]="_set";let _declare=103952;TokenType2[TokenType2._declare=_declare]="_declare";let _readonly=104976;TokenType2[TokenType2._readonly=_readonly]="_readonly";let _abstract=106e3;TokenType2[TokenType2._abstract=_abstract]="_abstract";let _static=107024;TokenType2[TokenType2._static=_static]="_static";let _public=107536;TokenType2[TokenType2._public=_public]="_public";let _private=108560;TokenType2[TokenType2._private=_private]="_private";let _protected=109584;TokenType2[TokenType2._protected=_protected]="_protected";let _override=110608;TokenType2[TokenType2._override=_override]="_override";let _as=112144;TokenType2[TokenType2._as=_as]="_as";let _enum=113168;TokenType2[TokenType2._enum=_enum]="_enum";let _type=114192;TokenType2[TokenType2._type=_type]="_type";let _implements=115216;TokenType2[TokenType2._implements=_implements]="_implements"})(TokenType||(TokenType={}));function formatTokenType(tokenType){switch(tokenType){case TokenType.num:return"num";case TokenType.bigint:return"bigint";case TokenType.decimal:return"decimal";case TokenType.regexp:return"regexp";case TokenType.string:return"string";case TokenType.name:return"name";case TokenType.eof:return"eof";case TokenType.bracketL:return"[";case TokenType.bracketR:return"]";case TokenType.braceL:return"{";case TokenType.braceBarL:return"{|";case TokenType.braceR:return"}";case TokenType.braceBarR:return"|}";case TokenType.parenL:return"(";case TokenType.parenR:return")";case TokenType.comma:return",";case TokenType.semi:return";";case TokenType.colon:return":";case TokenType.doubleColon:return"::";case TokenType.dot:return".";case TokenType.question:return"?";case TokenType.questionDot:return"?.";case TokenType.arrow:return"=>";case TokenType.template:return"template";case TokenType.ellipsis:return"...";case TokenType.backQuote:return"`";case TokenType.dollarBraceL:return"${";case TokenType.at:return"@";case TokenType.hash:return"#";case TokenType.eq:return"=";case TokenType.assign:return"_=";case TokenType.preIncDec:return"++/--";case TokenType.postIncDec:return"++/--";case TokenType.bang:return"!";case TokenType.tilde:return"~";case TokenType.pipeline:return"|>";case TokenType.nullishCoalescing:return"??";case TokenType.logicalOR:return"||";case TokenType.logicalAND:return"&&";case TokenType.bitwiseOR:return"|";case TokenType.bitwiseXOR:return"^";case TokenType.bitwiseAND:return"&";case TokenType.equality:return"==/!=";case TokenType.lessThan:return"<";case TokenType.greaterThan:return">";case TokenType.relationalOrEqual:return"<=/>=";case TokenType.bitShiftL:return"<<";case TokenType.bitShiftR:return">>/>>>";case TokenType.plus:return"+";case TokenType.minus:return"-";case TokenType.modulo:return"%";case TokenType.star:return"*";case TokenType.slash:return"/";case TokenType.exponent:return"**";case TokenType.jsxName:return"jsxName";case TokenType.jsxText:return"jsxText";case TokenType.jsxEmptyText:return"jsxEmptyText";case TokenType.jsxTagStart:return"jsxTagStart";case TokenType.jsxTagEnd:return"jsxTagEnd";case TokenType.typeParameterStart:return"typeParameterStart";case TokenType.nonNullAssertion:return"nonNullAssertion";case TokenType._break:return"break";case TokenType._case:return"case";case TokenType._catch:return"catch";case TokenType._continue:return"continue";case TokenType._debugger:return"debugger";case TokenType._default:return"default";case TokenType._do:return"do";case TokenType._else:return"else";case TokenType._finally:return"finally";case TokenType._for:return"for";case TokenType._function:return"function";case TokenType._if:return"if";case TokenType._return:return"return";case TokenType._switch:return"switch";case TokenType._throw:return"throw";case TokenType._try:return"try";case TokenType._var:return"var";case TokenType._let:return"let";case TokenType._const:return"const";case TokenType._while:return"while";case TokenType._with:return"with";case TokenType._new:return"new";case TokenType._this:return"this";case TokenType._super:return"super";case TokenType._class:return"class";case TokenType._extends:return"extends";case TokenType._export:return"export";case TokenType._import:return"import";case TokenType._yield:return"yield";case TokenType._null:return"null";case TokenType._true:return"true";case TokenType._false:return"false";case TokenType._in:return"in";case TokenType._instanceof:return"instanceof";case TokenType._typeof:return"typeof";case TokenType._void:return"void";case TokenType._delete:return"delete";case TokenType._async:return"async";case TokenType._get:return"get";case TokenType._set:return"set";case TokenType._declare:return"declare";case TokenType._readonly:return"readonly";case TokenType._abstract:return"abstract";case TokenType._static:return"static";case TokenType._public:return"public";case TokenType._private:return"private";case TokenType._protected:return"protected";case TokenType._override:return"override";case TokenType._as:return"as";case TokenType._enum:return"enum";case TokenType._type:return"type";case TokenType._implements:return"implements";default:return""}}var Scope=class{constructor(startTokenIndex,endTokenIndex,isFunctionScope){this.startTokenIndex=startTokenIndex,this.endTokenIndex=endTokenIndex,this.isFunctionScope=isFunctionScope}},StateSnapshot=class{constructor(potentialArrowAt,noAnonFunctionType,inDisallowConditionalTypesContext,tokensLength,scopesLength,pos,type,contextualKeyword,start,end,isType,scopeDepth,error){this.potentialArrowAt=potentialArrowAt,this.noAnonFunctionType=noAnonFunctionType,this.inDisallowConditionalTypesContext=inDisallowConditionalTypesContext,this.tokensLength=tokensLength,this.scopesLength=scopesLength,this.pos=pos,this.type=type,this.contextualKeyword=contextualKeyword,this.start=start,this.end=end,this.isType=isType,this.scopeDepth=scopeDepth,this.error=error}},State=class _State{constructor(){_State.prototype.__init.call(this),_State.prototype.__init2.call(this),_State.prototype.__init3.call(this),_State.prototype.__init4.call(this),_State.prototype.__init5.call(this),_State.prototype.__init6.call(this),_State.prototype.__init7.call(this),_State.prototype.__init8.call(this),_State.prototype.__init9.call(this),_State.prototype.__init10.call(this),_State.prototype.__init11.call(this),_State.prototype.__init12.call(this),_State.prototype.__init13.call(this)}__init(){this.potentialArrowAt=-1}__init2(){this.noAnonFunctionType=!1}__init3(){this.inDisallowConditionalTypesContext=!1}__init4(){this.tokens=[]}__init5(){this.scopes=[]}__init6(){this.pos=0}__init7(){this.type=TokenType.eof}__init8(){this.contextualKeyword=ContextualKeyword.NONE}__init9(){this.start=0}__init10(){this.end=0}__init11(){this.isType=!1}__init12(){this.scopeDepth=0}__init13(){this.error=null}snapshot(){return new StateSnapshot(this.potentialArrowAt,this.noAnonFunctionType,this.inDisallowConditionalTypesContext,this.tokens.length,this.scopes.length,this.pos,this.type,this.contextualKeyword,this.start,this.end,this.isType,this.scopeDepth,this.error)}restoreFromSnapshot(snapshot){this.potentialArrowAt=snapshot.potentialArrowAt,this.noAnonFunctionType=snapshot.noAnonFunctionType,this.inDisallowConditionalTypesContext=snapshot.inDisallowConditionalTypesContext,this.tokens.length=snapshot.tokensLength,this.scopes.length=snapshot.scopesLength,this.pos=snapshot.pos,this.type=snapshot.type,this.contextualKeyword=snapshot.contextualKeyword,this.start=snapshot.start,this.end=snapshot.end,this.isType=snapshot.isType,this.scopeDepth=snapshot.scopeDepth,this.error=snapshot.error}};var charCodes;(function(charCodes2){charCodes2[charCodes2.backSpace=8]="backSpace";let lineFeed=10;charCodes2[charCodes2.lineFeed=lineFeed]="lineFeed";let tab=9;charCodes2[charCodes2.tab=tab]="tab";let carriageReturn=13;charCodes2[charCodes2.carriageReturn=carriageReturn]="carriageReturn";let shiftOut=14;charCodes2[charCodes2.shiftOut=shiftOut]="shiftOut";let space=32;charCodes2[charCodes2.space=space]="space";let exclamationMark=33;charCodes2[charCodes2.exclamationMark=exclamationMark]="exclamationMark";let quotationMark=34;charCodes2[charCodes2.quotationMark=quotationMark]="quotationMark";let numberSign=35;charCodes2[charCodes2.numberSign=numberSign]="numberSign";let dollarSign=36;charCodes2[charCodes2.dollarSign=dollarSign]="dollarSign";let percentSign=37;charCodes2[charCodes2.percentSign=percentSign]="percentSign";let ampersand=38;charCodes2[charCodes2.ampersand=ampersand]="ampersand";let apostrophe=39;charCodes2[charCodes2.apostrophe=apostrophe]="apostrophe";let leftParenthesis=40;charCodes2[charCodes2.leftParenthesis=leftParenthesis]="leftParenthesis";let rightParenthesis=41;charCodes2[charCodes2.rightParenthesis=rightParenthesis]="rightParenthesis";let asterisk=42;charCodes2[charCodes2.asterisk=asterisk]="asterisk";let plusSign=43;charCodes2[charCodes2.plusSign=plusSign]="plusSign";let comma2=44;charCodes2[charCodes2.comma=comma2]="comma";let dash=45;charCodes2[charCodes2.dash=dash]="dash";let dot=46;charCodes2[charCodes2.dot=dot]="dot";let slash=47;charCodes2[charCodes2.slash=slash]="slash";let digit0=48;charCodes2[charCodes2.digit0=digit0]="digit0";let digit1=49;charCodes2[charCodes2.digit1=digit1]="digit1";let digit2=50;charCodes2[charCodes2.digit2=digit2]="digit2";let digit3=51;charCodes2[charCodes2.digit3=digit3]="digit3";let digit4=52;charCodes2[charCodes2.digit4=digit4]="digit4";let digit5=53;charCodes2[charCodes2.digit5=digit5]="digit5";let digit6=54;charCodes2[charCodes2.digit6=digit6]="digit6";let digit7=55;charCodes2[charCodes2.digit7=digit7]="digit7";let digit8=56;charCodes2[charCodes2.digit8=digit8]="digit8";let digit9=57;charCodes2[charCodes2.digit9=digit9]="digit9";let colon=58;charCodes2[charCodes2.colon=colon]="colon";let semicolon3=59;charCodes2[charCodes2.semicolon=semicolon3]="semicolon";let lessThan=60;charCodes2[charCodes2.lessThan=lessThan]="lessThan";let equalsTo=61;charCodes2[charCodes2.equalsTo=equalsTo]="equalsTo";let greaterThan=62;charCodes2[charCodes2.greaterThan=greaterThan]="greaterThan";let questionMark=63;charCodes2[charCodes2.questionMark=questionMark]="questionMark";let atSign=64;charCodes2[charCodes2.atSign=atSign]="atSign";let uppercaseA=65;charCodes2[charCodes2.uppercaseA=uppercaseA]="uppercaseA";let uppercaseB=66;charCodes2[charCodes2.uppercaseB=uppercaseB]="uppercaseB";let uppercaseC=67;charCodes2[charCodes2.uppercaseC=uppercaseC]="uppercaseC";let uppercaseD=68;charCodes2[charCodes2.uppercaseD=uppercaseD]="uppercaseD";let uppercaseE=69;charCodes2[charCodes2.uppercaseE=uppercaseE]="uppercaseE";let uppercaseF=70;charCodes2[charCodes2.uppercaseF=uppercaseF]="uppercaseF";let uppercaseG=71;charCodes2[charCodes2.uppercaseG=uppercaseG]="uppercaseG";let uppercaseH=72;charCodes2[charCodes2.uppercaseH=uppercaseH]="uppercaseH";let uppercaseI=73;charCodes2[charCodes2.uppercaseI=uppercaseI]="uppercaseI";let uppercaseJ=74;charCodes2[charCodes2.uppercaseJ=uppercaseJ]="uppercaseJ";let uppercaseK=75;charCodes2[charCodes2.uppercaseK=uppercaseK]="uppercaseK";let uppercaseL=76;charCodes2[charCodes2.uppercaseL=uppercaseL]="uppercaseL";let uppercaseM=77;charCodes2[charCodes2.uppercaseM=uppercaseM]="uppercaseM";let uppercaseN=78;charCodes2[charCodes2.uppercaseN=uppercaseN]="uppercaseN";let uppercaseO=79;charCodes2[charCodes2.uppercaseO=uppercaseO]="uppercaseO";let uppercaseP=80;charCodes2[charCodes2.uppercaseP=uppercaseP]="uppercaseP";let uppercaseQ=81;charCodes2[charCodes2.uppercaseQ=uppercaseQ]="uppercaseQ";let uppercaseR=82;charCodes2[charCodes2.uppercaseR=uppercaseR]="uppercaseR";let uppercaseS=83;charCodes2[charCodes2.uppercaseS=uppercaseS]="uppercaseS";let uppercaseT=84;charCodes2[charCodes2.uppercaseT=uppercaseT]="uppercaseT";let uppercaseU=85;charCodes2[charCodes2.uppercaseU=uppercaseU]="uppercaseU";let uppercaseV=86;charCodes2[charCodes2.uppercaseV=uppercaseV]="uppercaseV";let uppercaseW=87;charCodes2[charCodes2.uppercaseW=uppercaseW]="uppercaseW";let uppercaseX=88;charCodes2[charCodes2.uppercaseX=uppercaseX]="uppercaseX";let uppercaseY=89;charCodes2[charCodes2.uppercaseY=uppercaseY]="uppercaseY";let uppercaseZ=90;charCodes2[charCodes2.uppercaseZ=uppercaseZ]="uppercaseZ";let leftSquareBracket=91;charCodes2[charCodes2.leftSquareBracket=leftSquareBracket]="leftSquareBracket";let backslash=92;charCodes2[charCodes2.backslash=backslash]="backslash";let rightSquareBracket=93;charCodes2[charCodes2.rightSquareBracket=rightSquareBracket]="rightSquareBracket";let caret=94;charCodes2[charCodes2.caret=caret]="caret";let underscore=95;charCodes2[charCodes2.underscore=underscore]="underscore";let graveAccent=96;charCodes2[charCodes2.graveAccent=graveAccent]="graveAccent";let lowercaseA=97;charCodes2[charCodes2.lowercaseA=lowercaseA]="lowercaseA";let lowercaseB=98;charCodes2[charCodes2.lowercaseB=lowercaseB]="lowercaseB";let lowercaseC=99;charCodes2[charCodes2.lowercaseC=lowercaseC]="lowercaseC";let lowercaseD=100;charCodes2[charCodes2.lowercaseD=lowercaseD]="lowercaseD";let lowercaseE=101;charCodes2[charCodes2.lowercaseE=lowercaseE]="lowercaseE";let lowercaseF=102;charCodes2[charCodes2.lowercaseF=lowercaseF]="lowercaseF";let lowercaseG=103;charCodes2[charCodes2.lowercaseG=lowercaseG]="lowercaseG";let lowercaseH=104;charCodes2[charCodes2.lowercaseH=lowercaseH]="lowercaseH";let lowercaseI=105;charCodes2[charCodes2.lowercaseI=lowercaseI]="lowercaseI";let lowercaseJ=106;charCodes2[charCodes2.lowercaseJ=lowercaseJ]="lowercaseJ";let lowercaseK=107;charCodes2[charCodes2.lowercaseK=lowercaseK]="lowercaseK";let lowercaseL=108;charCodes2[charCodes2.lowercaseL=lowercaseL]="lowercaseL";let lowercaseM=109;charCodes2[charCodes2.lowercaseM=lowercaseM]="lowercaseM";let lowercaseN=110;charCodes2[charCodes2.lowercaseN=lowercaseN]="lowercaseN";let lowercaseO=111;charCodes2[charCodes2.lowercaseO=lowercaseO]="lowercaseO";let lowercaseP=112;charCodes2[charCodes2.lowercaseP=lowercaseP]="lowercaseP";let lowercaseQ=113;charCodes2[charCodes2.lowercaseQ=lowercaseQ]="lowercaseQ";let lowercaseR=114;charCodes2[charCodes2.lowercaseR=lowercaseR]="lowercaseR";let lowercaseS=115;charCodes2[charCodes2.lowercaseS=lowercaseS]="lowercaseS";let lowercaseT=116;charCodes2[charCodes2.lowercaseT=lowercaseT]="lowercaseT";let lowercaseU=117;charCodes2[charCodes2.lowercaseU=lowercaseU]="lowercaseU";let lowercaseV=118;charCodes2[charCodes2.lowercaseV=lowercaseV]="lowercaseV";let lowercaseW=119;charCodes2[charCodes2.lowercaseW=lowercaseW]="lowercaseW";let lowercaseX=120;charCodes2[charCodes2.lowercaseX=lowercaseX]="lowercaseX";let lowercaseY=121;charCodes2[charCodes2.lowercaseY=lowercaseY]="lowercaseY";let lowercaseZ=122;charCodes2[charCodes2.lowercaseZ=lowercaseZ]="lowercaseZ";let leftCurlyBrace=123;charCodes2[charCodes2.leftCurlyBrace=leftCurlyBrace]="leftCurlyBrace";let verticalBar=124;charCodes2[charCodes2.verticalBar=verticalBar]="verticalBar";let rightCurlyBrace=125;charCodes2[charCodes2.rightCurlyBrace=rightCurlyBrace]="rightCurlyBrace";let tilde=126;charCodes2[charCodes2.tilde=tilde]="tilde";let nonBreakingSpace=160;charCodes2[charCodes2.nonBreakingSpace=nonBreakingSpace]="nonBreakingSpace";let oghamSpaceMark=5760;charCodes2[charCodes2.oghamSpaceMark=oghamSpaceMark]="oghamSpaceMark";let lineSeparator=8232;charCodes2[charCodes2.lineSeparator=lineSeparator]="lineSeparator";let paragraphSeparator=8233;charCodes2[charCodes2.paragraphSeparator=paragraphSeparator]="paragraphSeparator"})(charCodes||(charCodes={}));var isJSXEnabled,isTypeScriptEnabled,isFlowEnabled,state,input,nextContextId;function getNextContextId(){return nextContextId++}function augmentError(error){if("pos"in error){let loc=locationForIndex(error.pos);error.message+=` (${loc.line}:${loc.column})`,error.loc=loc}return error}var Loc=class{constructor(line2,column){this.line=line2,this.column=column}};function locationForIndex(pos){let line2=1,column=1;for(let i3=0;i3<pos;i3++)input.charCodeAt(i3)===charCodes.lineFeed?(line2++,column=1):column++;return new Loc(line2,column)}function initParser(inputCode,isJSXEnabledArg,isTypeScriptEnabledArg,isFlowEnabledArg){input=inputCode,state=new State,nextContextId=1,isJSXEnabled=isJSXEnabledArg,isTypeScriptEnabled=isTypeScriptEnabledArg,isFlowEnabled=isFlowEnabledArg}function isContextual(contextualKeyword){return state.contextualKeyword===contextualKeyword}function isLookaheadContextual(contextualKeyword){let l2=lookaheadTypeAndKeyword();return l2.type===TokenType.name&&l2.contextualKeyword===contextualKeyword}function eatContextual(contextualKeyword){return state.contextualKeyword===contextualKeyword&&eat(TokenType.name)}function expectContextual(contextualKeyword){eatContextual(contextualKeyword)||unexpected()}function canInsertSemicolon(){return match(TokenType.eof)||match(TokenType.braceR)||hasPrecedingLineBreak()}function hasPrecedingLineBreak(){let prevToken=state.tokens[state.tokens.length-1],lastTokEnd=prevToken?prevToken.end:0;for(let i3=lastTokEnd;i3<state.start;i3++){let code=input.charCodeAt(i3);if(code===charCodes.lineFeed||code===charCodes.carriageReturn||code===8232||code===8233)return!0}return!1}function hasFollowingLineBreak(){let nextStart=nextTokenStart();for(let i3=state.end;i3<nextStart;i3++){let code=input.charCodeAt(i3);if(code===charCodes.lineFeed||code===charCodes.carriageReturn||code===8232||code===8233)return!0}return!1}function isLineTerminator(){return eat(TokenType.semi)||canInsertSemicolon()}function semicolon(){isLineTerminator()||unexpected('Unexpected token, expected ";"')}function expect(type){eat(type)||unexpected(`Unexpected token, expected "${formatTokenType(type)}"`)}function unexpected(message="Unexpected token",pos=state.start){if(state.error)return;let err=new SyntaxError(message);err.pos=pos,state.error=err,state.pos=input.length,finishToken(TokenType.eof)}var WHITESPACE_CHARS=[9,11,12,charCodes.space,charCodes.nonBreakingSpace,charCodes.oghamSpaceMark,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279],skipWhiteSpace=/(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g,IS_WHITESPACE=new Uint8Array(65536);for(let char of WHITESPACE_CHARS)IS_WHITESPACE[char]=1;function computeIsIdentifierChar(code){if(code<48)return code===36;if(code<58)return!0;if(code<65)return!1;if(code<91)return!0;if(code<97)return code===95;if(code<123)return!0;if(code<128)return!1;throw new Error("Should not be called with non-ASCII char code.")}var IS_IDENTIFIER_CHAR=new Uint8Array(65536);for(let i3=0;i3<128;i3++)IS_IDENTIFIER_CHAR[i3]=computeIsIdentifierChar(i3)?1:0;for(let i3=128;i3<65536;i3++)IS_IDENTIFIER_CHAR[i3]=1;for(let whitespaceChar of WHITESPACE_CHARS)IS_IDENTIFIER_CHAR[whitespaceChar]=0;IS_IDENTIFIER_CHAR[8232]=0;IS_IDENTIFIER_CHAR[8233]=0;var IS_IDENTIFIER_START=IS_IDENTIFIER_CHAR.slice();for(let numChar=charCodes.digit0;numChar<=charCodes.digit9;numChar++)IS_IDENTIFIER_START[numChar]=0;var READ_WORD_TREE=new Int32Array([-1,27,783,918,1755,2376,2862,3483,-1,3699,-1,4617,4752,4833,5130,5508,5940,-1,6480,6939,7749,8181,8451,8613,-1,8829,-1,-1,-1,54,243,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,432,-1,-1,-1,675,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,81,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,108,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,135,-1,-1,-1,-1,-1,-1,-1,-1,-1,162,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,189,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,216,-1,-1,-1,-1,-1,-1,ContextualKeyword._abstract<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,270,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,297,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,324,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,351,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,378,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,405,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._accessor<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._as<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,459,-1,-1,-1,-1,-1,594,-1,-1,-1,-1,-1,-1,486,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,513,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,540,-1,-1,-1,-1,-1,-1,ContextualKeyword._assert<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,567,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._asserts<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,621,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,648,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._async<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,702,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,729,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,756,-1,-1,-1,-1,-1,-1,ContextualKeyword._await<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,810,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,837,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,864,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,891,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._break<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,945,-1,-1,-1,-1,-1,-1,1107,-1,-1,-1,1242,-1,-1,1350,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,972,1026,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,999,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._case<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1053,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1080,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._catch<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1134,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1161,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1188,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1215,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._checks<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1269,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1296,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1323,-1,-1,-1,-1,-1,-1,-1,(TokenType._class<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1377,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1404,1620,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1431,-1,-1,-1,-1,-1,-1,(TokenType._const<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1458,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1485,-1,-1,-1,-1,-1,-1,-1,-1,1512,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1539,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1566,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1593,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._constructor<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1647,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1674,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1701,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1728,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._continue<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1782,-1,-1,-1,-1,-1,-1,-1,-1,-1,2349,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1809,1971,-1,-1,2106,-1,-1,-1,-1,-1,2241,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1836,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1863,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1890,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1917,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1944,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._debugger<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1998,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2025,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2052,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2079,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._declare<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2133,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2160,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2187,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2214,-1,-1,-1,-1,-1,-1,(TokenType._default<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2268,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2295,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2322,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._delete<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._do<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2403,-1,2484,-1,-1,-1,-1,-1,-1,-1,-1,-1,2565,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2430,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2457,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._else<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2511,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2538,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._enum<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2592,-1,-1,-1,2727,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2619,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2646,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2673,-1,-1,-1,-1,-1,-1,(TokenType._export<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2700,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._exports<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2754,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2781,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2808,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2835,-1,-1,-1,-1,-1,-1,-1,(TokenType._extends<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2889,-1,-1,-1,-1,-1,-1,-1,2997,-1,-1,-1,-1,-1,3159,-1,-1,3213,-1,-1,3294,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2916,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2943,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2970,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._false<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3024,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3051,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3078,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3105,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3132,-1,(TokenType._finally<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3186,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._for<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3240,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3267,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._from<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3321,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3348,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3375,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3402,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3429,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3456,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._function<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3510,-1,-1,-1,-1,-1,-1,3564,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3537,-1,-1,-1,-1,-1,-1,ContextualKeyword._get<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3591,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3618,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3645,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3672,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._global<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3726,-1,-1,-1,-1,-1,-1,3753,4077,-1,-1,-1,-1,4590,-1,-1,-1,-1,-1,-1,-1,(TokenType._if<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3780,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3807,-1,-1,3996,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3834,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3861,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3888,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3915,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3942,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3969,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._implements<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4023,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4050,-1,-1,-1,-1,-1,-1,(TokenType._import<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._in<<1)+1,-1,-1,-1,-1,-1,4104,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4185,4401,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4131,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4158,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._infer<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4212,-1,-1,-1,-1,-1,-1,-1,4239,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4266,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4293,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4320,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4347,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4374,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._instanceof<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4428,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4455,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4482,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4509,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4536,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4563,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._interface<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._is<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4644,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4671,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4698,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4725,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._keyof<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4779,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4806,-1,-1,-1,-1,-1,-1,(TokenType._let<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4860,-1,-1,-1,-1,-1,4995,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4887,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4914,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4941,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4968,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._mixins<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5022,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5049,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5076,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5103,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._module<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5157,-1,-1,-1,5373,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5427,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5184,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5211,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5238,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5265,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5292,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5319,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5346,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._namespace<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5400,-1,-1,-1,(TokenType._new<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5454,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5481,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._null<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5535,-1,-1,-1,-1,-1,-1,-1,-1,-1,5562,-1,-1,-1,-1,5697,5751,-1,-1,-1,-1,ContextualKeyword._of<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5589,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5616,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5643,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5670,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._opaque<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5724,-1,-1,-1,-1,-1,-1,ContextualKeyword._out<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5778,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5805,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5832,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5859,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5886,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5913,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._override<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5967,-1,-1,6345,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5994,-1,-1,-1,-1,-1,6129,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6021,-1,-1,-1,-1,-1,6048,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6075,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6102,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._private<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6156,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6183,-1,-1,-1,-1,-1,-1,-1,-1,-1,6318,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6210,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6237,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6264,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6291,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._protected<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._proto<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6372,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6399,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6426,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6453,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._public<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6507,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6534,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6696,-1,-1,6831,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6561,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6588,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6615,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6642,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6669,-1,ContextualKeyword._readonly<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6723,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6750,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6777,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6804,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._require<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6858,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6885,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6912,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._return<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6966,-1,-1,-1,7182,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7236,7371,-1,7479,-1,7614,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6993,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7020,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7047,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7074,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7101,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7128,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7155,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._satisfies<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7209,-1,-1,-1,-1,-1,-1,ContextualKeyword._set<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7263,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7290,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7317,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7344,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._static<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7398,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7425,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7452,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._super<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7506,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7533,-1,-1,-1,-1,-1,-1,-1,-1,-1,7560,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7587,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._switch<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7641,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7668,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7695,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7722,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._symbol<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7776,-1,-1,-1,-1,-1,-1,-1,-1,-1,7938,-1,-1,-1,-1,-1,-1,8046,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7803,-1,-1,-1,-1,-1,-1,-1,-1,7857,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7830,-1,-1,-1,-1,-1,-1,-1,(TokenType._this<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7884,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7911,-1,-1,-1,(TokenType._throw<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7965,-1,-1,-1,8019,-1,-1,-1,-1,-1,-1,7992,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._true<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._try<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8073,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8100,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._type<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8127,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8154,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._typeof<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8208,-1,-1,-1,-1,8343,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8235,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8262,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8289,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8316,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._unique<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8370,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8397,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8424,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ContextualKeyword._using<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8478,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8532,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8505,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._var<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8559,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8586,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._void<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8640,8748,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8667,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8694,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8721,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._while<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8775,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8802,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._with<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8856,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8883,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8910,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8937,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(TokenType._yield<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]);function readWord(){let treePos=0,code=0,pos=state.pos;for(;pos<input.length&&(code=input.charCodeAt(pos),!(code<charCodes.lowercaseA||code>charCodes.lowercaseZ));){let next2=READ_WORD_TREE[treePos+(code-charCodes.lowercaseA)+1];if(next2===-1)break;treePos=next2,pos++}let keywordValue=READ_WORD_TREE[treePos];if(keywordValue>-1&&!IS_IDENTIFIER_CHAR[code]){state.pos=pos,keywordValue&1?finishToken(keywordValue>>>1):finishToken(TokenType.name,keywordValue>>>1);return}for(;pos<input.length;){let ch2=input.charCodeAt(pos);if(IS_IDENTIFIER_CHAR[ch2])pos++;else if(ch2===charCodes.backslash){if(pos+=2,input.charCodeAt(pos)===charCodes.leftCurlyBrace){for(;pos<input.length&&input.charCodeAt(pos)!==charCodes.rightCurlyBrace;)pos++;pos++}}else if(ch2===charCodes.atSign&&input.charCodeAt(pos+1)===charCodes.atSign)pos+=2;else break}state.pos=pos,finishToken(TokenType.name)}var IdentifierRole;(function(IdentifierRole2){IdentifierRole2[IdentifierRole2.Access=0]="Access";let ExportAccess=1;IdentifierRole2[IdentifierRole2.ExportAccess=ExportAccess]="ExportAccess";let TopLevelDeclaration=ExportAccess+1;IdentifierRole2[IdentifierRole2.TopLevelDeclaration=TopLevelDeclaration]="TopLevelDeclaration";let FunctionScopedDeclaration=TopLevelDeclaration+1;IdentifierRole2[IdentifierRole2.FunctionScopedDeclaration=FunctionScopedDeclaration]="FunctionScopedDeclaration";let BlockScopedDeclaration=FunctionScopedDeclaration+1;IdentifierRole2[IdentifierRole2.BlockScopedDeclaration=BlockScopedDeclaration]="BlockScopedDeclaration";let ObjectShorthandTopLevelDeclaration=BlockScopedDeclaration+1;IdentifierRole2[IdentifierRole2.ObjectShorthandTopLevelDeclaration=ObjectShorthandTopLevelDeclaration]="ObjectShorthandTopLevelDeclaration";let ObjectShorthandFunctionScopedDeclaration=ObjectShorthandTopLevelDeclaration+1;IdentifierRole2[IdentifierRole2.ObjectShorthandFunctionScopedDeclaration=ObjectShorthandFunctionScopedDeclaration]="ObjectShorthandFunctionScopedDeclaration";let ObjectShorthandBlockScopedDeclaration=ObjectShorthandFunctionScopedDeclaration+1;IdentifierRole2[IdentifierRole2.ObjectShorthandBlockScopedDeclaration=ObjectShorthandBlockScopedDeclaration]="ObjectShorthandBlockScopedDeclaration";let ObjectShorthand=ObjectShorthandBlockScopedDeclaration+1;IdentifierRole2[IdentifierRole2.ObjectShorthand=ObjectShorthand]="ObjectShorthand";let ImportDeclaration=ObjectShorthand+1;IdentifierRole2[IdentifierRole2.ImportDeclaration=ImportDeclaration]="ImportDeclaration";let ObjectKey=ImportDeclaration+1;IdentifierRole2[IdentifierRole2.ObjectKey=ObjectKey]="ObjectKey";let ImportAccess=ObjectKey+1;IdentifierRole2[IdentifierRole2.ImportAccess=ImportAccess]="ImportAccess"})(IdentifierRole||(IdentifierRole={}));var JSXRole;(function(JSXRole2){JSXRole2[JSXRole2.NoChildren=0]="NoChildren";let OneChild=1;JSXRole2[JSXRole2.OneChild=OneChild]="OneChild";let StaticChildren=OneChild+1;JSXRole2[JSXRole2.StaticChildren=StaticChildren]="StaticChildren";let KeyAfterPropSpread=StaticChildren+1;JSXRole2[JSXRole2.KeyAfterPropSpread=KeyAfterPropSpread]="KeyAfterPropSpread"})(JSXRole||(JSXRole={}));function isDeclaration(token){let role=token.identifierRole;return role===IdentifierRole.TopLevelDeclaration||role===IdentifierRole.FunctionScopedDeclaration||role===IdentifierRole.BlockScopedDeclaration||role===IdentifierRole.ObjectShorthandTopLevelDeclaration||role===IdentifierRole.ObjectShorthandFunctionScopedDeclaration||role===IdentifierRole.ObjectShorthandBlockScopedDeclaration}function isNonTopLevelDeclaration(token){let role=token.identifierRole;return role===IdentifierRole.FunctionScopedDeclaration||role===IdentifierRole.BlockScopedDeclaration||role===IdentifierRole.ObjectShorthandFunctionScopedDeclaration||role===IdentifierRole.ObjectShorthandBlockScopedDeclaration}function isTopLevelDeclaration(token){let role=token.identifierRole;return role===IdentifierRole.TopLevelDeclaration||role===IdentifierRole.ObjectShorthandTopLevelDeclaration||role===IdentifierRole.ImportDeclaration}function isBlockScopedDeclaration(token){let role=token.identifierRole;return role===IdentifierRole.TopLevelDeclaration||role===IdentifierRole.BlockScopedDeclaration||role===IdentifierRole.ObjectShorthandTopLevelDeclaration||role===IdentifierRole.ObjectShorthandBlockScopedDeclaration}function isFunctionScopedDeclaration(token){let role=token.identifierRole;return role===IdentifierRole.FunctionScopedDeclaration||role===IdentifierRole.ObjectShorthandFunctionScopedDeclaration}function isObjectShorthandDeclaration(token){return token.identifierRole===IdentifierRole.ObjectShorthandTopLevelDeclaration||token.identifierRole===IdentifierRole.ObjectShorthandBlockScopedDeclaration||token.identifierRole===IdentifierRole.ObjectShorthandFunctionScopedDeclaration}var Token=class{constructor(){this.type=state.type,this.contextualKeyword=state.contextualKeyword,this.start=state.start,this.end=state.end,this.scopeDepth=state.scopeDepth,this.isType=state.isType,this.identifierRole=null,this.jsxRole=null,this.shadowsGlobal=!1,this.isAsyncOperation=!1,this.contextId=null,this.rhsEndIndex=null,this.isExpression=!1,this.numNullishCoalesceStarts=0,this.numNullishCoalesceEnds=0,this.isOptionalChainStart=!1,this.isOptionalChainEnd=!1,this.subscriptStartIndex=null,this.nullishStartIndex=null}};function next(){state.tokens.push(new Token),nextToken()}function nextTemplateToken(){state.tokens.push(new Token),state.start=state.pos,readTmplToken()}function retokenizeSlashAsRegex(){state.type===TokenType.assign&&--state.pos,readRegexp()}function pushTypeContext(existingTokensInType){for(let i3=state.tokens.length-existingTokensInType;i3<state.tokens.length;i3++)state.tokens[i3].isType=!0;let oldIsType=state.isType;return state.isType=!0,oldIsType}function popTypeContext(oldIsType){state.isType=oldIsType}function eat(type){return match(type)?(next(),!0):!1}function eatTypeToken(tokenType){let oldIsType=state.isType;state.isType=!0,eat(tokenType),state.isType=oldIsType}function match(type){return state.type===type}function lookaheadType(){let snapshot=state.snapshot();next();let type=state.type;return state.restoreFromSnapshot(snapshot),type}var TypeAndKeyword=class{constructor(type,contextualKeyword){this.type=type,this.contextualKeyword=contextualKeyword}};function lookaheadTypeAndKeyword(){let snapshot=state.snapshot();next();let type=state.type,contextualKeyword=state.contextualKeyword;return state.restoreFromSnapshot(snapshot),new TypeAndKeyword(type,contextualKeyword)}function nextTokenStart(){return nextTokenStartSince(state.pos)}function nextTokenStartSince(pos){skipWhiteSpace.lastIndex=pos;let skip=skipWhiteSpace.exec(input);return pos+skip[0].length}function lookaheadCharCode(){return input.charCodeAt(nextTokenStart())}function nextToken(){if(skipSpace(),state.start=state.pos,state.pos>=input.length){let tokens=state.tokens;tokens.length>=2&&tokens[tokens.length-1].start>=input.length&&tokens[tokens.length-2].start>=input.length&&unexpected("Unexpectedly reached the end of input."),finishToken(TokenType.eof);return}readToken(input.charCodeAt(state.pos))}function readToken(code){IS_IDENTIFIER_START[code]||code===charCodes.backslash||code===charCodes.atSign&&input.charCodeAt(state.pos+1)===charCodes.atSign?readWord():getTokenFromCode(code)}function skipBlockComment(){for(;input.charCodeAt(state.pos)!==charCodes.asterisk||input.charCodeAt(state.pos+1)!==charCodes.slash;)if(state.pos++,state.pos>input.length){unexpected("Unterminated comment",state.pos-2);return}state.pos+=2}function skipLineComment(startSkip){let ch2=input.charCodeAt(state.pos+=startSkip);if(state.pos<input.length)for(;ch2!==charCodes.lineFeed&&ch2!==charCodes.carriageReturn&&ch2!==charCodes.lineSeparator&&ch2!==charCodes.paragraphSeparator&&++state.pos<input.length;)ch2=input.charCodeAt(state.pos)}function skipSpace(){for(;state.pos<input.length;){let ch2=input.charCodeAt(state.pos);switch(ch2){case charCodes.carriageReturn:input.charCodeAt(state.pos+1)===charCodes.lineFeed&&++state.pos;case charCodes.lineFeed:case charCodes.lineSeparator:case charCodes.paragraphSeparator:++state.pos;break;case charCodes.slash:switch(input.charCodeAt(state.pos+1)){case charCodes.asterisk:state.pos+=2,skipBlockComment();break;case charCodes.slash:skipLineComment(2);break;default:return}break;default:if(IS_WHITESPACE[ch2])++state.pos;else return}}}function finishToken(type,contextualKeyword=ContextualKeyword.NONE){state.end=state.pos,state.type=type,state.contextualKeyword=contextualKeyword}function readToken_dot(){let nextChar=input.charCodeAt(state.pos+1);if(nextChar>=charCodes.digit0&&nextChar<=charCodes.digit9){readNumber(!0);return}nextChar===charCodes.dot&&input.charCodeAt(state.pos+2)===charCodes.dot?(state.pos+=3,finishToken(TokenType.ellipsis)):(++state.pos,finishToken(TokenType.dot))}function readToken_slash(){input.charCodeAt(state.pos+1)===charCodes.equalsTo?finishOp(TokenType.assign,2):finishOp(TokenType.slash,1)}function readToken_mult_modulo(code){let tokenType=code===charCodes.asterisk?TokenType.star:TokenType.modulo,width=1,nextChar=input.charCodeAt(state.pos+1);code===charCodes.asterisk&&nextChar===charCodes.asterisk&&(width++,nextChar=input.charCodeAt(state.pos+2),tokenType=TokenType.exponent),nextChar===charCodes.equalsTo&&input.charCodeAt(state.pos+2)!==charCodes.greaterThan&&(width++,tokenType=TokenType.assign),finishOp(tokenType,width)}function readToken_pipe_amp(code){let nextChar=input.charCodeAt(state.pos+1);if(nextChar===code){input.charCodeAt(state.pos+2)===charCodes.equalsTo?finishOp(TokenType.assign,3):finishOp(code===charCodes.verticalBar?TokenType.logicalOR:TokenType.logicalAND,2);return}if(code===charCodes.verticalBar){if(nextChar===charCodes.greaterThan){finishOp(TokenType.pipeline,2);return}else if(nextChar===charCodes.rightCurlyBrace&&isFlowEnabled){finishOp(TokenType.braceBarR,2);return}}if(nextChar===charCodes.equalsTo){finishOp(TokenType.assign,2);return}finishOp(code===charCodes.verticalBar?TokenType.bitwiseOR:TokenType.bitwiseAND,1)}function readToken_caret(){input.charCodeAt(state.pos+1)===charCodes.equalsTo?finishOp(TokenType.assign,2):finishOp(TokenType.bitwiseXOR,1)}function readToken_plus_min(code){let nextChar=input.charCodeAt(state.pos+1);if(nextChar===code){finishOp(TokenType.preIncDec,2);return}nextChar===charCodes.equalsTo?finishOp(TokenType.assign,2):code===charCodes.plusSign?finishOp(TokenType.plus,1):finishOp(TokenType.minus,1)}function readToken_lt(){let nextChar=input.charCodeAt(state.pos+1);if(nextChar===charCodes.lessThan){if(input.charCodeAt(state.pos+2)===charCodes.equalsTo){finishOp(TokenType.assign,3);return}state.isType?finishOp(TokenType.lessThan,1):finishOp(TokenType.bitShiftL,2);return}nextChar===charCodes.equalsTo?finishOp(TokenType.relationalOrEqual,2):finishOp(TokenType.lessThan,1)}function readToken_gt(){if(state.isType){finishOp(TokenType.greaterThan,1);return}let nextChar=input.charCodeAt(state.pos+1);if(nextChar===charCodes.greaterThan){let size2=input.charCodeAt(state.pos+2)===charCodes.greaterThan?3:2;if(input.charCodeAt(state.pos+size2)===charCodes.equalsTo){finishOp(TokenType.assign,size2+1);return}finishOp(TokenType.bitShiftR,size2);return}nextChar===charCodes.equalsTo?finishOp(TokenType.relationalOrEqual,2):finishOp(TokenType.greaterThan,1)}function rescan_gt(){state.type===TokenType.greaterThan&&(state.pos-=1,readToken_gt())}function readToken_eq_excl(code){let nextChar=input.charCodeAt(state.pos+1);if(nextChar===charCodes.equalsTo){finishOp(TokenType.equality,input.charCodeAt(state.pos+2)===charCodes.equalsTo?3:2);return}if(code===charCodes.equalsTo&&nextChar===charCodes.greaterThan){state.pos+=2,finishToken(TokenType.arrow);return}finishOp(code===charCodes.equalsTo?TokenType.eq:TokenType.bang,1)}function readToken_question(){let nextChar=input.charCodeAt(state.pos+1),nextChar2=input.charCodeAt(state.pos+2);nextChar===charCodes.questionMark&&!(isFlowEnabled&&state.isType)?nextChar2===charCodes.equalsTo?finishOp(TokenType.assign,3):finishOp(TokenType.nullishCoalescing,2):nextChar===charCodes.dot&&!(nextChar2>=charCodes.digit0&&nextChar2<=charCodes.digit9)?(state.pos+=2,finishToken(TokenType.questionDot)):(++state.pos,finishToken(TokenType.question))}function getTokenFromCode(code){switch(code){case charCodes.numberSign:++state.pos,finishToken(TokenType.hash);return;case charCodes.dot:readToken_dot();return;case charCodes.leftParenthesis:++state.pos,finishToken(TokenType.parenL);return;case charCodes.rightParenthesis:++state.pos,finishToken(TokenType.parenR);return;case charCodes.semicolon:++state.pos,finishToken(TokenType.semi);return;case charCodes.comma:++state.pos,finishToken(TokenType.comma);return;case charCodes.leftSquareBracket:++state.pos,finishToken(TokenType.bracketL);return;case charCodes.rightSquareBracket:++state.pos,finishToken(TokenType.bracketR);return;case charCodes.leftCurlyBrace:isFlowEnabled&&input.charCodeAt(state.pos+1)===charCodes.verticalBar?finishOp(TokenType.braceBarL,2):(++state.pos,finishToken(TokenType.braceL));return;case charCodes.rightCurlyBrace:++state.pos,finishToken(TokenType.braceR);return;case charCodes.colon:input.charCodeAt(state.pos+1)===charCodes.colon?finishOp(TokenType.doubleColon,2):(++state.pos,finishToken(TokenType.colon));return;case charCodes.questionMark:readToken_question();return;case charCodes.atSign:++state.pos,finishToken(TokenType.at);return;case charCodes.graveAccent:++state.pos,finishToken(TokenType.backQuote);return;case charCodes.digit0:{let nextChar=input.charCodeAt(state.pos+1);if(nextChar===charCodes.lowercaseX||nextChar===charCodes.uppercaseX||nextChar===charCodes.lowercaseO||nextChar===charCodes.uppercaseO||nextChar===charCodes.lowercaseB||nextChar===charCodes.uppercaseB){readRadixNumber();return}}case charCodes.digit1:case charCodes.digit2:case charCodes.digit3:case charCodes.digit4:case charCodes.digit5:case charCodes.digit6:case charCodes.digit7:case charCodes.digit8:case charCodes.digit9:readNumber(!1);return;case charCodes.quotationMark:case charCodes.apostrophe:readString(code);return;case charCodes.slash:readToken_slash();return;case charCodes.percentSign:case charCodes.asterisk:readToken_mult_modulo(code);return;case charCodes.verticalBar:case charCodes.ampersand:readToken_pipe_amp(code);return;case charCodes.caret:readToken_caret();return;case charCodes.plusSign:case charCodes.dash:readToken_plus_min(code);return;case charCodes.lessThan:readToken_lt();return;case charCodes.greaterThan:readToken_gt();return;case charCodes.equalsTo:case charCodes.exclamationMark:readToken_eq_excl(code);return;case charCodes.tilde:finishOp(TokenType.tilde,1);return;default:break}unexpected(`Unexpected character '${String.fromCharCode(code)}'`,state.pos)}function finishOp(type,size2){state.pos+=size2,finishToken(type)}function readRegexp(){let start=state.pos,escaped=!1,inClass=!1;for(;;){if(state.pos>=input.length){unexpected("Unterminated regular expression",start);return}let code=input.charCodeAt(state.pos);if(escaped)escaped=!1;else{if(code===charCodes.leftSquareBracket)inClass=!0;else if(code===charCodes.rightSquareBracket&&inClass)inClass=!1;else if(code===charCodes.slash&&!inClass)break;escaped=code===charCodes.backslash}++state.pos}++state.pos,skipWord(),finishToken(TokenType.regexp)}function readInt(){for(;;){let code=input.charCodeAt(state.pos);if(code>=charCodes.digit0&&code<=charCodes.digit9||code===charCodes.underscore)state.pos++;else break}}function readRadixNumber(){for(state.pos+=2;;){let code=input.charCodeAt(state.pos);if(code>=charCodes.digit0&&code<=charCodes.digit9||code>=charCodes.lowercaseA&&code<=charCodes.lowercaseF||code>=charCodes.uppercaseA&&code<=charCodes.uppercaseF||code===charCodes.underscore)state.pos++;else break}input.charCodeAt(state.pos)===charCodes.lowercaseN?(++state.pos,finishToken(TokenType.bigint)):finishToken(TokenType.num)}function readNumber(startsWithDot){let isBigInt=!1,isDecimal=!1;startsWithDot||readInt();let nextChar=input.charCodeAt(state.pos);if(nextChar===charCodes.dot&&(++state.pos,readInt(),nextChar=input.charCodeAt(state.pos)),(nextChar===charCodes.uppercaseE||nextChar===charCodes.lowercaseE)&&(nextChar=input.charCodeAt(++state.pos),(nextChar===charCodes.plusSign||nextChar===charCodes.dash)&&++state.pos,readInt(),nextChar=input.charCodeAt(state.pos)),nextChar===charCodes.lowercaseN?(++state.pos,isBigInt=!0):nextChar===charCodes.lowercaseM&&(++state.pos,isDecimal=!0),isBigInt){finishToken(TokenType.bigint);return}if(isDecimal){finishToken(TokenType.decimal);return}finishToken(TokenType.num)}function readString(quote){for(state.pos++;;){if(state.pos>=input.length){unexpected("Unterminated string constant");return}let ch2=input.charCodeAt(state.pos);if(ch2===charCodes.backslash)state.pos++;else if(ch2===quote)break;state.pos++}state.pos++,finishToken(TokenType.string)}function readTmplToken(){for(;;){if(state.pos>=input.length){unexpected("Unterminated template");return}let ch2=input.charCodeAt(state.pos);if(ch2===charCodes.graveAccent||ch2===charCodes.dollarSign&&input.charCodeAt(state.pos+1)===charCodes.leftCurlyBrace){if(state.pos===state.start&&match(TokenType.template))if(ch2===charCodes.dollarSign){state.pos+=2,finishToken(TokenType.dollarBraceL);return}else{++state.pos,finishToken(TokenType.backQuote);return}finishToken(TokenType.template);return}ch2===charCodes.backslash&&state.pos++,state.pos++}}function skipWord(){for(;state.pos<input.length;){let ch2=input.charCodeAt(state.pos);if(IS_IDENTIFIER_CHAR[ch2])state.pos++;else if(ch2===charCodes.backslash){if(state.pos+=2,input.charCodeAt(state.pos)===charCodes.leftCurlyBrace){for(;state.pos<input.length&&input.charCodeAt(state.pos)!==charCodes.rightCurlyBrace;)state.pos++;state.pos++}}else break}}function getImportExportSpecifierInfo(tokens,index=tokens.currentIndex()){let endIndex=index+1;if(isSpecifierEnd(tokens,endIndex)){let name=tokens.identifierNameAtIndex(index);return{isType:!1,leftName:name,rightName:name,endIndex}}if(endIndex++,isSpecifierEnd(tokens,endIndex))return{isType:!0,leftName:null,rightName:null,endIndex};if(endIndex++,isSpecifierEnd(tokens,endIndex))return{isType:!1,leftName:tokens.identifierNameAtIndex(index),rightName:tokens.identifierNameAtIndex(index+2),endIndex};if(endIndex++,isSpecifierEnd(tokens,endIndex))return{isType:!0,leftName:null,rightName:null,endIndex};throw new Error(`Unexpected import/export specifier at ${index}`)}function isSpecifierEnd(tokens,index){let token=tokens.tokens[index];return token.type===TokenType.braceR||token.type===TokenType.comma}var xhtml_default=new Map([["quot",'"'],["amp","&"],["apos","'"],["lt","<"],["gt",">"],["nbsp","\xA0"],["iexcl","\xA1"],["cent","\xA2"],["pound","\xA3"],["curren","\xA4"],["yen","\xA5"],["brvbar","\xA6"],["sect","\xA7"],["uml","\xA8"],["copy","\xA9"],["ordf","\xAA"],["laquo","\xAB"],["not","\xAC"],["shy","\xAD"],["reg","\xAE"],["macr","\xAF"],["deg","\xB0"],["plusmn","\xB1"],["sup2","\xB2"],["sup3","\xB3"],["acute","\xB4"],["micro","\xB5"],["para","\xB6"],["middot","\xB7"],["cedil","\xB8"],["sup1","\xB9"],["ordm","\xBA"],["raquo","\xBB"],["frac14","\xBC"],["frac12","\xBD"],["frac34","\xBE"],["iquest","\xBF"],["Agrave","\xC0"],["Aacute","\xC1"],["Acirc","\xC2"],["Atilde","\xC3"],["Auml","\xC4"],["Aring","\xC5"],["AElig","\xC6"],["Ccedil","\xC7"],["Egrave","\xC8"],["Eacute","\xC9"],["Ecirc","\xCA"],["Euml","\xCB"],["Igrave","\xCC"],["Iacute","\xCD"],["Icirc","\xCE"],["Iuml","\xCF"],["ETH","\xD0"],["Ntilde","\xD1"],["Ograve","\xD2"],["Oacute","\xD3"],["Ocirc","\xD4"],["Otilde","\xD5"],["Ouml","\xD6"],["times","\xD7"],["Oslash","\xD8"],["Ugrave","\xD9"],["Uacute","\xDA"],["Ucirc","\xDB"],["Uuml","\xDC"],["Yacute","\xDD"],["THORN","\xDE"],["szlig","\xDF"],["agrave","\xE0"],["aacute","\xE1"],["acirc","\xE2"],["atilde","\xE3"],["auml","\xE4"],["aring","\xE5"],["aelig","\xE6"],["ccedil","\xE7"],["egrave","\xE8"],["eacute","\xE9"],["ecirc","\xEA"],["euml","\xEB"],["igrave","\xEC"],["iacute","\xED"],["icirc","\xEE"],["iuml","\xEF"],["eth","\xF0"],["ntilde","\xF1"],["ograve","\xF2"],["oacute","\xF3"],["ocirc","\xF4"],["otilde","\xF5"],["ouml","\xF6"],["divide","\xF7"],["oslash","\xF8"],["ugrave","\xF9"],["uacute","\xFA"],["ucirc","\xFB"],["uuml","\xFC"],["yacute","\xFD"],["thorn","\xFE"],["yuml","\xFF"],["OElig","\u0152"],["oelig","\u0153"],["Scaron","\u0160"],["scaron","\u0161"],["Yuml","\u0178"],["fnof","\u0192"],["circ","\u02C6"],["tilde","\u02DC"],["Alpha","\u0391"],["Beta","\u0392"],["Gamma","\u0393"],["Delta","\u0394"],["Epsilon","\u0395"],["Zeta","\u0396"],["Eta","\u0397"],["Theta","\u0398"],["Iota","\u0399"],["Kappa","\u039A"],["Lambda","\u039B"],["Mu","\u039C"],["Nu","\u039D"],["Xi","\u039E"],["Omicron","\u039F"],["Pi","\u03A0"],["Rho","\u03A1"],["Sigma","\u03A3"],["Tau","\u03A4"],["Upsilon","\u03A5"],["Phi","\u03A6"],["Chi","\u03A7"],["Psi","\u03A8"],["Omega","\u03A9"],["alpha","\u03B1"],["beta","\u03B2"],["gamma","\u03B3"],["delta","\u03B4"],["epsilon","\u03B5"],["zeta","\u03B6"],["eta","\u03B7"],["theta","\u03B8"],["iota","\u03B9"],["kappa","\u03BA"],["lambda","\u03BB"],["mu","\u03BC"],["nu","\u03BD"],["xi","\u03BE"],["omicron","\u03BF"],["pi","\u03C0"],["rho","\u03C1"],["sigmaf","\u03C2"],["sigma","\u03C3"],["tau","\u03C4"],["upsilon","\u03C5"],["phi","\u03C6"],["chi","\u03C7"],["psi","\u03C8"],["omega","\u03C9"],["thetasym","\u03D1"],["upsih","\u03D2"],["piv","\u03D6"],["ensp","\u2002"],["emsp","\u2003"],["thinsp","\u2009"],["zwnj","\u200C"],["zwj","\u200D"],["lrm","\u200E"],["rlm","\u200F"],["ndash","\u2013"],["mdash","\u2014"],["lsquo","\u2018"],["rsquo","\u2019"],["sbquo","\u201A"],["ldquo","\u201C"],["rdquo","\u201D"],["bdquo","\u201E"],["dagger","\u2020"],["Dagger","\u2021"],["bull","\u2022"],["hellip","\u2026"],["permil","\u2030"],["prime","\u2032"],["Prime","\u2033"],["lsaquo","\u2039"],["rsaquo","\u203A"],["oline","\u203E"],["frasl","\u2044"],["euro","\u20AC"],["image","\u2111"],["weierp","\u2118"],["real","\u211C"],["trade","\u2122"],["alefsym","\u2135"],["larr","\u2190"],["uarr","\u2191"],["rarr","\u2192"],["darr","\u2193"],["harr","\u2194"],["crarr","\u21B5"],["lArr","\u21D0"],["uArr","\u21D1"],["rArr","\u21D2"],["dArr","\u21D3"],["hArr","\u21D4"],["forall","\u2200"],["part","\u2202"],["exist","\u2203"],["empty","\u2205"],["nabla","\u2207"],["isin","\u2208"],["notin","\u2209"],["ni","\u220B"],["prod","\u220F"],["sum","\u2211"],["minus","\u2212"],["lowast","\u2217"],["radic","\u221A"],["prop","\u221D"],["infin","\u221E"],["ang","\u2220"],["and","\u2227"],["or","\u2228"],["cap","\u2229"],["cup","\u222A"],["int","\u222B"],["there4","\u2234"],["sim","\u223C"],["cong","\u2245"],["asymp","\u2248"],["ne","\u2260"],["equiv","\u2261"],["le","\u2264"],["ge","\u2265"],["sub","\u2282"],["sup","\u2283"],["nsub","\u2284"],["sube","\u2286"],["supe","\u2287"],["oplus","\u2295"],["otimes","\u2297"],["perp","\u22A5"],["sdot","\u22C5"],["lceil","\u2308"],["rceil","\u2309"],["lfloor","\u230A"],["rfloor","\u230B"],["lang","\u2329"],["rang","\u232A"],["loz","\u25CA"],["spades","\u2660"],["clubs","\u2663"],["hearts","\u2665"],["diams","\u2666"]]);function getJSXPragmaInfo(options){let[base,suffix]=splitPragma(options.jsxPragma||"React.createElement"),[fragmentBase,fragmentSuffix]=splitPragma(options.jsxFragmentPragma||"React.Fragment");return{base,suffix,fragmentBase,fragmentSuffix}}function splitPragma(pragma){let dotIndex=pragma.indexOf(".");return dotIndex===-1&&(dotIndex=pragma.length),[pragma.slice(0,dotIndex),pragma.slice(dotIndex)]}var Transformer=class{getPrefixCode(){return""}getHoistedCode(){return""}getSuffixCode(){return""}};var JSXTransformer=class _JSXTransformer extends Transformer{__init(){this.lastLineNumber=1}__init2(){this.lastIndex=0}__init3(){this.filenameVarName=null}__init4(){this.esmAutomaticImportNameResolutions={}}__init5(){this.cjsAutomaticModuleNameResolutions={}}constructor(rootTransformer,tokens,importProcessor,nameManager,options){super(),this.rootTransformer=rootTransformer,this.tokens=tokens,this.importProcessor=importProcessor,this.nameManager=nameManager,this.options=options,_JSXTransformer.prototype.__init.call(this),_JSXTransformer.prototype.__init2.call(this),_JSXTransformer.prototype.__init3.call(this),_JSXTransformer.prototype.__init4.call(this),_JSXTransformer.prototype.__init5.call(this),this.jsxPragmaInfo=getJSXPragmaInfo(options),this.isAutomaticRuntime=options.jsxRuntime==="automatic",this.jsxImportSource=options.jsxImportSource||"react"}process(){return this.tokens.matches1(TokenType.jsxTagStart)?(this.processJSXTag(),!0):!1}getPrefixCode(){let prefix="";if(this.filenameVarName&&(prefix+=`const ${this.filenameVarName} = ${JSON.stringify(this.options.filePath||"")};`),this.isAutomaticRuntime)if(this.importProcessor)for(let[path,resolvedName]of Object.entries(this.cjsAutomaticModuleNameResolutions))prefix+=`var ${resolvedName} = require("${path}");`;else{let{createElement:createElementResolution,...otherResolutions}=this.esmAutomaticImportNameResolutions;createElementResolution&&(prefix+=`import {createElement as ${createElementResolution}} from "${this.jsxImportSource}";`);let importSpecifiers=Object.entries(otherResolutions).map(([name,resolvedName])=>`${name} as ${resolvedName}`).join(", ");if(importSpecifiers){let importPath=this.jsxImportSource+(this.options.production?"/jsx-runtime":"/jsx-dev-runtime");prefix+=`import {${importSpecifiers}} from "${importPath}";`}}return prefix}processJSXTag(){let{jsxRole,start}=this.tokens.currentToken(),elementLocationCode=this.options.production?null:this.getElementLocationCode(start);this.isAutomaticRuntime&&jsxRole!==JSXRole.KeyAfterPropSpread?this.transformTagToJSXFunc(elementLocationCode,jsxRole):this.transformTagToCreateElement(elementLocationCode)}getElementLocationCode(firstTokenStart){return`lineNumber: ${this.getLineNumberForIndex(firstTokenStart)}`}getLineNumberForIndex(index){let code=this.tokens.code;for(;this.lastIndex<index&&this.lastIndex<code.length;)code[this.lastIndex]===`
639
639
  `&&this.lastLineNumber++,this.lastIndex++;return this.lastLineNumber}transformTagToJSXFunc(elementLocationCode,jsxRole){let isStatic=jsxRole===JSXRole.StaticChildren;this.tokens.replaceToken(this.getJSXFuncInvocationCode(isStatic));let keyCode=null;if(this.tokens.matches1(TokenType.jsxTagEnd))this.tokens.replaceToken(`${this.getFragmentCode()}, {`),this.processAutomaticChildrenAndEndProps(jsxRole);else{if(this.processTagIntro(),this.tokens.appendCode(", {"),keyCode=this.processProps(!0),this.tokens.matches2(TokenType.slash,TokenType.jsxTagEnd))this.tokens.appendCode("}");else if(this.tokens.matches1(TokenType.jsxTagEnd))this.tokens.removeToken(),this.processAutomaticChildrenAndEndProps(jsxRole);else throw new Error("Expected either /> or > at the end of the tag.");keyCode&&this.tokens.appendCode(`, ${keyCode}`)}for(this.options.production||(keyCode===null&&this.tokens.appendCode(", void 0"),this.tokens.appendCode(`, ${isStatic}, ${this.getDevSource(elementLocationCode)}, this`)),this.tokens.removeInitialToken();!this.tokens.matches1(TokenType.jsxTagEnd);)this.tokens.removeToken();this.tokens.replaceToken(")")}transformTagToCreateElement(elementLocationCode){if(this.tokens.replaceToken(this.getCreateElementInvocationCode()),this.tokens.matches1(TokenType.jsxTagEnd))this.tokens.replaceToken(`${this.getFragmentCode()}, null`),this.processChildren(!0);else if(this.processTagIntro(),this.processPropsObjectWithDevInfo(elementLocationCode),!this.tokens.matches2(TokenType.slash,TokenType.jsxTagEnd))if(this.tokens.matches1(TokenType.jsxTagEnd))this.tokens.removeToken(),this.processChildren(!0);else throw new Error("Expected either /> or > at the end of the tag.");for(this.tokens.removeInitialToken();!this.tokens.matches1(TokenType.jsxTagEnd);)this.tokens.removeToken();this.tokens.replaceToken(")")}getJSXFuncInvocationCode(isStatic){return this.options.production?isStatic?this.claimAutoImportedFuncInvocation("jsxs","/jsx-runtime"):this.claimAutoImportedFuncInvocation("jsx","/jsx-runtime"):this.claimAutoImportedFuncInvocation("jsxDEV","/jsx-dev-runtime")}getCreateElementInvocationCode(){if(this.isAutomaticRuntime)return this.claimAutoImportedFuncInvocation("createElement","");{let{jsxPragmaInfo}=this;return`${this.importProcessor&&this.importProcessor.getIdentifierReplacement(jsxPragmaInfo.base)||jsxPragmaInfo.base}${jsxPragmaInfo.suffix}(`}}getFragmentCode(){if(this.isAutomaticRuntime)return this.claimAutoImportedName("Fragment",this.options.production?"/jsx-runtime":"/jsx-dev-runtime");{let{jsxPragmaInfo}=this;return(this.importProcessor&&this.importProcessor.getIdentifierReplacement(jsxPragmaInfo.fragmentBase)||jsxPragmaInfo.fragmentBase)+jsxPragmaInfo.fragmentSuffix}}claimAutoImportedFuncInvocation(funcName,importPathSuffix){let funcCode=this.claimAutoImportedName(funcName,importPathSuffix);return this.importProcessor?`${funcCode}.call(void 0, `:`${funcCode}(`}claimAutoImportedName(funcName,importPathSuffix){if(this.importProcessor){let path=this.jsxImportSource+importPathSuffix;return this.cjsAutomaticModuleNameResolutions[path]||(this.cjsAutomaticModuleNameResolutions[path]=this.importProcessor.getFreeIdentifierForPath(path)),`${this.cjsAutomaticModuleNameResolutions[path]}.${funcName}`}else return this.esmAutomaticImportNameResolutions[funcName]||(this.esmAutomaticImportNameResolutions[funcName]=this.nameManager.claimFreeName(`_${funcName}`)),this.esmAutomaticImportNameResolutions[funcName]}processTagIntro(){let introEnd=this.tokens.currentIndex()+1;for(;this.tokens.tokens[introEnd].isType||!this.tokens.matches2AtIndex(introEnd-1,TokenType.jsxName,TokenType.jsxName)&&!this.tokens.matches2AtIndex(introEnd-1,TokenType.greaterThan,TokenType.jsxName)&&!this.tokens.matches1AtIndex(introEnd,TokenType.braceL)&&!this.tokens.matches1AtIndex(introEnd,TokenType.jsxTagEnd)&&!this.tokens.matches2AtIndex(introEnd,TokenType.slash,TokenType.jsxTagEnd);)introEnd++;if(introEnd===this.tokens.currentIndex()+1){let tagName=this.tokens.identifierName();startsWithLowerCase(tagName)&&this.tokens.replaceToken(`'${tagName}'`)}for(;this.tokens.currentIndex()<introEnd;)this.rootTransformer.processToken()}processPropsObjectWithDevInfo(elementLocationCode){let devProps=this.options.production?"":`__self: this, __source: ${this.getDevSource(elementLocationCode)}`;if(!this.tokens.matches1(TokenType.jsxName)&&!this.tokens.matches1(TokenType.braceL)){devProps?this.tokens.appendCode(`, {${devProps}}`):this.tokens.appendCode(", null");return}this.tokens.appendCode(", {"),this.processProps(!1),devProps?this.tokens.appendCode(` ${devProps}}`):this.tokens.appendCode("}")}processProps(extractKeyCode){let keyCode=null;for(;;){if(this.tokens.matches2(TokenType.jsxName,TokenType.eq)){let propName=this.tokens.identifierName();if(extractKeyCode&&propName==="key"){keyCode!==null&&this.tokens.appendCode(keyCode.replace(/[^\n]/g,"")),this.tokens.removeToken(),this.tokens.removeToken();let snapshot=this.tokens.snapshot();this.processPropValue(),keyCode=this.tokens.dangerouslyGetAndRemoveCodeSinceSnapshot(snapshot);continue}else this.processPropName(propName),this.tokens.replaceToken(": "),this.processPropValue()}else if(this.tokens.matches1(TokenType.jsxName)){let propName=this.tokens.identifierName();this.processPropName(propName),this.tokens.appendCode(": true")}else if(this.tokens.matches1(TokenType.braceL))this.tokens.replaceToken(""),this.rootTransformer.processBalancedCode(),this.tokens.replaceToken("");else break;this.tokens.appendCode(",")}return keyCode}processPropName(propName){propName.includes("-")?this.tokens.replaceToken(`'${propName}'`):this.tokens.copyToken()}processPropValue(){this.tokens.matches1(TokenType.braceL)?(this.tokens.replaceToken(""),this.rootTransformer.processBalancedCode(),this.tokens.replaceToken("")):this.tokens.matches1(TokenType.jsxTagStart)?this.processJSXTag():this.processStringPropValue()}processStringPropValue(){let token=this.tokens.currentToken(),valueCode=this.tokens.code.slice(token.start+1,token.end-1),replacementCode=formatJSXTextReplacement(valueCode),literalCode=formatJSXStringValueLiteral(valueCode);this.tokens.replaceToken(literalCode+replacementCode)}processAutomaticChildrenAndEndProps(jsxRole){jsxRole===JSXRole.StaticChildren?(this.tokens.appendCode(" children: ["),this.processChildren(!1),this.tokens.appendCode("]}")):(jsxRole===JSXRole.OneChild&&this.tokens.appendCode(" children: "),this.processChildren(!1),this.tokens.appendCode("}"))}processChildren(needsInitialComma){let needsComma=needsInitialComma;for(;;){if(this.tokens.matches2(TokenType.jsxTagStart,TokenType.slash))return;let didEmitElement=!1;if(this.tokens.matches1(TokenType.braceL))this.tokens.matches2(TokenType.braceL,TokenType.braceR)?(this.tokens.replaceToken(""),this.tokens.replaceToken("")):(this.tokens.replaceToken(needsComma?", ":""),this.rootTransformer.processBalancedCode(),this.tokens.replaceToken(""),didEmitElement=!0);else if(this.tokens.matches1(TokenType.jsxTagStart))this.tokens.appendCode(needsComma?", ":""),this.processJSXTag(),didEmitElement=!0;else if(this.tokens.matches1(TokenType.jsxText)||this.tokens.matches1(TokenType.jsxEmptyText))didEmitElement=this.processChildTextElement(needsComma);else throw new Error("Unexpected token when processing JSX children.");didEmitElement&&(needsComma=!0)}}processChildTextElement(needsComma){let token=this.tokens.currentToken(),valueCode=this.tokens.code.slice(token.start,token.end),replacementCode=formatJSXTextReplacement(valueCode),literalCode=formatJSXTextLiteral(valueCode);return literalCode==='""'?(this.tokens.replaceToken(replacementCode),!1):(this.tokens.replaceToken(`${needsComma?", ":""}${literalCode}${replacementCode}`),!0)}getDevSource(elementLocationCode){return`{fileName: ${this.getFilenameVarName()}, ${elementLocationCode}}`}getFilenameVarName(){return this.filenameVarName||(this.filenameVarName=this.nameManager.claimFreeName("_jsxFileName")),this.filenameVarName}};function startsWithLowerCase(s3){let firstChar=s3.charCodeAt(0);return firstChar>=charCodes.lowercaseA&&firstChar<=charCodes.lowercaseZ}function formatJSXTextLiteral(text){let result="",whitespace2="",isInInitialLineWhitespace=!1,seenNonWhitespace=!1;for(let i3=0;i3<text.length;i3++){let c3=text[i3];if(c3===" "||c3===" "||c3==="\r")isInInitialLineWhitespace||(whitespace2+=c3);else if(c3===`
640
640
  `)whitespace2="",isInInitialLineWhitespace=!0;else{if(seenNonWhitespace&&isInInitialLineWhitespace&&(result+=" "),result+=whitespace2,whitespace2="",c3==="&"){let{entity,newI}=processEntity(text,i3+1);i3=newI-1,result+=entity}else result+=c3;seenNonWhitespace=!0,isInInitialLineWhitespace=!1}}return isInInitialLineWhitespace||(result+=whitespace2),JSON.stringify(result)}function formatJSXTextReplacement(text){let numNewlines=0,numSpaces=0;for(let c3 of text)c3===`
641
641
  `?(numNewlines++,numSpaces=0):c3===" "&&numSpaces++;return`
@@ -826,9 +826,9 @@ ${namesToRegister.map(({variableName,uniqueLocalName})=>` reactHotLoader.regist
826
826
  `)}},__publicField(_a234,"token","group"),_a234);SxClass.register(Group);var _a235,GroupLocked=(_a235=class extends SxClass{constructor(value){super();__publicField(this,"token","locked");__publicField(this,"value");this.value=value}static fromSexprPrimitives(primitiveSexprs){if(primitiveSexprs.length===0)return new _a235(!0);let state2=toStringValue(primitiveSexprs[0]);return new _a235(state2==="yes")}getString(){return this.value?"(locked yes)":"(locked no)"}},__publicField(_a235,"token","locked"),__publicField(_a235,"parentToken","group"),_a235);SxClass.register(GroupLocked);var _a236,GroupMembers=(_a236=class extends SxClass{constructor(members){super();__publicField(this,"token","members");__publicField(this,"members");this.members=members}static fromSexprPrimitives(primitiveSexprs){let members=[];for(let primitive of primitiveSexprs){let str=toStringValue(primitive);str&&members.push(str)}return new _a236(members)}getString(){return this.members.length===0?"(members)":`(members ${this.members.map(m3=>`"${m3}"`).join(" ")})`}},__publicField(_a236,"token","members"),__publicField(_a236,"parentToken","group"),_a236);SxClass.register(GroupMembers);var _a237,SegmentEnd=(_a237=class extends SxClass{constructor(x3,y3){super();__publicField(this,"token","end");__publicField(this,"_x");__publicField(this,"_y");this._x=x3,this._y=y3}static fromSexprPrimitives(primitiveSexprs){let[rawX,rawY]=primitiveSexprs,x3=toNumberValue(rawX),y3=toNumberValue(rawY);if(x3===void 0||y3===void 0)throw new Error("end expects two numeric arguments");return new _a237(x3,y3)}get x(){return this._x}set x(value){this._x=value}get y(){return this._y}set y(value){this._y=value}toObject(){return{x:this._x,y:this._y}}getChildren(){return[]}getString(){return`(end ${this._x} ${this._y})`}},__publicField(_a237,"token","end"),__publicField(_a237,"parentToken","segment"),_a237);SxClass.register(SegmentEnd);var truthyStrings4=new Set(["true","yes","1"]),_a238,SegmentLocked=(_a238=class extends SxPrimitiveBoolean{constructor(value){super(value);__publicField(this,"token","locked")}static fromSexprPrimitives(primitiveSexprs){let[rawValue]=primitiveSexprs;return typeof rawValue=="boolean"?new _a238(rawValue):typeof rawValue=="string"?new _a238(truthyStrings4.has(rawValue.toLowerCase())):new _a238(!1)}getString(){return`(locked ${this.value?"yes":"no"})`}},__publicField(_a238,"token","locked"),__publicField(_a238,"parentToken","segment"),_a238);SxClass.register(SegmentLocked);var _a239,SegmentNet=(_a239=class extends SxClass{constructor(id2,name){super();__publicField(this,"token","net");__publicField(this,"_id");__publicField(this,"_name");this._id=id2,this._name=name}static fromSexprPrimitives(primitiveSexprs){let[rawId,rawName]=primitiveSexprs,id2=toNumberValue(rawId);if(id2===void 0)throw new Error("net expects a numeric identifier");let name=rawName===void 0?void 0:toStringValue(rawName);return new _a239(id2,name??void 0)}get id(){return this._id}set id(value){this._id=value}get name(){return this._name}set name(value){this._name=value===""?void 0:value}toObject(){return this._name===void 0?{id:this._id}:{id:this._id,name:this._name}}getChildren(){return[]}getString(){let namePart=this._name?` ${quoteSExprString(this._name)}`:"";return`(net ${this._id}${namePart})`}},__publicField(_a239,"token","net"),__publicField(_a239,"parentToken","segment"),_a239);SxClass.register(SegmentNet);var _a240,SegmentStart=(_a240=class extends SxClass{constructor(x3,y3){super();__publicField(this,"token","start");__publicField(this,"_x");__publicField(this,"_y");this._x=x3,this._y=y3}static fromSexprPrimitives(primitiveSexprs){let[rawX,rawY]=primitiveSexprs,x3=toNumberValue(rawX),y3=toNumberValue(rawY);if(x3===void 0||y3===void 0)throw new Error("start expects two numeric arguments");return new _a240(x3,y3)}get x(){return this._x}set x(value){this._x=value}get y(){return this._y}set y(value){this._y=value}toObject(){return{x:this._x,y:this._y}}getChildren(){return[]}getString(){return`(start ${this._x} ${this._y})`}},__publicField(_a240,"token","start"),__publicField(_a240,"parentToken","segment"),_a240);SxClass.register(SegmentStart);var SUPPORTED_SINGLE_TOKENS11=new Set(["start","end","width","layer","net","tstamp","uuid","locked"]),_a241,Segment3=(_a241=class extends SxClass{constructor(params={}){super();__publicField(this,"token","segment");__publicField(this,"_sxStart");__publicField(this,"_sxEnd");__publicField(this,"_sxWidth");__publicField(this,"_sxLayer");__publicField(this,"_sxNet");__publicField(this,"_sxTstamp");__publicField(this,"_sxUuid");__publicField(this,"_sxLocked");params.start!==void 0&&(this.start=params.start),params.end!==void 0&&(this.end=params.end),params.width!==void 0&&(this.width=params.width),params.layer!==void 0&&(this.layer=params.layer),params.net!==void 0&&(this.net=params.net),params.tstamp!==void 0&&(this.tstamp=params.tstamp),params.uuid!==void 0&&(this.uuid=params.uuid),params.locked!==void 0&&(this.locked=params.locked)}static fromSexprPrimitives(primitiveSexprs){let segment2=new _a241,{propertyMap,arrayPropertyMap}=SxClass.parsePrimitivesToClassProperties(primitiveSexprs,this.token),unexpectedSingleTokens=Object.keys(propertyMap).filter(token=>!SUPPORTED_SINGLE_TOKENS11.has(token));if(unexpectedSingleTokens.length>0)throw new Error(`Unsupported child tokens inside segment expression: ${unexpectedSingleTokens.join(", ")}`);for(let[token,entries]of Object.entries(arrayPropertyMap)){if(!SUPPORTED_SINGLE_TOKENS11.has(token))throw new Error(`Unsupported child tokens inside segment expression: ${token}`);if(entries.length>1)throw new Error(`Segment does not support repeated child tokens: ${token}`)}segment2._sxStart=arrayPropertyMap.start?.[0]??propertyMap.start,segment2._sxEnd=arrayPropertyMap.end?.[0]??propertyMap.end,segment2._sxWidth=arrayPropertyMap.width?.[0]??propertyMap.width,segment2._sxLayer=arrayPropertyMap.layer?.[0]??propertyMap.layer,segment2._sxNet=arrayPropertyMap.net?.[0]??propertyMap.net;let locked=arrayPropertyMap.locked?.[0]??propertyMap.locked;return segment2._sxLocked=locked&&locked.value?locked:void 0,segment2._sxTstamp=arrayPropertyMap.tstamp?.[0]??propertyMap.tstamp,segment2._sxUuid=arrayPropertyMap.uuid?.[0]??propertyMap.uuid,segment2}get start(){return this._sxStart}set start(value){this._sxStart=this.normalizeStart(value)}get end(){return this._sxEnd}set end(value){this._sxEnd=this.normalizeEnd(value)}get startPoint(){return this._sxStart?.toObject()}get endPoint(){return this._sxEnd?.toObject()}get width(){return this._sxWidth?.value}set width(value){if(value===void 0){this._sxWidth=void 0;return}this._sxWidth=value instanceof Width?value:new Width(value)}get widthClass(){return this._sxWidth}set widthClass(value){this._sxWidth=value}get layer(){return this._sxLayer}set layer(value){if(value===void 0){this._sxLayer=void 0;return}if(value instanceof Layer){this._sxLayer=value;return}let names=Array.isArray(value)?value:[value];this._sxLayer=new Layer(names)}get net(){return this._sxNet}set net(value){if(value===void 0){this._sxNet=void 0;return}if(value instanceof SegmentNet){this._sxNet=value;return}this._sxNet=new SegmentNet(value.id,value.name)}get tstamp(){return this._sxTstamp}set tstamp(value){if(value===void 0){this._sxTstamp=void 0;return}this._sxTstamp=value instanceof Tstamp?value:new Tstamp(value)}get uuid(){return this._sxUuid}set uuid(value){if(value===void 0){this._sxUuid=void 0;return}this._sxUuid=value instanceof Uuid?value:new Uuid(value)}get locked(){return this._sxLocked?.value??!1}set locked(value){this._sxLocked=value?new SegmentLocked(!0):void 0}getChildren(){let children=[];return this._sxStart&&children.push(this._sxStart),this._sxEnd&&children.push(this._sxEnd),this._sxWidth&&children.push(this._sxWidth),this._sxLayer&&children.push(this._sxLayer),this._sxNet&&children.push(this._sxNet),this._sxLocked&&children.push(this._sxLocked),this._sxTstamp&&children.push(this._sxTstamp),this._sxUuid&&children.push(this._sxUuid),children}normalizeStart(value){if(value!==void 0)return value instanceof SegmentStart?value:new SegmentStart(value.x,value.y)}normalizeEnd(value){if(value!==void 0)return value instanceof SegmentEnd?value:new SegmentEnd(value.x,value.y)}},__publicField(_a241,"token","segment"),_a241);SxClass.register(Segment3);var _a242,Zone=(_a242=class extends SxClass{constructor(){super(...arguments);__publicField(this,"token","zone");__publicField(this,"_rawChildren",[])}static fromSexprPrimitives(primitiveSexprs){let zone=new _a242;return zone._rawChildren=[...primitiveSexprs],zone}get rawChildren(){return[...this._rawChildren]}set rawChildren(children){this._rawChildren=[...children]}getChildren(){return[]}getString(){let lines=["(zone"];for(let arg of this._rawChildren)lines.push(` ${printSExpr(arg)}`);return lines.push(")"),lines.join(`
827
827
  `)}},__publicField(_a242,"token","zone"),_a242);SxClass.register(Zone);var _a243,Layers=(_a243=class extends SxClass{constructor(names=[]){super();__publicField(this,"token","layers");__publicField(this,"_names",[]);this.names=names}static fromSexprPrimitives(primitiveSexprs){let names=primitiveSexprs.map(primitive=>typeof primitive=="string"||typeof primitive=="number"?String(primitive):printSExpr(primitive));return new _a243(names)}get names(){return[...this._names]}set names(values){this._names=values.map(value=>String(value))}getString(){return`(layers ${this._names.map(name=>/^[^\s()"]+$/u.test(name)&&!["nil","#t","#f"].includes(name)?name:quoteSExprString(name)).join(" ")})`}},__publicField(_a243,"token","layers"),_a243);SxClass.register(Layers);var SingleValueProperty=class extends SxClass{constructor(value){super();__publicField(this,"_value");__publicField(this,"quoteStringValue",!1);this._value=value}static fromSexprPrimitives(primitiveSexprs){let[valuePrimitive]=primitiveSexprs,value=this.parsePrimitiveValue(valuePrimitive),Constructor=this;return new Constructor(value)}static parsePrimitiveValue(value){let stringValue=toStringValue(value);if(stringValue===void 0)throw new Error(`${this.name} expects a primitive value`);return stringValue}get value(){return this._value}set value(value){this._value=value}getChildren(){return[]}formatValue(){return typeof this._value=="string"?this.quoteStringValue?quoteSExprString(this._value):this._value:`${this._value}`}getString(){return`(${this.token} ${this.formatValue()})`}},NumericListProperty=class extends SxClass{constructor(values){super();__publicField(this,"_values");this._values=values}static fromSexprPrimitives(primitiveSexprs){let values=primitiveSexprs.map(primitive=>{let value=toNumberValue(primitive);if(value===void 0)throw new Error(`${this.name} expects numeric primitives but received ${primitive}`);return value}),Constructor=this;return new Constructor(values)}get values(){return[...this._values]}set values(values){this._values=[...values]}getChildren(){return[]}getString(){return`(${this.token} ${this._values.join(" ")})`}},CoordinateProperty=class extends SxClass{constructor(x3,y3){super();__publicField(this,"_x");__publicField(this,"_y");this._x=x3,this._y=y3}static fromSexprPrimitives(primitiveSexprs){let[xPrimitive,yPrimitive]=primitiveSexprs,x3=toNumberValue(xPrimitive),y3=toNumberValue(yPrimitive);if(x3===void 0||y3===void 0)throw new Error(`${this.name} expects two numeric values`);let Constructor=this;return new Constructor(x3,y3)}get x(){return this._x}set x(value){this._x=value}get y(){return this._y}set y(value){this._y=value}getChildren(){return[]}getString(){return`(${this.token} ${this._x} ${this._y})`}},_a244,PlotParamProperty=(_a244=class extends SingleValueProperty{},__publicField(_a244,"parentToken","pcbplotparams"),_a244),PlotParamNumberProperty=class extends PlotParamProperty{static parsePrimitiveValue(value){let parsed=toNumberValue(value);if(parsed===void 0)throw new Error(`pcbplotparams ${this.token} expects a numeric value`);return parsed}},_a245,PlotParamLayerSelection=(_a245=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","layerselection")}},__publicField(_a245,"token","layerselection"),_a245);SxClass.register(PlotParamLayerSelection);var _a246,PlotParamPlotOnAllLayersSelection=(_a246=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","plot_on_all_layers_selection")}},__publicField(_a246,"token","plot_on_all_layers_selection"),_a246);SxClass.register(PlotParamPlotOnAllLayersSelection);var _a247,PlotParamDashedLineDashRatio=(_a247=class extends PlotParamNumberProperty{constructor(){super(...arguments);__publicField(this,"token","dashed_line_dash_ratio")}},__publicField(_a247,"token","dashed_line_dash_ratio"),_a247);SxClass.register(PlotParamDashedLineDashRatio);var _a248,PlotParamDashedLineGapRatio=(_a248=class extends PlotParamNumberProperty{constructor(){super(...arguments);__publicField(this,"token","dashed_line_gap_ratio")}},__publicField(_a248,"token","dashed_line_gap_ratio"),_a248);SxClass.register(PlotParamDashedLineGapRatio);var _a249,PlotParamSvgPrecision=(_a249=class extends PlotParamNumberProperty{constructor(){super(...arguments);__publicField(this,"token","svgprecision")}},__publicField(_a249,"token","svgprecision"),_a249);SxClass.register(PlotParamSvgPrecision);var _a250,PlotParamLineWidth=(_a250=class extends PlotParamNumberProperty{constructor(){super(...arguments);__publicField(this,"token","linewidth")}},__publicField(_a250,"token","linewidth"),_a250);SxClass.register(PlotParamLineWidth);var _a251,PlotParamMode=(_a251=class extends PlotParamNumberProperty{constructor(){super(...arguments);__publicField(this,"token","mode")}},__publicField(_a251,"token","mode"),_a251);SxClass.register(PlotParamMode);var _a252,PlotParamHpglPenNumber=(_a252=class extends PlotParamNumberProperty{constructor(){super(...arguments);__publicField(this,"token","hpglpennumber")}},__publicField(_a252,"token","hpglpennumber"),_a252);SxClass.register(PlotParamHpglPenNumber);var _a253,PlotParamHpglPenSpeed=(_a253=class extends PlotParamNumberProperty{constructor(){super(...arguments);__publicField(this,"token","hpglpenspeed")}},__publicField(_a253,"token","hpglpenspeed"),_a253);SxClass.register(PlotParamHpglPenSpeed);var _a254,PlotParamHpglPenDiameter=(_a254=class extends PlotParamNumberProperty{constructor(){super(...arguments);__publicField(this,"token","hpglpendiameter")}},__publicField(_a254,"token","hpglpendiameter"),_a254);SxClass.register(PlotParamHpglPenDiameter);var _a255,PlotParamHpglPenOverlay=(_a255=class extends PlotParamNumberProperty{constructor(){super(...arguments);__publicField(this,"token","hpglpenoverlay")}},__publicField(_a255,"token","hpglpenoverlay"),_a255);SxClass.register(PlotParamHpglPenOverlay);var _a256,PlotParamOutputFormat=(_a256=class extends PlotParamNumberProperty{constructor(){super(...arguments);__publicField(this,"token","outputformat")}},__publicField(_a256,"token","outputformat"),_a256);SxClass.register(PlotParamOutputFormat);var _a257,PlotParamDrillShape=(_a257=class extends PlotParamNumberProperty{constructor(){super(...arguments);__publicField(this,"token","drillshape")}},__publicField(_a257,"token","drillshape"),_a257);SxClass.register(PlotParamDrillShape);var _a258,PlotParamScaleSelection=(_a258=class extends PlotParamNumberProperty{constructor(){super(...arguments);__publicField(this,"token","scaleselection")}},__publicField(_a258,"token","scaleselection"),_a258);SxClass.register(PlotParamScaleSelection);var _a259,PlotParamDisableApertMacros=(_a259=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","disableapertmacros")}},__publicField(_a259,"token","disableapertmacros"),_a259);SxClass.register(PlotParamDisableApertMacros);var _a260,PlotParamUseGerberExtensions=(_a260=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","usegerberextensions")}},__publicField(_a260,"token","usegerberextensions"),_a260);SxClass.register(PlotParamUseGerberExtensions);var _a261,PlotParamUseGerberAttributes=(_a261=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","usegerberattributes")}},__publicField(_a261,"token","usegerberattributes"),_a261);SxClass.register(PlotParamUseGerberAttributes);var _a262,PlotParamUseGerberAdvancedAttributes=(_a262=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","usegerberadvancedattributes")}},__publicField(_a262,"token","usegerberadvancedattributes"),_a262);SxClass.register(PlotParamUseGerberAdvancedAttributes);var _a263,PlotParamCreateGerberJobFile=(_a263=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","creategerberjobfile")}},__publicField(_a263,"token","creategerberjobfile"),_a263);SxClass.register(PlotParamCreateGerberJobFile);var _a264,PlotParamExcludeEdgeLayer=(_a264=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","excludeedgelayer")}},__publicField(_a264,"token","excludeedgelayer"),_a264);SxClass.register(PlotParamExcludeEdgeLayer);var _a265,PlotParamPlotFrameRef=(_a265=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","plotframeref")}},__publicField(_a265,"token","plotframeref"),_a265);SxClass.register(PlotParamPlotFrameRef);var _a266,PlotParamViaOnMask=(_a266=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","viasonmask")}},__publicField(_a266,"token","viasonmask"),_a266);SxClass.register(PlotParamViaOnMask);var _a267,PlotParamUseAuxOrigin=(_a267=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","useauxorigin")}},__publicField(_a267,"token","useauxorigin"),_a267);SxClass.register(PlotParamUseAuxOrigin);var _a268,PlotParamPdfFrontFpPropertyPopups=(_a268=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","pdf_front_fp_property_popups")}},__publicField(_a268,"token","pdf_front_fp_property_popups"),_a268);SxClass.register(PlotParamPdfFrontFpPropertyPopups);var _a269,PlotParamPdfBackFpPropertyPopups=(_a269=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","pdf_back_fp_property_popups")}},__publicField(_a269,"token","pdf_back_fp_property_popups"),_a269);SxClass.register(PlotParamPdfBackFpPropertyPopups);var _a270,PlotParamPdfMetadata=(_a270=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","pdf_metadata")}},__publicField(_a270,"token","pdf_metadata"),_a270);SxClass.register(PlotParamPdfMetadata);var _a271,PlotParamPdfSingleDocument=(_a271=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","pdf_single_document")}},__publicField(_a271,"token","pdf_single_document"),_a271);SxClass.register(PlotParamPdfSingleDocument);var _a272,PlotParamDxfPolygonMode=(_a272=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","dxfpolygonmode")}},__publicField(_a272,"token","dxfpolygonmode"),_a272);SxClass.register(PlotParamDxfPolygonMode);var _a273,PlotParamDxfImperialUnits=(_a273=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","dxfimperialunits")}},__publicField(_a273,"token","dxfimperialunits"),_a273);SxClass.register(PlotParamDxfImperialUnits);var _a274,PlotParamDxfUsePcbnewFont=(_a274=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","dxfusepcbnewfont")}},__publicField(_a274,"token","dxfusepcbnewfont"),_a274);SxClass.register(PlotParamDxfUsePcbnewFont);var _a275,PlotParamPsNegative=(_a275=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","psnegative")}},__publicField(_a275,"token","psnegative"),_a275);SxClass.register(PlotParamPsNegative);var _a276,PlotParamPsA4Output=(_a276=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","psa4output")}},__publicField(_a276,"token","psa4output"),_a276);SxClass.register(PlotParamPsA4Output);var _a277,PlotParamPlotReference=(_a277=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","plotreference")}},__publicField(_a277,"token","plotreference"),_a277);SxClass.register(PlotParamPlotReference);var _a278,PlotParamPlotValue=(_a278=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","plotvalue")}},__publicField(_a278,"token","plotvalue"),_a278);SxClass.register(PlotParamPlotValue);var _a279,PlotParamPlotOtherText=(_a279=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","plotothertext")}},__publicField(_a279,"token","plotothertext"),_a279);SxClass.register(PlotParamPlotOtherText);var _a280,PlotParamPlotInvisibleText=(_a280=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","plotinvisibletext")}},__publicField(_a280,"token","plotinvisibletext"),_a280);SxClass.register(PlotParamPlotInvisibleText);var _a281,PlotParamPadOnSilk=(_a281=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","padsonsilk")}},__publicField(_a281,"token","padsonsilk"),_a281);SxClass.register(PlotParamPadOnSilk);var _a282,PlotParamSketchPadsOnFab=(_a282=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","sketchpadsonfab")}},__publicField(_a282,"token","sketchpadsonfab"),_a282);SxClass.register(PlotParamSketchPadsOnFab);var _a283,PlotParamPlotPadNumbers=(_a283=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","plotpadnumbers")}},__publicField(_a283,"token","plotpadnumbers"),_a283);SxClass.register(PlotParamPlotPadNumbers);var _a284,PlotParamHideDnpOnFab=(_a284=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","hidednponfab")}},__publicField(_a284,"token","hidednponfab"),_a284);SxClass.register(PlotParamHideDnpOnFab);var _a285,PlotParamSketchDnpOnFab=(_a285=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","sketchdnponfab")}},__publicField(_a285,"token","sketchdnponfab"),_a285);SxClass.register(PlotParamSketchDnpOnFab);var _a286,PlotParamCrossoutDnpOnFab=(_a286=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","crossoutdnponfab")}},__publicField(_a286,"token","crossoutdnponfab"),_a286);SxClass.register(PlotParamCrossoutDnpOnFab);var _a287,PlotParamSubtractMaskFromSilk=(_a287=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","subtractmaskfromsilk")}},__publicField(_a287,"token","subtractmaskfromsilk"),_a287);SxClass.register(PlotParamSubtractMaskFromSilk);var _a288,PlotParamPlotBlackAndWhite=(_a288=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","plot_black_and_white")}},__publicField(_a288,"token","plot_black_and_white"),_a288);SxClass.register(PlotParamPlotBlackAndWhite);var _a289,PlotParamMirror=(_a289=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","mirror")}},__publicField(_a289,"token","mirror"),_a289);SxClass.register(PlotParamMirror);var _a290,PlotParamOutputDirectory=(_a290=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","outputdirectory");__publicField(this,"quoteStringValue",!0)}},__publicField(_a290,"token","outputdirectory"),_a290);SxClass.register(PlotParamOutputDirectory);var _a291,PlotParamPlotOnAllLayers=(_a291=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","plot_on_all_layers")}},__publicField(_a291,"token","plot_on_all_layers"),_a291);SxClass.register(PlotParamPlotOnAllLayers);var _a292,PlotParamPlotInvisible=(_a292=class extends PlotParamProperty{constructor(){super(...arguments);__publicField(this,"token","plotinvisible")}},__publicField(_a292,"token","plotinvisible"),_a292);SxClass.register(PlotParamPlotInvisible);var TOKEN_TO_KEY={layerselection:"layerselection",plot_on_all_layers_selection:"plot_on_all_layers_selection",disableapertmacros:"disableapertmacros",usegerberextensions:"usegerberextensions",usegerberattributes:"usegerberattributes",usegerberadvancedattributes:"usegerberadvancedattributes",creategerberjobfile:"creategerberjobfile",excludeedgelayer:"excludeedgelayer",dashed_line_dash_ratio:"dashed_line_dash_ratio",dashed_line_gap_ratio:"dashed_line_gap_ratio",svgprecision:"svgprecision",linewidth:"linewidth",plotframeref:"plotframeref",plotreference:"plotreference",plotvalue:"plotvalue",plotothertext:"plotothertext",plotinvisibletext:"plotinvisibletext",padsonsilk:"padsonsilk",sketchpadsonfab:"sketchpadsonfab",plotpadnumbers:"plotpadnumbers",hidednponfab:"hidednponfab",sketchdnponfab:"sketchdnponfab",crossoutdnponfab:"crossoutdnponfab",subtractmaskfromsilk:"subtractmaskfromsilk",plot_black_and_white:"plot_black_and_white",plot_on_all_layers:"plot_on_all_layers",plotinvisible:"plotinvisible",mode:"mode",useauxorigin:"useauxorigin",viasonmask:"viasonmask",hpglpennumber:"hpglpennumber",hpglpenspeed:"hpglpenspeed",hpglpendiameter:"hpglpendiameter",hpglpenoverlay:"hpglpenoverlay",pdf_front_fp_property_popups:"pdf_front_fp_property_popups",pdf_back_fp_property_popups:"pdf_back_fp_property_popups",pdf_metadata:"pdf_metadata",pdf_single_document:"pdf_single_document",dxfpolygonmode:"dxfpolygonmode",dxfimperialunits:"dxfimperialunits",dxfusepcbnewfont:"dxfusepcbnewfont",psnegative:"psnegative",psa4output:"psa4output",mirror:"mirror",outputformat:"outputformat",drillshape:"drillshape",scaleselection:"scaleselection",outputdirectory:"outputdirectory"},PCB_PLOT_PARAM_CHILD_ORDER=["layerselection","plot_on_all_layers_selection","disableapertmacros","usegerberextensions","usegerberattributes","usegerberadvancedattributes","creategerberjobfile","excludeedgelayer","dashed_line_dash_ratio","dashed_line_gap_ratio","svgprecision","linewidth","plotframeref","plotreference","plotvalue","plotothertext","mode","useauxorigin","viasonmask","hpglpennumber","hpglpenspeed","hpglpendiameter","hpglpenoverlay","pdf_front_fp_property_popups","pdf_back_fp_property_popups","pdf_metadata","pdf_single_document","dxfpolygonmode","dxfimperialunits","dxfusepcbnewfont","psnegative","psa4output","plot_black_and_white","plot_on_all_layers","plotinvisible","plotinvisibletext","padsonsilk","sketchpadsonfab","plotpadnumbers","hidednponfab","sketchdnponfab","crossoutdnponfab","subtractmaskfromsilk","outputformat","mirror","drillshape","scaleselection","outputdirectory"],_a293,PcbPlotParams=(_a293=class extends SxClass{constructor(){super(...arguments);__publicField(this,"token","pcbplotparams");__publicField(this,"_properties",{})}static fromSexprPrimitives(primitiveSexprs){let params=new _a293,{propertyMap}=SxClass.parsePrimitivesToClassProperties(primitiveSexprs,this.token);for(let[token,instance]of Object.entries(propertyMap)){let key=TOKEN_TO_KEY[token];if(!key)throw new Error(`Unsupported pcbplotparams token: ${token}`);params._properties[key]=instance}return params}getChildren(){let children=[];for(let key of PCB_PLOT_PARAM_CHILD_ORDER){let child=this._properties[key];child&&children.push(child)}return children}clearProperty(key){delete this._properties[key]}setStringProperty(key,value,ClassRef){if(value===void 0){this.clearProperty(key);return}this._properties[key]=new ClassRef(value)}setNumberProperty(key,value,ClassRef){if(value===void 0){this.clearProperty(key);return}this._properties[key]=new ClassRef(value)}setStringOrNumberProperty(key,value,ClassRef){if(value===void 0){this.clearProperty(key);return}this._properties[key]=new ClassRef(value)}get layerselection(){return this._properties.layerselection?.value}set layerselection(value){this.setStringOrNumberProperty("layerselection",value,PlotParamLayerSelection)}get plot_on_all_layers_selection(){return this._properties.plot_on_all_layers_selection?.value}set plot_on_all_layers_selection(value){this.setStringOrNumberProperty("plot_on_all_layers_selection",value,PlotParamPlotOnAllLayersSelection)}get disableapertmacros(){return this._properties.disableapertmacros?.value}set disableapertmacros(value){this.setStringProperty("disableapertmacros",value,PlotParamDisableApertMacros)}get usegerberextensions(){return this._properties.usegerberextensions?.value}set usegerberextensions(value){this.setStringProperty("usegerberextensions",value,PlotParamUseGerberExtensions)}get usegerberattributes(){return this._properties.usegerberattributes?.value}set usegerberattributes(value){this.setStringProperty("usegerberattributes",value,PlotParamUseGerberAttributes)}get usegerberadvancedattributes(){return this._properties.usegerberadvancedattributes?.value}set usegerberadvancedattributes(value){this.setStringProperty("usegerberadvancedattributes",value,PlotParamUseGerberAdvancedAttributes)}get creategerberjobfile(){return this._properties.creategerberjobfile?.value}set creategerberjobfile(value){this.setStringProperty("creategerberjobfile",value,PlotParamCreateGerberJobFile)}get excludeedgelayer(){return this._properties.excludeedgelayer?.value}set excludeedgelayer(value){this.setStringProperty("excludeedgelayer",value,PlotParamExcludeEdgeLayer)}get dashed_line_dash_ratio(){return this._properties.dashed_line_dash_ratio?.value}set dashed_line_dash_ratio(value){this.setNumberProperty("dashed_line_dash_ratio",value,PlotParamDashedLineDashRatio)}get dashed_line_gap_ratio(){return this._properties.dashed_line_gap_ratio?.value}set dashed_line_gap_ratio(value){this.setNumberProperty("dashed_line_gap_ratio",value,PlotParamDashedLineGapRatio)}get svgprecision(){return this._properties.svgprecision?.value}set svgprecision(value){this.setNumberProperty("svgprecision",value,PlotParamSvgPrecision)}get linewidth(){return this._properties.linewidth?.value}set linewidth(value){this.setNumberProperty("linewidth",value,PlotParamLineWidth)}get plotframeref(){return this._properties.plotframeref?.value}set plotframeref(value){this.setStringProperty("plotframeref",value,PlotParamPlotFrameRef)}get plotreference(){return this._properties.plotreference?.value}set plotreference(value){this.setStringProperty("plotreference",value,PlotParamPlotReference)}get plotvalue(){return this._properties.plotvalue?.value}set plotvalue(value){this.setStringProperty("plotvalue",value,PlotParamPlotValue)}get plotothertext(){return this._properties.plotothertext?.value}set plotothertext(value){this.setStringProperty("plotothertext",value,PlotParamPlotOtherText)}get plotinvisibletext(){return this._properties.plotinvisibletext?.value}set plotinvisibletext(value){this.setStringProperty("plotinvisibletext",value,PlotParamPlotInvisibleText)}get padsonsilk(){return this._properties.padsonsilk?.value}set padsonsilk(value){this.setStringProperty("padsonsilk",value,PlotParamPadOnSilk)}get plotpadnumbers(){return this._properties.plotpadnumbers?.value}set plotpadnumbers(value){this.setStringProperty("plotpadnumbers",value,PlotParamPlotPadNumbers)}get sketchpadsonfab(){return this._properties.sketchpadsonfab?.value}set sketchpadsonfab(value){this.setStringProperty("sketchpadsonfab",value,PlotParamSketchPadsOnFab)}get hidednponfab(){return this._properties.hidednponfab?.value}set hidednponfab(value){this.setStringProperty("hidednponfab",value,PlotParamHideDnpOnFab)}get sketchdnponfab(){return this._properties.sketchdnponfab?.value}set sketchdnponfab(value){this.setStringProperty("sketchdnponfab",value,PlotParamSketchDnpOnFab)}get crossoutdnponfab(){return this._properties.crossoutdnponfab?.value}set crossoutdnponfab(value){this.setStringProperty("crossoutdnponfab",value,PlotParamCrossoutDnpOnFab)}get subtractmaskfromsilk(){return this._properties.subtractmaskfromsilk?.value}set subtractmaskfromsilk(value){this.setStringProperty("subtractmaskfromsilk",value,PlotParamSubtractMaskFromSilk)}get plot_black_and_white(){return this._properties.plot_black_and_white?.value}set plot_black_and_white(value){this.setStringProperty("plot_black_and_white",value,PlotParamPlotBlackAndWhite)}get plot_on_all_layers(){return this._properties.plot_on_all_layers?.value}set plot_on_all_layers(value){this.setStringProperty("plot_on_all_layers",value,PlotParamPlotOnAllLayers)}get plotinvisible(){return this._properties.plotinvisible?.value}set plotinvisible(value){this.setStringProperty("plotinvisible",value,PlotParamPlotInvisible)}get mode(){return this._properties.mode?.value}set mode(value){this.setNumberProperty("mode",value,PlotParamMode)}get useauxorigin(){return this._properties.useauxorigin?.value}set useauxorigin(value){this.setStringProperty("useauxorigin",value,PlotParamUseAuxOrigin)}get viasonmask(){return this._properties.viasonmask?.value}set viasonmask(value){this.setStringProperty("viasonmask",value,PlotParamViaOnMask)}get hpglpennumber(){return this._properties.hpglpennumber?.value}set hpglpennumber(value){this.setNumberProperty("hpglpennumber",value,PlotParamHpglPenNumber)}get hpglpenspeed(){return this._properties.hpglpenspeed?.value}set hpglpenspeed(value){this.setNumberProperty("hpglpenspeed",value,PlotParamHpglPenSpeed)}get hpglpendiameter(){return this._properties.hpglpendiameter?.value}set hpglpendiameter(value){this.setNumberProperty("hpglpendiameter",value,PlotParamHpglPenDiameter)}get hpglpenoverlay(){return this._properties.hpglpenoverlay?.value}set hpglpenoverlay(value){this.setNumberProperty("hpglpenoverlay",value,PlotParamHpglPenOverlay)}get pdf_front_fp_property_popups(){return this._properties.pdf_front_fp_property_popups?.value}set pdf_front_fp_property_popups(value){this.setStringProperty("pdf_front_fp_property_popups",value,PlotParamPdfFrontFpPropertyPopups)}get pdf_back_fp_property_popups(){return this._properties.pdf_back_fp_property_popups?.value}set pdf_back_fp_property_popups(value){this.setStringProperty("pdf_back_fp_property_popups",value,PlotParamPdfBackFpPropertyPopups)}get pdf_metadata(){return this._properties.pdf_metadata?.value}set pdf_metadata(value){this.setStringProperty("pdf_metadata",value,PlotParamPdfMetadata)}get pdf_single_document(){return this._properties.pdf_single_document?.value}set pdf_single_document(value){this.setStringProperty("pdf_single_document",value,PlotParamPdfSingleDocument)}get dxfpolygonmode(){return this._properties.dxfpolygonmode?.value}set dxfpolygonmode(value){this.setStringProperty("dxfpolygonmode",value,PlotParamDxfPolygonMode)}get dxfimperialunits(){return this._properties.dxfimperialunits?.value}set dxfimperialunits(value){this.setStringProperty("dxfimperialunits",value,PlotParamDxfImperialUnits)}get dxfusepcbnewfont(){return this._properties.dxfusepcbnewfont?.value}set dxfusepcbnewfont(value){this.setStringProperty("dxfusepcbnewfont",value,PlotParamDxfUsePcbnewFont)}get psnegative(){return this._properties.psnegative?.value}set psnegative(value){this.setStringProperty("psnegative",value,PlotParamPsNegative)}get psa4output(){return this._properties.psa4output?.value}set psa4output(value){this.setStringProperty("psa4output",value,PlotParamPsA4Output)}get mirror(){return this._properties.mirror?.value}set mirror(value){this.setStringProperty("mirror",value,PlotParamMirror)}get outputformat(){return this._properties.outputformat?.value}set outputformat(value){this.setNumberProperty("outputformat",value,PlotParamOutputFormat)}get drillshape(){return this._properties.drillshape?.value}set drillshape(value){this.setNumberProperty("drillshape",value,PlotParamDrillShape)}get scaleselection(){return this._properties.scaleselection?.value}set scaleselection(value){this.setNumberProperty("scaleselection",value,PlotParamScaleSelection)}get outputdirectory(){return this._properties.outputdirectory?.value}set outputdirectory(value){this.setStringProperty("outputdirectory",value,PlotParamOutputDirectory)}},__publicField(_a293,"token","pcbplotparams"),__publicField(_a293,"parentToken","setup"),_a293);SxClass.register(PcbPlotParams);var _a294,SetupStringProperty=(_a294=class extends SingleValueProperty{},__publicField(_a294,"parentToken","setup"),_a294),_a295,SetupZone45Only=(_a295=class extends SetupStringProperty{constructor(){super(...arguments);__publicField(this,"token","zone_45_only")}},__publicField(_a295,"token","zone_45_only"),_a295);SxClass.register(SetupZone45Only);var _a296,SetupAllowSoldermaskBridgesInFootprints=(_a296=class extends SetupStringProperty{constructor(){super(...arguments);__publicField(this,"token","allow_soldermask_bridges_in_footprints")}},__publicField(_a296,"token","allow_soldermask_bridges_in_footprints"),_a296);SxClass.register(SetupAllowSoldermaskBridgesInFootprints);var _a297,SetupVisibleElements=(_a297=class extends SetupStringProperty{constructor(){super(...arguments);__publicField(this,"token","visible_elements")}},__publicField(_a297,"token","visible_elements"),_a297);SxClass.register(SetupVisibleElements);var _a298,SetupUviasAllowed=(_a298=class extends SetupStringProperty{constructor(){super(...arguments);__publicField(this,"token","uvias_allowed")}},__publicField(_a298,"token","uvias_allowed"),_a298);SxClass.register(SetupUviasAllowed);var _a299,SetupTenting=(_a299=class extends SxClass{constructor(sides=[]){super();__publicField(this,"token","tenting");__publicField(this,"_sides",[]);this.sides=sides}static fromSexprPrimitives(primitiveSexprs){let sides=primitiveSexprs.map(primitive=>toStringValue(primitive)).filter(value=>value!==void 0);return new _a299(sides)}get sides(){return[...this._sides]}set sides(sides){this._sides=sides.map(side=>String(side))}getChildren(){return[]}getString(){return this._sides.length===0?"(tenting)":`(tenting ${this._sides.join(" ")})`}},__publicField(_a299,"token","tenting"),__publicField(_a299,"parentToken","setup"),_a299);SxClass.register(SetupTenting);var _a300,SetupNumericListProperty=(_a300=class extends NumericListProperty{},__publicField(_a300,"parentToken","setup"),_a300),_a301,SetupCoordinateProperty=(_a301=class extends CoordinateProperty{},__publicField(_a301,"parentToken","setup"),_a301),_a302,SetupPcbTextSize=(_a302=class extends SetupNumericListProperty{constructor(){super(...arguments);__publicField(this,"token","pcb_text_size")}},__publicField(_a302,"token","pcb_text_size"),_a302);SxClass.register(SetupPcbTextSize);var _a303,SetupModTextSize=(_a303=class extends SetupNumericListProperty{constructor(){super(...arguments);__publicField(this,"token","mod_text_size")}},__publicField(_a303,"token","mod_text_size"),_a303);SxClass.register(SetupModTextSize);var _a304,SetupPadSize=(_a304=class extends SetupNumericListProperty{constructor(){super(...arguments);__publicField(this,"token","pad_size")}},__publicField(_a304,"token","pad_size"),_a304);SxClass.register(SetupPadSize);var _a305,SetupPadToPasteClearanceValues=(_a305=class extends SetupNumericListProperty{constructor(){super(...arguments);__publicField(this,"token","pad_to_paste_clearance_values")}},__publicField(_a305,"token","pad_to_paste_clearance_values"),_a305);SxClass.register(SetupPadToPasteClearanceValues);var _a306,SetupTraceWidth=(_a306=class extends SetupNumericListProperty{constructor(){super(...arguments);__publicField(this,"token","trace_width")}},__publicField(_a306,"token","trace_width"),_a306);SxClass.register(SetupTraceWidth);var _a307,SetupAuxAxisOrigin=(_a307=class extends SetupCoordinateProperty{constructor(){super(...arguments);__publicField(this,"token","aux_axis_origin")}},__publicField(_a307,"token","aux_axis_origin"),_a307);SxClass.register(SetupAuxAxisOrigin);var _a308,SetupGridOrigin=(_a308=class extends SetupCoordinateProperty{constructor(){super(...arguments);__publicField(this,"token","grid_origin")}},__publicField(_a308,"token","grid_origin"),_a308);SxClass.register(SetupGridOrigin);var _a309,SetupNumberProperty=(_a309=class extends SingleValueProperty{static parsePrimitiveValue(value){let parsed=toNumberValue(value);if(parsed===void 0)throw new Error(`${this.name} expects a numeric value`);return parsed}},__publicField(_a309,"parentToken","setup"),_a309),_a310,SetupPadToMaskClearance=(_a310=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","pad_to_mask_clearance")}},__publicField(_a310,"token","pad_to_mask_clearance"),_a310);SxClass.register(SetupPadToMaskClearance);var _a311,SetupSolderMaskMinWidth=(_a311=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","solder_mask_min_width")}},__publicField(_a311,"token","solder_mask_min_width"),_a311);SxClass.register(SetupSolderMaskMinWidth);var _a312,SetupPadToPasteClearance=(_a312=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","pad_to_paste_clearance")}},__publicField(_a312,"token","pad_to_paste_clearance"),_a312);SxClass.register(SetupPadToPasteClearance);var _a313,SetupPadToPasteClearanceRatio=(_a313=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","pad_to_paste_clearance_ratio")}},__publicField(_a313,"token","pad_to_paste_clearance_ratio"),_a313);SxClass.register(SetupPadToPasteClearanceRatio);var _a314,SetupLastTraceWidth=(_a314=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","last_trace_width")}},__publicField(_a314,"token","last_trace_width"),_a314);SxClass.register(SetupLastTraceWidth);var _a315,SetupTraceClearance=(_a315=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","trace_clearance")}},__publicField(_a315,"token","trace_clearance"),_a315);SxClass.register(SetupTraceClearance);var _a316,SetupZoneClearance=(_a316=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","zone_clearance")}},__publicField(_a316,"token","zone_clearance"),_a316);SxClass.register(SetupZoneClearance);var _a317,SetupTraceMin=(_a317=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","trace_min")}},__publicField(_a317,"token","trace_min"),_a317);SxClass.register(SetupTraceMin);var _a318,SetupSegmentWidth=(_a318=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","segment_width")}},__publicField(_a318,"token","segment_width"),_a318);SxClass.register(SetupSegmentWidth);var _a319,SetupEdgeWidth=(_a319=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","edge_width")}},__publicField(_a319,"token","edge_width"),_a319);SxClass.register(SetupEdgeWidth);var _a320,SetupViaSize=(_a320=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","via_size")}},__publicField(_a320,"token","via_size"),_a320);SxClass.register(SetupViaSize);var _a321,SetupViaDrill=(_a321=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","via_drill")}},__publicField(_a321,"token","via_drill"),_a321);SxClass.register(SetupViaDrill);var _a322,SetupViaMinSize=(_a322=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","via_min_size")}},__publicField(_a322,"token","via_min_size"),_a322);SxClass.register(SetupViaMinSize);var _a323,SetupViaMinDrill=(_a323=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","via_min_drill")}},__publicField(_a323,"token","via_min_drill"),_a323);SxClass.register(SetupViaMinDrill);var _a324,SetupUviaSize=(_a324=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","uvia_size")}},__publicField(_a324,"token","uvia_size"),_a324);SxClass.register(SetupUviaSize);var _a325,SetupUviaDrill=(_a325=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","uvia_drill")}},__publicField(_a325,"token","uvia_drill"),_a325);SxClass.register(SetupUviaDrill);var _a326,SetupUviaMinSize=(_a326=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","uvia_min_size")}},__publicField(_a326,"token","uvia_min_size"),_a326);SxClass.register(SetupUviaMinSize);var _a327,SetupUviaMinDrill=(_a327=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","uvia_min_drill")}},__publicField(_a327,"token","uvia_min_drill"),_a327);SxClass.register(SetupUviaMinDrill);var _a328,SetupPcbTextWidth=(_a328=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","pcb_text_width")}},__publicField(_a328,"token","pcb_text_width"),_a328);SxClass.register(SetupPcbTextWidth);var _a329,SetupModEdgeWidth=(_a329=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","mod_edge_width")}},__publicField(_a329,"token","mod_edge_width"),_a329);SxClass.register(SetupModEdgeWidth);var _a330,SetupModTextWidth=(_a330=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","mod_text_width")}},__publicField(_a330,"token","mod_text_width"),_a330);SxClass.register(SetupModTextWidth);var _a331,SetupPadDrill=(_a331=class extends SetupNumberProperty{constructor(){super(...arguments);__publicField(this,"token","pad_drill")}},__publicField(_a331,"token","pad_drill"),_a331);SxClass.register(SetupPadDrill);var _a332,StackupSingleValueProperty=(_a332=class extends SingleValueProperty{},__publicField(_a332,"parentToken","stackup"),_a332),_a333,StackupCopperFinish=(_a333=class extends StackupSingleValueProperty{constructor(){super(...arguments);__publicField(this,"token","copper_finish");__publicField(this,"quoteStringValue",!0)}},__publicField(_a333,"token","copper_finish"),_a333);SxClass.register(StackupCopperFinish);var _a334,StackupDielectricConstraints=(_a334=class extends StackupSingleValueProperty{constructor(){super(...arguments);__publicField(this,"token","dielectric_constraints")}},__publicField(_a334,"token","dielectric_constraints"),_a334);SxClass.register(StackupDielectricConstraints);var _a335,StackupEdgeConnector=(_a335=class extends StackupSingleValueProperty{constructor(){super(...arguments);__publicField(this,"token","edge_connector")}},__publicField(_a335,"token","edge_connector"),_a335);SxClass.register(StackupEdgeConnector);var _a336,StackupCastellatedPads=(_a336=class extends StackupSingleValueProperty{constructor(){super(...arguments);__publicField(this,"token","castellated_pads")}},__publicField(_a336,"token","castellated_pads"),_a336);SxClass.register(StackupCastellatedPads);var _a337,StackupEdgePlating=(_a337=class extends StackupSingleValueProperty{constructor(){super(...arguments);__publicField(this,"token","edge_plating")}},__publicField(_a337,"token","edge_plating"),_a337);SxClass.register(StackupEdgePlating);var _a338,StackupLayerProperty=(_a338=class extends SingleValueProperty{},__publicField(_a338,"parentToken","layer"),_a338),_a339,StackupLayerType=(_a339=class extends StackupLayerProperty{constructor(){super(...arguments);__publicField(this,"token","type");__publicField(this,"quoteStringValue",!0)}},__publicField(_a339,"token","type"),_a339);SxClass.register(StackupLayerType);var _a340,StackupLayerColor=(_a340=class extends StackupLayerProperty{constructor(){super(...arguments);__publicField(this,"token","color");__publicField(this,"quoteStringValue",!0)}},__publicField(_a340,"token","color"),_a340);SxClass.register(StackupLayerColor);var _a341,StackupLayerThickness=(_a341=class extends StackupLayerProperty{constructor(){super(...arguments);__publicField(this,"token","thickness")}static parsePrimitiveValue(value){let parsed=toNumberValue(value);if(parsed===void 0)throw new Error("Stackup layer thickness expects a numeric value");return parsed}},__publicField(_a341,"token","thickness"),_a341);SxClass.register(StackupLayerThickness);var _a342,StackupLayerMaterial=(_a342=class extends StackupLayerProperty{constructor(){super(...arguments);__publicField(this,"token","material");__publicField(this,"quoteStringValue",!0)}},__publicField(_a342,"token","material"),_a342);SxClass.register(StackupLayerMaterial);var _a343,StackupLayerEpsilonR=(_a343=class extends StackupLayerProperty{constructor(){super(...arguments);__publicField(this,"token","epsilon_r")}static parsePrimitiveValue(value){let parsed=toNumberValue(value);if(parsed===void 0)throw new Error("Stackup layer epsilon_r expects a numeric value");return parsed}},__publicField(_a343,"token","epsilon_r"),_a343);SxClass.register(StackupLayerEpsilonR);var _a344,StackupLayerLossTangent=(_a344=class extends StackupLayerProperty{constructor(){super(...arguments);__publicField(this,"token","loss_tangent")}static parsePrimitiveValue(value){let parsed=toNumberValue(value);if(parsed===void 0)throw new Error("Stackup layer loss_tangent expects a numeric value");return parsed}},__publicField(_a344,"token","loss_tangent"),_a344);SxClass.register(StackupLayerLossTangent);var _a345,StackupLayer=(_a345=class extends SxClass{constructor(name,opts={}){super();__publicField(this,"token","layer");__publicField(this,"_name");__publicField(this,"_number");__publicField(this,"_sxType");__publicField(this,"_sxColor");__publicField(this,"_sxThickness");__publicField(this,"_sxMaterial");__publicField(this,"_sxEpsilonR");__publicField(this,"_sxLossTangent");this._name=name,this._number=opts.number,this._sxType=opts.type,this._sxColor=opts.color,this._sxThickness=opts.thickness,this._sxMaterial=opts.material,this._sxEpsilonR=opts.epsilonR,this._sxLossTangent=opts.lossTangent}static fromSexprPrimitives(primitiveSexprs){if(primitiveSexprs.length===0)throw new Error("Stackup layer requires at least a name");let name=toStringValue(primitiveSexprs[0]);if(name===void 0)throw new Error("Stackup layer name must be a string");let propertyIndex=1,number,maybeNumber=primitiveSexprs[propertyIndex],numericLayerNumber=toNumberValue(maybeNumber);numericLayerNumber!==void 0&&(number=numericLayerNumber,propertyIndex+=1);let propertyPrimitives=primitiveSexprs.slice(propertyIndex),{propertyMap}=SxClass.parsePrimitivesToClassProperties(propertyPrimitives,this.token);return new _a345(name,{number,type:propertyMap.type,color:propertyMap.color,thickness:propertyMap.thickness,material:propertyMap.material,epsilonR:propertyMap.epsilon_r,lossTangent:propertyMap.loss_tangent})}get name(){return this._name}set name(value){let parsed=toStringValue(value);if(parsed===void 0)throw new Error("Stackup layer name must be a string");this._name=parsed}get number(){return this._number}set number(value){if(value===void 0){this._number=void 0;return}let parsed=toNumberValue(value);if(parsed===void 0)throw new Error("Stackup layer number must be numeric");this._number=parsed}get type(){return this._sxType?.value}set type(value){if(value===void 0){this._sxType=void 0;return}this._sxType=value instanceof StackupLayerType?value:new StackupLayerType(value)}get color(){return this._sxColor?.value}set color(value){if(value===void 0){this._sxColor=void 0;return}this._sxColor=value instanceof StackupLayerColor?value:new StackupLayerColor(value)}get thickness(){return this._sxThickness?.value}set thickness(value){if(value===void 0){this._sxThickness=void 0;return}this._sxThickness=value instanceof StackupLayerThickness?value:new StackupLayerThickness(value)}get material(){return this._sxMaterial?.value}set material(value){if(value===void 0){this._sxMaterial=void 0;return}this._sxMaterial=value instanceof StackupLayerMaterial?value:new StackupLayerMaterial(value)}get epsilonR(){return this._sxEpsilonR?.value}set epsilonR(value){if(value===void 0){this._sxEpsilonR=void 0;return}this._sxEpsilonR=value instanceof StackupLayerEpsilonR?value:new StackupLayerEpsilonR(value)}get lossTangent(){return this._sxLossTangent?.value}set lossTangent(value){if(value===void 0){this._sxLossTangent=void 0;return}this._sxLossTangent=value instanceof StackupLayerLossTangent?value:new StackupLayerLossTangent(value)}getChildren(){let children=[];return this._sxType&&children.push(this._sxType),this._sxColor&&children.push(this._sxColor),this._sxThickness&&children.push(this._sxThickness),this._sxMaterial&&children.push(this._sxMaterial),this._sxEpsilonR&&children.push(this._sxEpsilonR),this._sxLossTangent&&children.push(this._sxLossTangent),children}getString(){let header=`(layer ${quoteSExprString(this._name)}${this._number!==void 0?` ${this._number}`:""}`,children=this.getChildren();if(children.length===0)return`${header})`;let lines=[header];for(let child of children)lines.push(child.getStringIndented());return lines.push(")"),lines.join(`
828
828
  `)}},__publicField(_a345,"token","layer"),__publicField(_a345,"parentToken","stackup"),_a345);SxClass.register(StackupLayer);var _a346,Stackup=(_a346=class extends SxClass{constructor(opts={}){super();__publicField(this,"token","stackup");__publicField(this,"_layers",[]);__publicField(this,"_sxCopperFinish");__publicField(this,"_sxDielectricConstraints");__publicField(this,"_sxEdgeConnector");__publicField(this,"_sxCastellatedPads");__publicField(this,"_sxEdgePlating");this.layers=opts.layers??[],this._sxCopperFinish=opts.copperFinish,this._sxDielectricConstraints=opts.dielectricConstraints,this._sxEdgeConnector=opts.edgeConnector,this._sxCastellatedPads=opts.castellatedPads,this._sxEdgePlating=opts.edgePlating}static fromSexprPrimitives(primitiveSexprs){let{propertyMap,arrayPropertyMap}=SxClass.parsePrimitivesToClassProperties(primitiveSexprs,this.token);return new _a346({layers:arrayPropertyMap.layer??[],copperFinish:propertyMap.copper_finish,dielectricConstraints:propertyMap.dielectric_constraints,edgeConnector:propertyMap.edge_connector,castellatedPads:propertyMap.castellated_pads,edgePlating:propertyMap.edge_plating})}get layers(){return[...this._layers]}set layers(layers){this._layers=layers.map(layer=>{if(!(layer instanceof StackupLayer))throw new Error("Stackup layers must be StackupLayer instances");return layer})}get copperFinish(){return this._sxCopperFinish?.value}set copperFinish(value){this._sxCopperFinish=value?new StackupCopperFinish(value):void 0}get dielectricConstraints(){return this._sxDielectricConstraints?.value}set dielectricConstraints(value){this._sxDielectricConstraints=value?new StackupDielectricConstraints(value):void 0}get edgeConnector(){return this._sxEdgeConnector?.value}set edgeConnector(value){this._sxEdgeConnector=value?new StackupEdgeConnector(value):void 0}get castellatedPads(){return this._sxCastellatedPads?.value}set castellatedPads(value){this._sxCastellatedPads=value?new StackupCastellatedPads(value):void 0}get edgePlating(){return this._sxEdgePlating?.value}set edgePlating(value){this._sxEdgePlating=value?new StackupEdgePlating(value):void 0}getChildren(){let children=[...this._layers],optionalChildren=[this._sxCopperFinish,this._sxDielectricConstraints,this._sxEdgeConnector,this._sxCastellatedPads,this._sxEdgePlating];for(let child of optionalChildren)child&&children.push(child);return children}},__publicField(_a346,"token","stackup"),__publicField(_a346,"parentToken","setup"),_a346);SxClass.register(Stackup);var TOKEN_TO_KEY2={stackup:"stackup",pcbplotparams:"pcbPlotParams",pad_to_mask_clearance:"padToMaskClearance",solder_mask_min_width:"solderMaskMinWidth",pad_to_paste_clearance:"padToPasteClearance",pad_to_paste_clearance_ratio:"padToPasteClearanceRatio",last_trace_width:"lastTraceWidth",trace_clearance:"traceClearance",zone_clearance:"zoneClearance",zone_45_only:"zone45Only",trace_min:"traceMin",segment_width:"segmentWidth",edge_width:"edgeWidth",via_size:"viaSize",via_drill:"viaDrill",via_min_size:"viaMinSize",via_min_drill:"viaMinDrill",uvias_allowed:"uviasAllowed",uvia_size:"uviaSize",uvia_drill:"uviaDrill",uvia_min_size:"uviaMinSize",uvia_min_drill:"uviaMinDrill",pcb_text_width:"pcbTextWidth",pcb_text_size:"pcbTextSize",mod_edge_width:"modEdgeWidth",mod_text_size:"modTextSize",mod_text_width:"modTextWidth",pad_size:"padSize",pad_drill:"padDrill",allow_soldermask_bridges_in_footprints:"allowSoldermaskBridgesInFootprints",tenting:"tenting",aux_axis_origin:"auxAxisOrigin",grid_origin:"gridOrigin",visible_elements:"visibleElements",pad_to_paste_clearance_values:"padToPasteClearanceValues",trace_width:"traceWidth"},SETUP_CHILD_ORDER=["stackup","padToMaskClearance","solderMaskMinWidth","padToPasteClearance","padToPasteClearanceRatio","lastTraceWidth","traceClearance","zoneClearance","zone45Only","traceMin","segmentWidth","edgeWidth","viaSize","viaDrill","viaMinSize","viaMinDrill","uviaSize","uviaDrill","uviasAllowed","uviaMinSize","uviaMinDrill","pcbTextWidth","pcbTextSize","modEdgeWidth","modTextSize","modTextWidth","padSize","padDrill","allowSoldermaskBridgesInFootprints","tenting","auxAxisOrigin","gridOrigin","visibleElements","padToPasteClearanceValues","traceWidth","pcbPlotParams"],_a347,Setup=(_a347=class extends SxClass{constructor(){super(...arguments);__publicField(this,"token","setup");__publicField(this,"_properties",{})}static fromSexprPrimitives(primitiveSexprs){let setup=new _a347,{propertyMap}=SxClass.parsePrimitivesToClassProperties(primitiveSexprs,this.token);for(let[token,instance]of Object.entries(propertyMap)){let key=TOKEN_TO_KEY2[token];if(!key)throw new Error(`Unsupported setup property token: ${token}`);setup._properties[key]=instance}return setup}getChildren(){let children=[];for(let key of SETUP_CHILD_ORDER){let child=this._properties[key];child&&children.push(child)}return children}setProperty(key,instance){if(instance){this._properties[key]=instance;return}delete this._properties[key]}setNumberProperty(key,value,ClassRef){if(value===void 0){delete this._properties[key];return}this._properties[key]=new ClassRef(value)}getPropertyInstance(key,ClassRef){let value=this._properties[key];return value instanceof ClassRef?value:void 0}get stackup(){return this.getPropertyInstance("stackup",Stackup)}set stackup(value){if(value!==void 0&&!(value instanceof Stackup))throw new Error("stackup must be a Stackup instance");this.setProperty("stackup",value)}get pcbPlotParams(){return this.getPropertyInstance("pcbPlotParams",PcbPlotParams)}set pcbPlotParams(value){if(value!==void 0&&!(value instanceof PcbPlotParams))throw new Error("pcbPlotParams must be a PcbPlotParams instance");this.setProperty("pcbPlotParams",value)}get padToMaskClearance(){return this.getPropertyInstance("padToMaskClearance",SetupPadToMaskClearance)?.value}set padToMaskClearance(value){this.setNumberProperty("padToMaskClearance",value,SetupPadToMaskClearance)}get solderMaskMinWidth(){return this.getPropertyInstance("solderMaskMinWidth",SetupSolderMaskMinWidth)?.value}set solderMaskMinWidth(value){this.setNumberProperty("solderMaskMinWidth",value,SetupSolderMaskMinWidth)}get padToPasteClearance(){return this.getPropertyInstance("padToPasteClearance",SetupPadToPasteClearance)?.value}set padToPasteClearance(value){this.setNumberProperty("padToPasteClearance",value,SetupPadToPasteClearance)}get padToPasteClearanceRatio(){return this.getPropertyInstance("padToPasteClearanceRatio",SetupPadToPasteClearanceRatio)?.value}set padToPasteClearanceRatio(value){this.setNumberProperty("padToPasteClearanceRatio",value,SetupPadToPasteClearanceRatio)}get lastTraceWidth(){return this.getPropertyInstance("lastTraceWidth",SetupLastTraceWidth)?.value}set lastTraceWidth(value){this.setNumberProperty("lastTraceWidth",value,SetupLastTraceWidth)}get traceClearance(){return this.getPropertyInstance("traceClearance",SetupTraceClearance)?.value}set traceClearance(value){this.setNumberProperty("traceClearance",value,SetupTraceClearance)}get zoneClearance(){return this.getPropertyInstance("zoneClearance",SetupZoneClearance)?.value}set zoneClearance(value){this.setNumberProperty("zoneClearance",value,SetupZoneClearance)}get zone45Only(){return this.getPropertyInstance("zone45Only",SetupZone45Only)?.value}set zone45Only(value){this.setProperty("zone45Only",value===void 0?void 0:new SetupZone45Only(value))}get traceMin(){return this.getPropertyInstance("traceMin",SetupTraceMin)?.value}set traceMin(value){this.setNumberProperty("traceMin",value,SetupTraceMin)}get segmentWidth(){return this.getPropertyInstance("segmentWidth",SetupSegmentWidth)?.value}set segmentWidth(value){this.setNumberProperty("segmentWidth",value,SetupSegmentWidth)}get edgeWidth(){return this.getPropertyInstance("edgeWidth",SetupEdgeWidth)?.value}set edgeWidth(value){this.setNumberProperty("edgeWidth",value,SetupEdgeWidth)}get viaSize(){return this.getPropertyInstance("viaSize",SetupViaSize)?.value}set viaSize(value){this.setNumberProperty("viaSize",value,SetupViaSize)}get viaDrill(){return this.getPropertyInstance("viaDrill",SetupViaDrill)?.value}set viaDrill(value){this.setNumberProperty("viaDrill",value,SetupViaDrill)}get viaMinSize(){return this.getPropertyInstance("viaMinSize",SetupViaMinSize)?.value}set viaMinSize(value){this.setNumberProperty("viaMinSize",value,SetupViaMinSize)}get viaMinDrill(){return this.getPropertyInstance("viaMinDrill",SetupViaMinDrill)?.value}set viaMinDrill(value){this.setNumberProperty("viaMinDrill",value,SetupViaMinDrill)}get uviasAllowed(){return this.getPropertyInstance("uviasAllowed",SetupUviasAllowed)?.value}set uviasAllowed(value){this.setProperty("uviasAllowed",value===void 0?void 0:new SetupUviasAllowed(value))}get uviaSize(){return this.getPropertyInstance("uviaSize",SetupUviaSize)?.value}set uviaSize(value){this.setNumberProperty("uviaSize",value,SetupUviaSize)}get uviaDrill(){return this.getPropertyInstance("uviaDrill",SetupUviaDrill)?.value}set uviaDrill(value){this.setNumberProperty("uviaDrill",value,SetupUviaDrill)}get uviaMinSize(){return this.getPropertyInstance("uviaMinSize",SetupUviaMinSize)?.value}set uviaMinSize(value){this.setNumberProperty("uviaMinSize",value,SetupUviaMinSize)}get uviaMinDrill(){return this.getPropertyInstance("uviaMinDrill",SetupUviaMinDrill)?.value}set uviaMinDrill(value){this.setNumberProperty("uviaMinDrill",value,SetupUviaMinDrill)}get pcbTextWidth(){return this.getPropertyInstance("pcbTextWidth",SetupPcbTextWidth)?.value}set pcbTextWidth(value){this.setNumberProperty("pcbTextWidth",value,SetupPcbTextWidth)}get pcbTextSize(){return this.getPropertyInstance("pcbTextSize",SetupPcbTextSize)?.values}set pcbTextSize(values){if(values===void 0){delete this._properties.pcbTextSize;return}this.setProperty("pcbTextSize",new SetupPcbTextSize(values))}get modEdgeWidth(){return this.getPropertyInstance("modEdgeWidth",SetupModEdgeWidth)?.value}set modEdgeWidth(value){this.setNumberProperty("modEdgeWidth",value,SetupModEdgeWidth)}get modTextSize(){return this.getPropertyInstance("modTextSize",SetupModTextSize)?.values}set modTextSize(values){if(values===void 0){delete this._properties.modTextSize;return}this.setProperty("modTextSize",new SetupModTextSize(values))}get modTextWidth(){return this.getPropertyInstance("modTextWidth",SetupModTextWidth)?.value}set modTextWidth(value){this.setNumberProperty("modTextWidth",value,SetupModTextWidth)}get padSize(){return this.getPropertyInstance("padSize",SetupPadSize)?.values}set padSize(values){if(values===void 0){delete this._properties.padSize;return}this.setProperty("padSize",new SetupPadSize(values))}get padDrill(){return this.getPropertyInstance("padDrill",SetupPadDrill)?.value}set padDrill(value){this.setNumberProperty("padDrill",value,SetupPadDrill)}get allowSoldermaskBridgesInFootprints(){return this.getPropertyInstance("allowSoldermaskBridgesInFootprints",SetupAllowSoldermaskBridgesInFootprints)?.value}set allowSoldermaskBridgesInFootprints(value){this.setProperty("allowSoldermaskBridgesInFootprints",value===void 0?void 0:new SetupAllowSoldermaskBridgesInFootprints(value))}get tenting(){return this.getPropertyInstance("tenting",SetupTenting)?.sides}set tenting(sides){if(sides===void 0){delete this._properties.tenting;return}this.setProperty("tenting",new SetupTenting(sides))}get auxAxisOrigin(){let origin=this.getPropertyInstance("auxAxisOrigin",SetupAuxAxisOrigin);if(origin)return{x:origin.x,y:origin.y}}set auxAxisOrigin(origin){if(!origin){delete this._properties.auxAxisOrigin;return}this.setProperty("auxAxisOrigin",new SetupAuxAxisOrigin(origin.x,origin.y))}get gridOrigin(){let origin=this.getPropertyInstance("gridOrigin",SetupGridOrigin);if(origin)return{x:origin.x,y:origin.y}}set gridOrigin(origin){if(!origin){delete this._properties.gridOrigin;return}this.setProperty("gridOrigin",new SetupGridOrigin(origin.x,origin.y))}get visibleElements(){return this.getPropertyInstance("visibleElements",SetupVisibleElements)?.value}set visibleElements(value){this.setProperty("visibleElements",value===void 0?void 0:new SetupVisibleElements(value))}get padToPasteClearanceValues(){return this.getPropertyInstance("padToPasteClearanceValues",SetupPadToPasteClearanceValues)?.values}set padToPasteClearanceValues(values){if(values===void 0){delete this._properties.padToPasteClearanceValues;return}this.setProperty("padToPasteClearanceValues",new SetupPadToPasteClearanceValues(values))}get traceWidth(){return this.getPropertyInstance("traceWidth",SetupTraceWidth)?.values}set traceWidth(values){if(values===void 0){delete this._properties.traceWidth;return}this.setProperty("traceWidth",new SetupTraceWidth(values))}},__publicField(_a347,"token","setup"),_a347);SxClass.register(Setup);var _a348,PcbGeneralThickness=(_a348=class extends SxPrimitiveNumber{constructor(){super(...arguments);__publicField(this,"token","thickness")}},__publicField(_a348,"token","thickness"),__publicField(_a348,"parentToken","general"),_a348);SxClass.register(PcbGeneralThickness);var _a349,PcbGeneralLegacyTeardrops=(_a349=class extends SxClass{constructor(enabled){super();__publicField(this,"token","legacy_teardrops");__publicField(this,"_enabled");this._enabled=enabled}static fromSexprPrimitives(primitiveSexprs){let value=toStringValue(primitiveSexprs[0]);if(value===void 0)throw new Error("legacy_teardrops expects a string value");let enabled=/^(yes|true)$/iu.test(value);return new _a349(enabled)}get enabled(){return this._enabled}set enabled(value){this._enabled=value}getChildren(){return[]}getString(){return`(legacy_teardrops ${this._enabled?"yes":"no"})`}},__publicField(_a349,"token","legacy_teardrops"),__publicField(_a349,"parentToken","general"),_a349);SxClass.register(PcbGeneralLegacyTeardrops);var SINGLE_TOKENS3=new Set(["thickness","legacy_teardrops"]),_a350,PcbGeneral=(_a350=class extends SxClass{constructor(){super(...arguments);__publicField(this,"token","general");__publicField(this,"_sxThickness");__publicField(this,"_sxLegacyTeardrops")}static fromSexprPrimitives(primitiveSexprs){let general=new _a350,{propertyMap,arrayPropertyMap}=SxClass.parsePrimitivesToClassProperties(primitiveSexprs,this.token);for(let token of Object.keys(propertyMap))if(!SINGLE_TOKENS3.has(token))throw new Error(`general encountered unsupported child token "${token}"`);for(let[token,entries]of Object.entries(arrayPropertyMap)){if(!SINGLE_TOKENS3.has(token))throw new Error(`general encountered unsupported child token "${token}"`);if(entries.length>1)throw new Error(`general encountered repeated child token "${token}"`)}return general._sxThickness=arrayPropertyMap.thickness?.[0]??propertyMap.thickness,general._sxLegacyTeardrops=arrayPropertyMap.legacy_teardrops?.[0]??propertyMap.legacy_teardrops,general}get thickness(){return this._sxThickness?.value}set thickness(value){this._sxThickness=value===void 0?void 0:new PcbGeneralThickness(value)}get legacyTeardrops(){return this._sxLegacyTeardrops?.enabled}set legacyTeardrops(value){if(value===void 0){this._sxLegacyTeardrops=void 0;return}this._sxLegacyTeardrops=new PcbGeneralLegacyTeardrops(value)}getChildren(){let children=[];return this._sxThickness&&children.push(this._sxThickness),this._sxLegacyTeardrops&&children.push(this._sxLegacyTeardrops),children}},__publicField(_a350,"token","general"),__publicField(_a350,"parentToken","kicad_pcb"),_a350);SxClass.register(PcbGeneral);var _a351,PcbLayerDefinition=(_a351=class extends SxClass{constructor(options){super();__publicField(this,"token","__pcb_layer_definition__");__publicField(this,"_index");__publicField(this,"_name");__publicField(this,"_type");__publicField(this,"_userName");this._index=options.index,this._name=options.name,this._type=options.type,this._userName=options.userName}static fromPrimitive(primitive){if(!Array.isArray(primitive)||primitive.length<3)throw new Error(`layers entry must be an array with at least index, name, and type: ${JSON.stringify(primitive)}`);let[rawIndex,rawName,rawType,rawUser]=primitive,index=toNumberValue(rawIndex),name=toStringValue(rawName),type=toStringValue(rawType),userName=rawUser===void 0?void 0:toStringValue(rawUser);if(index===void 0||name===void 0||type===void 0)throw new Error(`layers entry is missing required values: ${JSON.stringify(primitive)}`);return new _a351({index,name,type,userName})}get index(){return this._index}set index(value){this._index=value}get name(){return this._name}set name(value){this._name=value}get type(){return this._type}set type(value){this._type=value}get userName(){return this._userName}set userName(value){this._userName=value}getChildren(){return[]}getString(){if(this._index===void 0||this._name===void 0||this._type===void 0)return"()";let tokens=[String(this._index),quoteSExprString(this._name),this._type];return this._userName!==void 0&&tokens.push(quoteSExprString(this._userName)),`(${tokens.join(" ")})`}},__publicField(_a351,"token","__pcb_layer_definition__"),__publicField(_a351,"parentToken","layers"),_a351);SxClass.register(PcbLayerDefinition);var _a352,PcbLayers=(_a352=class extends SxClass{constructor(){super(...arguments);__publicField(this,"token","layers");__publicField(this,"_definitions",[])}static fromSexprPrimitives(primitiveSexprs){let layers=new _a352;return layers._definitions=primitiveSexprs.map(primitive=>PcbLayerDefinition.fromPrimitive(primitive)),layers}get definitions(){return[...this._definitions]}set definitions(value){this._definitions=[...value]}getChildren(){return[...this._definitions]}},__publicField(_a352,"token","layers"),__publicField(_a352,"parentToken","kicad_pcb"),_a352);SxClass.register(PcbLayers);var _a353,PcbNet=(_a353=class extends SxClass{constructor(id2,name){super();__publicField(this,"token","net");__publicField(this,"_id");__publicField(this,"_name");this._id=id2,this._name=name}static fromSexprPrimitives(primitiveSexprs){let id2=toNumberValue(primitiveSexprs[0]),name=toStringValue(primitiveSexprs[1]);if(id2===void 0||name===void 0)throw new Error("net requires numeric id and string name");return new _a353(id2,name)}get id(){return this._id}set id(value){this._id=value}get name(){return this._name}set name(value){this._name=value}getChildren(){return[]}getString(){return`(net ${this._id} ${quoteSExprString(this._name)})`}},__publicField(_a353,"token","net"),__publicField(_a353,"parentToken","kicad_pcb"),_a353);SxClass.register(PcbNet);var _a354,PcbVersion=(_a354=class extends SxPrimitiveNumber{constructor(){super(...arguments);__publicField(this,"token","version")}},__publicField(_a354,"token","version"),__publicField(_a354,"parentToken","kicad_pcb"),_a354);SxClass.register(PcbVersion);var isSymbol=value=>/^[A-Za-z0-9._-]+$/.test(value),_a355,PcbGenerator=(_a355=class extends SxPrimitiveString{constructor(){super(...arguments);__publicField(this,"token","generator")}getString(){return`(generator ${isSymbol(this.value)?this.value:quoteSExprString(this.value)})`}},__publicField(_a355,"token","generator"),__publicField(_a355,"parentToken","kicad_pcb"),_a355);SxClass.register(PcbGenerator);var isSymbol2=value=>/^[A-Za-z0-9._-]+$/.test(value),_a356,PcbGeneratorVersion=(_a356=class extends SxPrimitiveString{constructor(){super(...arguments);__publicField(this,"token","generator_version")}getString(){return`(generator_version ${isSymbol2(this.value)?this.value:quoteSExprString(this.value)})`}},__publicField(_a356,"token","generator_version"),__publicField(_a356,"parentToken","kicad_pcb"),_a356);SxClass.register(PcbGeneratorVersion);var _a357,ViaNet=(_a357=class extends SxClass{constructor(id2,name){super();__publicField(this,"token","net");__publicField(this,"_id");__publicField(this,"_name");this._id=id2,this._name=name}static fromSexprPrimitives(primitiveSexprs){let id2=toNumberValue(primitiveSexprs[0]);if(id2===void 0)throw new Error("via net requires a numeric id");let name=primitiveSexprs.length>1?toStringValue(primitiveSexprs[1]):void 0;return new _a357(id2,name)}get id(){return this._id}set id(value){this._id=value}get name(){return this._name}set name(value){this._name=value}getChildren(){return[]}getString(){return this._name!==void 0?`(net ${this._id} ${quoteSExprString(this._name)})`:`(net ${this._id})`}},__publicField(_a357,"token","net"),__publicField(_a357,"parentToken","via"),_a357);SxClass.register(ViaNet);var BARE_FLAGS=new Set(["locked","free","remove_unused_layers","keep_end_layers"]),_a358,Via2=(_a358=class extends SxClass{constructor(params={}){super();__publicField(this,"token","via");__publicField(this,"_type");__publicField(this,"_locked",!1);__publicField(this,"_free",!1);__publicField(this,"_removeUnusedLayers",!1);__publicField(this,"_keepEndLayers",!1);__publicField(this,"_sxAt");__publicField(this,"_size");__publicField(this,"_drill");__publicField(this,"_sxLayers");__publicField(this,"_sxNet");__publicField(this,"_sxUuid");__publicField(this,"_sxTstamp");__publicField(this,"_sxTeardrops");params.type!==void 0&&(this.type=params.type),params.locked!==void 0&&(this.locked=params.locked),params.free!==void 0&&(this.free=params.free),params.removeUnusedLayers!==void 0&&(this.removeUnusedLayers=params.removeUnusedLayers),params.keepEndLayers!==void 0&&(this.keepEndLayers=params.keepEndLayers),params.at!==void 0&&(this.at=params.at),params.size!==void 0&&(this.size=params.size),params.drill!==void 0&&(this.drill=params.drill),params.layers!==void 0&&(this.layers=params.layers),params.net!==void 0&&(this.net=params.net),params.uuid!==void 0&&(this.uuid=params.uuid),params.tstamp!==void 0&&(this.tstamp=params.tstamp),params.teardrops!==void 0&&(this.teardrops=params.teardrops)}static fromSexprPrimitives(primitiveSexprs){let via=new _a358;for(let primitive of primitiveSexprs){if(typeof primitive=="string"){via.consumeBareToken(primitive);continue}if(!Array.isArray(primitive)||primitive.length===0)throw new Error(`via encountered unsupported primitive child: ${JSON.stringify(primitive)}`);let[token,...rest]=primitive;if(typeof token!="string")throw new Error(`via encountered child with non-string token: ${JSON.stringify(primitive)}`);via.consumeNode(token,rest)}return via}consumeBareToken(token){if(token==="blind"||token==="micro"){this._type=token;return}if(!BARE_FLAGS.has(token))throw new Error(`via encountered unsupported flag "${token}"`);switch(token){case"locked":this._locked=!0;break;case"free":this._free=!0;break;case"remove_unused_layers":this._removeUnusedLayers=!0;break;case"keep_end_layers":this._keepEndLayers=!0;break}}consumeNode(token,args){switch(token){case"type":{let value=toStringValue(args[0]);if(value===void 0)throw new Error("via type expects a string value");this._type=value;return}case"locked":this._locked=this.parseYesNo(args);return;case"free":this._free=this.parseYesNo(args);return;case"remove_unused_layers":this._removeUnusedLayers=this.parseYesNo(args);return;case"keep_end_layers":this._keepEndLayers=this.parseYesNo(args);return;case"at":{let parsed=SxClass.parsePrimitiveSexpr(["at",...args],{parentToken:this.token});if(!(parsed instanceof At3))throw new Error("via failed to parse at child");this._sxAt=parsed;return}case"size":{let value=toNumberValue(args[0]);if(value===void 0)throw new Error("via size expects a numeric value");this._size=value;return}case"drill":{let value=toNumberValue(args[0]);if(value===void 0)throw new Error("via drill expects a numeric value");this._drill=value;return}case"layers":{this._sxLayers=Layers.fromSexprPrimitives(args);return}case"net":{this._sxNet=ViaNet.fromSexprPrimitives(args);return}case"teardrops":{this._sxTeardrops=PadTeardrops.fromSexprPrimitives(args);return}case"uuid":{let value=toStringValue(args[0]);if(value===void 0)throw new Error("via uuid expects a string value");this._sxUuid=new Uuid(value);return}case"tstamp":{let value=toStringValue(args[0]);if(value===void 0)throw new Error("via tstamp expects a string value");this._sxTstamp=new Tstamp(value);return}default:throw new Error(`via encountered unsupported child token "${token}"`)}}parseYesNo(args){if(args.length===0)return!0;let value=toStringValue(args[0]);if(value===void 0)throw new Error("Expected string when parsing via boolean child");return/^(yes|true)$/iu.test(value)}get type(){return this._type}set type(value){this._type=value}get locked(){return this._locked}set locked(value){this._locked=value}get free(){return this._free}set free(value){this._free=value}get removeUnusedLayers(){return this._removeUnusedLayers}set removeUnusedLayers(value){this._removeUnusedLayers=value}get keepEndLayers(){return this._keepEndLayers}set keepEndLayers(value){this._keepEndLayers=value}get at(){return this._sxAt}set at(value){this._sxAt=value!==void 0?At3.from(value):void 0}get size(){return this._size}set size(value){this._size=value}get drill(){return this._drill}set drill(value){this._drill=value}get layers(){return this._sxLayers}set layers(value){if(value===void 0){this._sxLayers=void 0;return}this._sxLayers=value instanceof Layers?value:new Layers(value)}get net(){return this._sxNet}set net(value){this._sxNet=value}get uuid(){return this._sxUuid}set uuid(value){if(value===void 0){this._sxUuid=void 0;return}this._sxUuid=value instanceof Uuid?value:new Uuid(value)}get teardrops(){return this._sxTeardrops}set teardrops(value){this._sxTeardrops=value}get tstamp(){return this._sxTstamp}set tstamp(value){if(value===void 0){this._sxTstamp=void 0;return}this._sxTstamp=value instanceof Tstamp?value:new Tstamp(value)}getChildren(){let children=[];return this._sxAt&&children.push(this._sxAt),this._sxLayers&&children.push(this._sxLayers),this._sxNet&&children.push(this._sxNet),this._sxUuid&&children.push(this._sxUuid),this._sxTstamp&&children.push(this._sxTstamp),this._sxTeardrops&&children.push(this._sxTeardrops),children}getString(){let lines=["(via"];return this._type!==void 0&&lines.push(` (type ${this._type})`),this._locked&&lines.push(" (locked)"),this._free&&lines.push(" (free)"),this._removeUnusedLayers&&lines.push(" (remove_unused_layers)"),this._keepEndLayers&&lines.push(" (keep_end_layers)"),this._sxAt&&lines.push(this._sxAt.getStringIndented()),this._size!==void 0&&lines.push(` (size ${this._size})`),this._drill!==void 0&&lines.push(` (drill ${this._drill})`),this._sxLayers&&lines.push(this._sxLayers.getStringIndented()),this._sxNet&&lines.push(this._sxNet.getStringIndented()),this._sxUuid&&lines.push(this._sxUuid.getStringIndented()),this._sxTstamp&&lines.push(this._sxTstamp.getStringIndented()),this._sxTeardrops&&lines.push(this._sxTeardrops.getStringIndented()),lines.push(")"),lines.join(`
829
- `)}},__publicField(_a358,"token","via"),_a358);SxClass.register(Via2);var _a359,KicadPcb=(_a359=class extends SxClass{constructor(params={}){super();__publicField(this,"token","kicad_pcb");__publicField(this,"_sxVersion");__publicField(this,"_sxGenerator");__publicField(this,"_sxGeneratorVersion");__publicField(this,"_sxGeneral");__publicField(this,"_sxPaper");__publicField(this,"_sxTitleBlock");__publicField(this,"_sxLayers");__publicField(this,"_sxSetup");__publicField(this,"_properties",[]);__publicField(this,"_nets",[]);__publicField(this,"_footprints",[]);__publicField(this,"_images",[]);__publicField(this,"_segments",[]);__publicField(this,"_grLines",[]);__publicField(this,"_grTexts",[]);__publicField(this,"_grPolys",[]);__publicField(this,"_grRects",[]);__publicField(this,"_vias",[]);__publicField(this,"_zones",[]);__publicField(this,"_otherChildren",[]);params.version!==void 0&&(this.version=params.version),params.generator!==void 0&&(this.generator=params.generator),params.generatorVersion!==void 0&&(this.generatorVersion=params.generatorVersion),params.general!==void 0&&(this.general=params.general),params.paper!==void 0&&(this.paper=params.paper),params.titleBlock!==void 0&&(this.titleBlock=params.titleBlock),params.layers!==void 0&&(this.layers=params.layers),params.setup!==void 0&&(this.setup=params.setup),params.properties!==void 0&&(this.properties=params.properties),params.nets!==void 0&&(this.nets=params.nets),params.footprints!==void 0&&(this.footprints=params.footprints),params.images!==void 0&&(this.images=params.images),params.segments!==void 0&&(this.segments=params.segments),params.graphicLines!==void 0&&(this.graphicLines=params.graphicLines),params.graphicTexts!==void 0&&(this.graphicTexts=params.graphicTexts),params.graphicPolys!==void 0&&(this.graphicPolys=params.graphicPolys),params.graphicRects!==void 0&&(this.graphicRects=params.graphicRects),params.vias!==void 0&&(this.vias=params.vias),params.zones!==void 0&&(this.zones=params.zones),params.otherChildren!==void 0&&(this.otherChildren=params.otherChildren)}static fromSexprPrimitives(primitiveSexprs){let pcb=new _a359;for(let primitive of primitiveSexprs){if(!Array.isArray(primitive)||primitive.length===0)throw new Error(`kicad_pcb encountered unsupported primitive child: ${JSON.stringify(primitive)}`);let parsed=SxClass.parsePrimitiveSexpr(primitive,{parentToken:this.token});if(!(parsed instanceof SxClass))throw new Error(`kicad_pcb expected SxClass child, received ${JSON.stringify(primitive)}`);pcb.consumeChild(parsed)}return pcb}consumeChild(child){if(child instanceof PcbVersion){this._sxVersion=child;return}if(child instanceof PcbGenerator){this._sxGenerator=child;return}if(child instanceof PcbGeneratorVersion){this._sxGeneratorVersion=child;return}if(child instanceof PcbGeneral){this._sxGeneral=child;return}if(child instanceof Paper){this._sxPaper=child;return}if(child instanceof TitleBlock){this._sxTitleBlock=child;return}if(child instanceof PcbLayers){this._sxLayers=child;return}if(child instanceof Setup){this._sxSetup=child;return}if(child instanceof Property){this._properties.push(child);return}if(child instanceof PcbNet){this._nets.push(child);return}if(child instanceof Footprint2){this._footprints.push(child);return}if(child instanceof Image){this._images.push(child);return}if(child instanceof Segment3){this._segments.push(child);return}if(child instanceof GrLine){this._grLines.push(child);return}if(child instanceof GrText){this._grTexts.push(child);return}if(child instanceof GrPoly){this._grPolys.push(child);return}if(child instanceof GrRect){this._grRects.push(child);return}if(child instanceof Via2){this._vias.push(child);return}if(child instanceof Zone){this._zones.push(child);return}this._otherChildren.push(child)}get version(){return this._sxVersion?.value}set version(value){this._sxVersion=value===void 0?void 0:new PcbVersion(value)}get generator(){return this._sxGenerator?.value}set generator(value){this._sxGenerator=value===void 0?void 0:new PcbGenerator(value)}get generatorVersion(){return this._sxGeneratorVersion?.value}set generatorVersion(value){this._sxGeneratorVersion=value===void 0?void 0:new PcbGeneratorVersion(value)}get general(){return this._sxGeneral}set general(value){this._sxGeneral=value}get paper(){return this._sxPaper}set paper(value){this._sxPaper=value}get titleBlock(){return this._sxTitleBlock}set titleBlock(value){this._sxTitleBlock=value}get layers(){return this._sxLayers}set layers(value){this._sxLayers=value}get setup(){return this._sxSetup}set setup(value){this._sxSetup=value}get properties(){return[...this._properties]}set properties(value){this._properties=[...value]}get nets(){return[...this._nets]}set nets(value){this._nets=[...value]}get footprints(){return[...this._footprints]}set footprints(value){this._footprints=[...value]}get images(){return[...this._images]}set images(value){this._images=[...value]}get segments(){return[...this._segments]}set segments(value){this._segments=[...value]}get graphicLines(){return[...this._grLines]}set graphicLines(value){this._grLines=[...value]}get graphicTexts(){return[...this._grTexts]}set graphicTexts(value){this._grTexts=[...value]}get graphicPolys(){return[...this._grPolys]}set graphicPolys(value){this._grPolys=[...value]}get graphicRects(){return[...this._grRects]}set graphicRects(value){this._grRects=[...value]}get vias(){return[...this._vias]}set vias(value){this._vias=[...value]}get zones(){return[...this._zones]}set zones(value){this._zones=[...value]}get otherChildren(){return[...this._otherChildren]}set otherChildren(value){this._otherChildren=[...value]}getChildren(){let children=[];return this._sxVersion&&children.push(this._sxVersion),this._sxGenerator&&children.push(this._sxGenerator),this._sxGeneratorVersion&&children.push(this._sxGeneratorVersion),this._sxGeneral&&children.push(this._sxGeneral),this._sxPaper&&children.push(this._sxPaper),this._sxTitleBlock&&children.push(this._sxTitleBlock),this._sxLayers&&children.push(this._sxLayers),this._sxSetup&&children.push(this._sxSetup),children.push(...this._properties),children.push(...this._nets),children.push(...this._footprints),children.push(...this._images),children.push(...this._segments),children.push(...this._grLines),children.push(...this._grTexts),children.push(...this._grPolys),children.push(...this._grRects),children.push(...this._vias),children.push(...this._zones),children.push(...this._otherChildren),children}},__publicField(_a359,"token","kicad_pcb"),_a359);SxClass.register(KicadPcb);var parseKicadSexpr=sexpr=>SxClass.parse(sexpr),parseKicadSch=sexpr=>{let[root]=parseKicadSexpr(sexpr);if(!(root instanceof KicadSch))throw new Error(`Expected KicadSch root, got ${root?.constructor.name??"undefined"}`);return root},parseKicadPcb=sexpr=>{let[root]=parseKicadSexpr(sexpr);if(!(root instanceof KicadPcb))throw new Error(`Expected KicadPcb root, got ${root?.constructor.name??"undefined"}`);return root};init_src();init_src();init_src();init_src();init_src();init_src();init_src();init_src();init_src();init_src();init_src();init_src();var ConverterStage=class{constructor(ctx){__publicField(this,"MAX_ITERATIONS",100);__publicField(this,"iterationCount",0);__publicField(this,"finished",!1);this.ctx=ctx}runUntilFinished(){for(this.iterationCount=0;!this.finished&&this.iterationCount<this.MAX_ITERATIONS;)this.step()||(this.finished=!0),this.iterationCount++;this.iterationCount>=this.MAX_ITERATIONS&&(this.ctx.warnings=this.ctx.warnings||[],this.ctx.warnings.push(`Stage ${this.constructor.name} exceeded maximum iterations (${this.MAX_ITERATIONS})`),this.finished=!0)}},InitializeSchematicContextStage=class extends ConverterStage{step(){if(!this.ctx.kicadSch)return this.finished=!0,!1;let KICAD_CENTER_X=105,KICAD_CENTER_Y=148.5,kicadCenterX=KICAD_CENTER_X,kicadCenterY=KICAD_CENTER_Y,cjCenterX=0,cjCenterY=0;return this.ctx.k2cMatSch=compose2(translate2(cjCenterX,cjCenterY),scale2(1/15,-1/15),translate2(-kicadCenterX,-kicadCenterY)),this.ctx.symbolUuidToComponentId=new Map,this.ctx.warnings=this.ctx.warnings||[],this.ctx.stats=this.ctx.stats||{},this.finished=!0,!1}};function rotationToDirection(rotation4){let normalized=(rotation4%360+360)%360;return normalized>=315||normalized<45?"up":normalized>=45&&normalized<135?"right":normalized>=135&&normalized<225?"down":"left"}function inferSymbolName({libId,reference,rotation:rotation4}){let lower=libId.toLowerCase(),direction2=rotationToDirection(rotation4);if(lower.includes(":r_")||lower.includes(":r")&&reference.startsWith("R"))return`boxresistor_${direction2}`;if(lower.includes(":c_")||lower.includes(":c")&&reference.startsWith("C"))return lower.includes("polarized")||lower.includes("_pol")?`capacitor_${direction2}`:`capacitor_${direction2}`;if(lower.includes(":l_")||lower.includes(":l")&&reference.startsWith("L"))return`inductor_${direction2}`;if(lower.includes(":d_")||lower.includes("diode")||reference.startsWith("D"))return lower.includes("led")?`led_${direction2}`:lower.includes("schottky")?`schottky_diode_${direction2}`:lower.includes("zener")?`zener_diode_${direction2}`:`diode_${direction2}`;if(lower.includes(":q_")||reference.startsWith("Q"))return lower.includes("npn")?`npn_bipolar_transistor_${direction2}`:lower.includes("pnp")?`pnp_bipolar_transistor_${direction2}`:lower.includes("_n_")||lower.includes("nmos")?`n_channel_mosfet_transistor_${direction2}`:lower.includes("_p_")||lower.includes("pmos")?`p_channel_mosfet_transistor_${direction2}`:`npn_bipolar_transistor_${direction2}`;lower.includes("gnd")||lower.includes("ground")||lower.includes("vcc")||lower.includes("vdd")||lower.includes("power")}var CollectLibrarySymbolsStage=class extends ConverterStage{constructor(){super(...arguments);__publicField(this,"processedSymbols",new Set)}step(){if(!this.ctx.kicadSch||!this.ctx.k2cMatSch)return this.finished=!0,!1;let symbols=this.ctx.kicadSch.symbols||[];for(let symbol of symbols){let uuid=symbol.uuid;!uuid||this.processedSymbols.has(uuid)||(this.processSymbol(symbol),this.processedSymbols.add(uuid))}return this.finished=!0,!1}processSymbol(symbol){if(!this.ctx.k2cMatSch)return;let reference=this.getProperty(symbol,"Reference")||"U?",value=this.getProperty(symbol,"Value")||"",libId=symbol.libraryId||"",at3=symbol.at,kicadPos={x:at3?.x??0,y:at3?.y??0},cjPos=applyToPoint2(this.ctx.k2cMatSch,kicadPos),rotation4=at3?.angle??0,ftype=this.inferFtype(libId,reference),sourceComponentId=`${libId}_source`;this.ctx.db.source_component.list().find(sc2=>sc2.source_component_id===sourceComponentId)||this.ctx.db.source_component.insert({name:libId||reference,ftype,manufacturer_part_number:value||void 0});let uuid=symbol.uuid;if(!uuid)return;let symbolName=inferSymbolName({libId,reference,rotation:rotation4}),componentId=this.ctx.db.schematic_component.insert({source_component_id:sourceComponentId,center:{x:cjPos.x,y:cjPos.y},size:this.estimateSize(symbol),...symbolName?{symbol_name:symbolName}:{}}).schematic_component_id;this.ctx.symbolUuidToComponentId?.set(uuid,componentId),this.createPorts(symbol,componentId),this.ctx.stats&&(this.ctx.stats.components=(this.ctx.stats.components||0)+1)}getProperty(symbol,propName){return(symbol.properties||[]).find(p2=>p2.key===propName)?.value}inferFtype(libId,reference){let lower=libId.toLowerCase();return lower.includes(":r_")||reference.startsWith("R")?"simple_resistor":lower.includes(":c_")||reference.startsWith("C")?"simple_capacitor":lower.includes(":l_")||reference.startsWith("L")?"simple_inductor":lower.includes(":d_")||reference.startsWith("D")?"simple_diode":lower.includes(":led")||reference.startsWith("LED")?"simple_led":lower.includes(":q_")||reference.startsWith("Q")?"simple_transistor":"simple_chip"}estimateSize(symbol){return{width:1,height:1}}createPorts(symbol,componentId){let libId=symbol.libraryId,libSymbol=this.ctx.kicadSch?.libSymbols?.symbols?.find(ls3=>ls3.libraryId===libId);if(!libSymbol)return;let allPins=[];if(libSymbol.pins&&Array.isArray(libSymbol.pins)&&libSymbol.pins.length>0?allPins.push(...libSymbol.pins):libSymbol.pins&&!Array.isArray(libSymbol.pins)&&allPins.push(libSymbol.pins),libSymbol.subSymbols&&Array.isArray(libSymbol.subSymbols))for(let subSymbol of libSymbol.subSymbols)subSymbol.pins&&Array.isArray(subSymbol.pins)&&subSymbol.pins.length>0?allPins.push(...subSymbol.pins):subSymbol.pins&&!Array.isArray(subSymbol.pins)&&allPins.push(subSymbol.pins);if(allPins.length===0)return;let componentRotation=symbol.at?.angle??0;for(let pin of allPins){let pinAt=pin._sxAt;if(!pinAt)continue;let rotRad=componentRotation*Math.PI/180,cosR=Math.cos(rotRad),sinR=Math.sin(rotRad),rotatedPinPos={x:pinAt.x*cosR-pinAt.y*sinR,y:pinAt.x*sinR+pinAt.y*cosR},scaleFactor=Math.abs(this.ctx.k2cMatSch?.a||1/15),relativePos={x:rotatedPinPos.x*scaleFactor,y:-rotatedPinPos.y*scaleFactor};this.ctx.db.schematic_port.insert({schematic_component_id:componentId,center:relativePos,facing_direction:this.inferPinDirection(pin,componentRotation),pin_number:pin._sxNumber?.value??pin.pinNumber??void 0})}}inferPinDirection(pin,componentRotation){let totalAngle=(pin.at?.angle??0)+componentRotation;return rotationToDirection(totalAngle)}},CollectSchematicTracesStage=class extends ConverterStage{step(){if(!this.ctx.kicadSch||!this.ctx.k2cMatSch)return this.finished=!0,!1;let wires=this.ctx.kicadSch.wires||[],wireArray=Array.isArray(wires)?wires:[wires];for(let wire of wireArray)this.processWire(wire);let junctions=this.ctx.kicadSch.junctions||[],junctionArray=Array.isArray(junctions)?junctions:[junctions];for(let junction of junctionArray)this.processJunction(junction);return this.finished=!0,!1}processWire(wire){if(!this.ctx.k2cMatSch||!wire.pts)return;let pts=Array.isArray(wire.pts.xy)?wire.pts.xy:[wire.pts.xy];if(pts.length<2)return;let edges=[];for(let i3=0;i3<pts.length-1;i3++){let from=applyToPoint2(this.ctx.k2cMatSch,{x:pts[i3].x,y:pts[i3].y}),to3=applyToPoint2(this.ctx.k2cMatSch,{x:pts[i3+1].x,y:pts[i3+1].y});edges.push({from,to:to3})}this.ctx.db.schematic_trace.insert({edges}),this.ctx.stats&&(this.ctx.stats.traces=(this.ctx.stats.traces||0)+1)}processJunction(junction){if(!this.ctx.k2cMatSch||!junction.at)return;let pos=applyToPoint2(this.ctx.k2cMatSch,{x:junction.at.x,y:junction.at.y});this.ctx.db.schematic_trace.insert({edges:[],junctions:[pos]})}},InitializePcbContextStage=class extends ConverterStage{step(){if(!this.ctx.kicadPcb)return this.finished=!0,!1;let center2=this.calculateBoardCenter();return this.ctx.k2cMatPcb=compose2(scale2(1,-1),translate2(-center2.x,-center2.y)),this.ctx.netNumToName=new Map,this.ctx.footprintUuidToComponentId=new Map,this.finished=!0,!1}calculateBoardCenter(){if(!this.ctx.kicadPcb)return{x:0,y:0};let lines=this.ctx.kicadPcb.graphicLines||[],edgeCutLines=(Array.isArray(lines)?lines:[lines]).filter(line2=>{let layer=line2.layer;return(typeof layer=="string"?[layer]:layer?.names||[]).join(" ").includes("Edge.Cuts")});if(edgeCutLines.length===0)return{x:0,y:0};let xs3=[],ys3=[];for(let line2 of edgeCutLines)line2.start&&(xs3.push(line2.start.x),ys3.push(line2.start.y)),line2.end&&(xs3.push(line2.end.x),ys3.push(line2.end.y));if(xs3.length===0||ys3.length===0)return{x:0,y:0};let minX=Math.min(...xs3),maxX=Math.max(...xs3),minY=Math.min(...ys3),maxY=Math.max(...ys3);return{x:(minX+maxX)/2,y:(minY+maxY)/2}}},CollectNetsStage=class extends ConverterStage{step(){if(!this.ctx.kicadPcb||!this.ctx.netNumToName)return this.finished=!0,!1;let nets=this.ctx.kicadPcb.nets||[],netArray=Array.isArray(nets)?nets:[nets];for(let net of netArray){let netNum=net._id??net.number??net.ordinal??0,netName=net._name??net.name??`Net-${netNum}`;this.ctx.netNumToName.set(netNum,netName)}return this.ctx.netNumToName.has(0)||this.ctx.netNumToName.set(0,""),this.finished=!0,!1}};function getComponentLayer(footprint){return(footprint.layer?.names||[]).some(name=>name.includes("B.Cu")||name.includes("Back"))?"bottom":"top"}function determineLayerFromLayers(layers){let layerArray=Array.isArray(layers)?layers:layers?._layers||[];return layerArray.includes("B.Cu")||layerArray.includes("Back")?"bottom":"top"}function mapTextLayer(kicadLayer){let layerStr=typeof kicadLayer=="string"?kicadLayer:kicadLayer?.names?.join(" ")||"";return layerStr.includes("B.")||layerStr.includes("Back")?"bottom":"top"}function getTextValue(footprint,type){let texts=footprint.fpTexts||[];return(Array.isArray(texts)?texts:[texts]).find(t5=>t5.type===type)?.text}function getPropertyValue(footprint,propertyName){let properties=footprint.properties||[];return(Array.isArray(properties)?properties:[properties]).find(p2=>p2.key===propertyName)?.value}function substituteKicadVariables(text,footprint){let result=text,reference=getPropertyValue(footprint,"Reference")||getTextValue(footprint,"reference")||"?",value=getPropertyValue(footprint,"Value")||getTextValue(footprint,"value")||"";return result=result.replace(/\$\{REFERENCE\}/g,reference),result=result.replace(/\$\{VALUE\}/g,value),result}function createPcbPort({ctx,componentId,padInfo}){if(!padInfo.layers||padInfo.layers.length===0)return!1;let sourcePortId=`${componentId}_port_${padInfo.padNumber}`;return ctx.db.pcb_port.insert({pcb_component_id:componentId,source_port_id:sourcePortId,x:padInfo.position.x,y:padInfo.position.y,layers:padInfo.layers}),!0}function processPads(ctx,footprint,componentId,kicadComponentPos,componentRotation){if(!ctx.k2cMatPcb)return;let pads=footprint.fpPads||[],padArray=Array.isArray(pads)?pads:[pads];for(let pad2 of padArray)processPad({ctx,pad:pad2,componentId,kicadComponentPos,componentRotation})}function processPad({ctx,pad:pad2,componentId,kicadComponentPos,componentRotation}){if(!ctx.k2cMatPcb)return;let padAt=pad2.at||{x:0,y:0,angle:0},padType=pad2.padType||pad2.type||"thru_hole",padShape=pad2.shape||"circle",padRotation=padAt.angle||0,rotationRad=-componentRotation*Math.PI/180,rotatedPadX=padAt.x*Math.cos(rotationRad)-padAt.y*Math.sin(rotationRad),rotatedPadY=padAt.x*Math.sin(rotationRad)+padAt.y*Math.cos(rotationRad),padKicadPos={x:kicadComponentPos.x+rotatedPadX,y:kicadComponentPos.y+rotatedPadY},globalPos=applyToPoint2(ctx.k2cMatPcb,padKicadPos),sizeX=1,sizeY=1;pad2.size&&(Array.isArray(pad2.size)?(sizeX=pad2.size[0]||1,sizeY=pad2.size[1]||1):typeof pad2.size=="object"&&(sizeX=pad2.size._width||pad2.size.x||1,sizeY=pad2.size._height||pad2.size.y||1));let size2={x:sizeX,y:sizeY},drill=pad2.drill,totalRotation=-componentRotation-padRotation,padNumber=pad2.number?.toString();if(padNumber){let padPortInfo={padNumber,padType,layers:padType==="smd"?[determineLayerFromLayers(pad2.layers||[])]:[],position:globalPos};createPcbPort({ctx,componentId,padInfo:padPortInfo})}padType==="smd"?createSmdPad({ctx,pad:pad2,componentId,pos:globalPos,size:size2,shape:padShape}):padType==="np_thru_hole"?createNpthHole(ctx,pad2,componentId,globalPos,drill):createPlatedHole(ctx,pad2,componentId,globalPos,size2,drill,padShape,totalRotation)}function createSmdPad({ctx,pad:pad2,componentId,pos,size:size2,shape}){let layers=pad2.layers||[],layer=determineLayerFromLayers(layers);if(shape==="custom"){let primitives=pad2._sxPrimitives?._graphics||pad2.primitives||[],primitivesArray=Array.isArray(primitives)?primitives:[primitives];for(let primitive of primitivesArray)if(primitive.token==="gr_poly"||primitive.gr_poly||primitive.type==="gr_poly"){let grPoly=primitive.gr_poly||primitive,contours=grPoly._contours||grPoly.contours||[],contoursArray=Array.isArray(contours)?contours:[contours],points=[];for(let contour of contoursArray){let pts=contour.points||contour.pts||[],ptsArray=Array.isArray(pts)?pts:[pts];for(let pt3 of ptsArray)pt3.x!==void 0&&pt3.y!==void 0&&points.push({x:pt3.x,y:-pt3.y})}if(points.length>0){let smtpad22={type:"pcb_smtpad",shape:"polygon",pcb_component_id:componentId,layer,port_hints:[pad2.number?.toString()],points:points.map(pt3=>({x:pos.x+pt3.x,y:pos.y+pt3.y}))};ctx.db.pcb_smtpad.insert(smtpad22),ctx.stats&&(ctx.stats.pads=(ctx.stats.pads||0)+1);return}}}let smtpad2={type:"pcb_smtpad",pcb_component_id:componentId,x:pos.x,y:pos.y,width:size2.x,height:size2.y,layer,port_hints:[pad2.number?.toString()]};if(shape==="circle")smtpad2.shape="circle",smtpad2.radius=Math.max(size2.x,size2.y)/2;else if(shape==="rect"||shape==="roundrect"){smtpad2.shape="rect";let roundrectRatio=pad2._sxRoundrectRatio?.value??pad2.roundrect_rratio;if(shape==="roundrect"&&roundrectRatio!==void 0){let cornerRadius=Math.min(size2.x,size2.y)*roundrectRatio/2;smtpad2.corner_radius=cornerRadius}}else smtpad2.shape="rect";ctx.db.pcb_smtpad.insert(smtpad2),ctx.stats&&(ctx.stats.pads=(ctx.stats.pads||0)+1)}function createPlatedHole(ctx,pad2,componentId,pos,size2,drill,shape,rotation4=0){let holeDiameter=typeof drill=="object"?drill?.diameter||drill?.x||.8:drill||.8,holeShape="circle",drillIsOval=typeof drill=="object"&&drill.x!==void 0&&drill.y!==void 0&&drill.x!==drill.y,normalizedRotation=rotation4%360;normalizedRotation<0&&(normalizedRotation+=360);let shouldSwapDimensions=normalizedRotation>=45&&normalizedRotation<135||normalizedRotation>=225&&normalizedRotation<315,outerWidth=size2.x,outerHeight=size2.y;shouldSwapDimensions&&shape==="oval"&&(outerWidth=size2.y,outerHeight=size2.x);let platedHole={pcb_component_id:componentId,x:pos.x,y:pos.y,port_hints:[pad2.number?.toString()]};shape==="circle"?(platedHole.shape="circle",platedHole.hole_diameter=holeDiameter,platedHole.outer_diameter=Math.max(outerWidth,outerHeight),platedHole.layers=["top","bottom"]):shape==="oval"?(platedHole.shape="pill",platedHole.hole_width=holeDiameter,platedHole.hole_height=holeDiameter,platedHole.outer_width=outerWidth,platedHole.outer_height=outerHeight,platedHole.layers=["top","bottom"]):(shape==="rect"||shape==="square")&&(platedHole.shape="pill_hole_with_rect_pad",platedHole.hole_shape="circle",platedHole.pad_shape="rect",platedHole.hole_width=holeDiameter,platedHole.hole_height=holeDiameter,platedHole.rect_pad_width=outerWidth,platedHole.rect_pad_height=outerHeight,platedHole.layers=["top","bottom"]),ctx.db.pcb_plated_hole.insert(platedHole),ctx.stats&&(ctx.stats.pads=(ctx.stats.pads||0)+1)}function createNpthHole(ctx,pad2,componentId,pos,drill){let holeDiameter=drill?.diameter||drill||1;ctx.db.pcb_hole.insert({x:pos.x,y:pos.y,hole_diameter:holeDiameter,hole_shape:"circle"})}function processFootprintText(ctx,footprint,componentId,kicadComponentPos,componentRotation){if(!ctx.k2cMatPcb)return;processFootprintProperties(ctx,footprint,componentId,kicadComponentPos,componentRotation);let texts=footprint.fpTexts||[],textArray=Array.isArray(texts)?texts:[texts];for(let text of textArray){let layerStr=typeof text.layer=="string"?text.layer:text.layer?.names?.join(" ")||"";if(!(layerStr.includes("SilkS")||layerStr.includes("Silk")))continue;let textElement={text:text.text,at:text._sxPosition||text.at,layer:text.layer,effects:text._sxEffects||text.effects,_sxEffects:text._sxEffects};createSilkscreenText(ctx,textElement,componentId,kicadComponentPos,componentRotation,footprint)}}function processFootprintProperties(ctx,footprint,componentId,kicadComponentPos,componentRotation){if(!ctx.k2cMatPcb)return;let properties=footprint.properties||[],propertyArray=Array.isArray(properties)?properties:[properties];for(let property of propertyArray){if(!property.layer)continue;let layerStr=typeof property.layer=="string"?property.layer:property.layer?.names?.join(" ")||"";if(!(layerStr.includes("SilkS")||layerStr.includes("Silk")))continue;let textElement={text:property.value,at:property._sxAt,layer:property.layer,effects:property._sxEffects||property.effects,_sxEffects:property._sxEffects};createSilkscreenText(ctx,textElement,componentId,kicadComponentPos,componentRotation,footprint)}}function createSilkscreenText(ctx,text,componentId,kicadComponentPos,componentRotation,footprint){if(!ctx.k2cMatPcb)return;let at3=text.at,textLocalX=at3?.x??0,textLocalY=at3?.y??0,rotationRad=-componentRotation*Math.PI/180,rotatedTextX=textLocalX*Math.cos(rotationRad)-textLocalY*Math.sin(rotationRad),rotatedTextY=textLocalX*Math.sin(rotationRad)+textLocalY*Math.cos(rotationRad),textKicadPos={x:kicadComponentPos.x+rotatedTextX,y:kicadComponentPos.y+rotatedTextY},pos=applyToPoint2(ctx.k2cMatPcb,textKicadPos),layer=mapTextLayer(text.layer),processedText=substituteKicadVariables(text.text||"",footprint),kicadFontSize=text._sxEffects?._sxFont?._sxSize?._height||text.effects?.font?.size?.y||1;ctx.db.pcb_silkscreen_text.insert({pcb_component_id:componentId,font:"tscircuit2024",font_size:kicadFontSize*1.5,text:processedText,anchor_position:pos,layer})}function rotatePoint4(x3,y3,rotationDeg){let rotationRad=rotationDeg*Math.PI/180;return{x:x3*Math.cos(rotationRad)-y3*Math.sin(rotationRad),y:x3*Math.sin(rotationRad)+y3*Math.cos(rotationRad)}}function processFootprintGraphics(ctx,footprint,componentId,kicadComponentPos,componentRotation){if(!ctx.k2cMatPcb)return;let lines=footprint.fpLines||[],lineArray=Array.isArray(lines)?lines:lines?[lines]:[];for(let line2 of lineArray)createFootprintLine(ctx,line2,componentId,kicadComponentPos,componentRotation);let circles=footprint.fpCircles||[],circleArray=Array.isArray(circles)?circles:circles?[circles]:[];for(let circle2 of circleArray)createFootprintCircle(ctx,circle2,componentId,kicadComponentPos,componentRotation);let arcs=footprint.fpArcs||[],arcArray=Array.isArray(arcs)?arcs:arcs?[arcs]:[];for(let arc2 of arcArray)createFootprintArc(ctx,arc2,componentId,kicadComponentPos,componentRotation)}function createFootprintLine(ctx,line2,componentId,kicadComponentPos,componentRotation){if(!ctx.k2cMatPcb)return;let start=line2.start||{x:0,y:0},end=line2.end||{x:0,y:0},rotatedStart=rotatePoint4(start.x,start.y,-componentRotation),rotatedEnd=rotatePoint4(end.x,end.y,-componentRotation),startKicadPos={x:kicadComponentPos.x+rotatedStart.x,y:kicadComponentPos.y+rotatedStart.y},endKicadPos={x:kicadComponentPos.x+rotatedEnd.x,y:kicadComponentPos.y+rotatedEnd.y},startPos=applyToPoint2(ctx.k2cMatPcb,startKicadPos),endPos=applyToPoint2(ctx.k2cMatPcb,endKicadPos),layer=mapTextLayer(line2.layer),strokeWidth=line2.stroke?.width||line2.width||.12;ctx.db.pcb_silkscreen_path.insert({pcb_component_id:componentId,layer,route:[startPos,endPos],stroke_width:strokeWidth})}function createFootprintCircle(ctx,circle2,componentId,kicadComponentPos,componentRotation){if(!ctx.k2cMatPcb)return;let center2=circle2.center||{x:0,y:0},end=circle2.end||{x:0,y:0},radius=Math.sqrt((end.x-center2.x)**2+(end.y-center2.y)**2),rotatedCenter=rotatePoint4(center2.x,center2.y,-componentRotation),centerKicadPos={x:kicadComponentPos.x+rotatedCenter.x,y:kicadComponentPos.y+rotatedCenter.y},centerPos=applyToPoint2(ctx.k2cMatPcb,centerKicadPos),layer=mapTextLayer(circle2.layer),strokeWidth=circle2.stroke?.width||circle2.width||.12,numPoints=16,circleRoute=[];for(let i3=0;i3<=numPoints;i3++){let angle=i3/numPoints*2*Math.PI,x3=centerPos.x+radius*Math.cos(angle),y3=centerPos.y+radius*Math.sin(angle);circleRoute.push({x:x3,y:y3})}ctx.db.pcb_silkscreen_path.insert({pcb_component_id:componentId,layer,route:circleRoute,stroke_width:strokeWidth})}function calculateArcCenter(p12,p2,p3){let ax2=p12.x-p2.x,ay2=p12.y-p2.y,bx2=p2.x-p3.x,by2=p2.y-p3.y,denom=2*(ax2*by2-ay2*bx2);if(Math.abs(denom)<1e-10)return null;let d12=p12.x*p12.x+p12.y*p12.y-p2.x*p2.x-p2.y*p2.y,d22=p2.x*p2.x+p2.y*p2.y-p3.x*p3.x-p3.y*p3.y,cx2=(d12*by2-d22*ay2)/denom,cy2=(ax2*d22-bx2*d12)/denom,radius=Math.sqrt((p12.x-cx2)**2+(p12.y-cy2)**2);return{center:{x:cx2,y:cy2},radius}}function createFootprintArc(ctx,arc2,componentId,kicadComponentPos,componentRotation){if(!ctx.k2cMatPcb)return;let start=arc2.start||{x:0,y:0},mid=arc2.mid||{x:0,y:0},end=arc2.end||{x:0,y:0},rotatedStart=rotatePoint4(start.x,start.y,-componentRotation),rotatedMid=rotatePoint4(mid.x,mid.y,-componentRotation),rotatedEnd=rotatePoint4(end.x,end.y,-componentRotation),startKicadPos={x:kicadComponentPos.x+rotatedStart.x,y:kicadComponentPos.y+rotatedStart.y},midKicadPos={x:kicadComponentPos.x+rotatedMid.x,y:kicadComponentPos.y+rotatedMid.y},endKicadPos={x:kicadComponentPos.x+rotatedEnd.x,y:kicadComponentPos.y+rotatedEnd.y},layer=mapTextLayer(arc2.layer),strokeWidth=arc2.stroke?.width||arc2.width||.12,arcInfo=calculateArcCenter(startKicadPos,midKicadPos,endKicadPos);if(!arcInfo){let startPos=applyToPoint2(ctx.k2cMatPcb,startKicadPos),endPos=applyToPoint2(ctx.k2cMatPcb,endKicadPos);ctx.db.pcb_silkscreen_path.insert({pcb_component_id:componentId,layer,route:[startPos,endPos],stroke_width:strokeWidth});return}let{center:center2,radius}=arcInfo,startAngle=Math.atan2(startKicadPos.y-center2.y,startKicadPos.x-center2.x),midAngle=Math.atan2(midKicadPos.y-center2.y,midKicadPos.x-center2.x),sweepAngle=Math.atan2(endKicadPos.y-center2.y,endKicadPos.x-center2.x)-startAngle,midSweep=midAngle-startAngle;for(;sweepAngle>Math.PI;)sweepAngle-=2*Math.PI;for(;sweepAngle<-Math.PI;)sweepAngle+=2*Math.PI;for(;midSweep>Math.PI;)midSweep-=2*Math.PI;for(;midSweep<-Math.PI;)midSweep+=2*Math.PI;let isCCW=sweepAngle>0;isCCW&&midSweep>0&&midSweep<sweepAngle||!isCCW&&midSweep<0&&midSweep>sweepAngle||(sweepAngle=sweepAngle>0?sweepAngle-2*Math.PI:sweepAngle+2*Math.PI);let arcLength=Math.abs(radius*sweepAngle),numSegments=Math.max(2,Math.ceil(arcLength/.1)),arcRoute=[];for(let i3=0;i3<=numSegments;i3++){let t5=i3/numSegments,angle=startAngle+sweepAngle*t5,kicadPoint={x:center2.x+radius*Math.cos(angle),y:center2.y+radius*Math.sin(angle)},cjPoint=applyToPoint2(ctx.k2cMatPcb,kicadPoint);arcRoute.push(cjPoint)}ctx.db.pcb_silkscreen_path.insert({pcb_component_id:componentId,layer,route:arcRoute,stroke_width:strokeWidth})}function processFootprint(ctx,footprint){if(!ctx.k2cMatPcb)return;let position2=footprint.position,kicadPos={x:position2?.x??0,y:position2?.y??0},cjPos=applyToPoint2(ctx.k2cMatPcb,kicadPos),rotation4=position2?.angle??0,uuid=footprint.uuid?.value||footprint.tstamp?.value;if(!uuid)return;let componentId=ctx.db.pcb_component.insert({center:{x:cjPos.x,y:cjPos.y},layer:getComponentLayer(footprint),rotation:-rotation4,width:0,height:0}).pcb_component_id;ctx.footprintUuidToComponentId?.set(uuid,componentId),processPads(ctx,footprint,componentId,kicadPos,rotation4),processFootprintText(ctx,footprint,componentId,kicadPos,rotation4),processFootprintGraphics(ctx,footprint,componentId,kicadPos,rotation4),ctx.stats&&(ctx.stats.components=(ctx.stats.components||0)+1)}var CollectFootprintsStage=class extends ConverterStage{constructor(){super(...arguments);__publicField(this,"processedFootprints",new Set)}step(){if(!this.ctx.kicadPcb||!this.ctx.k2cMatPcb)return this.finished=!0,!1;let footprints=this.ctx.kicadPcb.footprints||[],footprintArray=Array.isArray(footprints)?footprints:[footprints];for(let footprint of footprintArray){let uuid=footprint.uuid?.value||footprint.tstamp?.value;uuid&&(this.processedFootprints.has(uuid)||(processFootprint(this.ctx,footprint),this.processedFootprints.add(uuid)))}return this.finished=!0,!1}},CollectTracesStage=class extends ConverterStage{step(){if(!this.ctx.kicadPcb||!this.ctx.k2cMatPcb||!this.ctx.netNumToName)return this.finished=!0,!1;let segments=this.ctx.kicadPcb.segments||[],segmentArray=Array.isArray(segments)?segments:[segments];for(let segment2 of segmentArray)this.createTraceFromSegment(segment2);return this.finished=!0,!1}createTraceFromSegment(segment2){if(!this.ctx.k2cMatPcb||!this.ctx.netNumToName)return;let start=segment2.start||{x:0,y:0},end=segment2.end||{x:0,y:0},width=segment2.width||.2,layerStr=(segment2.layer?.names||[]).join(" "),mappedLayer=this.mapLayer(layerStr),netNum=segment2.net||0,netName=this.ctx.netNumToName.get(netNum)||"",startPos=applyToPoint2(this.ctx.k2cMatPcb,{x:start.x,y:start.y}),endPos=applyToPoint2(this.ctx.k2cMatPcb,{x:end.x,y:end.y}),route=[{route_type:"wire",x:startPos.x,y:startPos.y,width,layer:mappedLayer},{route_type:"wire",x:endPos.x,y:endPos.y,width,layer:mappedLayer}];this.ctx.db.pcb_trace.insert({route,pcb_port_id:void 0}),this.ctx.stats&&(this.ctx.stats.traces=(this.ctx.stats.traces||0)+1)}mapLayer(kicadLayer){return kicadLayer?.includes("B.Cu")||kicadLayer?.includes("Back")?"bottom":"top"}},CollectViasStage=class extends ConverterStage{step(){if(!this.ctx.kicadPcb||!this.ctx.k2cMatPcb||!this.ctx.netNumToName)return this.finished=!0,!1;let vias=this.ctx.kicadPcb.vias||[],viaArray=Array.isArray(vias)?vias:[vias];for(let via of viaArray)this.processVia(via);return this.finished=!0,!1}processVia(via){if(!this.ctx.k2cMatPcb||!this.ctx.netNumToName)return;let at3=via.at||{x:0,y:0},pos=applyToPoint2(this.ctx.k2cMatPcb,{x:at3.x,y:at3.y}),size2=via.size||.8,drill=via.drill||.4,netNum=via.net||0,netName=this.ctx.netNumToName.get(netNum)||"",fromLayer="top",toLayer="bottom";if(via.layers){let layersArray=Array.isArray(via.layers)?via.layers:via.layers._layers||[];layersArray.length>0&&(fromLayer=this.mapLayer(layersArray[0]),layersArray.length>1&&(toLayer=this.mapLayer(layersArray[layersArray.length-1])))}this.ctx.db.pcb_via.insert({x:pos.x,y:pos.y,outer_diameter:size2,hole_diameter:drill,layers:[fromLayer,toLayer]}),this.ctx.stats&&(this.ctx.stats.vias=(this.ctx.stats.vias||0)+1)}mapLayer(kicadLayer){return kicadLayer?.includes("B.Cu")||kicadLayer?.includes("Back")||kicadLayer?.includes("B_Cu")?"bottom":"top"}},CollectZonesStage=class extends ConverterStage{step(){if(!this.ctx.kicadPcb||!this.ctx.k2cMatPcb||!this.ctx.netNumToName)return this.finished=!0,!1;let zones=this.ctx.kicadPcb.zones||[],zoneArray=Array.isArray(zones)?zones:[zones];for(let zone of zoneArray)this.isZoneFilled(zone)&&this.createCopperPourFromZone(zone);return this.finished=!0,!1}isZoneFilled(zone){if(!zone._rawChildren||!Array.isArray(zone._rawChildren))return!1;let fillEntry=zone._rawChildren.find(child=>Array.isArray(child)&&child[0]==="fill");return fillEntry&&fillEntry[1]==="yes"?!0:zone._rawChildren.some(child=>Array.isArray(child)&&child[0]==="filled_polygon")}createCopperPourFromZone(zone){if(!this.ctx.k2cMatPcb||!this.ctx.netNumToName||!zone._rawChildren||!Array.isArray(zone._rawChildren))return;let zoneData=this.parseZoneData(zone._rawChildren),filledPolygons=this.extractFilledPolygons(zone._rawChildren);if(filledPolygons.length===0){let mainPolygon=this.extractMainPolygon(zone._rawChildren);mainPolygon.length>0&&filledPolygons.push(mainPolygon)}if(filledPolygons.length===0){this.ctx.warnings&&this.ctx.warnings.push(`Zone on layer ${zoneData.layer||"unknown"} has no valid polygon points`);return}let layer=this.mapLayer(zoneData.layer),netNum=zoneData.net||0,netName=this.ctx.netNumToName.get(netNum)||zoneData.netName||"";for(let polygonPoints of filledPolygons){let transformedPoints=polygonPoints.map(point6=>applyToPoint2(this.ctx.k2cMatPcb,{x:point6.x,y:point6.y}));this.ctx.db.pcb_copper_pour.insert({layer,net_name:netName,points:transformedPoints,shape:"polygon"}),this.ctx.stats&&(this.ctx.stats.copper_pours=(this.ctx.stats.copper_pours||0)+1)}}parseZoneData(children){let data={};for(let child of children)if(Array.isArray(child))switch(child[0]){case"net":data.net=child[1];break;case"net_name":data.netName=child[1];break;case"layer":data.layer=child[1];break}return data}extractMainPolygon(children){let polygonEntry=children.find(child=>Array.isArray(child)&&child[0]==="polygon");return polygonEntry?this.extractPointsFromPolygonEntry(polygonEntry):[]}extractFilledPolygons(children){let filledPolygonEntries=children.filter(child=>Array.isArray(child)&&child[0]==="filled_polygon"),polygons=[];for(let entry of filledPolygonEntries){let points=this.extractPointsFromPolygonEntry(entry);points.length>0&&polygons.push(points)}return polygons}extractPointsFromPolygonEntry(polygonEntry){let points=[],ptsEntry=polygonEntry.find(child=>Array.isArray(child)&&child[0]==="pts");if(!ptsEntry)return[];for(let i3=1;i3<ptsEntry.length;i3++){let item=ptsEntry[i3];if(Array.isArray(item)&&item[0]==="xy"&&item.length>=3){let x3=item[1],y3=item[2];typeof x3=="number"&&typeof y3=="number"&&points.push({x:x3,y:y3})}}return points}mapLayer(kicadLayer){let layerStr=typeof kicadLayer=="string"?kicadLayer:kicadLayer?.names?.join(" ")||kicadLayer?.name||"";return layerStr.includes("B.Cu")||layerStr.includes("Back")||layerStr.includes("Bottom")?"bottom":"top"}},CollectGraphicsStage=class extends ConverterStage{step(){if(!this.ctx.kicadPcb||!this.ctx.k2cMatPcb)return this.finished=!0,!1;let lines=this.ctx.kicadPcb.graphicLines||[],lineArray=Array.isArray(lines)?lines:[lines],edgeCutLines=[],silkLines=[];for(let line2 of lineArray){let layer=line2.layer,layerStr=(typeof layer=="string"?[layer]:layer?.names||[]).join(" ");layerStr.includes("Edge.Cuts")?edgeCutLines.push(line2):layerStr.includes("SilkS")&&silkLines.push(line2)}edgeCutLines.length>0&&this.createBoardOutline(edgeCutLines);for(let line2 of silkLines)this.createSilkscreenPath(line2);let grRects=this.ctx.kicadPcb.graphicRects||[];for(let rect of grRects)this.processRectangle(rect);let grPolys=this.ctx.kicadPcb.graphicPolys||[],polyArray=Array.isArray(grPolys)?grPolys:[grPolys];for(let poly of polyArray)this.processPolygon(poly);let texts=this.ctx.kicadPcb.graphicTexts||[],textArray=Array.isArray(texts)?texts:[texts];for(let text of textArray){let layer=text.layer;(typeof layer=="string"?[layer]:layer?.names||[]).some(name=>name.includes("SilkS")||name.includes(".Cu")||name.includes("Fab"))&&this.createSilkscreenText(text)}return this.finished=!0,!1}createBoardOutline(lines){if(!this.ctx.k2cMatPcb)return;let segments=lines.map(line2=>({start:line2.start??{x:0,y:0},end:line2.end??{x:0,y:0}})),orderedSegments=[],remainingSegments=[...segments];if(remainingSegments.length>0)for(orderedSegments.push(remainingSegments.shift());remainingSegments.length>0;){let lastEnd=orderedSegments[orderedSegments.length-1].end,foundIndex=remainingSegments.findIndex(seg=>this.pointsEqualKicad(seg.start,lastEnd));if(foundIndex===-1&&(foundIndex=remainingSegments.findIndex(seg=>this.pointsEqualKicad(seg.end,lastEnd)),foundIndex!==-1)){let seg=remainingSegments[foundIndex];orderedSegments.push({start:seg.end,end:seg.start}),remainingSegments.splice(foundIndex,1);continue}foundIndex!==-1?orderedSegments.push(remainingSegments.splice(foundIndex,1)[0]):orderedSegments.push(remainingSegments.shift())}let points=[];for(let segment2 of orderedSegments){let startPos=applyToPoint2(this.ctx.k2cMatPcb,{x:segment2.start.x,y:segment2.start.y}),lastPoint=points[points.length-1];(!lastPoint||!this.pointsEqual(lastPoint,startPos))&&points.push(startPos)}if(orderedSegments.length>0){let lastSegment=orderedSegments[orderedSegments.length-1],endPos=applyToPoint2(this.ctx.k2cMatPcb,{x:lastSegment.end.x,y:lastSegment.end.y}),firstPoint=points[0];firstPoint&&!this.pointsEqual(firstPoint,endPos)&&points.push(endPos)}let existingBoard=this.ctx.db.pcb_board.list()[0];existingBoard?(existingBoard.outline=points,existingBoard.width=this.calculateWidth(points),existingBoard.height=this.calculateHeight(points)):this.ctx.db.pcb_board.insert({outline:points,width:this.calculateWidth(points),height:this.calculateHeight(points)})}createSilkscreenPath(line2){if(!this.ctx.k2cMatPcb)return;let start=line2.start||{x:0,y:0},end=line2.end||{x:0,y:0},startPos=applyToPoint2(this.ctx.k2cMatPcb,{x:start.x,y:start.y}),endPos=applyToPoint2(this.ctx.k2cMatPcb,{x:end.x,y:end.y}),layer=this.mapLayer(line2.layer),strokeWidth=line2.width||.15;this.ctx.db.pcb_silkscreen_path.insert({pcb_component_id:"",layer,route:[startPos,endPos],stroke_width:strokeWidth})}processRectangle(rect){if(!this.ctx.k2cMatPcb)return;let start={x:rect._sxStart?._x??0,y:rect._sxStart?._y??0},end={x:rect._sxEnd?._x??0,y:rect._sxEnd?._y??0},layerStr=(rect._sxLayer?._names||[]).join(" "),isFilled=rect._sxFill&&(rect._sxFill.isFilled===!0||String(rect._sxFill).includes("fill yes")),isCopperLayer=layerStr.includes(".Cu");if(!isFilled||!isCopperLayer)return;let centerKicad={x:(start.x+end.x)/2,y:(start.y+end.y)/2},widthKicad=Math.abs(end.x-start.x),heightKicad=Math.abs(end.y-start.y),centerCJ=applyToPoint2(this.ctx.k2cMatPcb,centerKicad),layer=this.mapLayer(rect._sxLayer);this.ctx.db.pcb_smtpad.insert({pcb_component_id:"",x:centerCJ.x,y:centerCJ.y,width:widthKicad,height:heightKicad,layer,shape:"rect",port_hints:[]}),this.ctx.stats&&(this.ctx.stats.pads=(this.ctx.stats.pads||0)+1)}createSilkscreenText(text){if(!this.ctx.k2cMatPcb)return;let at3=text.at||text._sxPosition,pos=applyToPoint2(this.ctx.k2cMatPcb,{x:at3?.x??0,y:at3?.y??0}),layer=this.mapLayer(text.layer),fontSize=(text._sxEffects?._sxFont?._sxSize?._height||text.effects?.font?.size?.y||1)*1.5;this.ctx.db.pcb_silkscreen_text.insert({pcb_component_id:"",text:text.text||text._text||"",anchor_position:pos,layer,font_size:fontSize,font:"tscircuit2024"})}mapLayer(kicadLayer){let layerStr=typeof kicadLayer=="string"?kicadLayer:kicadLayer?.names?.join(" ")||"";return layerStr.includes("B.")||layerStr.includes("Back")?"bottom":"top"}pointsEqual(p12,p2){return Math.abs(p12.x-p2.x)<.001&&Math.abs(p12.y-p2.y)<.001}pointsEqualKicad(p12,p2){return Math.abs(p12.x-p2.x)<.001&&Math.abs(p12.y-p2.y)<.001}calculateWidth(points){if(points.length===0)return 0;let xs3=points.map(p2=>p2.x);return Math.max(...xs3)-Math.min(...xs3)}calculateHeight(points){if(points.length===0)return 0;let ys3=points.map(p2=>p2.y);return Math.max(...ys3)-Math.min(...ys3)}processPolygon(poly){if(!this.ctx.k2cMatPcb)return;let layerStr=(poly._sxLayer?._names||[]).join(" "),isFilled=poly._sxFill?.filled===!0,isCopperLayer=layerStr.includes(".Cu");if(!isFilled||!isCopperLayer)return;let ptsData=poly._sxPts?.points||[],points=[];for(let pt3 of ptsData)if(pt3.token==="xy")points.push({x:pt3.x,y:pt3.y});else if(pt3.token==="arc"){let arcPoints=this.convertArcToPoints({x:pt3._sxStart?._x,y:pt3._sxStart?._y},{x:pt3._sxMid?._x,y:pt3._sxMid?._y},{x:pt3._sxEnd?._x,y:pt3._sxEnd?._y});points.push(...arcPoints)}if(points.length<3)return;let transformedPoints=points.map(pt3=>applyToPoint2(this.ctx.k2cMatPcb,pt3)),layer=this.mapLayer(poly._sxLayer);this.ctx.db.pcb_smtpad.insert({pcb_component_id:"",shape:"polygon",points:transformedPoints,layer,port_hints:[]}),this.ctx.stats&&(this.ctx.stats.pads=(this.ctx.stats.pads||0)+1)}convertArcToPoints(start,mid,end,numSegments=8){let points=[],{center:center2,radius}=this.calculateArcCenter(start,mid,end);if(!center2||radius===0)return[start,end];let startAngle=Math.atan2(start.y-center2.y,start.x-center2.x),endAngle=Math.atan2(end.y-center2.y,end.x-center2.x),midAngle=Math.atan2(mid.y-center2.y,mid.x-center2.x),angleRange=endAngle-startAngle,midFromStart=midAngle-startAngle,endFromStart=endAngle-startAngle,normalizeMid=(midFromStart+Math.PI)%(2*Math.PI)-Math.PI,normalizeEnd=(endFromStart+Math.PI)%(2*Math.PI)-Math.PI;(normalizeEnd>0&&(normalizeMid<0||normalizeMid>normalizeEnd)||normalizeEnd<0&&(normalizeMid>0||normalizeMid<normalizeEnd))&&(angleRange=angleRange-Math.sign(angleRange)*2*Math.PI);for(let i3=1;i3<numSegments;i3++){let t5=i3/numSegments,angle=startAngle+angleRange*t5;points.push({x:center2.x+radius*Math.cos(angle),y:center2.y+radius*Math.sin(angle)})}return points.push(end),points}calculateArcCenter(p12,p2,p3){let ax2=p12.x,ay2=p12.y,bx2=p2.x,by2=p2.y,cx2=p3.x,cy2=p3.y,d3=2*(ax2*(by2-cy2)+bx2*(cy2-ay2)+cx2*(ay2-by2));if(Math.abs(d3)<1e-10)return{center:null,radius:0};let ux2=((ax2*ax2+ay2*ay2)*(by2-cy2)+(bx2*bx2+by2*by2)*(cy2-ay2)+(cx2*cx2+cy2*cy2)*(ay2-by2))/d3,uy2=((ax2*ax2+ay2*ay2)*(cx2-bx2)+(bx2*bx2+by2*by2)*(ax2-cx2)+(cx2*cx2+cy2*cy2)*(bx2-ax2))/d3,radius=Math.sqrt((ax2-ux2)**2+(ay2-uy2)**2);return{center:{x:ux2,y:uy2},radius}}},CollectSourceTracesStage=class extends ConverterStage{constructor(){super(...arguments);__publicField(this,"processedNets",new Set)}step(){if(!this.ctx.kicadPcb||!this.ctx.netNumToName)return this.finished=!0,!1;let netToPads=new Map,footprints=this.ctx.kicadPcb.footprints||[],footprintArray=Array.isArray(footprints)?footprints:[footprints];for(let footprint of footprintArray)this.processFootprintPads(footprint,netToPads);for(let[netNum,pads]of netToPads.entries())pads.length<2||this.processedNets.has(netNum)||(this.createSourceTrace(netNum,pads),this.processedNets.add(netNum));return this.finished=!0,!1}processFootprintPads(footprint,netToPads){let footprintUuid=footprint.uuid?.value||footprint.tstamp?.value;if(!footprintUuid)return;let componentId=this.ctx.footprintUuidToComponentId?.get(footprintUuid);if(!componentId)return;let pads=footprint.fpPads||[],padArray=Array.isArray(pads)?pads:[pads];for(let pad2 of padArray){let padNumber=pad2.number?.toString();if(!padNumber)continue;let netNum=this.getPadNet(pad2);if(netNum==null||netNum===0)continue;let sourcePortId=this.getOrCreateSourcePort(componentId,padNumber,footprint);netToPads.has(netNum)||netToPads.set(netNum,[]),netToPads.get(netNum).push({componentId,padNumber,sourcePortId})}}getPadNet(pad2){let net=pad2._sxNet||pad2.net;return net?typeof net=="number"?net:typeof net=="object"?net._id??net.number??net.ordinal??null:null:null}getOrCreateSourcePort(componentId,padNumber,footprint){let sourcePortId=`${componentId}_port_${padNumber}`;if(!this.ctx.db.source_port.list().find(sp2=>sp2.source_port_id===sourcePortId)){let reference=this.getFootprintReference(footprint);this.ctx.db.source_port.insert({source_port_id:sourcePortId,source_component_id:componentId,name:`${reference||"U"}.${padNumber}`,pin_number:parseInt(padNumber,10)||void 0})}return sourcePortId}getFootprintReference(footprint){let properties=footprint.properties||[],propertyArray=Array.isArray(properties)?properties:[properties];for(let property of propertyArray)if(property.key==="Reference"||property.name==="Reference")return property.value;let textItems=footprint.fpTexts||[],textArray=Array.isArray(textItems)?textItems:[textItems];for(let text of textArray)if(text.type==="reference")return text.text}createSourceTrace(netNum,pads){let netName=this.ctx.netNumToName?.get(netNum)||`Net-${netNum}`;this.ctx.db.source_trace.insert({connected_source_port_ids:pads.map(p2=>p2.sourcePortId),connected_source_net_ids:[],display_name:netName}),this.ctx.stats&&(this.ctx.stats.traces=(this.ctx.stats.traces||0)+1)}},KicadToCircuitJsonConverter=class{constructor(){__publicField(this,"fsMap",{});__publicField(this,"ctx");__publicField(this,"currentStageIndex",0);__publicField(this,"pipeline")}get currentStage(){return this.pipeline?.[this.currentStageIndex]}addFile(filePath,content){this.fsMap[filePath]=content}_findFileWithExtension(extension){let filesWithExtension=Object.keys(this.fsMap).filter(key=>key.endsWith(extension));if(filesWithExtension.length>1)throw new Error(`Expected 0 or 1 file with extension ${extension}, got ${filesWithExtension.length}. Files: ${filesWithExtension.join(", ")}`);return filesWithExtension[0]??null}initializePipeline(){let pcbFile=this._findFileWithExtension(".kicad_pcb"),schFile=this._findFileWithExtension(".kicad_sch");this.ctx={db:cju_default([]),kicadPcb:pcbFile?parseKicadPcb(this.fsMap[pcbFile]):void 0,kicadSch:schFile?parseKicadSch(this.fsMap[schFile]):void 0,warnings:[],stats:{}},this.pipeline=[],this.ctx.kicadSch&&this.pipeline.push(new InitializeSchematicContextStage(this.ctx),new CollectLibrarySymbolsStage(this.ctx),new CollectSchematicTracesStage(this.ctx)),this.ctx.kicadPcb&&this.pipeline.push(new InitializePcbContextStage(this.ctx),new CollectNetsStage(this.ctx),new CollectFootprintsStage(this.ctx),new CollectTracesStage(this.ctx),new CollectViasStage(this.ctx),new CollectZonesStage(this.ctx),new CollectGraphicsStage(this.ctx),new CollectSourceTracesStage(this.ctx))}step(){return this.pipeline||this.initializePipeline(),this.currentStage?((!this.currentStage.step()||this.currentStage.finished)&&this.currentStageIndex++,this.currentStageIndex<(this.pipeline?.length||0)):!1}runUntilFinished(){this.pipeline||this.initializePipeline();for(let stage of this.pipeline||[])stage.runUntilFinished()}getOutput(){this.ctx||(this.initializePipeline(),this.runUntilFinished());let elements=[],tableNames=["source_component","source_port","source_trace","schematic_component","schematic_port","schematic_trace","schematic_net_label","pcb_component","pcb_port","pcb_smtpad","pcb_plated_hole","pcb_hole","pcb_trace","pcb_via","pcb_copper_pour","pcb_board","pcb_silkscreen_text","pcb_silkscreen_path"];for(let tableName of tableNames){let table=this.ctx.db[tableName];if(table&&typeof table.list=="function"){let items=table.list();items&&Array.isArray(items)&&elements.push(...items)}}return elements}getOutputString(){return JSON.stringify(this.getOutput(),null,2)}getWarnings(){return this.ctx?.warnings||[]}getStats(){return this.ctx?.stats||{}}};var debug13=(0,import_debug22.default)("tsci:eval:import-local-file"),importLocalFile=async(importName,ctx,depth=0)=>{debug13("importLocalFile called with:",{importName});let{fsMap,preSuppliedImports,importStack,currentlyImporting}=ctx,fsPath=resolveFilePathOrThrow(importName,fsMap,void 0,{tsConfig:ctx.tsConfig});if(debug13("fsPath:",fsPath),currentlyImporting.has(fsPath)){let cycleStartIndex=importStack.indexOf(fsPath),cyclePath=cycleStartIndex>=0?importStack.slice(cycleStartIndex).concat(fsPath):[...importStack,fsPath];throw new Error(`Circular dependency detected while importing "${fsPath}". The following import chain forms a cycle:
829
+ `)}},__publicField(_a358,"token","via"),_a358);SxClass.register(Via2);var _a359,KicadPcb=(_a359=class extends SxClass{constructor(params={}){super();__publicField(this,"token","kicad_pcb");__publicField(this,"_sxVersion");__publicField(this,"_sxGenerator");__publicField(this,"_sxGeneratorVersion");__publicField(this,"_sxGeneral");__publicField(this,"_sxPaper");__publicField(this,"_sxTitleBlock");__publicField(this,"_sxLayers");__publicField(this,"_sxSetup");__publicField(this,"_properties",[]);__publicField(this,"_nets",[]);__publicField(this,"_footprints",[]);__publicField(this,"_images",[]);__publicField(this,"_segments",[]);__publicField(this,"_grLines",[]);__publicField(this,"_grTexts",[]);__publicField(this,"_grPolys",[]);__publicField(this,"_grRects",[]);__publicField(this,"_vias",[]);__publicField(this,"_zones",[]);__publicField(this,"_otherChildren",[]);params.version!==void 0&&(this.version=params.version),params.generator!==void 0&&(this.generator=params.generator),params.generatorVersion!==void 0&&(this.generatorVersion=params.generatorVersion),params.general!==void 0&&(this.general=params.general),params.paper!==void 0&&(this.paper=params.paper),params.titleBlock!==void 0&&(this.titleBlock=params.titleBlock),params.layers!==void 0&&(this.layers=params.layers),params.setup!==void 0&&(this.setup=params.setup),params.properties!==void 0&&(this.properties=params.properties),params.nets!==void 0&&(this.nets=params.nets),params.footprints!==void 0&&(this.footprints=params.footprints),params.images!==void 0&&(this.images=params.images),params.segments!==void 0&&(this.segments=params.segments),params.graphicLines!==void 0&&(this.graphicLines=params.graphicLines),params.graphicTexts!==void 0&&(this.graphicTexts=params.graphicTexts),params.graphicPolys!==void 0&&(this.graphicPolys=params.graphicPolys),params.graphicRects!==void 0&&(this.graphicRects=params.graphicRects),params.vias!==void 0&&(this.vias=params.vias),params.zones!==void 0&&(this.zones=params.zones),params.otherChildren!==void 0&&(this.otherChildren=params.otherChildren)}static fromSexprPrimitives(primitiveSexprs){let pcb=new _a359;for(let primitive of primitiveSexprs){if(!Array.isArray(primitive)||primitive.length===0)throw new Error(`kicad_pcb encountered unsupported primitive child: ${JSON.stringify(primitive)}`);let parsed=SxClass.parsePrimitiveSexpr(primitive,{parentToken:this.token});if(!(parsed instanceof SxClass))throw new Error(`kicad_pcb expected SxClass child, received ${JSON.stringify(primitive)}`);pcb.consumeChild(parsed)}return pcb}consumeChild(child){if(child instanceof PcbVersion){this._sxVersion=child;return}if(child instanceof PcbGenerator){this._sxGenerator=child;return}if(child instanceof PcbGeneratorVersion){this._sxGeneratorVersion=child;return}if(child instanceof PcbGeneral){this._sxGeneral=child;return}if(child instanceof Paper){this._sxPaper=child;return}if(child instanceof TitleBlock){this._sxTitleBlock=child;return}if(child instanceof PcbLayers){this._sxLayers=child;return}if(child instanceof Setup){this._sxSetup=child;return}if(child instanceof Property){this._properties.push(child);return}if(child instanceof PcbNet){this._nets.push(child);return}if(child instanceof Footprint2){this._footprints.push(child);return}if(child instanceof Image){this._images.push(child);return}if(child instanceof Segment3){this._segments.push(child);return}if(child instanceof GrLine){this._grLines.push(child);return}if(child instanceof GrText){this._grTexts.push(child);return}if(child instanceof GrPoly){this._grPolys.push(child);return}if(child instanceof GrRect){this._grRects.push(child);return}if(child instanceof Via2){this._vias.push(child);return}if(child instanceof Zone){this._zones.push(child);return}this._otherChildren.push(child)}get version(){return this._sxVersion?.value}set version(value){this._sxVersion=value===void 0?void 0:new PcbVersion(value)}get generator(){return this._sxGenerator?.value}set generator(value){this._sxGenerator=value===void 0?void 0:new PcbGenerator(value)}get generatorVersion(){return this._sxGeneratorVersion?.value}set generatorVersion(value){this._sxGeneratorVersion=value===void 0?void 0:new PcbGeneratorVersion(value)}get general(){return this._sxGeneral}set general(value){this._sxGeneral=value}get paper(){return this._sxPaper}set paper(value){this._sxPaper=value}get titleBlock(){return this._sxTitleBlock}set titleBlock(value){this._sxTitleBlock=value}get layers(){return this._sxLayers}set layers(value){this._sxLayers=value}get setup(){return this._sxSetup}set setup(value){this._sxSetup=value}get properties(){return[...this._properties]}set properties(value){this._properties=[...value]}get nets(){return[...this._nets]}set nets(value){this._nets=[...value]}get footprints(){return[...this._footprints]}set footprints(value){this._footprints=[...value]}get images(){return[...this._images]}set images(value){this._images=[...value]}get segments(){return[...this._segments]}set segments(value){this._segments=[...value]}get graphicLines(){return[...this._grLines]}set graphicLines(value){this._grLines=[...value]}get graphicTexts(){return[...this._grTexts]}set graphicTexts(value){this._grTexts=[...value]}get graphicPolys(){return[...this._grPolys]}set graphicPolys(value){this._grPolys=[...value]}get graphicRects(){return[...this._grRects]}set graphicRects(value){this._grRects=[...value]}get vias(){return[...this._vias]}set vias(value){this._vias=[...value]}get zones(){return[...this._zones]}set zones(value){this._zones=[...value]}get otherChildren(){return[...this._otherChildren]}set otherChildren(value){this._otherChildren=[...value]}getChildren(){let children=[];return this._sxVersion&&children.push(this._sxVersion),this._sxGenerator&&children.push(this._sxGenerator),this._sxGeneratorVersion&&children.push(this._sxGeneratorVersion),this._sxGeneral&&children.push(this._sxGeneral),this._sxPaper&&children.push(this._sxPaper),this._sxTitleBlock&&children.push(this._sxTitleBlock),this._sxLayers&&children.push(this._sxLayers),this._sxSetup&&children.push(this._sxSetup),children.push(...this._properties),children.push(...this._nets),children.push(...this._footprints),children.push(...this._images),children.push(...this._segments),children.push(...this._grLines),children.push(...this._grTexts),children.push(...this._grPolys),children.push(...this._grRects),children.push(...this._vias),children.push(...this._zones),children.push(...this._otherChildren),children}},__publicField(_a359,"token","kicad_pcb"),_a359);SxClass.register(KicadPcb);var parseKicadSexpr=sexpr=>SxClass.parse(sexpr),parseKicadSch=sexpr=>{let[root]=parseKicadSexpr(sexpr);if(!(root instanceof KicadSch))throw new Error(`Expected KicadSch root, got ${root?.constructor.name??"undefined"}`);return root},parseKicadPcb=sexpr=>{let[root]=parseKicadSexpr(sexpr);if(!(root instanceof KicadPcb))throw new Error(`Expected KicadPcb root, got ${root?.constructor.name??"undefined"}`);return root};init_src();init_src();init_src();init_src();init_src();init_src();init_src();init_src();init_src();init_src();init_src();init_src();var ConverterStage=class{constructor(ctx){__publicField(this,"MAX_ITERATIONS",100);__publicField(this,"iterationCount",0);__publicField(this,"finished",!1);this.ctx=ctx}runUntilFinished(){for(this.iterationCount=0;!this.finished&&this.iterationCount<this.MAX_ITERATIONS;)this.step()||(this.finished=!0),this.iterationCount++;this.iterationCount>=this.MAX_ITERATIONS&&(this.ctx.warnings=this.ctx.warnings||[],this.ctx.warnings.push(`Stage ${this.constructor.name} exceeded maximum iterations (${this.MAX_ITERATIONS})`),this.finished=!0)}},InitializeSchematicContextStage=class extends ConverterStage{step(){if(!this.ctx.kicadSch)return this.finished=!0,!1;let KICAD_CENTER_X=105,KICAD_CENTER_Y=148.5,kicadCenterX=KICAD_CENTER_X,kicadCenterY=KICAD_CENTER_Y,cjCenterX=0,cjCenterY=0;return this.ctx.k2cMatSch=compose2(translate2(cjCenterX,cjCenterY),scale2(1/15,-1/15),translate2(-kicadCenterX,-kicadCenterY)),this.ctx.symbolUuidToComponentId=new Map,this.ctx.warnings=this.ctx.warnings||[],this.ctx.stats=this.ctx.stats||{},this.finished=!0,!1}};function rotationToDirection(rotation4){let normalized=(rotation4%360+360)%360;return normalized>=315||normalized<45?"up":normalized>=45&&normalized<135?"right":normalized>=135&&normalized<225?"down":"left"}function inferSymbolName({libId,reference,rotation:rotation4}){let lower=libId.toLowerCase(),direction2=rotationToDirection(rotation4);if(lower.includes(":r_")||lower.includes(":r")&&reference.startsWith("R"))return`boxresistor_${direction2}`;if(lower.includes(":c_")||lower.includes(":c")&&reference.startsWith("C"))return lower.includes("polarized")||lower.includes("_pol")?`capacitor_${direction2}`:`capacitor_${direction2}`;if(lower.includes(":l_")||lower.includes(":l")&&reference.startsWith("L"))return`inductor_${direction2}`;if(lower.includes(":d_")||lower.includes("diode")||reference.startsWith("D"))return lower.includes("led")?`led_${direction2}`:lower.includes("schottky")?`schottky_diode_${direction2}`:lower.includes("zener")?`zener_diode_${direction2}`:`diode_${direction2}`;if(lower.includes(":q_")||reference.startsWith("Q"))return lower.includes("npn")?`npn_bipolar_transistor_${direction2}`:lower.includes("pnp")?`pnp_bipolar_transistor_${direction2}`:lower.includes("_n_")||lower.includes("nmos")?`n_channel_mosfet_transistor_${direction2}`:lower.includes("_p_")||lower.includes("pmos")?`p_channel_mosfet_transistor_${direction2}`:`npn_bipolar_transistor_${direction2}`;lower.includes("gnd")||lower.includes("ground")||lower.includes("vcc")||lower.includes("vdd")||lower.includes("power")}var CollectLibrarySymbolsStage=class extends ConverterStage{constructor(){super(...arguments);__publicField(this,"processedSymbols",new Set)}step(){if(!this.ctx.kicadSch||!this.ctx.k2cMatSch)return this.finished=!0,!1;let symbols=this.ctx.kicadSch.symbols||[];for(let symbol of symbols){let uuid=symbol.uuid;!uuid||this.processedSymbols.has(uuid)||(this.processSymbol(symbol),this.processedSymbols.add(uuid))}return this.finished=!0,!1}processSymbol(symbol){if(!this.ctx.k2cMatSch)return;let reference=this.getProperty(symbol,"Reference")||"U?",value=this.getProperty(symbol,"Value")||"",libId=symbol.libraryId||"",at3=symbol.at,kicadPos={x:at3?.x??0,y:at3?.y??0},cjPos=applyToPoint2(this.ctx.k2cMatSch,kicadPos),rotation4=at3?.angle??0,ftype=this.inferFtype(libId,reference),sourceComponentId=`${libId}_source`;this.ctx.db.source_component.list().find(sc2=>sc2.source_component_id===sourceComponentId)||this.ctx.db.source_component.insert({name:libId||reference,ftype,manufacturer_part_number:value||void 0});let uuid=symbol.uuid;if(!uuid)return;let symbolName=inferSymbolName({libId,reference,rotation:rotation4}),componentId=this.ctx.db.schematic_component.insert({source_component_id:sourceComponentId,center:{x:cjPos.x,y:cjPos.y},size:this.estimateSize(symbol),...symbolName?{symbol_name:symbolName}:{}}).schematic_component_id;this.ctx.symbolUuidToComponentId?.set(uuid,componentId),this.createPorts(symbol,componentId),this.ctx.stats&&(this.ctx.stats.components=(this.ctx.stats.components||0)+1)}getProperty(symbol,propName){return(symbol.properties||[]).find(p2=>p2.key===propName)?.value}inferFtype(libId,reference){let lower=libId.toLowerCase();return lower.includes(":r_")||reference.startsWith("R")?"simple_resistor":lower.includes(":c_")||reference.startsWith("C")?"simple_capacitor":lower.includes(":l_")||reference.startsWith("L")?"simple_inductor":lower.includes(":d_")||reference.startsWith("D")?"simple_diode":lower.includes(":led")||reference.startsWith("LED")?"simple_led":lower.includes(":q_")||reference.startsWith("Q")?"simple_transistor":"simple_chip"}estimateSize(symbol){return{width:1,height:1}}createPorts(symbol,componentId){let libId=symbol.libraryId,libSymbol=this.ctx.kicadSch?.libSymbols?.symbols?.find(ls3=>ls3.libraryId===libId);if(!libSymbol)return;let allPins=[];if(libSymbol.pins&&Array.isArray(libSymbol.pins)&&libSymbol.pins.length>0?allPins.push(...libSymbol.pins):libSymbol.pins&&!Array.isArray(libSymbol.pins)&&allPins.push(libSymbol.pins),libSymbol.subSymbols&&Array.isArray(libSymbol.subSymbols))for(let subSymbol of libSymbol.subSymbols)subSymbol.pins&&Array.isArray(subSymbol.pins)&&subSymbol.pins.length>0?allPins.push(...subSymbol.pins):subSymbol.pins&&!Array.isArray(subSymbol.pins)&&allPins.push(subSymbol.pins);if(allPins.length===0)return;let componentRotation=symbol.at?.angle??0;for(let pin of allPins){let pinAt=pin._sxAt;if(!pinAt)continue;let rotRad=componentRotation*Math.PI/180,cosR=Math.cos(rotRad),sinR=Math.sin(rotRad),rotatedPinPos={x:pinAt.x*cosR-pinAt.y*sinR,y:pinAt.x*sinR+pinAt.y*cosR},scaleFactor=Math.abs(this.ctx.k2cMatSch?.a||1/15),relativePos={x:rotatedPinPos.x*scaleFactor,y:-rotatedPinPos.y*scaleFactor};this.ctx.db.schematic_port.insert({schematic_component_id:componentId,center:relativePos,facing_direction:this.inferPinDirection(pin,componentRotation),pin_number:pin._sxNumber?.value??pin.pinNumber??void 0})}}inferPinDirection(pin,componentRotation){let totalAngle=(pin.at?.angle??0)+componentRotation;return rotationToDirection(totalAngle)}},CollectSchematicTracesStage=class extends ConverterStage{step(){if(!this.ctx.kicadSch||!this.ctx.k2cMatSch)return this.finished=!0,!1;let wires=this.ctx.kicadSch.wires||[],wireArray=Array.isArray(wires)?wires:[wires];for(let wire of wireArray)this.processWire(wire);let junctions=this.ctx.kicadSch.junctions||[],junctionArray=Array.isArray(junctions)?junctions:[junctions];for(let junction of junctionArray)this.processJunction(junction);return this.finished=!0,!1}processWire(wire){if(!this.ctx.k2cMatSch||!wire.pts)return;let pts=Array.isArray(wire.pts.xy)?wire.pts.xy:[wire.pts.xy];if(pts.length<2)return;let edges=[];for(let i3=0;i3<pts.length-1;i3++){let from=applyToPoint2(this.ctx.k2cMatSch,{x:pts[i3].x,y:pts[i3].y}),to3=applyToPoint2(this.ctx.k2cMatSch,{x:pts[i3+1].x,y:pts[i3+1].y});edges.push({from,to:to3})}this.ctx.db.schematic_trace.insert({edges}),this.ctx.stats&&(this.ctx.stats.traces=(this.ctx.stats.traces||0)+1)}processJunction(junction){if(!this.ctx.k2cMatSch||!junction.at)return;let pos=applyToPoint2(this.ctx.k2cMatSch,{x:junction.at.x,y:junction.at.y});this.ctx.db.schematic_trace.insert({edges:[],junctions:[pos]})}},InitializePcbContextStage=class extends ConverterStage{step(){if(!this.ctx.kicadPcb)return this.finished=!0,!1;let center2=this.calculateBoardCenter();return this.ctx.k2cMatPcb=compose2(scale2(1,-1),translate2(-center2.x,-center2.y)),this.ctx.netNumToName=new Map,this.ctx.footprintUuidToComponentId=new Map,this.finished=!0,!1}calculateBoardCenter(){if(!this.ctx.kicadPcb)return{x:0,y:0};let lines=this.ctx.kicadPcb.graphicLines||[],edgeCutLines=(Array.isArray(lines)?lines:[lines]).filter(line2=>{let layer=line2.layer;return(typeof layer=="string"?[layer]:layer?.names||[]).join(" ").includes("Edge.Cuts")});if(edgeCutLines.length===0)return{x:0,y:0};let xs3=[],ys3=[];for(let line2 of edgeCutLines)line2.start&&(xs3.push(line2.start.x),ys3.push(line2.start.y)),line2.end&&(xs3.push(line2.end.x),ys3.push(line2.end.y));if(xs3.length===0||ys3.length===0)return{x:0,y:0};let minX=Math.min(...xs3),maxX=Math.max(...xs3),minY=Math.min(...ys3),maxY=Math.max(...ys3);return{x:(minX+maxX)/2,y:(minY+maxY)/2}}},CollectNetsStage=class extends ConverterStage{step(){if(!this.ctx.kicadPcb||!this.ctx.netNumToName)return this.finished=!0,!1;let nets=this.ctx.kicadPcb.nets||[],netArray=Array.isArray(nets)?nets:[nets];for(let net of netArray){let netNum=net._id??net.number??net.ordinal??0,netName=net._name??net.name??`Net-${netNum}`;this.ctx.netNumToName.set(netNum,netName)}return this.ctx.netNumToName.has(0)||this.ctx.netNumToName.set(0,""),this.finished=!0,!1}};function getComponentLayer(footprint){return(footprint.layer?.names||[]).some(name=>name.includes("B.Cu")||name.includes("Back"))?"bottom":"top"}function determineLayerFromLayers(layers){let layerArray=Array.isArray(layers)?layers:layers?._layers||[];return layerArray.includes("B.Cu")||layerArray.includes("Back")?"bottom":"top"}function mapTextLayer(kicadLayer){let layerStr=typeof kicadLayer=="string"?kicadLayer:kicadLayer?.names?.join(" ")||"";return layerStr.includes("B.")||layerStr.includes("Back")?"bottom":"top"}function getTextValue(footprint,type){let texts=footprint.fpTexts||[];return(Array.isArray(texts)?texts:[texts]).find(t5=>t5.type===type)?.text}function getPropertyValue(footprint,propertyName){let properties=footprint.properties||[];return(Array.isArray(properties)?properties:[properties]).find(p2=>p2.key===propertyName)?.value}function substituteKicadVariables(text,footprint){let result=text,reference=getPropertyValue(footprint,"Reference")||getTextValue(footprint,"reference")||"?",value=getPropertyValue(footprint,"Value")||getTextValue(footprint,"value")||"";return result=result.replace(/\$\{REFERENCE\}/g,reference),result=result.replace(/\$\{VALUE\}/g,value),result}function createPcbPort({ctx,componentId,padInfo}){if(!padInfo.layers||padInfo.layers.length===0)return!1;let sourcePortId=`${componentId}_port_${padInfo.padNumber}`;return ctx.db.pcb_port.insert({pcb_component_id:componentId,source_port_id:sourcePortId,x:padInfo.position.x,y:padInfo.position.y,layers:padInfo.layers}),!0}function processPads(ctx,footprint,componentId,kicadComponentPos,componentRotation){if(!ctx.k2cMatPcb)return;let pads=footprint.fpPads||[],padArray=Array.isArray(pads)?pads:[pads];for(let pad2 of padArray)processPad({ctx,pad:pad2,componentId,kicadComponentPos,componentRotation})}function processPad({ctx,pad:pad2,componentId,kicadComponentPos,componentRotation}){if(!ctx.k2cMatPcb)return;let padAt=pad2.at||{x:0,y:0,angle:0},padType=pad2.padType||pad2.type||"thru_hole",padShape=pad2.shape||"circle",padRotation=padAt.angle||0,rotationRad=-componentRotation*Math.PI/180,rotatedPadX=padAt.x*Math.cos(rotationRad)-padAt.y*Math.sin(rotationRad),rotatedPadY=padAt.x*Math.sin(rotationRad)+padAt.y*Math.cos(rotationRad),padKicadPos={x:kicadComponentPos.x+rotatedPadX,y:kicadComponentPos.y+rotatedPadY},globalPos=applyToPoint2(ctx.k2cMatPcb,padKicadPos),sizeX=1,sizeY=1;pad2.size&&(Array.isArray(pad2.size)?(sizeX=pad2.size[0]||1,sizeY=pad2.size[1]||1):typeof pad2.size=="object"&&(sizeX=pad2.size._width||pad2.size.x||1,sizeY=pad2.size._height||pad2.size.y||1));let size2={x:sizeX,y:sizeY},drill=pad2.drill,totalRotation=-componentRotation-padRotation,padNumber=pad2.number?.toString();if(padNumber){let padPortInfo={padNumber,padType,layers:padType==="smd"?[determineLayerFromLayers(pad2.layers||[])]:[],position:globalPos};createPcbPort({ctx,componentId,padInfo:padPortInfo})}padType==="smd"?createSmdPad({ctx,pad:pad2,componentId,pos:globalPos,size:size2,shape:padShape}):padType==="np_thru_hole"?createNpthHole(ctx,pad2,componentId,globalPos,drill):createPlatedHole(ctx,pad2,componentId,globalPos,size2,drill,padShape,totalRotation)}function createSmdPad({ctx,pad:pad2,componentId,pos,size:size2,shape}){let layers=pad2.layers||[],layer=determineLayerFromLayers(layers);if(shape==="custom"){let primitives=pad2._sxPrimitives?._graphics||pad2.primitives||[],primitivesArray=Array.isArray(primitives)?primitives:[primitives];for(let primitive of primitivesArray)if(primitive.token==="gr_poly"||primitive.gr_poly||primitive.type==="gr_poly"){let grPoly=primitive.gr_poly||primitive,contours=grPoly._contours||grPoly.contours||[],contoursArray=Array.isArray(contours)?contours:[contours],points=[];for(let contour of contoursArray){let pts=contour.points||contour.pts||[],ptsArray=Array.isArray(pts)?pts:[pts];for(let pt3 of ptsArray)pt3.x!==void 0&&pt3.y!==void 0&&points.push({x:pt3.x,y:-pt3.y})}if(points.length>0){let smtpad22={type:"pcb_smtpad",shape:"polygon",pcb_component_id:componentId,layer,port_hints:[pad2.number?.toString()],points:points.map(pt3=>({x:pos.x+pt3.x,y:pos.y+pt3.y}))};ctx.db.pcb_smtpad.insert(smtpad22),ctx.stats&&(ctx.stats.pads=(ctx.stats.pads||0)+1);return}}}let smtpad2={type:"pcb_smtpad",pcb_component_id:componentId,x:pos.x,y:pos.y,width:size2.x,height:size2.y,layer,port_hints:[pad2.number?.toString()]};if(shape==="circle")smtpad2.shape="circle",smtpad2.radius=Math.max(size2.x,size2.y)/2;else if(shape==="rect"||shape==="roundrect"){smtpad2.shape="rect";let roundrectRatio=pad2._sxRoundrectRatio?.value??pad2.roundrect_rratio;if(shape==="roundrect"&&roundrectRatio!==void 0){let cornerRadius=Math.min(size2.x,size2.y)*roundrectRatio/2;smtpad2.corner_radius=cornerRadius}}else smtpad2.shape="rect";ctx.db.pcb_smtpad.insert(smtpad2),ctx.stats&&(ctx.stats.pads=(ctx.stats.pads||0)+1)}function createPlatedHole(ctx,pad2,componentId,pos,size2,drill,shape,rotation4=0){let holeDiameter=typeof drill=="object"?drill?.diameter||drill?.x||.8:drill||.8,holeShape="circle",drillIsOval=typeof drill=="object"&&drill.x!==void 0&&drill.y!==void 0&&drill.x!==drill.y,normalizedRotation=rotation4%360;normalizedRotation<0&&(normalizedRotation+=360);let shouldSwapDimensions=normalizedRotation>=45&&normalizedRotation<135||normalizedRotation>=225&&normalizedRotation<315,outerWidth=size2.x,outerHeight=size2.y;shouldSwapDimensions&&shape==="oval"&&(outerWidth=size2.y,outerHeight=size2.x);let platedHole={pcb_component_id:componentId,x:pos.x,y:pos.y,port_hints:[pad2.number?.toString()]};shape==="circle"?(platedHole.shape="circle",platedHole.hole_diameter=holeDiameter,platedHole.outer_diameter=Math.max(outerWidth,outerHeight),platedHole.layers=["top","bottom"]):shape==="oval"?(platedHole.shape="pill",platedHole.hole_width=holeDiameter,platedHole.hole_height=holeDiameter,platedHole.outer_width=outerWidth,platedHole.outer_height=outerHeight,platedHole.layers=["top","bottom"]):(shape==="rect"||shape==="square")&&(platedHole.shape="pill_hole_with_rect_pad",platedHole.hole_shape="circle",platedHole.pad_shape="rect",platedHole.hole_width=holeDiameter,platedHole.hole_height=holeDiameter,platedHole.rect_pad_width=outerWidth,platedHole.rect_pad_height=outerHeight,platedHole.layers=["top","bottom"]),ctx.db.pcb_plated_hole.insert(platedHole),ctx.stats&&(ctx.stats.pads=(ctx.stats.pads||0)+1)}function createNpthHole(ctx,pad2,componentId,pos,drill){let holeDiameter=drill?.diameter||drill||1;ctx.db.pcb_hole.insert({x:pos.x,y:pos.y,hole_diameter:holeDiameter,hole_shape:"circle"})}function processFootprintText(ctx,footprint,componentId,kicadComponentPos,componentRotation){if(!ctx.k2cMatPcb)return;processFootprintProperties(ctx,footprint,componentId,kicadComponentPos,componentRotation);let texts=footprint.fpTexts||[],textArray=Array.isArray(texts)?texts:[texts];for(let text of textArray){let layerStr=typeof text.layer=="string"?text.layer:text.layer?.names?.join(" ")||"";if(!(layerStr.includes("SilkS")||layerStr.includes("Silk")))continue;let textElement={text:text.text,at:text._sxPosition||text.at,layer:text.layer,effects:text._sxEffects||text.effects,_sxEffects:text._sxEffects};createSilkscreenText(ctx,textElement,componentId,kicadComponentPos,componentRotation,footprint)}}function processFootprintProperties(ctx,footprint,componentId,kicadComponentPos,componentRotation){if(!ctx.k2cMatPcb)return;let properties=footprint.properties||[],propertyArray=Array.isArray(properties)?properties:[properties];for(let property of propertyArray){if(!property.layer)continue;let layerStr=typeof property.layer=="string"?property.layer:property.layer?.names?.join(" ")||"";if(!(layerStr.includes("SilkS")||layerStr.includes("Silk")))continue;let textElement={text:property.value,at:property._sxAt,layer:property.layer,effects:property._sxEffects||property.effects,_sxEffects:property._sxEffects};createSilkscreenText(ctx,textElement,componentId,kicadComponentPos,componentRotation,footprint)}}function createSilkscreenText(ctx,text,componentId,kicadComponentPos,componentRotation,footprint){if(!ctx.k2cMatPcb)return;let at3=text.at,textLocalX=at3?.x??0,textLocalY=at3?.y??0,rotationRad=-componentRotation*Math.PI/180,rotatedTextX=textLocalX*Math.cos(rotationRad)-textLocalY*Math.sin(rotationRad),rotatedTextY=textLocalX*Math.sin(rotationRad)+textLocalY*Math.cos(rotationRad),textKicadPos={x:kicadComponentPos.x+rotatedTextX,y:kicadComponentPos.y+rotatedTextY},pos=applyToPoint2(ctx.k2cMatPcb,textKicadPos),layer=mapTextLayer(text.layer),processedText=substituteKicadVariables(text.text||"",footprint),kicadFontSize=text._sxEffects?._sxFont?._sxSize?._height||text.effects?.font?.size?.y||1;ctx.db.pcb_silkscreen_text.insert({pcb_component_id:componentId,font:"tscircuit2024",font_size:kicadFontSize*1.5,text:processedText,anchor_position:pos,layer})}function rotatePoint4(x3,y3,rotationDeg){let rotationRad=rotationDeg*Math.PI/180;return{x:x3*Math.cos(rotationRad)-y3*Math.sin(rotationRad),y:x3*Math.sin(rotationRad)+y3*Math.cos(rotationRad)}}function processFootprintGraphics(ctx,footprint,componentId,kicadComponentPos,componentRotation){if(!ctx.k2cMatPcb)return;let lines=footprint.fpLines||[],lineArray=Array.isArray(lines)?lines:lines?[lines]:[];for(let line2 of lineArray)createFootprintLine(ctx,line2,componentId,kicadComponentPos,componentRotation);let circles=footprint.fpCircles||[],circleArray=Array.isArray(circles)?circles:circles?[circles]:[];for(let circle2 of circleArray)createFootprintCircle(ctx,circle2,componentId,kicadComponentPos,componentRotation);let arcs=footprint.fpArcs||[],arcArray=Array.isArray(arcs)?arcs:arcs?[arcs]:[];for(let arc2 of arcArray)createFootprintArc(ctx,arc2,componentId,kicadComponentPos,componentRotation)}function createFootprintLine(ctx,line2,componentId,kicadComponentPos,componentRotation){if(!ctx.k2cMatPcb)return;let start=line2.start||{x:0,y:0},end=line2.end||{x:0,y:0},rotatedStart=rotatePoint4(start.x,start.y,-componentRotation),rotatedEnd=rotatePoint4(end.x,end.y,-componentRotation),startKicadPos={x:kicadComponentPos.x+rotatedStart.x,y:kicadComponentPos.y+rotatedStart.y},endKicadPos={x:kicadComponentPos.x+rotatedEnd.x,y:kicadComponentPos.y+rotatedEnd.y},startPos=applyToPoint2(ctx.k2cMatPcb,startKicadPos),endPos=applyToPoint2(ctx.k2cMatPcb,endKicadPos),layer=mapTextLayer(line2.layer),strokeWidth=line2.stroke?.width||line2.width||.12;ctx.db.pcb_silkscreen_path.insert({pcb_component_id:componentId,layer,route:[startPos,endPos],stroke_width:strokeWidth})}function createFootprintCircle(ctx,circle2,componentId,kicadComponentPos,componentRotation){if(!ctx.k2cMatPcb)return;let center2=circle2.center||{x:0,y:0},end=circle2.end||{x:0,y:0},radius=Math.sqrt((end.x-center2.x)**2+(end.y-center2.y)**2),rotatedCenter=rotatePoint4(center2.x,center2.y,-componentRotation),centerKicadPos={x:kicadComponentPos.x+rotatedCenter.x,y:kicadComponentPos.y+rotatedCenter.y},centerPos=applyToPoint2(ctx.k2cMatPcb,centerKicadPos),layer=mapTextLayer(circle2.layer),strokeWidth=circle2.stroke?.width||circle2.width||.12,numPoints=16,circleRoute=[];for(let i3=0;i3<=numPoints;i3++){let angle=i3/numPoints*2*Math.PI,x3=centerPos.x+radius*Math.cos(angle),y3=centerPos.y+radius*Math.sin(angle);circleRoute.push({x:x3,y:y3})}ctx.db.pcb_silkscreen_path.insert({pcb_component_id:componentId,layer,route:circleRoute,stroke_width:strokeWidth})}function calculateArcCenter(p12,p2,p3){let ax2=p12.x-p2.x,ay2=p12.y-p2.y,bx2=p2.x-p3.x,by2=p2.y-p3.y,denom=2*(ax2*by2-ay2*bx2);if(Math.abs(denom)<1e-10)return null;let d12=p12.x*p12.x+p12.y*p12.y-p2.x*p2.x-p2.y*p2.y,d22=p2.x*p2.x+p2.y*p2.y-p3.x*p3.x-p3.y*p3.y,cx2=(d12*by2-d22*ay2)/denom,cy2=(ax2*d22-bx2*d12)/denom,radius=Math.sqrt((p12.x-cx2)**2+(p12.y-cy2)**2);return{center:{x:cx2,y:cy2},radius}}function createFootprintArc(ctx,arc2,componentId,kicadComponentPos,componentRotation){if(!ctx.k2cMatPcb)return;let start=arc2.start||{x:0,y:0},mid=arc2.mid||{x:0,y:0},end=arc2.end||{x:0,y:0},rotatedStart=rotatePoint4(start.x,start.y,-componentRotation),rotatedMid=rotatePoint4(mid.x,mid.y,-componentRotation),rotatedEnd=rotatePoint4(end.x,end.y,-componentRotation),startKicadPos={x:kicadComponentPos.x+rotatedStart.x,y:kicadComponentPos.y+rotatedStart.y},midKicadPos={x:kicadComponentPos.x+rotatedMid.x,y:kicadComponentPos.y+rotatedMid.y},endKicadPos={x:kicadComponentPos.x+rotatedEnd.x,y:kicadComponentPos.y+rotatedEnd.y},layer=mapTextLayer(arc2.layer),strokeWidth=arc2.stroke?.width||arc2.width||.12,arcInfo=calculateArcCenter(startKicadPos,midKicadPos,endKicadPos);if(!arcInfo){let startPos=applyToPoint2(ctx.k2cMatPcb,startKicadPos),endPos=applyToPoint2(ctx.k2cMatPcb,endKicadPos);ctx.db.pcb_silkscreen_path.insert({pcb_component_id:componentId,layer,route:[startPos,endPos],stroke_width:strokeWidth});return}let{center:center2,radius}=arcInfo,startAngle=Math.atan2(startKicadPos.y-center2.y,startKicadPos.x-center2.x),midAngle=Math.atan2(midKicadPos.y-center2.y,midKicadPos.x-center2.x),sweepAngle=Math.atan2(endKicadPos.y-center2.y,endKicadPos.x-center2.x)-startAngle,midSweep=midAngle-startAngle;for(;sweepAngle>Math.PI;)sweepAngle-=2*Math.PI;for(;sweepAngle<-Math.PI;)sweepAngle+=2*Math.PI;for(;midSweep>Math.PI;)midSweep-=2*Math.PI;for(;midSweep<-Math.PI;)midSweep+=2*Math.PI;let isCCW=sweepAngle>0;isCCW&&midSweep>0&&midSweep<sweepAngle||!isCCW&&midSweep<0&&midSweep>sweepAngle||(sweepAngle=sweepAngle>0?sweepAngle-2*Math.PI:sweepAngle+2*Math.PI);let arcLength=Math.abs(radius*sweepAngle),numSegments=Math.max(2,Math.ceil(arcLength/.1)),arcRoute=[];for(let i3=0;i3<=numSegments;i3++){let t5=i3/numSegments,angle=startAngle+sweepAngle*t5,kicadPoint={x:center2.x+radius*Math.cos(angle),y:center2.y+radius*Math.sin(angle)},cjPoint=applyToPoint2(ctx.k2cMatPcb,kicadPoint);arcRoute.push(cjPoint)}ctx.db.pcb_silkscreen_path.insert({pcb_component_id:componentId,layer,route:arcRoute,stroke_width:strokeWidth})}function processFootprint(ctx,footprint){if(!ctx.k2cMatPcb)return;let position2=footprint.position,kicadPos={x:position2?.x??0,y:position2?.y??0},cjPos=applyToPoint2(ctx.k2cMatPcb,kicadPos),rotation4=position2?.angle??0,uuid=footprint.uuid?.value||footprint.tstamp?.value;if(!uuid)return;let componentId=ctx.db.pcb_component.insert({center:{x:cjPos.x,y:cjPos.y},layer:getComponentLayer(footprint),rotation:-rotation4,width:0,height:0}).pcb_component_id;ctx.footprintUuidToComponentId?.set(uuid,componentId),processPads(ctx,footprint,componentId,kicadPos,rotation4),processFootprintText(ctx,footprint,componentId,kicadPos,rotation4),processFootprintGraphics(ctx,footprint,componentId,kicadPos,rotation4),ctx.stats&&(ctx.stats.components=(ctx.stats.components||0)+1)}var CollectFootprintsStage=class extends ConverterStage{constructor(){super(...arguments);__publicField(this,"processedFootprints",new Set)}step(){if(!this.ctx.kicadPcb||!this.ctx.k2cMatPcb)return this.finished=!0,!1;let footprints=this.ctx.kicadPcb.footprints||[],footprintArray=Array.isArray(footprints)?footprints:[footprints];for(let footprint of footprintArray){let uuid=footprint.uuid?.value||footprint.tstamp?.value;uuid&&(this.processedFootprints.has(uuid)||(processFootprint(this.ctx,footprint),this.processedFootprints.add(uuid)))}return this.finished=!0,!1}},CollectTracesStage=class extends ConverterStage{step(){if(!this.ctx.kicadPcb||!this.ctx.k2cMatPcb||!this.ctx.netNumToName)return this.finished=!0,!1;let segments=this.ctx.kicadPcb.segments||[],segmentArray=Array.isArray(segments)?segments:[segments];for(let segment2 of segmentArray)this.createTraceFromSegment(segment2);return this.finished=!0,!1}createTraceFromSegment(segment2){if(!this.ctx.k2cMatPcb||!this.ctx.netNumToName)return;let start=segment2.start||{x:0,y:0},end=segment2.end||{x:0,y:0},width=segment2.width||.2,layerStr=(segment2.layer?.names||[]).join(" "),mappedLayer=this.mapLayer(layerStr),netNum=segment2.net||0,netName=this.ctx.netNumToName.get(netNum)||"",startPos=applyToPoint2(this.ctx.k2cMatPcb,{x:start.x,y:start.y}),endPos=applyToPoint2(this.ctx.k2cMatPcb,{x:end.x,y:end.y}),route=[{route_type:"wire",x:startPos.x,y:startPos.y,width,layer:mappedLayer},{route_type:"wire",x:endPos.x,y:endPos.y,width,layer:mappedLayer}];this.ctx.db.pcb_trace.insert({route,pcb_port_id:void 0}),this.ctx.stats&&(this.ctx.stats.traces=(this.ctx.stats.traces||0)+1)}mapLayer(kicadLayer){return kicadLayer?.includes("B.Cu")||kicadLayer?.includes("Back")?"bottom":"top"}},CollectViasStage=class extends ConverterStage{step(){if(!this.ctx.kicadPcb||!this.ctx.k2cMatPcb||!this.ctx.netNumToName)return this.finished=!0,!1;let vias=this.ctx.kicadPcb.vias||[],viaArray=Array.isArray(vias)?vias:[vias];for(let via of viaArray)this.processVia(via);return this.finished=!0,!1}processVia(via){if(!this.ctx.k2cMatPcb||!this.ctx.netNumToName)return;let at3=via.at||{x:0,y:0},pos=applyToPoint2(this.ctx.k2cMatPcb,{x:at3.x,y:at3.y}),size2=via.size||.8,drill=via.drill||.4,netNum=via.net||0,netName=this.ctx.netNumToName.get(netNum)||"",fromLayer="top",toLayer="bottom";if(via.layers){let layersArray=Array.isArray(via.layers)?via.layers:via.layers._layers||[];layersArray.length>0&&(fromLayer=this.mapLayer(layersArray[0]),layersArray.length>1&&(toLayer=this.mapLayer(layersArray[layersArray.length-1])))}this.ctx.db.pcb_via.insert({x:pos.x,y:pos.y,outer_diameter:size2,hole_diameter:drill,layers:[fromLayer,toLayer]}),this.ctx.stats&&(this.ctx.stats.vias=(this.ctx.stats.vias||0)+1)}mapLayer(kicadLayer){return kicadLayer?.includes("B.Cu")||kicadLayer?.includes("Back")||kicadLayer?.includes("B_Cu")?"bottom":"top"}},CollectZonesStage=class extends ConverterStage{step(){if(!this.ctx.kicadPcb||!this.ctx.k2cMatPcb||!this.ctx.netNumToName)return this.finished=!0,!1;let zones=this.ctx.kicadPcb.zones||[],zoneArray=Array.isArray(zones)?zones:[zones];for(let zone of zoneArray)this.isZoneFilled(zone)&&this.createCopperPourFromZone(zone);return this.finished=!0,!1}isZoneFilled(zone){if(!zone._rawChildren||!Array.isArray(zone._rawChildren))return!1;let fillEntry=zone._rawChildren.find(child=>Array.isArray(child)&&child[0]==="fill");return fillEntry&&fillEntry[1]==="yes"?!0:zone._rawChildren.some(child=>Array.isArray(child)&&child[0]==="filled_polygon")}createCopperPourFromZone(zone){if(!this.ctx.k2cMatPcb||!this.ctx.netNumToName||!zone._rawChildren||!Array.isArray(zone._rawChildren))return;let zoneData=this.parseZoneData(zone._rawChildren),filledPolygons=this.extractFilledPolygons(zone._rawChildren);if(filledPolygons.length===0){let mainPolygon=this.extractMainPolygon(zone._rawChildren);mainPolygon.length>0&&filledPolygons.push(mainPolygon)}if(filledPolygons.length===0){this.ctx.warnings&&this.ctx.warnings.push(`Zone on layer ${zoneData.layer||"unknown"} has no valid polygon points`);return}let layer=this.mapLayer(zoneData.layer),netNum=zoneData.net||0,netName=this.ctx.netNumToName.get(netNum)||zoneData.netName||"";for(let polygonPoints of filledPolygons){let transformedPoints=polygonPoints.map(point6=>applyToPoint2(this.ctx.k2cMatPcb,{x:point6.x,y:point6.y}));this.ctx.db.pcb_copper_pour.insert({layer,net_name:netName,points:transformedPoints,shape:"polygon"}),this.ctx.stats&&(this.ctx.stats.copper_pours=(this.ctx.stats.copper_pours||0)+1)}}parseZoneData(children){let data={};for(let child of children)if(Array.isArray(child))switch(child[0]){case"net":data.net=child[1];break;case"net_name":data.netName=child[1];break;case"layer":data.layer=child[1];break}return data}extractMainPolygon(children){let polygonEntry=children.find(child=>Array.isArray(child)&&child[0]==="polygon");return polygonEntry?this.extractPointsFromPolygonEntry(polygonEntry):[]}extractFilledPolygons(children){let filledPolygonEntries=children.filter(child=>Array.isArray(child)&&child[0]==="filled_polygon"),polygons=[];for(let entry of filledPolygonEntries){let points=this.extractPointsFromPolygonEntry(entry);points.length>0&&polygons.push(points)}return polygons}extractPointsFromPolygonEntry(polygonEntry){let points=[],ptsEntry=polygonEntry.find(child=>Array.isArray(child)&&child[0]==="pts");if(!ptsEntry)return[];for(let i3=1;i3<ptsEntry.length;i3++){let item=ptsEntry[i3];if(Array.isArray(item)&&item[0]==="xy"&&item.length>=3){let x3=item[1],y3=item[2];typeof x3=="number"&&typeof y3=="number"&&points.push({x:x3,y:y3})}}return points}mapLayer(kicadLayer){let layerStr=typeof kicadLayer=="string"?kicadLayer:kicadLayer?.names?.join(" ")||kicadLayer?.name||"";return layerStr.includes("B.Cu")||layerStr.includes("Back")||layerStr.includes("Bottom")?"bottom":"top"}},CollectGraphicsStage=class extends ConverterStage{step(){if(!this.ctx.kicadPcb||!this.ctx.k2cMatPcb)return this.finished=!0,!1;let lines=this.ctx.kicadPcb.graphicLines||[],lineArray=Array.isArray(lines)?lines:[lines],edgeCutLines=[],silkLines=[];for(let line2 of lineArray){let layer=line2.layer,layerStr=(typeof layer=="string"?[layer]:layer?.names||[]).join(" ");layerStr.includes("Edge.Cuts")?edgeCutLines.push(line2):layerStr.includes("SilkS")&&silkLines.push(line2)}edgeCutLines.length>0&&this.createBoardOutline(edgeCutLines);for(let line2 of silkLines)this.createSilkscreenPath(line2);let grRects=this.ctx.kicadPcb.graphicRects||[];for(let rect of grRects)this.processRectangle(rect);let grPolys=this.ctx.kicadPcb.graphicPolys||[],polyArray=Array.isArray(grPolys)?grPolys:[grPolys];for(let poly of polyArray)this.processPolygon(poly);let texts=this.ctx.kicadPcb.graphicTexts||[],textArray=Array.isArray(texts)?texts:[texts];for(let text of textArray){let layer=text.layer;(typeof layer=="string"?[layer]:layer?.names||[]).some(name=>name.includes("SilkS")||name.includes(".Cu")||name.includes("Fab"))&&this.createSilkscreenText(text)}return this.finished=!0,!1}createBoardOutline(lines){if(!this.ctx.k2cMatPcb)return;let segments=lines.map(line2=>({start:line2.start??{x:0,y:0},end:line2.end??{x:0,y:0}})),orderedSegments=[],remainingSegments=[...segments];if(remainingSegments.length>0)for(orderedSegments.push(remainingSegments.shift());remainingSegments.length>0;){let lastEnd=orderedSegments[orderedSegments.length-1].end,foundIndex=remainingSegments.findIndex(seg=>this.pointsEqualKicad(seg.start,lastEnd));if(foundIndex===-1&&(foundIndex=remainingSegments.findIndex(seg=>this.pointsEqualKicad(seg.end,lastEnd)),foundIndex!==-1)){let seg=remainingSegments[foundIndex];orderedSegments.push({start:seg.end,end:seg.start}),remainingSegments.splice(foundIndex,1);continue}foundIndex!==-1?orderedSegments.push(remainingSegments.splice(foundIndex,1)[0]):orderedSegments.push(remainingSegments.shift())}let points=[];for(let segment2 of orderedSegments){let startPos=applyToPoint2(this.ctx.k2cMatPcb,{x:segment2.start.x,y:segment2.start.y}),lastPoint=points[points.length-1];(!lastPoint||!this.pointsEqual(lastPoint,startPos))&&points.push(startPos)}if(orderedSegments.length>0){let lastSegment=orderedSegments[orderedSegments.length-1],endPos=applyToPoint2(this.ctx.k2cMatPcb,{x:lastSegment.end.x,y:lastSegment.end.y}),firstPoint=points[0];firstPoint&&!this.pointsEqual(firstPoint,endPos)&&points.push(endPos)}let existingBoard=this.ctx.db.pcb_board.list()[0];existingBoard?(existingBoard.outline=points,existingBoard.width=this.calculateWidth(points),existingBoard.height=this.calculateHeight(points)):this.ctx.db.pcb_board.insert({outline:points,width:this.calculateWidth(points),height:this.calculateHeight(points)})}createSilkscreenPath(line2){if(!this.ctx.k2cMatPcb)return;let start=line2.start||{x:0,y:0},end=line2.end||{x:0,y:0},startPos=applyToPoint2(this.ctx.k2cMatPcb,{x:start.x,y:start.y}),endPos=applyToPoint2(this.ctx.k2cMatPcb,{x:end.x,y:end.y}),layer=this.mapLayer(line2.layer),strokeWidth=line2.width||.15;this.ctx.db.pcb_silkscreen_path.insert({pcb_component_id:"",layer,route:[startPos,endPos],stroke_width:strokeWidth})}processRectangle(rect){if(!this.ctx.k2cMatPcb)return;let start={x:rect._sxStart?._x??0,y:rect._sxStart?._y??0},end={x:rect._sxEnd?._x??0,y:rect._sxEnd?._y??0},layerStr=(rect._sxLayer?._names||[]).join(" "),isFilled=rect._sxFill&&(rect._sxFill.isFilled===!0||String(rect._sxFill).includes("fill yes")),isCopperLayer=layerStr.includes(".Cu");if(!isFilled||!isCopperLayer)return;let centerKicad={x:(start.x+end.x)/2,y:(start.y+end.y)/2},widthKicad=Math.abs(end.x-start.x),heightKicad=Math.abs(end.y-start.y),centerCJ=applyToPoint2(this.ctx.k2cMatPcb,centerKicad),layer=this.mapLayer(rect._sxLayer);this.ctx.db.pcb_smtpad.insert({pcb_component_id:"",x:centerCJ.x,y:centerCJ.y,width:widthKicad,height:heightKicad,layer,shape:"rect",port_hints:[]}),this.ctx.stats&&(this.ctx.stats.pads=(this.ctx.stats.pads||0)+1)}createSilkscreenText(text){if(!this.ctx.k2cMatPcb)return;let at3=text.at||text._sxPosition,pos=applyToPoint2(this.ctx.k2cMatPcb,{x:at3?.x??0,y:at3?.y??0}),layer=this.mapLayer(text.layer),fontSize=(text._sxEffects?._sxFont?._sxSize?._height||text.effects?.font?.size?.y||1)*1.5;this.ctx.db.pcb_silkscreen_text.insert({pcb_component_id:"",text:text.text||text._text||"",anchor_position:pos,layer,font_size:fontSize,font:"tscircuit2024"})}mapLayer(kicadLayer){let layerStr=typeof kicadLayer=="string"?kicadLayer:kicadLayer?.names?.join(" ")||"";return layerStr.includes("B.")||layerStr.includes("Back")?"bottom":"top"}pointsEqual(p12,p2){return Math.abs(p12.x-p2.x)<.001&&Math.abs(p12.y-p2.y)<.001}pointsEqualKicad(p12,p2){return Math.abs(p12.x-p2.x)<.001&&Math.abs(p12.y-p2.y)<.001}calculateWidth(points){if(points.length===0)return 0;let xs3=points.map(p2=>p2.x);return Math.max(...xs3)-Math.min(...xs3)}calculateHeight(points){if(points.length===0)return 0;let ys3=points.map(p2=>p2.y);return Math.max(...ys3)-Math.min(...ys3)}processPolygon(poly){if(!this.ctx.k2cMatPcb)return;let layerStr=(poly._sxLayer?._names||[]).join(" "),isFilled=poly._sxFill?.filled===!0,isCopperLayer=layerStr.includes(".Cu");if(!isFilled||!isCopperLayer)return;let ptsData=poly._sxPts?.points||[],points=[];for(let pt3 of ptsData)if(pt3.token==="xy")points.push({x:pt3.x,y:pt3.y});else if(pt3.token==="arc"){let arcPoints=this.convertArcToPoints({x:pt3._sxStart?._x,y:pt3._sxStart?._y},{x:pt3._sxMid?._x,y:pt3._sxMid?._y},{x:pt3._sxEnd?._x,y:pt3._sxEnd?._y});points.push(...arcPoints)}if(points.length<3)return;let transformedPoints=points.map(pt3=>applyToPoint2(this.ctx.k2cMatPcb,pt3)),layer=this.mapLayer(poly._sxLayer);this.ctx.db.pcb_smtpad.insert({pcb_component_id:"",shape:"polygon",points:transformedPoints,layer,port_hints:[]}),this.ctx.stats&&(this.ctx.stats.pads=(this.ctx.stats.pads||0)+1)}convertArcToPoints(start,mid,end,numSegments=8){let points=[],{center:center2,radius}=this.calculateArcCenter(start,mid,end);if(!center2||radius===0)return[start,end];let startAngle=Math.atan2(start.y-center2.y,start.x-center2.x),endAngle=Math.atan2(end.y-center2.y,end.x-center2.x),midAngle=Math.atan2(mid.y-center2.y,mid.x-center2.x),angleRange=endAngle-startAngle,midFromStart=midAngle-startAngle,endFromStart=endAngle-startAngle,normalizeMid=(midFromStart+Math.PI)%(2*Math.PI)-Math.PI,normalizeEnd=(endFromStart+Math.PI)%(2*Math.PI)-Math.PI;(normalizeEnd>0&&(normalizeMid<0||normalizeMid>normalizeEnd)||normalizeEnd<0&&(normalizeMid>0||normalizeMid<normalizeEnd))&&(angleRange=angleRange-Math.sign(angleRange)*2*Math.PI);for(let i3=1;i3<numSegments;i3++){let t5=i3/numSegments,angle=startAngle+angleRange*t5;points.push({x:center2.x+radius*Math.cos(angle),y:center2.y+radius*Math.sin(angle)})}return points.push(end),points}calculateArcCenter(p12,p2,p3){let ax2=p12.x,ay2=p12.y,bx2=p2.x,by2=p2.y,cx2=p3.x,cy2=p3.y,d3=2*(ax2*(by2-cy2)+bx2*(cy2-ay2)+cx2*(ay2-by2));if(Math.abs(d3)<1e-10)return{center:null,radius:0};let ux2=((ax2*ax2+ay2*ay2)*(by2-cy2)+(bx2*bx2+by2*by2)*(cy2-ay2)+(cx2*cx2+cy2*cy2)*(ay2-by2))/d3,uy2=((ax2*ax2+ay2*ay2)*(cx2-bx2)+(bx2*bx2+by2*by2)*(ax2-cx2)+(cx2*cx2+cy2*cy2)*(bx2-ax2))/d3,radius=Math.sqrt((ax2-ux2)**2+(ay2-uy2)**2);return{center:{x:ux2,y:uy2},radius}}},CollectSourceTracesStage=class extends ConverterStage{constructor(){super(...arguments);__publicField(this,"processedNets",new Set)}step(){if(!this.ctx.kicadPcb||!this.ctx.netNumToName)return this.finished=!0,!1;let netToPads=new Map,footprints=this.ctx.kicadPcb.footprints||[],footprintArray=Array.isArray(footprints)?footprints:[footprints];for(let footprint of footprintArray)this.processFootprintPads(footprint,netToPads);for(let[netNum,pads]of netToPads.entries())pads.length<2||this.processedNets.has(netNum)||(this.createSourceTrace(netNum,pads),this.processedNets.add(netNum));return this.finished=!0,!1}processFootprintPads(footprint,netToPads){let footprintUuid=footprint.uuid?.value||footprint.tstamp?.value;if(!footprintUuid)return;let componentId=this.ctx.footprintUuidToComponentId?.get(footprintUuid);if(!componentId)return;let pads=footprint.fpPads||[],padArray=Array.isArray(pads)?pads:[pads];for(let pad2 of padArray){let padNumber=pad2.number?.toString();if(!padNumber)continue;let netNum=this.getPadNet(pad2);if(netNum==null||netNum===0)continue;let sourcePortId=this.getOrCreateSourcePort(componentId,padNumber,footprint);netToPads.has(netNum)||netToPads.set(netNum,[]),netToPads.get(netNum).push({componentId,padNumber,sourcePortId})}}getPadNet(pad2){let net=pad2._sxNet||pad2.net;return net?typeof net=="number"?net:typeof net=="object"?net._id??net.number??net.ordinal??null:null:null}getOrCreateSourcePort(componentId,padNumber,footprint){let sourcePortId=`${componentId}_port_${padNumber}`;if(!this.ctx.db.source_port.list().find(sp2=>sp2.source_port_id===sourcePortId)){let reference=this.getFootprintReference(footprint);this.ctx.db.source_port.insert({source_port_id:sourcePortId,source_component_id:componentId,name:`${reference||"U"}.${padNumber}`,pin_number:parseInt(padNumber,10)||void 0})}return sourcePortId}getFootprintReference(footprint){let properties=footprint.properties||[],propertyArray=Array.isArray(properties)?properties:[properties];for(let property of propertyArray)if(property.key==="Reference"||property.name==="Reference")return property.value;let textItems=footprint.fpTexts||[],textArray=Array.isArray(textItems)?textItems:[textItems];for(let text of textArray)if(text.type==="reference")return text.text}createSourceTrace(netNum,pads){let netName=this.ctx.netNumToName?.get(netNum)||`Net-${netNum}`;this.ctx.db.source_trace.insert({connected_source_port_ids:pads.map(p2=>p2.sourcePortId),connected_source_net_ids:[],display_name:netName}),this.ctx.stats&&(this.ctx.stats.traces=(this.ctx.stats.traces||0)+1)}},KicadToCircuitJsonConverter=class{constructor(){__publicField(this,"fsMap",{});__publicField(this,"ctx");__publicField(this,"currentStageIndex",0);__publicField(this,"pipeline")}get currentStage(){return this.pipeline?.[this.currentStageIndex]}addFile(filePath,content){this.fsMap[filePath]=content}_findFileWithExtension(extension){let filesWithExtension=Object.keys(this.fsMap).filter(key=>key.endsWith(extension));if(filesWithExtension.length>1)throw new Error(`Expected 0 or 1 file with extension ${extension}, got ${filesWithExtension.length}. Files: ${filesWithExtension.join(", ")}`);return filesWithExtension[0]??null}initializePipeline(){let pcbFile=this._findFileWithExtension(".kicad_pcb"),schFile=this._findFileWithExtension(".kicad_sch");this.ctx={db:cju_default([]),kicadPcb:pcbFile?parseKicadPcb(this.fsMap[pcbFile]):void 0,kicadSch:schFile?parseKicadSch(this.fsMap[schFile]):void 0,warnings:[],stats:{}},this.pipeline=[],this.ctx.kicadSch&&this.pipeline.push(new InitializeSchematicContextStage(this.ctx),new CollectLibrarySymbolsStage(this.ctx),new CollectSchematicTracesStage(this.ctx)),this.ctx.kicadPcb&&this.pipeline.push(new InitializePcbContextStage(this.ctx),new CollectNetsStage(this.ctx),new CollectFootprintsStage(this.ctx),new CollectTracesStage(this.ctx),new CollectViasStage(this.ctx),new CollectZonesStage(this.ctx),new CollectGraphicsStage(this.ctx),new CollectSourceTracesStage(this.ctx))}step(){return this.pipeline||this.initializePipeline(),this.currentStage?((!this.currentStage.step()||this.currentStage.finished)&&this.currentStageIndex++,this.currentStageIndex<(this.pipeline?.length||0)):!1}runUntilFinished(){this.pipeline||this.initializePipeline();for(let stage of this.pipeline||[])stage.runUntilFinished()}getOutput(){this.ctx||(this.initializePipeline(),this.runUntilFinished());let elements=[],tableNames=["source_component","source_port","source_trace","schematic_component","schematic_port","schematic_trace","schematic_net_label","pcb_component","pcb_port","pcb_smtpad","pcb_plated_hole","pcb_hole","pcb_trace","pcb_via","pcb_copper_pour","pcb_board","pcb_silkscreen_text","pcb_silkscreen_path"];for(let tableName of tableNames){let table=this.ctx.db[tableName];if(table&&typeof table.list=="function"){let items=table.list();items&&Array.isArray(items)&&elements.push(...items)}}return elements}getOutputString(){return JSON.stringify(this.getOutput(),null,2)}getWarnings(){return this.ctx?.warnings||[]}getStats(){return this.ctx?.stats||{}}};var debug14=(0,import_debug23.default)("tsci:eval:import-local-file"),importLocalFile=async(importName,ctx,depth=0)=>{debug14("importLocalFile called with:",{importName});let{fsMap,preSuppliedImports,importStack,currentlyImporting}=ctx,fsPath=resolveFilePathOrThrow(importName,fsMap,void 0,{tsConfig:ctx.tsConfig});if(debug14("fsPath:",fsPath),currentlyImporting.has(fsPath)){let cycleStartIndex=importStack.indexOf(fsPath),cyclePath=cycleStartIndex>=0?importStack.slice(cycleStartIndex).concat(fsPath):[...importStack,fsPath];throw new Error(`Circular dependency detected while importing "${fsPath}". The following import chain forms a cycle:
830
830
 
831
- ${cyclePath.join(" -> ")}`)}if(!ctx.fsMap[fsPath])throw debug13("fsPath not found in fsMap:",fsPath),new Error(`File "${fsPath}" not found`);let fileContent=fsMap[fsPath];debug13("fileContent:",fileContent?.slice(0,100)),currentlyImporting.add(fsPath),importStack.push(fsPath);try{if(fsPath.endsWith(".json")){let jsonData=JSON.parse(fileContent);preSuppliedImports[fsPath]={__esModule:!0,default:jsonData}}else if(fsPath.endsWith(".kicad_pcb")){let converter=new KicadToCircuitJsonConverter;converter.addFile(fsPath,fileContent),converter.runUntilFinished();let circuitJson=converter.getOutput();preSuppliedImports[fsPath]={__esModule:!0,circuitJson}}else if(isStaticAssetPath2(fsPath)){let staticUrl;if(fileContent==="__STATIC_ASSET__")staticUrl=`${ctx.circuit.platform?.projectBaseUrl??""}/${fsPath.startsWith("./")?fsPath.slice(2):fsPath}`;else if(fileContent.startsWith("blob:"))staticUrl=`${fileContent}#ext=${fsPath.split(".").pop()}`;else{let blob=new Blob([fileContent],{type:fsPath.endsWith(".kicad_mod")?"text/plain":"application/octet-stream"}),ext=fsPath.split(".").pop()?.toLowerCase(),isStepFile=ext==="step"||ext==="stp",blobUrl=URL.createObjectURL(blob);staticUrl=isStepFile?`${blobUrl}#ext=${ext}`:blobUrl}preSuppliedImports[fsPath]={__esModule:!0,default:staticUrl}}else if(fsPath.endsWith(".tsx")||fsPath.endsWith(".ts")){let importNames=getImportsFromCode(fileContent);for(let importName2 of importNames)preSuppliedImports[importName2]||await importEvalPath(importName2,ctx,depth+1,{cwd:dirname(fsPath)});try{let transformedCode=transformWithSucrase(fileContent,fsPath);debug13("evalCompiledJs called with:",{code:transformedCode.slice(0,100),dirname:dirname(fsPath)});let typeExports=getTypeExportsFromCode(fileContent),importRunResult=evalCompiledJs(transformedCode,preSuppliedImports,dirname(fsPath));debug13("importRunResult:",{fsPath,importRunResult});let moduleExports=importRunResult.exports;typeExports.length>0&&(moduleExports.__typeOnlyExports__=typeExports),preSuppliedImports[fsPath]=moduleExports}catch(error){throw new Error(`Eval compiled js error for "${importName}": ${error.message}`)}}else if(fsPath.endsWith(".js")||fsPath.endsWith(".mjs")){let importNames=getImportsFromCode(fileContent);for(let importName2 of importNames)preSuppliedImports[importName2]||await importEvalPath(importName2,ctx,depth+1,{cwd:dirname(fsPath)});preSuppliedImports[fsPath]=evalCompiledJs(transformWithSucrase(fileContent,fsPath),preSuppliedImports,dirname(fsPath)).exports}else throw new Error(`Unsupported file extension "${fsPath.split(".").pop()}" for "${fsPath}"`)}finally{importStack.pop(),currentlyImporting.delete(fsPath)}};async function importSnippet(importName,ctx,depth=0){let{preSuppliedImports}=ctx,fullSnippetName=importName.replace("@tsci/","").replace(".","/"),fetchOptions={};ctx.tscircuitSessionToken&&(fetchOptions.headers={Authorization:`Bearer ${ctx.tscircuitSessionToken}`});let{cjs,error}=await globalThis.fetch(`${ctx.cjsRegistryUrl}/${fullSnippetName}`,fetchOptions).then(async res2=>({cjs:await res2.text(),error:null})).catch(e4=>({error:e4,cjs:null}));if(error){console.error("Error fetching import",importName,error);return}if(cjs?.startsWith("{"))try{let jsonResponse=JSON.parse(cjs);if(jsonResponse.ok===!1&&jsonResponse.error)throw new Error(`"${importName}" has no files in dist, it may not be built`)}catch(e4){throw e4 instanceof Error&&e4.message.includes("has no files in dist")?e4:new Error(`Error parsing cjs response: ${e4}`)}let importNames=getImportsFromCode(cjs),staticAssetImports=[],otherImports=[];for(let subImportName of importNames)if(!preSuppliedImports[subImportName])if(subImportName.startsWith("./")&&isStaticAssetPath2(subImportName)){let assetPath=subImportName.slice(2),assetUrl=`${ctx.cjsRegistryUrl}/${importName}/${assetPath}`;staticAssetImports.push({subImportName,assetUrl})}else otherImports.push(subImportName);await Promise.all(staticAssetImports.map(async({subImportName,assetUrl})=>{try{let response=await globalThis.fetch(assetUrl,fetchOptions);if(!response.ok)throw new Error(`Failed to fetch asset: ${response.statusText}`);let blob=await response.blob(),extension=subImportName.split(".").pop()||"",blobUrl=`${URL.createObjectURL(blob)}#ext=${extension}`;preSuppliedImports[subImportName]={__esModule:!0,default:blobUrl}}catch(e4){console.error(`Error fetching static asset ${assetUrl}:`,e4),preSuppliedImports[subImportName]={__esModule:!0,default:assetUrl}}}));for(let subImportName of otherImports)preSuppliedImports[subImportName]||await importEvalPath(subImportName,ctx,depth+1);try{preSuppliedImports[importName]=evalCompiledJs(cjs,preSuppliedImports).exports}catch(e4){console.error("Error importing snippet",e4)}}var import_debug23=__toESM(require_browser(),1);function extractBasePackageName(importName){let basePackageName=importName;if(importName.startsWith("@")){let parts=importName.split("/");basePackageName=parts.length>=2?`${parts[0]}/${parts[1]}`:importName}else basePackageName=importName.split("/")[0];return basePackageName}function isPackageDeclaredInPackageJson(packageName,fsMap){let packageJsonContent=fsMap["package.json"];if(!packageJsonContent)return!0;try{let packageJson=JSON.parse(packageJsonContent),dependencies=packageJson.dependencies||{},devDependencies=packageJson.devDependencies||{},peerDependencies=packageJson.peerDependencies||{},basePackageName=extractBasePackageName(packageName);return basePackageName in dependencies||basePackageName in devDependencies||basePackageName in peerDependencies}catch{return!0}}function getNodeModuleDirectory(packageName,fsMap){let nodeModulePath=`node_modules/${extractBasePackageName(packageName)}`;return Object.keys(fsMap).some(path=>path.startsWith(nodeModulePath+"/")||path===nodeModulePath)?nodeModulePath:null}function getPackageJsonEntrypoint(packageName,fsMap){let packageJsonPath=`node_modules/${extractBasePackageName(packageName)}/package.json`,packageJsonContent=fsMap[packageJsonPath];if(!packageJsonContent)return null;try{let packageJson=JSON.parse(packageJsonContent);return packageJson.main||packageJson.module||null}catch{return null}}function isTypeScriptEntrypoint(entrypoint){return entrypoint?entrypoint.endsWith(".ts")||entrypoint.endsWith(".tsx"):!1}function isDistDirEmpty(packageName,fsMap){let distPath=`node_modules/${extractBasePackageName(packageName)}/dist`;return!Object.keys(fsMap).some(path=>path.startsWith(distPath+"/"))}var moduleExtensions=[".js",".jsx",".ts",".tsx",".json"],resolveEntrypointPath=(packageName,entrypoint,fsMap)=>{let entrypointPath=`node_modules/${extractBasePackageName(packageName)}/${entrypoint}`;if(fsMap[entrypointPath])return entrypointPath;for(let ext of moduleExtensions){let pathWithExt=entrypointPath.replace(/\.js$|\.jsx$/,"")+ext;if(fsMap[pathWithExt])return pathWithExt}return null};var debug14=(0,import_debug23.default)("tsci:eval:import-node-module"),importNodeModule=async(importName,ctx,depth=0)=>{let{preSuppliedImports,fsMap}=ctx;if(preSuppliedImports[importName])return;let hasPackageJson=!!fsMap["package.json"];if(hasPackageJson&&!isPackageDeclaredInPackageJson(importName,fsMap))throw new Error(`Node module imported but not in package.json "${importName}"
831
+ ${cyclePath.join(" -> ")}`)}if(!ctx.fsMap[fsPath])throw debug14("fsPath not found in fsMap:",fsPath),new Error(`File "${fsPath}" not found`);let fileContent=fsMap[fsPath];debug14("fileContent:",fileContent?.slice(0,100)),currentlyImporting.add(fsPath),importStack.push(fsPath);try{if(fsPath.endsWith(".json")){let jsonData=JSON.parse(fileContent);preSuppliedImports[fsPath]={__esModule:!0,default:jsonData}}else if(fsPath.endsWith(".kicad_pcb")){let converter=new KicadToCircuitJsonConverter;converter.addFile(fsPath,fileContent),converter.runUntilFinished();let circuitJson=converter.getOutput();preSuppliedImports[fsPath]={__esModule:!0,circuitJson}}else if(isStaticAssetPath2(fsPath)){let staticUrl;if(fileContent==="__STATIC_ASSET__")staticUrl=`${ctx.circuit.platform?.projectBaseUrl??""}/${fsPath.startsWith("./")?fsPath.slice(2):fsPath}`;else if(fileContent.startsWith("blob:"))staticUrl=`${fileContent}#ext=${fsPath.split(".").pop()}`;else{let blob=new Blob([fileContent],{type:fsPath.endsWith(".kicad_mod")?"text/plain":"application/octet-stream"}),ext=fsPath.split(".").pop()?.toLowerCase(),isStepFile=ext==="step"||ext==="stp",blobUrl=URL.createObjectURL(blob);staticUrl=isStepFile?`${blobUrl}#ext=${ext}`:blobUrl}preSuppliedImports[fsPath]={__esModule:!0,default:staticUrl}}else if(fsPath.endsWith(".tsx")||fsPath.endsWith(".ts")){let importNames=getImportsFromCode(fileContent);for(let importName2 of importNames)preSuppliedImports[importName2]||await importEvalPath(importName2,ctx,depth+1,{cwd:dirname(fsPath)});try{let transformedCode=transformWithSucrase(fileContent,fsPath);debug14("evalCompiledJs called with:",{code:transformedCode.slice(0,100),dirname:dirname(fsPath)});let typeExports=getTypeExportsFromCode(fileContent),importRunResult=evalCompiledJs(transformedCode,preSuppliedImports,dirname(fsPath));debug14("importRunResult:",{fsPath,importRunResult});let moduleExports=importRunResult.exports;typeExports.length>0&&(moduleExports.__typeOnlyExports__=typeExports),preSuppliedImports[fsPath]=moduleExports}catch(error){throw new Error(`Eval compiled js error for "${importName}": ${error.message}`)}}else if(fsPath.endsWith(".js")||fsPath.endsWith(".mjs")){let importNames=getImportsFromCode(fileContent);for(let importName2 of importNames)preSuppliedImports[importName2]||await importEvalPath(importName2,ctx,depth+1,{cwd:dirname(fsPath)});preSuppliedImports[fsPath]=evalCompiledJs(transformWithSucrase(fileContent,fsPath),preSuppliedImports,dirname(fsPath)).exports}else throw new Error(`Unsupported file extension "${fsPath.split(".").pop()}" for "${fsPath}"`)}finally{importStack.pop(),currentlyImporting.delete(fsPath)}};async function importSnippet(importName,ctx,depth=0){let{preSuppliedImports}=ctx,fullSnippetName=importName.replace("@tsci/","").replace(".","/"),fetchOptions={};ctx.tscircuitSessionToken&&(fetchOptions.headers={Authorization:`Bearer ${ctx.tscircuitSessionToken}`});let{cjs,error}=await globalThis.fetch(`${ctx.cjsRegistryUrl}/${fullSnippetName}`,fetchOptions).then(async res2=>({cjs:await res2.text(),error:null})).catch(e4=>({error:e4,cjs:null}));if(error){console.error("Error fetching import",importName,error);return}if(cjs?.startsWith("{"))try{let jsonResponse=JSON.parse(cjs);if(jsonResponse.ok===!1&&jsonResponse.error)throw new Error(`"${importName}" has no files in dist, it may not be built`)}catch(e4){throw e4 instanceof Error&&e4.message.includes("has no files in dist")?e4:new Error(`Error parsing cjs response: ${e4}`)}let importNames=getImportsFromCode(cjs),staticAssetImports=[],otherImports=[];for(let subImportName of importNames)if(!preSuppliedImports[subImportName])if(subImportName.startsWith("./")&&isStaticAssetPath2(subImportName)){let assetPath=subImportName.slice(2),assetUrl=`${ctx.cjsRegistryUrl}/${importName}/${assetPath}`;staticAssetImports.push({subImportName,assetUrl})}else otherImports.push(subImportName);await Promise.all(staticAssetImports.map(async({subImportName,assetUrl})=>{try{let response=await globalThis.fetch(assetUrl,fetchOptions);if(!response.ok)throw new Error(`Failed to fetch asset: ${response.statusText}`);let blob=await response.blob(),extension=subImportName.split(".").pop()||"",blobUrl=`${URL.createObjectURL(blob)}#ext=${extension}`;preSuppliedImports[subImportName]={__esModule:!0,default:blobUrl}}catch(e4){console.error(`Error fetching static asset ${assetUrl}:`,e4),preSuppliedImports[subImportName]={__esModule:!0,default:assetUrl}}}));for(let subImportName of otherImports)preSuppliedImports[subImportName]||await importEvalPath(subImportName,ctx,depth+1);try{preSuppliedImports[importName]=evalCompiledJs(cjs,preSuppliedImports).exports}catch(e4){console.error("Error importing snippet",e4)}}var import_debug24=__toESM(require_browser(),1);function extractBasePackageName(importName){let basePackageName=importName;if(importName.startsWith("@")){let parts=importName.split("/");basePackageName=parts.length>=2?`${parts[0]}/${parts[1]}`:importName}else basePackageName=importName.split("/")[0];return basePackageName}function isPackageDeclaredInPackageJson(packageName,fsMap){let packageJsonContent=fsMap["package.json"];if(!packageJsonContent)return!0;try{let packageJson=JSON.parse(packageJsonContent),dependencies=packageJson.dependencies||{},devDependencies=packageJson.devDependencies||{},peerDependencies=packageJson.peerDependencies||{},basePackageName=extractBasePackageName(packageName);return basePackageName in dependencies||basePackageName in devDependencies||basePackageName in peerDependencies}catch{return!0}}function getNodeModuleDirectory(packageName,fsMap){let nodeModulePath=`node_modules/${extractBasePackageName(packageName)}`;return Object.keys(fsMap).some(path=>path.startsWith(nodeModulePath+"/")||path===nodeModulePath)?nodeModulePath:null}function getPackageJsonEntrypoint(packageName,fsMap){let packageJsonPath=`node_modules/${extractBasePackageName(packageName)}/package.json`,packageJsonContent=fsMap[packageJsonPath];if(!packageJsonContent)return null;try{let packageJson=JSON.parse(packageJsonContent);return packageJson.main||packageJson.module||null}catch{return null}}function isTypeScriptEntrypoint(entrypoint){return entrypoint?entrypoint.endsWith(".ts")||entrypoint.endsWith(".tsx"):!1}function isDistDirEmpty(packageName,fsMap){let distPath=`node_modules/${extractBasePackageName(packageName)}/dist`;return!Object.keys(fsMap).some(path=>path.startsWith(distPath+"/"))}var moduleExtensions=[".js",".jsx",".ts",".tsx",".json"],resolveEntrypointPath=(packageName,entrypoint,fsMap)=>{let entrypointPath=`node_modules/${extractBasePackageName(packageName)}/${entrypoint}`;if(fsMap[entrypointPath])return entrypointPath;for(let ext of moduleExtensions){let pathWithExt=entrypointPath.replace(/\.js$|\.jsx$/,"")+ext;if(fsMap[pathWithExt])return pathWithExt}return null};var debug15=(0,import_debug24.default)("tsci:eval:import-node-module"),importNodeModule=async(importName,ctx,depth=0)=>{let{preSuppliedImports,fsMap}=ctx;if(preSuppliedImports[importName])return;let hasPackageJson=!!fsMap["package.json"];if(hasPackageJson&&!isPackageDeclaredInPackageJson(importName,fsMap))throw new Error(`Node module imported but not in package.json "${importName}"
832
832
 
833
833
  ${ctx.logger.stringifyLogs()}`);let nodeModuleDir=hasPackageJson?getNodeModuleDirectory(importName,fsMap):null,resolvedNodeModulePath=resolveNodeModule(importName,ctx.fsMap,"");if(hasPackageJson&&resolvedNodeModulePath){if(!nodeModuleDir)throw new Error(`Node module "${importName}" has no files in the node_modules directory
834
834
 
@@ -840,11 +840,11 @@ ${ctx.logger.stringifyLogs()}`)}if(!resolvedNodeModulePath){if(hasPackageJson&&n
840
840
 
841
841
  ${ctx.logger.stringifyLogs()}`);if(entrypoint&&!resolveEntrypointPath(importName,entrypoint,fsMap))throw new Error(`${importName}'s main path (${entrypoint}) was not found, it may not be built
842
842
 
843
- ${ctx.logger.stringifyLogs()}`)}let platform=ctx.circuit?.platform;if(platform?.nodeModulesResolver){debug14(`Attempting to resolve "${importName}" using nodeModulesResolver`);try{let fileContent=await platform.nodeModulesResolver(importName);if(fileContent){debug14(`Successfully resolved "${importName}" via nodeModulesResolver`);let syntheticPath=`node_modules/${importName}.ts`;ctx.fsMap[syntheticPath]=fileContent,await importLocalFile(syntheticPath,ctx,depth),preSuppliedImports[importName]=preSuppliedImports[syntheticPath];let unprefixedPath2=syntheticPath.replace(/^node_modules\//,"");preSuppliedImports[unprefixedPath2]=preSuppliedImports[syntheticPath];return}debug14(`nodeModulesResolver returned null for "${importName}"`)}catch(error){debug14(`nodeModulesResolver failed for "${importName}":`,error)}}throw new Error(`Node module "${importName}" not found`)}await importLocalFile(resolvedNodeModulePath,ctx,depth),preSuppliedImports[importName]=preSuppliedImports[resolvedNodeModulePath];let unprefixedPath=resolvedNodeModulePath.replace(/^node_modules\//,"");if(preSuppliedImports[unprefixedPath]=preSuppliedImports[resolvedNodeModulePath],resolvedNodeModulePath.endsWith("/index.tsx")||resolvedNodeModulePath.endsWith("/index.ts")||resolvedNodeModulePath.endsWith("/index.js")){let unprefixedDirPath=resolvedNodeModulePath.replace(/\/index\.(tsx?|js)$/,"").replace(/^node_modules\//,"");if(preSuppliedImports[unprefixedDirPath]=preSuppliedImports[resolvedNodeModulePath],unprefixedDirPath.startsWith("@")){let scopeParts=unprefixedDirPath.split("/");if(scopeParts.length>=2){let scopedName=`${scopeParts[0]}/${scopeParts[1]}`;preSuppliedImports[scopedName]=preSuppliedImports[resolvedNodeModulePath]}}}};var import_debug24=__toESM(require_browser(),1);var debug15=(0,import_debug24.default)("tsci:eval:import-npm-package");function extractPackagePathFromJSDelivr(url){let prefix="https://cdn.jsdelivr.net/npm/";return url.startsWith(prefix)?url.substring(prefix.length).replace(/\/\+esm$/,""):url}async function importNpmPackageFromCdn({importName,depth=0},ctx){debug15(`importing npm package from CDN: ${importName}`);let{preSuppliedImports}=ctx;if(preSuppliedImports[importName])return;let npmCdnUrl=`https://cdn.jsdelivr.net/npm/${importName}/+esm`,finalUrl,{content,error}=await globalThis.fetch(npmCdnUrl).then(async res2=>{if(finalUrl=res2.url,!res2.ok)throw new Error(`Could not fetch "${importName}" from jsdelivr: ${res2.statusText}
843
+ ${ctx.logger.stringifyLogs()}`)}let platform=ctx.circuit?.platform;if(platform?.nodeModulesResolver){debug15(`Attempting to resolve "${importName}" using nodeModulesResolver`);try{let fileContent=await platform.nodeModulesResolver(importName);if(fileContent){debug15(`Successfully resolved "${importName}" via nodeModulesResolver`);let syntheticPath=`node_modules/${importName}.ts`;ctx.fsMap[syntheticPath]=fileContent,await importLocalFile(syntheticPath,ctx,depth),preSuppliedImports[importName]=preSuppliedImports[syntheticPath];let unprefixedPath2=syntheticPath.replace(/^node_modules\//,"");preSuppliedImports[unprefixedPath2]=preSuppliedImports[syntheticPath];return}debug15(`nodeModulesResolver returned null for "${importName}"`)}catch(error){debug15(`nodeModulesResolver failed for "${importName}":`,error)}}throw new Error(`Node module "${importName}" not found`)}await importLocalFile(resolvedNodeModulePath,ctx,depth),preSuppliedImports[importName]=preSuppliedImports[resolvedNodeModulePath];let unprefixedPath=resolvedNodeModulePath.replace(/^node_modules\//,"");if(preSuppliedImports[unprefixedPath]=preSuppliedImports[resolvedNodeModulePath],resolvedNodeModulePath.endsWith("/index.tsx")||resolvedNodeModulePath.endsWith("/index.ts")||resolvedNodeModulePath.endsWith("/index.js")){let unprefixedDirPath=resolvedNodeModulePath.replace(/\/index\.(tsx?|js)$/,"").replace(/^node_modules\//,"");if(preSuppliedImports[unprefixedDirPath]=preSuppliedImports[resolvedNodeModulePath],unprefixedDirPath.startsWith("@")){let scopeParts=unprefixedDirPath.split("/");if(scopeParts.length>=2){let scopedName=`${scopeParts[0]}/${scopeParts[1]}`;preSuppliedImports[scopedName]=preSuppliedImports[resolvedNodeModulePath]}}}};var import_debug25=__toESM(require_browser(),1);var debug16=(0,import_debug25.default)("tsci:eval:import-npm-package");function extractPackagePathFromJSDelivr(url){let prefix="https://cdn.jsdelivr.net/npm/";return url.startsWith(prefix)?url.substring(prefix.length).replace(/\/\+esm$/,""):url}async function importNpmPackageFromCdn({importName,depth=0},ctx){debug16(`importing npm package from CDN: ${importName}`);let{preSuppliedImports}=ctx;if(preSuppliedImports[importName])return;let npmCdnUrl=`https://cdn.jsdelivr.net/npm/${importName}/+esm`,finalUrl,{content,error}=await globalThis.fetch(npmCdnUrl).then(async res2=>{if(finalUrl=res2.url,!res2.ok)throw new Error(`Could not fetch "${importName}" from jsdelivr: ${res2.statusText}
844
844
 
845
845
  ${ctx.logger.stringifyLogs()}`);return{content:await res2.text(),error:null}}).catch(e4=>({error:e4,content:null}));if(error)throw console.error("Error fetching npm import",importName,error),error;let finalImportName=extractPackagePathFromJSDelivr(finalUrl),cwd=dirname(finalImportName),importNames=getImportsFromCode(content);for(let subImportName of importNames)preSuppliedImports[subImportName]||await importEvalPath(subImportName,ctx,depth+1,{cwd});let transformedCode=transformWithSucrase(content,finalImportName||importName);try{let exports=evalCompiledJs(transformedCode,preSuppliedImports,cwd).exports;preSuppliedImports[importName]=exports,preSuppliedImports[finalImportName]=exports,preSuppliedImports[finalUrl]=exports}catch(e4){throw new Error(`Eval npm package error for "${importName}": ${e4.message}
846
846
 
847
- ${ctx.logger.stringifyLogs()}`)}}var import_debug25=__toESM(require_browser(),1);var debug16=(0,import_debug25.default)("tsci:eval:import-eval-path");async function importEvalPath(importName,ctx,depth=0,opts={}){debug16("importEvalPath called with:",{importName,depth,opts}),ctx.logger.info(`importEvalPath("${importName}", {cwd: "${opts.cwd}", depth: ${depth}})`),debug16(`${" ".repeat(depth)}\u27A1\uFE0F`,importName);let{preSuppliedImports}=ctx,disableCdnLoading=ctx.disableCdnLoading||globalThis.__DISABLE_CDN_LOADING__;if(preSuppliedImports[importName]){ctx.logger.info(`Import "${importName}" in preSuppliedImports[1]`);return}if(importName.startsWith("./")&&preSuppliedImports[importName.slice(2)]){ctx.logger.info(`Import "${importName}" in preSuppliedImports[2]`);return}if(importName.includes("/")&&!importName.startsWith(".")&&!importName.startsWith("/")){let basePkg=importName.split("/")[0],isScoped=basePkg.startsWith("@"),pkgName=isScoped?importName.split("/").slice(0,2).join("/"):basePkg,subpath=isScoped?importName.split("/").slice(2).join("/"):importName.split("/").slice(1).join("/");if(preSuppliedImports[pkgName])try{let resolved=await import(`${pkgName}/${subpath}`);preSuppliedImports[importName]=resolved,ctx.logger.info(`Import "${importName}" resolved from preSuppliedImports base package "${pkgName}"`);return}catch{ctx.logger.info(`Failed to resolve "${importName}" from preSuppliedImports package "${pkgName}", falling back to normal resolution`)}}if(depth>30)throw new Error(`Max depth for imports reached (30) Import Path: ${ctx.importStack.join(" -> ")}`);if(importName.startsWith("/npm/")){let pkgName=importName.replace(/^\/npm\//,"").replace(/\/\+esm$/,"");if(disableCdnLoading)throw new Error(`Cannot find module "${pkgName}". The package is not available in the local environment.
847
+ ${ctx.logger.stringifyLogs()}`)}}var import_debug26=__toESM(require_browser(),1);var debug17=(0,import_debug26.default)("tsci:eval:import-eval-path");async function importEvalPath(importName,ctx,depth=0,opts={}){debug17("importEvalPath called with:",{importName,depth,opts}),ctx.logger.info(`importEvalPath("${importName}", {cwd: "${opts.cwd}", depth: ${depth}})`),debug17(`${" ".repeat(depth)}\u27A1\uFE0F`,importName);let{preSuppliedImports}=ctx,disableCdnLoading=ctx.disableCdnLoading||globalThis.__DISABLE_CDN_LOADING__;if(preSuppliedImports[importName]){ctx.logger.info(`Import "${importName}" in preSuppliedImports[1]`);return}if(importName.startsWith("./")&&preSuppliedImports[importName.slice(2)]){ctx.logger.info(`Import "${importName}" in preSuppliedImports[2]`);return}if(importName.includes("/")&&!importName.startsWith(".")&&!importName.startsWith("/")){let basePkg=importName.split("/")[0],isScoped=basePkg.startsWith("@"),pkgName=isScoped?importName.split("/").slice(0,2).join("/"):basePkg,subpath=isScoped?importName.split("/").slice(2).join("/"):importName.split("/").slice(1).join("/");if(preSuppliedImports[pkgName])try{let resolved=await import(`${pkgName}/${subpath}`);preSuppliedImports[importName]=resolved,ctx.logger.info(`Import "${importName}" resolved from preSuppliedImports base package "${pkgName}"`);return}catch{ctx.logger.info(`Failed to resolve "${importName}" from preSuppliedImports package "${pkgName}", falling back to normal resolution`)}}if(depth>30)throw new Error(`Max depth for imports reached (30) Import Path: ${ctx.importStack.join(" -> ")}`);if(importName.startsWith("/npm/")){let pkgName=importName.replace(/^\/npm\//,"").replace(/\/\+esm$/,"");if(disableCdnLoading)throw new Error(`Cannot find module "${pkgName}". The package is not available in the local environment.
848
848
 
849
849
  ${ctx.logger.stringifyLogs()}`);ctx.logger.info(`importNpmPackageFromCdn("${pkgName}")`),await importNpmPackageFromCdn({importName:pkgName,depth},ctx);let pkg=preSuppliedImports[pkgName];pkg&&(preSuppliedImports[importName]=pkg);return}let tsconfigDir=".",tsConfigToUse=ctx.tsConfig;if(ctx.tsConfig&&opts.cwd){let nodeModulesMatch=opts.cwd.match(/^(node_modules\/[^\/]+)/);nodeModulesMatch&&(tsconfigDir=nodeModulesMatch[1],tsConfigToUse=null)}let resolvedLocalImportPath=resolveFilePath(importName,ctx.fsMap,opts.cwd,{tsConfig:tsConfigToUse,tsconfigDir});if(resolvedLocalImportPath){ctx.logger.info(`importLocalFile("${resolvedLocalImportPath}")`),await importLocalFile(resolvedLocalImportPath,ctx,depth),importName!==resolvedLocalImportPath&&(preSuppliedImports[importName]=preSuppliedImports[resolvedLocalImportPath]);return}let tsConfig=ctx.tsConfig??getTsConfig(ctx.fsMap);if(!ctx.tsConfig&&tsConfig&&(ctx.tsConfig=tsConfig),matchesTsconfigPathPattern(importName,tsConfig))throw new Error(`Import "${importName}" matches a tsconfig path alias but could not be resolved to an existing file${opts.cwd?` from directory "${opts.cwd}"`:""}
850
850
 
@@ -864,7 +864,7 @@ ${ctx.logger.stringifyLogs()}`)}if(disableCdnLoading)throw new Error(`Cannot fin
864
864
 
865
865
  ${ctx.logger.stringifyLogs()}`);return ctx.logger.info(`importNpmPackageFromCdn("${importName}")`),importNpmPackageFromCdn({importName,depth},ctx)}throw new Error(`Unresolved import "${importName}" ${opts.cwd?`from directory "${opts.cwd}"`:""}
866
866
 
867
- ${ctx.logger.stringifyLogs()}`)}var import_debug26=__toESM(require_browser(),1),debug17=(0,import_debug26.default)("tsci:eval:setupDefaultEntrypointIfNeeded"),setupDefaultEntrypointIfNeeded=opts=>{if(!opts.entrypoint&&!opts.mainComponentPath)if("index.tsx"in opts.fsMap)opts.mainComponentPath="index.tsx";else if("index.ts"in opts.fsMap)opts.mainComponentPath="index.ts";else if(Object.keys(opts.fsMap).filter(k4=>k4.endsWith(".tsx")).length===1)opts.mainComponentPath=Object.keys(opts.fsMap)[0];else if("tscircuit.config.json"in opts.fsMap){let configContent=opts.fsMap["tscircuit.config.json"];try{let config=JSON.parse(configContent);config.mainEntrypoint&&(opts.entrypoint=config.mainEntrypoint)}catch(e4){console.warn("Failed to parse tscircuit.config.json:",e4)}}else throw new Error("Either entrypoint or mainComponentPath must be provided (no index file, could not infer entrypoint)");if(!opts.entrypoint&&opts.mainComponentPath){if(opts.entrypoint="entrypoint.tsx",!opts.fsMap[resolveFilePathOrThrow(opts.mainComponentPath,opts.fsMap)])throw new Error(`Main component path "${opts.mainComponentPath}" not found in fsMap. Available paths: ${Object.keys(opts.fsMap).join(", ")}`);opts.fsMap[opts.entrypoint]=`
867
+ ${ctx.logger.stringifyLogs()}`)}var import_debug27=__toESM(require_browser(),1),debug18=(0,import_debug27.default)("tsci:eval:setupDefaultEntrypointIfNeeded"),setupDefaultEntrypointIfNeeded=opts=>{if(!opts.entrypoint&&!opts.mainComponentPath)if("index.tsx"in opts.fsMap)opts.mainComponentPath="index.tsx";else if("index.ts"in opts.fsMap)opts.mainComponentPath="index.ts";else if(Object.keys(opts.fsMap).filter(k4=>k4.endsWith(".tsx")).length===1)opts.mainComponentPath=Object.keys(opts.fsMap)[0];else if("tscircuit.config.json"in opts.fsMap){let configContent=opts.fsMap["tscircuit.config.json"];try{let config=JSON.parse(configContent);config.mainEntrypoint&&(opts.entrypoint=config.mainEntrypoint)}catch(e4){console.warn("Failed to parse tscircuit.config.json:",e4)}}else throw new Error("Either entrypoint or mainComponentPath must be provided (no index file, could not infer entrypoint)");if(!opts.entrypoint&&opts.mainComponentPath){if(opts.entrypoint="entrypoint.tsx",!opts.fsMap[resolveFilePathOrThrow(opts.mainComponentPath,opts.fsMap)])throw new Error(`Main component path "${opts.mainComponentPath}" not found in fsMap. Available paths: ${Object.keys(opts.fsMap).join(", ")}`);opts.fsMap[opts.entrypoint]=`
868
868
  import * as UserComponents from "./${opts.mainComponentPath}";
869
869
 
870
870
  ${opts.mainComponentName?`
@@ -874,7 +874,7 @@ ${ctx.logger.stringifyLogs()}`)}var import_debug26=__toESM(require_browser(),1),
874
874
  .filter(([name]) => !name.startsWith("use"))
875
875
  .map(([_, component]) => component)[0] || (() => null);`}
876
876
 
877
- ${debug17.enabled?`
877
+ ${debug18.enabled?`
878
878
  console.log({ UserComponents })
879
879
  console.log("ComponentToRender " + ComponentToRender.toString(), { ComponentToRender })
880
880
  `:""}