ccstate 4.7.0 → 4.9.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/core/interceptor.ts","../../src/core/typing-util.ts","../../src/core/signal/signal.ts","../../src/core/signal/computed.ts","../../src/core/store/set.ts","../../src/core/signal/state.ts","../../src/core/store/sub.ts","../../src/core/store/store.ts","../../src/debug/debug-store.ts","../../src/debug/console-inspector.ts"],"sourcesContent":["import type { Command, Computed, Signal, State } from '../../types/core/signal';\nimport type {\n CallbackFunc,\n ComputedState,\n InterceptorComputed,\n InterceptorGet,\n InterceptorNotify,\n InterceptorSet,\n InterceptorSub,\n InterceptorUnsub,\n SetArgs,\n} from '../../types/core/store';\n\ntype DataWithCalledState<T> =\n | {\n called: false;\n }\n | {\n called: true;\n data: T;\n };\n\nexport function withSetInterceptor<T, Args extends SetArgs<T, unknown[]>>(\n fn: () => T | undefined,\n writable$: State<T> | Command<T, Args>,\n interceptor: InterceptorSet | undefined,\n ...args: Args\n): T | undefined {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T | undefined>;\n const wrappedFn = () => {\n result = { called: true, data: fn() };\n return result.data;\n };\n if ('write' in writable$) {\n interceptor(writable$, wrappedFn, ...args);\n } else {\n interceptor(writable$, wrappedFn, args[0]);\n }\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withGetInterceptor<T>(fn: () => T, signal: Signal<T>, interceptor?: InterceptorGet): T {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T>;\n\n interceptor(signal, () => {\n result = { called: true, data: fn() };\n return result.data;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withComputedInterceptor<T>(\n fn: () => ComputedState<T>,\n signal: Computed<T>,\n interceptor?: InterceptorComputed,\n): ComputedState<T> {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<ComputedState<T>>;\n\n interceptor(signal, () => {\n result = { called: true, data: fn() };\n return result.data.val;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withGeValInterceptor<T>(fn: () => T, signal: Signal<T>, interceptor?: InterceptorGet): T {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T>;\n\n interceptor(signal, () => {\n result = { called: true, data: fn() };\n return result.data;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withSubInterceptor<T>(\n fn: () => void,\n signal: Signal<T>,\n callback$: Command<unknown, []>,\n interceptor?: InterceptorSub,\n) {\n if (!interceptor) {\n fn();\n return;\n }\n\n let result = { called: false } as DataWithCalledState<void>;\n\n interceptor(signal, callback$, () => {\n result = { called: true, data: undefined };\n fn();\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n}\n\nexport function withUnsubInterceptor<T>(\n fn: () => void,\n signal: Signal<T>,\n callback$: Command<unknown, []>,\n interceptor?: InterceptorUnsub,\n): void {\n if (!interceptor) {\n fn();\n return;\n }\n\n let result = { called: false } as DataWithCalledState<void>;\n\n interceptor(signal, callback$, () => {\n result = { called: true, data: undefined };\n fn();\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n}\n\nexport function withNotifyInterceptor<T>(fn: () => T, callback$: CallbackFunc<T>, interceptor?: InterceptorNotify): T {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T>;\n\n interceptor(callback$, () => {\n result = { called: true, data: fn() };\n return result.data;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n","import type { Computed, Signal } from '../../types/core/signal';\nimport type { ComputedState, SignalState } from '../../types/core/store';\n\nexport function canReadAsCompute<T>(atom: Signal<T>): atom is Computed<T> {\n return 'read' in atom;\n}\n\nexport function isComputedState<T>(state: SignalState<T>): state is ComputedState<T> {\n return 'dependencies' in state;\n}\n","import type { Signal } from '../../../types/core/signal';\nimport type { StoreContext } from '../../../types/core/store';\n\nexport function currentValue<T>(signal: Signal<T>, context: StoreContext): T | undefined {\n return context.stateMap.get(signal)?.val as T | undefined;\n}\n\nexport function shouldDistinct<T>(signal: Signal<T>, value: T, context: StoreContext) {\n return currentValue(signal, context) === value;\n}\n","import type { Computed, Getter, Signal } from '../../../types/core/signal';\nimport type {\n ComputedState,\n Mount,\n Mutation,\n ReadComputed,\n ReadSignal,\n StoreContext,\n Unmount,\n} from '../../../types/core/store';\nimport { withGeValInterceptor } from '../interceptor';\nimport { canReadAsCompute } from '../typing-util';\nimport { shouldDistinct } from './signal';\n\nfunction checkEpoch<T>(\n readComputed: ReadComputed,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): boolean {\n for (const [dep, epoch] of computedState.dependencies.entries()) {\n const depEpoch = canReadAsCompute(dep)\n ? readComputed(dep, context, mutation).epoch\n : context.stateMap.get(dep)?.epoch;\n\n if (depEpoch !== epoch) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function tryGetCached<T>(\n readComputed: ReadComputed,\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> | undefined {\n const signalState = context.stateMap.get(computed$) as ComputedState<T> | undefined;\n if (!signalState) {\n return undefined;\n }\n\n // If a computed is marked as potentially dirty, we should perform a\n // thorough epoch check. Alternatively, we can check the mounted state since\n // a mounted computed is always re-evaluated immediately.\n const mayDirty = mutation?.potentialDirtyIds.has(computed$.id);\n if (!mayDirty && signalState.mounted) {\n return signalState;\n }\n\n if (checkEpoch(readComputed, signalState, context, mutation)) {\n if (mayDirty) {\n mutation?.potentialDirtyIds.delete(computed$.id);\n }\n return signalState;\n }\n\n return undefined;\n}\n\nfunction wrapGet<T>(\n readSignal: ReadSignal,\n mount: Mount,\n callerComputed$: Computed<T>,\n callerState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): [Getter, Map<Signal<unknown>, number>] {\n const readDeps = new Map<Signal<unknown>, number>();\n\n return [\n (dep$) => {\n const depState = readSignal(dep$, context, mutation);\n\n if (callerState.dependencies === readDeps) {\n readDeps.set(dep$, depState.epoch);\n\n const callerMounted = !!callerState.mounted;\n if (callerMounted && !depState.mounted) {\n mount(dep$, context, mutation).readDepts.add(callerComputed$);\n } else if (callerMounted && depState.mounted) {\n depState.mounted.readDepts.add(callerComputed$);\n }\n }\n\n return depState.val;\n },\n readDeps,\n ];\n}\n\nfunction getOrInitComputedState<T>(computed$: Computed<T>, context: StoreContext): ComputedState<T> {\n let computedState: ComputedState<T> | undefined = context.stateMap.get(computed$) as ComputedState<T> | undefined;\n if (!computedState) {\n computedState = {\n dependencies: new Map<Signal<unknown>, number>(),\n epoch: -1,\n } as ComputedState<T>;\n context.stateMap.set(computed$, computedState);\n }\n\n return computedState;\n}\n\nfunction cleanupMissingDependencies<T>(\n unmount: Unmount,\n computed$: Computed<T>,\n lastDeps: Map<Signal<unknown>, number>,\n currDeps: Map<Signal<unknown>, number>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const key of lastDeps.keys()) {\n if (!currDeps.has(key)) {\n const depState = context.stateMap.get(key);\n depState?.mounted?.readDepts.delete(computed$);\n unmount(key, context, mutation);\n }\n }\n}\n\nexport function evaluateComputed<T>(\n readSignal: ReadSignal,\n mount: Mount,\n unmount: Unmount,\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> {\n const computedState = getOrInitComputedState(computed$, context);\n\n const lastDeps = computedState.dependencies;\n\n const [_get, dependencies] = wrapGet(readSignal, mount, computed$, computedState, context, mutation);\n computedState.dependencies = dependencies;\n\n const evalVal = computed$.read(\n function <U>(depAtom: Signal<U>) {\n return withGeValInterceptor(() => _get(depAtom), depAtom, context.interceptor?.get);\n },\n {\n get signal() {\n computedState.abortController?.abort(`abort ${computed$.debugLabel ?? 'anonymous'} atom`);\n computedState.abortController = new AbortController();\n return computedState.abortController.signal;\n },\n },\n );\n mutation?.potentialDirtyIds.delete(computed$.id);\n\n cleanupMissingDependencies(unmount, computed$, lastDeps, dependencies, context, mutation);\n\n if (!shouldDistinct(computed$, evalVal, context)) {\n computedState.val = evalVal;\n computedState.epoch += 1;\n }\n\n return computedState;\n}\n","import type { Command, State, Computed, Signal, Updater, StateArg } from '../../../types/core/signal';\nimport type {\n Mutation,\n ReadComputed,\n StoreContext,\n StateState,\n StoreGet,\n StoreSet,\n SetArgs,\n} from '../../../types/core/store';\nimport { shouldDistinct } from '../signal/signal';\n\n// Dirty markers are just 'potentially' dirty because we don't know if\n// dependencies result will change. Pushing a computed to dirty markers doesn't\n// mean it will re-evaluate immediately, just marks it for epoch checking in\n// #tryGetCached. So the propagation is greedy to mark all dependants as dirty\nfunction pushDirtyMarkers(signalState: StateState<unknown>, context: StoreContext, mutation: Mutation) {\n let queue: Computed<unknown>[] = Array.from(signalState.mounted?.readDepts ?? []);\n\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n mutation.potentialDirtyIds.add(computed$.id);\n\n const computedState = context.stateMap.get(computed$);\n // This computed$ is read from other computed$'s readDepts, so it must not be null and must have mounted\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n for (const dep of computedState!.mounted!.readDepts) {\n nextQueue.push(dep);\n }\n }\n\n queue = nextQueue;\n }\n}\n\nfunction pullEvaluate(\n readComputed: ReadComputed,\n signalState: StateState<unknown>,\n context: StoreContext,\n mutation: Mutation,\n) {\n let queue: Computed<unknown>[] = Array.from(signalState.mounted?.readDepts ?? []);\n\n for (const listener of signalState.mounted?.listeners ?? []) {\n mutation.pendingListeners.add(listener);\n }\n\n const oldValues = new Map<Computed<unknown>, unknown>();\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n const oldValue = context.stateMap.get(computed$)?.val;\n oldValues.set(computed$, oldValue);\n\n const readDepts = context.stateMap.get(computed$)?.mounted?.readDepts;\n if (readDepts) {\n for (const dep of Array.from(readDepts)) {\n nextQueue.push(dep);\n }\n }\n }\n queue = nextQueue;\n }\n\n queue = Array.from(signalState.mounted?.readDepts ?? []);\n\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n const computedState = readComputed(computed$, context, mutation);\n if (oldValues.has(computed$) && oldValues.get(computed$) === computedState.val) {\n continue;\n }\n\n if (computedState.mounted?.listeners) {\n for (const listener of computedState.mounted.listeners) {\n mutation.pendingListeners.add(listener);\n }\n }\n\n const readDepts = computedState.mounted?.readDepts;\n if (readDepts) {\n for (const dep of Array.from(readDepts)) {\n nextQueue.push(dep);\n }\n }\n }\n\n queue = nextQueue;\n }\n}\n\nfunction propagationChanges(\n readComputed: ReadComputed,\n signalState: StateState<unknown>,\n context: StoreContext,\n mutation: Mutation,\n) {\n pushDirtyMarkers(signalState, context, mutation);\n pullEvaluate(readComputed, signalState, context, mutation);\n}\n\nfunction innerSetState<T>(\n readComputed: ReadComputed,\n signal$: State<T>,\n context: StoreContext,\n mutation: Mutation,\n val: StateArg<T>,\n) {\n let newValue: T;\n if (typeof val === 'function') {\n const updater = val as Updater<T>;\n newValue = updater((context.stateMap.get(signal$)?.val as T | undefined) ?? signal$.init);\n } else {\n newValue = val;\n }\n\n if (shouldDistinct(signal$, newValue, context)) {\n return;\n }\n\n const signalState = context.stateMap.get(signal$);\n if (!signalState) {\n context.stateMap.set(signal$, {\n val: newValue,\n epoch: 0,\n });\n return;\n }\n\n signalState.val = newValue;\n signalState.epoch += 1;\n propagationChanges(readComputed, signalState, context, mutation);\n\n return undefined;\n}\n\nexport function set<T, Args extends SetArgs<T, unknown[]>>(\n readComputed: ReadComputed,\n writable$: State<T> | Command<T, Args>,\n context: StoreContext,\n mutation: Mutation,\n ...args: Args\n): undefined | T {\n if ('read' in writable$) {\n return;\n }\n\n if ('write' in writable$) {\n return writable$.write(mutation.visitor, ...args);\n }\n\n innerSetState(readComputed, writable$, context, mutation, args[0]);\n return;\n}\n\n/**\n * Creates a mutation operation context. The Mutation remains unique throughout\n * the mutation cycle and can track side effects produced by this mutation operation\n *\n * This tracking is implemented by coloring the visitor function, so the Mutation\n * needs to wrap get & set functions and ensure that all get & set operations\n * executed in the mutation context come from the same Mutation\n *\n * @param context\n * @param get\n * @param set\n * @returns\n */\nexport function createMutation(context: StoreContext, get: StoreGet, set: StoreSet): Mutation {\n const mutation: Mutation = {\n potentialDirtyIds: new Set(),\n pendingListeners: new Set(),\n visitor: {\n get: <T>(signal$: Signal<T>) => {\n return get(signal$, context, mutation);\n },\n set: <T, Args extends SetArgs<T, unknown[]>>(\n signal$: State<T> | Command<T, Args>,\n ...args: Args\n ): undefined | T => {\n return set<T, Args>(signal$, context, ...args);\n },\n },\n };\n\n return mutation;\n}\n","import type { State } from '../../../types/core/signal';\nimport type { StateState, StoreContext } from '../../../types/core/store';\n\nexport function readState<T>(state: State<T>, context: StoreContext): StateState<T> {\n const atomState = context.stateMap.get(state);\n if (!atomState) {\n const initState = {\n val: state.init,\n epoch: 0,\n };\n context.stateMap.set(state, initState);\n return initState as StateState<T>;\n }\n\n return atomState as StateState<T>;\n}\n","import type { Command, Computed, Signal } from '../../../types/core/signal';\nimport type {\n ComputedState,\n Mounted,\n Mutation,\n ReadSignal,\n SignalState,\n StoreContext,\n} from '../../../types/core/store';\nimport { withNotifyInterceptor, withSubInterceptor, withUnsubInterceptor } from '../interceptor';\nimport { isComputedState } from '../typing-util';\n\nfunction unmountComputedDependencies<T>(\n computed$: Computed<T>,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const [dep] of Array.from(computedState.dependencies)) {\n context.stateMap.get(dep)?.mounted?.readDepts.delete(computed$ as Computed<unknown>);\n unmount(dep, context, mutation);\n }\n}\n\nfunction mountComputedDependencies<T>(\n readSignal: ReadSignal,\n computed$: Computed<T>,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const [dep] of Array.from(computedState.dependencies)) {\n const mounted = mount(readSignal, dep, context, mutation);\n mounted.readDepts.add(computed$ as Computed<unknown>);\n }\n}\n\nfunction initMount<T>(readSignal: ReadSignal, signal$: Signal<T>, context: StoreContext, mutation?: Mutation): Mounted {\n context.interceptor?.mount?.(signal$);\n\n const signalState = readSignal(signal$, context, mutation);\n\n signalState.mounted = signalState.mounted ?? {\n listeners: new Set(),\n readDepts: new Set(),\n };\n\n if (isComputedState(signalState)) {\n mountComputedDependencies(readSignal, signal$ as Computed<unknown>, signalState, context, mutation);\n }\n\n return signalState.mounted;\n}\n\nexport function mount<T>(\n readSignal: ReadSignal,\n signal$: Signal<T>,\n context: StoreContext,\n mutation?: Mutation,\n): Mounted {\n const mounted = context.stateMap.get(signal$)?.mounted;\n if (mounted) {\n return mounted;\n }\n\n return initMount(readSignal, signal$, context, mutation);\n}\n\nfunction doUnmount<T>(\n signal$: Signal<T>,\n signalState: SignalState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): void {\n context.interceptor?.unmount?.(signal$);\n\n if (isComputedState(signalState)) {\n unmountComputedDependencies(signal$ as Computed<unknown>, signalState, context, mutation);\n }\n\n signalState.mounted = undefined;\n}\n\nexport function unmount<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): void {\n const signalState = context.stateMap.get(signal$);\n if (!signalState?.mounted || signalState.mounted.listeners.size || signalState.mounted.readDepts.size) {\n return;\n }\n\n doUnmount(signal$, signalState, context, mutation);\n}\n\nexport function subSingleSignal<T>(\n readSignal: ReadSignal,\n signal$: Signal<T>,\n callback$: Command<unknown, []>,\n context: StoreContext,\n signal: AbortSignal,\n) {\n withSubInterceptor(\n () => {\n const mounted = mount(readSignal, signal$, context);\n mounted.listeners.add(callback$);\n\n const unsub = () => {\n withUnsubInterceptor(\n () => {\n mounted.listeners.delete(callback$);\n\n if (mounted.readDepts.size === 0 && mounted.listeners.size === 0) {\n unmount(signal$, context);\n }\n },\n signal$,\n callback$,\n context.interceptor?.unsub,\n );\n };\n\n signal.addEventListener('abort', unsub, {\n once: true,\n });\n },\n signal$,\n callback$,\n context.interceptor?.sub,\n );\n}\n\nexport function notify(context: StoreContext, mutation: Mutation) {\n const pendingListeners = mutation.pendingListeners;\n mutation.pendingListeners = new Set();\n\n for (const listener of pendingListeners) {\n withNotifyInterceptor(\n () => {\n return listener.write(mutation.visitor);\n },\n listener,\n context.interceptor?.notify,\n );\n }\n}\n","import type { Command, Getter, Setter, Signal, State, Computed } from '../../../types/core/signal';\nimport type {\n StateMap,\n Store,\n StoreContext,\n StoreOptions,\n SubscribeOptions,\n ComputedState,\n Mounted,\n Mutation,\n ReadComputed,\n SignalState,\n StoreGet,\n StoreSet,\n SetArgs,\n} from '../../../types/core/store';\nimport { evaluateComputed, tryGetCached } from '../signal/computed';\nimport { withComputedInterceptor, withGetInterceptor, withSetInterceptor } from '../interceptor';\nimport { createMutation, set as innerSet } from './set';\nimport { readState } from '../signal/state';\nimport { canReadAsCompute } from '../typing-util';\nimport { mount as innerMount, unmount, subSingleSignal, notify } from './sub';\n\nconst readComputed: ReadComputed = <T>(\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> => {\n const cachedState = tryGetCached(readComputed, computed$, context, mutation);\n if (cachedState) {\n return cachedState;\n }\n\n return withComputedInterceptor(\n () => {\n return evaluateComputed(readSignal, mount, unmount, computed$, context, mutation);\n },\n computed$,\n context.interceptor?.computed,\n );\n};\n\nfunction readSignal<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): SignalState<T> {\n if (canReadAsCompute(signal$)) {\n return readComputed(signal$, context, mutation);\n }\n\n return readState(signal$, context);\n}\n\nfunction mount<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): Mounted {\n return innerMount(readSignal, signal$, context, mutation);\n}\n\nfunction sub<T>(\n signals$: Signal<T>[] | Signal<T>,\n callback$: Command<unknown, []>,\n context: StoreContext,\n options?: SubscribeOptions,\n): () => void {\n if (Array.isArray(signals$) && signals$.length === 0) {\n return () => void 0;\n }\n\n const controller = new AbortController();\n const signal = options?.signal ? AbortSignal.any([controller.signal, options.signal]) : controller.signal;\n\n if (!Array.isArray(signals$)) {\n subSingleSignal(readSignal, signals$, callback$, context, signal);\n } else {\n signals$.forEach((atom) => {\n subSingleSignal(readSignal, atom, callback$, context, signal);\n });\n }\n\n return () => {\n controller.abort();\n };\n}\n\nconst get: StoreGet = (signal, context, mutation) => {\n return withGetInterceptor(\n () => {\n return readSignal(signal, context, mutation).val;\n },\n signal,\n context.interceptor?.get,\n );\n};\n\nconst set: StoreSet = <T, Args extends SetArgs<T, unknown[]>>(\n atom: State<T> | Command<T, Args>,\n context: StoreContext,\n ...args: Args\n): T | undefined => {\n return withSetInterceptor<T, Args>(\n () => {\n const mutation = createMutation(context, get, set);\n\n let ret: T | undefined;\n try {\n ret = innerSet<T, Args>(readComputed, atom, context, mutation, ...args);\n } finally {\n notify(context, mutation);\n }\n return ret;\n },\n atom,\n context.interceptor?.set,\n ...args,\n );\n};\n\nexport class StoreImpl implements Store {\n protected readonly stateMap: StateMap = new WeakMap();\n protected readonly context: StoreContext;\n\n constructor(protected readonly options?: StoreOptions) {\n this.context = {\n stateMap: this.stateMap,\n interceptor: this.options?.interceptor,\n };\n }\n\n get: Getter = <T>(atom: Signal<T>): T => {\n return get(atom, this.context);\n };\n\n set: Setter = <T, Args extends SetArgs<T, unknown[]>>(\n atom: State<T> | Command<T, Args>,\n ...args: Args\n ): undefined | T => {\n return set<T, Args>(atom, this.context, ...args);\n };\n\n sub(\n targets$: Signal<unknown>[] | Signal<unknown>,\n cb$: Command<unknown, unknown[]>,\n options?: SubscribeOptions,\n ): () => void {\n return sub(targets$, cb$, this.context, options);\n }\n}\n\nexport function createStore(): Store {\n return new StoreImpl();\n}\n\nlet defaultStore: Store | undefined = undefined;\nexport function getDefaultStore(): Store {\n if (!defaultStore) {\n defaultStore = createStore();\n }\n return defaultStore;\n}\n","import type { ComputedState, SignalState, StoreInterceptor, SubscribeOptions } from '../../types/core/store';\nimport type { DebugStore, Edge, NestedAtom } from '../../types/debug/debug-store';\nimport type { Computed, Command, Subscribe, State } from '../core';\nimport { StoreImpl } from '../core/store/store';\nimport { canReadAsCompute } from '../core/typing-util';\n\nexport class DebugStoreImpl extends StoreImpl implements DebugStore {\n private readonly mountedAtomListenersCount = new Map<State<unknown> | Computed<unknown>, number>();\n\n override sub: Subscribe = (\n atoms: (State<unknown> | Computed<unknown>)[] | (State<unknown> | Computed<unknown>),\n cb: Command<unknown, unknown[]>,\n options?: SubscribeOptions,\n ): (() => void) => {\n const atomList = Array.isArray(atoms) ? atoms : [atoms];\n\n atomList.forEach((atom) => {\n this.mountedAtomListenersCount.set(atom, (this.mountedAtomListenersCount.get(atom) ?? 0) + 1);\n });\n\n const unsub = super.sub(atoms, cb, options);\n const decount = () => {\n atomList.forEach((atom) => {\n const count = this.mountedAtomListenersCount.get(atom) ?? 0;\n if (count === 0) {\n return;\n }\n\n this.mountedAtomListenersCount.set(atom, count - 1);\n if (count === 1) {\n this.mountedAtomListenersCount.delete(atom);\n }\n });\n };\n options?.signal?.addEventListener('abort', decount);\n return () => {\n unsub();\n decount();\n };\n };\n\n getReadDependencies = (atom: State<unknown> | Computed<unknown>): NestedAtom => {\n const atomState = this.context.stateMap.get(atom);\n if (!atomState) {\n return [atom];\n }\n\n if (!('dependencies' in atomState)) {\n return [atom];\n }\n\n return [\n atom,\n ...Array.from(atomState.dependencies).map(([key]) => {\n return this.getReadDependencies(key);\n }),\n ] as NestedAtom;\n };\n\n getReadDependents = (atom: State<unknown> | Computed<unknown>): NestedAtom => {\n const atomState = this.context.stateMap.get(atom);\n if (!atomState) {\n return [atom];\n }\n\n return [\n atom,\n ...Array.from(atomState.mounted?.readDepts ?? []).map((key) => this.getReadDependents(key)),\n ] as NestedAtom;\n };\n\n getSubscribeGraph = (): NestedAtom => {\n const subscribedAtoms = Array.from(this.mountedAtomListenersCount.keys());\n return subscribedAtoms.map((atom) => {\n const atomState = this.context.stateMap.get(atom);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const listeners = Array.from(atomState!.mounted!.listeners);\n return [atom, ...listeners];\n });\n };\n\n isMounted = (atom: State<unknown> | Computed<unknown>): boolean => {\n const mountState = this.stateMap.get(atom);\n return mountState?.mounted !== undefined;\n };\n\n getDependenciesGraph = (computed$: Computed<unknown>): Edge[] => {\n const stateMap = this.context.stateMap;\n function fillDependenciesGraph(computed$: Computed<unknown>, result: Edge[]) {\n const computedState = stateMap.get(computed$) as ComputedState<unknown>;\n for (const [child$, epoch] of computedState.dependencies.entries()) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion, @typescript-eslint/no-non-null-assertion\n const childState = stateMap.get(child$)! as SignalState<unknown>;\n result.push([\n {\n signal: computed$,\n val: computedState.val,\n epoch: computedState.epoch,\n },\n {\n signal: child$,\n val: childState.val,\n epoch: childState.epoch,\n },\n epoch,\n ]);\n if (canReadAsCompute(child$)) {\n fillDependenciesGraph(child$, result);\n }\n }\n }\n\n const result: Edge[] = [];\n fillDependenciesGraph(computed$, result);\n return result;\n };\n}\n\nexport function createDebugStoreInternal(interceptor?: StoreInterceptor): DebugStore {\n return new DebugStoreImpl({\n interceptor: interceptor,\n });\n}\n","import type { CallbackFunc, SetArgs, StoreEventType, StoreInterceptor } from '../../types/core/store';\nimport type { DebugStore } from '../../types/debug/debug-store';\nimport type { Computed, Command, State } from '../core';\nimport { createDebugStoreInternal } from './debug-store';\n\nexport interface AtomWatch {\n target: State<unknown> | Computed<unknown> | Command<unknown, unknown[]> | string | RegExp;\n actions?: Set<StoreEventType>;\n}\n\nexport class ConsoleInterceptor implements StoreInterceptor {\n constructor(private readonly watches: AtomWatch[]) {}\n\n private shouldLog = (\n atom: State<unknown> | Computed<unknown> | Command<unknown, unknown[]>,\n action: StoreEventType,\n ) => {\n return this.watches.some((watch) => {\n let atomMatched = false;\n if (typeof watch.target === 'string') {\n atomMatched = atom.toString().includes(watch.target);\n } else if (watch.target instanceof RegExp) {\n atomMatched = watch.target.test(atom.toString());\n } else {\n atomMatched = watch.target === atom;\n }\n\n if (!atomMatched) {\n return false;\n }\n\n return !watch.actions || watch.actions.has(action);\n });\n };\n\n get = <T>(atom$: State<T> | Computed<T>, fn: () => T) => {\n if (!this.shouldLog(atom$, 'get')) {\n fn();\n return;\n }\n\n console.group('[R][GET] ' + atom$.toString());\n console.log('ret:', fn());\n console.groupEnd();\n };\n\n computed = <T>(atom$: Computed<T>, fn: () => T) => {\n if (!this.shouldLog(atom$, 'computed')) {\n fn();\n return;\n }\n\n console.group('[R][CPT] ' + atom$.toString());\n console.log('ret:', fn());\n console.groupEnd();\n };\n\n set = <T, Args extends SetArgs<T, unknown[]>>(atom$: State<T> | Command<T, Args>, fn: () => T, ...args: Args) => {\n if (!this.shouldLog(atom$ as unknown as State<T>, 'set')) {\n fn();\n return;\n }\n\n console.group('[R][SET] ' + atom$.toString(), '(', ...args, ')');\n console.log('ret:', fn());\n console.groupEnd();\n };\n\n sub = <T>(atom$: State<T> | Computed<T>, callback$: CallbackFunc<T>, fn: () => void) => {\n if (!this.shouldLog(atom$, 'sub')) {\n fn();\n return;\n }\n\n console.group('[R][SUB] ' + atom$.toString() + ', callback=' + callback$.toString());\n fn();\n console.groupEnd();\n };\n\n unsub = <T>(atom$: State<T> | Computed<T>, callback$: CallbackFunc<T>, fn: () => void) => {\n if (!this.shouldLog(atom$, 'unsub')) {\n fn();\n return;\n }\n\n console.group('[R][UNS] ' + atom$.toString() + ', callback=' + callback$.toString());\n fn();\n console.groupEnd();\n };\n\n mount = <T>(atom$: State<T> | Computed<T>) => {\n if (!this.shouldLog(atom$, 'mount')) {\n return;\n }\n\n console.log('[R][MNT] ' + atom$.toString());\n };\n\n unmount = <T>(atom$: State<T> | Computed<T>) => {\n if (!this.shouldLog(atom$, 'unmount')) {\n return;\n }\n\n console.log('[R][UNM] ' + atom$.toString());\n };\n\n notify = <T>(callback$: CallbackFunc<T>, fn: () => T) => {\n if (!this.shouldLog(callback$, 'notify')) {\n fn();\n return;\n }\n\n console.group('[R][NTF] ' + callback$.toString());\n console.log('ret:', fn());\n console.groupEnd();\n };\n}\n\nexport function createDebugStore(\n watches: (AtomWatch | string | RegExp | State<unknown> | Computed<unknown> | Command<unknown, unknown[]>)[] = [],\n defaultActions?: StoreEventType[],\n): DebugStore {\n const parsedDefaultActions = defaultActions ? new Set(defaultActions) : undefined;\n\n const parsedWatches = watches.map((watch): AtomWatch => {\n if (typeof watch === 'string' || watch instanceof RegExp) {\n return { target: watch, actions: parsedDefaultActions };\n }\n\n if ('target' in watch) {\n return watch;\n }\n\n return { target: watch, actions: parsedDefaultActions };\n });\n\n const interceptor = new ConsoleInterceptor(parsedWatches);\n return createDebugStoreInternal(interceptor);\n}\n"],"names":["withSetInterceptor","fn","writable$","interceptor","result","called","wrappedFn","data","_len","arguments","length","args","Array","_key","apply","concat","Error","withGetInterceptor","signal","withComputedInterceptor","val","withGeValInterceptor","withSubInterceptor","callback$","undefined","withUnsubInterceptor","withNotifyInterceptor","canReadAsCompute","atom","isComputedState","state","currentValue","context","_context$stateMap$get","stateMap","get","shouldDistinct","value","checkEpoch","readComputed","computedState","mutation","_iterator","_createForOfIteratorHelper","dependencies","entries","_step","s","n","done","_step$value","_slicedToArray","dep","epoch","depEpoch","err","e","f","tryGetCached","computed$","signalState","mayDirty","potentialDirtyIds","has","id","mounted","wrapGet","readSignal","mount","callerComputed$","callerState","readDeps","Map","dep$","depState","set","callerMounted","readDepts","add","getOrInitComputedState","cleanupMissingDependencies","unmount","lastDeps","currDeps","_iterator2","keys","_step2","key","_depState$mounted","evaluateComputed","_wrapGet","_wrapGet2","_get","evalVal","read","depAtom","_context$interceptor","_computedState$abortC","_computed$$debugLabel","abortController","abort","debugLabel","AbortController","pushDirtyMarkers","_signalState$mounted$","_signalState$mounted","queue","from","nextQueue","push","pullEvaluate","_signalState$mounted$2","_signalState$mounted2","_signalState$mounted$3","_signalState$mounted3","_signalState$mounted$4","_signalState$mounted4","_iterator3","listeners","_step3","listener","pendingListeners","oldValues","_iterator4","_step4","_context$stateMap$get2","oldValue","_i","_Array$from","_iterator5","_step5","_computedState$mounte","_computedState$mounte2","_iterator6","_step6","_i2","_Array$from2","propagationChanges","innerSetState","signal$","newValue","_ref","_context$stateMap$get3","updater","init","write","visitor","createMutation","Set","_len2","_key2","readState","atomState","initState","unmountComputedDependencies","_Array$from$_i","mountComputedDependencies","_Array$from2$_i","initMount","_context$interceptor$","call","doUnmount","_context$interceptor2","_context$interceptor3","size","subSingleSignal","_context$interceptor5","unsub","_context$interceptor4","addEventListener","once","sub","notify","_loop","_context$interceptor6","cachedState","computed","innerMount","signals$","options","isArray","controller","AbortSignal","any","forEach","ret","innerSet","StoreImpl","_this","_this$options","_classCallCheck","_defineProperty","WeakMap","_createClass","targets$","cb$","DebugStoreImpl","_StoreImpl","_callSuper","atoms","cb","_options$signal","atomList","_this$mountedAtomList","mountedAtomListenersCount","_superPropGet","decount","_this$mountedAtomList2","count","_toConsumableArray","map","_ref2","getReadDependencies","_atomState$mounted$re","_atomState$mounted","getReadDependents","subscribedAtoms","mountState","fillDependenciesGraph","child$","childState","_inherits","createDebugStoreInternal","ConsoleInterceptor","watches","action","some","watch","atomMatched","target","toString","includes","RegExp","test","actions","atom$","shouldLog","console","group","log","groupEnd","_console","createDebugStore","defaultActions","parsedDefaultActions","parsedWatches"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBO,SAASA,kBAAkBA,CAChCC,EAAuB,EACvBC,SAAsC,EACtCC,WAAuC,EAExB;EACf,IAAI,CAACA,WAAW,EAAE;IAChB,OAAOF,EAAE,EAAE;AACb;AAEA,EAAA,IAAIG,MAAM,GAAG;AAAEC,IAAAA,MAAM,EAAE;GAA6C;AACpE,EAAA,IAAMC,SAAS,GAAG,SAAZA,SAASA,GAAS;AACtBF,IAAAA,MAAM,GAAG;AAAEC,MAAAA,MAAM,EAAE,IAAI;MAAEE,IAAI,EAAEN,EAAE;KAAI;IACrC,OAAOG,MAAM,CAACG,IAAI;GACnB;EAAC,KAAAC,IAAAA,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAVCC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAA,CAAAA,GAAAA,IAAA,WAAAK,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,EAAA,EAAA;AAAJF,IAAAA,IAAI,CAAAE,IAAA,GAAAJ,CAAAA,CAAAA,GAAAA,SAAA,CAAAI,IAAA,CAAA;AAAA;EAWP,IAAI,OAAO,IAAIX,SAAS,EAAE;IACxBC,WAAW,CAAAW,KAAA,CAAA,KAAA,CAAA,EAAA,CAACZ,SAAS,EAAEI,SAAS,CAAAS,CAAAA,MAAA,CAAKJ,IAAI,CAAC,CAAA;AAC5C,GAAC,MAAM;IACLR,WAAW,CAACD,SAAS,EAAEI,SAAS,EAAEK,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5C;AAEA,EAAA,IAAI,CAACP,MAAM,CAACC,MAAM,EAAE;AAClB,IAAA,MAAM,IAAIW,KAAK,CAAC,+BAA+B,CAAC;AAClD;EAEA,OAAOZ,MAAM,CAACG,IAAI;AACpB;AAEO,SAASU,kBAAkBA,CAAIhB,EAAW,EAAEiB,MAAiB,EAAEf,WAA4B,EAAK;EACrG,IAAI,CAACA,WAAW,EAAE;IAChB,OAAOF,EAAE,EAAE;AACb;AAEA,EAAA,IAAIG,MAAM,GAAG;AAAEC,IAAAA,MAAM,EAAE;GAAiC;EAExDF,WAAW,CAACe,MAAM,EAAE,YAAM;AACxBd,IAAAA,MAAM,GAAG;AAAEC,MAAAA,MAAM,EAAE,IAAI;MAAEE,IAAI,EAAEN,EAAE;KAAI;IACrC,OAAOG,MAAM,CAACG,IAAI;AACpB,GAAC,CAAC;AAEF,EAAA,IAAI,CAACH,MAAM,CAACC,MAAM,EAAE;AAClB,IAAA,MAAM,IAAIW,KAAK,CAAC,+BAA+B,CAAC;AAClD;EAEA,OAAOZ,MAAM,CAACG,IAAI;AACpB;AAEO,SAASY,uBAAuBA,CACrClB,EAA0B,EAC1BiB,MAAmB,EACnBf,WAAiC,EACf;EAClB,IAAI,CAACA,WAAW,EAAE;IAChB,OAAOF,EAAE,EAAE;AACb;AAEA,EAAA,IAAIG,MAAM,GAAG;AAAEC,IAAAA,MAAM,EAAE;GAAgD;EAEvEF,WAAW,CAACe,MAAM,EAAE,YAAM;AACxBd,IAAAA,MAAM,GAAG;AAAEC,MAAAA,MAAM,EAAE,IAAI;MAAEE,IAAI,EAAEN,EAAE;KAAI;AACrC,IAAA,OAAOG,MAAM,CAACG,IAAI,CAACa,GAAG;AACxB,GAAC,CAAC;AAEF,EAAA,IAAI,CAAChB,MAAM,CAACC,MAAM,EAAE;AAClB,IAAA,MAAM,IAAIW,KAAK,CAAC,+BAA+B,CAAC;AAClD;EAEA,OAAOZ,MAAM,CAACG,IAAI;AACpB;AAEO,SAASc,oBAAoBA,CAAIpB,EAAW,EAAEiB,MAAiB,EAAEf,WAA4B,EAAK;EACvG,IAAI,CAACA,WAAW,EAAE;IAChB,OAAOF,EAAE,EAAE;AACb;AAEA,EAAA,IAAIG,MAAM,GAAG;AAAEC,IAAAA,MAAM,EAAE;GAAiC;EAExDF,WAAW,CAACe,MAAM,EAAE,YAAM;AACxBd,IAAAA,MAAM,GAAG;AAAEC,MAAAA,MAAM,EAAE,IAAI;MAAEE,IAAI,EAAEN,EAAE;KAAI;IACrC,OAAOG,MAAM,CAACG,IAAI;AACpB,GAAC,CAAC;AAEF,EAAA,IAAI,CAACH,MAAM,CAACC,MAAM,EAAE;AAClB,IAAA,MAAM,IAAIW,KAAK,CAAC,+BAA+B,CAAC;AAClD;EAEA,OAAOZ,MAAM,CAACG,IAAI;AACpB;AAEO,SAASe,kBAAkBA,CAChCrB,EAAc,EACdiB,MAAiB,EACjBK,SAA+B,EAC/BpB,WAA4B,EAC5B;EACA,IAAI,CAACA,WAAW,EAAE;AAChBF,IAAAA,EAAE,EAAE;AACJ,IAAA;AACF;AAEA,EAAA,IAAIG,MAAM,GAAG;AAAEC,IAAAA,MAAM,EAAE;GAAoC;AAE3DF,EAAAA,WAAW,CAACe,MAAM,EAAEK,SAAS,EAAE,YAAM;AACnCnB,IAAAA,MAAM,GAAG;AAAEC,MAAAA,MAAM,EAAE,IAAI;AAAEE,MAAAA,IAAI,EAAEiB;KAAW;AAC1CvB,IAAAA,EAAE,EAAE;AACN,GAAC,CAAC;AAEF,EAAA,IAAI,CAACG,MAAM,CAACC,MAAM,EAAE;AAClB,IAAA,MAAM,IAAIW,KAAK,CAAC,+BAA+B,CAAC;AAClD;AACF;AAEO,SAASS,oBAAoBA,CAClCxB,EAAc,EACdiB,MAAiB,EACjBK,SAA+B,EAC/BpB,WAA8B,EACxB;EACN,IAAI,CAACA,WAAW,EAAE;AAChBF,IAAAA,EAAE,EAAE;AACJ,IAAA;AACF;AAEA,EAAA,IAAIG,MAAM,GAAG;AAAEC,IAAAA,MAAM,EAAE;GAAoC;AAE3DF,EAAAA,WAAW,CAACe,MAAM,EAAEK,SAAS,EAAE,YAAM;AACnCnB,IAAAA,MAAM,GAAG;AAAEC,MAAAA,MAAM,EAAE,IAAI;AAAEE,MAAAA,IAAI,EAAEiB;KAAW;AAC1CvB,IAAAA,EAAE,EAAE;AACN,GAAC,CAAC;AAEF,EAAA,IAAI,CAACG,MAAM,CAACC,MAAM,EAAE;AAClB,IAAA,MAAM,IAAIW,KAAK,CAAC,+BAA+B,CAAC;AAClD;AACF;AAEO,SAASU,qBAAqBA,CAAIzB,EAAW,EAAEsB,SAA0B,EAAEpB,WAA+B,EAAK;EACpH,IAAI,CAACA,WAAW,EAAE;IAChB,OAAOF,EAAE,EAAE;AACb;AAEA,EAAA,IAAIG,MAAM,GAAG;AAAEC,IAAAA,MAAM,EAAE;GAAiC;EAExDF,WAAW,CAACoB,SAAS,EAAE,YAAM;AAC3BnB,IAAAA,MAAM,GAAG;AAAEC,MAAAA,MAAM,EAAE,IAAI;MAAEE,IAAI,EAAEN,EAAE;KAAI;IACrC,OAAOG,MAAM,CAACG,IAAI;AACpB,GAAC,CAAC;AAEF,EAAA,IAAI,CAACH,MAAM,CAACC,MAAM,EAAE;AAClB,IAAA,MAAM,IAAIW,KAAK,CAAC,+BAA+B,CAAC;AAClD;EAEA,OAAOZ,MAAM,CAACG,IAAI;AACpB;;AC3KO,SAASoB,gBAAgBA,CAAIC,IAAe,EAAuB;EACxE,OAAO,MAAM,IAAIA,IAAI;AACvB;AAEO,SAASC,eAAeA,CAAIC,KAAqB,EAA6B;EACnF,OAAO,cAAc,IAAIA,KAAK;AAChC;;ACNO,SAASC,YAAYA,CAAIb,MAAiB,EAAEc,OAAqB,EAAiB;AAAA,EAAA,IAAAC,qBAAA;AACvF,EAAA,OAAA,CAAAA,qBAAA,GAAOD,OAAO,CAACE,QAAQ,CAACC,GAAG,CAACjB,MAAM,CAAC,MAAAe,IAAAA,IAAAA,qBAAA,KAA5BA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAA8Bb,GAAG;AAC1C;AAEO,SAASgB,cAAcA,CAAIlB,MAAiB,EAAEmB,KAAQ,EAAEL,OAAqB,EAAE;AACpF,EAAA,OAAOD,YAAY,CAACb,MAAM,EAAEc,OAAO,CAAC,KAAKK,KAAK;AAChD;;ACKA,SAASC,UAAUA,CACjBC,YAA0B,EAC1BC,aAA+B,EAC/BR,OAAqB,EACrBS,QAAmB,EACV;EAAA,IAAAC,SAAA,GAAAC,0BAAA,CACkBH,aAAa,CAACI,YAAY,CAACC,OAAO,EAAE,CAAA;IAAAC,KAAA;AAAA,EAAA,IAAA;IAA/D,KAAAJ,SAAA,CAAAK,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAJ,SAAA,CAAAM,CAAA,EAAAC,EAAAA,IAAA,GAAiE;AAAA,MAAA,IAAAhB,qBAAA;AAAA,MAAA,IAAAiB,WAAA,GAAAC,cAAA,CAAAL,KAAA,CAAAT,KAAA,EAAA,CAAA,CAAA;AAArDe,QAAAA,GAAG,GAAAF,WAAA,CAAA,CAAA,CAAA;AAAEG,QAAAA,KAAK,GAAAH,WAAA,CAAA,CAAA,CAAA;AACpB,MAAA,IAAMI,QAAQ,GAAG3B,gBAAgB,CAACyB,GAAG,CAAC,GAClCb,YAAY,CAACa,GAAG,EAAEpB,OAAO,EAAES,QAAQ,CAAC,CAACY,KAAK,GAAA,CAAApB,qBAAA,GAC1CD,OAAO,CAACE,QAAQ,CAACC,GAAG,CAACiB,GAAG,CAAC,MAAAnB,IAAAA,IAAAA,qBAAA,KAAzBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAA2BoB,KAAK;MAEpC,IAAIC,QAAQ,KAAKD,KAAK,EAAE;AACtB,QAAA,OAAO,KAAK;AACd;AACF;AAAC,GAAA,CAAA,OAAAE,GAAA,EAAA;IAAAb,SAAA,CAAAc,CAAA,CAAAD,GAAA,CAAA;AAAA,GAAA,SAAA;AAAAb,IAAAA,SAAA,CAAAe,CAAA,EAAA;AAAA;AAED,EAAA,OAAO,IAAI;AACb;AAEO,SAASC,YAAYA,CAC1BnB,YAA0B,EAC1BoB,SAAsB,EACtB3B,OAAqB,EACrBS,QAAmB,EACW;EAC9B,IAAMmB,WAAW,GAAG5B,OAAO,CAACE,QAAQ,CAACC,GAAG,CAACwB,SAAS,CAAiC;EACnF,IAAI,CAACC,WAAW,EAAE;AAChB,IAAA,OAAOpC,SAAS;AAClB;;AAEA;AACA;AACA;AACA,EAAA,IAAMqC,QAAQ,GAAGpB,QAAQ,KAAA,IAAA,IAARA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAEqB,iBAAiB,CAACC,GAAG,CAACJ,SAAS,CAACK,EAAE,CAAC;AAC9D,EAAA,IAAI,CAACH,QAAQ,IAAID,WAAW,CAACK,OAAO,EAAE;AACpC,IAAA,OAAOL,WAAW;AACpB;EAEA,IAAItB,UAAU,CAACC,YAAY,EAAEqB,WAAW,EAAE5B,OAAO,EAAES,QAAQ,CAAC,EAAE;AAC5D,IAAA,IAAIoB,QAAQ,EAAE;MACZpB,QAAQ,KAAA,IAAA,IAARA,QAAQ,KAAA,KAAA,CAAA,IAARA,QAAQ,CAAEqB,iBAAiB,CAAA,QAAA,CAAO,CAACH,SAAS,CAACK,EAAE,CAAC;AAClD;AACA,IAAA,OAAOJ,WAAW;AACpB;AAEA,EAAA,OAAOpC,SAAS;AAClB;AAEA,SAAS0C,OAAOA,CACdC,UAAsB,EACtBC,KAAY,EACZC,eAA4B,EAC5BC,WAA6B,EAC7BtC,OAAqB,EACrBS,QAAmB,EACqB;AACxC,EAAA,IAAM8B,QAAQ,GAAG,IAAIC,GAAG,EAA2B;EAEnD,OAAO,CACL,UAACC,IAAI,EAAK;IACR,IAAMC,QAAQ,GAAGP,UAAU,CAACM,IAAI,EAAEzC,OAAO,EAAES,QAAQ,CAAC;AAEpD,IAAA,IAAI6B,WAAW,CAAC1B,YAAY,KAAK2B,QAAQ,EAAE;MACzCA,QAAQ,CAACI,GAAG,CAACF,IAAI,EAAEC,QAAQ,CAACrB,KAAK,CAAC;AAElC,MAAA,IAAMuB,aAAa,GAAG,CAAC,CAACN,WAAW,CAACL,OAAO;AAC3C,MAAA,IAAIW,aAAa,IAAI,CAACF,QAAQ,CAACT,OAAO,EAAE;AACtCG,QAAAA,KAAK,CAACK,IAAI,EAAEzC,OAAO,EAAES,QAAQ,CAAC,CAACoC,SAAS,CAACC,GAAG,CAACT,eAAe,CAAC;AAC/D,OAAC,MAAM,IAAIO,aAAa,IAAIF,QAAQ,CAACT,OAAO,EAAE;QAC5CS,QAAQ,CAACT,OAAO,CAACY,SAAS,CAACC,GAAG,CAACT,eAAe,CAAC;AACjD;AACF;IAEA,OAAOK,QAAQ,CAACtD,GAAG;GACpB,EACDmD,QAAQ,CACT;AACH;AAEA,SAASQ,sBAAsBA,CAAIpB,SAAsB,EAAE3B,OAAqB,EAAoB;EAClG,IAAIQ,aAA2C,GAAGR,OAAO,CAACE,QAAQ,CAACC,GAAG,CAACwB,SAAS,CAAiC;EACjH,IAAI,CAACnB,aAAa,EAAE;AAClBA,IAAAA,aAAa,GAAG;AACdI,MAAAA,YAAY,EAAE,IAAI4B,GAAG,EAA2B;AAChDnB,MAAAA,KAAK,EAAE,CAAC;KACW;IACrBrB,OAAO,CAACE,QAAQ,CAACyC,GAAG,CAAChB,SAAS,EAAEnB,aAAa,CAAC;AAChD;AAEA,EAAA,OAAOA,aAAa;AACtB;AAEA,SAASwC,0BAA0BA,CACjCC,OAAgB,EAChBtB,SAAsB,EACtBuB,QAAsC,EACtCC,QAAsC,EACtCnD,OAAqB,EACrBS,QAAmB,EACnB;EAAA,IAAA2C,UAAA,GAAAzC,0BAAA,CACkBuC,QAAQ,CAACG,IAAI,EAAE,CAAA;IAAAC,MAAA;AAAA,EAAA,IAAA;IAAjC,KAAAF,UAAA,CAAArC,CAAA,EAAAuC,EAAAA,CAAAA,CAAAA,MAAA,GAAAF,UAAA,CAAApC,CAAA,EAAAC,EAAAA,IAAA,GAAmC;AAAA,MAAA,IAAxBsC,GAAG,GAAAD,MAAA,CAAAjD,KAAA;AACZ,MAAA,IAAI,CAAC8C,QAAQ,CAACpB,GAAG,CAACwB,GAAG,CAAC,EAAE;AAAA,QAAA,IAAAC,iBAAA;QACtB,IAAMd,QAAQ,GAAG1C,OAAO,CAACE,QAAQ,CAACC,GAAG,CAACoD,GAAG,CAAC;AAC1Cb,QAAAA,QAAQ,aAARA,QAAQ,KAAA,KAAA,CAAA,IAAA,CAAAc,iBAAA,GAARd,QAAQ,CAAET,OAAO,MAAAuB,IAAAA,IAAAA,iBAAA,eAAjBA,iBAAA,CAAmBX,SAAS,CAAO,QAAA,CAAA,CAAClB,SAAS,CAAC;AAC9CsB,QAAAA,OAAO,CAACM,GAAG,EAAEvD,OAAO,EAAES,QAAQ,CAAC;AACjC;AACF;AAAC,GAAA,CAAA,OAAAc,GAAA,EAAA;IAAA6B,UAAA,CAAA5B,CAAA,CAAAD,GAAA,CAAA;AAAA,GAAA,SAAA;AAAA6B,IAAAA,UAAA,CAAA3B,CAAA,EAAA;AAAA;AACH;AAEO,SAASgC,gBAAgBA,CAC9BtB,UAAsB,EACtBC,KAAY,EACZa,OAAgB,EAChBtB,SAAsB,EACtB3B,OAAqB,EACrBS,QAAmB,EACD;AAClB,EAAA,IAAMD,aAAa,GAAGuC,sBAAsB,CAACpB,SAAS,EAAE3B,OAAO,CAAC;AAEhE,EAAA,IAAMkD,QAAQ,GAAG1C,aAAa,CAACI,YAAY;AAE3C,EAAA,IAAA8C,QAAA,GAA6BxB,OAAO,CAACC,UAAU,EAAEC,KAAK,EAAET,SAAS,EAAEnB,aAAa,EAAER,OAAO,EAAES,QAAQ,CAAC;IAAAkD,SAAA,GAAAxC,cAAA,CAAAuC,QAAA,EAAA,CAAA,CAAA;AAA7FE,IAAAA,IAAI,GAAAD,SAAA,CAAA,CAAA,CAAA;AAAE/C,IAAAA,YAAY,GAAA+C,SAAA,CAAA,CAAA,CAAA;EACzBnD,aAAa,CAACI,YAAY,GAAGA,YAAY;EAEzC,IAAMiD,OAAO,GAAGlC,SAAS,CAACmC,IAAI,CAC5B,UAAaC,OAAkB,EAAE;AAAA,IAAA,IAAAC,oBAAA;AAC/B,IAAA,OAAO3E,oBAAoB,CAAC,YAAA;MAAA,OAAMuE,IAAI,CAACG,OAAO,CAAC;AAAA,KAAA,EAAEA,OAAO,EAAA,CAAAC,oBAAA,GAAEhE,OAAO,CAAC7B,WAAW,MAAA,IAAA,IAAA6F,oBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAnBA,oBAAA,CAAqB7D,GAAG,CAAC;AACrF,GAAC,EACD;IACE,IAAIjB,MAAMA,GAAG;MAAA,IAAA+E,qBAAA,EAAAC,qBAAA;MACX,CAAAD,qBAAA,GAAAzD,aAAa,CAAC2D,eAAe,MAAAF,IAAAA,IAAAA,qBAAA,KAA7BA,KAAAA,CAAAA,IAAAA,qBAAA,CAA+BG,KAAK,CAAArF,QAAAA,CAAAA,MAAA,EAAAmF,qBAAA,GAAUvC,SAAS,CAAC0C,UAAU,MAAA,IAAA,IAAAH,qBAAA,KAAA,KAAA,CAAA,GAAAA,qBAAA,GAAI,WAAW,EAAA,OAAA,CAAO,CAAC;AACzF1D,MAAAA,aAAa,CAAC2D,eAAe,GAAG,IAAIG,eAAe,EAAE;AACrD,MAAA,OAAO9D,aAAa,CAAC2D,eAAe,CAACjF,MAAM;AAC7C;AACF,GACF,CAAC;EACDuB,QAAQ,KAAA,IAAA,IAARA,QAAQ,KAAA,KAAA,CAAA,IAARA,QAAQ,CAAEqB,iBAAiB,CAAA,QAAA,CAAO,CAACH,SAAS,CAACK,EAAE,CAAC;AAEhDgB,EAAAA,0BAA0B,CAACC,OAAO,EAAEtB,SAAS,EAAEuB,QAAQ,EAAEtC,YAAY,EAAEZ,OAAO,EAAES,QAAQ,CAAC;EAEzF,IAAI,CAACL,cAAc,CAACuB,SAAS,EAAEkC,OAAO,EAAE7D,OAAO,CAAC,EAAE;IAChDQ,aAAa,CAACpB,GAAG,GAAGyE,OAAO;IAC3BrD,aAAa,CAACa,KAAK,IAAI,CAAC;AAC1B;AAEA,EAAA,OAAOb,aAAa;AACtB;;ACpJA;AACA;AACA;AACA;AACA,SAAS+D,gBAAgBA,CAAC3C,WAAgC,EAAE5B,OAAqB,EAAES,QAAkB,EAAE;EAAA,IAAA+D,qBAAA,EAAAC,oBAAA;EACrG,IAAIC,KAA0B,GAAG9F,KAAK,CAAC+F,IAAI,EAAAH,qBAAA,GAAA,CAAAC,oBAAA,GAAC7C,WAAW,CAACK,OAAO,MAAAwC,IAAAA,IAAAA,oBAAA,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAA,CAAqB5B,SAAS,MAAA2B,IAAAA,IAAAA,qBAAA,KAAAA,KAAAA,CAAAA,GAAAA,qBAAA,GAAI,EAAE,CAAC;AAEjF,EAAA,OAAOE,KAAK,CAAChG,MAAM,GAAG,CAAC,EAAE;IACvB,IAAMkG,SAA8B,GAAG,EAAE;AAAC,IAAA,IAAAlE,SAAA,GAAAC,0BAAA,CAClB+D,KAAK,CAAA;MAAA5D,KAAA;AAAA,IAAA,IAAA;MAA7B,KAAAJ,SAAA,CAAAK,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAJ,SAAA,CAAAM,CAAA,EAAAC,EAAAA,IAAA,GAA+B;AAAA,QAAA,IAApBU,SAAS,GAAAb,KAAA,CAAAT,KAAA;QAClBI,QAAQ,CAACqB,iBAAiB,CAACgB,GAAG,CAACnB,SAAS,CAACK,EAAE,CAAC;QAE5C,IAAMxB,aAAa,GAAGR,OAAO,CAACE,QAAQ,CAACC,GAAG,CAACwB,SAAS,CAAC;AACrD;AACA;QAAA,IAAAyB,UAAA,GAAAzC,0BAAA,CACkBH,aAAa,CAAEyB,OAAO,CAAEY,SAAS,CAAA;UAAAS,MAAA;AAAA,QAAA,IAAA;UAAnD,KAAAF,UAAA,CAAArC,CAAA,EAAAuC,EAAAA,CAAAA,CAAAA,MAAA,GAAAF,UAAA,CAAApC,CAAA,EAAAC,EAAAA,IAAA,GAAqD;AAAA,YAAA,IAA1CG,GAAG,GAAAkC,MAAA,CAAAjD,KAAA;AACZuE,YAAAA,SAAS,CAACC,IAAI,CAACzD,GAAG,CAAC;AACrB;AAAC,SAAA,CAAA,OAAAG,GAAA,EAAA;UAAA6B,UAAA,CAAA5B,CAAA,CAAAD,GAAA,CAAA;AAAA,SAAA,SAAA;AAAA6B,UAAAA,UAAA,CAAA3B,CAAA,EAAA;AAAA;AACH;AAAC,KAAA,CAAA,OAAAF,GAAA,EAAA;MAAAb,SAAA,CAAAc,CAAA,CAAAD,GAAA,CAAA;AAAA,KAAA,SAAA;AAAAb,MAAAA,SAAA,CAAAe,CAAA,EAAA;AAAA;AAEDiD,IAAAA,KAAK,GAAGE,SAAS;AACnB;AACF;AAEA,SAASE,YAAYA,CACnBvE,YAA0B,EAC1BqB,WAAgC,EAChC5B,OAAqB,EACrBS,QAAkB,EAClB;EAAA,IAAAsE,sBAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,qBAAA;EACA,IAAIV,KAA0B,GAAG9F,KAAK,CAAC+F,IAAI,EAAAI,sBAAA,GAAA,CAAAC,qBAAA,GAACpD,WAAW,CAACK,OAAO,MAAA+C,IAAAA,IAAAA,qBAAA,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAAqBnC,SAAS,MAAAkC,IAAAA,IAAAA,sBAAA,KAAAA,KAAAA,CAAAA,GAAAA,sBAAA,GAAI,EAAE,CAAC;EAAC,IAAAM,UAAA,GAAA1E,0BAAA,CAAA,CAAAwE,sBAAA,GAAAC,CAAAA,qBAAA,GAE3DxD,WAAW,CAACK,OAAO,cAAAmD,qBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAnBA,qBAAA,CAAqBE,SAAS,cAAAH,sBAAA,KAAA,KAAA,CAAA,GAAAA,sBAAA,GAAI,EAAE,CAAA;IAAAI,MAAA;AAAA,EAAA,IAAA;IAA3D,KAAAF,UAAA,CAAAtE,CAAA,EAAAwE,EAAAA,CAAAA,CAAAA,MAAA,GAAAF,UAAA,CAAArE,CAAA,EAAAC,EAAAA,IAAA,GAA6D;AAAA,MAAA,IAAlDuE,SAAQ,GAAAD,MAAA,CAAAlF,KAAA;AACjBI,MAAAA,QAAQ,CAACgF,gBAAgB,CAAC3C,GAAG,CAAC0C,SAAQ,CAAC;AACzC;AAAC,GAAA,CAAA,OAAAjE,GAAA,EAAA;IAAA8D,UAAA,CAAA7D,CAAA,CAAAD,GAAA,CAAA;AAAA,GAAA,SAAA;AAAA8D,IAAAA,UAAA,CAAA5D,CAAA,EAAA;AAAA;AAED,EAAA,IAAMiE,SAAS,GAAG,IAAIlD,GAAG,EAA8B;AACvD,EAAA,OAAOkC,KAAK,CAAChG,MAAM,GAAG,CAAC,EAAE;IACvB,IAAMkG,SAA8B,GAAG,EAAE;AAAC,IAAA,IAAAe,UAAA,GAAAhF,0BAAA,CAClB+D,KAAK,CAAA;MAAAkB,MAAA;AAAA,IAAA,IAAA;MAA7B,KAAAD,UAAA,CAAA5E,CAAA,EAAA6E,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,CAAA3E,CAAA,EAAAC,EAAAA,IAAA,GAA+B;QAAA,IAAAhB,qBAAA,EAAA4F,sBAAA;AAAA,QAAA,IAApBlE,SAAS,GAAAiE,MAAA,CAAAvF,KAAA;AAClB,QAAA,IAAMyF,QAAQ,GAAA7F,CAAAA,qBAAA,GAAGD,OAAO,CAACE,QAAQ,CAACC,GAAG,CAACwB,SAAS,CAAC,MAAA,IAAA,IAAA1B,qBAAA,KAA/BA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAAiCb,GAAG;AACrDsG,QAAAA,SAAS,CAAC/C,GAAG,CAAChB,SAAS,EAAEmE,QAAQ,CAAC;QAElC,IAAMjD,SAAS,GAAAgD,CAAAA,sBAAA,GAAG7F,OAAO,CAACE,QAAQ,CAACC,GAAG,CAACwB,SAAS,CAAC,cAAAkE,sBAAA,KAAA,KAAA,CAAA,IAAA,CAAAA,sBAAA,GAA/BA,sBAAA,CAAiC5D,OAAO,MAAA,IAAA,IAAA4D,sBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAxCA,sBAAA,CAA0ChD,SAAS;AACrE,QAAA,IAAIA,SAAS,EAAE;AACb,UAAA,KAAA,IAAAkD,EAAA,GAAAC,CAAAA,EAAAA,WAAA,GAAkBpH,KAAK,CAAC+F,IAAI,CAAC9B,SAAS,CAAC,EAAAkD,EAAA,GAAAC,WAAA,CAAAtH,MAAA,EAAAqH,EAAA,EAAE,EAAA;AAApC,YAAA,IAAM3E,GAAG,GAAA4E,WAAA,CAAAD,EAAA,CAAA;AACZnB,YAAAA,SAAS,CAACC,IAAI,CAACzD,GAAG,CAAC;AACrB;AACF;AACF;AAAC,KAAA,CAAA,OAAAG,GAAA,EAAA;MAAAoE,UAAA,CAAAnE,CAAA,CAAAD,GAAA,CAAA;AAAA,KAAA,SAAA;AAAAoE,MAAAA,UAAA,CAAAlE,CAAA,EAAA;AAAA;AACDiD,IAAAA,KAAK,GAAGE,SAAS;AACnB;EAEAF,KAAK,GAAG9F,KAAK,CAAC+F,IAAI,CAAA,CAAAM,sBAAA,GAAAC,CAAAA,qBAAA,GAACtD,WAAW,CAACK,OAAO,cAAAiD,qBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAnBA,qBAAA,CAAqBrC,SAAS,MAAA,IAAA,IAAAoC,sBAAA,KAAAA,KAAAA,CAAAA,GAAAA,sBAAA,GAAI,EAAE,CAAC;AAExD,EAAA,OAAOP,KAAK,CAAChG,MAAM,GAAG,CAAC,EAAE;IACvB,IAAMkG,UAA8B,GAAG,EAAE;AAAC,IAAA,IAAAqB,UAAA,GAAAtF,0BAAA,CAClB+D,KAAK,CAAA;MAAAwB,MAAA;AAAA,IAAA,IAAA;MAA7B,KAAAD,UAAA,CAAAlF,CAAA,EAAAmF,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,CAAAjF,CAAA,EAAAC,EAAAA,IAAA,GAA+B;QAAA,IAAAkF,qBAAA,EAAAC,sBAAA;AAAA,QAAA,IAApBzE,UAAS,GAAAuE,MAAA,CAAA7F,KAAA;QAClB,IAAMG,aAAa,GAAGD,YAAY,CAACoB,UAAS,EAAE3B,OAAO,EAAES,QAAQ,CAAC;AAChE,QAAA,IAAIiF,SAAS,CAAC3D,GAAG,CAACJ,UAAS,CAAC,IAAI+D,SAAS,CAACvF,GAAG,CAACwB,UAAS,CAAC,KAAKnB,aAAa,CAACpB,GAAG,EAAE;AAC9E,UAAA;AACF;QAEA,IAAA+G,CAAAA,qBAAA,GAAI3F,aAAa,CAACyB,OAAO,MAAAkE,IAAAA,IAAAA,qBAAA,KAArBA,KAAAA,CAAAA,IAAAA,qBAAA,CAAuBb,SAAS,EAAE;UAAA,IAAAe,UAAA,GAAA1F,0BAAA,CACbH,aAAa,CAACyB,OAAO,CAACqD,SAAS,CAAA;YAAAgB,MAAA;AAAA,UAAA,IAAA;YAAtD,KAAAD,UAAA,CAAAtF,CAAA,EAAAuF,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,CAAArF,CAAA,EAAAC,EAAAA,IAAA,GAAwD;AAAA,cAAA,IAA7CuE,QAAQ,GAAAc,MAAA,CAAAjG,KAAA;AACjBI,cAAAA,QAAQ,CAACgF,gBAAgB,CAAC3C,GAAG,CAAC0C,QAAQ,CAAC;AACzC;AAAC,WAAA,CAAA,OAAAjE,GAAA,EAAA;YAAA8E,UAAA,CAAA7E,CAAA,CAAAD,GAAA,CAAA;AAAA,WAAA,SAAA;AAAA8E,YAAAA,UAAA,CAAA5E,CAAA,EAAA;AAAA;AACH;AAEA,QAAA,IAAMoB,UAAS,GAAA,CAAAuD,sBAAA,GAAG5F,aAAa,CAACyB,OAAO,MAAA,IAAA,IAAAmE,sBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAArBA,sBAAA,CAAuBvD,SAAS;AAClD,QAAA,IAAIA,UAAS,EAAE;AACb,UAAA,KAAA,IAAA0D,GAAA,GAAAC,CAAAA,EAAAA,YAAA,GAAkB5H,KAAK,CAAC+F,IAAI,CAAC9B,UAAS,CAAC,EAAA0D,GAAA,GAAAC,YAAA,CAAA9H,MAAA,EAAA6H,GAAA,EAAE,EAAA;AAApC,YAAA,IAAMnF,IAAG,GAAAoF,YAAA,CAAAD,GAAA,CAAA;AACZ3B,YAAAA,UAAS,CAACC,IAAI,CAACzD,IAAG,CAAC;AACrB;AACF;AACF;AAAC,KAAA,CAAA,OAAAG,GAAA,EAAA;MAAA0E,UAAA,CAAAzE,CAAA,CAAAD,GAAA,CAAA;AAAA,KAAA,SAAA;AAAA0E,MAAAA,UAAA,CAAAxE,CAAA,EAAA;AAAA;AAEDiD,IAAAA,KAAK,GAAGE,UAAS;AACnB;AACF;AAEA,SAAS6B,kBAAkBA,CACzBlG,YAA0B,EAC1BqB,WAAgC,EAChC5B,OAAqB,EACrBS,QAAkB,EAClB;AACA8D,EAAAA,gBAAgB,CAAC3C,WAAW,EAAE5B,OAAO,EAAES,QAAQ,CAAC;EAChDqE,YAAY,CAACvE,YAAY,EAAEqB,WAAW,EAAE5B,OAAO,EAAES,QAAQ,CAAC;AAC5D;AAEA,SAASiG,aAAaA,CACpBnG,YAA0B,EAC1BoG,OAAiB,EACjB3G,OAAqB,EACrBS,QAAkB,EAClBrB,GAAgB,EAChB;AACA,EAAA,IAAIwH,QAAW;AACf,EAAA,IAAI,OAAOxH,GAAG,KAAK,UAAU,EAAE;IAAA,IAAAyH,IAAA,EAAAC,sBAAA;IAC7B,IAAMC,OAAO,GAAG3H,GAAiB;AACjCwH,IAAAA,QAAQ,GAAGG,OAAO,CAAAF,CAAAA,IAAA,GAAAC,CAAAA,sBAAA,GAAE9G,OAAO,CAACE,QAAQ,CAACC,GAAG,CAACwG,OAAO,CAAC,MAAA,IAAA,IAAAG,sBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAA7BA,sBAAA,CAA+B1H,GAAG,MAAA,IAAA,IAAAyH,IAAA,KAAA,KAAA,CAAA,GAAAA,IAAA,GAAsBF,OAAO,CAACK,IAAI,CAAC;AAC3F,GAAC,MAAM;AACLJ,IAAAA,QAAQ,GAAGxH,GAAG;AAChB;EAEA,IAAIgB,cAAc,CAACuG,OAAO,EAAEC,QAAQ,EAAE5G,OAAO,CAAC,EAAE;AAC9C,IAAA;AACF;EAEA,IAAM4B,WAAW,GAAG5B,OAAO,CAACE,QAAQ,CAACC,GAAG,CAACwG,OAAO,CAAC;EACjD,IAAI,CAAC/E,WAAW,EAAE;AAChB5B,IAAAA,OAAO,CAACE,QAAQ,CAACyC,GAAG,CAACgE,OAAO,EAAE;AAC5BvH,MAAAA,GAAG,EAAEwH,QAAQ;AACbvF,MAAAA,KAAK,EAAE;AACT,KAAC,CAAC;AACF,IAAA;AACF;EAEAO,WAAW,CAACxC,GAAG,GAAGwH,QAAQ;EAC1BhF,WAAW,CAACP,KAAK,IAAI,CAAC;EACtBoF,kBAAkB,CAAClG,YAAY,EAAEqB,WAAW,EAAE5B,OAAO,EAAES,QAAQ,CAAC;AAEhE,EAAA,OAAOjB,SAAS;AAClB;AAEO,SAASmD,GAAGA,CACjBpC,YAA0B,EAC1BrC,SAAsC,EACtC8B,OAAqB,EACrBS,QAAkB,EAEH;EACf,IAAI,MAAM,IAAIvC,SAAS,EAAE;AACvB,IAAA;AACF;EAAC,KAAAM,IAAAA,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAJEC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAA,CAAAA,GAAAA,IAAA,WAAAK,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,EAAA,EAAA;AAAJF,IAAAA,IAAI,CAAAE,IAAA,GAAAJ,CAAAA,CAAAA,GAAAA,SAAA,CAAAI,IAAA,CAAA;AAAA;EAMP,IAAI,OAAO,IAAIX,SAAS,EAAE;AACxB,IAAA,OAAOA,SAAS,CAAC+I,KAAK,CAAAnI,KAAA,CAAfZ,SAAS,EAAOuC,CAAAA,QAAQ,CAACyG,OAAO,CAAA,CAAAnI,MAAA,CAAKJ,IAAI,CAAC,CAAA;AACnD;AAEA+H,EAAAA,aAAa,CAACnG,YAAY,EAAErC,SAAS,EAAE8B,OAAO,EAAES,QAAQ,EAAE9B,IAAI,CAAC,CAAC,CAAC,CAAC;AAClE,EAAA;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASwI,cAAcA,CAACnH,OAAqB,EAAEG,IAAa,EAAEwC,IAAa,EAAY;AAC5F,EAAA,IAAMlC,QAAkB,GAAG;AACzBqB,IAAAA,iBAAiB,EAAE,IAAIsF,GAAG,EAAE;AAC5B3B,IAAAA,gBAAgB,EAAE,IAAI2B,GAAG,EAAE;AAC3BF,IAAAA,OAAO,EAAE;AACP/G,MAAAA,GAAG,EAAE,SAALA,GAAGA,CAAMwG,OAAkB,EAAK;AAC9B,QAAA,OAAOxG,IAAG,CAACwG,OAAO,EAAE3G,OAAO,EAAES,QAAQ,CAAC;OACvC;AACDkC,MAAAA,GAAG,EAAE,SAALA,GAAGA,CACDgE,OAAoC,EAElB;QAAA,KAAAU,IAAAA,KAAA,GAAA5I,SAAA,CAAAC,MAAA,EADfC,IAAI,OAAAC,KAAA,CAAAyI,KAAA,GAAAA,CAAAA,GAAAA,KAAA,WAAAC,KAAA,GAAA,CAAA,EAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA,EAAA,EAAA;AAAJ3I,UAAAA,IAAI,CAAA2I,KAAA,GAAA7I,CAAAA,CAAAA,GAAAA,SAAA,CAAA6I,KAAA,CAAA;AAAA;QAEP,OAAO3E,IAAG,CAAA7D,KAAA,CAAU6H,KAAAA,CAAAA,EAAAA,CAAAA,OAAO,EAAE3G,OAAO,CAAAjB,CAAAA,MAAA,CAAKJ,IAAI,CAAC,CAAA;AAChD;AACF;GACD;AAED,EAAA,OAAO8B,QAAQ;AACjB;;ACzLO,SAAS8G,SAASA,CAAIzH,KAAe,EAAEE,OAAqB,EAAiB;EAClF,IAAMwH,SAAS,GAAGxH,OAAO,CAACE,QAAQ,CAACC,GAAG,CAACL,KAAK,CAAC;EAC7C,IAAI,CAAC0H,SAAS,EAAE;AACd,IAAA,IAAMC,SAAS,GAAG;MAChBrI,GAAG,EAAEU,KAAK,CAACkH,IAAI;AACf3F,MAAAA,KAAK,EAAE;KACR;IACDrB,OAAO,CAACE,QAAQ,CAACyC,GAAG,CAAC7C,KAAK,EAAE2H,SAAS,CAAC;AACtC,IAAA,OAAOA,SAAS;AAClB;AAEA,EAAA,OAAOD,SAAS;AAClB;;ACHA,SAASE,2BAA2BA,CAClC/F,SAAsB,EACtBnB,aAA+B,EAC/BR,OAAqB,EACrBS,QAAmB,EACnB;EACA,KAAAsF,IAAAA,EAAA,MAAAC,WAAA,GAAoBpH,KAAK,CAAC+F,IAAI,CAACnE,aAAa,CAACI,YAAY,CAAC,EAAAmF,EAAA,GAAAC,WAAA,CAAAtH,MAAA,EAAAqH,EAAA,EAAE,EAAA;AAAA,IAAA,IAAA9F,qBAAA;AAAvD,IAAA,IAAA0H,cAAA,GAAAxG,cAAA,CAAA6E,WAAA,CAAAD,EAAA,CAAA,EAAA,CAAA,CAAA;AAAO3E,MAAAA,GAAG,GAAAuG,cAAA,CAAA,CAAA,CAAA;IACb,CAAA1H,qBAAA,GAAAD,OAAO,CAACE,QAAQ,CAACC,GAAG,CAACiB,GAAG,CAAC,MAAA,IAAA,IAAAnB,qBAAA,KAAA,KAAA,CAAA,IAAA,CAAAA,qBAAA,GAAzBA,qBAAA,CAA2BgC,OAAO,MAAA,IAAA,IAAAhC,qBAAA,KAAA,KAAA,CAAA,IAAlCA,qBAAA,CAAoC4C,SAAS,CAAA,QAAA,CAAO,CAAClB,SAA8B,CAAC;AACpFsB,IAAAA,OAAO,CAAC7B,GAAG,EAAEpB,OAAiB,CAAC;AACjC;AACF;AAEA,SAAS4H,yBAAyBA,CAChCzF,UAAsB,EACtBR,SAAsB,EACtBnB,aAA+B,EAC/BR,OAAqB,EACrBS,QAAmB,EACnB;EACA,KAAA8F,IAAAA,GAAA,MAAAC,YAAA,GAAoB5H,KAAK,CAAC+F,IAAI,CAACnE,aAAa,CAACI,YAAY,CAAC,EAAA2F,GAAA,GAAAC,YAAA,CAAA9H,MAAA,EAAA6H,GAAA,EAAE,EAAA;AAAvD,IAAA,IAAAsB,eAAA,GAAA1G,cAAA,CAAAqF,YAAA,CAAAD,GAAA,CAAA,EAAA,CAAA,CAAA;AAAOnF,MAAAA,GAAG,GAAAyG,eAAA,CAAA,CAAA,CAAA;IACb,IAAM5F,OAAO,GAAGG,OAAK,CAACD,UAAU,EAAEf,GAAG,EAAEpB,OAAO,EAAES,QAAQ,CAAC;AACzDwB,IAAAA,OAAO,CAACY,SAAS,CAACC,GAAG,CAACnB,SAA8B,CAAC;AACvD;AACF;AAEA,SAASmG,SAASA,CAAI3F,UAAsB,EAAEwE,OAAkB,EAAE3G,OAAqB,EAAES,QAAmB,EAAW;AAAA,EAAA,IAAAuD,oBAAA,EAAA+D,qBAAA,EAAAtD,oBAAA;EACrH,CAAAT,oBAAA,GAAAhE,OAAO,CAAC7B,WAAW,MAAA6F,IAAAA,IAAAA,oBAAA,KAAA+D,KAAAA,CAAAA,IAAAA,CAAAA,qBAAA,GAAnB/D,oBAAA,CAAqB5B,KAAK,MAAA,IAAA,IAAA2F,qBAAA,KAAA,KAAA,CAAA,IAA1BA,qBAAA,CAAAC,IAAA,CAAAhE,oBAAA,EAA6B2C,OAAO,CAAC;EAErC,IAAM/E,WAAW,GAAGO,UAAU,CAACwE,OAAO,EAAE3G,OAAO,EAAES,QAAQ,CAAC;AAE1DmB,EAAAA,WAAW,CAACK,OAAO,GAAAwC,CAAAA,oBAAA,GAAG7C,WAAW,CAACK,OAAO,MAAAwC,IAAAA,IAAAA,oBAAA,KAAAA,KAAAA,CAAAA,GAAAA,oBAAA,GAAI;AAC3Ca,IAAAA,SAAS,EAAE,IAAI8B,GAAG,EAAE;IACpBvE,SAAS,EAAE,IAAIuE,GAAG;GACnB;AAED,EAAA,IAAIvH,eAAe,CAAC+B,WAAW,CAAC,EAAE;IAChCgG,yBAAyB,CAACzF,UAAU,EAAEwE,OAAO,EAAuB/E,WAAW,EAAE5B,OAAO,EAAES,QAAQ,CAAC;AACrG;EAEA,OAAOmB,WAAW,CAACK,OAAO;AAC5B;AAEO,SAASG,OAAKA,CACnBD,UAAsB,EACtBwE,OAAkB,EAClB3G,OAAqB,EACrBS,QAAmB,EACV;AAAA,EAAA,IAAAoF,sBAAA;AACT,EAAA,IAAM5D,OAAO,GAAA4D,CAAAA,sBAAA,GAAG7F,OAAO,CAACE,QAAQ,CAACC,GAAG,CAACwG,OAAO,CAAC,MAAA,IAAA,IAAAd,sBAAA,KAA7BA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAA,CAA+B5D,OAAO;AACtD,EAAA,IAAIA,OAAO,EAAE;AACX,IAAA,OAAOA,OAAO;AAChB;EAEA,OAAO6F,SAAS,CAAC3F,UAAU,EAAEwE,OAAO,EAAE3G,OAAO,EAAES,QAAQ,CAAC;AAC1D;AAEA,SAASwH,SAASA,CAChBtB,OAAkB,EAClB/E,WAA2B,EAC3B5B,OAAqB,EACrBS,QAAmB,EACb;EAAA,IAAAyH,qBAAA,EAAAC,qBAAA;EACN,CAAAD,qBAAA,GAAAlI,OAAO,CAAC7B,WAAW,MAAA+J,IAAAA,IAAAA,qBAAA,KAAAC,KAAAA,CAAAA,IAAAA,CAAAA,qBAAA,GAAnBD,qBAAA,CAAqBjF,OAAO,MAAA,IAAA,IAAAkF,qBAAA,KAAA,KAAA,CAAA,IAA5BA,qBAAA,CAAAH,IAAA,CAAAE,qBAAA,EAA+BvB,OAAO,CAAC;AAEvC,EAAA,IAAI9G,eAAe,CAAC+B,WAAW,CAAC,EAAE;IAChC8F,2BAA2B,CAACf,OAAO,EAAuB/E,WAAW,EAAE5B,OAAiB,CAAC;AAC3F;EAEA4B,WAAW,CAACK,OAAO,GAAGzC,SAAS;AACjC;AAEO,SAASyD,OAAOA,CAAI0D,OAAkB,EAAE3G,OAAqB,EAAES,QAAmB,EAAQ;EAC/F,IAAMmB,WAAW,GAAG5B,OAAO,CAACE,QAAQ,CAACC,GAAG,CAACwG,OAAO,CAAC;EACjD,IAAI,EAAC/E,WAAW,KAAA,IAAA,IAAXA,WAAW,KAAA,KAAA,CAAA,IAAXA,WAAW,CAAEK,OAAO,CAAIL,IAAAA,WAAW,CAACK,OAAO,CAACqD,SAAS,CAAC8C,IAAI,IAAIxG,WAAW,CAACK,OAAO,CAACY,SAAS,CAACuF,IAAI,EAAE;AACrG,IAAA;AACF;EAEAH,SAAS,CAACtB,OAAO,EAAE/E,WAAW,EAAE5B,OAAiB,CAAC;AACpD;AAEO,SAASqI,eAAeA,CAC7BlG,UAAsB,EACtBwE,OAAkB,EAClBpH,SAA+B,EAC/BS,OAAqB,EACrBd,MAAmB,EACnB;AAAA,EAAA,IAAAoJ,qBAAA;AACAhJ,EAAAA,kBAAkB,CAChB,YAAM;IACJ,IAAM2C,OAAO,GAAGG,OAAK,CAACD,UAAU,EAAEwE,OAAO,EAAE3G,OAAO,CAAC;AACnDiC,IAAAA,OAAO,CAACqD,SAAS,CAACxC,GAAG,CAACvD,SAAS,CAAC;AAEhC,IAAA,IAAMgJ,KAAK,GAAG,SAARA,KAAKA,GAAS;AAAA,MAAA,IAAAC,qBAAA;AAClB/I,MAAAA,oBAAoB,CAClB,YAAM;AACJwC,QAAAA,OAAO,CAACqD,SAAS,CAAO,QAAA,CAAA,CAAC/F,SAAS,CAAC;AAEnC,QAAA,IAAI0C,OAAO,CAACY,SAAS,CAACuF,IAAI,KAAK,CAAC,IAAInG,OAAO,CAACqD,SAAS,CAAC8C,IAAI,KAAK,CAAC,EAAE;AAChEnF,UAAAA,OAAO,CAAC0D,OAAO,EAAE3G,OAAO,CAAC;AAC3B;AACF,OAAC,EACD2G,OAAO,EACPpH,SAAS,EAAA,CAAAiJ,qBAAA,GACTxI,OAAO,CAAC7B,WAAW,cAAAqK,qBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAnBA,qBAAA,CAAqBD,KACvB,CAAC;KACF;AAEDrJ,IAAAA,MAAM,CAACuJ,gBAAgB,CAAC,OAAO,EAAEF,KAAK,EAAE;AACtCG,MAAAA,IAAI,EAAE;AACR,KAAC,CAAC;AACJ,GAAC,EACD/B,OAAO,EACPpH,SAAS,EAAA,CAAA+I,qBAAA,GACTtI,OAAO,CAAC7B,WAAW,cAAAmK,qBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAnBA,qBAAA,CAAqBK,GACvB,CAAC;AACH;AAEO,SAASC,MAAMA,CAAC5I,OAAqB,EAAES,QAAkB,EAAE;AAChE,EAAA,IAAMgF,gBAAgB,GAAGhF,QAAQ,CAACgF,gBAAgB;AAClDhF,EAAAA,QAAQ,CAACgF,gBAAgB,GAAG,IAAI2B,GAAG,EAAE;AAAC,EAAA,IAAA1G,SAAA,GAAAC,0BAAA,CAEf8E,gBAAgB,CAAA;IAAA3E,KAAA;AAAA,EAAA,IAAA;IAAA,IAAA+H,KAAA,GAAAA,SAAAA,KAAAA,GAAE;AAAA,MAAA,IAAAC,qBAAA;AAAA,MAAA,IAA9BtD,QAAQ,GAAA1E,KAAA,CAAAT,KAAA;AACjBX,MAAAA,qBAAqB,CACnB,YAAM;AACJ,QAAA,OAAO8F,QAAQ,CAACyB,KAAK,CAACxG,QAAQ,CAACyG,OAAO,CAAC;AACzC,OAAC,EACD1B,QAAQ,EAAAsD,CAAAA,qBAAA,GACR9I,OAAO,CAAC7B,WAAW,MAAA,IAAA,IAAA2K,qBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAnBA,qBAAA,CAAqBF,MACvB,CAAC;KACF;IARD,KAAAlI,SAAA,CAAAK,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAJ,SAAA,CAAAM,CAAA,EAAA,EAAAC,IAAA,GAAA;MAAA4H,KAAA,EAAA;AAAA;AAQC,GAAA,CAAA,OAAAtH,GAAA,EAAA;IAAAb,SAAA,CAAAc,CAAA,CAAAD,GAAA,CAAA;AAAA,GAAA,SAAA;AAAAb,IAAAA,SAAA,CAAAe,CAAA,EAAA;AAAA;AACH;;ACvHA,IAAMlB,aAA0B,GAAG,SAA7BA,YAA0BA,CAC9BoB,SAAsB,EACtB3B,OAAqB,EACrBS,QAAmB,EACE;AAAA,EAAA,IAAAuD,oBAAA;EACrB,IAAM+E,WAAW,GAAGrH,YAAY,CAACnB,aAAY,EAAEoB,SAAS,EAAE3B,OAAO,EAAES,QAAQ,CAAC;AAC5E,EAAA,IAAIsI,WAAW,EAAE;AACf,IAAA,OAAOA,WAAW;AACpB;EAEA,OAAO5J,uBAAuB,CAC5B,YAAM;AACJ,IAAA,OAAOsE,gBAAgB,CAACtB,UAAU,EAAEC,KAAK,EAAEa,OAAO,EAAEtB,SAAS,EAAE3B,OAAO,EAAES,QAAQ,CAAC;AACnF,GAAC,EACDkB,SAAS,EAAAqC,CAAAA,oBAAA,GACThE,OAAO,CAAC7B,WAAW,MAAA,IAAA,IAAA6F,oBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAnBA,oBAAA,CAAqBgF,QACvB,CAAC;AACH,CAAC;AAED,SAAS7G,UAAUA,CAAIwE,OAAkB,EAAE3G,OAAqB,EAAES,QAAmB,EAAkB;AACrG,EAAA,IAAId,gBAAgB,CAACgH,OAAO,CAAC,EAAE;AAC7B,IAAA,OAAOpG,aAAY,CAACoG,OAAO,EAAE3G,OAAO,EAAES,QAAQ,CAAC;AACjD;AAEA,EAAA,OAAO8G,SAAS,CAACZ,OAAO,EAAE3G,OAAO,CAAC;AACpC;AAEA,SAASoC,KAAKA,CAAIuE,OAAkB,EAAE3G,OAAqB,EAAES,QAAmB,EAAW;EACzF,OAAOwI,OAAU,CAAC9G,UAAU,EAAEwE,OAAO,EAAE3G,OAAO,EAAES,QAAQ,CAAC;AAC3D;AAEA,SAASkI,IAAGA,CACVO,QAAiC,EACjC3J,SAA+B,EAC/BS,OAAqB,EACrBmJ,OAA0B,EACd;AACZ,EAAA,IAAIvK,KAAK,CAACwK,OAAO,CAACF,QAAQ,CAAC,IAAIA,QAAQ,CAACxK,MAAM,KAAK,CAAC,EAAE;IACpD,OAAO,YAAA;AAAA,MAAA,OAAM,KAAK,CAAC;AAAA,KAAA;AACrB;AAEA,EAAA,IAAM2K,UAAU,GAAG,IAAI/E,eAAe,EAAE;EACxC,IAAMpF,MAAM,GAAGiK,OAAO,KAAPA,IAAAA,IAAAA,OAAO,KAAPA,KAAAA,CAAAA,IAAAA,OAAO,CAAEjK,MAAM,GAAGoK,WAAW,CAACC,GAAG,CAAC,CAACF,UAAU,CAACnK,MAAM,EAAEiK,OAAO,CAACjK,MAAM,CAAC,CAAC,GAAGmK,UAAU,CAACnK,MAAM;AAEzG,EAAA,IAAI,CAACN,KAAK,CAACwK,OAAO,CAACF,QAAQ,CAAC,EAAE;IAC5Bb,eAAe,CAAClG,UAAU,EAAE+G,QAAQ,EAAE3J,SAAS,EAAES,OAAO,EAAEd,MAAM,CAAC;AACnE,GAAC,MAAM;AACLgK,IAAAA,QAAQ,CAACM,OAAO,CAAC,UAAC5J,IAAI,EAAK;MACzByI,eAAe,CAAClG,UAAU,EAAEvC,IAAI,EAAEL,SAAS,EAAES,OAAO,EAAEd,MAAM,CAAC;AAC/D,KAAC,CAAC;AACJ;AAEA,EAAA,OAAO,YAAM;IACXmK,UAAU,CAACjF,KAAK,EAAE;GACnB;AACH;AAEA,IAAMjE,GAAa,GAAG,SAAhBA,GAAaA,CAAIjB,MAAM,EAAEc,OAAO,EAAES,QAAQ,EAAK;AAAA,EAAA,IAAAyH,qBAAA;EACnD,OAAOjJ,kBAAkB,CACvB,YAAM;IACJ,OAAOkD,UAAU,CAACjD,MAAM,EAAEc,OAAO,EAAES,QAAQ,CAAC,CAACrB,GAAG;AAClD,GAAC,EACDF,MAAM,EAAAgJ,CAAAA,qBAAA,GACNlI,OAAO,CAAC7B,WAAW,MAAA,IAAA,IAAA+J,qBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAnBA,qBAAA,CAAqB/H,GACvB,CAAC;AACH,CAAC;AAED,IAAMwC,IAAa,GAAG,SAAhBA,KAAaA,CACjB/C,IAAiC,EACjCI,OAAqB,EAEH;AAAA,EAAA,IAAAmI,qBAAA;EAAA,KAAA3J,IAAAA,IAAA,GAAAC,SAAA,CAAAC,MAAA,EADfC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAA,CAAAA,GAAAA,IAAA,WAAAK,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,EAAA,EAAA;AAAJF,IAAAA,IAAI,CAAAE,IAAA,GAAAJ,CAAAA,CAAAA,GAAAA,SAAA,CAAAI,IAAA,CAAA;AAAA;AAEP,EAAA,OAAOb,kBAAkB,CAAAc,KAAA,CAAA,KAAA,CAAA,EAAA,CACvB,YAAM;IACJ,IAAM2B,QAAQ,GAAG0G,cAAc,CAACnH,OAAO,EAAEG,GAAG,EAAEwC,IAAG,CAAC;AAElD,IAAA,IAAI8G,GAAkB;IACtB,IAAI;AACFA,MAAAA,GAAG,GAAGC,GAAQ,CAAA5K,KAAA,CAAA,KAAA,CAAA,EAAA,CAAUyB,aAAY,EAAEX,IAAI,EAAEI,OAAO,EAAES,QAAQ,CAAA,CAAA1B,MAAA,CAAKJ,IAAI,CAAC,CAAA;AACzE,KAAC,SAAS;AACRiK,MAAAA,MAAM,CAAC5I,OAAO,EAAES,QAAQ,CAAC;AAC3B;AACA,IAAA,OAAOgJ,GAAG;AACZ,GAAC,EACD7J,IAAI,EAAA,CAAAuI,qBAAA,GACJnI,OAAO,CAAC7B,WAAW,MAAA,IAAA,IAAAgK,qBAAA,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAAqBxF,GAAG,CAAA,CAAA5D,MAAA,CACrBJ,IAAI,CACT,CAAC;AACH,CAAC;AAED,IAAagL,SAAS,gBAAA,YAAA;EAIpB,SAAAA,SAAAA,CAA+BR,OAAsB,EAAE;AAAA,IAAA,IAAAS,KAAA,GAAA,IAAA;MAAAC,aAAA;AAAAC,IAAAA,eAAA,OAAAH,SAAA,CAAA;AAAAI,IAAAA,eAAA,CAHf,IAAA,EAAA,UAAA,EAAA,IAAIC,OAAO,EAAE,CAAA;IAAAD,eAAA,CAAA,IAAA,EAAA,KAAA,EAUvC,UAAInK,IAAe,EAAQ;AACvC,MAAA,OAAOO,GAAG,CAACP,IAAI,EAAEgK,KAAI,CAAC5J,OAAO,CAAC;KAC/B,CAAA;IAAA+J,eAAA,CAAA,IAAA,EAAA,KAAA,EAEa,UACZnK,IAAiC,EAEf;MAAA,KAAAyH,IAAAA,KAAA,GAAA5I,SAAA,CAAAC,MAAA,EADfC,IAAI,OAAAC,KAAA,CAAAyI,KAAA,GAAAA,CAAAA,GAAAA,KAAA,WAAAC,KAAA,GAAA,CAAA,EAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA,EAAA,EAAA;AAAJ3I,QAAAA,IAAI,CAAA2I,KAAA,GAAA7I,CAAAA,CAAAA,GAAAA,SAAA,CAAA6I,KAAA,CAAA;AAAA;AAEP,MAAA,OAAO3E,IAAG,CAAA7D,KAAA,CAAA,KAAA,CAAA,EAAA,CAAUc,IAAI,EAAEgK,KAAI,CAAC5J,OAAO,CAAA,CAAAjB,MAAA,CAAKJ,IAAI,CAAC,CAAA;KACjD,CAAA;IAAA,IAhB8BwK,CAAAA,OAAsB,GAAtBA,OAAsB;IACnD,IAAI,CAACnJ,OAAO,GAAG;MACbE,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvB/B,WAAW,EAAA,CAAA0L,aAAA,GAAE,IAAI,CAACV,OAAO,MAAAU,IAAAA,IAAAA,aAAA,KAAZA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAA,CAAc1L;KAC5B;AACH;EAAC,OAAA8L,YAAA,CAAAN,SAAA,EAAA,CAAA;IAAApG,GAAA,EAAA,KAAA;IAAAlD,KAAA,EAaD,SAAAsI,GAAGA,CACDuB,QAA6C,EAC7CC,GAAgC,EAChChB,OAA0B,EACd;MACZ,OAAOR,IAAG,CAACuB,QAAQ,EAAEC,GAAG,EAAE,IAAI,CAACnK,OAAO,EAAEmJ,OAAO,CAAC;AAClD;AAAC,GAAA,CAAA,CAAA;AAAA,CAAA,EAAA;;ACvIUiB,IAAAA,cAAc,0BAAAC,UAAA,EAAA;AAAA,EAAA,SAAAD,cAAA,GAAA;AAAA,IAAA,IAAAR,KAAA;AAAAE,IAAAA,eAAA,OAAAM,cAAA,CAAA;AAAA,IAAA,KAAA,IAAA5L,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,GAAAC,IAAAA,KAAA,CAAAJ,IAAA,GAAAK,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,EAAA,EAAA;AAAAF,MAAAA,IAAA,CAAAE,IAAA,CAAAJ,GAAAA,SAAA,CAAAI,IAAA,CAAA;AAAA;AAAA+K,IAAAA,KAAA,GAAAU,UAAA,CAAA,IAAA,EAAAF,cAAA,EAAArL,EAAAA,CAAAA,MAAA,CAAAJ,IAAA,CAAA,CAAA;AAAAoL,IAAAA,eAAA,CAAAH,KAAA,EAAA,2BAAA,EACoB,IAAIpH,GAAG,EAA8C,CAAA;IAAAuH,eAAA,CAAAH,KAAA,EAExE,KAAA,EAAA,UACxBW,KAAoF,EACpFC,EAA+B,EAC/BrB,OAA0B,EACT;AAAA,MAAA,IAAAsB,eAAA;AACjB,MAAA,IAAMC,QAAQ,GAAG9L,KAAK,CAACwK,OAAO,CAACmB,KAAK,CAAC,GAAGA,KAAK,GAAG,CAACA,KAAK,CAAC;AAEvDG,MAAAA,QAAQ,CAAClB,OAAO,CAAC,UAAC5J,IAAI,EAAK;AAAA,QAAA,IAAA+K,qBAAA;QACzBf,KAAA,CAAKgB,yBAAyB,CAACjI,GAAG,CAAC/C,IAAI,EAAE,CAAA+K,CAAAA,qBAAA,GAACf,KAAA,CAAKgB,yBAAyB,CAACzK,GAAG,CAACP,IAAI,CAAC,MAAA+K,IAAAA,IAAAA,qBAAA,KAAAA,KAAAA,CAAAA,GAAAA,qBAAA,GAAI,CAAC,IAAI,CAAC,CAAC;AAC/F,OAAC,CAAC;AAEF,MAAA,IAAMpC,KAAK,GAAAsC,aAAA,EAAAT,cAAA,GAAAR,KAAAA,EAAAA,QAAaW,KAAK,EAAEC,EAAE,EAAErB,OAAO,CAAC,CAAA;AAC3C,MAAA,IAAM2B,OAAO,GAAG,SAAVA,OAAOA,GAAS;AACpBJ,QAAAA,QAAQ,CAAClB,OAAO,CAAC,UAAC5J,IAAI,EAAK;AAAA,UAAA,IAAAmL,sBAAA;AACzB,UAAA,IAAMC,KAAK,GAAAD,CAAAA,sBAAA,GAAGnB,KAAA,CAAKgB,yBAAyB,CAACzK,GAAG,CAACP,IAAI,CAAC,MAAA,IAAA,IAAAmL,sBAAA,KAAAA,KAAAA,CAAAA,GAAAA,sBAAA,GAAI,CAAC;UAC3D,IAAIC,KAAK,KAAK,CAAC,EAAE;AACf,YAAA;AACF;UAEApB,KAAA,CAAKgB,yBAAyB,CAACjI,GAAG,CAAC/C,IAAI,EAAEoL,KAAK,GAAG,CAAC,CAAC;UACnD,IAAIA,KAAK,KAAK,CAAC,EAAE;AACfpB,YAAAA,KAAA,CAAKgB,yBAAyB,CAAO,QAAA,CAAA,CAAChL,IAAI,CAAC;AAC7C;AACF,SAAC,CAAC;OACH;AACDuJ,MAAAA,OAAO,aAAPA,OAAO,KAAA,KAAA,CAAA,IAAA,CAAAsB,eAAA,GAAPtB,OAAO,CAAEjK,MAAM,MAAA,IAAA,IAAAuL,eAAA,KAAA,KAAA,CAAA,IAAfA,eAAA,CAAiBhC,gBAAgB,CAAC,OAAO,EAAEqC,OAAO,CAAC;AACnD,MAAA,OAAO,YAAM;AACXvC,QAAAA,KAAK,EAAE;AACPuC,QAAAA,OAAO,EAAE;OACV;KACF,CAAA;AAAAf,IAAAA,eAAA,CAAAH,KAAA,EAEqB,qBAAA,EAAA,UAAChK,IAAwC,EAAiB;MAC9E,IAAM4H,SAAS,GAAGoC,KAAA,CAAK5J,OAAO,CAACE,QAAQ,CAACC,GAAG,CAACP,IAAI,CAAC;MACjD,IAAI,CAAC4H,SAAS,EAAE;QACd,OAAO,CAAC5H,IAAI,CAAC;AACf;AAEA,MAAA,IAAI,EAAE,cAAc,IAAI4H,SAAS,CAAC,EAAE;QAClC,OAAO,CAAC5H,IAAI,CAAC;AACf;AAEA,MAAA,OAAA,CACEA,IAAI,CAAAb,CAAAA,MAAA,CAAAkM,kBAAA,CACDrM,KAAK,CAAC+F,IAAI,CAAC6C,SAAS,CAAC5G,YAAY,CAAC,CAACsK,GAAG,CAAC,UAAArE,IAAA,EAAW;AAAA,QAAA,IAAAsE,KAAA,GAAAhK,cAAA,CAAA0F,IAAA,EAAA,CAAA,CAAA;AAATtD,UAAAA,GAAG,GAAA4H,KAAA,CAAA,CAAA,CAAA;AAC7C,QAAA,OAAOvB,KAAA,CAAKwB,mBAAmB,CAAC7H,GAAG,CAAC;AACtC,OAAC,CAAC,CAAA,CAAA;KAEL,CAAA;AAAAwG,IAAAA,eAAA,CAAAH,KAAA,EAEmB,mBAAA,EAAA,UAAChK,IAAwC,EAAiB;MAAA,IAAAyL,qBAAA,EAAAC,kBAAA;MAC5E,IAAM9D,SAAS,GAAGoC,KAAA,CAAK5J,OAAO,CAACE,QAAQ,CAACC,GAAG,CAACP,IAAI,CAAC;MACjD,IAAI,CAAC4H,SAAS,EAAE;QACd,OAAO,CAAC5H,IAAI,CAAC;AACf;AAEA,MAAA,OAAA,CACEA,IAAI,CAAA,CAAAb,MAAA,CAAAkM,kBAAA,CACDrM,KAAK,CAAC+F,IAAI,EAAA0G,qBAAA,GAAA,CAAAC,kBAAA,GAAC9D,SAAS,CAACvF,OAAO,MAAAqJ,IAAAA,IAAAA,kBAAA,KAAjBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAAmBzI,SAAS,cAAAwI,qBAAA,KAAA,KAAA,CAAA,GAAAA,qBAAA,GAAI,EAAE,CAAC,CAACH,GAAG,CAAC,UAAC3H,GAAG,EAAA;AAAA,QAAA,OAAKqG,KAAA,CAAK2B,iBAAiB,CAAChI,GAAG,CAAC;OAAC,CAAA,CAAA,CAAA;KAE9F,CAAA;IAAAwG,eAAA,CAAAH,KAAA,EAAA,mBAAA,EAEmB,YAAkB;AACpC,MAAA,IAAM4B,eAAe,GAAG5M,KAAK,CAAC+F,IAAI,CAACiF,KAAA,CAAKgB,yBAAyB,CAACvH,IAAI,EAAE,CAAC;AACzE,MAAA,OAAOmI,eAAe,CAACN,GAAG,CAAC,UAACtL,IAAI,EAAK;QACnC,IAAM4H,SAAS,GAAGoC,KAAA,CAAK5J,OAAO,CAACE,QAAQ,CAACC,GAAG,CAACP,IAAI,CAAC;AACjD;QACA,IAAM0F,SAAS,GAAG1G,KAAK,CAAC+F,IAAI,CAAC6C,SAAS,CAAEvF,OAAO,CAAEqD,SAAS,CAAC;AAC3D,QAAA,OAAA,CAAQ1F,IAAI,CAAA,CAAAb,MAAA,CAAKuG,SAAS,CAAA;AAC5B,OAAC,CAAC;KACH,CAAA;AAAAyE,IAAAA,eAAA,CAAAH,KAAA,EAEW,WAAA,EAAA,UAAChK,IAAwC,EAAc;MACjE,IAAM6L,UAAU,GAAG7B,KAAA,CAAK1J,QAAQ,CAACC,GAAG,CAACP,IAAI,CAAC;MAC1C,OAAO,CAAA6L,UAAU,KAAVA,IAAAA,IAAAA,UAAU,uBAAVA,UAAU,CAAExJ,OAAO,MAAKzC,SAAS;KACzC,CAAA;AAAAuK,IAAAA,eAAA,CAAAH,KAAA,EAEsB,sBAAA,EAAA,UAACjI,SAA4B,EAAa;AAC/D,MAAA,IAAMzB,QAAQ,GAAG0J,KAAA,CAAK5J,OAAO,CAACE,QAAQ;AACtC,MAAA,SAASwL,qBAAqBA,CAAC/J,SAA4B,EAAEvD,MAAc,EAAE;AAC3E,QAAA,IAAMoC,aAAa,GAAGN,QAAQ,CAACC,GAAG,CAACwB,SAAS,CAA2B;QAAC,IAAAjB,SAAA,GAAAC,0BAAA,CAC1CH,aAAa,CAACI,YAAY,CAACC,OAAO,EAAE,CAAA;UAAAC,KAAA;AAAA,QAAA,IAAA;UAAlE,KAAAJ,SAAA,CAAAK,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAJ,SAAA,CAAAM,CAAA,EAAAC,EAAAA,IAAA,GAAoE;AAAA,YAAA,IAAAC,WAAA,GAAAC,cAAA,CAAAL,KAAA,CAAAT,KAAA,EAAA,CAAA,CAAA;AAAxDsL,cAAAA,MAAM,GAAAzK,WAAA,CAAA,CAAA,CAAA;AAAEG,cAAAA,KAAK,GAAAH,WAAA,CAAA,CAAA,CAAA;AACvB;AACA,YAAA,IAAM0K,UAAU,GAAG1L,QAAQ,CAACC,GAAG,CAACwL,MAAM,CAA0B;YAChEvN,MAAM,CAACyG,IAAI,CAAC,CACV;AACE3F,cAAAA,MAAM,EAAEyC,SAAS;cACjBvC,GAAG,EAAEoB,aAAa,CAACpB,GAAG;cACtBiC,KAAK,EAAEb,aAAa,CAACa;AACvB,aAAC,EACD;AACEnC,cAAAA,MAAM,EAAEyM,MAAM;cACdvM,GAAG,EAAEwM,UAAU,CAACxM,GAAG;cACnBiC,KAAK,EAAEuK,UAAU,CAACvK;aACnB,EACDA,KAAK,CACN,CAAC;AACF,YAAA,IAAI1B,gBAAgB,CAACgM,MAAM,CAAC,EAAE;AAC5BD,cAAAA,qBAAqB,CAACC,MAAM,EAAEvN,MAAM,CAAC;AACvC;AACF;AAAC,SAAA,CAAA,OAAAmD,GAAA,EAAA;UAAAb,SAAA,CAAAc,CAAA,CAAAD,GAAA,CAAA;AAAA,SAAA,SAAA;AAAAb,UAAAA,SAAA,CAAAe,CAAA,EAAA;AAAA;AACH;MAEA,IAAMrD,MAAc,GAAG,EAAE;AACzBsN,MAAAA,qBAAqB,CAAC/J,SAAS,EAAEvD,MAAM,CAAC;AACxC,MAAA,OAAOA,MAAM;KACd,CAAA;AAAA,IAAA,OAAAwL,KAAA;AAAA;EAAAiC,SAAA,CAAAzB,cAAA,EAAAC,UAAA,CAAA;EAAA,OAAAJ,YAAA,CAAAG,cAAA,CAAA;AAAA,CAAA,CA7GiCT,SAAS,CAAA;AAgHtC,SAASmC,wBAAwBA,CAAC3N,WAA8B,EAAc;EACnF,OAAO,IAAIiM,cAAc,CAAC;AACxBjM,IAAAA,WAAW,EAAEA;AACf,GAAC,CAAC;AACJ;;AChHA,IAAa4N,kBAAkB,gBAAA9B,YAAA,CAC7B,SAAA8B,kBAAAA,CAA6BC,OAAoB,EAAE;AAAA,EAAA,IAAApC,KAAA,GAAA,IAAA;AAAAE,EAAAA,eAAA,OAAAiC,kBAAA,CAAA;AAAAhC,EAAAA,eAAA,CAE/B,IAAA,EAAA,WAAA,EAAA,UAClBnK,IAAsE,EACtEqM,MAAsB,EACnB;IACH,OAAOrC,KAAI,CAACoC,OAAO,CAACE,IAAI,CAAC,UAACC,KAAK,EAAK;MAClC,IAAIC,WAAW,GAAG,KAAK;AACvB,MAAA,IAAI,OAAOD,KAAK,CAACE,MAAM,KAAK,QAAQ,EAAE;AACpCD,QAAAA,WAAW,GAAGxM,IAAI,CAAC0M,QAAQ,EAAE,CAACC,QAAQ,CAACJ,KAAK,CAACE,MAAM,CAAC;AACtD,OAAC,MAAM,IAAIF,KAAK,CAACE,MAAM,YAAYG,MAAM,EAAE;AACzCJ,QAAAA,WAAW,GAAGD,KAAK,CAACE,MAAM,CAACI,IAAI,CAAC7M,IAAI,CAAC0M,QAAQ,EAAE,CAAC;AAClD,OAAC,MAAM;AACLF,QAAAA,WAAW,GAAGD,KAAK,CAACE,MAAM,KAAKzM,IAAI;AACrC;MAEA,IAAI,CAACwM,WAAW,EAAE;AAChB,QAAA,OAAO,KAAK;AACd;AAEA,MAAA,OAAO,CAACD,KAAK,CAACO,OAAO,IAAIP,KAAK,CAACO,OAAO,CAAC3K,GAAG,CAACkK,MAAM,CAAC;AACpD,KAAC,CAAC;GACH,CAAA;AAAAlC,EAAAA,eAAA,CAEK,IAAA,EAAA,KAAA,EAAA,UAAI4C,KAA6B,EAAE1O,EAAW,EAAK;IACvD,IAAI,CAAC2L,KAAI,CAACgD,SAAS,CAACD,KAAK,EAAE,KAAK,CAAC,EAAE;AACjC1O,MAAAA,EAAE,EAAE;AACJ,MAAA;AACF;IAEA4O,OAAO,CAACC,KAAK,CAAC,WAAW,GAAGH,KAAK,CAACL,QAAQ,EAAE,CAAC;IAC7CO,OAAO,CAACE,GAAG,CAAC,MAAM,EAAE9O,EAAE,EAAE,CAAC;IACzB4O,OAAO,CAACG,QAAQ,EAAE;GACnB,CAAA;AAAAjD,EAAAA,eAAA,CAEU,IAAA,EAAA,UAAA,EAAA,UAAI4C,KAAkB,EAAE1O,EAAW,EAAK;IACjD,IAAI,CAAC2L,KAAI,CAACgD,SAAS,CAACD,KAAK,EAAE,UAAU,CAAC,EAAE;AACtC1O,MAAAA,EAAE,EAAE;AACJ,MAAA;AACF;IAEA4O,OAAO,CAACC,KAAK,CAAC,WAAW,GAAGH,KAAK,CAACL,QAAQ,EAAE,CAAC;IAC7CO,OAAO,CAACE,GAAG,CAAC,MAAM,EAAE9O,EAAE,EAAE,CAAC;IACzB4O,OAAO,CAACG,QAAQ,EAAE;GACnB,CAAA;AAAAjD,EAAAA,eAAA,CAEK,IAAA,EAAA,KAAA,EAAA,UAAwC4C,KAAkC,EAAE1O,EAAW,EAAoB;AAAA,IAAA,IAAAgP,QAAA;IAC/G,IAAI,CAACrD,KAAI,CAACgD,SAAS,CAACD,KAAK,EAAyB,KAAK,CAAC,EAAE;AACxD1O,MAAAA,EAAE,EAAE;AACJ,MAAA;AACF;IAAC,KAAAO,IAAAA,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAJ+FC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAA,CAAAA,GAAAA,IAAA,WAAAK,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,EAAA,EAAA;AAAJF,MAAAA,IAAI,CAAAE,IAAA,GAAAJ,CAAAA,CAAAA,GAAAA,SAAA,CAAAI,IAAA,CAAA;AAAA;IAMpG,CAAAoO,QAAA,GAAAJ,OAAO,EAACC,KAAK,CAAAhO,KAAA,CAAAmO,QAAA,EAAA,CAAC,WAAW,GAAGN,KAAK,CAACL,QAAQ,EAAE,EAAE,GAAG,CAAAvN,CAAAA,MAAA,CAAKJ,IAAI,EAAE,CAAA,GAAG,CAAC,CAAA,CAAA;IAChEkO,OAAO,CAACE,GAAG,CAAC,MAAM,EAAE9O,EAAE,EAAE,CAAC;IACzB4O,OAAO,CAACG,QAAQ,EAAE;GACnB,CAAA;AAAAjD,EAAAA,eAAA,cAEK,UAAI4C,KAA6B,EAAEpN,SAA0B,EAAEtB,EAAc,EAAK;IACtF,IAAI,CAAC2L,KAAI,CAACgD,SAAS,CAACD,KAAK,EAAE,KAAK,CAAC,EAAE;AACjC1O,MAAAA,EAAE,EAAE;AACJ,MAAA;AACF;AAEA4O,IAAAA,OAAO,CAACC,KAAK,CAAC,WAAW,GAAGH,KAAK,CAACL,QAAQ,EAAE,GAAG,aAAa,GAAG/M,SAAS,CAAC+M,QAAQ,EAAE,CAAC;AACpFrO,IAAAA,EAAE,EAAE;IACJ4O,OAAO,CAACG,QAAQ,EAAE;GACnB,CAAA;AAAAjD,EAAAA,eAAA,gBAEO,UAAI4C,KAA6B,EAAEpN,SAA0B,EAAEtB,EAAc,EAAK;IACxF,IAAI,CAAC2L,KAAI,CAACgD,SAAS,CAACD,KAAK,EAAE,OAAO,CAAC,EAAE;AACnC1O,MAAAA,EAAE,EAAE;AACJ,MAAA;AACF;AAEA4O,IAAAA,OAAO,CAACC,KAAK,CAAC,WAAW,GAAGH,KAAK,CAACL,QAAQ,EAAE,GAAG,aAAa,GAAG/M,SAAS,CAAC+M,QAAQ,EAAE,CAAC;AACpFrO,IAAAA,EAAE,EAAE;IACJ4O,OAAO,CAACG,QAAQ,EAAE;GACnB,CAAA;EAAAjD,eAAA,CAAA,IAAA,EAAA,OAAA,EAEO,UAAI4C,KAA6B,EAAK;IAC5C,IAAI,CAAC/C,KAAI,CAACgD,SAAS,CAACD,KAAK,EAAE,OAAO,CAAC,EAAE;AACnC,MAAA;AACF;IAEAE,OAAO,CAACE,GAAG,CAAC,WAAW,GAAGJ,KAAK,CAACL,QAAQ,EAAE,CAAC;GAC5C,CAAA;EAAAvC,eAAA,CAAA,IAAA,EAAA,SAAA,EAES,UAAI4C,KAA6B,EAAK;IAC9C,IAAI,CAAC/C,KAAI,CAACgD,SAAS,CAACD,KAAK,EAAE,SAAS,CAAC,EAAE;AACrC,MAAA;AACF;IAEAE,OAAO,CAACE,GAAG,CAAC,WAAW,GAAGJ,KAAK,CAACL,QAAQ,EAAE,CAAC;GAC5C,CAAA;AAAAvC,EAAAA,eAAA,CAEQ,IAAA,EAAA,QAAA,EAAA,UAAIxK,SAA0B,EAAEtB,EAAW,EAAK;IACvD,IAAI,CAAC2L,KAAI,CAACgD,SAAS,CAACrN,SAAS,EAAE,QAAQ,CAAC,EAAE;AACxCtB,MAAAA,EAAE,EAAE;AACJ,MAAA;AACF;IAEA4O,OAAO,CAACC,KAAK,CAAC,WAAW,GAAGvN,SAAS,CAAC+M,QAAQ,EAAE,CAAC;IACjDO,OAAO,CAACE,GAAG,CAAC,MAAM,EAAE9O,EAAE,EAAE,CAAC;IACzB4O,OAAO,CAACG,QAAQ,EAAE;GACnB,CAAA;EAAA,IAxG4BhB,CAAAA,OAAoB,GAApBA,OAAoB;AAAG,CAAC,CAAA;AA2GhD,SAASkB,gBAAgBA,GAGlB;AAAA,EAAA,IAFZlB,OAA2G,GAAAvN,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAe,SAAA,GAAAf,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;EAAA,IAChH0O,cAAiC,GAAA1O,SAAA,CAAAC,MAAA,GAAAD,CAAAA,GAAAA,SAAA,MAAAe,SAAA;EAEjC,IAAM4N,oBAAoB,GAAGD,cAAc,GAAG,IAAI/F,GAAG,CAAC+F,cAAc,CAAC,GAAG3N,SAAS;EAEjF,IAAM6N,aAAa,GAAGrB,OAAO,CAACd,GAAG,CAAC,UAACiB,KAAK,EAAgB;IACtD,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,YAAYK,MAAM,EAAE;MACxD,OAAO;AAAEH,QAAAA,MAAM,EAAEF,KAAK;AAAEO,QAAAA,OAAO,EAAEU;OAAsB;AACzD;IAEA,IAAI,QAAQ,IAAIjB,KAAK,EAAE;AACrB,MAAA,OAAOA,KAAK;AACd;IAEA,OAAO;AAAEE,MAAAA,MAAM,EAAEF,KAAK;AAAEO,MAAAA,OAAO,EAAEU;KAAsB;AACzD,GAAC,CAAC;AAEF,EAAA,IAAMjP,WAAW,GAAG,IAAI4N,kBAAkB,CAACsB,aAAa,CAAC;EACzD,OAAOvB,wBAAwB,CAAC3N,WAAW,CAAC;AAC9C;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/core/interceptor.ts","../../src/core/typing-util.ts","../../src/core/signal/signal.ts","../../src/core/signal/computed.ts","../../src/core/store/set.ts","../../src/core/signal/state.ts","../../src/core/store/sub.ts","../../src/core/store/store.ts","../../src/debug/debug-store.ts","../../src/debug/console-inspector.ts"],"sourcesContent":["import type { Command, Computed, Signal, State } from '../../types/core/signal';\nimport type {\n CallbackFunc,\n ComputedState,\n InterceptorComputed,\n InterceptorGet,\n InterceptorNotify,\n InterceptorSet,\n InterceptorSub,\n InterceptorUnsub,\n SetArgs,\n} from '../../types/core/store';\n\ntype DataWithCalledState<T> =\n | {\n called: false;\n }\n | {\n called: true;\n data: T;\n };\n\nexport function withSetInterceptor<T, Args extends SetArgs<T, unknown[]>>(\n fn: () => T | undefined,\n writable$: State<T> | Command<T, Args>,\n interceptor: InterceptorSet | undefined,\n ...args: Args\n): T | undefined {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T | undefined>;\n const wrappedFn = () => {\n result = { called: true, data: fn() };\n return result.data;\n };\n if ('write' in writable$) {\n interceptor(writable$, wrappedFn, ...args);\n } else {\n interceptor(writable$, wrappedFn, args[0]);\n }\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withGetInterceptor<T>(fn: () => T, signal: Signal<T>, interceptor?: InterceptorGet): T {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T>;\n\n interceptor(signal, () => {\n result = { called: true, data: fn() };\n return result.data;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withComputedInterceptor<T>(\n fn: () => ComputedState<T>,\n signal: Computed<T>,\n interceptor?: InterceptorComputed,\n): ComputedState<T> {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<ComputedState<T>>;\n\n interceptor(signal, () => {\n result = { called: true, data: fn() };\n return result.data.val;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withGeValInterceptor<T>(fn: () => T, signal: Signal<T>, interceptor?: InterceptorGet): T {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T>;\n\n interceptor(signal, () => {\n result = { called: true, data: fn() };\n return result.data;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withSubInterceptor<T>(\n fn: () => void,\n signal: Signal<T>,\n callback$: Command<unknown, []>,\n interceptor?: InterceptorSub,\n) {\n if (!interceptor) {\n fn();\n return;\n }\n\n let result = { called: false } as DataWithCalledState<void>;\n\n interceptor(signal, callback$, () => {\n result = { called: true, data: undefined };\n fn();\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n}\n\nexport function withUnsubInterceptor<T>(\n fn: () => void,\n signal: Signal<T>,\n callback$: Command<unknown, []>,\n interceptor?: InterceptorUnsub,\n): void {\n if (!interceptor) {\n fn();\n return;\n }\n\n let result = { called: false } as DataWithCalledState<void>;\n\n interceptor(signal, callback$, () => {\n result = { called: true, data: undefined };\n fn();\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n}\n\nexport function withNotifyInterceptor<T>(fn: () => T, callback$: CallbackFunc<T>, interceptor?: InterceptorNotify): T {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T>;\n\n interceptor(callback$, () => {\n result = { called: true, data: fn() };\n return result.data;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n","import type { Computed, Signal } from '../../types/core/signal';\nimport type { ComputedState, SignalState } from '../../types/core/store';\n\nexport function canReadAsCompute<T>(atom: Signal<T>): atom is Computed<T> {\n return 'read' in atom;\n}\n\nexport function isComputedState<T>(state: SignalState<T>): state is ComputedState<T> {\n return 'dependencies' in state;\n}\n","import type { Computed, Signal } from '../../../types/core/signal';\nimport type { StoreContext } from '../../../types/core/store';\n\nexport function currentValue<T>(signal: Signal<T>, context: StoreContext): T | undefined {\n return context.stateMap.get(signal)?.val as T | undefined;\n}\n\nexport function shouldDistinct<T>(signal: Signal<T>, value: T, context: StoreContext) {\n return currentValue(signal, context) === value;\n}\n\nexport function shouldDistinctError(signal: Computed<unknown>, context: StoreContext) {\n const currentState = context.stateMap.get(signal);\n if (!currentState) {\n return false;\n }\n\n if ('error' in currentState && currentState.error !== undefined) {\n return true;\n }\n\n return false;\n}\n","import type { Computed, Getter, Signal } from '../../../types/core/signal';\nimport type {\n ComputedState,\n Mount,\n Mutation,\n ReadComputed,\n ReadSignal,\n StoreContext,\n Unmount,\n} from '../../../types/core/store';\nimport { withGeValInterceptor } from '../interceptor';\nimport { canReadAsCompute } from '../typing-util';\nimport { shouldDistinct, shouldDistinctError } from './signal';\n\nfunction checkEpoch<T>(\n readComputed: ReadComputed,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): boolean {\n for (const [dep, epoch] of computedState.dependencies.entries()) {\n const depEpoch = canReadAsCompute(dep)\n ? readComputed(dep, context, mutation).epoch\n : context.stateMap.get(dep)?.epoch;\n\n if (depEpoch !== epoch) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function tryGetCached<T>(\n readComputed: ReadComputed,\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> | undefined {\n const signalState = context.stateMap.get(computed$) as ComputedState<T> | undefined;\n if (!signalState) {\n return undefined;\n }\n\n // If a computed is marked as potentially dirty, we should perform a\n // thorough epoch check. Alternatively, we can check the mounted state since\n // a mounted computed is always re-evaluated immediately.\n const mayDirty = mutation?.potentialDirtyIds.has(computed$.id);\n if (!mayDirty && signalState.mounted) {\n return signalState;\n }\n\n if (checkEpoch(readComputed, signalState, context, mutation)) {\n if (mayDirty) {\n mutation?.potentialDirtyIds.delete(computed$.id);\n }\n return signalState;\n }\n\n return undefined;\n}\n\nfunction wrapGet<T>(\n readSignal: ReadSignal,\n mount: Mount,\n callerComputed$: Computed<T>,\n callerState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): [Getter, Map<Signal<unknown>, number>] {\n const readDeps = new Map<Signal<unknown>, number>();\n\n return [\n (dep$) => {\n const depState = readSignal(dep$, context, mutation);\n\n if (callerState.dependencies === readDeps) {\n readDeps.set(dep$, depState.epoch);\n\n const callerMounted = !!callerState.mounted;\n if (callerMounted && !depState.mounted) {\n mount(dep$, context, mutation).readDepts.add(callerComputed$);\n } else if (callerMounted && depState.mounted) {\n depState.mounted.readDepts.add(callerComputed$);\n }\n }\n\n if ('error' in depState) {\n throw depState.error;\n }\n\n return depState.val;\n },\n readDeps,\n ];\n}\n\nfunction getOrInitComputedState<T>(computed$: Computed<T>, context: StoreContext): ComputedState<T> {\n let computedState: ComputedState<T> | undefined = context.stateMap.get(computed$) as ComputedState<T> | undefined;\n if (!computedState) {\n computedState = {\n dependencies: new Map<Signal<unknown>, number>(),\n epoch: -1,\n } as ComputedState<T>;\n context.stateMap.set(computed$, computedState);\n }\n\n return computedState;\n}\n\nfunction cleanupMissingDependencies<T>(\n unmount: Unmount,\n computed$: Computed<T>,\n lastDeps: Map<Signal<unknown>, number>,\n currDeps: Map<Signal<unknown>, number>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const key of lastDeps.keys()) {\n if (!currDeps.has(key)) {\n const depState = context.stateMap.get(key);\n depState?.mounted?.readDepts.delete(computed$);\n unmount(key, context, mutation);\n }\n }\n}\n\ntype ComputedResult<T> =\n | {\n value: T;\n }\n | {\n error: unknown;\n };\n\nexport function evaluateComputed<T>(\n readSignal: ReadSignal,\n mount: Mount,\n unmount: Unmount,\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> {\n const computedState = getOrInitComputedState(computed$, context);\n\n const lastDeps = computedState.dependencies;\n\n const [_get, dependencies] = wrapGet(readSignal, mount, computed$, computedState, context, mutation);\n computedState.dependencies = dependencies;\n\n let result: ComputedResult<T>;\n try {\n result = {\n value: computed$.read(\n function <U>(depAtom: Signal<U>) {\n return withGeValInterceptor(() => _get(depAtom), depAtom, context.interceptor?.get);\n },\n {\n get signal() {\n computedState.abortController?.abort(`abort ${computed$.debugLabel ?? 'anonymous'} atom`);\n computedState.abortController = new AbortController();\n return computedState.abortController.signal;\n },\n },\n ),\n };\n } catch (error) {\n result = {\n error,\n };\n }\n\n mutation?.potentialDirtyIds.delete(computed$.id);\n\n cleanupMissingDependencies(unmount, computed$, lastDeps, dependencies, context, mutation);\n\n if ('error' in result) {\n if (!shouldDistinctError(computed$, context)) {\n computedState.error = result.error;\n delete computedState.val;\n computedState.epoch += 1;\n }\n } else if (!shouldDistinct(computed$, result.value, context)) {\n computedState.val = result.value;\n delete computedState.error;\n computedState.epoch += 1;\n }\n\n return computedState;\n}\n","import type { Command, State, Computed, Signal, Updater, StateArg } from '../../../types/core/signal';\nimport type {\n Mutation,\n ReadComputed,\n StoreContext,\n StateState,\n StoreGet,\n StoreSet,\n SetArgs,\n ComputedState,\n} from '../../../types/core/store';\nimport { shouldDistinct } from '../signal/signal';\n\n// Dirty markers are just 'potentially' dirty because we don't know if\n// dependencies result will change. Pushing a computed to dirty markers doesn't\n// mean it will re-evaluate immediately, just marks it for epoch checking in\n// #tryGetCached. So the propagation is greedy to mark all dependants as dirty\nfunction pushDirtyMarkers(signalState: StateState<unknown>, context: StoreContext, mutation: Mutation) {\n let queue: Computed<unknown>[] = Array.from(signalState.mounted?.readDepts ?? []);\n\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n mutation.potentialDirtyIds.add(computed$.id);\n\n const computedState = context.stateMap.get(computed$);\n // This computed$ is read from other computed$'s readDepts, so it must not be null and must have mounted\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n for (const dep of computedState!.mounted!.readDepts) {\n nextQueue.push(dep);\n }\n }\n\n queue = nextQueue;\n }\n}\n\nfunction pullEvaluate(\n readComputed: ReadComputed,\n signalState: StateState<unknown>,\n context: StoreContext,\n mutation: Mutation,\n) {\n let queue: Computed<unknown>[] = Array.from(signalState.mounted?.readDepts ?? []);\n\n for (const listener of signalState.mounted?.listeners ?? []) {\n mutation.pendingListeners.add(listener);\n }\n\n const oldValues = new Map<Computed<unknown>, unknown>();\n const oldErrors = new Map<Computed<unknown>, unknown>();\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n const oldState = context.stateMap.get(computed$) as ComputedState<unknown> | undefined;\n oldValues.set(computed$, oldState?.val);\n oldErrors.set(computed$, oldState?.error);\n\n const readDepts = context.stateMap.get(computed$)?.mounted?.readDepts;\n if (readDepts) {\n for (const dep of Array.from(readDepts)) {\n nextQueue.push(dep);\n }\n }\n }\n queue = nextQueue;\n }\n\n queue = Array.from(signalState.mounted?.readDepts ?? []);\n\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n const computedState = readComputed(computed$, context, mutation);\n\n const isSameWithOldValue =\n !computedState.error && oldValues.has(computed$) && oldValues.get(computed$) === computedState.val;\n const isSameError = computedState.error && Boolean(oldErrors.get(computed$));\n\n if (isSameWithOldValue || isSameError) {\n continue;\n }\n\n if (computedState.mounted?.listeners) {\n for (const listener of computedState.mounted.listeners) {\n mutation.pendingListeners.add(listener);\n }\n }\n\n const readDepts = computedState.mounted?.readDepts;\n if (readDepts) {\n for (const dep of Array.from(readDepts)) {\n nextQueue.push(dep);\n }\n }\n }\n\n queue = nextQueue;\n }\n}\n\nfunction propagationChanges(\n readComputed: ReadComputed,\n signalState: StateState<unknown>,\n context: StoreContext,\n mutation: Mutation,\n) {\n pushDirtyMarkers(signalState, context, mutation);\n pullEvaluate(readComputed, signalState, context, mutation);\n}\n\nfunction innerSetState<T>(\n readComputed: ReadComputed,\n signal$: State<T>,\n context: StoreContext,\n mutation: Mutation,\n val: StateArg<T>,\n) {\n let newValue: T;\n if (typeof val === 'function') {\n const updater = val as Updater<T>;\n newValue = updater((context.stateMap.get(signal$)?.val as T | undefined) ?? signal$.init);\n } else {\n newValue = val;\n }\n\n if (shouldDistinct(signal$, newValue, context)) {\n return;\n }\n\n const signalState = context.stateMap.get(signal$);\n if (!signalState) {\n context.stateMap.set(signal$, {\n val: newValue,\n epoch: 0,\n });\n return;\n }\n\n signalState.val = newValue;\n signalState.epoch += 1;\n propagationChanges(readComputed, signalState, context, mutation);\n\n return undefined;\n}\n\nexport function set<T, Args extends SetArgs<T, unknown[]>>(\n readComputed: ReadComputed,\n writable$: State<T> | Command<T, Args>,\n context: StoreContext,\n mutation: Mutation,\n ...args: Args\n): undefined | T {\n if ('read' in writable$) {\n return;\n }\n\n if ('write' in writable$) {\n return writable$.write(mutation.visitor, ...args);\n }\n\n innerSetState(readComputed, writable$, context, mutation, args[0]);\n return;\n}\n\n/**\n * Creates a mutation operation context. The Mutation remains unique throughout\n * the mutation cycle and can track side effects produced by this mutation operation\n *\n * This tracking is implemented by coloring the visitor function, so the Mutation\n * needs to wrap get & set functions and ensure that all get & set operations\n * executed in the mutation context come from the same Mutation\n *\n * @param context\n * @param get\n * @param set\n * @returns\n */\nexport function createMutation(context: StoreContext, get: StoreGet, set: StoreSet): Mutation {\n const mutation: Mutation = {\n potentialDirtyIds: new Set(),\n pendingListeners: new Set(),\n visitor: {\n get: <T>(signal$: Signal<T>) => {\n return get(signal$, context, mutation);\n },\n set: <T, Args extends SetArgs<T, unknown[]>>(\n signal$: State<T> | Command<T, Args>,\n ...args: Args\n ): undefined | T => {\n return set<T, Args>(signal$, context, ...args);\n },\n },\n };\n\n return mutation;\n}\n","import type { State } from '../../../types/core/signal';\nimport type { StateState, StoreContext } from '../../../types/core/store';\n\nexport function readState<T>(state: State<T>, context: StoreContext): StateState<T> {\n const atomState = context.stateMap.get(state);\n if (!atomState) {\n const initState = {\n val: state.init,\n epoch: 0,\n };\n context.stateMap.set(state, initState);\n return initState as StateState<T>;\n }\n\n return atomState as StateState<T>;\n}\n","import type { Command, Computed, Signal } from '../../../types/core/signal';\nimport type {\n ComputedState,\n Mounted,\n Mutation,\n ReadSignal,\n SignalState,\n StoreContext,\n} from '../../../types/core/store';\nimport { withNotifyInterceptor, withSubInterceptor, withUnsubInterceptor } from '../interceptor';\nimport { isComputedState } from '../typing-util';\n\nfunction unmountComputedDependencies<T>(\n computed$: Computed<T>,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const [dep] of Array.from(computedState.dependencies)) {\n context.stateMap.get(dep)?.mounted?.readDepts.delete(computed$ as Computed<unknown>);\n unmount(dep, context, mutation);\n }\n}\n\nfunction mountComputedDependencies<T>(\n readSignal: ReadSignal,\n computed$: Computed<T>,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const [dep] of Array.from(computedState.dependencies)) {\n const mounted = mount(readSignal, dep, context, mutation);\n mounted.readDepts.add(computed$ as Computed<unknown>);\n }\n}\n\nfunction initMount<T>(readSignal: ReadSignal, signal$: Signal<T>, context: StoreContext, mutation?: Mutation): Mounted {\n context.interceptor?.mount?.(signal$);\n\n const signalState = readSignal(signal$, context, mutation);\n\n signalState.mounted = signalState.mounted ?? {\n listeners: new Set(),\n readDepts: new Set(),\n };\n\n if (isComputedState(signalState)) {\n mountComputedDependencies(readSignal, signal$ as Computed<unknown>, signalState, context, mutation);\n }\n\n return signalState.mounted;\n}\n\nexport function mount<T>(\n readSignal: ReadSignal,\n signal$: Signal<T>,\n context: StoreContext,\n mutation?: Mutation,\n): Mounted {\n const mounted = context.stateMap.get(signal$)?.mounted;\n if (mounted) {\n return mounted;\n }\n\n return initMount(readSignal, signal$, context, mutation);\n}\n\nfunction doUnmount<T>(\n signal$: Signal<T>,\n signalState: SignalState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): void {\n context.interceptor?.unmount?.(signal$);\n\n if (isComputedState(signalState)) {\n unmountComputedDependencies(signal$ as Computed<unknown>, signalState, context, mutation);\n }\n\n signalState.mounted = undefined;\n}\n\nexport function unmount<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): void {\n const signalState = context.stateMap.get(signal$);\n if (!signalState?.mounted || signalState.mounted.listeners.size || signalState.mounted.readDepts.size) {\n return;\n }\n\n doUnmount(signal$, signalState, context, mutation);\n}\n\nexport function subSingleSignal<T>(\n readSignal: ReadSignal,\n signal$: Signal<T>,\n callback$: Command<unknown, []>,\n context: StoreContext,\n signal: AbortSignal,\n) {\n withSubInterceptor(\n () => {\n const mounted = mount(readSignal, signal$, context);\n mounted.listeners.add(callback$);\n\n const unsub = () => {\n withUnsubInterceptor(\n () => {\n mounted.listeners.delete(callback$);\n\n if (mounted.readDepts.size === 0 && mounted.listeners.size === 0) {\n unmount(signal$, context);\n }\n },\n signal$,\n callback$,\n context.interceptor?.unsub,\n );\n };\n\n signal.addEventListener('abort', unsub, {\n once: true,\n });\n },\n signal$,\n callback$,\n context.interceptor?.sub,\n );\n}\n\nexport function notify(context: StoreContext, mutation: Mutation) {\n const pendingListeners = mutation.pendingListeners;\n\n mutation.pendingListeners = new Set();\n\n for (const listener of pendingListeners) {\n withNotifyInterceptor(\n () => {\n return listener.write(mutation.visitor);\n },\n listener,\n context.interceptor?.notify,\n );\n }\n}\n","import type { Command, Getter, Setter, Signal, State, Computed } from '../../../types/core/signal';\nimport type {\n StateMap,\n Store,\n StoreContext,\n StoreOptions,\n SubscribeOptions,\n ComputedState,\n Mounted,\n Mutation,\n ReadComputed,\n SignalState,\n StoreGet,\n StoreSet,\n SetArgs,\n} from '../../../types/core/store';\nimport { evaluateComputed, tryGetCached } from '../signal/computed';\nimport { withComputedInterceptor, withGetInterceptor, withSetInterceptor } from '../interceptor';\nimport { createMutation, set as innerSet } from './set';\nimport { readState } from '../signal/state';\nimport { canReadAsCompute } from '../typing-util';\nimport { mount as innerMount, unmount, subSingleSignal, notify } from './sub';\n\nconst readComputed: ReadComputed = <T>(\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> => {\n const cachedState = tryGetCached(readComputed, computed$, context, mutation);\n if (cachedState) {\n return cachedState;\n }\n\n return withComputedInterceptor(\n () => {\n return evaluateComputed(readSignal, mount, unmount, computed$, context, mutation);\n },\n computed$,\n context.interceptor?.computed,\n );\n};\n\nfunction readSignal<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): SignalState<T> {\n if (canReadAsCompute(signal$)) {\n return readComputed(signal$, context, mutation);\n }\n\n return readState(signal$, context);\n}\n\nfunction mount<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): Mounted {\n return innerMount(readSignal, signal$, context, mutation);\n}\n\nfunction sub<T>(\n signals$: Signal<T>[] | Signal<T>,\n callback$: Command<unknown, []>,\n context: StoreContext,\n options?: SubscribeOptions,\n): () => void {\n if (Array.isArray(signals$) && signals$.length === 0) {\n return () => void 0;\n }\n\n const controller = new AbortController();\n const signal = options?.signal ? AbortSignal.any([controller.signal, options.signal]) : controller.signal;\n\n if (!Array.isArray(signals$)) {\n subSingleSignal(readSignal, signals$, callback$, context, signal);\n } else {\n signals$.forEach((atom) => {\n subSingleSignal(readSignal, atom, callback$, context, signal);\n });\n }\n\n return () => {\n controller.abort();\n };\n}\n\nconst get: StoreGet = (signal, context, mutation) => {\n return withGetInterceptor(\n () => {\n const signalState = readSignal(signal, context, mutation);\n if ('error' in signalState) {\n throw signalState.error as Error;\n }\n\n return signalState.val;\n },\n signal,\n context.interceptor?.get,\n );\n};\n\nconst set: StoreSet = <T, Args extends SetArgs<T, unknown[]>>(\n atom: State<T> | Command<T, Args>,\n context: StoreContext,\n ...args: Args\n): T | undefined => {\n return withSetInterceptor<T, Args>(\n () => {\n const mutation = createMutation(context, get, set);\n\n let ret: T | undefined;\n try {\n ret = innerSet<T, Args>(readComputed, atom, context, mutation, ...args);\n } finally {\n notify(context, mutation);\n }\n return ret;\n },\n atom,\n context.interceptor?.set,\n ...args,\n );\n};\n\nexport class StoreImpl implements Store {\n protected readonly stateMap: StateMap = new WeakMap();\n protected readonly context: StoreContext;\n\n constructor(protected readonly options?: StoreOptions) {\n this.context = {\n stateMap: this.stateMap,\n interceptor: this.options?.interceptor,\n };\n }\n\n get: Getter = <T>(atom: Signal<T>): T => {\n return get(atom, this.context);\n };\n\n set: Setter = <T, Args extends SetArgs<T, unknown[]>>(\n atom: State<T> | Command<T, Args>,\n ...args: Args\n ): undefined | T => {\n return set<T, Args>(atom, this.context, ...args);\n };\n\n sub(\n targets$: Signal<unknown>[] | Signal<unknown>,\n cb$: Command<unknown, unknown[]>,\n options?: SubscribeOptions,\n ): () => void {\n return sub(targets$, cb$, this.context, options);\n }\n}\n\nexport function createStore(): Store {\n return new StoreImpl();\n}\n\nlet defaultStore: Store | undefined = undefined;\nexport function getDefaultStore(): Store {\n if (!defaultStore) {\n defaultStore = createStore();\n }\n return defaultStore;\n}\n","import type { ComputedState, SignalState, StoreInterceptor, SubscribeOptions } from '../../types/core/store';\nimport type { DebugStore, Edge, NestedAtom } from '../../types/debug/debug-store';\nimport type { Computed, Command, Subscribe, State } from '../core';\nimport { StoreImpl } from '../core/store/store';\nimport { canReadAsCompute } from '../core/typing-util';\n\nexport class DebugStoreImpl extends StoreImpl implements DebugStore {\n private readonly mountedAtomListenersCount = new Map<State<unknown> | Computed<unknown>, number>();\n\n override sub: Subscribe = (\n atoms: (State<unknown> | Computed<unknown>)[] | (State<unknown> | Computed<unknown>),\n cb: Command<unknown, unknown[]>,\n options?: SubscribeOptions,\n ): (() => void) => {\n const atomList = Array.isArray(atoms) ? atoms : [atoms];\n\n atomList.forEach((atom) => {\n this.mountedAtomListenersCount.set(atom, (this.mountedAtomListenersCount.get(atom) ?? 0) + 1);\n });\n\n const unsub = super.sub(atoms, cb, options);\n const decount = () => {\n atomList.forEach((atom) => {\n const count = this.mountedAtomListenersCount.get(atom) ?? 0;\n if (count === 0) {\n return;\n }\n\n this.mountedAtomListenersCount.set(atom, count - 1);\n if (count === 1) {\n this.mountedAtomListenersCount.delete(atom);\n }\n });\n };\n options?.signal?.addEventListener('abort', decount);\n return () => {\n unsub();\n decount();\n };\n };\n\n getReadDependencies = (atom: State<unknown> | Computed<unknown>): NestedAtom => {\n const atomState = this.context.stateMap.get(atom);\n if (!atomState) {\n return [atom];\n }\n\n if (!('dependencies' in atomState)) {\n return [atom];\n }\n\n return [\n atom,\n ...Array.from(atomState.dependencies).map(([key]) => {\n return this.getReadDependencies(key);\n }),\n ] as NestedAtom;\n };\n\n getReadDependents = (atom: State<unknown> | Computed<unknown>): NestedAtom => {\n const atomState = this.context.stateMap.get(atom);\n if (!atomState) {\n return [atom];\n }\n\n return [\n atom,\n ...Array.from(atomState.mounted?.readDepts ?? []).map((key) => this.getReadDependents(key)),\n ] as NestedAtom;\n };\n\n getSubscribeGraph = (): NestedAtom => {\n const subscribedAtoms = Array.from(this.mountedAtomListenersCount.keys());\n return subscribedAtoms.map((atom) => {\n const atomState = this.context.stateMap.get(atom);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const listeners = Array.from(atomState!.mounted!.listeners);\n return [atom, ...listeners];\n });\n };\n\n isMounted = (atom: State<unknown> | Computed<unknown>): boolean => {\n const mountState = this.stateMap.get(atom);\n return mountState?.mounted !== undefined;\n };\n\n getDependenciesGraph = (computed$: Computed<unknown>): Edge[] => {\n const stateMap = this.context.stateMap;\n function fillDependenciesGraph(computed$: Computed<unknown>, result: Edge[]) {\n const computedState = stateMap.get(computed$) as ComputedState<unknown>;\n for (const [child$, epoch] of computedState.dependencies.entries()) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion, @typescript-eslint/no-non-null-assertion\n const childState = stateMap.get(child$)! as SignalState<unknown>;\n result.push([\n {\n signal: computed$,\n val: computedState.val,\n epoch: computedState.epoch,\n },\n {\n signal: child$,\n val: childState.val,\n epoch: childState.epoch,\n },\n epoch,\n ]);\n if (canReadAsCompute(child$)) {\n fillDependenciesGraph(child$, result);\n }\n }\n }\n\n const result: Edge[] = [];\n fillDependenciesGraph(computed$, result);\n return result;\n };\n}\n\nexport function createDebugStoreInternal(interceptor?: StoreInterceptor): DebugStore {\n return new DebugStoreImpl({\n interceptor: interceptor,\n });\n}\n","import type { CallbackFunc, SetArgs, StoreEventType, StoreInterceptor } from '../../types/core/store';\nimport type { DebugStore } from '../../types/debug/debug-store';\nimport type { Computed, Command, State } from '../core';\nimport { createDebugStoreInternal } from './debug-store';\n\nexport interface AtomWatch {\n target: State<unknown> | Computed<unknown> | Command<unknown, unknown[]> | string | RegExp;\n actions?: Set<StoreEventType>;\n}\n\nexport class ConsoleInterceptor implements StoreInterceptor {\n constructor(private readonly watches: AtomWatch[]) {}\n\n private shouldLog = (\n atom: State<unknown> | Computed<unknown> | Command<unknown, unknown[]>,\n action: StoreEventType,\n ) => {\n return this.watches.some((watch) => {\n let atomMatched = false;\n if (typeof watch.target === 'string') {\n atomMatched = atom.toString().includes(watch.target);\n } else if (watch.target instanceof RegExp) {\n atomMatched = watch.target.test(atom.toString());\n } else {\n atomMatched = watch.target === atom;\n }\n\n if (!atomMatched) {\n return false;\n }\n\n return !watch.actions || watch.actions.has(action);\n });\n };\n\n get = <T>(atom$: State<T> | Computed<T>, fn: () => T) => {\n if (!this.shouldLog(atom$, 'get')) {\n fn();\n return;\n }\n\n console.group('[R][GET] ' + atom$.toString());\n console.log('ret:', fn());\n console.groupEnd();\n };\n\n computed = <T>(atom$: Computed<T>, fn: () => T) => {\n if (!this.shouldLog(atom$, 'computed')) {\n fn();\n return;\n }\n\n console.group('[R][CPT] ' + atom$.toString());\n console.log('ret:', fn());\n console.groupEnd();\n };\n\n set = <T, Args extends SetArgs<T, unknown[]>>(atom$: State<T> | Command<T, Args>, fn: () => T, ...args: Args) => {\n if (!this.shouldLog(atom$ as unknown as State<T>, 'set')) {\n fn();\n return;\n }\n\n console.group('[R][SET] ' + atom$.toString(), '(', ...args, ')');\n console.log('ret:', fn());\n console.groupEnd();\n };\n\n sub = <T>(atom$: State<T> | Computed<T>, callback$: CallbackFunc<T>, fn: () => void) => {\n if (!this.shouldLog(atom$, 'sub')) {\n fn();\n return;\n }\n\n console.group('[R][SUB] ' + atom$.toString() + ', callback=' + callback$.toString());\n fn();\n console.groupEnd();\n };\n\n unsub = <T>(atom$: State<T> | Computed<T>, callback$: CallbackFunc<T>, fn: () => void) => {\n if (!this.shouldLog(atom$, 'unsub')) {\n fn();\n return;\n }\n\n console.group('[R][UNS] ' + atom$.toString() + ', callback=' + callback$.toString());\n fn();\n console.groupEnd();\n };\n\n mount = <T>(atom$: State<T> | Computed<T>) => {\n if (!this.shouldLog(atom$, 'mount')) {\n return;\n }\n\n console.log('[R][MNT] ' + atom$.toString());\n };\n\n unmount = <T>(atom$: State<T> | Computed<T>) => {\n if (!this.shouldLog(atom$, 'unmount')) {\n return;\n }\n\n console.log('[R][UNM] ' + atom$.toString());\n };\n\n notify = <T>(callback$: CallbackFunc<T>, fn: () => T) => {\n if (!this.shouldLog(callback$, 'notify')) {\n fn();\n return;\n }\n\n console.group('[R][NTF] ' + callback$.toString());\n console.log('ret:', fn());\n console.groupEnd();\n };\n}\n\nexport function createDebugStore(\n watches: (AtomWatch | string | RegExp | State<unknown> | Computed<unknown> | Command<unknown, unknown[]>)[] = [],\n defaultActions?: StoreEventType[],\n): DebugStore {\n const parsedDefaultActions = defaultActions ? new Set(defaultActions) : undefined;\n\n const parsedWatches = watches.map((watch): AtomWatch => {\n if (typeof watch === 'string' || watch instanceof RegExp) {\n return { target: watch, actions: parsedDefaultActions };\n }\n\n if ('target' in watch) {\n return watch;\n }\n\n return { target: watch, actions: parsedDefaultActions };\n });\n\n const interceptor = new ConsoleInterceptor(parsedWatches);\n return createDebugStoreInternal(interceptor);\n}\n"],"names":["withSetInterceptor","fn","writable$","interceptor","result","called","wrappedFn","data","_len","arguments","length","args","Array","_key","apply","concat","Error","withGetInterceptor","signal","withComputedInterceptor","val","withGeValInterceptor","withSubInterceptor","callback$","undefined","withUnsubInterceptor","withNotifyInterceptor","canReadAsCompute","atom","isComputedState","state","currentValue","context","_context$stateMap$get","stateMap","get","shouldDistinct","value","shouldDistinctError","currentState","error","checkEpoch","readComputed","computedState","mutation","_iterator","_createForOfIteratorHelper","dependencies","entries","_step","s","n","done","_step$value","_slicedToArray","dep","epoch","depEpoch","err","e","f","tryGetCached","computed$","signalState","mayDirty","potentialDirtyIds","has","id","mounted","wrapGet","readSignal","mount","callerComputed$","callerState","readDeps","Map","dep$","depState","set","callerMounted","readDepts","add","getOrInitComputedState","cleanupMissingDependencies","unmount","lastDeps","currDeps","_iterator2","keys","_step2","key","_depState$mounted","evaluateComputed","_wrapGet","_wrapGet2","_get","read","depAtom","_context$interceptor","_computedState$abortC","_computed$$debugLabel","abortController","abort","debugLabel","AbortController","pushDirtyMarkers","_signalState$mounted$","_signalState$mounted","queue","from","nextQueue","push","pullEvaluate","_signalState$mounted$2","_signalState$mounted2","_signalState$mounted$3","_signalState$mounted3","_signalState$mounted$4","_signalState$mounted4","_iterator3","listeners","_step3","listener","pendingListeners","oldValues","oldErrors","_iterator4","_step4","oldState","_i","_Array$from","_iterator5","_step5","_computedState$mounte","_computedState$mounte2","isSameWithOldValue","isSameError","Boolean","_iterator6","_step6","_i2","_Array$from2","propagationChanges","innerSetState","signal$","newValue","_ref","_context$stateMap$get2","updater","init","write","visitor","createMutation","Set","_len2","_key2","readState","atomState","initState","unmountComputedDependencies","_Array$from$_i","mountComputedDependencies","_Array$from2$_i","initMount","_context$interceptor$","call","doUnmount","_context$interceptor2","_context$interceptor3","size","subSingleSignal","_context$interceptor5","unsub","_context$interceptor4","addEventListener","once","sub","notify","_loop","_context$interceptor6","cachedState","computed","innerMount","signals$","options","isArray","controller","AbortSignal","any","forEach","ret","innerSet","StoreImpl","_this","_this$options","_classCallCheck","_defineProperty","WeakMap","_createClass","targets$","cb$","DebugStoreImpl","_StoreImpl","_callSuper","atoms","cb","_options$signal","atomList","_this$mountedAtomList","mountedAtomListenersCount","_superPropGet","decount","_this$mountedAtomList2","count","_toConsumableArray","map","_ref2","getReadDependencies","_atomState$mounted$re","_atomState$mounted","getReadDependents","subscribedAtoms","mountState","fillDependenciesGraph","child$","childState","_inherits","createDebugStoreInternal","ConsoleInterceptor","watches","action","some","watch","atomMatched","target","toString","includes","RegExp","test","actions","atom$","shouldLog","console","group","log","groupEnd","_console","createDebugStore","defaultActions","parsedDefaultActions","parsedWatches"],"mappings":"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"}
package/index.cjs CHANGED
@@ -406,6 +406,16 @@ function currentValue(signal, context) {
406
406
  function shouldDistinct(signal, value, context) {
407
407
  return currentValue(signal, context) === value;
408
408
  }
409
+ function shouldDistinctError(signal, context) {
410
+ var currentState = context.stateMap.get(signal);
411
+ if (!currentState) {
412
+ return false;
413
+ }
414
+ if ('error' in currentState && currentState.error !== undefined) {
415
+ return true;
416
+ }
417
+ return false;
418
+ }
409
419
 
410
420
  function checkEpoch(readComputed, computedState, context, mutation) {
411
421
  var _iterator = _createForOfIteratorHelper(computedState.dependencies.entries()),
@@ -462,6 +472,9 @@ function wrapGet(readSignal, mount, callerComputed$, callerState, context, mutat
462
472
  depState.mounted.readDepts.add(callerComputed$);
463
473
  }
464
474
  }
475
+ if ('error' in depState) {
476
+ throw depState.error;
477
+ }
465
478
  return depState.val;
466
479
  }, readDeps];
467
480
  }
@@ -503,23 +516,39 @@ function evaluateComputed(readSignal, mount, unmount, computed$, context, mutati
503
516
  _get = _wrapGet2[0],
504
517
  dependencies = _wrapGet2[1];
505
518
  computedState.dependencies = dependencies;
506
- var evalVal = computed$.read(function (depAtom) {
507
- var _context$interceptor;
508
- return withGeValInterceptor(function () {
509
- return _get(depAtom);
510
- }, depAtom, (_context$interceptor = context.interceptor) === null || _context$interceptor === void 0 ? void 0 : _context$interceptor.get);
511
- }, {
512
- get signal() {
513
- var _computedState$abortC, _computed$$debugLabel;
514
- (_computedState$abortC = computedState.abortController) === null || _computedState$abortC === void 0 || _computedState$abortC.abort("abort ".concat((_computed$$debugLabel = computed$.debugLabel) !== null && _computed$$debugLabel !== void 0 ? _computed$$debugLabel : 'anonymous', " atom"));
515
- computedState.abortController = new AbortController();
516
- return computedState.abortController.signal;
517
- }
518
- });
519
+ var result;
520
+ try {
521
+ result = {
522
+ value: computed$.read(function (depAtom) {
523
+ var _context$interceptor;
524
+ return withGeValInterceptor(function () {
525
+ return _get(depAtom);
526
+ }, depAtom, (_context$interceptor = context.interceptor) === null || _context$interceptor === void 0 ? void 0 : _context$interceptor.get);
527
+ }, {
528
+ get signal() {
529
+ var _computedState$abortC, _computed$$debugLabel;
530
+ (_computedState$abortC = computedState.abortController) === null || _computedState$abortC === void 0 || _computedState$abortC.abort("abort ".concat((_computed$$debugLabel = computed$.debugLabel) !== null && _computed$$debugLabel !== void 0 ? _computed$$debugLabel : 'anonymous', " atom"));
531
+ computedState.abortController = new AbortController();
532
+ return computedState.abortController.signal;
533
+ }
534
+ })
535
+ };
536
+ } catch (error) {
537
+ result = {
538
+ error: error
539
+ };
540
+ }
519
541
  mutation === null || mutation === void 0 || mutation.potentialDirtyIds["delete"](computed$.id);
520
542
  cleanupMissingDependencies(unmount, computed$, lastDeps, dependencies, context, mutation);
521
- if (!shouldDistinct(computed$, evalVal, context)) {
522
- computedState.val = evalVal;
543
+ if ('error' in result) {
544
+ if (!shouldDistinctError(computed$, context)) {
545
+ computedState.error = result.error;
546
+ delete computedState.val;
547
+ computedState.epoch += 1;
548
+ }
549
+ } else if (!shouldDistinct(computed$, result.value, context)) {
550
+ computedState.val = result.value;
551
+ delete computedState.error;
523
552
  computedState.epoch += 1;
524
553
  }
525
554
  return computedState;
@@ -580,17 +609,19 @@ function pullEvaluate(readComputed, signalState, context, mutation) {
580
609
  _iterator3.f();
581
610
  }
582
611
  var oldValues = new Map();
612
+ var oldErrors = new Map();
583
613
  while (queue.length > 0) {
584
614
  var nextQueue = [];
585
615
  var _iterator4 = _createForOfIteratorHelper(queue),
586
616
  _step4;
587
617
  try {
588
618
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
589
- var _context$stateMap$get, _context$stateMap$get2;
619
+ var _context$stateMap$get;
590
620
  var computed$ = _step4.value;
591
- var oldValue = (_context$stateMap$get = context.stateMap.get(computed$)) === null || _context$stateMap$get === void 0 ? void 0 : _context$stateMap$get.val;
592
- oldValues.set(computed$, oldValue);
593
- var readDepts = (_context$stateMap$get2 = context.stateMap.get(computed$)) === null || _context$stateMap$get2 === void 0 || (_context$stateMap$get2 = _context$stateMap$get2.mounted) === null || _context$stateMap$get2 === void 0 ? void 0 : _context$stateMap$get2.readDepts;
621
+ var oldState = context.stateMap.get(computed$);
622
+ oldValues.set(computed$, oldState === null || oldState === void 0 ? void 0 : oldState.val);
623
+ oldErrors.set(computed$, oldState === null || oldState === void 0 ? void 0 : oldState.error);
624
+ var readDepts = (_context$stateMap$get = context.stateMap.get(computed$)) === null || _context$stateMap$get === void 0 || (_context$stateMap$get = _context$stateMap$get.mounted) === null || _context$stateMap$get === void 0 ? void 0 : _context$stateMap$get.readDepts;
594
625
  if (readDepts) {
595
626
  for (var _i = 0, _Array$from = Array.from(readDepts); _i < _Array$from.length; _i++) {
596
627
  var dep = _Array$from[_i];
@@ -615,7 +646,9 @@ function pullEvaluate(readComputed, signalState, context, mutation) {
615
646
  var _computedState$mounte, _computedState$mounte2;
616
647
  var _computed$ = _step5.value;
617
648
  var computedState = readComputed(_computed$, context, mutation);
618
- if (oldValues.has(_computed$) && oldValues.get(_computed$) === computedState.val) {
649
+ var isSameWithOldValue = !computedState.error && oldValues.has(_computed$) && oldValues.get(_computed$) === computedState.val;
650
+ var isSameError = computedState.error && Boolean(oldErrors.get(_computed$));
651
+ if (isSameWithOldValue || isSameError) {
619
652
  continue;
620
653
  }
621
654
  if ((_computedState$mounte = computedState.mounted) !== null && _computedState$mounte !== void 0 && _computedState$mounte.listeners) {
@@ -655,9 +688,9 @@ function propagationChanges(readComputed, signalState, context, mutation) {
655
688
  function innerSetState(readComputed, signal$, context, mutation, val) {
656
689
  var newValue;
657
690
  if (typeof val === 'function') {
658
- var _ref, _context$stateMap$get3;
691
+ var _ref, _context$stateMap$get2;
659
692
  var updater = val;
660
- newValue = updater((_ref = (_context$stateMap$get3 = context.stateMap.get(signal$)) === null || _context$stateMap$get3 === void 0 ? void 0 : _context$stateMap$get3.val) !== null && _ref !== void 0 ? _ref : signal$.init);
693
+ newValue = updater((_ref = (_context$stateMap$get2 = context.stateMap.get(signal$)) === null || _context$stateMap$get2 === void 0 ? void 0 : _context$stateMap$get2.val) !== null && _ref !== void 0 ? _ref : signal$.init);
661
694
  } else {
662
695
  newValue = val;
663
696
  }
@@ -872,7 +905,11 @@ function _sub(signals$, callback$, context, options) {
872
905
  var get = function get(signal, context, mutation) {
873
906
  var _context$interceptor2;
874
907
  return withGetInterceptor(function () {
875
- return readSignal(signal, context, mutation).val;
908
+ var signalState = readSignal(signal, context, mutation);
909
+ if ('error' in signalState) {
910
+ throw signalState.error;
911
+ }
912
+ return signalState.val;
876
913
  }, signal, (_context$interceptor2 = context.interceptor) === null || _context$interceptor2 === void 0 ? void 0 : _context$interceptor2.get);
877
914
  };
878
915
  var _set = function set$1(atom, context) {