@memnexus-ai/typescript-sdk 1.39.12 → 1.40.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/http/handlers.ts","../src/http/http-client.ts","../src/http/base-service.ts","../src/http/serialization.ts","../src/http/request-builder.ts","../src/services/admin-service.ts","../src/services/api-keys-service.ts","../src/services/artifacts-service.ts","../src/services/billing-service.ts","../src/services/conversations-service.ts","../src/services/entities-service.ts","../src/services/facts-service.ts","../src/services/graphrag-service.ts","../src/services/health-service.ts","../src/services/invites-service.ts","../src/services/memories-service.ts","../src/services/monitoring-service.ts","../src/services/narratives-service.ts","../src/services/system-service.ts","../src/services/patterns-service.ts","../src/services/behavior-service.ts","../src/services/topics-service.ts","../src/services/users-service.ts","../src/http/http-types.ts","../src/models/schemas.ts"],"sourcesContent":["/**\n * MemNexus SDK Client\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { SdkConfig, Environment } from './http/http-types.js';\n\nimport { AdminService } from './services/admin-service.js';\nimport { ApiKeysService } from './services/api-keys-service.js';\nimport { ArtifactsService } from './services/artifacts-service.js';\nimport { BillingService } from './services/billing-service.js';\nimport { ConversationsService } from './services/conversations-service.js';\nimport { EntitiesService } from './services/entities-service.js';\nimport { FactsService } from './services/facts-service.js';\nimport { GraphragService } from './services/graphrag-service.js';\nimport { HealthService } from './services/health-service.js';\nimport { InvitesService } from './services/invites-service.js';\nimport { MemoriesService } from './services/memories-service.js';\nimport { MonitoringService } from './services/monitoring-service.js';\nimport { NarrativesService } from './services/narratives-service.js';\nimport { SystemService } from './services/system-service.js';\nimport { PatternsService } from './services/patterns-service.js';\nimport { BehaviorService } from './services/behavior-service.js';\nimport { TopicsService } from './services/topics-service.js';\nimport { UsersService } from './services/users-service.js';\n\n// Re-export types\nexport * from './http/http-types.js';\nexport * from './models/types.js';\nexport * from './models/schemas.js';\n\n// Re-export services\nexport { AdminService } from './services/admin-service.js';\nexport { ApiKeysService } from './services/api-keys-service.js';\nexport { ArtifactsService } from './services/artifacts-service.js';\nexport { BillingService } from './services/billing-service.js';\nexport { ConversationsService } from './services/conversations-service.js';\nexport { EntitiesService } from './services/entities-service.js';\nexport { FactsService } from './services/facts-service.js';\nexport { GraphragService } from './services/graphrag-service.js';\nexport { HealthService } from './services/health-service.js';\nexport { InvitesService } from './services/invites-service.js';\nexport { MemoriesService } from './services/memories-service.js';\nexport { MonitoringService } from './services/monitoring-service.js';\nexport { NarrativesService } from './services/narratives-service.js';\nexport { SystemService } from './services/system-service.js';\nexport { PatternsService } from './services/patterns-service.js';\nexport { BehaviorService } from './services/behavior-service.js';\nexport { TopicsService } from './services/topics-service.js';\nexport { UsersService } from './services/users-service.js';\n\n/**\n * MemNexus SDK client.\n * Provides access to all API services.\n */\nexport class Memnexus {\n private readonly config: SdkConfig;\n\n /** Admin management endpoints for invite codes and platform configuration operations */\n public readonly admin: AdminService;\n /** API key management endpoints operations */\n public readonly apiKeys: ApiKeysService;\n /** Artifact storage and retrieval endpoints operations */\n public readonly artifacts: ArtifactsService;\n /** Subscription billing and payment management endpoints operations */\n public readonly billing: BillingService;\n /** Conversation tracking and analysis endpoints operations */\n public readonly conversations: ConversationsService;\n /** Entity extraction and discovery endpoints operations */\n public readonly entities: EntitiesService;\n /** Fact extraction and management endpoints operations */\n public readonly facts: FactsService;\n /** Graph-based retrieval augmented generation endpoints operations */\n public readonly graphrag: GraphragService;\n /** Health check endpoints operations */\n public readonly health: HealthService;\n /** Invite code validation and gate status endpoints operations */\n public readonly invites: InvitesService;\n /** Memory management and retrieval endpoints operations */\n public readonly memories: MemoriesService;\n /** Observability and metrics endpoints for production monitoring operations */\n public readonly monitoring: MonitoringService;\n /** Narrative thread management endpoints operations */\n public readonly narratives: NarrativesService;\n /** System health, monitoring, and configuration endpoints operations */\n public readonly system: SystemService;\n /** Pattern detection and behavioral analysis endpoints operations */\n public readonly patterns: PatternsService;\n /** Behavioral pattern tracking and state management endpoints operations */\n public readonly behavior: BehaviorService;\n /** Topic detection, clustering, and management endpoints operations */\n public readonly topics: TopicsService;\n /** User management and profile endpoints operations */\n public readonly users: UsersService;\n\n /**\n * Create a new SDK client.\n * @param config - SDK configuration\n */\n constructor(config: SdkConfig = {}) {\n this.config = {\n baseUrl: config.baseUrl || 'http://localhost:3000',\n ...config,\n };\n\n this.admin = new AdminService(this.config);\n this.apiKeys = new ApiKeysService(this.config);\n this.artifacts = new ArtifactsService(this.config);\n this.billing = new BillingService(this.config);\n this.conversations = new ConversationsService(this.config);\n this.entities = new EntitiesService(this.config);\n this.facts = new FactsService(this.config);\n this.graphrag = new GraphragService(this.config);\n this.health = new HealthService(this.config);\n this.invites = new InvitesService(this.config);\n this.memories = new MemoriesService(this.config);\n this.monitoring = new MonitoringService(this.config);\n this.narratives = new NarrativesService(this.config);\n this.system = new SystemService(this.config);\n this.patterns = new PatternsService(this.config);\n this.behavior = new BehaviorService(this.config);\n this.topics = new TopicsService(this.config);\n this.users = new UsersService(this.config);\n }\n\n /**\n * Set the API token for authentication.\n * @param token - Bearer token\n */\n setToken(token: string): void {\n this.config.token = token;\n this.admin.token = token;\n this.apiKeys.token = token;\n this.artifacts.token = token;\n this.billing.token = token;\n this.conversations.token = token;\n this.entities.token = token;\n this.facts.token = token;\n this.graphrag.token = token;\n this.health.token = token;\n this.invites.token = token;\n this.memories.token = token;\n this.monitoring.token = token;\n this.narratives.token = token;\n this.system.token = token;\n this.patterns.token = token;\n this.behavior.token = token;\n this.topics.token = token;\n this.users.token = token;\n }\n\n /**\n * Set the base URL for API requests.\n * @param baseUrl - API base URL\n */\n setBaseUrl(baseUrl: string): void {\n this.config.baseUrl = baseUrl;\n this.admin.baseUrl = baseUrl;\n this.apiKeys.baseUrl = baseUrl;\n this.artifacts.baseUrl = baseUrl;\n this.billing.baseUrl = baseUrl;\n this.conversations.baseUrl = baseUrl;\n this.entities.baseUrl = baseUrl;\n this.facts.baseUrl = baseUrl;\n this.graphrag.baseUrl = baseUrl;\n this.health.baseUrl = baseUrl;\n this.invites.baseUrl = baseUrl;\n this.memories.baseUrl = baseUrl;\n this.monitoring.baseUrl = baseUrl;\n this.narratives.baseUrl = baseUrl;\n this.system.baseUrl = baseUrl;\n this.patterns.baseUrl = baseUrl;\n this.behavior.baseUrl = baseUrl;\n this.topics.baseUrl = baseUrl;\n this.users.baseUrl = baseUrl;\n }\n\n /**\n * Set the environment.\n * @param environment - API environment\n */\n setEnvironment(environment: Environment): void {\n this.config.environment = environment;\n this.admin.environment = environment;\n this.apiKeys.environment = environment;\n this.artifacts.environment = environment;\n this.billing.environment = environment;\n this.conversations.environment = environment;\n this.entities.environment = environment;\n this.facts.environment = environment;\n this.graphrag.environment = environment;\n this.health.environment = environment;\n this.invites.environment = environment;\n this.memories.environment = environment;\n this.monitoring.environment = environment;\n this.narratives.environment = environment;\n this.system.environment = environment;\n this.patterns.environment = environment;\n this.behavior.environment = environment;\n this.topics.environment = environment;\n this.users.environment = environment;\n }\n}\n\nexport default Memnexus;","/**\n * Request handlers for the handler chain.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type {\n HttpRequest,\n HttpResponse,\n HttpError,\n Hook,\n RetryOptions,\n} from './http-types.js';\nimport type { Request } from './request-builder.js';\n\n/** Handler interface */\nexport interface RequestHandler {\n handle<T>(request: Request): Promise<HttpResponse<T>>;\n setNext(handler: RequestHandler): RequestHandler;\n}\n\n/**\n * Base handler with chain support\n */\nabstract class BaseHandler implements RequestHandler {\n protected nextHandler?: RequestHandler;\n\n setNext(handler: RequestHandler): RequestHandler {\n this.nextHandler = handler;\n return handler;\n }\n\n abstract handle<T>(request: Request): Promise<HttpResponse<T>>;\n\n protected async callNext<T>(request: Request): Promise<HttpResponse<T>> {\n if (!this.nextHandler) {\n throw new Error('No next handler in chain');\n }\n return this.nextHandler.handle<T>(request);\n }\n}\n\n/**\n * Retry handler with exponential backoff\n */\nexport class RetryHandler extends BaseHandler {\n private readonly maxAttempts: number;\n private readonly delayMs: number;\n private readonly maxDelayMs: number;\n private readonly jitterMs: number;\n private readonly backoffFactor: number;\n private readonly httpCodesToRetry: Set<number>;\n private readonly httpMethodsToRetry: Set<string>;\n\n constructor(options?: RetryOptions) {\n super();\n this.maxAttempts = options?.attempts ?? 3;\n this.delayMs = options?.delayMs ?? 150;\n this.maxDelayMs = options?.maxDelayMs ?? 5000;\n this.jitterMs = options?.jitterMs ?? 50;\n this.backoffFactor = options?.backoffFactor ?? 2;\n this.httpCodesToRetry = new Set(options?.httpCodesToRetry ?? [408,429,500,502,503,504]);\n this.httpMethodsToRetry = new Set(options?.httpMethodsToRetry ?? [\"GET\",\"POST\",\"PUT\",\"DELETE\",\"PATCH\",\"HEAD\",\"OPTIONS\"]);\n }\n\n async handle<T>(request: Request): Promise<HttpResponse<T>> {\n let lastError: Error | undefined;\n let attempt = 0;\n\n while (attempt < this.maxAttempts) {\n try {\n const response = await this.callNext<T>(request);\n\n // Check if we should retry based on status code\n if (this.shouldRetry(request.method, response.metadata.status)) {\n lastError = new Error(`HTTP ${response.metadata.status}`);\n attempt++;\n await this.delay(attempt);\n continue;\n }\n\n return response;\n } catch (error) {\n lastError = error as Error;\n attempt++;\n\n if (attempt >= this.maxAttempts) {\n break;\n }\n\n await this.delay(attempt);\n }\n }\n\n throw lastError || new Error('Max retry attempts reached');\n }\n\n private shouldRetry(method: string, status: number): boolean {\n return this.httpMethodsToRetry.has(method) && this.httpCodesToRetry.has(status);\n }\n\n private async delay(attempt: number): Promise<void> {\n const exponentialDelay = this.delayMs * Math.pow(this.backoffFactor, attempt - 1);\n const jitter = Math.random() * this.jitterMs;\n const delay = Math.min(exponentialDelay + jitter, this.maxDelayMs);\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n}\n\n/**\n * Validation handler for request/response validation\n */\nexport class ValidationHandler extends BaseHandler {\n async handle<T>(request: Request): Promise<HttpResponse<T>> {\n // Validate request body if schema provided\n if (request.requestSchema && request.body) {\n const result = request.requestSchema.safeParse(request.body);\n if (!result.success) {\n throw new Error(`Request validation failed: ${result.error.message}`);\n }\n }\n\n const response = await this.callNext<T>(request);\n\n // Validate response if enabled and schema available\n if (request.validation?.responseValidation && response.data) {\n const matchingResponse = request.responses.find(\n (r) => r.status === response.metadata.status\n );\n if (matchingResponse) {\n const result = matchingResponse.schema.safeParse(response.data);\n if (!result.success) {\n throw new Error(`Response validation failed: ${result.error.message}`);\n }\n }\n }\n\n return response;\n }\n}\n\n/**\n * Hook handler for request/response interception\n */\nexport class HookHandler extends BaseHandler {\n private readonly hook: Hook;\n\n constructor(hook: Hook) {\n super();\n this.hook = hook;\n }\n\n async handle<T>(request: Request): Promise<HttpResponse<T>> {\n // Build HttpRequest for hook\n const httpRequest: HttpRequest = {\n baseUrl: request.baseUrl,\n method: request.method,\n path: request.path,\n headers: new Map(Object.entries(request.getHeaders())),\n queryParams: new Map(),\n pathParams: new Map(),\n body: request.body as BodyInit,\n };\n\n // Call beforeRequest hook\n const modifiedRequest = await this.hook.beforeRequest(httpRequest, new Map());\n\n // Execute the request\n const response = await this.callNext<T>(request);\n\n // Call afterResponse hook\n const modifiedResponse = await this.hook.afterResponse(modifiedRequest, response, new Map());\n\n return modifiedResponse as HttpResponse<T>;\n }\n}\n\n/**\n * Execute handler - actually performs the HTTP request\n */\nexport class ExecuteHandler extends BaseHandler {\n async handle<T>(request: Request): Promise<HttpResponse<T>> {\n const url = request.constructFullUrl();\n const headers = request.getHeaders();\n\n // Add content type for JSON bodies\n if (request.body && typeof request.body === 'object') {\n headers['Content-Type'] = 'application/json';\n }\n\n // Add authorization header if token is set\n if (request.config.token) {\n headers['Authorization'] = `Bearer ${request.config.token}`;\n }\n\n const fetchOptions: RequestInit = {\n method: request.method,\n headers,\n };\n\n // Add body for non-GET requests\n if (request.body && request.method !== 'GET') {\n fetchOptions.body = typeof request.body === 'string'\n ? request.body\n : JSON.stringify(request.body);\n }\n\n // Add timeout if configured\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n if (request.config.timeoutMs) {\n const controller = new AbortController();\n timeoutId = setTimeout(() => controller.abort(), request.config.timeoutMs);\n fetchOptions.signal = controller.signal;\n }\n\n try {\n const response = await fetch(url, fetchOptions);\n\n // Get response headers\n const responseHeaders: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n responseHeaders[key] = value;\n });\n\n // Parse response body\n const raw = await response.arrayBuffer();\n let data: T | undefined;\n\n const contentType = response.headers.get('content-type') || '';\n if (contentType.includes('application/json') && raw.byteLength > 0) {\n const text = new TextDecoder().decode(raw);\n try {\n data = JSON.parse(text) as T;\n } catch {\n // Not valid JSON, leave data undefined\n }\n }\n\n const httpResponse: HttpResponse<T> = {\n data,\n metadata: {\n status: response.status,\n statusText: response.statusText,\n headers: responseHeaders,\n },\n raw,\n };\n\n // Throw on error status codes\n if (!response.ok) {\n const error = new Error(`HTTP ${response.status}: ${response.statusText}`);\n (error as any).response = httpResponse;\n throw error;\n }\n\n return httpResponse;\n } finally {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n }\n }\n}\n\n/**\n * Default hook implementation (pass-through)\n */\nexport class CustomHook implements Hook {\n async beforeRequest(request: HttpRequest, params: Map<string, string>): Promise<HttpRequest> {\n return request;\n }\n\n async afterResponse(\n request: HttpRequest,\n response: HttpResponse<any>,\n params: Map<string, string>\n ): Promise<HttpResponse<any>> {\n return response;\n }\n\n async onError(\n request: HttpRequest,\n response: HttpResponse<any>,\n params: Map<string, string>\n ): Promise<HttpError> {\n return {\n error: response.metadata.statusText,\n metadata: response.metadata,\n };\n }\n}\n","/**\n * HTTP client for making API requests.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type {\n HttpResponse,\n SdkConfig,\n Hook,\n} from './http-types.js';\nimport type { Request } from './request-builder.js';\nimport { RetryHandler } from './handlers.js';\nimport { ValidationHandler } from './handlers.js';\nimport { HookHandler } from './handlers.js';\nimport { ExecuteHandler } from './handlers.js';\nimport { CustomHook } from './handlers.js';\n\n/** Handler interface */\ninterface RequestHandler {\n handle<T>(request: Request): Promise<HttpResponse<T>>;\n setNext(handler: RequestHandler): RequestHandler;\n}\n\n/**\n * Core HTTP client with handler chain.\n */\nexport class HttpClient {\n private config: SdkConfig;\n private readonly requestHandlerChain: RequestHandler;\n\n constructor(config: SdkConfig, hook?: Hook) {\n this.config = config;\n\n // Build handler chain: Retry -> Validation -> Hook -> Execute\n const executeHandler = new ExecuteHandler();\n const hookHandler = new HookHandler(hook || new CustomHook());\n const validationHandler = new ValidationHandler();\n const retryHandler = new RetryHandler(config.retry);\n\n retryHandler.setNext(validationHandler);\n validationHandler.setNext(hookHandler);\n hookHandler.setNext(executeHandler);\n\n this.requestHandlerChain = retryHandler;\n }\n\n /**\n * Execute an HTTP request\n */\n async call<T>(request: Request): Promise<HttpResponse<T>> {\n return this.requestHandlerChain.handle<T>(request);\n }\n\n /**\n * Update base URL\n */\n setBaseUrl(url: string): void {\n this.config.baseUrl = url;\n }\n\n /**\n * Update config\n */\n setConfig(config: SdkConfig): void {\n this.config = config;\n }\n}\n","/**\n * Base service class that all API services extend.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { SdkConfig, Environment } from './http-types.js';\nimport { HttpClient } from './http-client.js';\n\n/**\n * Base class for all API service classes.\n */\nexport class BaseService {\n protected config: SdkConfig;\n protected client: HttpClient;\n\n constructor(config: SdkConfig) {\n this.config = config;\n this.client = new HttpClient(config);\n }\n\n /**\n * Set the base URL for API requests\n */\n set baseUrl(baseUrl: string) {\n this.config.baseUrl = baseUrl;\n this.client.setBaseUrl(baseUrl);\n }\n\n /**\n * Set the environment\n */\n set environment(environment: Environment) {\n this.config.environment = environment;\n this.client.setBaseUrl(environment);\n }\n\n /**\n * Set the request timeout in milliseconds\n */\n set timeoutMs(timeoutMs: number) {\n this.config.timeoutMs = timeoutMs;\n }\n\n /**\n * Set the bearer token for authentication\n */\n set token(token: string) {\n this.config.token = token;\n }\n}\n","/**\n * Parameter serialization utilities.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { RequestParameter, SerializationStyle } from './http-types.js';\n\n/**\n * Serialize a parameter value based on its style\n */\nexport function serializeParameter(param: RequestParameter): unknown {\n const { value, style, explode } = param;\n\n if (value === undefined || value === null) {\n return undefined;\n }\n\n // Primitive values don't need special serialization\n if (typeof value !== 'object') {\n return value;\n }\n\n // Array serialization\n if (Array.isArray(value)) {\n return serializeArray(value, style as SerializationStyle, explode);\n }\n\n // Object serialization\n return serializeObject(value as Record<string, unknown>, style as SerializationStyle, explode);\n}\n\n/**\n * Serialize an array value\n */\nfunction serializeArray(\n value: unknown[],\n style: SerializationStyle,\n explode: boolean\n): string | string[] {\n if (explode) {\n return value.map(String);\n }\n\n switch (style) {\n case 'simple':\n return value.join(',');\n case 'label':\n return '.' + value.join('.');\n case 'matrix':\n return ';' + value.join(';');\n case 'form':\n return value.join(',');\n case 'space_delimited':\n return value.join(' ');\n case 'pipe_delimited':\n return value.join('|');\n default:\n return value.join(',');\n }\n}\n\n/**\n * Serialize an object value\n */\nfunction serializeObject(\n value: Record<string, unknown>,\n style: SerializationStyle,\n explode: boolean\n): string | Record<string, string> {\n const entries = Object.entries(value).filter(([_, v]) => v !== undefined);\n\n if (style === 'deep_object') {\n // For deep object, we return the object as-is for query param handling\n return Object.fromEntries(entries.map(([k, v]) => [k, String(v)]));\n }\n\n if (explode) {\n return Object.fromEntries(entries.map(([k, v]) => [k, String(v)]));\n }\n\n // Non-exploded object serialization\n const pairs = entries.flatMap(([k, v]) => [k, String(v)]);\n\n switch (style) {\n case 'simple':\n return pairs.join(',');\n case 'label':\n return '.' + pairs.join('.');\n case 'matrix':\n return ';' + pairs.join(';');\n case 'form':\n return pairs.join(',');\n default:\n return pairs.join(',');\n }\n}\n\nexport type { SerializationStyle };\n","/**\n * Request builder for constructing HTTP requests.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { ZodType } from 'zod';\nimport type {\n HttpMethod,\n SdkConfig,\n RequestParameter,\n ResponseDefinition,\n ErrorDefinition,\n ContentType,\n RetryOptions,\n ValidationOptions,\n SerializationStyle,\n} from './http-types.js';\nimport { serializeParameter } from './serialization.js';\n\n/** Request creation parameters */\nexport interface CreateRequestParameters {\n baseUrl: string;\n method: HttpMethod;\n path: string;\n config: SdkConfig;\n headers?: Map<string, RequestParameter>;\n queryParams?: Map<string, RequestParameter>;\n pathParams?: Map<string, RequestParameter>;\n body?: unknown;\n responses?: ResponseDefinition[];\n errors?: ErrorDefinition[];\n requestSchema?: ZodType;\n requestContentType?: ContentType;\n validation?: ValidationOptions;\n retry?: RetryOptions;\n}\n\n/**\n * HTTP Request object\n */\nexport class Request {\n readonly baseUrl: string;\n readonly method: HttpMethod;\n readonly path: string;\n readonly config: SdkConfig;\n readonly headers: Map<string, RequestParameter>;\n readonly queryParams: Map<string, RequestParameter>;\n readonly pathParams: Map<string, RequestParameter>;\n body?: unknown;\n readonly responses: ResponseDefinition[];\n readonly errors: ErrorDefinition[];\n readonly requestSchema?: ZodType;\n readonly requestContentType?: ContentType;\n readonly validation: ValidationOptions;\n readonly retry: RetryOptions;\n\n constructor(params: CreateRequestParameters) {\n this.baseUrl = params.baseUrl;\n this.method = params.method;\n this.path = params.path;\n this.config = params.config;\n this.headers = params.headers || new Map();\n this.queryParams = params.queryParams || new Map();\n this.pathParams = params.pathParams || new Map();\n this.body = params.body;\n this.responses = params.responses || [];\n this.errors = params.errors || [];\n this.requestSchema = params.requestSchema;\n this.requestContentType = params.requestContentType;\n this.validation = params.validation || {};\n this.retry = params.retry || { attempts: 1 };\n }\n\n /**\n * Add a header parameter\n */\n addHeaderParam(key: string, param: RequestParameter): void {\n this.headers.set(key, param);\n }\n\n /**\n * Add a query parameter\n */\n addQueryParam(key: string, param: RequestParameter): void {\n this.queryParams.set(key, param);\n }\n\n /**\n * Add a path parameter\n */\n addPathParam(key: string, param: RequestParameter): void {\n this.pathParams.set(key, param);\n }\n\n /**\n * Set the request body\n */\n addBody(body: unknown): void {\n this.body = body;\n }\n\n /**\n * Construct the full URL with path and query parameters\n */\n constructFullUrl(): string {\n // Substitute path parameters\n let url = this.path;\n for (const [key, param] of this.pathParams) {\n const value = serializeParameter(param);\n url = url.replace(`{${key}}`, encodeURIComponent(String(value)));\n }\n\n // Add query parameters\n const queryString = this.buildQueryString();\n if (queryString) {\n url += `?${queryString}`;\n }\n\n return `${this.baseUrl}${url}`;\n }\n\n /**\n * Get serialized headers\n */\n getHeaders(): Record<string, string> {\n const headers: Record<string, string> = {};\n\n for (const [key, param] of this.headers) {\n const value = serializeParameter(param);\n if (value !== undefined && value !== null) {\n headers[key] = String(value);\n }\n }\n\n return headers;\n }\n\n /**\n * Build query string from parameters\n */\n private buildQueryString(): string {\n const parts: string[] = [];\n\n for (const [key, param] of this.queryParams) {\n const serialized = serializeQueryParam(key, param);\n if (serialized) {\n parts.push(serialized);\n }\n }\n\n return parts.join('&');\n }\n}\n\n/**\n * Serialize a query parameter\n */\nfunction serializeQueryParam(key: string, param: RequestParameter): string | null {\n const value = param.value;\n if (value === undefined || value === null) {\n return null;\n }\n\n // Handle arrays\n if (Array.isArray(value)) {\n if (param.explode) {\n return value.map((v) => `${encodeURIComponent(key)}=${encodeURIComponent(String(v))}`).join('&');\n }\n return `${encodeURIComponent(key)}=${value.map((v) => encodeURIComponent(String(v))).join(',')}`;\n }\n\n // Handle objects (deep object style)\n if (typeof value === 'object') {\n if (param.style === 'deep_object' as any) {\n return Object.entries(value)\n .map(([k, v]) => `${encodeURIComponent(key)}[${encodeURIComponent(k)}]=${encodeURIComponent(String(v))}`)\n .join('&');\n }\n // Form style\n return Object.entries(value)\n .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`)\n .join('&');\n }\n\n // Primitive value\n return `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`;\n}\n","/**\n * AdminService - Admin management endpoints for invite codes and platform configuration API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Admin management endpoints for invite codes and platform configuration\n */\nexport class AdminService extends BaseService {\n\n /**\n * List invite codes\n * List all invite codes with optional status filter\n * @param status - Filter by status\n * @param limit - \n * @param offset - \n */\n async adminListInviteCodes(options?: { status?: 'active' | 'exhausted' | 'revoked' | 'expired'; limit?: number; offset?: number }): Promise<HttpResponse<{ invites?: { id?: string; code?: string; label?: string; maxUses?: number; currentUses?: number; status?: string; expiresAt?: string; createdAt?: string }[]; total?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/invites',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.status !== undefined) {\n request.addQueryParam('status', {\n key: 'status',\n value: options.status,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create invite code\n * Create a new invite code for the gated preview\n * @param body - Request body\n */\n async adminCreateInviteCode(body: { label: string; maxUses?: number; code?: string; expiresAt?: string; metadata?: Record<string, unknown> }): Promise<HttpResponse<{ id?: string; code?: string; label?: string; maxUses?: number; currentUses?: number; status?: string; expiresAt?: string; createdAt?: string; shareUrl?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/admin/invites',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get invite system statistics\n * Aggregate statistics for the invite system\n */\n async adminGetInviteStats(): Promise<HttpResponse<{ totalCodes?: number; activeCodes?: number; totalRedemptions?: number; totalCapacity?: number; utilizationRate?: number; recentRedemptions?: { code?: string; email?: string; redeemedAt?: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/invites/stats',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Get invite code details\n * Get details for a single invite code including redemptions\n * @param code - The invite code\n */\n async adminGetInviteCode(code: string): Promise<HttpResponse<{ id?: string; code?: string; label?: string; maxUses?: number; currentUses?: number; status?: string; redemptions?: { userId?: string; email?: string; redeemedAt?: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/invites/{code}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('code', {\n key: 'code',\n value: code,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Revoke an invite code\n * Revoke an invite code. Existing accounts created with this code are unaffected.\n * @param code - \n */\n async adminRevokeInviteCode(code: string): Promise<HttpResponse<{ code?: string; status?: string; message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/admin/invites/{code}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('code', {\n key: 'code',\n value: code,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Get gate status with audit info\n * Get current invite gate state with audit information\n */\n async adminGetGateStatus(): Promise<HttpResponse<{ gated?: boolean; updatedAt?: string; updatedBy?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/gate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Toggle invite gate\n * Toggle the invite gate. When enabled (true), new signups require a valid invite code.\nWhen disabled (false), registration is open. Takes effect immediately.\n\n * @param body - Request body\n */\n async adminSetGateStatus(body: { enabled: boolean }): Promise<HttpResponse<{ gated?: boolean; updatedAt?: string; message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/admin/gate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * ApiKeysService - API key management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { ApiKey } from '../models/types.js';\n\n/**\n * API key management endpoints\n */\nexport class ApiKeysService extends BaseService {\n\n /**\n * Get user information for current API key\n * Debug endpoint to retrieve user ID and authentication method from the current API key\n */\n async debugUser(): Promise<HttpResponse<{ data?: { userId?: string; authMethod?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/apikeys/debug-user',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * List API keys\n * List all API keys for the authenticated user\n */\n async listApiKeys(): Promise<HttpResponse<{ data?: ApiKey[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/apikeys',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Create API key\n * Create a new API key for the authenticated user\n * @param body - Request body\n */\n async createApiKey(options?: { body?: { label?: string; expiresAt?: string } }): Promise<HttpResponse<{ data?: { apiKey?: string; keyInfo?: ApiKey } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/apikeys',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete API key\n * Delete (revoke) an API key by its ID\n * @param id - The API key ID\n */\n async deleteApiKey(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/apikeys/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n}","/**\n * ArtifactsService - Artifact storage and retrieval endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Artifact } from '../models/types.js';\n\n/**\n * Artifact storage and retrieval endpoints\n */\nexport class ArtifactsService extends BaseService {\n\n /**\n * List artifacts\n * List all artifacts for the authenticated user with optional filters\n * @param limit - Maximum number of artifacts to return\n * @param offset - Number of artifacts to skip\n * @param memoryId - Filter by memory ID\n * @param conversationId - Filter by conversation ID\n * @param type - Filter by artifact type\n */\n async listArtifacts(options?: { limit?: number; offset?: number; memoryId?: string; conversationId?: string; type?: string }): Promise<HttpResponse<{ data?: Artifact[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/artifacts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.memoryId !== undefined) {\n request.addQueryParam('memoryId', {\n key: 'memoryId',\n value: options.memoryId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.conversationId !== undefined) {\n request.addQueryParam('conversationId', {\n key: 'conversationId',\n value: options.conversationId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.type !== undefined) {\n request.addQueryParam('type', {\n key: 'type',\n value: options.type,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create artifact\n * Create a new artifact for the authenticated user\n * @param body - Request body\n */\n async createArtifact(body: { content: string; type: string; name?: string; description?: string; memoryId?: string; conversationId?: string; metadata?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Artifact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/artifacts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get artifact by ID\n * Retrieve a specific artifact by its ID\n * @param id - The artifact ID\n */\n async getArtifactById(id: string): Promise<HttpResponse<{ data?: Artifact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/artifacts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Delete artifact\n * Delete an artifact by its ID\n * @param id - The artifact ID\n */\n async deleteArtifact(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/artifacts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Update artifact\n * Update an existing artifact with partial data\n * @param id - The artifact ID\n * @param body - Request body\n */\n async updateArtifact(id: string, body: { content?: string; type?: string; name?: string; description?: string; metadata?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Artifact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/artifacts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * BillingService - Subscription billing and payment management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { BillingOverview, CheckoutSessionResponse, PortalSessionResponse, Subscription, ListInvoicesResponse, ListPaymentMethodsResponse } from '../models/types.js';\n\n/**\n * Subscription billing and payment management endpoints\n */\nexport class BillingService extends BaseService {\n\n /**\n * Get billing overview\n * Get subscription, payment method, and upcoming invoice information\n */\n async getBillingOverview(): Promise<HttpResponse<{ data?: BillingOverview }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/billing/overview',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Create checkout session\n * Create a Stripe checkout session for subscription upgrade\n * @param body - Request body\n */\n async createCheckoutSession(body: { priceId?: string; successUrl: string; cancelUrl: string }): Promise<HttpResponse<{ data?: CheckoutSessionResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/checkout',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create billing portal session\n * Create a Stripe billing portal session for managing subscription\n * @param body - Request body\n */\n async createPortalSession(body: { returnUrl: string }): Promise<HttpResponse<{ data?: PortalSessionResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/portal',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get current subscription\n * Get the current subscription details for the authenticated user\n */\n async getSubscription(): Promise<HttpResponse<{ data?: Subscription }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/billing/subscription',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Cancel subscription\n * Cancel the current subscription at the end of the billing period\n * @param body - Request body\n */\n async cancelSubscription(options?: { body?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Subscription }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/subscription/cancel',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Reactivate subscription\n * Reactivate a subscription that was scheduled for cancellation\n * @param body - Request body\n */\n async reactivateSubscription(options?: { body?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Subscription }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/subscription/reactivate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * List invoices\n * Get a list of invoices for the authenticated user\n * @param limit - Maximum number of invoices to return\n */\n async listInvoices(options?: { limit?: number }): Promise<HttpResponse<{ data?: ListInvoicesResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/billing/invoices',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * List payment methods\n * Get a list of payment methods for the authenticated user\n */\n async listPaymentMethods(): Promise<HttpResponse<{ data?: ListPaymentMethodsResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/billing/payment-methods',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Set default payment method\n * Set a payment method as the default for future payments\n * @param id - The payment method ID\n * @param body - Request body\n */\n async setDefaultPaymentMethod(id: string, options?: { body?: Record<string, unknown> }): Promise<HttpResponse<{ message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/payment-methods/{id}/default',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete payment method\n * Remove a payment method from the account\n * @param id - The payment method ID\n */\n async deletePaymentMethod(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/billing/payment-methods/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Stripe webhook endpoint\n * Receive and process Stripe webhook events\n * @param body - Request body\n */\n async stripeWebhook(body: Record<string, unknown>): Promise<HttpResponse<{ received?: boolean }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/webhooks',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * ConversationsService - Conversation tracking and analysis endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Conversation, Memory } from '../models/types.js';\n\n/**\n * Conversation tracking and analysis endpoints\n */\nexport class ConversationsService extends BaseService {\n\n /**\n * List conversations\n * List all conversations for the authenticated user with pagination\n * @param limit - Maximum number of conversations to return\n * @param offset - Number of conversations to skip\n * @param since - Return only conversations created after this timestamp (ISO 8601 format)\n */\n async listConversations(options?: { limit?: number; offset?: number; since?: string }): Promise<HttpResponse<{ data?: Conversation[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/conversations',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.since !== undefined) {\n request.addQueryParam('since', {\n key: 'since',\n value: options.since,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create conversation\n * Create a new conversation for the authenticated user\n * @param body - Request body\n */\n async createConversation(body: { title: string; summary?: string }): Promise<HttpResponse<{ data?: Conversation }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/conversations',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get conversation summary\n * Retrieve a conversation summary by its ID\n * @param conversationId - The conversation ID\n */\n async getConversationSummary(conversationId: string): Promise<HttpResponse<{ data?: Conversation }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/conversations/{conversationId}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('conversationId', {\n key: 'conversationId',\n value: conversationId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Delete conversation\n * Delete a conversation and soft-delete all associated memories\n * @param conversationId - The conversation ID\n */\n async deleteConversation(conversationId: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/conversations/{conversationId}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('conversationId', {\n key: 'conversationId',\n value: conversationId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Get conversation timeline\n * Get all memories in a conversation in chronological order\n * @param conversationId - The conversation ID\n */\n async getConversationTimeline(conversationId: string): Promise<HttpResponse<{ data?: Memory[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/conversations/{conversationId}/timeline',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('conversationId', {\n key: 'conversationId',\n value: conversationId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Search conversations\n * Search conversations by query string\n * @param body - Request body\n */\n async searchConversations(body: { query: string; limit?: number }): Promise<HttpResponse<{ data?: Conversation[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/conversations/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find conversations by topic\n * Find conversations that contain a specific topic\n * @param body - Request body\n */\n async findConversationsByTopic(body: { topicId: string; limit?: number }): Promise<HttpResponse<{ data?: Conversation[]; count?: number; metadata?: { topicId?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/conversations/by-topic',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * EntitiesService - Entity extraction and discovery endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { EntityNode, Memory } from '../models/types.js';\n\n/**\n * Entity extraction and discovery endpoints\n */\nexport class EntitiesService extends BaseService {\n\n /**\n * List entities\n * List all entities for the authenticated user, optionally filtered by type\n * @param type - Filter by entity type (e.g., PERSON, TECHNOLOGY)\n * @param limit - Maximum number of entities to return\n * @param offset - Number of entities to skip\n */\n async listEntities(options?: { type?: string; limit?: number; offset?: number }): Promise<HttpResponse<{ data?: EntityNode[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/entities',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.type !== undefined) {\n request.addQueryParam('type', {\n key: 'type',\n value: options.type,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get entity by ID\n * Retrieve a specific entity by its ID\n * @param id - The entity ID\n */\n async getEntityById(id: string): Promise<HttpResponse<{ data?: EntityNode }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/entities/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Get memories mentioning entity\n * Get all memories that mention a specific entity\n * @param id - The entity ID\n * @param limit - Maximum number of memories to return\n * @param offset - Number of memories to skip\n */\n async getEntityMemories(id: string, options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data?: { memory?: Memory; confidence?: number }[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/entities/{id}/memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n}","/**\n * FactsService - Fact extraction and management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Fact } from '../models/types.js';\n\n/**\n * Fact extraction and management endpoints\n */\nexport class FactsService extends BaseService {\n\n /**\n * List facts\n * List all facts for the authenticated user\n * @param limit - Maximum number of facts to return\n * @param offset - Number of facts to skip\n */\n async listFacts(options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data?: Fact[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/facts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create fact\n * Create a new semantic fact\n * @param body - Request body\n */\n async createFact(body: { subject: string; predicate: string; object: string }): Promise<HttpResponse<{ data?: Fact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/facts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get fact by ID\n * Retrieve a specific fact by its ID\n * @param id - The fact ID\n */\n async getFactById(id: string): Promise<HttpResponse<{ data?: Fact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/facts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Update fact\n * Update an existing fact completely\n * @param id - The fact ID\n * @param body - Request body\n */\n async updateFact(id: string, body: { subject?: string; predicate?: string; object?: string; confidence?: number }): Promise<HttpResponse<{ data?: Fact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PUT',\n path: '/api/facts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete fact\n * Delete a fact by its ID\n * @param id - The fact ID\n */\n async deleteFact(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/facts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Search facts\n * Search semantic facts by query string\n * @param body - Request body\n */\n async searchFacts(body: { query: string; limit?: number }): Promise<HttpResponse<{ data?: Fact[]; count?: number; metadata?: { query?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/facts/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * GraphragService - Graph-based retrieval augmented generation endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { GraphRAGQueryResponse } from '../models/types.js';\n\n/**\n * Graph-based retrieval augmented generation endpoints\n */\nexport class GraphragService extends BaseService {\n\n /**\n * Explain a GraphRAG query\n * Get explanation for a previously executed GraphRAG query result\n * @param queryId - The query ID to explain\n */\n async explainGraphRAGQuery(options?: { queryId?: string }): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/graphrag/explain',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.queryId !== undefined) {\n request.addQueryParam('queryId', {\n key: 'queryId',\n value: options.queryId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Query communities\n * Query communities for relevant information using semantic search\n * @param body - Request body\n */\n async queryCommunities(body: { query: string; limit?: number }): Promise<HttpResponse<{ data?: Record<string, unknown>[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/graphrag/query-communities',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Execute a GraphRAG query\n * Execute a graph-based retrieval augmented generation query\n * @param body - Request body\n */\n async executeGraphRAGQuery(body: { query: string; maxDepth?: number; depth?: number; limit?: number; includeRelationships?: boolean }): Promise<HttpResponse<{ data?: GraphRAGQueryResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/graphrag/query',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * HealthService - Health check endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Health check endpoints\n */\nexport class HealthService extends BaseService {\n\n /**\n * API health check endpoint\n * Returns the health status and uptime of the API service.\nThis endpoint is public and requires no authentication.\nUse this endpoint for monitoring, health checks, and service availability verification.\nReturns 200 when healthy, 503 when the database is unreachable.\n\n */\n async healthCheck(): Promise<HttpResponse<{ status: 'healthy' | 'degraded' | 'unhealthy'; timestamp: string; version: string; uptime: number; checks: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/health',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n}","/**\n * InvitesService - Invite code validation and gate status endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Invite code validation and gate status endpoints\n */\nexport class InvitesService extends BaseService {\n\n /**\n * Check invite gate status\n * Check whether the invite gate is currently open or closed.\nWhen gated is true, new signups require a valid invite code.\nResponse is cached server-side (30-second TTL).\n\n */\n async getGateStatus(): Promise<HttpResponse<{ gated?: boolean }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/invites/gate-status',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Validate an invite code\n * Validate an invite code without redeeming it.\nRate limited to 10 requests per minute per IP to prevent enumeration.\nError messages are intentionally generic.\n\n * @param body - Request body\n */\n async validateInviteCode(body: { code: string }): Promise<HttpResponse<{ valid?: boolean; error?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/invites/validate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * MemoriesService - Memory management and retrieval endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Memory, Pagination, CreateMemoryResponseMeta, SearchResult, TemporalMetadata, BatchGetMemoriesMeta, DigestMetadata, DigestSource, RelatedMemoryResult, MemoryRelationship } from '../models/types.js';\n\n/**\n * Memory management and retrieval endpoints\n */\nexport class MemoriesService extends BaseService {\n\n /**\n * Get memory by ID\n * Retrieve a specific memory by its ID\n * @param id - The memory ID\n */\n async getMemoryById(id: string): Promise<HttpResponse<{ data: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Update a memory\n * Update an existing memory for the authenticated user\n * @param id - Memory ID\n * @param body - Request body\n */\n async updateMemory(id: string, body: { content?: string; name?: string | ''; memoryType?: 'episodic' | 'semantic' | 'procedural'; context?: string; topics?: string[] }): Promise<HttpResponse<{ data?: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PUT',\n path: '/api/memories/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete memory\n * Delete a memory by its ID\n * @param id - The memory ID\n */\n async deleteMemory(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/memories/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * List memories\n * List all memories for the authenticated user with pagination.\n\n**ID Prefix Search:**\nUse the `idPrefix` parameter for git-style short ID lookup. This enables efficient\nserver-side filtering instead of fetching all memories and filtering client-side.\n- Minimum 6 characters required for `idPrefix`\n- Returns matching memories directly (no need for secondary fetch)\n- Example: `?idPrefix=2d09116a` finds memories starting with that prefix\n\n * @param idPrefix - Filter memories by ID prefix (git-style short ID lookup). Minimum 6 characters.\n * @param limit - Maximum number of memories to return\n * @param offset - Number of memories to skip\n * @param page - Page number (alternative to offset)\n */\n async listMemories(options?: { idPrefix?: string; limit?: number; offset?: number; page?: number }): Promise<HttpResponse<{ data?: Memory[]; pagination?: Pagination }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.idPrefix !== undefined) {\n request.addQueryParam('idPrefix', {\n key: 'idPrefix',\n value: options.idPrefix,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.page !== undefined) {\n request.addQueryParam('page', {\n key: 'page',\n value: options.page,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create a memory\n * Create a new memory for the authenticated user.\n\n**Conversation Management:**\n- Use `conversationId: \"NEW\"` to create a new conversation automatically\n- Provide an existing conversation ID to add to that conversation\n\n**Session Management:**\n- Sessions are automatically assigned based on 90-minute gap detection\n- If the last memory in the conversation was within 90 minutes, the same session is reused\n- If the gap exceeds 90 minutes, a new session is created\n\n**Response:**\n- Returns the created memory in `data` field\n- Returns session/conversation metadata in `meta` field\n\n * @param body - Request body\n */\n async createMemory(body: { conversationId: string; name?: string; content: string; memoryType?: 'episodic' | 'semantic' | 'procedural'; role?: 'user' | 'assistant' | 'system'; context?: string; topics?: string[]; eventTime?: string; validFrom?: string; validTo?: string }): Promise<HttpResponse<{ data: Memory; meta: CreateMemoryResponseMeta }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Search memories (GET)\n * Search memories using query parameters. Provides the same functionality as\nPOST /api/memories/search but accepts parameters via query string.\n\n**Benefits of GET:**\n- Faster response times (~3x improvement)\n- Browser/CDN caching support\n- Simpler integration for read-only clients\n\n**Search Methods:**\n- **hybrid** (default): Combines semantic and keyword search with Reciprocal Rank Fusion\n- **semantic**: Vector-based semantic search using OpenAI embeddings\n- **keyword**: Traditional fulltext search using Lucene\n\n**Array Parameters:**\n- `topics`: Provide as comma-separated values (e.g., `topics=typescript,api-design`)\n\n * @param q - Search query string\n * @param searchMethod - Search algorithm to use\n * @param limit - Maximum number of results to return\n * @param offset - Number of results to skip for pagination\n * @param threshold - Minimum similarity threshold for semantic search\n * @param mode - Content filtering mode\n * @param vectorWeight - Weight for vector similarity in hybrid search\n * @param fulltextWeight - Weight for fulltext matching in hybrid search\n * @param topics - Comma-separated list of topics to filter by (include memories with ANY of these topics)\n * @param excludeTopics - Comma-separated list of topics to exclude (exclude memories with ANY of these topics)\n * @param memoryType - Filter by memory type\n * @param conversationId - Filter by conversation ID\n * @param explain - Include detailed match explanations in results\n * @param includeTopics - Include associated topics in results\n * @param includeEntities - Include mentioned entities in results\n * @param asOfTime - Point-in-time query (ISO 8601 datetime)\n * @param validAtTime - Filter by validity time (ISO 8601 datetime)\n * @param eventTimeFrom - Event time range start (ISO 8601 datetime)\n * @param eventTimeTo - Event time range end (ISO 8601 datetime)\n * @param ingestionTimeFrom - Ingestion time range start (ISO 8601 datetime)\n * @param ingestionTimeTo - Ingestion time range end (ISO 8601 datetime)\n * @param includeExpired - Include expired memories in results\n * @param temporalMode - Temporal query mode\n */\n async searchMemoriesGet(options?: { q?: string; searchMethod?: 'keyword' | 'semantic' | 'hybrid'; limit?: number; offset?: number; threshold?: number; mode?: 'unified' | 'content' | 'facts'; vectorWeight?: number; fulltextWeight?: number; topics?: string; excludeTopics?: string; memoryType?: 'episodic' | 'semantic' | 'procedural'; conversationId?: string; explain?: boolean; includeTopics?: boolean; includeEntities?: boolean; asOfTime?: string; validAtTime?: string; eventTimeFrom?: string; eventTimeTo?: string; ingestionTimeFrom?: string; ingestionTimeTo?: string; includeExpired?: boolean; temporalMode?: 'current' | 'historical' | 'evolution' }): Promise<HttpResponse<{ data: SearchResult[]; searchMethod?: string; pagination: { limit: number; offset: number; count: number }; temporalMetadata: TemporalMetadata }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.q !== undefined) {\n request.addQueryParam('q', {\n key: 'q',\n value: options.q,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.searchMethod !== undefined) {\n request.addQueryParam('searchMethod', {\n key: 'searchMethod',\n value: options.searchMethod,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.threshold !== undefined) {\n request.addQueryParam('threshold', {\n key: 'threshold',\n value: options.threshold,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.mode !== undefined) {\n request.addQueryParam('mode', {\n key: 'mode',\n value: options.mode,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.vectorWeight !== undefined) {\n request.addQueryParam('vectorWeight', {\n key: 'vectorWeight',\n value: options.vectorWeight,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.fulltextWeight !== undefined) {\n request.addQueryParam('fulltextWeight', {\n key: 'fulltextWeight',\n value: options.fulltextWeight,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.topics !== undefined) {\n request.addQueryParam('topics', {\n key: 'topics',\n value: options.topics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.excludeTopics !== undefined) {\n request.addQueryParam('excludeTopics', {\n key: 'excludeTopics',\n value: options.excludeTopics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.memoryType !== undefined) {\n request.addQueryParam('memoryType', {\n key: 'memoryType',\n value: options.memoryType,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.conversationId !== undefined) {\n request.addQueryParam('conversationId', {\n key: 'conversationId',\n value: options.conversationId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.explain !== undefined) {\n request.addQueryParam('explain', {\n key: 'explain',\n value: options.explain,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeTopics !== undefined) {\n request.addQueryParam('includeTopics', {\n key: 'includeTopics',\n value: options.includeTopics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeEntities !== undefined) {\n request.addQueryParam('includeEntities', {\n key: 'includeEntities',\n value: options.includeEntities,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.asOfTime !== undefined) {\n request.addQueryParam('asOfTime', {\n key: 'asOfTime',\n value: options.asOfTime,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.validAtTime !== undefined) {\n request.addQueryParam('validAtTime', {\n key: 'validAtTime',\n value: options.validAtTime,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.eventTimeFrom !== undefined) {\n request.addQueryParam('eventTimeFrom', {\n key: 'eventTimeFrom',\n value: options.eventTimeFrom,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.eventTimeTo !== undefined) {\n request.addQueryParam('eventTimeTo', {\n key: 'eventTimeTo',\n value: options.eventTimeTo,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.ingestionTimeFrom !== undefined) {\n request.addQueryParam('ingestionTimeFrom', {\n key: 'ingestionTimeFrom',\n value: options.ingestionTimeFrom,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.ingestionTimeTo !== undefined) {\n request.addQueryParam('ingestionTimeTo', {\n key: 'ingestionTimeTo',\n value: options.ingestionTimeTo,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeExpired !== undefined) {\n request.addQueryParam('includeExpired', {\n key: 'includeExpired',\n value: options.includeExpired,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.temporalMode !== undefined) {\n request.addQueryParam('temporalMode', {\n key: 'temporalMode',\n value: options.temporalMode,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Search all memories\n * Search memories using different search methods:\n- **hybrid** (default): Combines semantic and keyword search with Reciprocal Rank Fusion\n- **semantic**: Vector-based semantic search using OpenAI embeddings\n- **keyword**: Traditional fulltext search using Lucene\n\nThe `mode` parameter controls content filtering (unified, content, facts).\nThe `searchMethod` parameter controls the search algorithm.\n\n * @param body - Request body\n */\n async searchMemories(body: { query: string; mode?: 'unified' | 'content' | 'facts'; searchMethod?: 'keyword' | 'semantic' | 'hybrid'; limit?: number; offset?: number; vectorWeight?: number; fulltextWeight?: number; threshold?: number; explain?: boolean; asOfTime?: string; validAtTime?: string; eventTimeFrom?: string; eventTimeTo?: string; ingestionTimeFrom?: string; ingestionTimeTo?: string; includeExpired?: boolean; temporalMode?: 'current' | 'historical' | 'evolution'; topics?: string[]; memoryType?: 'episodic' | 'semantic' | 'procedural'; conversationId?: string; includeTopics?: boolean; includeEntities?: boolean; includeFacts?: boolean; entityTypes?: string[] }): Promise<HttpResponse<{ data: SearchResult[]; searchMethod?: string; pagination: { limit: number; offset: number; count: number }; temporalMetadata: TemporalMetadata }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get multiple memories by IDs\n * Retrieve multiple memories by their IDs in a single request.\nMore efficient than making multiple individual GET requests.\n\nReturns memories in the order requested, with metadata about\nwhich IDs were found or missing.\n\n * @param body - Request body\n */\n async getMemoriesBatch(body: { ids: string[] }): Promise<HttpResponse<{ data: Memory[]; meta: BatchGetMemoriesMeta }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/batch',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Generate memory digest\n * Synthesizes a comprehensive, structured briefing from all relevant memories\non a topic. Instead of multiple search rounds, one call returns a complete digest.\n\n**Formats:**\n- `structured` (default): Sections with headers, bullet points, key decisions\n- `narrative`: Chronological prose narrative\n- `timeline`: Dated event list\n- `status-report`: Done/In Progress/Blocked grouping\n\n**Pipeline:**\n1. Gather: High-limit search + conversation expansion\n2. Organize: Group by conversation, status, timeline\n3. Synthesize: LLM generates formatted digest\n\nRequires an LLM provider to be configured (EXTRACTION_ENABLED=true).\nReturns 503 if the LLM provider is unavailable and 3+ memories are found.\n\n * @param body - Request body\n */\n async generateMemoryDigest(body: { query: string; recent?: string; topics?: string[]; conversationIds?: string[]; format?: 'structured' | 'narrative' | 'timeline' | 'status-report'; maxSources?: number; includeMemoryIds?: boolean }): Promise<HttpResponse<{ digest: string; metadata: DigestMetadata; sources: DigestSource[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/digest',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get version history for a named memory\n * Returns the full version chain for a named memory, ordered newest-first.\nWalks the SUPERSEDES chain from HEAD backwards.\n\n * @param name - Memory name (kebab-case, 2-64 chars)\n */\n async getNamedMemoryHistory(name: string): Promise<HttpResponse<{ name: string; versions: { version: number; id: string; content: string; effectiveState?: 'current' | 'superseded' | 'contradicted'; createdAt: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/named/{name}/history',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('name', {\n key: 'name',\n value: name,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Get a memory by name\n * Retrieve the current HEAD version of a named memory by its user-assigned name.\nReturns the memory with topic breakdown and entities, same as GET /api/memories/{id}.\n\n * @param name - Memory name (kebab-case, 2-64 chars)\n */\n async getMemoryByName(name: string): Promise<HttpResponse<{ data: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/named/{name}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('name', {\n key: 'name',\n value: name,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Update a named memory (create new version)\n * Creates a new version of a named memory. The name pointer moves to the new version,\nand a SUPERSEDES relationship links the new version to the old one.\nThe old version's effectiveState becomes 'superseded'.\n\n * @param name - Memory name (kebab-case, 2-64 chars)\n * @param body - Request body\n */\n async updateNamedMemory(name: string, body: { content: string; memoryType?: 'episodic' | 'semantic' | 'procedural'; context?: string; topics?: string[] }): Promise<HttpResponse<{ data?: Memory; meta?: { previousVersionId?: string; version?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PUT',\n path: '/api/memories/named/{name}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('name', {\n key: 'name',\n value: name,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find similar memories\n * Find memories that are semantically similar to the given memory.\n\nUses vector similarity search if embeddings are available for the memory.\nFalls back to topic-based similarity if embeddings are not available.\n\nThe `relationship` field in results indicates the method used:\n- `similar` - Found via vector/semantic similarity\n- `similar-by-topic` - Fallback using shared topics\n\n * @param id - The source memory ID\n * @param limit - Maximum number of similar memories to return\n */\n async getSimilarMemories(id: string, options?: { limit?: number }): Promise<HttpResponse<{ data?: RelatedMemoryResult[]; sourceMemory?: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/similar',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find memories from same conversation\n * Find other memories that belong to the same conversation as the given memory.\n\nReturns memories sorted chronologically (oldest first) to show the conversation flow.\nIf the memory doesn't belong to a conversation, returns an empty array.\n\n * @param id - The source memory ID\n * @param limit - Maximum number of conversation memories to return\n */\n async getConversationMemories(id: string, options?: { limit?: number }): Promise<HttpResponse<{ data?: RelatedMemoryResult[]; sourceMemory?: Memory; conversationId?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/conversation-memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find related memories by topics\n * Find memories that share topics with the given memory.\n\nThe score indicates the ratio of shared topics (1.0 = all topics match).\nResults are sorted by score (most related first), then by timestamp.\n\nIf the source memory has no topics, returns an empty array.\n\n * @param id - The source memory ID\n * @param limit - Maximum number of related memories to return\n */\n async getRelatedMemories(id: string, options?: { limit?: number }): Promise<HttpResponse<{ data?: { memory: { id: string; name?: string; version?: number; content: string; memoryType: 'episodic' | 'semantic' | 'procedural'; context?: string; topics?: string[]; timestamp?: string; eventTime?: string; validFrom?: string; validTo?: string; createdAt: string; updatedAt: string; confidenceScore?: number; confidenceBasis?: 'direct-statement' | 'repeated-mention' | 'single-mention' | 'hedged' | 'inference' | 'external-source' | 'contradicted'; effectiveState?: 'current' | 'superseded' | 'contradicted'; extractionStatus?: 'pending' | 'completed' | 'failed' | 'skipped'; extractionCompletedAt?: string; extractedTopicCount?: number; extractedFactCount?: number; extractedEntityCount?: number; userTopics?: string[]; extractedTopics?: string[]; entities?: { name: string; type: string; confidence?: number }[] }; score: number; relationship: string; sharedTopics?: string[] }[]; sourceMemory?: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/related',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get relationships for a memory\n * Retrieve all relationships for a memory.\n\n**Direction Options:**\n- **outgoing**: Relationships where this memory is the source\n- **incoming**: Relationships where this memory is the target\n- **both**: All relationships involving this memory\n\n * @param id - The memory ID\n * @param direction - Direction of relationships to retrieve\n */\n async getMemoryRelationships(id: string, options?: { direction?: 'outgoing' | 'incoming' | 'both' }): Promise<HttpResponse<{ data: MemoryRelationship[]; sourceMemoryId: string; direction: 'outgoing' | 'incoming' | 'both' }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/relationships',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.direction !== undefined) {\n request.addQueryParam('direction', {\n key: 'direction',\n value: options.direction,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create a relationship between memories\n * Create a relationship between the source memory and a target memory.\n\n**Relationship Types:**\n- **SUPERSEDES**: The source memory replaces/updates the target memory\n- **FOLLOWS**: The source memory follows chronologically from the target\n- **RESOLVES**: The source memory resolves an issue mentioned in the target\n- **CONTRADICTS**: The source memory contradicts the target memory\n- **REFERENCES**: The source memory references the target memory\n\nWhen creating SUPERSEDES or CONTRADICTS relationships, the target memory's\neffectiveState will be automatically updated.\n\n * @param id - The source memory ID\n * @param body - Request body\n */\n async createMemoryRelationship(id: string, body: { targetMemoryId: string; type: 'SUPERSEDES' | 'FOLLOWS' | 'RESOLVES' | 'CONTRADICTS' | 'REFERENCES'; confidence?: number; reason?: string }): Promise<HttpResponse<{ data?: MemoryRelationship }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/{id}/relationships',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete a relationship\n * Delete a specific relationship from a memory\n * @param id - The source memory ID\n * @param relationshipId - The relationship ID to delete\n */\n async deleteMemoryRelationship(id: string, relationshipId: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/memories/{id}/relationships/{relationshipId}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n request.addPathParam('relationshipId', {\n key: 'relationshipId',\n value: relationshipId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Get timeline context for a memory\n * Get the chronological context around a memory.\nReturns preceding and following memories ordered by event time.\nUseful for understanding the narrative flow.\n\n * @param id - The memory ID\n * @param before - Number of preceding memories to return\n * @param after - Number of following memories to return\n */\n async getMemoryTimeline(id: string, options?: { before?: number; after?: number }): Promise<HttpResponse<{ data?: { memory?: Memory; preceding?: Memory[]; following?: Memory[] } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/timeline',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.before !== undefined) {\n request.addQueryParam('before', {\n key: 'before',\n value: options.before,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.after !== undefined) {\n request.addQueryParam('after', {\n key: 'after',\n value: options.after,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Detect potential relationships for a memory\n * Analyze a memory and detect potential relationships with other memories.\nUses semantic similarity and pattern detection to suggest relationships.\n\nSet `autoCreate: true` to automatically create high-confidence relationships.\n\n * @param id - The memory ID\n * @param body - Request body\n */\n async detectMemoryRelationships(id: string, options?: { body?: { autoCreate?: boolean; minConfidence?: number } }): Promise<HttpResponse<{ data?: { targetMemoryId?: string; type?: 'SUPERSEDES' | 'FOLLOWS' | 'RESOLVES' | 'CONTRADICTS' | 'REFERENCES'; confidence?: number; reason?: string }[]; autoCreated?: boolean }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/{id}/detect-relationships',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * MonitoringService - Observability and metrics endpoints for production monitoring API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Observability and metrics endpoints for production monitoring\n */\nexport class MonitoringService extends BaseService {\n\n /**\n * Prometheus metrics endpoint\n * Returns Prometheus-formatted metrics for monitoring and observability.\nThis endpoint is public and requires no authentication.\nDesigned to be scraped by Prometheus at regular intervals.\n\n */\n async getMetrics(): Promise<HttpResponse<unknown>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/metrics',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n}","/**\n * NarrativesService - Narrative thread management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { NarrativeThread, NarrativeMemory } from '../models/types.js';\n\n/**\n * Narrative thread management endpoints\n */\nexport class NarrativesService extends BaseService {\n\n /**\n * List narrative threads\n * List all narrative threads for the authenticated user.\nNarratives group related memories into coherent storylines.\n\n * @param limit - Maximum number of narratives to return\n * @param offset - Number of narratives to skip\n * @param state - Filter by narrative state\n * @param topics - Comma-separated list of topics to filter by\n */\n async listNarratives(options?: { limit?: number; offset?: number; state?: 'open' | 'resolved' | 'reopened' | 'superseded'; topics?: string }): Promise<HttpResponse<{ data: NarrativeThread[]; pagination: { limit: number; offset: number; count: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/narratives',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.state !== undefined) {\n request.addQueryParam('state', {\n key: 'state',\n value: options.state,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.topics !== undefined) {\n request.addQueryParam('topics', {\n key: 'topics',\n value: options.topics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create a narrative thread\n * Create a new narrative thread starting from a root memory.\nNarratives help organize related memories into coherent storylines.\n\n * @param body - Request body\n */\n async createNarrative(body: { title: string; rootMemoryId: string; topics?: string[] }): Promise<HttpResponse<{ data: NarrativeThread }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/narratives',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get a narrative thread\n * Retrieve a specific narrative thread by ID\n * @param id - The narrative ID\n */\n async getNarrative(id: string): Promise<HttpResponse<{ data: NarrativeThread }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/narratives/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Delete a narrative thread\n * Delete a narrative thread.\nThis does not delete the associated memories, only the narrative structure.\n\n * @param id - The narrative ID\n */\n async deleteNarrative(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/narratives/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Update a narrative thread\n * Update a narrative thread's title, topics, or state.\nUse this to resolve, reopen, or modify narratives.\n\n * @param id - The narrative ID\n * @param body - Request body\n */\n async updateNarrative(id: string, body: { title?: string; state?: 'open' | 'resolved' | 'reopened' | 'superseded'; resolutionMemoryId?: string; topics?: string[] }): Promise<HttpResponse<{ data: NarrativeThread }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/narratives/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get narrative timeline\n * Get all memories in a narrative, ordered by their position in the narrative.\nEach memory includes its position and effective state.\n\n * @param id - The narrative ID\n * @param limit - Maximum number of memories to return\n * @param offset - Number of memories to skip\n */\n async getNarrativeTimeline(id: string, options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data: NarrativeMemory[]; narrative: NarrativeThread; pagination: { limit: number; offset: number; total: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/narratives/{id}/timeline',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Add a memory to a narrative\n * Add an existing memory to a narrative thread.\nOptionally specify a position to insert the memory at.\n\n * @param id - The narrative ID\n * @param body - Request body\n */\n async addMemoryToNarrative(id: string, body: { memoryId: string; position?: number }): Promise<HttpResponse<{ data: NarrativeThread }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/narratives/{id}/memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Remove a memory from a narrative\n * Remove a memory from a narrative thread.\nThis does not delete the memory itself, only removes it from the narrative.\n\n * @param id - The narrative ID\n * @param memoryId - The memory ID to remove\n */\n async removeMemoryFromNarrative(id: string, memoryId: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/narratives/{id}/memories/{memoryId}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n request.addPathParam('memoryId', {\n key: 'memoryId',\n value: memoryId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n}","/**\n * SystemService - System health, monitoring, and configuration endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * System health, monitoring, and configuration endpoints\n */\nexport class SystemService extends BaseService {\n\n /**\n * Get OpenAPI specification\n * Returns the OpenAPI 3.x specification for the entire API. This endpoint is used by CI/CD to sync the API Gateway.\n * @param noCache - Bypass cache and regenerate specification\n */\n async getOpenApiSpec(options?: { noCache?: '1' | 'true' }): Promise<HttpResponse<Record<string, unknown>>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/openapi.json',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.noCache !== undefined) {\n request.addQueryParam('noCache', {\n key: 'noCache',\n value: options.noCache,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get system health status\n * Get the current health status of the system including database connectivity\n */\n async getSystemHealth(): Promise<HttpResponse<{ data?: { status?: 'healthy' | 'unhealthy'; database?: Record<string, unknown>; uptime?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/system/health',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Get context status\n * Get database statistics and context information\n */\n async getContextStatus(): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/system/context/status',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Get feature flags\n * Get all feature flags for the authenticated user\n */\n async getFeatureFlags(): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/system/feature-flags',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Evaluate feature flag\n * Evaluate a specific feature flag for the authenticated user\n * @param body - Request body\n */\n async evaluateFeatureFlag(body: { flagName: string; context?: Record<string, unknown> }): Promise<HttpResponse<{ data?: { enabled?: boolean; flagName?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/system/feature-flags/evaluate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Analyze memory quality distribution\n * Analyze the quality distribution of memories for the authenticated user\n * @param includeDetails - Include detailed pruning candidate information\n * @param minQualityThreshold - Minimum quality threshold for pruning candidates (default 0.4)\n */\n async analyzeMemoryQuality(options?: { includeDetails?: boolean; minQualityThreshold?: number }): Promise<HttpResponse<{ data?: { totalMemories?: number; qualityDistribution?: { high?: number; medium?: number; low?: number }; averageQuality?: number; pruningCandidates?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/system/memory/quality',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.includeDetails !== undefined) {\n request.addQueryParam('includeDetails', {\n key: 'includeDetails',\n value: options.includeDetails,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.minQualityThreshold !== undefined) {\n request.addQueryParam('minQualityThreshold', {\n key: 'minQualityThreshold',\n value: options.minQualityThreshold,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Prune low-quality memories\n * Prune (soft delete) low-quality memories for the authenticated user\n * @param body - Request body\n */\n async pruneMemories(options?: { body?: { targetReduction?: number; minQualityThreshold?: number; preserveRecent?: boolean; recentDaysToPreserve?: number; dryRun?: boolean } }): Promise<HttpResponse<{ data?: { prunedCount?: number; prunedIds?: string[]; dryRun?: boolean } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/system/memory/prune',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * PatternsService - Pattern detection and behavioral analysis endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Pattern } from '../models/types.js';\n\n/**\n * Pattern detection and behavioral analysis endpoints\n */\nexport class PatternsService extends BaseService {\n\n /**\n * List patterns\n * List all patterns for the authenticated user\n * @param limit - Maximum number of patterns to return\n * @param offset - Number of patterns to skip\n */\n async listPatterns(options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data?: Pattern[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/patterns',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Compile patterns\n * Compile patterns from user's memories\n * @param body - Request body\n */\n async compilePatterns(options?: { body?: { minOccurrences?: number; timeWindow?: string } }): Promise<HttpResponse<{ data?: Pattern[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/compile',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Detect behavioral patterns\n * Run pattern detection algorithms to identify recurring behavioral patterns\n * @param body - Request body\n */\n async detectPatterns(options?: { body?: { contextFilter?: string; timeframeStart?: string; timeframeEnd?: string; minConfidence?: number; maxResults?: number; autoStore?: boolean } }): Promise<HttpResponse<{ data?: { detectedPatterns?: Pattern[]; count?: number; stored?: number; confidence?: { average?: number; highest?: number } } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/detect',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Analyze pattern trends\n * Analyze pattern trends, correlations, and generate insights\n * @param body - Request body\n */\n async analyzePatterns(options?: { body?: { timeRange?: number; groupBy?: 'type' | 'context' | 'confidence'; includeDetails?: boolean } }): Promise<HttpResponse<{ data?: { analysis?: { totalPatterns?: number; recentPatterns?: number; trends?: Record<string, unknown>; insights?: string[]; recommendations?: string[] }; timeRange?: number; analyzedAt?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/analyze',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Update pattern\n * Update an existing pattern with partial data\n * @param id - The pattern ID\n * @param body - Request body\n */\n async updatePattern(id: string, body: { name?: string; description?: string; confidence?: number; metadata?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Pattern }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/patterns/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Record pattern feedback\n * Record feedback on a pattern\n * @param body - Request body\n */\n async recordPatternFeedback(body: { patternId: string; feedback: string }): Promise<HttpResponse<{ data?: Pattern }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/feedback',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * BehaviorService - Behavioral pattern tracking and state management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Behavioral pattern tracking and state management endpoints\n */\nexport class BehaviorService extends BaseService {\n\n /**\n * Get behavioral state\n * Get current behavioral state for the authenticated user\n */\n async getBehavioralState(): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/patterns/behavior/state',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Update behavioral state\n * Update or mutate behavioral state\n * @param body - Request body\n */\n async updateBehavioralState(options?: { body?: { state?: Record<string, unknown>; mutations?: Record<string, unknown> } }): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/behavior/state',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * TopicsService - Topic detection, clustering, and management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Topic, Community } from '../models/types.js';\n\n/**\n * Topic detection, clustering, and management endpoints\n */\nexport class TopicsService extends BaseService {\n\n /**\n * List topics\n * List all topics with pagination\n * @param limit - Maximum number of topics to return\n * @param offset - Number of topics to skip\n */\n async listTopics(options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data?: Topic[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/topics',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get topic by ID\n * Retrieve a specific topic by its ID\n * @param id - The topic ID\n */\n async getTopicById(id: string): Promise<HttpResponse<{ data?: Topic }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/topics/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Merge topics\n * Merge two topics into one\n * @param body - Request body\n */\n async mergeTopics(body: { sourceTopicId: string; targetTopicId: string }): Promise<HttpResponse<{ data?: Topic }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/merge',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Discover related topics\n * Discover topics related to a given topic\n * @param body - Request body\n */\n async discoverRelatedTopics(body: { topicId: string; limit?: number }): Promise<HttpResponse<{ data?: Topic[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/discover-related',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Calculate topic similarity\n * Calculate similarity score between two topics\n * @param body - Request body\n */\n async calculateTopicSimilarity(body: { topicId1: string; topicId2: string }): Promise<HttpResponse<{ data?: { similarity?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/similarity',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find similar topics\n * Find topics similar to a given topic\n * @param body - Request body\n */\n async findSimilarTopics(body: { topicId: string; threshold?: number; limit?: number }): Promise<HttpResponse<{ data?: { topic?: Topic; similarity?: number }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/similar',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Cluster topics\n * Cluster topics using community detection algorithms\n * @param body - Request body\n */\n async clusterTopics(options?: { body?: { minClusterSize?: number } }): Promise<HttpResponse<{ data?: { clusters?: Record<string, unknown>[]; clusterCount?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/cluster',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Detect communities\n * Detect communities in the topic graph using specified algorithm\n * @param body - Request body\n */\n async detectCommunities(options?: { body?: { algorithm?: string } }): Promise<HttpResponse<{ data?: { communities?: Community[]; communityCount?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/detect-communities',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Search topics\n * Search topics by query string using fulltext search\n * @param body - Request body\n */\n async searchTopics(body: { query: string; limit?: number; offset?: number }): Promise<HttpResponse<{ data?: Record<string, unknown>[]; total?: number; limit?: number; offset?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * UsersService - User management and profile endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { User, UserUsage, Memory, Conversation, Fact, Pattern } from '../models/types.js';\n\n/**\n * User management and profile endpoints\n */\nexport class UsersService extends BaseService {\n\n /**\n * Sync user from WorkOS\n * Called by the customer portal after WorkOS authentication.\nCreates a new user if they don't exist, or updates their profile if they do.\nThis is the main entry point for user provisioning.\nWhen the invite gate is closed and a new user is created, the inviteCode\nis redeemed atomically to track which code was used for registration.\n\n * @param body - Request body\n */\n async syncUser(body: { workosId: string; email: string; firstName?: string; lastName?: string; profilePictureUrl?: string; inviteCode?: string }): Promise<HttpResponse<{ data?: User; created?: boolean }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/users/sync',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get current user\n * Get the currently authenticated user's profile and usage information\n */\n async getCurrentUser(): Promise<HttpResponse<{ data?: User; usage?: UserUsage }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/users/me',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Update current user\n * Update the currently authenticated user's profile\n * @param body - Request body\n */\n async updateCurrentUser(options?: { body?: { firstName?: string; lastName?: string; profilePictureUrl?: string } }): Promise<HttpResponse<{ data?: User }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/users/me',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get current user's usage\n * Get the currently authenticated user's memory usage statistics\n */\n async getCurrentUserUsage(): Promise<HttpResponse<{ data?: UserUsage }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/users/me/usage',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Export all user data\n * Export all user data as a JSON archive. Includes profile, memories,\nconversations, facts, and patterns. Supports GDPR Article 20\n(right to data portability). Sensitive fields (Stripe customer ID,\nWorkOS ID, embeddings) are excluded.\n\n */\n async exportUserData(): Promise<HttpResponse<{ exportVersion?: string; exportedAt?: string; counts?: { memories?: number; conversations?: number; facts?: number; patterns?: number }; profile?: Record<string, unknown>; memories?: Memory[]; conversations?: Conversation[]; facts?: Fact[]; patterns?: Pattern[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/users/me/export',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Initiate account deletion\n * Schedule the current user's account for deletion after a 7-day grace period.\nRequires email confirmation. Immediately revokes API keys and cancels\nany active subscription. The account enters read-only mode.\n\n * @param body - Request body\n */\n async initiateAccountDeletion(body: { confirmationEmail: string }): Promise<HttpResponse<{ data?: User; message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/users/me/deletion',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Cancel account deletion\n * Cancel a pending account deletion during the grace period.\nNote: Previously revoked API keys are not restored — new keys must be created.\nStripe subscription may need manual reactivation via the billing portal.\n\n */\n async cancelAccountDeletion(): Promise<HttpResponse<{ data?: User; message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/users/me/deletion',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Get user by ID\n * Get a user by their internal ID (admin only)\n * @param id - \n */\n async getUserById(id: string): Promise<HttpResponse<{ data?: User }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/users/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n}","/**\n * HTTP types for the SDK.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { ZodType } from 'zod';\n\n/** HTTP methods supported by the SDK */\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';\n\n/** OpenAPI parameter serialization styles */\nexport enum SerializationStyle {\n SIMPLE = 'simple',\n LABEL = 'label',\n MATRIX = 'matrix',\n FORM = 'form',\n SPACE_DELIMITED = 'space_delimited',\n PIPE_DELIMITED = 'pipe_delimited',\n DEEP_OBJECT = 'deep_object',\n NONE = 'none',\n}\n\n/** Content types */\nexport enum ContentType {\n Json = 'json',\n Xml = 'xml',\n Pdf = 'pdf',\n Image = 'image',\n File = 'file',\n Binary = 'binary',\n FormUrlEncoded = 'form',\n Text = 'text',\n MultipartFormData = 'multipartFormData',\n EventStream = 'eventStream',\n NoContent = 'noContent',\n}\n\n/** HTTP request structure */\nexport interface HttpRequest {\n baseUrl: string;\n method: HttpMethod;\n path: string;\n headers: Map<string, unknown>;\n body?: BodyInit;\n abortSignal?: AbortSignal;\n queryParams: Map<string, unknown>;\n pathParams: Map<string, unknown>;\n}\n\n/** HTTP response metadata */\nexport interface HttpMetadata {\n status: number;\n statusText: string;\n headers: Record<string, string>;\n}\n\n/** HTTP response */\nexport interface HttpResponse<T = unknown> {\n data?: T;\n metadata: HttpMetadata;\n raw: ArrayBuffer;\n}\n\n/** HTTP error response */\nexport interface HttpError {\n error: string;\n metadata: HttpMetadata;\n}\n\n/** SDK configuration */\nexport interface SdkConfig {\n baseUrl?: string;\n environment?: Environment;\n timeoutMs?: number;\n token?: string;\n retry?: RetryOptions;\n validation?: ValidationOptions;\n}\n\n/** Available environments */\nexport enum Environment {\n DEFAULT = 'http://localhost:3000',\n}\n\n/** Retry options */\nexport interface RetryOptions {\n attempts: number;\n delayMs?: number;\n maxDelayMs?: number;\n jitterMs?: number;\n backoffFactor?: number;\n httpCodesToRetry?: number[];\n httpMethodsToRetry?: string[];\n}\n\n/** Validation options */\nexport interface ValidationOptions {\n responseValidation?: boolean;\n}\n\n/** Request parameter with serialization info */\nexport interface RequestParameter {\n key: string | undefined;\n value: unknown;\n explode: boolean;\n encode: boolean;\n style: SerializationStyle;\n isLimit: boolean;\n isOffset: boolean;\n isCursor: boolean;\n}\n\n/** Response definition for validation */\nexport interface ResponseDefinition {\n schema: ZodType;\n contentType: ContentType;\n status: number;\n}\n\n/** Error definition */\nexport interface ErrorDefinition {\n error: new (...args: any[]) => Error;\n contentType: ContentType;\n status: number;\n}\n\n/** Hook interface for request/response interception */\nexport interface Hook {\n beforeRequest(request: HttpRequest, params: Map<string, string>): Promise<HttpRequest>;\n afterResponse(request: HttpRequest, response: HttpResponse<any>, params: Map<string, string>): Promise<HttpResponse<any>>;\n onError(request: HttpRequest, response: HttpResponse<any>, params: Map<string, string>): Promise<HttpError>;\n}\n","/**\n * Zod schemas for API models.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\n\nexport const error = z.object({\n /** Error message */\n error: z.string(),\n});\n\nexport const pagination = z.object({\n /** Maximum number of items per page */\n limit: z.number().min(1),\n /** Number of items to skip */\n offset: z.number().min(0),\n /** Total number of items */\n count: z.number().min(0),\n});\n\nexport const memory = z.object({\n /** Unique memory identifier */\n id: z.string(),\n /** Optional human-readable name for deterministic retrieval. Only the HEAD version carries the name. */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/).optional(),\n /** Version number for named memories (1 for first version, increments on update) */\n version: z.number().min(1).optional(),\n /** Memory content */\n content: z.string(),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']),\n /** Context or domain of the memory */\n context: z.string().optional(),\n /** Associated topics */\n topics: z.array(z.string()).optional(),\n /** System ingestion timestamp (when the system learned about this) */\n timestamp: z.string().datetime().optional(),\n /** Event time (when the event actually occurred in reality) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time (when this fact becomes valid) */\n validFrom: z.string().datetime().optional(),\n /** Validity end time (when this fact expires, null means never expires) */\n validTo: z.string().datetime().nullable().optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n /** Confidence score (0-1) for this memory's accuracy */\n confidenceScore: z.number().min(0).max(1).optional(),\n /** Basis for the confidence score */\n confidenceBasis: z.enum(['direct-statement', 'repeated-mention', 'single-mention', 'hedged', 'inference', 'external-source', 'contradicted']).optional(),\n /** Effective state of the memory in the narrative */\n effectiveState: z.enum(['current', 'superseded', 'contradicted']).optional(),\n /** Status of automatic content extraction */\n extractionStatus: z.enum(['pending', 'completed', 'failed', 'skipped']).optional(),\n /** When extraction was completed */\n extractionCompletedAt: z.string().datetime().optional(),\n /** Number of topics extracted from content */\n extractedTopicCount: z.number().min(0).optional(),\n /** Number of facts extracted from content */\n extractedFactCount: z.number().min(0).optional(),\n /** Number of entities extracted from content */\n extractedEntityCount: z.number().min(0).optional(),\n /** Topics explicitly provided by the user */\n userTopics: z.array(z.string()).optional(),\n /** Topics automatically extracted from content */\n extractedTopics: z.array(z.string()).optional(),\n /** Entities extracted from memory content */\n entities: z.array(z.object({\n /** Entity name */\n name: z.string(),\n /** Entity type */\n type: z.string(),\n /** Extraction confidence */\n confidence: z.number().min(0).max(1).optional(),\n})).optional(),\n});\n\nexport const createMemoryRequest = z.object({\n /** Conversation ID - use \"NEW\" to create a new conversation or provide existing conversation ID */\n conversationId: z.string().min(1),\n /** Optional human-readable name for deterministic retrieval. Must be unique per user. */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/).optional(),\n /** Memory content */\n content: z.string().min(1).max(50000),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Role (MCP protocol compatibility) */\n role: z.enum(['user', 'assistant', 'system']).optional(),\n /** Context or domain */\n context: z.string().max(200).optional(),\n /** Associated topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n /** Event time (when the event actually occurred in reality, ISO 8601 format) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time (when this fact becomes valid, ISO 8601 format) */\n validFrom: z.string().datetime().optional(),\n /** Validity end time (when this fact expires, ISO 8601 format, omit for never expires) */\n validTo: z.string().datetime().optional(),\n});\n\nexport const updateMemoryRequest = z.object({\n /** Updated memory content */\n content: z.string().min(1).max(50000).optional(),\n /** Assign or remove a name. Set to a valid name to assign, empty string to remove. */\n name: z.union([z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/), z.enum([''])]).optional(),\n /** Updated memory type */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Updated context or domain */\n context: z.string().max(200).optional(),\n /** Updated topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n});\n\nexport const createMemoryResponseMeta = z.object({\n /** Conversation ID (actual ID if \"NEW\" was provided) */\n conversationId: z.string(),\n /** Auto-assigned session ID based on 90-minute gap detection */\n sessionId: z.string(),\n /** Whether a new session was created (true) or existing session was reused (false) */\n sessionCreated: z.boolean(),\n /** Whether a new conversation was created (true if conversationId was \"NEW\") */\n conversationCreated: z.boolean(),\n});\n\n/**\n * Response from creating a memory, includes the memory and session/conversation metadata\n */\nexport const createMemoryResponse = z.lazy(() => z.object({\n data: memory,\n meta: createMemoryResponseMeta,\n}));\n\nexport const relatedMemoryResult = z.object({\n memory: z.object({\n /** Unique memory identifier */\n id: z.string(),\n /** Optional human-readable name for deterministic retrieval. Only the HEAD version carries the name. */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/).optional(),\n /** Version number for named memories (1 for first version, increments on update) */\n version: z.number().min(1).optional(),\n /** Memory content */\n content: z.string(),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']),\n /** Context or domain of the memory */\n context: z.string().optional(),\n /** Associated topics */\n topics: z.array(z.string()).optional(),\n /** System ingestion timestamp (when the system learned about this) */\n timestamp: z.string().datetime().optional(),\n /** Event time (when the event actually occurred in reality) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time (when this fact becomes valid) */\n validFrom: z.string().datetime().optional(),\n /** Validity end time (when this fact expires, null means never expires) */\n validTo: z.string().datetime().nullable().optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n /** Confidence score (0-1) for this memory's accuracy */\n confidenceScore: z.number().min(0).max(1).optional(),\n /** Basis for the confidence score */\n confidenceBasis: z.enum(['direct-statement', 'repeated-mention', 'single-mention', 'hedged', 'inference', 'external-source', 'contradicted']).optional(),\n /** Effective state of the memory in the narrative */\n effectiveState: z.enum(['current', 'superseded', 'contradicted']).optional(),\n /** Status of automatic content extraction */\n extractionStatus: z.enum(['pending', 'completed', 'failed', 'skipped']).optional(),\n /** When extraction was completed */\n extractionCompletedAt: z.string().datetime().optional(),\n /** Number of topics extracted from content */\n extractedTopicCount: z.number().min(0).optional(),\n /** Number of facts extracted from content */\n extractedFactCount: z.number().min(0).optional(),\n /** Number of entities extracted from content */\n extractedEntityCount: z.number().min(0).optional(),\n /** Topics explicitly provided by the user */\n userTopics: z.array(z.string()).optional(),\n /** Topics automatically extracted from content */\n extractedTopics: z.array(z.string()).optional(),\n /** Entities extracted from memory content */\n entities: z.array(z.object({\n /** Entity name */\n name: z.string(),\n /** Entity type */\n type: z.string(),\n /** Extraction confidence */\n confidence: z.number().min(0).max(1).optional(),\n})).optional(),\n}),\n /** Relevance score (0-1). For similar: semantic similarity. For related: topic overlap ratio. For conversation: position score. */\n score: z.number().min(0).max(1),\n /** Type of relationship: similar, similar-by-topic, conversation, or topic */\n relationship: z.string(),\n /** Topics shared with the source memory (only for topic relationship) */\n sharedTopics: z.array(z.string()).optional(),\n});\n\n/**\n * Response from getting a memory by ID\n */\nexport const getMemoryResponse = z.lazy(() => z.object({\n data: memory,\n}));\n\nexport const updateNamedMemoryRequest = z.object({\n /** New content for the named memory version */\n content: z.string().min(1).max(50000),\n /** Type of memory (defaults to previous version's type) */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Context or domain */\n context: z.string().max(200).optional(),\n /** Associated topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n});\n\nexport const namedMemoryHistoryResponse = z.object({\n /** Human-readable name for deterministic retrieval (kebab-case, 2-64 chars) */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/),\n versions: z.array(z.object({\n /** Version number */\n version: z.number().min(1),\n /** Memory ID for this version */\n id: z.string(),\n /** Memory content at this version */\n content: z.string(),\n /** Effective state — HEAD version is 'current', older versions are 'superseded' */\n effectiveState: z.enum(['current', 'superseded', 'contradicted']).optional(),\n /** When this version was created */\n createdAt: z.string().datetime(),\n})),\n});\n\nexport const batchGetMemoriesRequest = z.object({\n /** Array of memory IDs to retrieve */\n ids: z.array(z.string().uuid()).min(1).max(100),\n});\n\nexport const batchGetMemoriesMeta = z.object({\n /** Number of IDs requested */\n requested: z.number(),\n /** Number of memories found */\n found: z.number(),\n /** IDs that were not found */\n missing: z.array(z.string()),\n});\n\n/**\n * Response from batch memory retrieval\n */\nexport const batchGetMemoriesResponse = z.lazy(() => z.object({\n data: z.array(memory),\n meta: batchGetMemoriesMeta,\n}));\n\nexport const graphRAGQueryRequest = z.object({\n /** GraphRAG query string */\n query: z.string().min(1),\n /** Maximum graph traversal depth (alias: depth) */\n maxDepth: z.number().min(1).max(5).optional(),\n /** Graph traversal depth (deprecated, use maxDepth) */\n depth: z.number().min(1).max(5).optional(),\n /** Maximum number of results to return */\n limit: z.number().min(1).max(100).optional(),\n /** Include relationship data in response */\n includeRelationships: z.boolean().optional(),\n});\n\nexport const graphRAGQueryResponse = z.lazy(() => z.object({\n /** Unique identifier for this query execution */\n queryId: z.string(),\n /** Array of query results with graph context */\n results: z.array(z.object({\n memory: memory,\n /** Relevance score from full-text search */\n score: z.number(),\n /** Topics associated with this memory */\n topics: z.array(z.object({\n\n}).catchall(z.unknown().nullable())),\n /** Entities mentioned in this memory */\n entities: z.array(z.object({\n\n}).catchall(z.unknown().nullable())),\n /** Related memories through shared topics */\n relatedMemories: z.array(z.object({\n\n}).catchall(z.unknown().nullable())),\n})),\n /** Query execution metadata */\n metadata: z.object({\n /** Original query string */\n query: z.string(),\n /** Graph traversal depth used */\n depth: z.number(),\n /** Maximum number of results returned */\n limit: z.number(),\n /** Query execution timestamp */\n timestamp: z.string().datetime(),\n}),\n}));\n\nexport const conversation = z.object({\n /** Unique conversation identifier */\n id: z.string(),\n /** Conversation title */\n title: z.string(),\n /** Conversation summary */\n summary: z.string().nullable(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const createConversationRequest = z.object({\n /** Conversation title */\n title: z.string().min(1),\n /** Optional conversation summary */\n summary: z.string().optional(),\n});\n\nexport const apiKey = z.object({\n /** Unique API key identifier */\n id: z.string(),\n /** Human-readable label for the API key */\n label: z.string(),\n /** API key prefix for identification */\n prefix: z.string(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Expiration timestamp (null if never expires) */\n expiresAt: z.string().datetime().nullable(),\n /** Last usage timestamp (null if never used) */\n lastUsedAt: z.string().datetime().nullable(),\n});\n\nexport const topic = z.object({\n /** Topic name */\n name: z.string(),\n /** Number of memories associated with this topic */\n count: z.number().min(0),\n});\n\nexport const pattern = z.object({\n /** Unique pattern identifier */\n id: z.string(),\n /** Pattern type */\n type: z.string(),\n /** Pattern description */\n description: z.string(),\n /** Confidence score (0-1) */\n confidence: z.number().min(0).max(1),\n});\n\nexport const serviceCheck = z.object({\n /** Service status */\n status: z.enum(['up', 'down']),\n /** Response time in milliseconds */\n responseTime: z.number().optional(),\n});\n\nexport const healthCheck = z.object({\n /** Overall system health status */\n status: z.enum(['healthy', 'degraded', 'unhealthy']),\n /** Health check timestamp */\n timestamp: z.string().datetime(),\n /** API version */\n version: z.string(),\n /** System uptime in seconds */\n uptime: z.number(),\n /** Individual service health checks */\n checks: z.object({\n\n}).catchall(serviceCheck),\n});\n\nexport const searchRequest = z.object({\n /** Search query */\n query: z.string().min(1).max(2000),\n /** Content filtering mode (defaults to unified) */\n mode: z.enum(['unified', 'content', 'facts']).optional(),\n /** Search algorithm: hybrid (combined, default), semantic (vector), or keyword (fulltext). */\n searchMethod: z.enum(['keyword', 'semantic', 'hybrid']).optional(),\n /** Maximum number of results (defaults to 20) */\n limit: z.number().min(1).max(100).optional(),\n /** Offset for pagination (defaults to 0) */\n offset: z.number().min(0).optional(),\n /** Weight for vector (semantic) results in hybrid search (0-1, defaults to 0.7) */\n vectorWeight: z.number().min(0).max(1).optional(),\n /** Weight for fulltext (keyword) results in hybrid search (0-1, defaults to 0.3) */\n fulltextWeight: z.number().min(0).max(1).optional(),\n /** Minimum similarity threshold for semantic search (0-1, defaults to 0.5) */\n threshold: z.number().min(0).max(1).optional(),\n /** If true, include detailed explanation of how each result was matched */\n explain: z.boolean().optional(),\n /** Point-in-time query: show what the system knew at this time (ISO 8601 format) */\n asOfTime: z.string().datetime().optional(),\n /** Validity query: show facts that were valid at this time (ISO 8601 format) */\n validAtTime: z.string().datetime().optional(),\n /** Event time range start (ISO 8601 format) */\n eventTimeFrom: z.string().datetime().optional(),\n /** Event time range end (ISO 8601 format) */\n eventTimeTo: z.string().datetime().optional(),\n /** Ingestion time range start (ISO 8601 format) */\n ingestionTimeFrom: z.string().datetime().optional(),\n /** Ingestion time range end (ISO 8601 format) */\n ingestionTimeTo: z.string().datetime().optional(),\n /** Include expired facts (defaults to false) */\n includeExpired: z.boolean().optional(),\n /** Temporal query mode: 'current' (only valid now), 'historical' (as of a point in time), 'evolution' (chronological) */\n temporalMode: z.enum(['current', 'historical', 'evolution']).optional(),\n /** Filter by topics - returns memories that have ANY of the specified topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n /** Filter by memory type */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Filter by conversation ID */\n conversationId: z.string().optional(),\n /** Include topics associated with matched memories (defaults to false for performance) */\n includeTopics: z.boolean().optional(),\n /** Include entities mentioned in matched memories (defaults to false for performance) */\n includeEntities: z.boolean().optional(),\n /** Include facts extracted from matched memories (defaults to false for performance) */\n includeFacts: z.boolean().optional(),\n /** Filter entities by type (e.g., PERSON, TECHNOLOGY, PROJECT) */\n entityTypes: z.array(z.string().max(50)).max(20).optional(),\n});\n\nexport const entity = z.object({\n /** Entity name */\n name: z.string().optional(),\n /** Entity type */\n type: z.string().optional(),\n});\n\nexport const topicReference = z.object({\n /** Topic unique identifier */\n id: z.string().uuid(),\n /** Topic name */\n name: z.string(),\n /** When the topic was created */\n createdAt: z.string().datetime().optional(),\n});\n\nexport const searchResult = z.lazy(() => z.object({\n memory: z.object({\n /** Unique memory identifier */\n id: z.string(),\n /** Optional human-readable name for deterministic retrieval. Only the HEAD version carries the name. */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/).optional(),\n /** Version number for named memories (1 for first version, increments on update) */\n version: z.number().min(1).optional(),\n /** Memory content */\n content: z.string(),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']),\n /** Context or domain of the memory */\n context: z.string().optional(),\n /** Associated topics */\n topics: z.array(z.string()).optional(),\n /** System ingestion timestamp (when the system learned about this) */\n timestamp: z.string().datetime().optional(),\n /** Event time (when the event actually occurred in reality) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time (when this fact becomes valid) */\n validFrom: z.string().datetime().optional(),\n /** Validity end time (when this fact expires, null means never expires) */\n validTo: z.string().datetime().nullable().optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n /** Confidence score (0-1) for this memory's accuracy */\n confidenceScore: z.number().min(0).max(1).optional(),\n /** Basis for the confidence score */\n confidenceBasis: z.enum(['direct-statement', 'repeated-mention', 'single-mention', 'hedged', 'inference', 'external-source', 'contradicted']).optional(),\n /** Effective state of the memory in the narrative */\n effectiveState: z.enum(['current', 'superseded', 'contradicted']).optional(),\n /** Status of automatic content extraction */\n extractionStatus: z.enum(['pending', 'completed', 'failed', 'skipped']).optional(),\n /** When extraction was completed */\n extractionCompletedAt: z.string().datetime().optional(),\n /** Number of topics extracted from content */\n extractedTopicCount: z.number().min(0).optional(),\n /** Number of facts extracted from content */\n extractedFactCount: z.number().min(0).optional(),\n /** Number of entities extracted from content */\n extractedEntityCount: z.number().min(0).optional(),\n /** Topics explicitly provided by the user */\n userTopics: z.array(z.string()).optional(),\n /** Topics automatically extracted from content */\n extractedTopics: z.array(z.string()).optional(),\n /** Entities extracted from memory content */\n entities: z.array(z.object({\n /** Entity name */\n name: z.string(),\n /** Entity type */\n type: z.string(),\n /** Extraction confidence */\n confidence: z.number().min(0).max(1).optional(),\n})).optional(),\n}),\n /** Relevance score for this result */\n score: z.number(),\n /** Entities mentioned in this memory */\n entities: z.array(entity).optional(),\n /** Topics associated with this memory */\n topics: z.array(topicReference).optional(),\n /** Facts extracted from this memory */\n facts: z.array(z.object({\n /** Fact subject */\n subject: z.string(),\n /** Fact predicate */\n predicate: z.string(),\n /** Fact object */\n object: z.string(),\n /** Confidence */\n confidence: z.number().min(0).max(1).optional(),\n})).optional(),\n /** Search method used to find this result */\n searchMethod: z.string().optional(),\n /** Combined RRF score for hybrid search */\n hybridScore: z.number().optional(),\n /** Vector similarity score (0-1) */\n vectorScore: z.number().optional(),\n /** Rank in vector search results */\n vectorRank: z.number().nullable().optional(),\n /** Fulltext search score */\n fulltextScore: z.number().optional(),\n /** Rank in fulltext search results */\n fulltextRank: z.number().nullable().optional(),\n /** Detailed explanation of the match (only when explain=true) */\n explanation: z.object({\n /** Human-readable explanation of why this result matched */\n matchReason: z.string(),\n /** Terms from the query that matched (for keyword search) */\n matchedTerms: z.array(z.string()).optional(),\n /** Cosine similarity score for semantic match (0-1) */\n semanticSimilarity: z.number().optional(),\n /** Factors that contributed to the match */\n contributingFactors: z.array(z.string()).optional(),\n}).optional(),\n}));\n\n/**\n * Temporal query metadata (null for semantic/hybrid search)\n */\nexport const temporalMetadata = z.object({\n /** Temporal query mode used */\n temporalMode: z.string(),\n /** Point-in-time timestamp */\n asOfTime: z.string().datetime().nullable(),\n /** Validity timestamp */\n validAtTime: z.string().datetime().nullable(),\n /** Event time range filter */\n eventTimeRange: z.object({\n from: z.string().datetime().nullable(),\n to: z.string().datetime().nullable(),\n}).nullable(),\n /** Ingestion time range filter */\n ingestionTimeRange: z.object({\n from: z.string().datetime().nullable(),\n to: z.string().datetime().nullable(),\n}).nullable(),\n /** Whether expired facts are included */\n includeExpired: z.boolean(),\n /** Whether temporal fields are included in results */\n temporalFieldsIncluded: z.boolean(),\n}).nullable();\n\nexport const searchResponse = z.lazy(() => z.object({\n /** Search results with metadata */\n data: z.array(searchResult),\n /** Search method used for this query */\n searchMethod: z.string().optional(),\n pagination: z.object({\n /** Maximum number of items per page */\n limit: z.number().min(1),\n /** Number of items to skip */\n offset: z.number().min(0),\n /** Total number of items */\n count: z.number().min(0),\n}),\n /** Temporal query metadata (null for semantic/hybrid search) */\n temporalMetadata: temporalMetadata,\n}));\n\nexport const fact = z.object({\n /** Unique identifier for the fact */\n id: z.string(),\n /** User ID who owns this fact */\n userId: z.string(),\n /** The subject of the fact (what the fact is about) */\n subject: z.string(),\n /** The relationship or property type */\n predicate: z.string(),\n /** The value or target of the relationship */\n object: z.string(),\n /** Fact name/label (deprecated, use subject) */\n name: z.string().optional(),\n /** Entity type (deprecated, use predicate) */\n type: z.string().optional(),\n /** Fact description (deprecated) */\n description: z.string().nullable().optional(),\n /** Confidence score (0-1) */\n confidence: z.number().min(0).max(1).optional(),\n /** ID of the memory this fact was extracted from */\n sourceMemoryId: z.string().uuid().optional(),\n /** When this fact was extracted */\n extractedAt: z.string().datetime().optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const createFactRequest = z.object({\n /** Fact subject (entity name) */\n subject: z.string().min(1).max(500),\n /** Relationship type */\n predicate: z.string().min(1).max(200),\n /** Fact object (related entity) */\n object: z.string().min(1).max(500),\n});\n\nexport const updateFactRequest = z.object({\n /** Fact subject (entity name) */\n subject: z.string().min(1).max(500).optional(),\n /** Relationship type */\n predicate: z.string().min(1).max(200).optional(),\n /** Fact object (related entity) */\n object: z.string().min(1).max(500).optional(),\n /** Confidence score (0-1) */\n confidence: z.number().min(0).max(1).optional(),\n});\n\nexport const factSearchRequest = z.object({\n /** Search query string */\n query: z.string().min(1),\n /** Maximum number of results to return */\n limit: z.number().min(1).max(100).optional(),\n});\n\nexport const community = z.object({\n /** Unique identifier for the community */\n id: z.string(),\n /** Community name */\n name: z.string(),\n /** Community description */\n description: z.string().nullable().optional(),\n /** Number of topics in this community */\n topicCount: z.number().min(0).optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const entityNode = z.object({\n /** Unique identifier for the entity */\n id: z.string(),\n /** User ID who owns this entity */\n userId: z.string(),\n /** Entity display name */\n name: z.string(),\n /** Normalized (lowercase) name for deduplication */\n normalizedName: z.string(),\n /** Entity type classification */\n type: z.enum(['PERSON', 'PROJECT', 'TECHNOLOGY', 'VERSION', 'API_ENDPOINT', 'CONFIGURATION', 'CONCEPT', 'ORGANIZATION']),\n /** Alternative names for this entity */\n aliases: z.array(z.string()).optional(),\n /** Extraction confidence score (0-1) */\n confidence: z.number().min(0).max(1),\n /** When this entity was first extracted */\n firstSeenAt: z.string().datetime(),\n /** When this entity was most recently seen */\n lastSeenAt: z.string().datetime(),\n /** Number of memories that mention this entity */\n mentionCount: z.number().min(1),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const artifact = z.object({\n /** Unique identifier for the artifact */\n id: z.string(),\n /** User ID who owns this artifact */\n userId: z.string(),\n /** Artifact content */\n content: z.string(),\n /** Artifact type (e.g., note, document, code) */\n type: z.string(),\n /** Artifact name */\n name: z.string().nullable().optional(),\n /** Artifact description */\n description: z.string().nullable().optional(),\n /** Associated memory ID */\n memoryId: z.string().nullable().optional(),\n /** Associated conversation ID */\n conversationId: z.string().nullable().optional(),\n /** Additional metadata */\n metadata: z.object({}).optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const createArtifactRequest = z.object({\n /** Artifact content */\n content: z.string().min(1),\n /** Artifact type (e.g., note, document, code) */\n type: z.string().min(1),\n /** Artifact name */\n name: z.string().optional(),\n /** Artifact description */\n description: z.string().optional(),\n /** Associated memory ID */\n memoryId: z.string().optional(),\n /** Associated conversation ID */\n conversationId: z.string().optional(),\n /** Additional metadata */\n metadata: z.object({}).optional(),\n});\n\nexport const updateArtifactRequest = z.object({\n /** Artifact content */\n content: z.string().min(1).optional(),\n /** Artifact type (e.g., note, document, code) */\n type: z.string().min(1).optional(),\n /** Artifact name */\n name: z.string().optional(),\n /** Artifact description */\n description: z.string().optional(),\n /** Additional metadata */\n metadata: z.object({}).optional(),\n});\n\nexport const memoryRelationship = z.object({\n /** Unique relationship identifier */\n id: z.string(),\n /** ID of the source memory (the memory that has the relationship) */\n sourceMemoryId: z.string(),\n /** ID of the target memory (the memory being related to) */\n targetMemoryId: z.string(),\n /** Type of relationship between memories */\n type: z.enum(['SUPERSEDES', 'FOLLOWS', 'RESOLVES', 'CONTRADICTS', 'REFERENCES']),\n /** Confidence score for the relationship (0-1) */\n confidence: z.number().min(0).max(1),\n /** How the relationship was created */\n creationMethod: z.enum(['manual', 'auto-semantic', 'auto-temporal']),\n /** Human-readable explanation for why this relationship exists */\n reason: z.string().optional(),\n /** When the relationship was created */\n createdAt: z.string().datetime(),\n});\n\nexport const createMemoryRelationshipRequest = z.object({\n /** ID of the target memory to create a relationship with */\n targetMemoryId: z.string().min(1),\n /** Type of relationship between memories */\n type: z.enum(['SUPERSEDES', 'FOLLOWS', 'RESOLVES', 'CONTRADICTS', 'REFERENCES']),\n /** Confidence score for the relationship (0-1, defaults to 1.0 for manual) */\n confidence: z.number().min(0).max(1).optional(),\n /** Optional explanation for the relationship */\n reason: z.string().optional(),\n});\n\nexport const memoryRelationshipsResponse = z.lazy(() => z.object({\n data: z.array(memoryRelationship),\n /** The source memory ID these relationships are for */\n sourceMemoryId: z.string(),\n /** Direction of relationships returned */\n direction: z.enum(['outgoing', 'incoming', 'both']),\n}));\n\nexport const narrativeThread = z.object({\n /** Unique narrative thread identifier */\n id: z.string(),\n /** User ID who owns this narrative */\n userId: z.string(),\n /** Title describing the narrative thread */\n title: z.string(),\n /** Current state of the narrative thread */\n state: z.enum(['open', 'resolved', 'reopened', 'superseded']),\n /** ID of the first memory in this narrative */\n rootMemoryId: z.string(),\n /** ID of the most recent memory in this narrative */\n currentMemoryId: z.string().optional(),\n /** ID of the memory that resolved this narrative (if resolved) */\n resolutionMemoryId: z.string().optional(),\n /** Topics associated with this narrative */\n topics: z.array(z.string()),\n /** Number of memories in this narrative */\n memoryCount: z.number().min(0),\n /** When the narrative was created */\n createdAt: z.string().datetime(),\n /** When the narrative was last updated */\n updatedAt: z.string().datetime(),\n});\n\nexport const createNarrativeRequest = z.object({\n /** Title for the narrative thread */\n title: z.string().min(1),\n /** ID of the first memory in this narrative */\n rootMemoryId: z.string().min(1),\n /** Topics to associate with this narrative */\n topics: z.array(z.string()).optional(),\n});\n\nexport const updateNarrativeRequest = z.object({\n /** Updated title for the narrative */\n title: z.string().min(1).optional(),\n /** Current state of the narrative thread */\n state: z.enum(['open', 'resolved', 'reopened', 'superseded']).optional(),\n /** ID of the memory that resolves this narrative */\n resolutionMemoryId: z.string().optional(),\n /** Updated topics for the narrative */\n topics: z.array(z.string()).optional(),\n});\n\nexport const addMemoryToNarrativeRequest = z.object({\n /** ID of the memory to add to the narrative */\n memoryId: z.string().min(1),\n /** Position in the narrative (0-indexed, omit for append) */\n position: z.number().min(0).optional(),\n});\n\nexport const narrativeMemory = z.object({\n memory: z.object({\n /** Unique memory identifier */\n id: z.string(),\n /** Optional human-readable name for deterministic retrieval. Only the HEAD version carries the name. */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/).optional(),\n /** Version number for named memories (1 for first version, increments on update) */\n version: z.number().min(1).optional(),\n /** Memory content */\n content: z.string(),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']),\n /** Context or domain of the memory */\n context: z.string().optional(),\n /** Associated topics */\n topics: z.array(z.string()).optional(),\n /** System ingestion timestamp (when the system learned about this) */\n timestamp: z.string().datetime().optional(),\n /** Event time (when the event actually occurred in reality) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time (when this fact becomes valid) */\n validFrom: z.string().datetime().optional(),\n /** Validity end time (when this fact expires, null means never expires) */\n validTo: z.string().datetime().nullable().optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n /** Confidence score (0-1) for this memory's accuracy */\n confidenceScore: z.number().min(0).max(1).optional(),\n /** Basis for the confidence score */\n confidenceBasis: z.enum(['direct-statement', 'repeated-mention', 'single-mention', 'hedged', 'inference', 'external-source', 'contradicted']).optional(),\n /** Effective state of the memory in the narrative */\n effectiveState: z.enum(['current', 'superseded', 'contradicted']).optional(),\n /** Status of automatic content extraction */\n extractionStatus: z.enum(['pending', 'completed', 'failed', 'skipped']).optional(),\n /** When extraction was completed */\n extractionCompletedAt: z.string().datetime().optional(),\n /** Number of topics extracted from content */\n extractedTopicCount: z.number().min(0).optional(),\n /** Number of facts extracted from content */\n extractedFactCount: z.number().min(0).optional(),\n /** Number of entities extracted from content */\n extractedEntityCount: z.number().min(0).optional(),\n /** Topics explicitly provided by the user */\n userTopics: z.array(z.string()).optional(),\n /** Topics automatically extracted from content */\n extractedTopics: z.array(z.string()).optional(),\n /** Entities extracted from memory content */\n entities: z.array(z.object({\n /** Entity name */\n name: z.string(),\n /** Entity type */\n type: z.string(),\n /** Extraction confidence */\n confidence: z.number().min(0).max(1).optional(),\n})).optional(),\n}),\n /** Position of this memory in the narrative (0-indexed) */\n position: z.number().min(0),\n /** Effective state of this memory in the narrative context */\n effectiveState: z.enum(['current', 'superseded', 'contradicted']).optional(),\n});\n\nexport const narrativeTimelineResponse = z.lazy(() => z.object({\n data: z.array(narrativeMemory),\n narrative: narrativeThread,\n pagination: z.object({\n limit: z.number(),\n offset: z.number(),\n total: z.number(),\n}),\n}));\n\nexport const getNarrativeResponse = z.lazy(() => z.object({\n data: narrativeThread,\n}));\n\nexport const listNarrativesResponse = z.lazy(() => z.object({\n data: z.array(narrativeThread),\n pagination: z.object({\n limit: z.number(),\n offset: z.number(),\n count: z.number(),\n}),\n}));\n\nexport const user = z.object({\n id: z.string().uuid(),\n email: z.string().email(),\n firstName: z.string().nullable(),\n lastName: z.string().nullable(),\n profilePictureUrl: z.string().url().nullable(),\n status: z.enum(['active', 'suspended', 'disabled']),\n plan: z.enum(['free', 'pro', 'enterprise']),\n memoryLimit: z.number(),\n retentionDays: z.number().nullable(),\n deletionStatus: z.enum(['none', 'pending_deletion', 'deleting', 'deleted', 'deletion_failed']),\n deletionScheduledFor: z.string().datetime().nullable(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport const userUsage = z.object({\n memoriesUsed: z.number(),\n memoryLimit: z.number(),\n memoriesRemaining: z.number(),\n percentUsed: z.number(),\n plan: z.enum(['free', 'pro', 'enterprise']),\n periodStart: z.string().datetime(),\n periodEnd: z.string().datetime(),\n});\n\nexport const subscription = z.object({\n /** Stripe subscription ID */\n id: z.string(),\n /** Current subscription status */\n status: z.enum(['active', 'canceled', 'incomplete', 'incomplete_expired', 'past_due', 'paused', 'trialing', 'unpaid']),\n /** Plan type */\n plan: z.enum(['free', 'pro', 'enterprise']),\n /** Current period start date */\n currentPeriodStart: z.string().datetime(),\n /** Current period end date */\n currentPeriodEnd: z.string().datetime(),\n /** Whether subscription cancels at period end */\n cancelAtPeriodEnd: z.boolean(),\n /** When subscription was canceled */\n canceledAt: z.string().datetime().nullable(),\n});\n\nexport const invoice = z.object({\n /** Stripe invoice ID */\n id: z.string(),\n /** Invoice number */\n number: z.string().nullable(),\n /** Invoice status */\n status: z.enum(['draft', 'open', 'paid', 'uncollectible', 'void']),\n /** Amount due in cents */\n amountDue: z.number(),\n /** Amount paid in cents */\n amountPaid: z.number(),\n /** Three-letter ISO currency code */\n currency: z.string(),\n /** Start of billing period */\n periodStart: z.string().datetime(),\n /** End of billing period */\n periodEnd: z.string().datetime(),\n /** When invoice was created */\n created: z.string().datetime(),\n /** URL to view invoice */\n hostedInvoiceUrl: z.string().url().nullable(),\n /** URL to download invoice PDF */\n invoicePdf: z.string().url().nullable(),\n});\n\nexport const paymentMethod = z.object({\n /** Stripe payment method ID */\n id: z.string(),\n /** Payment method type (card, etc.) */\n type: z.string(),\n /** Card details if type is card */\n card: z.object({\n /** Card brand (visa, mastercard, etc.) */\n brand: z.string(),\n /** Last 4 digits of card */\n last4: z.string(),\n /** Expiration month */\n expMonth: z.number(),\n /** Expiration year */\n expYear: z.number(),\n}).nullable(),\n /** Whether this is the default payment method */\n isDefault: z.boolean(),\n});\n\nexport const billingOverview = z.object({\n subscription: z.object({\n /** Stripe subscription ID */\n id: z.string(),\n /** Current subscription status */\n status: z.enum(['active', 'canceled', 'incomplete', 'incomplete_expired', 'past_due', 'paused', 'trialing', 'unpaid']),\n /** Plan type */\n plan: z.enum(['free', 'pro', 'enterprise']),\n /** Current period start date */\n currentPeriodStart: z.string().datetime(),\n /** Current period end date */\n currentPeriodEnd: z.string().datetime(),\n /** Whether subscription cancels at period end */\n cancelAtPeriodEnd: z.boolean(),\n /** When subscription was canceled */\n canceledAt: z.string().datetime().nullable(),\n}),\n defaultPaymentMethod: z.object({\n /** Stripe payment method ID */\n id: z.string(),\n /** Payment method type (card, etc.) */\n type: z.string(),\n /** Card details if type is card */\n card: z.object({\n /** Card brand (visa, mastercard, etc.) */\n brand: z.string(),\n /** Last 4 digits of card */\n last4: z.string(),\n /** Expiration month */\n expMonth: z.number(),\n /** Expiration year */\n expYear: z.number(),\n}).nullable(),\n /** Whether this is the default payment method */\n isDefault: z.boolean(),\n}),\n /** Upcoming invoice preview */\n upcomingInvoice: z.object({\n /** Amount due in cents */\n amountDue: z.number(),\n /** Currency code */\n currency: z.string(),\n /** Next billing date */\n periodEnd: z.string().datetime(),\n}).nullable(),\n});\n\nexport const createCheckoutSessionRequest = z.object({\n /** Stripe price ID (defaults to Pro price) */\n priceId: z.string().optional(),\n /** URL to redirect after successful checkout */\n successUrl: z.string().url(),\n /** URL to redirect if checkout is canceled */\n cancelUrl: z.string().url(),\n});\n\nexport const checkoutSessionResponse = z.object({\n /** Stripe checkout session ID */\n sessionId: z.string(),\n /** URL to redirect user to Stripe checkout */\n url: z.string().url(),\n});\n\nexport const createPortalSessionRequest = z.object({\n /** URL to redirect after leaving the portal */\n returnUrl: z.string().url(),\n});\n\nexport const portalSessionResponse = z.object({\n /** URL to redirect user to Stripe billing portal */\n url: z.string().url(),\n});\n\nexport const listInvoicesResponse = z.lazy(() => z.object({\n /** List of invoices */\n data: z.array(invoice),\n /** Whether there are more invoices */\n hasMore: z.boolean(),\n}));\n\nexport const listPaymentMethodsResponse = z.lazy(() => z.object({\n /** List of payment methods */\n data: z.array(paymentMethod),\n}));\n\nexport const digestRequest = z.object({\n /** The topic or subject to generate a digest for */\n query: z.string().min(1),\n /** Time window filter (e.g., \"7d\", \"24h\", \"2w\", \"30m\"). Only considers memories within this window. */\n recent: z.string().optional(),\n /** Filter to memories with these topics */\n topics: z.array(z.string()).optional(),\n /** Limit to specific conversation IDs */\n conversationIds: z.array(z.string()).optional(),\n /** Output format: \"structured\" (sections with headers), \"narrative\" (chronological prose), \"timeline\" (dated event list), \"status-report\" (done/in-progress/blocked) */\n format: z.enum(['structured', 'narrative', 'timeline', 'status-report']).optional(),\n /** Maximum number of memories to consider (1-500, default 100) */\n maxSources: z.number().min(1).max(500).optional(),\n /** Whether to include source memory IDs in the response */\n includeMemoryIds: z.boolean().optional(),\n});\n\n/**\n * Time range of the source memories (null if no sources found)\n */\nexport const digestTimeRange = z.object({\n /** Earliest memory timestamp in the digest sources */\n earliest: z.string().datetime(),\n /** Latest memory timestamp in the digest sources */\n latest: z.string().datetime(),\n}).nullable();\n\n/**\n * Generation metadata including source statistics\n */\nexport const digestMetadata = z.lazy(() => z.object({\n /** The query used to generate the digest */\n query: z.string(),\n /** Total number of memories gathered (search + expansion) before synthesis */\n sourcesConsidered: z.number().min(0),\n /** Number of memories fed into the synthesis step */\n sourcesUsed: z.number().min(0),\n /** Number of distinct conversations the sources come from */\n conversationsSpanned: z.number().min(0),\n /** Time range of the source memories (null if no sources found) */\n timeRange: digestTimeRange,\n /** Output format used for this digest */\n format: z.enum(['structured', 'narrative', 'timeline', 'status-report']),\n /** ISO 8601 timestamp when the digest was generated */\n generatedAt: z.string().datetime(),\n /** Recursion stats (only present when recursive synthesis is used) */\n recursion: z.object({\n /** Whether recursive synthesis was used */\n enabled: z.boolean(),\n /** Number of leaf groups synthesized */\n leafGroups: z.number().min(0),\n /** Total LLM calls made during recursive synthesis */\n llmCallsUsed: z.number().min(0),\n /** Maximum recursion depth reached */\n maxDepthReached: z.number().min(0),\n}).optional(),\n}));\n\nexport const digestSource = z.object({\n /** Source memory ID */\n memoryId: z.string(),\n /** Relevance score (0-1) for this source memory */\n relevance: z.number().min(0).max(1),\n /** Conversation ID this memory belongs to */\n conversation: z.string().optional(),\n});\n\nexport const digestResponse = z.lazy(() => z.object({\n /** The generated digest content (markdown formatted) */\n digest: z.string(),\n /** Generation metadata including source statistics */\n metadata: digestMetadata,\n /** Source memories used to generate the digest, for traceability */\n sources: z.array(digestSource),\n}));\n"],"mappings":"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","names":["error","SerializationStyle","ContentType","Environment"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/http/handlers.ts","../src/http/http-client.ts","../src/http/base-service.ts","../src/http/serialization.ts","../src/http/request-builder.ts","../src/services/admin-service.ts","../src/services/api-keys-service.ts","../src/services/artifacts-service.ts","../src/services/billing-service.ts","../src/services/conversations-service.ts","../src/services/entities-service.ts","../src/services/facts-service.ts","../src/services/graphrag-service.ts","../src/services/health-service.ts","../src/services/invites-service.ts","../src/services/memories-service.ts","../src/services/monitoring-service.ts","../src/services/narratives-service.ts","../src/services/system-service.ts","../src/services/patterns-service.ts","../src/services/behavior-service.ts","../src/services/topics-service.ts","../src/services/users-service.ts","../src/http/http-types.ts","../src/models/schemas.ts"],"sourcesContent":["/**\n * MemNexus SDK Client\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { SdkConfig, Environment } from './http/http-types.js';\n\nimport { AdminService } from './services/admin-service.js';\nimport { ApiKeysService } from './services/api-keys-service.js';\nimport { ArtifactsService } from './services/artifacts-service.js';\nimport { BillingService } from './services/billing-service.js';\nimport { ConversationsService } from './services/conversations-service.js';\nimport { EntitiesService } from './services/entities-service.js';\nimport { FactsService } from './services/facts-service.js';\nimport { GraphragService } from './services/graphrag-service.js';\nimport { HealthService } from './services/health-service.js';\nimport { InvitesService } from './services/invites-service.js';\nimport { MemoriesService } from './services/memories-service.js';\nimport { MonitoringService } from './services/monitoring-service.js';\nimport { NarrativesService } from './services/narratives-service.js';\nimport { SystemService } from './services/system-service.js';\nimport { PatternsService } from './services/patterns-service.js';\nimport { BehaviorService } from './services/behavior-service.js';\nimport { TopicsService } from './services/topics-service.js';\nimport { UsersService } from './services/users-service.js';\n\n// Re-export types\nexport * from './http/http-types.js';\nexport * from './models/types.js';\nexport * from './models/schemas.js';\n\n// Re-export services\nexport { AdminService } from './services/admin-service.js';\nexport { ApiKeysService } from './services/api-keys-service.js';\nexport { ArtifactsService } from './services/artifacts-service.js';\nexport { BillingService } from './services/billing-service.js';\nexport { ConversationsService } from './services/conversations-service.js';\nexport { EntitiesService } from './services/entities-service.js';\nexport { FactsService } from './services/facts-service.js';\nexport { GraphragService } from './services/graphrag-service.js';\nexport { HealthService } from './services/health-service.js';\nexport { InvitesService } from './services/invites-service.js';\nexport { MemoriesService } from './services/memories-service.js';\nexport { MonitoringService } from './services/monitoring-service.js';\nexport { NarrativesService } from './services/narratives-service.js';\nexport { SystemService } from './services/system-service.js';\nexport { PatternsService } from './services/patterns-service.js';\nexport { BehaviorService } from './services/behavior-service.js';\nexport { TopicsService } from './services/topics-service.js';\nexport { UsersService } from './services/users-service.js';\n\n/**\n * MemNexus SDK client.\n * Provides access to all API services.\n */\nexport class Memnexus {\n private readonly config: SdkConfig;\n\n /** Admin management endpoints for invite codes and platform configuration operations */\n public readonly admin: AdminService;\n /** API key management endpoints operations */\n public readonly apiKeys: ApiKeysService;\n /** Artifact storage and retrieval endpoints operations */\n public readonly artifacts: ArtifactsService;\n /** Subscription billing and payment management endpoints operations */\n public readonly billing: BillingService;\n /** Conversation tracking and analysis endpoints operations */\n public readonly conversations: ConversationsService;\n /** Entity extraction and discovery endpoints operations */\n public readonly entities: EntitiesService;\n /** Fact extraction and management endpoints operations */\n public readonly facts: FactsService;\n /** Graph-based retrieval augmented generation endpoints operations */\n public readonly graphrag: GraphragService;\n /** Health check endpoints operations */\n public readonly health: HealthService;\n /** Invite code validation and gate status endpoints operations */\n public readonly invites: InvitesService;\n /** Memory management and retrieval endpoints operations */\n public readonly memories: MemoriesService;\n /** Observability and metrics endpoints for production monitoring operations */\n public readonly monitoring: MonitoringService;\n /** Narrative thread management endpoints operations */\n public readonly narratives: NarrativesService;\n /** System health, monitoring, and configuration endpoints operations */\n public readonly system: SystemService;\n /** Pattern detection and behavioral analysis endpoints operations */\n public readonly patterns: PatternsService;\n /** Behavioral pattern tracking and state management endpoints operations */\n public readonly behavior: BehaviorService;\n /** Topic detection, clustering, and management endpoints operations */\n public readonly topics: TopicsService;\n /** User management and profile endpoints operations */\n public readonly users: UsersService;\n\n /**\n * Create a new SDK client.\n * @param config - SDK configuration\n */\n constructor(config: SdkConfig = {}) {\n this.config = {\n baseUrl: config.baseUrl || 'http://localhost:3000',\n ...config,\n };\n\n this.admin = new AdminService(this.config);\n this.apiKeys = new ApiKeysService(this.config);\n this.artifacts = new ArtifactsService(this.config);\n this.billing = new BillingService(this.config);\n this.conversations = new ConversationsService(this.config);\n this.entities = new EntitiesService(this.config);\n this.facts = new FactsService(this.config);\n this.graphrag = new GraphragService(this.config);\n this.health = new HealthService(this.config);\n this.invites = new InvitesService(this.config);\n this.memories = new MemoriesService(this.config);\n this.monitoring = new MonitoringService(this.config);\n this.narratives = new NarrativesService(this.config);\n this.system = new SystemService(this.config);\n this.patterns = new PatternsService(this.config);\n this.behavior = new BehaviorService(this.config);\n this.topics = new TopicsService(this.config);\n this.users = new UsersService(this.config);\n }\n\n /**\n * Set the API token for authentication.\n * @param token - Bearer token\n */\n setToken(token: string): void {\n this.config.token = token;\n this.admin.token = token;\n this.apiKeys.token = token;\n this.artifacts.token = token;\n this.billing.token = token;\n this.conversations.token = token;\n this.entities.token = token;\n this.facts.token = token;\n this.graphrag.token = token;\n this.health.token = token;\n this.invites.token = token;\n this.memories.token = token;\n this.monitoring.token = token;\n this.narratives.token = token;\n this.system.token = token;\n this.patterns.token = token;\n this.behavior.token = token;\n this.topics.token = token;\n this.users.token = token;\n }\n\n /**\n * Set the base URL for API requests.\n * @param baseUrl - API base URL\n */\n setBaseUrl(baseUrl: string): void {\n this.config.baseUrl = baseUrl;\n this.admin.baseUrl = baseUrl;\n this.apiKeys.baseUrl = baseUrl;\n this.artifacts.baseUrl = baseUrl;\n this.billing.baseUrl = baseUrl;\n this.conversations.baseUrl = baseUrl;\n this.entities.baseUrl = baseUrl;\n this.facts.baseUrl = baseUrl;\n this.graphrag.baseUrl = baseUrl;\n this.health.baseUrl = baseUrl;\n this.invites.baseUrl = baseUrl;\n this.memories.baseUrl = baseUrl;\n this.monitoring.baseUrl = baseUrl;\n this.narratives.baseUrl = baseUrl;\n this.system.baseUrl = baseUrl;\n this.patterns.baseUrl = baseUrl;\n this.behavior.baseUrl = baseUrl;\n this.topics.baseUrl = baseUrl;\n this.users.baseUrl = baseUrl;\n }\n\n /**\n * Set the environment.\n * @param environment - API environment\n */\n setEnvironment(environment: Environment): void {\n this.config.environment = environment;\n this.admin.environment = environment;\n this.apiKeys.environment = environment;\n this.artifacts.environment = environment;\n this.billing.environment = environment;\n this.conversations.environment = environment;\n this.entities.environment = environment;\n this.facts.environment = environment;\n this.graphrag.environment = environment;\n this.health.environment = environment;\n this.invites.environment = environment;\n this.memories.environment = environment;\n this.monitoring.environment = environment;\n this.narratives.environment = environment;\n this.system.environment = environment;\n this.patterns.environment = environment;\n this.behavior.environment = environment;\n this.topics.environment = environment;\n this.users.environment = environment;\n }\n}\n\nexport default Memnexus;","/**\n * Request handlers for the handler chain.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type {\n HttpRequest,\n HttpResponse,\n HttpError,\n Hook,\n RetryOptions,\n} from './http-types.js';\nimport type { Request } from './request-builder.js';\n\n/** Handler interface */\nexport interface RequestHandler {\n handle<T>(request: Request): Promise<HttpResponse<T>>;\n setNext(handler: RequestHandler): RequestHandler;\n}\n\n/**\n * Base handler with chain support\n */\nabstract class BaseHandler implements RequestHandler {\n protected nextHandler?: RequestHandler;\n\n setNext(handler: RequestHandler): RequestHandler {\n this.nextHandler = handler;\n return handler;\n }\n\n abstract handle<T>(request: Request): Promise<HttpResponse<T>>;\n\n protected async callNext<T>(request: Request): Promise<HttpResponse<T>> {\n if (!this.nextHandler) {\n throw new Error('No next handler in chain');\n }\n return this.nextHandler.handle<T>(request);\n }\n}\n\n/**\n * Retry handler with exponential backoff\n */\nexport class RetryHandler extends BaseHandler {\n private readonly maxAttempts: number;\n private readonly delayMs: number;\n private readonly maxDelayMs: number;\n private readonly jitterMs: number;\n private readonly backoffFactor: number;\n private readonly httpCodesToRetry: Set<number>;\n private readonly httpMethodsToRetry: Set<string>;\n\n constructor(options?: RetryOptions) {\n super();\n this.maxAttempts = options?.attempts ?? 3;\n this.delayMs = options?.delayMs ?? 150;\n this.maxDelayMs = options?.maxDelayMs ?? 5000;\n this.jitterMs = options?.jitterMs ?? 50;\n this.backoffFactor = options?.backoffFactor ?? 2;\n this.httpCodesToRetry = new Set(options?.httpCodesToRetry ?? [408,429,500,502,503,504]);\n this.httpMethodsToRetry = new Set(options?.httpMethodsToRetry ?? [\"GET\",\"POST\",\"PUT\",\"DELETE\",\"PATCH\",\"HEAD\",\"OPTIONS\"]);\n }\n\n async handle<T>(request: Request): Promise<HttpResponse<T>> {\n let lastError: Error | undefined;\n let attempt = 0;\n\n while (attempt < this.maxAttempts) {\n try {\n const response = await this.callNext<T>(request);\n\n // Check if we should retry based on status code\n if (this.shouldRetry(request.method, response.metadata.status)) {\n lastError = new Error(`HTTP ${response.metadata.status}`);\n attempt++;\n await this.delay(attempt);\n continue;\n }\n\n return response;\n } catch (error) {\n lastError = error as Error;\n attempt++;\n\n if (attempt >= this.maxAttempts) {\n break;\n }\n\n await this.delay(attempt);\n }\n }\n\n throw lastError || new Error('Max retry attempts reached');\n }\n\n private shouldRetry(method: string, status: number): boolean {\n return this.httpMethodsToRetry.has(method) && this.httpCodesToRetry.has(status);\n }\n\n private async delay(attempt: number): Promise<void> {\n const exponentialDelay = this.delayMs * Math.pow(this.backoffFactor, attempt - 1);\n const jitter = Math.random() * this.jitterMs;\n const delay = Math.min(exponentialDelay + jitter, this.maxDelayMs);\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n}\n\n/**\n * Validation handler for request/response validation\n */\nexport class ValidationHandler extends BaseHandler {\n async handle<T>(request: Request): Promise<HttpResponse<T>> {\n // Validate request body if schema provided\n if (request.requestSchema && request.body) {\n const result = request.requestSchema.safeParse(request.body);\n if (!result.success) {\n throw new Error(`Request validation failed: ${result.error.message}`);\n }\n }\n\n const response = await this.callNext<T>(request);\n\n // Validate response if enabled and schema available\n if (request.validation?.responseValidation && response.data) {\n const matchingResponse = request.responses.find(\n (r) => r.status === response.metadata.status\n );\n if (matchingResponse) {\n const result = matchingResponse.schema.safeParse(response.data);\n if (!result.success) {\n throw new Error(`Response validation failed: ${result.error.message}`);\n }\n }\n }\n\n return response;\n }\n}\n\n/**\n * Hook handler for request/response interception\n */\nexport class HookHandler extends BaseHandler {\n private readonly hook: Hook;\n\n constructor(hook: Hook) {\n super();\n this.hook = hook;\n }\n\n async handle<T>(request: Request): Promise<HttpResponse<T>> {\n // Build HttpRequest for hook\n const httpRequest: HttpRequest = {\n baseUrl: request.baseUrl,\n method: request.method,\n path: request.path,\n headers: new Map(Object.entries(request.getHeaders())),\n queryParams: new Map(),\n pathParams: new Map(),\n body: request.body as BodyInit,\n };\n\n // Call beforeRequest hook\n const modifiedRequest = await this.hook.beforeRequest(httpRequest, new Map());\n\n // Execute the request\n const response = await this.callNext<T>(request);\n\n // Call afterResponse hook\n const modifiedResponse = await this.hook.afterResponse(modifiedRequest, response, new Map());\n\n return modifiedResponse as HttpResponse<T>;\n }\n}\n\n/**\n * Execute handler - actually performs the HTTP request\n */\nexport class ExecuteHandler extends BaseHandler {\n async handle<T>(request: Request): Promise<HttpResponse<T>> {\n const url = request.constructFullUrl();\n const headers = request.getHeaders();\n\n // Add content type for JSON bodies\n if (request.body && typeof request.body === 'object') {\n headers['Content-Type'] = 'application/json';\n }\n\n // Add authorization header if token is set\n if (request.config.token) {\n headers['Authorization'] = `Bearer ${request.config.token}`;\n }\n\n const fetchOptions: RequestInit = {\n method: request.method,\n headers,\n };\n\n // Add body for non-GET requests\n if (request.body && request.method !== 'GET') {\n fetchOptions.body = typeof request.body === 'string'\n ? request.body\n : JSON.stringify(request.body);\n }\n\n // Add timeout if configured\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n if (request.config.timeoutMs) {\n const controller = new AbortController();\n timeoutId = setTimeout(() => controller.abort(), request.config.timeoutMs);\n fetchOptions.signal = controller.signal;\n }\n\n try {\n const response = await fetch(url, fetchOptions);\n\n // Get response headers\n const responseHeaders: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n responseHeaders[key] = value;\n });\n\n // Parse response body\n const raw = await response.arrayBuffer();\n let data: T | undefined;\n\n const contentType = response.headers.get('content-type') || '';\n if (contentType.includes('application/json') && raw.byteLength > 0) {\n const text = new TextDecoder().decode(raw);\n try {\n data = JSON.parse(text) as T;\n } catch {\n // Not valid JSON, leave data undefined\n }\n }\n\n const httpResponse: HttpResponse<T> = {\n data,\n metadata: {\n status: response.status,\n statusText: response.statusText,\n headers: responseHeaders,\n },\n raw,\n };\n\n // Throw on error status codes\n if (!response.ok) {\n const error = new Error(`HTTP ${response.status}: ${response.statusText}`);\n (error as any).response = httpResponse;\n throw error;\n }\n\n return httpResponse;\n } finally {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n }\n }\n}\n\n/**\n * Default hook implementation (pass-through)\n */\nexport class CustomHook implements Hook {\n async beforeRequest(request: HttpRequest, params: Map<string, string>): Promise<HttpRequest> {\n return request;\n }\n\n async afterResponse(\n request: HttpRequest,\n response: HttpResponse<any>,\n params: Map<string, string>\n ): Promise<HttpResponse<any>> {\n return response;\n }\n\n async onError(\n request: HttpRequest,\n response: HttpResponse<any>,\n params: Map<string, string>\n ): Promise<HttpError> {\n return {\n error: response.metadata.statusText,\n metadata: response.metadata,\n };\n }\n}\n","/**\n * HTTP client for making API requests.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type {\n HttpResponse,\n SdkConfig,\n Hook,\n} from './http-types.js';\nimport type { Request } from './request-builder.js';\nimport { RetryHandler } from './handlers.js';\nimport { ValidationHandler } from './handlers.js';\nimport { HookHandler } from './handlers.js';\nimport { ExecuteHandler } from './handlers.js';\nimport { CustomHook } from './handlers.js';\n\n/** Handler interface */\ninterface RequestHandler {\n handle<T>(request: Request): Promise<HttpResponse<T>>;\n setNext(handler: RequestHandler): RequestHandler;\n}\n\n/**\n * Core HTTP client with handler chain.\n */\nexport class HttpClient {\n private config: SdkConfig;\n private readonly requestHandlerChain: RequestHandler;\n\n constructor(config: SdkConfig, hook?: Hook) {\n this.config = config;\n\n // Build handler chain: Retry -> Validation -> Hook -> Execute\n const executeHandler = new ExecuteHandler();\n const hookHandler = new HookHandler(hook || new CustomHook());\n const validationHandler = new ValidationHandler();\n const retryHandler = new RetryHandler(config.retry);\n\n retryHandler.setNext(validationHandler);\n validationHandler.setNext(hookHandler);\n hookHandler.setNext(executeHandler);\n\n this.requestHandlerChain = retryHandler;\n }\n\n /**\n * Execute an HTTP request\n */\n async call<T>(request: Request): Promise<HttpResponse<T>> {\n return this.requestHandlerChain.handle<T>(request);\n }\n\n /**\n * Update base URL\n */\n setBaseUrl(url: string): void {\n this.config.baseUrl = url;\n }\n\n /**\n * Update config\n */\n setConfig(config: SdkConfig): void {\n this.config = config;\n }\n}\n","/**\n * Base service class that all API services extend.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { SdkConfig, Environment } from './http-types.js';\nimport { HttpClient } from './http-client.js';\n\n/**\n * Base class for all API service classes.\n */\nexport class BaseService {\n protected config: SdkConfig;\n protected client: HttpClient;\n\n constructor(config: SdkConfig) {\n this.config = config;\n this.client = new HttpClient(config);\n }\n\n /**\n * Set the base URL for API requests\n */\n set baseUrl(baseUrl: string) {\n this.config.baseUrl = baseUrl;\n this.client.setBaseUrl(baseUrl);\n }\n\n /**\n * Set the environment\n */\n set environment(environment: Environment) {\n this.config.environment = environment;\n this.client.setBaseUrl(environment);\n }\n\n /**\n * Set the request timeout in milliseconds\n */\n set timeoutMs(timeoutMs: number) {\n this.config.timeoutMs = timeoutMs;\n }\n\n /**\n * Set the bearer token for authentication\n */\n set token(token: string) {\n this.config.token = token;\n }\n}\n","/**\n * Parameter serialization utilities.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { RequestParameter, SerializationStyle } from './http-types.js';\n\n/**\n * Serialize a parameter value based on its style\n */\nexport function serializeParameter(param: RequestParameter): unknown {\n const { value, style, explode } = param;\n\n if (value === undefined || value === null) {\n return undefined;\n }\n\n // Primitive values don't need special serialization\n if (typeof value !== 'object') {\n return value;\n }\n\n // Array serialization\n if (Array.isArray(value)) {\n return serializeArray(value, style as SerializationStyle, explode);\n }\n\n // Object serialization\n return serializeObject(value as Record<string, unknown>, style as SerializationStyle, explode);\n}\n\n/**\n * Serialize an array value\n */\nfunction serializeArray(\n value: unknown[],\n style: SerializationStyle,\n explode: boolean\n): string | string[] {\n if (explode) {\n return value.map(String);\n }\n\n switch (style) {\n case 'simple':\n return value.join(',');\n case 'label':\n return '.' + value.join('.');\n case 'matrix':\n return ';' + value.join(';');\n case 'form':\n return value.join(',');\n case 'space_delimited':\n return value.join(' ');\n case 'pipe_delimited':\n return value.join('|');\n default:\n return value.join(',');\n }\n}\n\n/**\n * Serialize an object value\n */\nfunction serializeObject(\n value: Record<string, unknown>,\n style: SerializationStyle,\n explode: boolean\n): string | Record<string, string> {\n const entries = Object.entries(value).filter(([_, v]) => v !== undefined);\n\n if (style === 'deep_object') {\n // For deep object, we return the object as-is for query param handling\n return Object.fromEntries(entries.map(([k, v]) => [k, String(v)]));\n }\n\n if (explode) {\n return Object.fromEntries(entries.map(([k, v]) => [k, String(v)]));\n }\n\n // Non-exploded object serialization\n const pairs = entries.flatMap(([k, v]) => [k, String(v)]);\n\n switch (style) {\n case 'simple':\n return pairs.join(',');\n case 'label':\n return '.' + pairs.join('.');\n case 'matrix':\n return ';' + pairs.join(';');\n case 'form':\n return pairs.join(',');\n default:\n return pairs.join(',');\n }\n}\n\nexport type { SerializationStyle };\n","/**\n * Request builder for constructing HTTP requests.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { ZodType } from 'zod';\nimport type {\n HttpMethod,\n SdkConfig,\n RequestParameter,\n ResponseDefinition,\n ErrorDefinition,\n ContentType,\n RetryOptions,\n ValidationOptions,\n SerializationStyle,\n} from './http-types.js';\nimport { serializeParameter } from './serialization.js';\n\n/** Request creation parameters */\nexport interface CreateRequestParameters {\n baseUrl: string;\n method: HttpMethod;\n path: string;\n config: SdkConfig;\n headers?: Map<string, RequestParameter>;\n queryParams?: Map<string, RequestParameter>;\n pathParams?: Map<string, RequestParameter>;\n body?: unknown;\n responses?: ResponseDefinition[];\n errors?: ErrorDefinition[];\n requestSchema?: ZodType;\n requestContentType?: ContentType;\n validation?: ValidationOptions;\n retry?: RetryOptions;\n}\n\n/**\n * HTTP Request object\n */\nexport class Request {\n readonly baseUrl: string;\n readonly method: HttpMethod;\n readonly path: string;\n readonly config: SdkConfig;\n readonly headers: Map<string, RequestParameter>;\n readonly queryParams: Map<string, RequestParameter>;\n readonly pathParams: Map<string, RequestParameter>;\n body?: unknown;\n readonly responses: ResponseDefinition[];\n readonly errors: ErrorDefinition[];\n readonly requestSchema?: ZodType;\n readonly requestContentType?: ContentType;\n readonly validation: ValidationOptions;\n readonly retry: RetryOptions;\n\n constructor(params: CreateRequestParameters) {\n this.baseUrl = params.baseUrl;\n this.method = params.method;\n this.path = params.path;\n this.config = params.config;\n this.headers = params.headers || new Map();\n this.queryParams = params.queryParams || new Map();\n this.pathParams = params.pathParams || new Map();\n this.body = params.body;\n this.responses = params.responses || [];\n this.errors = params.errors || [];\n this.requestSchema = params.requestSchema;\n this.requestContentType = params.requestContentType;\n this.validation = params.validation || {};\n this.retry = params.retry || { attempts: 1 };\n }\n\n /**\n * Add a header parameter\n */\n addHeaderParam(key: string, param: RequestParameter): void {\n this.headers.set(key, param);\n }\n\n /**\n * Add a query parameter\n */\n addQueryParam(key: string, param: RequestParameter): void {\n this.queryParams.set(key, param);\n }\n\n /**\n * Add a path parameter\n */\n addPathParam(key: string, param: RequestParameter): void {\n this.pathParams.set(key, param);\n }\n\n /**\n * Set the request body\n */\n addBody(body: unknown): void {\n this.body = body;\n }\n\n /**\n * Construct the full URL with path and query parameters\n */\n constructFullUrl(): string {\n // Substitute path parameters\n let url = this.path;\n for (const [key, param] of this.pathParams) {\n const value = serializeParameter(param);\n url = url.replace(`{${key}}`, encodeURIComponent(String(value)));\n }\n\n // Add query parameters\n const queryString = this.buildQueryString();\n if (queryString) {\n url += `?${queryString}`;\n }\n\n return `${this.baseUrl}${url}`;\n }\n\n /**\n * Get serialized headers\n */\n getHeaders(): Record<string, string> {\n const headers: Record<string, string> = {};\n\n for (const [key, param] of this.headers) {\n const value = serializeParameter(param);\n if (value !== undefined && value !== null) {\n headers[key] = String(value);\n }\n }\n\n return headers;\n }\n\n /**\n * Build query string from parameters\n */\n private buildQueryString(): string {\n const parts: string[] = [];\n\n for (const [key, param] of this.queryParams) {\n const serialized = serializeQueryParam(key, param);\n if (serialized) {\n parts.push(serialized);\n }\n }\n\n return parts.join('&');\n }\n}\n\n/**\n * Serialize a query parameter\n */\nfunction serializeQueryParam(key: string, param: RequestParameter): string | null {\n const value = param.value;\n if (value === undefined || value === null) {\n return null;\n }\n\n // Handle arrays\n if (Array.isArray(value)) {\n if (param.explode) {\n return value.map((v) => `${encodeURIComponent(key)}=${encodeURIComponent(String(v))}`).join('&');\n }\n return `${encodeURIComponent(key)}=${value.map((v) => encodeURIComponent(String(v))).join(',')}`;\n }\n\n // Handle objects (deep object style)\n if (typeof value === 'object') {\n if (param.style === 'deep_object' as any) {\n return Object.entries(value)\n .map(([k, v]) => `${encodeURIComponent(key)}[${encodeURIComponent(k)}]=${encodeURIComponent(String(v))}`)\n .join('&');\n }\n // Form style\n return Object.entries(value)\n .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`)\n .join('&');\n }\n\n // Primitive value\n return `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`;\n}\n","/**\n * AdminService - Admin management endpoints for invite codes and platform configuration API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Admin management endpoints for invite codes and platform configuration\n */\nexport class AdminService extends BaseService {\n\n /**\n * List invite codes\n * List all invite codes with optional status filter\n * @param status - Filter by status\n * @param limit - \n * @param offset - \n */\n async adminListInviteCodes(options?: { status?: 'active' | 'exhausted' | 'revoked' | 'expired'; limit?: number; offset?: number }): Promise<HttpResponse<{ invites?: { id?: string; code?: string; email?: string; label?: string; maxUses?: number; currentUses?: number; status?: string; expiresAt?: string; createdAt?: string }[]; total?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/invites',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.status !== undefined) {\n request.addQueryParam('status', {\n key: 'status',\n value: options.status,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create invite code\n * Create a new invite code for the gated preview\n * @param body - Request body\n */\n async adminCreateInviteCode(body: { email: string; label: string; maxUses?: number; code?: string; expiresAt?: string; metadata?: Record<string, unknown> }): Promise<HttpResponse<{ id?: string; code?: string; label?: string; maxUses?: number; currentUses?: number; status?: string; expiresAt?: string; createdAt?: string; shareUrl?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/admin/invites',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get invite system statistics\n * Aggregate statistics for the invite system\n */\n async adminGetInviteStats(): Promise<HttpResponse<{ totalCodes?: number; activeCodes?: number; totalRedemptions?: number; totalCapacity?: number; utilizationRate?: number; recentRedemptions?: { code?: string; email?: string; redeemedAt?: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/invites/stats',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Get invite code details\n * Get details for a single invite code including redemptions\n * @param code - The invite code\n */\n async adminGetInviteCode(code: string): Promise<HttpResponse<{ id?: string; code?: string; email?: string; label?: string; maxUses?: number; currentUses?: number; status?: string; redemptions?: { userId?: string; email?: string; redeemedAt?: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/invites/{code}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('code', {\n key: 'code',\n value: code,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Revoke an invite code\n * Revoke an invite code. Existing accounts created with this code are unaffected.\n * @param code - \n */\n async adminRevokeInviteCode(code: string): Promise<HttpResponse<{ code?: string; status?: string; message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/admin/invites/{code}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('code', {\n key: 'code',\n value: code,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Get gate status with audit info\n * Get current invite gate state with audit information\n */\n async adminGetGateStatus(): Promise<HttpResponse<{ gated?: boolean; updatedAt?: string; updatedBy?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/gate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Toggle invite gate\n * Toggle the invite gate. When enabled (true), new signups require a valid invite code.\nWhen disabled (false), registration is open. Takes effect immediately.\n\n * @param body - Request body\n */\n async adminSetGateStatus(body: { enabled: boolean }): Promise<HttpResponse<{ gated?: boolean; updatedAt?: string; message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/admin/gate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * ApiKeysService - API key management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { ApiKey } from '../models/types.js';\n\n/**\n * API key management endpoints\n */\nexport class ApiKeysService extends BaseService {\n\n /**\n * Get user information for current API key\n * Debug endpoint to retrieve user ID and authentication method from the current API key\n */\n async debugUser(): Promise<HttpResponse<{ data?: { userId?: string; authMethod?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/apikeys/debug-user',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * List API keys\n * List all API keys for the authenticated user\n */\n async listApiKeys(): Promise<HttpResponse<{ data?: ApiKey[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/apikeys',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Create API key\n * Create a new API key for the authenticated user\n * @param body - Request body\n */\n async createApiKey(options?: { body?: { label?: string; expiresAt?: string } }): Promise<HttpResponse<{ data?: { apiKey?: string; keyInfo?: ApiKey } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/apikeys',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete API key\n * Delete (revoke) an API key by its ID\n * @param id - The API key ID\n */\n async deleteApiKey(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/apikeys/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n}","/**\n * ArtifactsService - Artifact storage and retrieval endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Artifact } from '../models/types.js';\n\n/**\n * Artifact storage and retrieval endpoints\n */\nexport class ArtifactsService extends BaseService {\n\n /**\n * List artifacts\n * List all artifacts for the authenticated user with optional filters\n * @param limit - Maximum number of artifacts to return\n * @param offset - Number of artifacts to skip\n * @param memoryId - Filter by memory ID\n * @param conversationId - Filter by conversation ID\n * @param type - Filter by artifact type\n */\n async listArtifacts(options?: { limit?: number; offset?: number; memoryId?: string; conversationId?: string; type?: string }): Promise<HttpResponse<{ data?: Artifact[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/artifacts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.memoryId !== undefined) {\n request.addQueryParam('memoryId', {\n key: 'memoryId',\n value: options.memoryId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.conversationId !== undefined) {\n request.addQueryParam('conversationId', {\n key: 'conversationId',\n value: options.conversationId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.type !== undefined) {\n request.addQueryParam('type', {\n key: 'type',\n value: options.type,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create artifact\n * Create a new artifact for the authenticated user\n * @param body - Request body\n */\n async createArtifact(body: { content: string; type: string; name?: string; description?: string; memoryId?: string; conversationId?: string; metadata?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Artifact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/artifacts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get artifact by ID\n * Retrieve a specific artifact by its ID\n * @param id - The artifact ID\n */\n async getArtifactById(id: string): Promise<HttpResponse<{ data?: Artifact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/artifacts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Delete artifact\n * Delete an artifact by its ID\n * @param id - The artifact ID\n */\n async deleteArtifact(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/artifacts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Update artifact\n * Update an existing artifact with partial data\n * @param id - The artifact ID\n * @param body - Request body\n */\n async updateArtifact(id: string, body: { content?: string; type?: string; name?: string; description?: string; metadata?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Artifact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/artifacts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * BillingService - Subscription billing and payment management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { BillingOverview, CheckoutSessionResponse, PortalSessionResponse, Subscription, ListInvoicesResponse, ListPaymentMethodsResponse } from '../models/types.js';\n\n/**\n * Subscription billing and payment management endpoints\n */\nexport class BillingService extends BaseService {\n\n /**\n * Get billing overview\n * Get subscription, payment method, and upcoming invoice information\n */\n async getBillingOverview(): Promise<HttpResponse<{ data?: BillingOverview }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/billing/overview',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Create checkout session\n * Create a Stripe checkout session for subscription upgrade\n * @param body - Request body\n */\n async createCheckoutSession(body: { priceId?: string; successUrl: string; cancelUrl: string }): Promise<HttpResponse<{ data?: CheckoutSessionResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/checkout',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create billing portal session\n * Create a Stripe billing portal session for managing subscription\n * @param body - Request body\n */\n async createPortalSession(body: { returnUrl: string }): Promise<HttpResponse<{ data?: PortalSessionResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/portal',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get current subscription\n * Get the current subscription details for the authenticated user\n */\n async getSubscription(): Promise<HttpResponse<{ data?: Subscription }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/billing/subscription',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Cancel subscription\n * Cancel the current subscription at the end of the billing period\n * @param body - Request body\n */\n async cancelSubscription(options?: { body?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Subscription }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/subscription/cancel',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Reactivate subscription\n * Reactivate a subscription that was scheduled for cancellation\n * @param body - Request body\n */\n async reactivateSubscription(options?: { body?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Subscription }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/subscription/reactivate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * List invoices\n * Get a list of invoices for the authenticated user\n * @param limit - Maximum number of invoices to return\n */\n async listInvoices(options?: { limit?: number }): Promise<HttpResponse<{ data?: ListInvoicesResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/billing/invoices',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * List payment methods\n * Get a list of payment methods for the authenticated user\n */\n async listPaymentMethods(): Promise<HttpResponse<{ data?: ListPaymentMethodsResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/billing/payment-methods',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Set default payment method\n * Set a payment method as the default for future payments\n * @param id - The payment method ID\n * @param body - Request body\n */\n async setDefaultPaymentMethod(id: string, options?: { body?: Record<string, unknown> }): Promise<HttpResponse<{ message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/payment-methods/{id}/default',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete payment method\n * Remove a payment method from the account\n * @param id - The payment method ID\n */\n async deletePaymentMethod(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/billing/payment-methods/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Stripe webhook endpoint\n * Receive and process Stripe webhook events\n * @param body - Request body\n */\n async stripeWebhook(body: Record<string, unknown>): Promise<HttpResponse<{ received?: boolean }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/webhooks',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * ConversationsService - Conversation tracking and analysis endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Conversation, Memory } from '../models/types.js';\n\n/**\n * Conversation tracking and analysis endpoints\n */\nexport class ConversationsService extends BaseService {\n\n /**\n * List conversations\n * List all conversations for the authenticated user with pagination\n * @param limit - Maximum number of conversations to return\n * @param offset - Number of conversations to skip\n * @param since - Return only conversations created after this timestamp (ISO 8601 format)\n */\n async listConversations(options?: { limit?: number; offset?: number; since?: string }): Promise<HttpResponse<{ data?: Conversation[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/conversations',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.since !== undefined) {\n request.addQueryParam('since', {\n key: 'since',\n value: options.since,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create conversation\n * Create a new conversation for the authenticated user\n * @param body - Request body\n */\n async createConversation(body: { title: string; summary?: string }): Promise<HttpResponse<{ data?: Conversation }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/conversations',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get conversation summary\n * Retrieve a conversation summary by its ID\n * @param conversationId - The conversation ID\n */\n async getConversationSummary(conversationId: string): Promise<HttpResponse<{ data?: Conversation }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/conversations/{conversationId}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('conversationId', {\n key: 'conversationId',\n value: conversationId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Delete conversation\n * Delete a conversation and soft-delete all associated memories\n * @param conversationId - The conversation ID\n */\n async deleteConversation(conversationId: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/conversations/{conversationId}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('conversationId', {\n key: 'conversationId',\n value: conversationId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Get conversation timeline\n * Get all memories in a conversation in chronological order\n * @param conversationId - The conversation ID\n */\n async getConversationTimeline(conversationId: string): Promise<HttpResponse<{ data?: Memory[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/conversations/{conversationId}/timeline',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('conversationId', {\n key: 'conversationId',\n value: conversationId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Search conversations\n * Search conversations by query string\n * @param body - Request body\n */\n async searchConversations(body: { query: string; limit?: number }): Promise<HttpResponse<{ data?: Conversation[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/conversations/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find conversations by topic\n * Find conversations that contain a specific topic\n * @param body - Request body\n */\n async findConversationsByTopic(body: { topicId: string; limit?: number }): Promise<HttpResponse<{ data?: Conversation[]; count?: number; metadata?: { topicId?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/conversations/by-topic',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * EntitiesService - Entity extraction and discovery endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { EntityNode, Memory } from '../models/types.js';\n\n/**\n * Entity extraction and discovery endpoints\n */\nexport class EntitiesService extends BaseService {\n\n /**\n * List entities\n * List all entities for the authenticated user, optionally filtered by type\n * @param type - Filter by entity type (e.g., PERSON, TECHNOLOGY)\n * @param limit - Maximum number of entities to return\n * @param offset - Number of entities to skip\n */\n async listEntities(options?: { type?: string; limit?: number; offset?: number }): Promise<HttpResponse<{ data?: EntityNode[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/entities',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.type !== undefined) {\n request.addQueryParam('type', {\n key: 'type',\n value: options.type,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get entity by ID\n * Retrieve a specific entity by its ID\n * @param id - The entity ID\n */\n async getEntityById(id: string): Promise<HttpResponse<{ data?: EntityNode }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/entities/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Get memories mentioning entity\n * Get all memories that mention a specific entity\n * @param id - The entity ID\n * @param limit - Maximum number of memories to return\n * @param offset - Number of memories to skip\n */\n async getEntityMemories(id: string, options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data?: { memory?: Memory; confidence?: number }[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/entities/{id}/memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n}","/**\n * FactsService - Fact extraction and management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Fact } from '../models/types.js';\n\n/**\n * Fact extraction and management endpoints\n */\nexport class FactsService extends BaseService {\n\n /**\n * List facts\n * List all facts for the authenticated user\n * @param limit - Maximum number of facts to return\n * @param offset - Number of facts to skip\n */\n async listFacts(options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data?: Fact[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/facts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create fact\n * Create a new semantic fact\n * @param body - Request body\n */\n async createFact(body: { subject: string; predicate: string; object: string }): Promise<HttpResponse<{ data?: Fact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/facts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get fact by ID\n * Retrieve a specific fact by its ID\n * @param id - The fact ID\n */\n async getFactById(id: string): Promise<HttpResponse<{ data?: Fact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/facts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Update fact\n * Update an existing fact completely\n * @param id - The fact ID\n * @param body - Request body\n */\n async updateFact(id: string, body: { subject?: string; predicate?: string; object?: string; confidence?: number }): Promise<HttpResponse<{ data?: Fact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PUT',\n path: '/api/facts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete fact\n * Delete a fact by its ID\n * @param id - The fact ID\n */\n async deleteFact(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/facts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Search facts\n * Search semantic facts by query string\n * @param body - Request body\n */\n async searchFacts(body: { query: string; limit?: number }): Promise<HttpResponse<{ data?: Fact[]; count?: number; metadata?: { query?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/facts/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * GraphragService - Graph-based retrieval augmented generation endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { GraphRAGQueryResponse } from '../models/types.js';\n\n/**\n * Graph-based retrieval augmented generation endpoints\n */\nexport class GraphragService extends BaseService {\n\n /**\n * Explain a GraphRAG query\n * Get explanation for a previously executed GraphRAG query result\n * @param queryId - The query ID to explain\n */\n async explainGraphRAGQuery(options?: { queryId?: string }): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/graphrag/explain',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.queryId !== undefined) {\n request.addQueryParam('queryId', {\n key: 'queryId',\n value: options.queryId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Query communities\n * Query communities for relevant information using semantic search\n * @param body - Request body\n */\n async queryCommunities(body: { query: string; limit?: number }): Promise<HttpResponse<{ data?: Record<string, unknown>[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/graphrag/query-communities',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Execute a GraphRAG query\n * Execute a graph-based retrieval augmented generation query\n * @param body - Request body\n */\n async executeGraphRAGQuery(body: { query: string; maxDepth?: number; depth?: number; limit?: number; includeRelationships?: boolean }): Promise<HttpResponse<{ data?: GraphRAGQueryResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/graphrag/query',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * HealthService - Health check endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Health check endpoints\n */\nexport class HealthService extends BaseService {\n\n /**\n * API health check endpoint\n * Returns the health status and uptime of the API service.\nThis endpoint is public and requires no authentication.\nUse this endpoint for monitoring, health checks, and service availability verification.\nReturns 200 when healthy, 503 when the database is unreachable.\n\n */\n async healthCheck(): Promise<HttpResponse<{ status: 'healthy' | 'degraded' | 'unhealthy'; timestamp: string; version: string; uptime: number; checks: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/health',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n}","/**\n * InvitesService - Invite code validation and gate status endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Invite code validation and gate status endpoints\n */\nexport class InvitesService extends BaseService {\n\n /**\n * Check invite gate status\n * Check whether the invite gate is currently open or closed.\nWhen gated is true, new signups require a valid invite code.\nResponse is cached server-side (30-second TTL).\n\n */\n async getGateStatus(): Promise<HttpResponse<{ gated?: boolean }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/invites/gate-status',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Validate an invite code\n * Validate an invite code without redeeming it.\nRate limited to 10 requests per minute per IP to prevent enumeration.\nError messages are intentionally generic.\n\n * @param body - Request body\n */\n async validateInviteCode(body: { code: string; email: string }): Promise<HttpResponse<{ valid?: boolean; error?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/invites/validate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * MemoriesService - Memory management and retrieval endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Memory, Pagination, CreateMemoryResponseMeta, SearchResult, TemporalMetadata, BatchGetMemoriesMeta, DigestMetadata, DigestSource, RelatedMemoryResult, MemoryRelationship } from '../models/types.js';\n\n/**\n * Memory management and retrieval endpoints\n */\nexport class MemoriesService extends BaseService {\n\n /**\n * Get memory by ID\n * Retrieve a specific memory by its ID\n * @param id - The memory ID\n */\n async getMemoryById(id: string): Promise<HttpResponse<{ data: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Update a memory\n * Update an existing memory for the authenticated user\n * @param id - Memory ID\n * @param body - Request body\n */\n async updateMemory(id: string, body: { content?: string; name?: string | ''; memoryType?: 'episodic' | 'semantic' | 'procedural'; context?: string; topics?: string[] }): Promise<HttpResponse<{ data?: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PUT',\n path: '/api/memories/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete memory\n * Delete a memory by its ID\n * @param id - The memory ID\n */\n async deleteMemory(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/memories/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * List memories\n * List all memories for the authenticated user with pagination.\n\n**ID Prefix Search:**\nUse the `idPrefix` parameter for git-style short ID lookup. This enables efficient\nserver-side filtering instead of fetching all memories and filtering client-side.\n- Minimum 6 characters required for `idPrefix`\n- Returns matching memories directly (no need for secondary fetch)\n- Example: `?idPrefix=2d09116a` finds memories starting with that prefix\n\n * @param idPrefix - Filter memories by ID prefix (git-style short ID lookup). Minimum 6 characters.\n * @param limit - Maximum number of memories to return\n * @param offset - Number of memories to skip\n * @param page - Page number (alternative to offset)\n */\n async listMemories(options?: { idPrefix?: string; limit?: number; offset?: number; page?: number }): Promise<HttpResponse<{ data?: Memory[]; pagination?: Pagination }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.idPrefix !== undefined) {\n request.addQueryParam('idPrefix', {\n key: 'idPrefix',\n value: options.idPrefix,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.page !== undefined) {\n request.addQueryParam('page', {\n key: 'page',\n value: options.page,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create a memory\n * Create a new memory for the authenticated user.\n\n**Conversation Management:**\n- Use `conversationId: \"NEW\"` to create a new conversation automatically\n- Provide an existing conversation ID to add to that conversation\n\n**Session Management:**\n- Sessions are automatically assigned based on 90-minute gap detection\n- If the last memory in the conversation was within 90 minutes, the same session is reused\n- If the gap exceeds 90 minutes, a new session is created\n\n**Response:**\n- Returns the created memory in `data` field\n- Returns session/conversation metadata in `meta` field\n\n * @param body - Request body\n */\n async createMemory(body: { conversationId: string; name?: string; content: string; memoryType?: 'episodic' | 'semantic' | 'procedural'; role?: 'user' | 'assistant' | 'system'; context?: string; topics?: string[]; eventTime?: string; validFrom?: string; validTo?: string }): Promise<HttpResponse<{ data: Memory; meta: CreateMemoryResponseMeta }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Search memories (GET)\n * Search memories using query parameters. Provides the same functionality as\nPOST /api/memories/search but accepts parameters via query string.\n\n**Benefits of GET:**\n- Faster response times (~3x improvement)\n- Browser/CDN caching support\n- Simpler integration for read-only clients\n\n**Search Methods:**\n- **hybrid** (default): Combines semantic and keyword search with Reciprocal Rank Fusion\n- **semantic**: Vector-based semantic search using OpenAI embeddings\n- **keyword**: Traditional fulltext search using Lucene\n\n**Array Parameters:**\n- `topics`: Provide as comma-separated values (e.g., `topics=typescript,api-design`)\n\n * @param q - Search query string\n * @param searchMethod - Search algorithm to use\n * @param limit - Maximum number of results to return\n * @param offset - Number of results to skip for pagination\n * @param threshold - Minimum similarity threshold for semantic search\n * @param mode - Content filtering mode\n * @param vectorWeight - Weight for vector similarity in hybrid search\n * @param fulltextWeight - Weight for fulltext matching in hybrid search\n * @param topics - Comma-separated list of topics to filter by (include memories with ANY of these topics)\n * @param excludeTopics - Comma-separated list of topics to exclude (exclude memories with ANY of these topics)\n * @param memoryType - Filter by memory type\n * @param conversationId - Filter by conversation ID\n * @param explain - Include detailed match explanations in results\n * @param includeTopics - Include associated topics in results\n * @param includeEntities - Include mentioned entities in results\n * @param asOfTime - Point-in-time query (ISO 8601 datetime)\n * @param validAtTime - Filter by validity time (ISO 8601 datetime)\n * @param eventTimeFrom - Event time range start (ISO 8601 datetime)\n * @param eventTimeTo - Event time range end (ISO 8601 datetime)\n * @param ingestionTimeFrom - Ingestion time range start (ISO 8601 datetime)\n * @param ingestionTimeTo - Ingestion time range end (ISO 8601 datetime)\n * @param includeExpired - Include expired memories in results\n * @param temporalMode - Temporal query mode\n */\n async searchMemoriesGet(options?: { q?: string; searchMethod?: 'keyword' | 'semantic' | 'hybrid'; limit?: number; offset?: number; threshold?: number; mode?: 'unified' | 'content' | 'facts'; vectorWeight?: number; fulltextWeight?: number; topics?: string; excludeTopics?: string; memoryType?: 'episodic' | 'semantic' | 'procedural'; conversationId?: string; explain?: boolean; includeTopics?: boolean; includeEntities?: boolean; asOfTime?: string; validAtTime?: string; eventTimeFrom?: string; eventTimeTo?: string; ingestionTimeFrom?: string; ingestionTimeTo?: string; includeExpired?: boolean; temporalMode?: 'current' | 'historical' | 'evolution' }): Promise<HttpResponse<{ data: SearchResult[]; searchMethod?: string; pagination: { limit: number; offset: number; count: number }; temporalMetadata: TemporalMetadata }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.q !== undefined) {\n request.addQueryParam('q', {\n key: 'q',\n value: options.q,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.searchMethod !== undefined) {\n request.addQueryParam('searchMethod', {\n key: 'searchMethod',\n value: options.searchMethod,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.threshold !== undefined) {\n request.addQueryParam('threshold', {\n key: 'threshold',\n value: options.threshold,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.mode !== undefined) {\n request.addQueryParam('mode', {\n key: 'mode',\n value: options.mode,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.vectorWeight !== undefined) {\n request.addQueryParam('vectorWeight', {\n key: 'vectorWeight',\n value: options.vectorWeight,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.fulltextWeight !== undefined) {\n request.addQueryParam('fulltextWeight', {\n key: 'fulltextWeight',\n value: options.fulltextWeight,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.topics !== undefined) {\n request.addQueryParam('topics', {\n key: 'topics',\n value: options.topics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.excludeTopics !== undefined) {\n request.addQueryParam('excludeTopics', {\n key: 'excludeTopics',\n value: options.excludeTopics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.memoryType !== undefined) {\n request.addQueryParam('memoryType', {\n key: 'memoryType',\n value: options.memoryType,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.conversationId !== undefined) {\n request.addQueryParam('conversationId', {\n key: 'conversationId',\n value: options.conversationId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.explain !== undefined) {\n request.addQueryParam('explain', {\n key: 'explain',\n value: options.explain,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeTopics !== undefined) {\n request.addQueryParam('includeTopics', {\n key: 'includeTopics',\n value: options.includeTopics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeEntities !== undefined) {\n request.addQueryParam('includeEntities', {\n key: 'includeEntities',\n value: options.includeEntities,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.asOfTime !== undefined) {\n request.addQueryParam('asOfTime', {\n key: 'asOfTime',\n value: options.asOfTime,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.validAtTime !== undefined) {\n request.addQueryParam('validAtTime', {\n key: 'validAtTime',\n value: options.validAtTime,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.eventTimeFrom !== undefined) {\n request.addQueryParam('eventTimeFrom', {\n key: 'eventTimeFrom',\n value: options.eventTimeFrom,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.eventTimeTo !== undefined) {\n request.addQueryParam('eventTimeTo', {\n key: 'eventTimeTo',\n value: options.eventTimeTo,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.ingestionTimeFrom !== undefined) {\n request.addQueryParam('ingestionTimeFrom', {\n key: 'ingestionTimeFrom',\n value: options.ingestionTimeFrom,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.ingestionTimeTo !== undefined) {\n request.addQueryParam('ingestionTimeTo', {\n key: 'ingestionTimeTo',\n value: options.ingestionTimeTo,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeExpired !== undefined) {\n request.addQueryParam('includeExpired', {\n key: 'includeExpired',\n value: options.includeExpired,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.temporalMode !== undefined) {\n request.addQueryParam('temporalMode', {\n key: 'temporalMode',\n value: options.temporalMode,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Search all memories\n * Search memories using different search methods:\n- **hybrid** (default): Combines semantic and keyword search with Reciprocal Rank Fusion\n- **semantic**: Vector-based semantic search using OpenAI embeddings\n- **keyword**: Traditional fulltext search using Lucene\n\nThe `mode` parameter controls content filtering (unified, content, facts).\nThe `searchMethod` parameter controls the search algorithm.\n\n * @param body - Request body\n */\n async searchMemories(body: { query: string; mode?: 'unified' | 'content' | 'facts'; searchMethod?: 'keyword' | 'semantic' | 'hybrid'; limit?: number; offset?: number; vectorWeight?: number; fulltextWeight?: number; threshold?: number; explain?: boolean; asOfTime?: string; validAtTime?: string; eventTimeFrom?: string; eventTimeTo?: string; ingestionTimeFrom?: string; ingestionTimeTo?: string; includeExpired?: boolean; temporalMode?: 'current' | 'historical' | 'evolution'; topics?: string[]; memoryType?: 'episodic' | 'semantic' | 'procedural'; conversationId?: string; includeTopics?: boolean; includeEntities?: boolean; includeFacts?: boolean; entityTypes?: string[] }): Promise<HttpResponse<{ data: SearchResult[]; searchMethod?: string; pagination: { limit: number; offset: number; count: number }; temporalMetadata: TemporalMetadata }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get multiple memories by IDs\n * Retrieve multiple memories by their IDs in a single request.\nMore efficient than making multiple individual GET requests.\n\nReturns memories in the order requested, with metadata about\nwhich IDs were found or missing.\n\n * @param body - Request body\n */\n async getMemoriesBatch(body: { ids: string[] }): Promise<HttpResponse<{ data: Memory[]; meta: BatchGetMemoriesMeta }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/batch',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Generate memory digest\n * Synthesizes a comprehensive, structured briefing from all relevant memories\non a topic. Instead of multiple search rounds, one call returns a complete digest.\n\n**Formats:**\n- `structured` (default): Sections with headers, bullet points, key decisions\n- `narrative`: Chronological prose narrative\n- `timeline`: Dated event list\n- `status-report`: Done/In Progress/Blocked grouping\n\n**Pipeline:**\n1. Gather: High-limit search + conversation expansion\n2. Organize: Group by conversation, status, timeline\n3. Synthesize: LLM generates formatted digest\n\nRequires an LLM provider to be configured (EXTRACTION_ENABLED=true).\nReturns 503 if the LLM provider is unavailable and 3+ memories are found.\n\n * @param body - Request body\n */\n async generateMemoryDigest(body: { query: string; recent?: string; topics?: string[]; conversationIds?: string[]; format?: 'structured' | 'narrative' | 'timeline' | 'status-report'; maxSources?: number; includeMemoryIds?: boolean }): Promise<HttpResponse<{ digest: string; metadata: DigestMetadata; sources: DigestSource[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/digest',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get version history for a named memory\n * Returns the full version chain for a named memory, ordered newest-first.\nWalks the SUPERSEDES chain from HEAD backwards.\n\n * @param name - Memory name (kebab-case, 2-64 chars)\n */\n async getNamedMemoryHistory(name: string): Promise<HttpResponse<{ name: string; versions: { version: number; id: string; content: string; effectiveState?: 'current' | 'superseded' | 'contradicted'; createdAt: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/named/{name}/history',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('name', {\n key: 'name',\n value: name,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Get a memory by name\n * Retrieve the current HEAD version of a named memory by its user-assigned name.\nReturns the memory with topic breakdown and entities, same as GET /api/memories/{id}.\n\n * @param name - Memory name (kebab-case, 2-64 chars)\n */\n async getMemoryByName(name: string): Promise<HttpResponse<{ data: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/named/{name}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('name', {\n key: 'name',\n value: name,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Update a named memory (create new version)\n * Creates a new version of a named memory. The name pointer moves to the new version,\nand a SUPERSEDES relationship links the new version to the old one.\nThe old version's effectiveState becomes 'superseded'.\n\n * @param name - Memory name (kebab-case, 2-64 chars)\n * @param body - Request body\n */\n async updateNamedMemory(name: string, body: { content: string; memoryType?: 'episodic' | 'semantic' | 'procedural'; context?: string; topics?: string[] }): Promise<HttpResponse<{ data?: Memory; meta?: { previousVersionId?: string; version?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PUT',\n path: '/api/memories/named/{name}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('name', {\n key: 'name',\n value: name,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find similar memories\n * Find memories that are semantically similar to the given memory.\n\nUses vector similarity search if embeddings are available for the memory.\nFalls back to topic-based similarity if embeddings are not available.\n\nThe `relationship` field in results indicates the method used:\n- `similar` - Found via vector/semantic similarity\n- `similar-by-topic` - Fallback using shared topics\n\n * @param id - The source memory ID\n * @param limit - Maximum number of similar memories to return\n */\n async getSimilarMemories(id: string, options?: { limit?: number }): Promise<HttpResponse<{ data?: RelatedMemoryResult[]; sourceMemory?: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/similar',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find memories from same conversation\n * Find other memories that belong to the same conversation as the given memory.\n\nReturns memories sorted chronologically (oldest first) to show the conversation flow.\nIf the memory doesn't belong to a conversation, returns an empty array.\n\n * @param id - The source memory ID\n * @param limit - Maximum number of conversation memories to return\n */\n async getConversationMemories(id: string, options?: { limit?: number }): Promise<HttpResponse<{ data?: RelatedMemoryResult[]; sourceMemory?: Memory; conversationId?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/conversation-memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find related memories by topics\n * Find memories that share topics with the given memory.\n\nThe score indicates the ratio of shared topics (1.0 = all topics match).\nResults are sorted by score (most related first), then by timestamp.\n\nIf the source memory has no topics, returns an empty array.\n\n * @param id - The source memory ID\n * @param limit - Maximum number of related memories to return\n */\n async getRelatedMemories(id: string, options?: { limit?: number }): Promise<HttpResponse<{ data?: { memory: { id: string; name?: string; version?: number; content: string; memoryType: 'episodic' | 'semantic' | 'procedural'; context?: string; topics?: string[]; timestamp?: string; eventTime?: string; validFrom?: string; validTo?: string; createdAt: string; updatedAt: string; confidenceScore?: number; confidenceBasis?: 'direct-statement' | 'repeated-mention' | 'single-mention' | 'hedged' | 'inference' | 'external-source' | 'contradicted'; effectiveState?: 'current' | 'superseded' | 'contradicted'; extractionStatus?: 'pending' | 'completed' | 'failed' | 'skipped'; extractionCompletedAt?: string; extractedTopicCount?: number; extractedFactCount?: number; extractedEntityCount?: number; userTopics?: string[]; extractedTopics?: string[]; entities?: { name: string; type: string; confidence?: number }[] }; score: number; relationship: string; sharedTopics?: string[] }[]; sourceMemory?: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/related',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get relationships for a memory\n * Retrieve all relationships for a memory.\n\n**Direction Options:**\n- **outgoing**: Relationships where this memory is the source\n- **incoming**: Relationships where this memory is the target\n- **both**: All relationships involving this memory\n\n * @param id - The memory ID\n * @param direction - Direction of relationships to retrieve\n */\n async getMemoryRelationships(id: string, options?: { direction?: 'outgoing' | 'incoming' | 'both' }): Promise<HttpResponse<{ data: MemoryRelationship[]; sourceMemoryId: string; direction: 'outgoing' | 'incoming' | 'both' }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/relationships',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.direction !== undefined) {\n request.addQueryParam('direction', {\n key: 'direction',\n value: options.direction,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create a relationship between memories\n * Create a relationship between the source memory and a target memory.\n\n**Relationship Types:**\n- **SUPERSEDES**: The source memory replaces/updates the target memory\n- **FOLLOWS**: The source memory follows chronologically from the target\n- **RESOLVES**: The source memory resolves an issue mentioned in the target\n- **CONTRADICTS**: The source memory contradicts the target memory\n- **REFERENCES**: The source memory references the target memory\n\nWhen creating SUPERSEDES or CONTRADICTS relationships, the target memory's\neffectiveState will be automatically updated.\n\n * @param id - The source memory ID\n * @param body - Request body\n */\n async createMemoryRelationship(id: string, body: { targetMemoryId: string; type: 'SUPERSEDES' | 'FOLLOWS' | 'RESOLVES' | 'CONTRADICTS' | 'REFERENCES'; confidence?: number; reason?: string }): Promise<HttpResponse<{ data?: MemoryRelationship }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/{id}/relationships',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete a relationship\n * Delete a specific relationship from a memory\n * @param id - The source memory ID\n * @param relationshipId - The relationship ID to delete\n */\n async deleteMemoryRelationship(id: string, relationshipId: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/memories/{id}/relationships/{relationshipId}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n request.addPathParam('relationshipId', {\n key: 'relationshipId',\n value: relationshipId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Get timeline context for a memory\n * Get the chronological context around a memory.\nReturns preceding and following memories ordered by event time.\nUseful for understanding the narrative flow.\n\n * @param id - The memory ID\n * @param before - Number of preceding memories to return\n * @param after - Number of following memories to return\n */\n async getMemoryTimeline(id: string, options?: { before?: number; after?: number }): Promise<HttpResponse<{ data?: { memory?: Memory; preceding?: Memory[]; following?: Memory[] } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/timeline',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.before !== undefined) {\n request.addQueryParam('before', {\n key: 'before',\n value: options.before,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.after !== undefined) {\n request.addQueryParam('after', {\n key: 'after',\n value: options.after,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Detect potential relationships for a memory\n * Analyze a memory and detect potential relationships with other memories.\nUses semantic similarity and pattern detection to suggest relationships.\n\nSet `autoCreate: true` to automatically create high-confidence relationships.\n\n * @param id - The memory ID\n * @param body - Request body\n */\n async detectMemoryRelationships(id: string, options?: { body?: { autoCreate?: boolean; minConfidence?: number } }): Promise<HttpResponse<{ data?: { targetMemoryId?: string; type?: 'SUPERSEDES' | 'FOLLOWS' | 'RESOLVES' | 'CONTRADICTS' | 'REFERENCES'; confidence?: number; reason?: string }[]; autoCreated?: boolean }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/{id}/detect-relationships',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * MonitoringService - Observability and metrics endpoints for production monitoring API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Observability and metrics endpoints for production monitoring\n */\nexport class MonitoringService extends BaseService {\n\n /**\n * Prometheus metrics endpoint\n * Returns Prometheus-formatted metrics for monitoring and observability.\nThis endpoint is public and requires no authentication.\nDesigned to be scraped by Prometheus at regular intervals.\n\n */\n async getMetrics(): Promise<HttpResponse<unknown>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/metrics',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n}","/**\n * NarrativesService - Narrative thread management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { NarrativeThread, NarrativeMemory } from '../models/types.js';\n\n/**\n * Narrative thread management endpoints\n */\nexport class NarrativesService extends BaseService {\n\n /**\n * List narrative threads\n * List all narrative threads for the authenticated user.\nNarratives group related memories into coherent storylines.\n\n * @param limit - Maximum number of narratives to return\n * @param offset - Number of narratives to skip\n * @param state - Filter by narrative state\n * @param topics - Comma-separated list of topics to filter by\n */\n async listNarratives(options?: { limit?: number; offset?: number; state?: 'open' | 'resolved' | 'reopened' | 'superseded'; topics?: string }): Promise<HttpResponse<{ data: NarrativeThread[]; pagination: { limit: number; offset: number; count: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/narratives',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.state !== undefined) {\n request.addQueryParam('state', {\n key: 'state',\n value: options.state,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.topics !== undefined) {\n request.addQueryParam('topics', {\n key: 'topics',\n value: options.topics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create a narrative thread\n * Create a new narrative thread starting from a root memory.\nNarratives help organize related memories into coherent storylines.\n\n * @param body - Request body\n */\n async createNarrative(body: { title: string; rootMemoryId: string; topics?: string[] }): Promise<HttpResponse<{ data: NarrativeThread }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/narratives',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get a narrative thread\n * Retrieve a specific narrative thread by ID\n * @param id - The narrative ID\n */\n async getNarrative(id: string): Promise<HttpResponse<{ data: NarrativeThread }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/narratives/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Delete a narrative thread\n * Delete a narrative thread.\nThis does not delete the associated memories, only the narrative structure.\n\n * @param id - The narrative ID\n */\n async deleteNarrative(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/narratives/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Update a narrative thread\n * Update a narrative thread's title, topics, or state.\nUse this to resolve, reopen, or modify narratives.\n\n * @param id - The narrative ID\n * @param body - Request body\n */\n async updateNarrative(id: string, body: { title?: string; state?: 'open' | 'resolved' | 'reopened' | 'superseded'; resolutionMemoryId?: string; topics?: string[] }): Promise<HttpResponse<{ data: NarrativeThread }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/narratives/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get narrative timeline\n * Get all memories in a narrative, ordered by their position in the narrative.\nEach memory includes its position and effective state.\n\n * @param id - The narrative ID\n * @param limit - Maximum number of memories to return\n * @param offset - Number of memories to skip\n */\n async getNarrativeTimeline(id: string, options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data: NarrativeMemory[]; narrative: NarrativeThread; pagination: { limit: number; offset: number; total: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/narratives/{id}/timeline',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Add a memory to a narrative\n * Add an existing memory to a narrative thread.\nOptionally specify a position to insert the memory at.\n\n * @param id - The narrative ID\n * @param body - Request body\n */\n async addMemoryToNarrative(id: string, body: { memoryId: string; position?: number }): Promise<HttpResponse<{ data: NarrativeThread }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/narratives/{id}/memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Remove a memory from a narrative\n * Remove a memory from a narrative thread.\nThis does not delete the memory itself, only removes it from the narrative.\n\n * @param id - The narrative ID\n * @param memoryId - The memory ID to remove\n */\n async removeMemoryFromNarrative(id: string, memoryId: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/narratives/{id}/memories/{memoryId}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n request.addPathParam('memoryId', {\n key: 'memoryId',\n value: memoryId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n}","/**\n * SystemService - System health, monitoring, and configuration endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * System health, monitoring, and configuration endpoints\n */\nexport class SystemService extends BaseService {\n\n /**\n * Get OpenAPI specification\n * Returns the OpenAPI 3.x specification for the entire API. This endpoint is used by CI/CD to sync the API Gateway.\n * @param noCache - Bypass cache and regenerate specification\n */\n async getOpenApiSpec(options?: { noCache?: '1' | 'true' }): Promise<HttpResponse<Record<string, unknown>>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/openapi.json',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.noCache !== undefined) {\n request.addQueryParam('noCache', {\n key: 'noCache',\n value: options.noCache,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get system health status\n * Get the current health status of the system including database connectivity\n */\n async getSystemHealth(): Promise<HttpResponse<{ data?: { status?: 'healthy' | 'unhealthy'; database?: Record<string, unknown>; uptime?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/system/health',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Get context status\n * Get database statistics and context information\n */\n async getContextStatus(): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/system/context/status',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Get feature flags\n * Get all feature flags for the authenticated user\n */\n async getFeatureFlags(): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/system/feature-flags',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Evaluate feature flag\n * Evaluate a specific feature flag for the authenticated user\n * @param body - Request body\n */\n async evaluateFeatureFlag(body: { flagName: string; context?: Record<string, unknown> }): Promise<HttpResponse<{ data?: { enabled?: boolean; flagName?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/system/feature-flags/evaluate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Analyze memory quality distribution\n * Analyze the quality distribution of memories for the authenticated user\n * @param includeDetails - Include detailed pruning candidate information\n * @param minQualityThreshold - Minimum quality threshold for pruning candidates (default 0.4)\n */\n async analyzeMemoryQuality(options?: { includeDetails?: boolean; minQualityThreshold?: number }): Promise<HttpResponse<{ data?: { totalMemories?: number; qualityDistribution?: { high?: number; medium?: number; low?: number }; averageQuality?: number; pruningCandidates?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/system/memory/quality',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.includeDetails !== undefined) {\n request.addQueryParam('includeDetails', {\n key: 'includeDetails',\n value: options.includeDetails,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.minQualityThreshold !== undefined) {\n request.addQueryParam('minQualityThreshold', {\n key: 'minQualityThreshold',\n value: options.minQualityThreshold,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Prune low-quality memories\n * Prune (soft delete) low-quality memories for the authenticated user\n * @param body - Request body\n */\n async pruneMemories(options?: { body?: { targetReduction?: number; minQualityThreshold?: number; preserveRecent?: boolean; recentDaysToPreserve?: number; dryRun?: boolean } }): Promise<HttpResponse<{ data?: { prunedCount?: number; prunedIds?: string[]; dryRun?: boolean } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/system/memory/prune',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * PatternsService - Pattern detection and behavioral analysis endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Pattern } from '../models/types.js';\n\n/**\n * Pattern detection and behavioral analysis endpoints\n */\nexport class PatternsService extends BaseService {\n\n /**\n * List patterns\n * List all patterns for the authenticated user\n * @param limit - Maximum number of patterns to return\n * @param offset - Number of patterns to skip\n */\n async listPatterns(options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data?: Pattern[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/patterns',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Compile patterns\n * Compile patterns from user's memories\n * @param body - Request body\n */\n async compilePatterns(options?: { body?: { minOccurrences?: number; timeWindow?: string } }): Promise<HttpResponse<{ data?: Pattern[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/compile',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Detect behavioral patterns\n * Run pattern detection algorithms to identify recurring behavioral patterns\n * @param body - Request body\n */\n async detectPatterns(options?: { body?: { contextFilter?: string; timeframeStart?: string; timeframeEnd?: string; minConfidence?: number; maxResults?: number; autoStore?: boolean } }): Promise<HttpResponse<{ data?: { detectedPatterns?: Pattern[]; count?: number; stored?: number; confidence?: { average?: number; highest?: number } } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/detect',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Analyze pattern trends\n * Analyze pattern trends, correlations, and generate insights\n * @param body - Request body\n */\n async analyzePatterns(options?: { body?: { timeRange?: number; groupBy?: 'type' | 'context' | 'confidence'; includeDetails?: boolean } }): Promise<HttpResponse<{ data?: { analysis?: { totalPatterns?: number; recentPatterns?: number; trends?: Record<string, unknown>; insights?: string[]; recommendations?: string[] }; timeRange?: number; analyzedAt?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/analyze',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Update pattern\n * Update an existing pattern with partial data\n * @param id - The pattern ID\n * @param body - Request body\n */\n async updatePattern(id: string, body: { name?: string; description?: string; confidence?: number; metadata?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Pattern }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/patterns/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Record pattern feedback\n * Record feedback on a pattern\n * @param body - Request body\n */\n async recordPatternFeedback(body: { patternId: string; feedback: string }): Promise<HttpResponse<{ data?: Pattern }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/feedback',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * BehaviorService - Behavioral pattern tracking and state management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Behavioral pattern tracking and state management endpoints\n */\nexport class BehaviorService extends BaseService {\n\n /**\n * Get behavioral state\n * Get current behavioral state for the authenticated user\n */\n async getBehavioralState(): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/patterns/behavior/state',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Update behavioral state\n * Update or mutate behavioral state\n * @param body - Request body\n */\n async updateBehavioralState(options?: { body?: { state?: Record<string, unknown>; mutations?: Record<string, unknown> } }): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/behavior/state',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * TopicsService - Topic detection, clustering, and management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Topic, Community } from '../models/types.js';\n\n/**\n * Topic detection, clustering, and management endpoints\n */\nexport class TopicsService extends BaseService {\n\n /**\n * List topics\n * List all topics with pagination\n * @param limit - Maximum number of topics to return\n * @param offset - Number of topics to skip\n */\n async listTopics(options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data?: Topic[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/topics',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get topic by ID\n * Retrieve a specific topic by its ID\n * @param id - The topic ID\n */\n async getTopicById(id: string): Promise<HttpResponse<{ data?: Topic }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/topics/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Merge topics\n * Merge two topics into one\n * @param body - Request body\n */\n async mergeTopics(body: { sourceTopicId: string; targetTopicId: string }): Promise<HttpResponse<{ data?: Topic }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/merge',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Discover related topics\n * Discover topics related to a given topic\n * @param body - Request body\n */\n async discoverRelatedTopics(body: { topicId: string; limit?: number }): Promise<HttpResponse<{ data?: Topic[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/discover-related',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Calculate topic similarity\n * Calculate similarity score between two topics\n * @param body - Request body\n */\n async calculateTopicSimilarity(body: { topicId1: string; topicId2: string }): Promise<HttpResponse<{ data?: { similarity?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/similarity',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find similar topics\n * Find topics similar to a given topic\n * @param body - Request body\n */\n async findSimilarTopics(body: { topicId: string; threshold?: number; limit?: number }): Promise<HttpResponse<{ data?: { topic?: Topic; similarity?: number }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/similar',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Cluster topics\n * Cluster topics using community detection algorithms\n * @param body - Request body\n */\n async clusterTopics(options?: { body?: { minClusterSize?: number } }): Promise<HttpResponse<{ data?: { clusters?: Record<string, unknown>[]; clusterCount?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/cluster',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Detect communities\n * Detect communities in the topic graph using specified algorithm\n * @param body - Request body\n */\n async detectCommunities(options?: { body?: { algorithm?: string } }): Promise<HttpResponse<{ data?: { communities?: Community[]; communityCount?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/detect-communities',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Search topics\n * Search topics by query string using fulltext search\n * @param body - Request body\n */\n async searchTopics(body: { query: string; limit?: number; offset?: number }): Promise<HttpResponse<{ data?: Record<string, unknown>[]; total?: number; limit?: number; offset?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * UsersService - User management and profile endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { User, UserUsage, Memory, Conversation, Fact, Pattern } from '../models/types.js';\n\n/**\n * User management and profile endpoints\n */\nexport class UsersService extends BaseService {\n\n /**\n * Sync user from WorkOS\n * Called by the customer portal after WorkOS authentication.\nCreates a new user if they don't exist, or updates their profile if they do.\nThis is the main entry point for user provisioning.\nWhen the invite gate is closed and a new user is created, the inviteCode\nis redeemed atomically to track which code was used for registration.\n\n * @param body - Request body\n */\n async syncUser(body: { workosId: string; email: string; firstName?: string; lastName?: string; profilePictureUrl?: string; inviteCode?: string }): Promise<HttpResponse<{ data?: User; created?: boolean }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/users/sync',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get current user\n * Get the currently authenticated user's profile and usage information\n */\n async getCurrentUser(): Promise<HttpResponse<{ data?: User; usage?: UserUsage }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/users/me',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Update current user\n * Update the currently authenticated user's profile\n * @param body - Request body\n */\n async updateCurrentUser(options?: { body?: { firstName?: string; lastName?: string; profilePictureUrl?: string } }): Promise<HttpResponse<{ data?: User }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/users/me',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get current user's usage\n * Get the currently authenticated user's memory usage statistics\n */\n async getCurrentUserUsage(): Promise<HttpResponse<{ data?: UserUsage }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/users/me/usage',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Export all user data\n * Export all user data as a JSON archive. Includes profile, memories,\nconversations, facts, and patterns. Supports GDPR Article 20\n(right to data portability). Sensitive fields (Stripe customer ID,\nWorkOS ID, embeddings) are excluded.\n\n */\n async exportUserData(): Promise<HttpResponse<{ exportVersion?: string; exportedAt?: string; counts?: { memories?: number; conversations?: number; facts?: number; patterns?: number }; profile?: Record<string, unknown>; memories?: Memory[]; conversations?: Conversation[]; facts?: Fact[]; patterns?: Pattern[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/users/me/export',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Initiate account deletion\n * Schedule the current user's account for deletion after a 7-day grace period.\nRequires email confirmation. Immediately revokes API keys and cancels\nany active subscription. The account enters read-only mode.\n\n * @param body - Request body\n */\n async initiateAccountDeletion(body: { confirmationEmail: string }): Promise<HttpResponse<{ data?: User; message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/users/me/deletion',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Cancel account deletion\n * Cancel a pending account deletion during the grace period.\nNote: Previously revoked API keys are not restored — new keys must be created.\nStripe subscription may need manual reactivation via the billing portal.\n\n */\n async cancelAccountDeletion(): Promise<HttpResponse<{ data?: User; message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/users/me/deletion',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Get user by ID\n * Get a user by their internal ID (admin only)\n * @param id - \n */\n async getUserById(id: string): Promise<HttpResponse<{ data?: User }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/users/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n}","/**\n * HTTP types for the SDK.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { ZodType } from 'zod';\n\n/** HTTP methods supported by the SDK */\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';\n\n/** OpenAPI parameter serialization styles */\nexport enum SerializationStyle {\n SIMPLE = 'simple',\n LABEL = 'label',\n MATRIX = 'matrix',\n FORM = 'form',\n SPACE_DELIMITED = 'space_delimited',\n PIPE_DELIMITED = 'pipe_delimited',\n DEEP_OBJECT = 'deep_object',\n NONE = 'none',\n}\n\n/** Content types */\nexport enum ContentType {\n Json = 'json',\n Xml = 'xml',\n Pdf = 'pdf',\n Image = 'image',\n File = 'file',\n Binary = 'binary',\n FormUrlEncoded = 'form',\n Text = 'text',\n MultipartFormData = 'multipartFormData',\n EventStream = 'eventStream',\n NoContent = 'noContent',\n}\n\n/** HTTP request structure */\nexport interface HttpRequest {\n baseUrl: string;\n method: HttpMethod;\n path: string;\n headers: Map<string, unknown>;\n body?: BodyInit;\n abortSignal?: AbortSignal;\n queryParams: Map<string, unknown>;\n pathParams: Map<string, unknown>;\n}\n\n/** HTTP response metadata */\nexport interface HttpMetadata {\n status: number;\n statusText: string;\n headers: Record<string, string>;\n}\n\n/** HTTP response */\nexport interface HttpResponse<T = unknown> {\n data?: T;\n metadata: HttpMetadata;\n raw: ArrayBuffer;\n}\n\n/** HTTP error response */\nexport interface HttpError {\n error: string;\n metadata: HttpMetadata;\n}\n\n/** SDK configuration */\nexport interface SdkConfig {\n baseUrl?: string;\n environment?: Environment;\n timeoutMs?: number;\n token?: string;\n retry?: RetryOptions;\n validation?: ValidationOptions;\n}\n\n/** Available environments */\nexport enum Environment {\n DEFAULT = 'http://localhost:3000',\n}\n\n/** Retry options */\nexport interface RetryOptions {\n attempts: number;\n delayMs?: number;\n maxDelayMs?: number;\n jitterMs?: number;\n backoffFactor?: number;\n httpCodesToRetry?: number[];\n httpMethodsToRetry?: string[];\n}\n\n/** Validation options */\nexport interface ValidationOptions {\n responseValidation?: boolean;\n}\n\n/** Request parameter with serialization info */\nexport interface RequestParameter {\n key: string | undefined;\n value: unknown;\n explode: boolean;\n encode: boolean;\n style: SerializationStyle;\n isLimit: boolean;\n isOffset: boolean;\n isCursor: boolean;\n}\n\n/** Response definition for validation */\nexport interface ResponseDefinition {\n schema: ZodType;\n contentType: ContentType;\n status: number;\n}\n\n/** Error definition */\nexport interface ErrorDefinition {\n error: new (...args: any[]) => Error;\n contentType: ContentType;\n status: number;\n}\n\n/** Hook interface for request/response interception */\nexport interface Hook {\n beforeRequest(request: HttpRequest, params: Map<string, string>): Promise<HttpRequest>;\n afterResponse(request: HttpRequest, response: HttpResponse<any>, params: Map<string, string>): Promise<HttpResponse<any>>;\n onError(request: HttpRequest, response: HttpResponse<any>, params: Map<string, string>): Promise<HttpError>;\n}\n","/**\n * Zod schemas for API models.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\n\nexport const error = z.object({\n /** Error message */\n error: z.string(),\n});\n\nexport const pagination = z.object({\n /** Maximum number of items per page */\n limit: z.number().min(1),\n /** Number of items to skip */\n offset: z.number().min(0),\n /** Total number of items */\n count: z.number().min(0),\n});\n\nexport const memory = z.object({\n /** Unique memory identifier */\n id: z.string(),\n /** Optional human-readable name for deterministic retrieval. Only the HEAD version carries the name. */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/).optional(),\n /** Version number for named memories (1 for first version, increments on update) */\n version: z.number().min(1).optional(),\n /** Memory content */\n content: z.string(),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']),\n /** Context or domain of the memory */\n context: z.string().optional(),\n /** Associated topics */\n topics: z.array(z.string()).optional(),\n /** System ingestion timestamp (when the system learned about this) */\n timestamp: z.string().datetime().optional(),\n /** Event time (when the event actually occurred in reality) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time (when this fact becomes valid) */\n validFrom: z.string().datetime().optional(),\n /** Validity end time (when this fact expires, null means never expires) */\n validTo: z.string().datetime().nullable().optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n /** Confidence score (0-1) for this memory's accuracy */\n confidenceScore: z.number().min(0).max(1).optional(),\n /** Basis for the confidence score */\n confidenceBasis: z.enum(['direct-statement', 'repeated-mention', 'single-mention', 'hedged', 'inference', 'external-source', 'contradicted']).optional(),\n /** Effective state of the memory in the narrative */\n effectiveState: z.enum(['current', 'superseded', 'contradicted']).optional(),\n /** Status of automatic content extraction */\n extractionStatus: z.enum(['pending', 'completed', 'failed', 'skipped']).optional(),\n /** When extraction was completed */\n extractionCompletedAt: z.string().datetime().optional(),\n /** Number of topics extracted from content */\n extractedTopicCount: z.number().min(0).optional(),\n /** Number of facts extracted from content */\n extractedFactCount: z.number().min(0).optional(),\n /** Number of entities extracted from content */\n extractedEntityCount: z.number().min(0).optional(),\n /** Topics explicitly provided by the user */\n userTopics: z.array(z.string()).optional(),\n /** Topics automatically extracted from content */\n extractedTopics: z.array(z.string()).optional(),\n /** Entities extracted from memory content */\n entities: z.array(z.object({\n /** Entity name */\n name: z.string(),\n /** Entity type */\n type: z.string(),\n /** Extraction confidence */\n confidence: z.number().min(0).max(1).optional(),\n})).optional(),\n});\n\nexport const createMemoryRequest = z.object({\n /** Conversation ID - use \"NEW\" to create a new conversation or provide existing conversation ID */\n conversationId: z.string().min(1),\n /** Optional human-readable name for deterministic retrieval. Must be unique per user. */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/).optional(),\n /** Memory content */\n content: z.string().min(1).max(50000),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Role (MCP protocol compatibility) */\n role: z.enum(['user', 'assistant', 'system']).optional(),\n /** Context or domain */\n context: z.string().max(200).optional(),\n /** Associated topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n /** Event time (when the event actually occurred in reality, ISO 8601 format) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time (when this fact becomes valid, ISO 8601 format) */\n validFrom: z.string().datetime().optional(),\n /** Validity end time (when this fact expires, ISO 8601 format, omit for never expires) */\n validTo: z.string().datetime().optional(),\n});\n\nexport const updateMemoryRequest = z.object({\n /** Updated memory content */\n content: z.string().min(1).max(50000).optional(),\n /** Assign or remove a name. Set to a valid name to assign, empty string to remove. */\n name: z.union([z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/), z.enum([''])]).optional(),\n /** Updated memory type */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Updated context or domain */\n context: z.string().max(200).optional(),\n /** Updated topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n});\n\nexport const createMemoryResponseMeta = z.object({\n /** Conversation ID (actual ID if \"NEW\" was provided) */\n conversationId: z.string(),\n /** Auto-assigned session ID based on 90-minute gap detection */\n sessionId: z.string(),\n /** Whether a new session was created (true) or existing session was reused (false) */\n sessionCreated: z.boolean(),\n /** Whether a new conversation was created (true if conversationId was \"NEW\") */\n conversationCreated: z.boolean(),\n});\n\n/**\n * Response from creating a memory, includes the memory and session/conversation metadata\n */\nexport const createMemoryResponse = z.lazy(() => z.object({\n data: memory,\n meta: createMemoryResponseMeta,\n}));\n\nexport const relatedMemoryResult = z.object({\n memory: z.object({\n /** Unique memory identifier */\n id: z.string(),\n /** Optional human-readable name for deterministic retrieval. Only the HEAD version carries the name. */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/).optional(),\n /** Version number for named memories (1 for first version, increments on update) */\n version: z.number().min(1).optional(),\n /** Memory content */\n content: z.string(),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']),\n /** Context or domain of the memory */\n context: z.string().optional(),\n /** Associated topics */\n topics: z.array(z.string()).optional(),\n /** System ingestion timestamp (when the system learned about this) */\n timestamp: z.string().datetime().optional(),\n /** Event time (when the event actually occurred in reality) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time (when this fact becomes valid) */\n validFrom: z.string().datetime().optional(),\n /** Validity end time (when this fact expires, null means never expires) */\n validTo: z.string().datetime().nullable().optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n /** Confidence score (0-1) for this memory's accuracy */\n confidenceScore: z.number().min(0).max(1).optional(),\n /** Basis for the confidence score */\n confidenceBasis: z.enum(['direct-statement', 'repeated-mention', 'single-mention', 'hedged', 'inference', 'external-source', 'contradicted']).optional(),\n /** Effective state of the memory in the narrative */\n effectiveState: z.enum(['current', 'superseded', 'contradicted']).optional(),\n /** Status of automatic content extraction */\n extractionStatus: z.enum(['pending', 'completed', 'failed', 'skipped']).optional(),\n /** When extraction was completed */\n extractionCompletedAt: z.string().datetime().optional(),\n /** Number of topics extracted from content */\n extractedTopicCount: z.number().min(0).optional(),\n /** Number of facts extracted from content */\n extractedFactCount: z.number().min(0).optional(),\n /** Number of entities extracted from content */\n extractedEntityCount: z.number().min(0).optional(),\n /** Topics explicitly provided by the user */\n userTopics: z.array(z.string()).optional(),\n /** Topics automatically extracted from content */\n extractedTopics: z.array(z.string()).optional(),\n /** Entities extracted from memory content */\n entities: z.array(z.object({\n /** Entity name */\n name: z.string(),\n /** Entity type */\n type: z.string(),\n /** Extraction confidence */\n confidence: z.number().min(0).max(1).optional(),\n})).optional(),\n}),\n /** Relevance score (0-1). For similar: semantic similarity. For related: topic overlap ratio. For conversation: position score. */\n score: z.number().min(0).max(1),\n /** Type of relationship: similar, similar-by-topic, conversation, or topic */\n relationship: z.string(),\n /** Topics shared with the source memory (only for topic relationship) */\n sharedTopics: z.array(z.string()).optional(),\n});\n\n/**\n * Response from getting a memory by ID\n */\nexport const getMemoryResponse = z.lazy(() => z.object({\n data: memory,\n}));\n\nexport const updateNamedMemoryRequest = z.object({\n /** New content for the named memory version */\n content: z.string().min(1).max(50000),\n /** Type of memory (defaults to previous version's type) */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Context or domain */\n context: z.string().max(200).optional(),\n /** Associated topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n});\n\nexport const namedMemoryHistoryResponse = z.object({\n /** Human-readable name for deterministic retrieval (kebab-case, 2-64 chars) */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/),\n versions: z.array(z.object({\n /** Version number */\n version: z.number().min(1),\n /** Memory ID for this version */\n id: z.string(),\n /** Memory content at this version */\n content: z.string(),\n /** Effective state — HEAD version is 'current', older versions are 'superseded' */\n effectiveState: z.enum(['current', 'superseded', 'contradicted']).optional(),\n /** When this version was created */\n createdAt: z.string().datetime(),\n})),\n});\n\nexport const batchGetMemoriesRequest = z.object({\n /** Array of memory IDs to retrieve */\n ids: z.array(z.string().uuid()).min(1).max(100),\n});\n\nexport const batchGetMemoriesMeta = z.object({\n /** Number of IDs requested */\n requested: z.number(),\n /** Number of memories found */\n found: z.number(),\n /** IDs that were not found */\n missing: z.array(z.string()),\n});\n\n/**\n * Response from batch memory retrieval\n */\nexport const batchGetMemoriesResponse = z.lazy(() => z.object({\n data: z.array(memory),\n meta: batchGetMemoriesMeta,\n}));\n\nexport const graphRAGQueryRequest = z.object({\n /** GraphRAG query string */\n query: z.string().min(1),\n /** Maximum graph traversal depth (alias: depth) */\n maxDepth: z.number().min(1).max(5).optional(),\n /** Graph traversal depth (deprecated, use maxDepth) */\n depth: z.number().min(1).max(5).optional(),\n /** Maximum number of results to return */\n limit: z.number().min(1).max(100).optional(),\n /** Include relationship data in response */\n includeRelationships: z.boolean().optional(),\n});\n\nexport const graphRAGQueryResponse = z.lazy(() => z.object({\n /** Unique identifier for this query execution */\n queryId: z.string(),\n /** Array of query results with graph context */\n results: z.array(z.object({\n memory: memory,\n /** Relevance score from full-text search */\n score: z.number(),\n /** Topics associated with this memory */\n topics: z.array(z.object({\n\n}).catchall(z.unknown().nullable())),\n /** Entities mentioned in this memory */\n entities: z.array(z.object({\n\n}).catchall(z.unknown().nullable())),\n /** Related memories through shared topics */\n relatedMemories: z.array(z.object({\n\n}).catchall(z.unknown().nullable())),\n})),\n /** Query execution metadata */\n metadata: z.object({\n /** Original query string */\n query: z.string(),\n /** Graph traversal depth used */\n depth: z.number(),\n /** Maximum number of results returned */\n limit: z.number(),\n /** Query execution timestamp */\n timestamp: z.string().datetime(),\n}),\n}));\n\nexport const conversation = z.object({\n /** Unique conversation identifier */\n id: z.string(),\n /** Conversation title */\n title: z.string(),\n /** Conversation summary */\n summary: z.string().nullable(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const createConversationRequest = z.object({\n /** Conversation title */\n title: z.string().min(1),\n /** Optional conversation summary */\n summary: z.string().optional(),\n});\n\nexport const apiKey = z.object({\n /** Unique API key identifier */\n id: z.string(),\n /** Human-readable label for the API key */\n label: z.string(),\n /** API key prefix for identification */\n prefix: z.string(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Expiration timestamp (null if never expires) */\n expiresAt: z.string().datetime().nullable(),\n /** Last usage timestamp (null if never used) */\n lastUsedAt: z.string().datetime().nullable(),\n});\n\nexport const topic = z.object({\n /** Topic name */\n name: z.string(),\n /** Number of memories associated with this topic */\n count: z.number().min(0),\n});\n\nexport const pattern = z.object({\n /** Unique pattern identifier */\n id: z.string(),\n /** Pattern type */\n type: z.string(),\n /** Pattern description */\n description: z.string(),\n /** Confidence score (0-1) */\n confidence: z.number().min(0).max(1),\n});\n\nexport const serviceCheck = z.object({\n /** Service status */\n status: z.enum(['up', 'down']),\n /** Response time in milliseconds */\n responseTime: z.number().optional(),\n});\n\nexport const healthCheck = z.object({\n /** Overall system health status */\n status: z.enum(['healthy', 'degraded', 'unhealthy']),\n /** Health check timestamp */\n timestamp: z.string().datetime(),\n /** API version */\n version: z.string(),\n /** System uptime in seconds */\n uptime: z.number(),\n /** Individual service health checks */\n checks: z.object({\n\n}).catchall(serviceCheck),\n});\n\nexport const searchRequest = z.object({\n /** Search query */\n query: z.string().min(1).max(2000),\n /** Content filtering mode (defaults to unified) */\n mode: z.enum(['unified', 'content', 'facts']).optional(),\n /** Search algorithm: hybrid (combined, default), semantic (vector), or keyword (fulltext). */\n searchMethod: z.enum(['keyword', 'semantic', 'hybrid']).optional(),\n /** Maximum number of results (defaults to 20) */\n limit: z.number().min(1).max(100).optional(),\n /** Offset for pagination (defaults to 0) */\n offset: z.number().min(0).optional(),\n /** Weight for vector (semantic) results in hybrid search (0-1, defaults to 0.7) */\n vectorWeight: z.number().min(0).max(1).optional(),\n /** Weight for fulltext (keyword) results in hybrid search (0-1, defaults to 0.3) */\n fulltextWeight: z.number().min(0).max(1).optional(),\n /** Minimum similarity threshold for semantic search (0-1, defaults to 0.5) */\n threshold: z.number().min(0).max(1).optional(),\n /** If true, include detailed explanation of how each result was matched */\n explain: z.boolean().optional(),\n /** Point-in-time query: show what the system knew at this time (ISO 8601 format) */\n asOfTime: z.string().datetime().optional(),\n /** Validity query: show facts that were valid at this time (ISO 8601 format) */\n validAtTime: z.string().datetime().optional(),\n /** Event time range start (ISO 8601 format) */\n eventTimeFrom: z.string().datetime().optional(),\n /** Event time range end (ISO 8601 format) */\n eventTimeTo: z.string().datetime().optional(),\n /** Ingestion time range start (ISO 8601 format) */\n ingestionTimeFrom: z.string().datetime().optional(),\n /** Ingestion time range end (ISO 8601 format) */\n ingestionTimeTo: z.string().datetime().optional(),\n /** Include expired facts (defaults to false) */\n includeExpired: z.boolean().optional(),\n /** Temporal query mode: 'current' (only valid now), 'historical' (as of a point in time), 'evolution' (chronological) */\n temporalMode: z.enum(['current', 'historical', 'evolution']).optional(),\n /** Filter by topics - returns memories that have ANY of the specified topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n /** Filter by memory type */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Filter by conversation ID */\n conversationId: z.string().optional(),\n /** Include topics associated with matched memories (defaults to false for performance) */\n includeTopics: z.boolean().optional(),\n /** Include entities mentioned in matched memories (defaults to false for performance) */\n includeEntities: z.boolean().optional(),\n /** Include facts extracted from matched memories (defaults to false for performance) */\n includeFacts: z.boolean().optional(),\n /** Filter entities by type (e.g., PERSON, TECHNOLOGY, PROJECT) */\n entityTypes: z.array(z.string().max(50)).max(20).optional(),\n});\n\nexport const entity = z.object({\n /** Entity name */\n name: z.string().optional(),\n /** Entity type */\n type: z.string().optional(),\n});\n\nexport const topicReference = z.object({\n /** Topic unique identifier */\n id: z.string().uuid(),\n /** Topic name */\n name: z.string(),\n /** When the topic was created */\n createdAt: z.string().datetime().optional(),\n});\n\nexport const searchResult = z.lazy(() => z.object({\n memory: z.object({\n /** Unique memory identifier */\n id: z.string(),\n /** Optional human-readable name for deterministic retrieval. Only the HEAD version carries the name. */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/).optional(),\n /** Version number for named memories (1 for first version, increments on update) */\n version: z.number().min(1).optional(),\n /** Memory content */\n content: z.string(),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']),\n /** Context or domain of the memory */\n context: z.string().optional(),\n /** Associated topics */\n topics: z.array(z.string()).optional(),\n /** System ingestion timestamp (when the system learned about this) */\n timestamp: z.string().datetime().optional(),\n /** Event time (when the event actually occurred in reality) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time (when this fact becomes valid) */\n validFrom: z.string().datetime().optional(),\n /** Validity end time (when this fact expires, null means never expires) */\n validTo: z.string().datetime().nullable().optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n /** Confidence score (0-1) for this memory's accuracy */\n confidenceScore: z.number().min(0).max(1).optional(),\n /** Basis for the confidence score */\n confidenceBasis: z.enum(['direct-statement', 'repeated-mention', 'single-mention', 'hedged', 'inference', 'external-source', 'contradicted']).optional(),\n /** Effective state of the memory in the narrative */\n effectiveState: z.enum(['current', 'superseded', 'contradicted']).optional(),\n /** Status of automatic content extraction */\n extractionStatus: z.enum(['pending', 'completed', 'failed', 'skipped']).optional(),\n /** When extraction was completed */\n extractionCompletedAt: z.string().datetime().optional(),\n /** Number of topics extracted from content */\n extractedTopicCount: z.number().min(0).optional(),\n /** Number of facts extracted from content */\n extractedFactCount: z.number().min(0).optional(),\n /** Number of entities extracted from content */\n extractedEntityCount: z.number().min(0).optional(),\n /** Topics explicitly provided by the user */\n userTopics: z.array(z.string()).optional(),\n /** Topics automatically extracted from content */\n extractedTopics: z.array(z.string()).optional(),\n /** Entities extracted from memory content */\n entities: z.array(z.object({\n /** Entity name */\n name: z.string(),\n /** Entity type */\n type: z.string(),\n /** Extraction confidence */\n confidence: z.number().min(0).max(1).optional(),\n})).optional(),\n}),\n /** Relevance score for this result */\n score: z.number(),\n /** Entities mentioned in this memory */\n entities: z.array(entity).optional(),\n /** Topics associated with this memory */\n topics: z.array(topicReference).optional(),\n /** Facts extracted from this memory */\n facts: z.array(z.object({\n /** Fact subject */\n subject: z.string(),\n /** Fact predicate */\n predicate: z.string(),\n /** Fact object */\n object: z.string(),\n /** Confidence */\n confidence: z.number().min(0).max(1).optional(),\n})).optional(),\n /** Search method used to find this result */\n searchMethod: z.string().optional(),\n /** Combined RRF score for hybrid search */\n hybridScore: z.number().optional(),\n /** Vector similarity score (0-1) */\n vectorScore: z.number().optional(),\n /** Rank in vector search results */\n vectorRank: z.number().nullable().optional(),\n /** Fulltext search score */\n fulltextScore: z.number().optional(),\n /** Rank in fulltext search results */\n fulltextRank: z.number().nullable().optional(),\n /** Detailed explanation of the match (only when explain=true) */\n explanation: z.object({\n /** Human-readable explanation of why this result matched */\n matchReason: z.string(),\n /** Terms from the query that matched (for keyword search) */\n matchedTerms: z.array(z.string()).optional(),\n /** Cosine similarity score for semantic match (0-1) */\n semanticSimilarity: z.number().optional(),\n /** Factors that contributed to the match */\n contributingFactors: z.array(z.string()).optional(),\n}).optional(),\n}));\n\n/**\n * Temporal query metadata (null for semantic/hybrid search)\n */\nexport const temporalMetadata = z.object({\n /** Temporal query mode used */\n temporalMode: z.string(),\n /** Point-in-time timestamp */\n asOfTime: z.string().datetime().nullable(),\n /** Validity timestamp */\n validAtTime: z.string().datetime().nullable(),\n /** Event time range filter */\n eventTimeRange: z.object({\n from: z.string().datetime().nullable(),\n to: z.string().datetime().nullable(),\n}).nullable(),\n /** Ingestion time range filter */\n ingestionTimeRange: z.object({\n from: z.string().datetime().nullable(),\n to: z.string().datetime().nullable(),\n}).nullable(),\n /** Whether expired facts are included */\n includeExpired: z.boolean(),\n /** Whether temporal fields are included in results */\n temporalFieldsIncluded: z.boolean(),\n}).nullable();\n\nexport const searchResponse = z.lazy(() => z.object({\n /** Search results with metadata */\n data: z.array(searchResult),\n /** Search method used for this query */\n searchMethod: z.string().optional(),\n pagination: z.object({\n /** Maximum number of items per page */\n limit: z.number().min(1),\n /** Number of items to skip */\n offset: z.number().min(0),\n /** Total number of items */\n count: z.number().min(0),\n}),\n /** Temporal query metadata (null for semantic/hybrid search) */\n temporalMetadata: temporalMetadata,\n}));\n\nexport const fact = z.object({\n /** Unique identifier for the fact */\n id: z.string(),\n /** User ID who owns this fact */\n userId: z.string(),\n /** The subject of the fact (what the fact is about) */\n subject: z.string(),\n /** The relationship or property type */\n predicate: z.string(),\n /** The value or target of the relationship */\n object: z.string(),\n /** Fact name/label (deprecated, use subject) */\n name: z.string().optional(),\n /** Entity type (deprecated, use predicate) */\n type: z.string().optional(),\n /** Fact description (deprecated) */\n description: z.string().nullable().optional(),\n /** Confidence score (0-1) */\n confidence: z.number().min(0).max(1).optional(),\n /** ID of the memory this fact was extracted from */\n sourceMemoryId: z.string().uuid().optional(),\n /** When this fact was extracted */\n extractedAt: z.string().datetime().optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const createFactRequest = z.object({\n /** Fact subject (entity name) */\n subject: z.string().min(1).max(500),\n /** Relationship type */\n predicate: z.string().min(1).max(200),\n /** Fact object (related entity) */\n object: z.string().min(1).max(500),\n});\n\nexport const updateFactRequest = z.object({\n /** Fact subject (entity name) */\n subject: z.string().min(1).max(500).optional(),\n /** Relationship type */\n predicate: z.string().min(1).max(200).optional(),\n /** Fact object (related entity) */\n object: z.string().min(1).max(500).optional(),\n /** Confidence score (0-1) */\n confidence: z.number().min(0).max(1).optional(),\n});\n\nexport const factSearchRequest = z.object({\n /** Search query string */\n query: z.string().min(1),\n /** Maximum number of results to return */\n limit: z.number().min(1).max(100).optional(),\n});\n\nexport const community = z.object({\n /** Unique identifier for the community */\n id: z.string(),\n /** Community name */\n name: z.string(),\n /** Community description */\n description: z.string().nullable().optional(),\n /** Number of topics in this community */\n topicCount: z.number().min(0).optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const entityNode = z.object({\n /** Unique identifier for the entity */\n id: z.string(),\n /** User ID who owns this entity */\n userId: z.string(),\n /** Entity display name */\n name: z.string(),\n /** Normalized (lowercase) name for deduplication */\n normalizedName: z.string(),\n /** Entity type classification */\n type: z.enum(['PERSON', 'PROJECT', 'TECHNOLOGY', 'VERSION', 'API_ENDPOINT', 'CONFIGURATION', 'CONCEPT', 'ORGANIZATION']),\n /** Alternative names for this entity */\n aliases: z.array(z.string()).optional(),\n /** Extraction confidence score (0-1) */\n confidence: z.number().min(0).max(1),\n /** When this entity was first extracted */\n firstSeenAt: z.string().datetime(),\n /** When this entity was most recently seen */\n lastSeenAt: z.string().datetime(),\n /** Number of memories that mention this entity */\n mentionCount: z.number().min(1),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const artifact = z.object({\n /** Unique identifier for the artifact */\n id: z.string(),\n /** User ID who owns this artifact */\n userId: z.string(),\n /** Artifact content */\n content: z.string(),\n /** Artifact type (e.g., note, document, code) */\n type: z.string(),\n /** Artifact name */\n name: z.string().nullable().optional(),\n /** Artifact description */\n description: z.string().nullable().optional(),\n /** Associated memory ID */\n memoryId: z.string().nullable().optional(),\n /** Associated conversation ID */\n conversationId: z.string().nullable().optional(),\n /** Additional metadata */\n metadata: z.object({}).optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const createArtifactRequest = z.object({\n /** Artifact content */\n content: z.string().min(1),\n /** Artifact type (e.g., note, document, code) */\n type: z.string().min(1),\n /** Artifact name */\n name: z.string().optional(),\n /** Artifact description */\n description: z.string().optional(),\n /** Associated memory ID */\n memoryId: z.string().optional(),\n /** Associated conversation ID */\n conversationId: z.string().optional(),\n /** Additional metadata */\n metadata: z.object({}).optional(),\n});\n\nexport const updateArtifactRequest = z.object({\n /** Artifact content */\n content: z.string().min(1).optional(),\n /** Artifact type (e.g., note, document, code) */\n type: z.string().min(1).optional(),\n /** Artifact name */\n name: z.string().optional(),\n /** Artifact description */\n description: z.string().optional(),\n /** Additional metadata */\n metadata: z.object({}).optional(),\n});\n\nexport const memoryRelationship = z.object({\n /** Unique relationship identifier */\n id: z.string(),\n /** ID of the source memory (the memory that has the relationship) */\n sourceMemoryId: z.string(),\n /** ID of the target memory (the memory being related to) */\n targetMemoryId: z.string(),\n /** Type of relationship between memories */\n type: z.enum(['SUPERSEDES', 'FOLLOWS', 'RESOLVES', 'CONTRADICTS', 'REFERENCES']),\n /** Confidence score for the relationship (0-1) */\n confidence: z.number().min(0).max(1),\n /** How the relationship was created */\n creationMethod: z.enum(['manual', 'auto-semantic', 'auto-temporal']),\n /** Human-readable explanation for why this relationship exists */\n reason: z.string().optional(),\n /** When the relationship was created */\n createdAt: z.string().datetime(),\n});\n\nexport const createMemoryRelationshipRequest = z.object({\n /** ID of the target memory to create a relationship with */\n targetMemoryId: z.string().min(1),\n /** Type of relationship between memories */\n type: z.enum(['SUPERSEDES', 'FOLLOWS', 'RESOLVES', 'CONTRADICTS', 'REFERENCES']),\n /** Confidence score for the relationship (0-1, defaults to 1.0 for manual) */\n confidence: z.number().min(0).max(1).optional(),\n /** Optional explanation for the relationship */\n reason: z.string().optional(),\n});\n\nexport const memoryRelationshipsResponse = z.lazy(() => z.object({\n data: z.array(memoryRelationship),\n /** The source memory ID these relationships are for */\n sourceMemoryId: z.string(),\n /** Direction of relationships returned */\n direction: z.enum(['outgoing', 'incoming', 'both']),\n}));\n\nexport const narrativeThread = z.object({\n /** Unique narrative thread identifier */\n id: z.string(),\n /** User ID who owns this narrative */\n userId: z.string(),\n /** Title describing the narrative thread */\n title: z.string(),\n /** Current state of the narrative thread */\n state: z.enum(['open', 'resolved', 'reopened', 'superseded']),\n /** ID of the first memory in this narrative */\n rootMemoryId: z.string(),\n /** ID of the most recent memory in this narrative */\n currentMemoryId: z.string().optional(),\n /** ID of the memory that resolved this narrative (if resolved) */\n resolutionMemoryId: z.string().optional(),\n /** Topics associated with this narrative */\n topics: z.array(z.string()),\n /** Number of memories in this narrative */\n memoryCount: z.number().min(0),\n /** When the narrative was created */\n createdAt: z.string().datetime(),\n /** When the narrative was last updated */\n updatedAt: z.string().datetime(),\n});\n\nexport const createNarrativeRequest = z.object({\n /** Title for the narrative thread */\n title: z.string().min(1),\n /** ID of the first memory in this narrative */\n rootMemoryId: z.string().min(1),\n /** Topics to associate with this narrative */\n topics: z.array(z.string()).optional(),\n});\n\nexport const updateNarrativeRequest = z.object({\n /** Updated title for the narrative */\n title: z.string().min(1).optional(),\n /** Current state of the narrative thread */\n state: z.enum(['open', 'resolved', 'reopened', 'superseded']).optional(),\n /** ID of the memory that resolves this narrative */\n resolutionMemoryId: z.string().optional(),\n /** Updated topics for the narrative */\n topics: z.array(z.string()).optional(),\n});\n\nexport const addMemoryToNarrativeRequest = z.object({\n /** ID of the memory to add to the narrative */\n memoryId: z.string().min(1),\n /** Position in the narrative (0-indexed, omit for append) */\n position: z.number().min(0).optional(),\n});\n\nexport const narrativeMemory = z.object({\n memory: z.object({\n /** Unique memory identifier */\n id: z.string(),\n /** Optional human-readable name for deterministic retrieval. Only the HEAD version carries the name. */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/).optional(),\n /** Version number for named memories (1 for first version, increments on update) */\n version: z.number().min(1).optional(),\n /** Memory content */\n content: z.string(),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']),\n /** Context or domain of the memory */\n context: z.string().optional(),\n /** Associated topics */\n topics: z.array(z.string()).optional(),\n /** System ingestion timestamp (when the system learned about this) */\n timestamp: z.string().datetime().optional(),\n /** Event time (when the event actually occurred in reality) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time (when this fact becomes valid) */\n validFrom: z.string().datetime().optional(),\n /** Validity end time (when this fact expires, null means never expires) */\n validTo: z.string().datetime().nullable().optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n /** Confidence score (0-1) for this memory's accuracy */\n confidenceScore: z.number().min(0).max(1).optional(),\n /** Basis for the confidence score */\n confidenceBasis: z.enum(['direct-statement', 'repeated-mention', 'single-mention', 'hedged', 'inference', 'external-source', 'contradicted']).optional(),\n /** Effective state of the memory in the narrative */\n effectiveState: z.enum(['current', 'superseded', 'contradicted']).optional(),\n /** Status of automatic content extraction */\n extractionStatus: z.enum(['pending', 'completed', 'failed', 'skipped']).optional(),\n /** When extraction was completed */\n extractionCompletedAt: z.string().datetime().optional(),\n /** Number of topics extracted from content */\n extractedTopicCount: z.number().min(0).optional(),\n /** Number of facts extracted from content */\n extractedFactCount: z.number().min(0).optional(),\n /** Number of entities extracted from content */\n extractedEntityCount: z.number().min(0).optional(),\n /** Topics explicitly provided by the user */\n userTopics: z.array(z.string()).optional(),\n /** Topics automatically extracted from content */\n extractedTopics: z.array(z.string()).optional(),\n /** Entities extracted from memory content */\n entities: z.array(z.object({\n /** Entity name */\n name: z.string(),\n /** Entity type */\n type: z.string(),\n /** Extraction confidence */\n confidence: z.number().min(0).max(1).optional(),\n})).optional(),\n}),\n /** Position of this memory in the narrative (0-indexed) */\n position: z.number().min(0),\n /** Effective state of this memory in the narrative context */\n effectiveState: z.enum(['current', 'superseded', 'contradicted']).optional(),\n});\n\nexport const narrativeTimelineResponse = z.lazy(() => z.object({\n data: z.array(narrativeMemory),\n narrative: narrativeThread,\n pagination: z.object({\n limit: z.number(),\n offset: z.number(),\n total: z.number(),\n}),\n}));\n\nexport const getNarrativeResponse = z.lazy(() => z.object({\n data: narrativeThread,\n}));\n\nexport const listNarrativesResponse = z.lazy(() => z.object({\n data: z.array(narrativeThread),\n pagination: z.object({\n limit: z.number(),\n offset: z.number(),\n count: z.number(),\n}),\n}));\n\nexport const user = z.object({\n id: z.string().uuid(),\n email: z.string().email(),\n firstName: z.string().nullable(),\n lastName: z.string().nullable(),\n profilePictureUrl: z.string().url().nullable(),\n status: z.enum(['active', 'suspended', 'disabled']),\n plan: z.enum(['free', 'pro', 'enterprise']),\n memoryLimit: z.number(),\n retentionDays: z.number().nullable(),\n deletionStatus: z.enum(['none', 'pending_deletion', 'deleting', 'deleted', 'deletion_failed']),\n deletionScheduledFor: z.string().datetime().nullable(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport const userUsage = z.object({\n memoriesUsed: z.number(),\n memoryLimit: z.number(),\n memoriesRemaining: z.number(),\n percentUsed: z.number(),\n plan: z.enum(['free', 'pro', 'enterprise']),\n periodStart: z.string().datetime(),\n periodEnd: z.string().datetime(),\n});\n\nexport const subscription = z.object({\n /** Stripe subscription ID */\n id: z.string(),\n /** Current subscription status */\n status: z.enum(['active', 'canceled', 'incomplete', 'incomplete_expired', 'past_due', 'paused', 'trialing', 'unpaid']),\n /** Plan type */\n plan: z.enum(['free', 'pro', 'enterprise']),\n /** Current period start date */\n currentPeriodStart: z.string().datetime(),\n /** Current period end date */\n currentPeriodEnd: z.string().datetime(),\n /** Whether subscription cancels at period end */\n cancelAtPeriodEnd: z.boolean(),\n /** When subscription was canceled */\n canceledAt: z.string().datetime().nullable(),\n});\n\nexport const invoice = z.object({\n /** Stripe invoice ID */\n id: z.string(),\n /** Invoice number */\n number: z.string().nullable(),\n /** Invoice status */\n status: z.enum(['draft', 'open', 'paid', 'uncollectible', 'void']),\n /** Amount due in cents */\n amountDue: z.number(),\n /** Amount paid in cents */\n amountPaid: z.number(),\n /** Three-letter ISO currency code */\n currency: z.string(),\n /** Start of billing period */\n periodStart: z.string().datetime(),\n /** End of billing period */\n periodEnd: z.string().datetime(),\n /** When invoice was created */\n created: z.string().datetime(),\n /** URL to view invoice */\n hostedInvoiceUrl: z.string().url().nullable(),\n /** URL to download invoice PDF */\n invoicePdf: z.string().url().nullable(),\n});\n\nexport const paymentMethod = z.object({\n /** Stripe payment method ID */\n id: z.string(),\n /** Payment method type (card, etc.) */\n type: z.string(),\n /** Card details if type is card */\n card: z.object({\n /** Card brand (visa, mastercard, etc.) */\n brand: z.string(),\n /** Last 4 digits of card */\n last4: z.string(),\n /** Expiration month */\n expMonth: z.number(),\n /** Expiration year */\n expYear: z.number(),\n}).nullable(),\n /** Whether this is the default payment method */\n isDefault: z.boolean(),\n});\n\nexport const billingOverview = z.object({\n subscription: z.object({\n /** Stripe subscription ID */\n id: z.string(),\n /** Current subscription status */\n status: z.enum(['active', 'canceled', 'incomplete', 'incomplete_expired', 'past_due', 'paused', 'trialing', 'unpaid']),\n /** Plan type */\n plan: z.enum(['free', 'pro', 'enterprise']),\n /** Current period start date */\n currentPeriodStart: z.string().datetime(),\n /** Current period end date */\n currentPeriodEnd: z.string().datetime(),\n /** Whether subscription cancels at period end */\n cancelAtPeriodEnd: z.boolean(),\n /** When subscription was canceled */\n canceledAt: z.string().datetime().nullable(),\n}),\n defaultPaymentMethod: z.object({\n /** Stripe payment method ID */\n id: z.string(),\n /** Payment method type (card, etc.) */\n type: z.string(),\n /** Card details if type is card */\n card: z.object({\n /** Card brand (visa, mastercard, etc.) */\n brand: z.string(),\n /** Last 4 digits of card */\n last4: z.string(),\n /** Expiration month */\n expMonth: z.number(),\n /** Expiration year */\n expYear: z.number(),\n}).nullable(),\n /** Whether this is the default payment method */\n isDefault: z.boolean(),\n}),\n /** Upcoming invoice preview */\n upcomingInvoice: z.object({\n /** Amount due in cents */\n amountDue: z.number(),\n /** Currency code */\n currency: z.string(),\n /** Next billing date */\n periodEnd: z.string().datetime(),\n}).nullable(),\n});\n\nexport const createCheckoutSessionRequest = z.object({\n /** Stripe price ID (defaults to Pro price) */\n priceId: z.string().optional(),\n /** URL to redirect after successful checkout */\n successUrl: z.string().url(),\n /** URL to redirect if checkout is canceled */\n cancelUrl: z.string().url(),\n});\n\nexport const checkoutSessionResponse = z.object({\n /** Stripe checkout session ID */\n sessionId: z.string(),\n /** URL to redirect user to Stripe checkout */\n url: z.string().url(),\n});\n\nexport const createPortalSessionRequest = z.object({\n /** URL to redirect after leaving the portal */\n returnUrl: z.string().url(),\n});\n\nexport const portalSessionResponse = z.object({\n /** URL to redirect user to Stripe billing portal */\n url: z.string().url(),\n});\n\nexport const listInvoicesResponse = z.lazy(() => z.object({\n /** List of invoices */\n data: z.array(invoice),\n /** Whether there are more invoices */\n hasMore: z.boolean(),\n}));\n\nexport const listPaymentMethodsResponse = z.lazy(() => z.object({\n /** List of payment methods */\n data: z.array(paymentMethod),\n}));\n\nexport const digestRequest = z.object({\n /** The topic or subject to generate a digest for */\n query: z.string().min(1),\n /** Time window filter (e.g., \"7d\", \"24h\", \"2w\", \"30m\"). Only considers memories within this window. */\n recent: z.string().optional(),\n /** Filter to memories with these topics */\n topics: z.array(z.string()).optional(),\n /** Limit to specific conversation IDs */\n conversationIds: z.array(z.string()).optional(),\n /** Output format: \"structured\" (sections with headers), \"narrative\" (chronological prose), \"timeline\" (dated event list), \"status-report\" (done/in-progress/blocked) */\n format: z.enum(['structured', 'narrative', 'timeline', 'status-report']).optional(),\n /** Maximum number of memories to consider (1-500, default 100) */\n maxSources: z.number().min(1).max(500).optional(),\n /** Whether to include source memory IDs in the response */\n includeMemoryIds: z.boolean().optional(),\n});\n\n/**\n * Time range of the source memories (null if no sources found)\n */\nexport const digestTimeRange = z.object({\n /** Earliest memory timestamp in the digest sources */\n earliest: z.string().datetime(),\n /** Latest memory timestamp in the digest sources */\n latest: z.string().datetime(),\n}).nullable();\n\n/**\n * Generation metadata including source statistics\n */\nexport const digestMetadata = z.lazy(() => z.object({\n /** The query used to generate the digest */\n query: z.string(),\n /** Total number of memories gathered (search + expansion) before synthesis */\n sourcesConsidered: z.number().min(0),\n /** Number of memories fed into the synthesis step */\n sourcesUsed: z.number().min(0),\n /** Number of distinct conversations the sources come from */\n conversationsSpanned: z.number().min(0),\n /** Time range of the source memories (null if no sources found) */\n timeRange: digestTimeRange,\n /** Output format used for this digest */\n format: z.enum(['structured', 'narrative', 'timeline', 'status-report']),\n /** ISO 8601 timestamp when the digest was generated */\n generatedAt: z.string().datetime(),\n /** Recursion stats (only present when recursive synthesis is used) */\n recursion: z.object({\n /** Whether recursive synthesis was used */\n enabled: z.boolean(),\n /** Number of leaf groups synthesized */\n leafGroups: z.number().min(0),\n /** Total LLM calls made during recursive synthesis */\n llmCallsUsed: z.number().min(0),\n /** Maximum recursion depth reached */\n maxDepthReached: z.number().min(0),\n}).optional(),\n}));\n\nexport const digestSource = z.object({\n /** Source memory ID */\n memoryId: z.string(),\n /** Relevance score (0-1) for this source memory */\n relevance: z.number().min(0).max(1),\n /** Conversation ID this memory belongs to */\n conversation: z.string().optional(),\n});\n\nexport const digestResponse = z.lazy(() => z.object({\n /** The generated digest content (markdown formatted) */\n digest: z.string(),\n /** Generation metadata including source statistics */\n metadata: digestMetadata,\n /** Source memories used to generate the digest, for traceability */\n sources: z.array(digestSource),\n}));\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACuBA,IAAe,cAAf,MAAqD;AAAA,EACzC;AAAA,EAEV,QAAQ,SAAyC;AAC/C,SAAK,cAAc;AACnB,WAAO;AAAA,EACT;AAAA,EAIA,MAAgB,SAAY,SAA4C;AACtE,QAAI,CAAC,KAAK,aAAa;AACrB,YAAM,IAAI,MAAM,0BAA0B;AAAA,IAC5C;AACA,WAAO,KAAK,YAAY,OAAU,OAAO;AAAA,EAC3C;AACF;AAKO,IAAM,eAAN,cAA2B,YAAY;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEjB,YAAY,SAAwB;AAClC,UAAM;AACN,SAAK,cAAc,SAAS,YAAY;AACxC,SAAK,UAAU,SAAS,WAAW;AACnC,SAAK,aAAa,SAAS,cAAc;AACzC,SAAK,WAAW,SAAS,YAAY;AACrC,SAAK,gBAAgB,SAAS,iBAAiB;AAC/C,SAAK,mBAAmB,IAAI,IAAI,SAAS,oBAAoB,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,CAAC;AACtF,SAAK,qBAAqB,IAAI,IAAI,SAAS,sBAAsB,CAAC,OAAM,QAAO,OAAM,UAAS,SAAQ,QAAO,SAAS,CAAC;AAAA,EACzH;AAAA,EAEA,MAAM,OAAU,SAA4C;AAC1D,QAAI;AACJ,QAAI,UAAU;AAEd,WAAO,UAAU,KAAK,aAAa;AACjC,UAAI;AACF,cAAM,WAAW,MAAM,KAAK,SAAY,OAAO;AAG/C,YAAI,KAAK,YAAY,QAAQ,QAAQ,SAAS,SAAS,MAAM,GAAG;AAC9D,sBAAY,IAAI,MAAM,QAAQ,SAAS,SAAS,MAAM,EAAE;AACxD;AACA,gBAAM,KAAK,MAAM,OAAO;AACxB;AAAA,QACF;AAEA,eAAO;AAAA,MACT,SAASA,QAAO;AACd,oBAAYA;AACZ;AAEA,YAAI,WAAW,KAAK,aAAa;AAC/B;AAAA,QACF;AAEA,cAAM,KAAK,MAAM,OAAO;AAAA,MAC1B;AAAA,IACF;AAEA,UAAM,aAAa,IAAI,MAAM,4BAA4B;AAAA,EAC3D;AAAA,EAEQ,YAAY,QAAgB,QAAyB;AAC3D,WAAO,KAAK,mBAAmB,IAAI,MAAM,KAAK,KAAK,iBAAiB,IAAI,MAAM;AAAA,EAChF;AAAA,EAEA,MAAc,MAAM,SAAgC;AAClD,UAAM,mBAAmB,KAAK,UAAU,KAAK,IAAI,KAAK,eAAe,UAAU,CAAC;AAChF,UAAM,SAAS,KAAK,OAAO,IAAI,KAAK;AACpC,UAAM,QAAQ,KAAK,IAAI,mBAAmB,QAAQ,KAAK,UAAU;AACjE,UAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,KAAK,CAAC;AAAA,EAC3D;AACF;AAKO,IAAM,oBAAN,cAAgC,YAAY;AAAA,EACjD,MAAM,OAAU,SAA4C;AAE1D,QAAI,QAAQ,iBAAiB,QAAQ,MAAM;AACzC,YAAM,SAAS,QAAQ,cAAc,UAAU,QAAQ,IAAI;AAC3D,UAAI,CAAC,OAAO,SAAS;AACnB,cAAM,IAAI,MAAM,8BAA8B,OAAO,MAAM,OAAO,EAAE;AAAA,MACtE;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,KAAK,SAAY,OAAO;AAG/C,QAAI,QAAQ,YAAY,sBAAsB,SAAS,MAAM;AAC3D,YAAM,mBAAmB,QAAQ,UAAU;AAAA,QACzC,CAAC,MAAM,EAAE,WAAW,SAAS,SAAS;AAAA,MACxC;AACA,UAAI,kBAAkB;AACpB,cAAM,SAAS,iBAAiB,OAAO,UAAU,SAAS,IAAI;AAC9D,YAAI,CAAC,OAAO,SAAS;AACnB,gBAAM,IAAI,MAAM,+BAA+B,OAAO,MAAM,OAAO,EAAE;AAAA,QACvE;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;AAKO,IAAM,cAAN,cAA0B,YAAY;AAAA,EAC1B;AAAA,EAEjB,YAAY,MAAY;AACtB,UAAM;AACN,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,OAAU,SAA4C;AAE1D,UAAM,cAA2B;AAAA,MAC/B,SAAS,QAAQ;AAAA,MACjB,QAAQ,QAAQ;AAAA,MAChB,MAAM,QAAQ;AAAA,MACd,SAAS,IAAI,IAAI,OAAO,QAAQ,QAAQ,WAAW,CAAC,CAAC;AAAA,MACrD,aAAa,oBAAI,IAAI;AAAA,MACrB,YAAY,oBAAI,IAAI;AAAA,MACpB,MAAM,QAAQ;AAAA,IAChB;AAGA,UAAM,kBAAkB,MAAM,KAAK,KAAK,cAAc,aAAa,oBAAI,IAAI,CAAC;AAG5E,UAAM,WAAW,MAAM,KAAK,SAAY,OAAO;AAG/C,UAAM,mBAAmB,MAAM,KAAK,KAAK,cAAc,iBAAiB,UAAU,oBAAI,IAAI,CAAC;AAE3F,WAAO;AAAA,EACT;AACF;AAKO,IAAM,iBAAN,cAA6B,YAAY;AAAA,EAC9C,MAAM,OAAU,SAA4C;AAC1D,UAAM,MAAM,QAAQ,iBAAiB;AACrC,UAAM,UAAU,QAAQ,WAAW;AAGnC,QAAI,QAAQ,QAAQ,OAAO,QAAQ,SAAS,UAAU;AACpD,cAAQ,cAAc,IAAI;AAAA,IAC5B;AAGA,QAAI,QAAQ,OAAO,OAAO;AACxB,cAAQ,eAAe,IAAI,UAAU,QAAQ,OAAO,KAAK;AAAA,IAC3D;AAEA,UAAM,eAA4B;AAAA,MAChC,QAAQ,QAAQ;AAAA,MAChB;AAAA,IACF;AAGA,QAAI,QAAQ,QAAQ,QAAQ,WAAW,OAAO;AAC5C,mBAAa,OAAO,OAAO,QAAQ,SAAS,WACxC,QAAQ,OACR,KAAK,UAAU,QAAQ,IAAI;AAAA,IACjC;AAGA,QAAI;AACJ,QAAI,QAAQ,OAAO,WAAW;AAC5B,YAAM,aAAa,IAAI,gBAAgB;AACvC,kBAAY,WAAW,MAAM,WAAW,MAAM,GAAG,QAAQ,OAAO,SAAS;AACzE,mBAAa,SAAS,WAAW;AAAA,IACnC;AAEA,QAAI;AACJ,YAAM,WAAW,MAAM,MAAM,KAAK,YAAY;AAG9C,YAAM,kBAA0C,CAAC;AACjD,eAAS,QAAQ,QAAQ,CAAC,OAAO,QAAQ;AACvC,wBAAgB,GAAG,IAAI;AAAA,MACzB,CAAC;AAGD,YAAM,MAAM,MAAM,SAAS,YAAY;AACvC,UAAI;AAEJ,YAAM,cAAc,SAAS,QAAQ,IAAI,cAAc,KAAK;AAC5D,UAAI,YAAY,SAAS,kBAAkB,KAAK,IAAI,aAAa,GAAG;AAClE,cAAM,OAAO,IAAI,YAAY,EAAE,OAAO,GAAG;AACzC,YAAI;AACF,iBAAO,KAAK,MAAM,IAAI;AAAA,QACxB,QAAQ;AAAA,QAER;AAAA,MACF;AAEA,YAAM,eAAgC;AAAA,QACpC;AAAA,QACA,UAAU;AAAA,UACR,QAAQ,SAAS;AAAA,UACjB,YAAY,SAAS;AAAA,UACrB,SAAS;AAAA,QACX;AAAA,QACA;AAAA,MACF;AAGA,UAAI,CAAC,SAAS,IAAI;AAChB,cAAMA,SAAQ,IAAI,MAAM,QAAQ,SAAS,MAAM,KAAK,SAAS,UAAU,EAAE;AACzE,QAACA,OAAc,WAAW;AAC1B,cAAMA;AAAA,MACR;AAEA,aAAO;AAAA,IACP,UAAE;AACA,UAAI,WAAW;AACb,qBAAa,SAAS;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AACF;AAKO,IAAM,aAAN,MAAiC;AAAA,EACtC,MAAM,cAAc,SAAsB,QAAmD;AAC3F,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,cACJ,SACA,UACA,QAC4B;AAC5B,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,QACJ,SACA,UACA,QACoB;AACpB,WAAO;AAAA,MACL,OAAO,SAAS,SAAS;AAAA,MACzB,UAAU,SAAS;AAAA,IACrB;AAAA,EACF;AACF;;;ACvQO,IAAM,aAAN,MAAiB;AAAA,EACd;AAAA,EACS;AAAA,EAEjB,YAAY,QAAmB,MAAa;AAC1C,SAAK,SAAS;AAGd,UAAM,iBAAiB,IAAI,eAAe;AAC1C,UAAM,cAAc,IAAI,YAAY,QAAQ,IAAI,WAAW,CAAC;AAC5D,UAAM,oBAAoB,IAAI,kBAAkB;AAChD,UAAM,eAAe,IAAI,aAAa,OAAO,KAAK;AAElD,iBAAa,QAAQ,iBAAiB;AACtC,sBAAkB,QAAQ,WAAW;AACrC,gBAAY,QAAQ,cAAc;AAElC,SAAK,sBAAsB;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,KAAQ,SAA4C;AACxD,WAAO,KAAK,oBAAoB,OAAU,OAAO;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,KAAmB;AAC5B,SAAK,OAAO,UAAU;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU,QAAyB;AACjC,SAAK,SAAS;AAAA,EAChB;AACF;;;ACvDO,IAAM,cAAN,MAAkB;AAAA,EACb;AAAA,EACA;AAAA,EAEV,YAAY,QAAmB;AAC7B,SAAK,SAAS;AACd,SAAK,SAAS,IAAI,WAAW,MAAM;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,QAAQ,SAAiB;AAC3B,SAAK,OAAO,UAAU;AACtB,SAAK,OAAO,WAAW,OAAO;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,YAAY,aAA0B;AACxC,SAAK,OAAO,cAAc;AAC1B,SAAK,OAAO,WAAW,WAAW;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,UAAU,WAAmB;AAC/B,SAAK,OAAO,YAAY;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,MAAM,OAAe;AACvB,SAAK,OAAO,QAAQ;AAAA,EACtB;AACF;;;ACvCO,SAAS,mBAAmB,OAAkC;AACnE,QAAM,EAAE,OAAO,OAAO,QAAQ,IAAI;AAElC,MAAI,UAAU,UAAa,UAAU,MAAM;AACzC,WAAO;AAAA,EACT;AAGA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;AAAA,EACT;AAGA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,eAAe,OAAO,OAA6B,OAAO;AAAA,EACnE;AAGA,SAAO,gBAAgB,OAAkC,OAA6B,OAAO;AAC/F;AAKA,SAAS,eACP,OACA,OACA,SACmB;AACnB,MAAI,SAAS;AACX,WAAO,MAAM,IAAI,MAAM;AAAA,EACzB;AAEA,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO,MAAM,KAAK,GAAG;AAAA,IACvB,KAAK;AACH,aAAO,MAAM,MAAM,KAAK,GAAG;AAAA,IAC7B,KAAK;AACH,aAAO,MAAM,MAAM,KAAK,GAAG;AAAA,IAC7B,KAAK;AACH,aAAO,MAAM,KAAK,GAAG;AAAA,IACvB,KAAK;AACH,aAAO,MAAM,KAAK,GAAG;AAAA,IACvB,KAAK;AACH,aAAO,MAAM,KAAK,GAAG;AAAA,IACvB;AACE,aAAO,MAAM,KAAK,GAAG;AAAA,EACzB;AACF;AAKA,SAAS,gBACP,OACA,OACA,SACiC;AACjC,QAAM,UAAU,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,MAAM,MAAS;AAExE,MAAI,UAAU,eAAe;AAE3B,WAAO,OAAO,YAAY,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAAA,EACnE;AAEA,MAAI,SAAS;AACX,WAAO,OAAO,YAAY,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAAA,EACnE;AAGA,QAAM,QAAQ,QAAQ,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AAExD,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO,MAAM,KAAK,GAAG;AAAA,IACvB,KAAK;AACH,aAAO,MAAM,MAAM,KAAK,GAAG;AAAA,IAC7B,KAAK;AACH,aAAO,MAAM,MAAM,KAAK,GAAG;AAAA,IAC7B,KAAK;AACH,aAAO,MAAM,KAAK,GAAG;AAAA,IACvB;AACE,aAAO,MAAM,KAAK,GAAG;AAAA,EACzB;AACF;;;ACvDO,IAAM,UAAN,MAAc;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACT;AAAA,EACS;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,QAAiC;AAC3C,SAAK,UAAU,OAAO;AACtB,SAAK,SAAS,OAAO;AACrB,SAAK,OAAO,OAAO;AACnB,SAAK,SAAS,OAAO;AACrB,SAAK,UAAU,OAAO,WAAW,oBAAI,IAAI;AACzC,SAAK,cAAc,OAAO,eAAe,oBAAI,IAAI;AACjD,SAAK,aAAa,OAAO,cAAc,oBAAI,IAAI;AAC/C,SAAK,OAAO,OAAO;AACnB,SAAK,YAAY,OAAO,aAAa,CAAC;AACtC,SAAK,SAAS,OAAO,UAAU,CAAC;AAChC,SAAK,gBAAgB,OAAO;AAC5B,SAAK,qBAAqB,OAAO;AACjC,SAAK,aAAa,OAAO,cAAc,CAAC;AACxC,SAAK,QAAQ,OAAO,SAAS,EAAE,UAAU,EAAE;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe,KAAa,OAA+B;AACzD,SAAK,QAAQ,IAAI,KAAK,KAAK;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKA,cAAc,KAAa,OAA+B;AACxD,SAAK,YAAY,IAAI,KAAK,KAAK;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,KAAa,OAA+B;AACvD,SAAK,WAAW,IAAI,KAAK,KAAK;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ,MAAqB;AAC3B,SAAK,OAAO;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,mBAA2B;AAEzB,QAAI,MAAM,KAAK;AACf,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,YAAY;AAC1C,YAAM,QAAQ,mBAAmB,KAAK;AACtC,YAAM,IAAI,QAAQ,IAAI,GAAG,KAAK,mBAAmB,OAAO,KAAK,CAAC,CAAC;AAAA,IACjE;AAGA,UAAM,cAAc,KAAK,iBAAiB;AAC1C,QAAI,aAAa;AACf,aAAO,IAAI,WAAW;AAAA,IACxB;AAEA,WAAO,GAAG,KAAK,OAAO,GAAG,GAAG;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAKA,aAAqC;AACnC,UAAM,UAAkC,CAAC;AAEzC,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,SAAS;AACvC,YAAM,QAAQ,mBAAmB,KAAK;AACtC,UAAI,UAAU,UAAa,UAAU,MAAM;AACzC,gBAAQ,GAAG,IAAI,OAAO,KAAK;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,mBAA2B;AACjC,UAAM,QAAkB,CAAC;AAEzB,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,aAAa;AAC3C,YAAM,aAAa,oBAAoB,KAAK,KAAK;AACjD,UAAI,YAAY;AACd,cAAM,KAAK,UAAU;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,MAAM,KAAK,GAAG;AAAA,EACvB;AACF;AAKA,SAAS,oBAAoB,KAAa,OAAwC;AAChF,QAAM,QAAQ,MAAM;AACpB,MAAI,UAAU,UAAa,UAAU,MAAM;AACzC,WAAO;AAAA,EACT;AAGA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,QAAI,MAAM,SAAS;AACjB,aAAO,MAAM,IAAI,CAAC,MAAM,GAAG,mBAAmB,GAAG,CAAC,IAAI,mBAAmB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,GAAG;AAAA,IACjG;AACA,WAAO,GAAG,mBAAmB,GAAG,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,mBAAmB,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,EAChG;AAGA,MAAI,OAAO,UAAU,UAAU;AAC7B,QAAI,MAAM,UAAU,eAAsB;AACxC,aAAO,OAAO,QAAQ,KAAK,EACxB,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,mBAAmB,GAAG,CAAC,IAAI,mBAAmB,CAAC,CAAC,KAAK,mBAAmB,OAAO,CAAC,CAAC,CAAC,EAAE,EACvG,KAAK,GAAG;AAAA,IACb;AAEA,WAAO,OAAO,QAAQ,KAAK,EACxB,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,mBAAmB,CAAC,CAAC,IAAI,mBAAmB,OAAO,CAAC,CAAC,CAAC,EAAE,EAC3E,KAAK,GAAG;AAAA,EACb;AAGA,SAAO,GAAG,mBAAmB,GAAG,CAAC,IAAI,mBAAmB,OAAO,KAAK,CAAC,CAAC;AACxE;;;AC5KO,IAAM,eAAN,cAA2B,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS5C,MAAM,qBAAqB,SAAgU;AACzV,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,WAAW,QAAW;AACjC,cAAQ,cAAc,UAAU;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,WAAW,QAAW;AACjC,cAAQ,cAAc,UAAU;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,sBAAsB,MAA4T;AACtV,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,sBAAuP;AAC3P,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,mBAAmB,MAAwO;AAC/P,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,QAAQ;AAAA,MAC3B,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,sBAAsB,MAA2F;AACrH,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,QAAQ;AAAA,MAC3B,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,qBAAyG;AAC7G,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,mBAAmB,MAA8G;AACrI,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;;;ACvOO,IAAM,iBAAN,cAA6B,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,EAM9C,MAAM,YAAwF;AAC5F,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAA0D;AAC9D,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aAAa,SAAsI;AACvJ,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,SAAS,QAAW;AAC/B,cAAQ,QAAQ,SAAS,IAAI;AAAA,IAC/B;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aAAa,IAAyC;AAC1D,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;;;AC5GO,IAAM,mBAAN,cAA+B,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWhD,MAAM,cAAc,SAAwK;AAC1L,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,WAAW,QAAW;AACjC,cAAQ,cAAc,UAAU;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,aAAa,QAAW;AACnC,cAAQ,cAAc,YAAY;AAAA,QAChC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,mBAAmB,QAAW;AACzC,cAAQ,cAAc,kBAAkB;AAAA,QACtC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,SAAS,QAAW;AAC/B,cAAQ,cAAc,QAAQ;AAAA,QAC5B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,eAAe,MAA0M;AAC7N,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,gBAAgB,IAAwD;AAC5E,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,eAAe,IAAyC;AAC5D,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,eAAe,IAAY,MAAgK;AAC/L,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;;;AC9NO,IAAM,iBAAN,cAA6B,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,EAM9C,MAAM,qBAAwE;AAC5E,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,sBAAsB,MAA8H;AACxJ,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,oBAAoB,MAAsF;AAC9G,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAkE;AACtE,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,mBAAmB,SAA8F;AACrH,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,SAAS,QAAW;AAC/B,cAAQ,QAAQ,SAAS,IAAI;AAAA,IAC/B;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,uBAAuB,SAA8F;AACzH,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,SAAS,QAAW;AAC/B,cAAQ,QAAQ,SAAS,IAAI;AAAA,IAC/B;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aAAa,SAAsF;AACvG,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,qBAAmF;AACvF,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,wBAAwB,IAAY,SAA2F;AACnI,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,SAAS,SAAS,QAAW;AAC/B,cAAQ,QAAQ,SAAS,IAAI;AAAA,IAC/B;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,oBAAoB,IAAyC;AACjE,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,cAAc,MAA8E;AAChG,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;;;ACzTO,IAAM,uBAAN,cAAmC,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASpD,MAAM,kBAAkB,SAAmL;AACzM,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,WAAW,QAAW;AACjC,cAAQ,cAAc,UAAU;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,mBAAmB,MAA2F;AAClH,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,uBAAuB,gBAAwE;AACnG,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,kBAAkB;AAAA,MACrC,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,mBAAmB,gBAAqD;AAC5E,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,kBAAkB;AAAA,MACrC,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,wBAAwB,gBAAoF;AAChH,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,kBAAkB;AAAA,MACrC,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,oBAAoB,MAA2G;AACnI,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,yBAAyB,MAA8I;AAC3K,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;;;ACtPO,IAAM,kBAAN,cAA8B,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS/C,MAAM,aAAa,SAAgL;AACjM,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,SAAS,QAAW;AAC/B,cAAQ,cAAc,QAAQ;AAAA,QAC5B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,WAAW,QAAW;AACjC,cAAQ,cAAc,UAAU;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,cAAc,IAA0D;AAC5E,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,kBAAkB,IAAY,SAA+L;AACjO,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,WAAW,QAAW;AACjC,cAAQ,cAAc,UAAU;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;;;AC7JO,IAAM,eAAN,cAA2B,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ5C,MAAM,UAAU,SAAyG;AACvH,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,WAAW,QAAW;AACjC,cAAQ,cAAc,UAAU;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,WAAW,MAAsG;AACrH,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,YAAY,IAAoD;AACpE,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,WAAW,IAAY,MAA8H;AACzJ,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,WAAW,IAAyC;AACxD,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,YAAY,MAAkI;AAClJ,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;;;AClNO,IAAM,kBAAN,cAA8B,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO/C,MAAM,qBAAqB,SAA2F;AACpH,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,YAAY,QAAW;AAClC,cAAQ,cAAc,WAAW;AAAA,QAC/B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,iBAAiB,MAAsG;AAC3H,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,qBAAqB,MAAqK;AAC9L,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;;;AC7FO,IAAM,gBAAN,cAA4B,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAU7C,MAAM,cAA4K;AAChL,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;;;AC5BO,IAAM,iBAAN,cAA6B,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS9C,MAAM,gBAA4D;AAChE,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,mBAAmB,MAAmG;AAC1H,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;;;ACvDO,IAAM,kBAAN,cAA8B,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO/C,MAAM,cAAc,IAAqD;AACvE,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,aAAa,IAAY,MAAoL;AACjN,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aAAa,IAAyC;AAC1D,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,MAAM,aAAa,SAAsJ;AACvK,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,aAAa,QAAW;AACnC,cAAQ,cAAc,YAAY;AAAA,QAChC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,WAAW,QAAW;AACjC,cAAQ,cAAc,UAAU;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,SAAS,QAAW;AAC/B,cAAQ,cAAc,QAAQ;AAAA,QAC5B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,MAAM,aAAa,MAAuU;AACxV,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA4CA,MAAM,kBAAkB,SAA+xB;AACrzB,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,MAAM,QAAW;AAC5B,cAAQ,cAAc,KAAK;AAAA,QACzB,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,iBAAiB,QAAW;AACvC,cAAQ,cAAc,gBAAgB;AAAA,QACpC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,WAAW,QAAW;AACjC,cAAQ,cAAc,UAAU;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,cAAc,QAAW;AACpC,cAAQ,cAAc,aAAa;AAAA,QACjC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,SAAS,QAAW;AAC/B,cAAQ,cAAc,QAAQ;AAAA,QAC5B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,iBAAiB,QAAW;AACvC,cAAQ,cAAc,gBAAgB;AAAA,QACpC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,mBAAmB,QAAW;AACzC,cAAQ,cAAc,kBAAkB;AAAA,QACtC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,WAAW,QAAW;AACjC,cAAQ,cAAc,UAAU;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,kBAAkB,QAAW;AACxC,cAAQ,cAAc,iBAAiB;AAAA,QACrC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,eAAe,QAAW;AACrC,cAAQ,cAAc,cAAc;AAAA,QAClC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,mBAAmB,QAAW;AACzC,cAAQ,cAAc,kBAAkB;AAAA,QACtC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,YAAY,QAAW;AAClC,cAAQ,cAAc,WAAW;AAAA,QAC/B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,kBAAkB,QAAW;AACxC,cAAQ,cAAc,iBAAiB;AAAA,QACrC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,oBAAoB,QAAW;AAC1C,cAAQ,cAAc,mBAAmB;AAAA,QACvC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,aAAa,QAAW;AACnC,cAAQ,cAAc,YAAY;AAAA,QAChC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,gBAAgB,QAAW;AACtC,cAAQ,cAAc,eAAe;AAAA,QACnC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,kBAAkB,QAAW;AACxC,cAAQ,cAAc,iBAAiB;AAAA,QACrC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,gBAAgB,QAAW;AACtC,cAAQ,cAAc,eAAe;AAAA,QACnC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,sBAAsB,QAAW;AAC5C,cAAQ,cAAc,qBAAqB;AAAA,QACzC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,oBAAoB,QAAW;AAC1C,cAAQ,cAAc,mBAAmB;AAAA,QACvC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,mBAAmB,QAAW;AACzC,cAAQ,cAAc,kBAAkB;AAAA,QACtC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,iBAAiB,QAAW;AACvC,cAAQ,cAAc,gBAAgB;AAAA,QACpC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAM,eAAe,MAAwzB;AAC30B,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,iBAAiB,MAAgG;AACrH,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBA,MAAM,qBAAqB,MAA4S;AACrU,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,sBAAsB,MAAoM;AAC9N,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,QAAQ;AAAA,MAC3B,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,gBAAgB,MAAuD;AAC3E,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,QAAQ;AAAA,MAC3B,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,kBAAkB,MAAc,MAAwN;AAC5P,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,QAAQ;AAAA,MAC3B,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,MAAM,mBAAmB,IAAY,SAA8G;AACjJ,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,wBAAwB,IAAY,SAAuI;AAC/K,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAM,mBAAmB,IAAY,SAAs8B;AACz+B,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAM,uBAAuB,IAAY,SAAwL;AAC/N,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,SAAS,cAAc,QAAW;AACpC,cAAQ,cAAc,aAAa;AAAA,QACjC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,MAAM,yBAAyB,IAAY,MAA0M;AACnP,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,yBAAyB,IAAY,gBAAqD;AAC9F,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,YAAQ,aAAa,kBAAkB;AAAA,MACrC,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,kBAAkB,IAAY,SAAkJ;AACpL,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,SAAS,WAAW,QAAW;AACjC,cAAQ,cAAc,UAAU;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,0BAA0B,IAAY,SAAkR;AAC5T,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,SAAS,SAAS,QAAW;AAC/B,cAAQ,QAAQ,SAAS,IAAI;AAAA,IAC/B;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;;;ACnrCO,IAAM,oBAAN,cAAgC,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASjD,MAAM,aAA6C;AACjD,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;;;ACzBO,IAAM,oBAAN,cAAgC,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYjD,MAAM,eAAe,SAA2O;AAC9P,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,WAAW,QAAW;AACjC,cAAQ,cAAc,UAAU;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,WAAW,QAAW;AACjC,cAAQ,cAAc,UAAU;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,gBAAgB,MAAoH;AACxI,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aAAa,IAA8D;AAC/E,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,gBAAgB,IAAyC;AAC7D,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,gBAAgB,IAAY,MAAqL;AACrN,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,qBAAqB,IAAY,SAA6L;AAClO,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,WAAW,QAAW;AACjC,cAAQ,cAAc,UAAU;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,qBAAqB,IAAY,MAAiG;AACtI,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,0BAA0B,IAAY,UAA+C;AACzF,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,YAAQ,aAAa,YAAY;AAAA,MAC/B,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;;;AChXO,IAAM,gBAAN,cAA4B,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO7C,MAAM,eAAe,SAAsF;AACzG,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,YAAY,QAAW;AAClC,cAAQ,cAAc,WAAW;AAAA,QAC/B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAA+I;AACnJ,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,mBAA8E;AAClF,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAA6E;AACjF,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,oBAAoB,MAA2I;AACnK,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,qBAAqB,SAAiQ;AAC1R,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,mBAAmB,QAAW;AACzC,cAAQ,cAAc,kBAAkB;AAAA,QACtC,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,wBAAwB,QAAW;AAC9C,cAAQ,cAAc,uBAAuB;AAAA,QAC3C,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,cAAc,SAAgQ;AAClR,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,SAAS,QAAW;AAC/B,cAAQ,QAAQ,SAAS,IAAI;AAAA,IAC/B;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;;;AC/MO,IAAM,kBAAN,cAA8B,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ/C,MAAM,aAAa,SAA8J;AAC/K,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,WAAW,QAAW;AACjC,cAAQ,cAAc,UAAU;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,gBAAgB,SAAoI;AACxJ,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,SAAS,QAAW;AAC/B,cAAQ,QAAQ,SAAS,IAAI;AAAA,IAC/B;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,eAAe,SAA6T;AAChV,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,SAAS,QAAW;AAC/B,cAAQ,QAAQ,SAAS,IAAI;AAAA,IAC/B;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,gBAAgB,SAAsV;AAC1W,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,SAAS,QAAW;AAC/B,cAAQ,QAAQ,SAAS,IAAI;AAAA,IAC/B;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,cAAc,IAAY,MAAmJ;AACjL,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AACD,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,sBAAsB,MAA0F;AACpH,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;;;ACtMO,IAAM,kBAAN,cAA8B,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,EAM/C,MAAM,qBAAgF;AACpF,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,sBAAsB,SAA0J;AACpL,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,SAAS,QAAW;AAC/B,cAAQ,QAAQ,SAAS,IAAI;AAAA,IAC/B;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;;;ACjDO,IAAM,gBAAN,cAA4B,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ7C,MAAM,WAAW,SAA4J;AAC3K,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,UAAU,QAAW;AAChC,cAAQ,cAAc,SAAS;AAAA,QAC7B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AACA,QAAI,SAAS,WAAW,QAAW;AACjC,cAAQ,cAAc,UAAU;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aAAa,IAAqD;AACtE,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,YAAY,MAAiG;AACjH,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,sBAAsB,MAAsF;AAChH,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,yBAAyB,MAAyG;AACtI,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,kBAAkB,MAA2I;AACjK,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,cAAc,SAAqJ;AACvK,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,SAAS,QAAW;AAC/B,cAAQ,QAAQ,SAAS,IAAI;AAAA,IAC/B;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,kBAAkB,SAAuI;AAC7J,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,SAAS,QAAW;AAC/B,cAAQ,QAAQ,SAAS,IAAI;AAAA,IAC/B;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aAAa,MAAwK;AACzL,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;;;ACjRO,IAAM,eAAN,cAA2B,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAY5C,MAAM,SAAS,MAA8L;AAC3M,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAA4E;AAChF,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,kBAAkB,SAAoI;AAC1J,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,SAAS,QAAW;AAC/B,cAAQ,QAAQ,SAAS,IAAI;AAAA,IAC/B;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,sBAAmE;AACvE,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,iBAAkT;AACtT,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,wBAAwB,MAA+F;AAC3H,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,SAAS,QAAW;AACtB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AAEA,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,wBAAkF;AACtF,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,YAAY,IAAoD;AACpE,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,SAAS,KAAK,OAAO,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,YAAQ,aAAa,MAAM;AAAA,MACzB,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAED,WAAO,KAAK,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;;;ACpOO,IAAK,qBAAL,kBAAKC,wBAAL;AACL,EAAAA,oBAAA,YAAS;AACT,EAAAA,oBAAA,WAAQ;AACR,EAAAA,oBAAA,YAAS;AACT,EAAAA,oBAAA,UAAO;AACP,EAAAA,oBAAA,qBAAkB;AAClB,EAAAA,oBAAA,oBAAiB;AACjB,EAAAA,oBAAA,iBAAc;AACd,EAAAA,oBAAA,UAAO;AARG,SAAAA;AAAA,GAAA;AAYL,IAAK,cAAL,kBAAKC,iBAAL;AACL,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,SAAM;AACN,EAAAA,aAAA,SAAM;AACN,EAAAA,aAAA,WAAQ;AACR,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,YAAS;AACT,EAAAA,aAAA,oBAAiB;AACjB,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,uBAAoB;AACpB,EAAAA,aAAA,iBAAc;AACd,EAAAA,aAAA,eAAY;AAXF,SAAAA;AAAA,GAAA;AAyDL,IAAK,cAAL,kBAAKC,iBAAL;AACL,EAAAA,aAAA,aAAU;AADA,SAAAA;AAAA,GAAA;;;AC3EZ,iBAAkB;AAEX,IAAM,QAAQ,aAAE,OAAO;AAAA;AAAA,EAE5B,OAAO,aAAE,OAAO;AAClB,CAAC;AAEM,IAAM,aAAa,aAAE,OAAO;AAAA;AAAA,EAEjC,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAEvB,QAAQ,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAExB,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC;AACzB,CAAC;AAEM,IAAM,SAAS,aAAE,OAAO;AAAA;AAAA,EAE7B,IAAI,aAAE,OAAO;AAAA;AAAA,EAEb,MAAM,aAAE,OAAO,EAAE,MAAM,mCAAmC,EAAE,SAAS;AAAA;AAAA,EAErE,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,EAEpC,SAAS,aAAE,OAAO;AAAA;AAAA,EAElB,YAAY,aAAE,KAAK,CAAC,YAAY,YAAY,YAAY,CAAC;AAAA;AAAA,EAEzD,SAAS,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE7B,QAAQ,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,EAErC,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE1C,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE1C,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE1C,SAAS,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAEnD,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE/B,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE/B,iBAAiB,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,EAEnD,iBAAiB,aAAE,KAAK,CAAC,oBAAoB,oBAAoB,kBAAkB,UAAU,aAAa,mBAAmB,cAAc,CAAC,EAAE,SAAS;AAAA;AAAA,EAEvJ,gBAAgB,aAAE,KAAK,CAAC,WAAW,cAAc,cAAc,CAAC,EAAE,SAAS;AAAA;AAAA,EAE3E,kBAAkB,aAAE,KAAK,CAAC,WAAW,aAAa,UAAU,SAAS,CAAC,EAAE,SAAS;AAAA;AAAA,EAEjF,uBAAuB,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAEtD,qBAAqB,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,EAEhD,oBAAoB,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,EAE/C,sBAAsB,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,EAEjD,YAAY,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,EAEzC,iBAAiB,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,EAE9C,UAAU,aAAE,MAAM,aAAE,OAAO;AAAA;AAAA,IAE3B,MAAM,aAAE,OAAO;AAAA;AAAA,IAEf,MAAM,aAAE,OAAO;AAAA;AAAA,IAEf,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EAChD,CAAC,CAAC,EAAE,SAAS;AACb,CAAC;AAEM,IAAM,sBAAsB,aAAE,OAAO;AAAA;AAAA,EAE1C,gBAAgB,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAEhC,MAAM,aAAE,OAAO,EAAE,MAAM,mCAAmC,EAAE,SAAS;AAAA;AAAA,EAErE,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAK;AAAA;AAAA,EAEpC,YAAY,aAAE,KAAK,CAAC,YAAY,YAAY,YAAY,CAAC,EAAE,SAAS;AAAA;AAAA,EAEpE,MAAM,aAAE,KAAK,CAAC,QAAQ,aAAa,QAAQ,CAAC,EAAE,SAAS;AAAA;AAAA,EAEvD,SAAS,aAAE,OAAO,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA;AAAA,EAEtC,QAAQ,aAAE,MAAM,aAAE,OAAO,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA;AAAA,EAEtD,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE1C,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE1C,SAAS,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAC1C,CAAC;AAEM,IAAM,sBAAsB,aAAE,OAAO;AAAA;AAAA,EAE1C,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAK,EAAE,SAAS;AAAA;AAAA,EAE/C,MAAM,aAAE,MAAM,CAAC,aAAE,OAAO,EAAE,MAAM,mCAAmC,GAAG,aAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS;AAAA;AAAA,EAE9F,YAAY,aAAE,KAAK,CAAC,YAAY,YAAY,YAAY,CAAC,EAAE,SAAS;AAAA;AAAA,EAEpE,SAAS,aAAE,OAAO,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA;AAAA,EAEtC,QAAQ,aAAE,MAAM,aAAE,OAAO,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS;AACxD,CAAC;AAEM,IAAM,2BAA2B,aAAE,OAAO;AAAA;AAAA,EAE/C,gBAAgB,aAAE,OAAO;AAAA;AAAA,EAEzB,WAAW,aAAE,OAAO;AAAA;AAAA,EAEpB,gBAAgB,aAAE,QAAQ;AAAA;AAAA,EAE1B,qBAAqB,aAAE,QAAQ;AACjC,CAAC;AAKM,IAAM,uBAAuB,aAAE,KAAK,MAAM,aAAE,OAAO;AAAA,EACxD,MAAM;AAAA,EACN,MAAM;AACR,CAAC,CAAC;AAEK,IAAM,sBAAsB,aAAE,OAAO;AAAA,EAC1C,QAAQ,aAAE,OAAO;AAAA;AAAA,IAEjB,IAAI,aAAE,OAAO;AAAA;AAAA,IAEb,MAAM,aAAE,OAAO,EAAE,MAAM,mCAAmC,EAAE,SAAS;AAAA;AAAA,IAErE,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,IAEpC,SAAS,aAAE,OAAO;AAAA;AAAA,IAElB,YAAY,aAAE,KAAK,CAAC,YAAY,YAAY,YAAY,CAAC;AAAA;AAAA,IAEzD,SAAS,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,IAE7B,QAAQ,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,IAErC,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,IAE1C,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,IAE1C,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,IAE1C,SAAS,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,IAEnD,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,IAE/B,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,IAE/B,iBAAiB,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,IAEnD,iBAAiB,aAAE,KAAK,CAAC,oBAAoB,oBAAoB,kBAAkB,UAAU,aAAa,mBAAmB,cAAc,CAAC,EAAE,SAAS;AAAA;AAAA,IAEvJ,gBAAgB,aAAE,KAAK,CAAC,WAAW,cAAc,cAAc,CAAC,EAAE,SAAS;AAAA;AAAA,IAE3E,kBAAkB,aAAE,KAAK,CAAC,WAAW,aAAa,UAAU,SAAS,CAAC,EAAE,SAAS;AAAA;AAAA,IAEjF,uBAAuB,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,IAEtD,qBAAqB,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,IAEhD,oBAAoB,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,IAE/C,sBAAsB,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,IAEjD,YAAY,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,IAEzC,iBAAiB,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,IAE9C,UAAU,aAAE,MAAM,aAAE,OAAO;AAAA;AAAA,MAE3B,MAAM,aAAE,OAAO;AAAA;AAAA,MAEf,MAAM,aAAE,OAAO;AAAA;AAAA,MAEf,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,IAChD,CAAC,CAAC,EAAE,SAAS;AAAA,EACb,CAAC;AAAA;AAAA,EAEC,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA;AAAA,EAE9B,cAAc,aAAE,OAAO;AAAA;AAAA,EAEvB,cAAc,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAC7C,CAAC;AAKM,IAAM,oBAAoB,aAAE,KAAK,MAAM,aAAE,OAAO;AAAA,EACrD,MAAM;AACR,CAAC,CAAC;AAEK,IAAM,2BAA2B,aAAE,OAAO;AAAA;AAAA,EAE/C,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAK;AAAA;AAAA,EAEpC,YAAY,aAAE,KAAK,CAAC,YAAY,YAAY,YAAY,CAAC,EAAE,SAAS;AAAA;AAAA,EAEpE,SAAS,aAAE,OAAO,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA;AAAA,EAEtC,QAAQ,aAAE,MAAM,aAAE,OAAO,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS;AACxD,CAAC;AAEM,IAAM,6BAA6B,aAAE,OAAO;AAAA;AAAA,EAEjD,MAAM,aAAE,OAAO,EAAE,MAAM,mCAAmC;AAAA,EAC1D,UAAU,aAAE,MAAM,aAAE,OAAO;AAAA;AAAA,IAE3B,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,IAEzB,IAAI,aAAE,OAAO;AAAA;AAAA,IAEb,SAAS,aAAE,OAAO;AAAA;AAAA,IAElB,gBAAgB,aAAE,KAAK,CAAC,WAAW,cAAc,cAAc,CAAC,EAAE,SAAS;AAAA;AAAA,IAE3E,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA,EACjC,CAAC,CAAC;AACF,CAAC;AAEM,IAAM,0BAA0B,aAAE,OAAO;AAAA;AAAA,EAE9C,KAAK,aAAE,MAAM,aAAE,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAChD,CAAC;AAEM,IAAM,uBAAuB,aAAE,OAAO;AAAA;AAAA,EAE3C,WAAW,aAAE,OAAO;AAAA;AAAA,EAEpB,OAAO,aAAE,OAAO;AAAA;AAAA,EAEhB,SAAS,aAAE,MAAM,aAAE,OAAO,CAAC;AAC7B,CAAC;AAKM,IAAM,2BAA2B,aAAE,KAAK,MAAM,aAAE,OAAO;AAAA,EAC5D,MAAM,aAAE,MAAM,MAAM;AAAA,EACpB,MAAM;AACR,CAAC,CAAC;AAEK,IAAM,uBAAuB,aAAE,OAAO;AAAA;AAAA,EAE3C,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAEvB,UAAU,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,EAE5C,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,EAEzC,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA;AAAA,EAE3C,sBAAsB,aAAE,QAAQ,EAAE,SAAS;AAC7C,CAAC;AAEM,IAAM,wBAAwB,aAAE,KAAK,MAAM,aAAE,OAAO;AAAA;AAAA,EAEzD,SAAS,aAAE,OAAO;AAAA;AAAA,EAElB,SAAS,aAAE,MAAM,aAAE,OAAO;AAAA,IAC1B;AAAA;AAAA,IAEA,OAAO,aAAE,OAAO;AAAA;AAAA,IAEhB,QAAQ,aAAE,MAAM,aAAE,OAAO,CAE3B,CAAC,EAAE,SAAS,aAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAAA;AAAA,IAEjC,UAAU,aAAE,MAAM,aAAE,OAAO,CAE7B,CAAC,EAAE,SAAS,aAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAAA;AAAA,IAEjC,iBAAiB,aAAE,MAAM,aAAE,OAAO,CAEpC,CAAC,EAAE,SAAS,aAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAAA,EACnC,CAAC,CAAC;AAAA;AAAA,EAEA,UAAU,aAAE,OAAO;AAAA;AAAA,IAEnB,OAAO,aAAE,OAAO;AAAA;AAAA,IAEhB,OAAO,aAAE,OAAO;AAAA;AAAA,IAEhB,OAAO,aAAE,OAAO;AAAA;AAAA,IAEhB,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA,EACjC,CAAC;AACD,CAAC,CAAC;AAEK,IAAM,eAAe,aAAE,OAAO;AAAA;AAAA,EAEnC,IAAI,aAAE,OAAO;AAAA;AAAA,EAEb,OAAO,aAAE,OAAO;AAAA;AAAA,EAEhB,SAAS,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE7B,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE/B,WAAW,aAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAEM,IAAM,4BAA4B,aAAE,OAAO;AAAA;AAAA,EAEhD,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAEvB,SAAS,aAAE,OAAO,EAAE,SAAS;AAC/B,CAAC;AAEM,IAAM,SAAS,aAAE,OAAO;AAAA;AAAA,EAE7B,IAAI,aAAE,OAAO;AAAA;AAAA,EAEb,OAAO,aAAE,OAAO;AAAA;AAAA,EAEhB,QAAQ,aAAE,OAAO;AAAA;AAAA,EAEjB,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE/B,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE1C,YAAY,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAC7C,CAAC;AAEM,IAAM,QAAQ,aAAE,OAAO;AAAA;AAAA,EAE5B,MAAM,aAAE,OAAO;AAAA;AAAA,EAEf,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC;AACzB,CAAC;AAEM,IAAM,UAAU,aAAE,OAAO;AAAA;AAAA,EAE9B,IAAI,aAAE,OAAO;AAAA;AAAA,EAEb,MAAM,aAAE,OAAO;AAAA;AAAA,EAEf,aAAa,aAAE,OAAO;AAAA;AAAA,EAEtB,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACrC,CAAC;AAEM,IAAM,eAAe,aAAE,OAAO;AAAA;AAAA,EAEnC,QAAQ,aAAE,KAAK,CAAC,MAAM,MAAM,CAAC;AAAA;AAAA,EAE7B,cAAc,aAAE,OAAO,EAAE,SAAS;AACpC,CAAC;AAEM,IAAM,cAAc,aAAE,OAAO;AAAA;AAAA,EAElC,QAAQ,aAAE,KAAK,CAAC,WAAW,YAAY,WAAW,CAAC;AAAA;AAAA,EAEnD,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE/B,SAAS,aAAE,OAAO;AAAA;AAAA,EAElB,QAAQ,aAAE,OAAO;AAAA;AAAA,EAEjB,QAAQ,aAAE,OAAO,CAEnB,CAAC,EAAE,SAAS,YAAY;AACxB,CAAC;AAEM,IAAM,gBAAgB,aAAE,OAAO;AAAA;AAAA,EAEpC,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAI;AAAA;AAAA,EAEjC,MAAM,aAAE,KAAK,CAAC,WAAW,WAAW,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,EAEvD,cAAc,aAAE,KAAK,CAAC,WAAW,YAAY,QAAQ,CAAC,EAAE,SAAS;AAAA;AAAA,EAEjE,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA;AAAA,EAE3C,QAAQ,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,EAEnC,cAAc,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,EAEhD,gBAAgB,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,EAElD,WAAW,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,EAE7C,SAAS,aAAE,QAAQ,EAAE,SAAS;AAAA;AAAA,EAE9B,UAAU,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAEzC,aAAa,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE5C,eAAe,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE9C,aAAa,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE5C,mBAAmB,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAElD,iBAAiB,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAEhD,gBAAgB,aAAE,QAAQ,EAAE,SAAS;AAAA;AAAA,EAErC,cAAc,aAAE,KAAK,CAAC,WAAW,cAAc,WAAW,CAAC,EAAE,SAAS;AAAA;AAAA,EAEtE,QAAQ,aAAE,MAAM,aAAE,OAAO,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA;AAAA,EAEtD,YAAY,aAAE,KAAK,CAAC,YAAY,YAAY,YAAY,CAAC,EAAE,SAAS;AAAA;AAAA,EAEpE,gBAAgB,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEpC,eAAe,aAAE,QAAQ,EAAE,SAAS;AAAA;AAAA,EAEpC,iBAAiB,aAAE,QAAQ,EAAE,SAAS;AAAA;AAAA,EAEtC,cAAc,aAAE,QAAQ,EAAE,SAAS;AAAA;AAAA,EAEnC,aAAa,aAAE,MAAM,aAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS;AAC5D,CAAC;AAEM,IAAM,SAAS,aAAE,OAAO;AAAA;AAAA,EAE7B,MAAM,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE1B,MAAM,aAAE,OAAO,EAAE,SAAS;AAC5B,CAAC;AAEM,IAAM,iBAAiB,aAAE,OAAO;AAAA;AAAA,EAErC,IAAI,aAAE,OAAO,EAAE,KAAK;AAAA;AAAA,EAEpB,MAAM,aAAE,OAAO;AAAA;AAAA,EAEf,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAC5C,CAAC;AAEM,IAAM,eAAe,aAAE,KAAK,MAAM,aAAE,OAAO;AAAA,EAChD,QAAQ,aAAE,OAAO;AAAA;AAAA,IAEjB,IAAI,aAAE,OAAO;AAAA;AAAA,IAEb,MAAM,aAAE,OAAO,EAAE,MAAM,mCAAmC,EAAE,SAAS;AAAA;AAAA,IAErE,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,IAEpC,SAAS,aAAE,OAAO;AAAA;AAAA,IAElB,YAAY,aAAE,KAAK,CAAC,YAAY,YAAY,YAAY,CAAC;AAAA;AAAA,IAEzD,SAAS,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,IAE7B,QAAQ,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,IAErC,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,IAE1C,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,IAE1C,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,IAE1C,SAAS,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,IAEnD,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,IAE/B,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,IAE/B,iBAAiB,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,IAEnD,iBAAiB,aAAE,KAAK,CAAC,oBAAoB,oBAAoB,kBAAkB,UAAU,aAAa,mBAAmB,cAAc,CAAC,EAAE,SAAS;AAAA;AAAA,IAEvJ,gBAAgB,aAAE,KAAK,CAAC,WAAW,cAAc,cAAc,CAAC,EAAE,SAAS;AAAA;AAAA,IAE3E,kBAAkB,aAAE,KAAK,CAAC,WAAW,aAAa,UAAU,SAAS,CAAC,EAAE,SAAS;AAAA;AAAA,IAEjF,uBAAuB,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,IAEtD,qBAAqB,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,IAEhD,oBAAoB,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,IAE/C,sBAAsB,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,IAEjD,YAAY,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,IAEzC,iBAAiB,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,IAE9C,UAAU,aAAE,MAAM,aAAE,OAAO;AAAA;AAAA,MAE3B,MAAM,aAAE,OAAO;AAAA;AAAA,MAEf,MAAM,aAAE,OAAO;AAAA;AAAA,MAEf,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,IAChD,CAAC,CAAC,EAAE,SAAS;AAAA,EACb,CAAC;AAAA;AAAA,EAEC,OAAO,aAAE,OAAO;AAAA;AAAA,EAEhB,UAAU,aAAE,MAAM,MAAM,EAAE,SAAS;AAAA;AAAA,EAEnC,QAAQ,aAAE,MAAM,cAAc,EAAE,SAAS;AAAA;AAAA,EAEzC,OAAO,aAAE,MAAM,aAAE,OAAO;AAAA;AAAA,IAExB,SAAS,aAAE,OAAO;AAAA;AAAA,IAElB,WAAW,aAAE,OAAO;AAAA;AAAA,IAEpB,QAAQ,aAAE,OAAO;AAAA;AAAA,IAEjB,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EAChD,CAAC,CAAC,EAAE,SAAS;AAAA;AAAA,EAEX,cAAc,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAElC,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEjC,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEjC,YAAY,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE3C,eAAe,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEnC,cAAc,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE7C,aAAa,aAAE,OAAO;AAAA;AAAA,IAEtB,aAAa,aAAE,OAAO;AAAA;AAAA,IAEtB,cAAc,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,IAE3C,oBAAoB,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,IAExC,qBAAqB,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACpD,CAAC,EAAE,SAAS;AACZ,CAAC,CAAC;AAKK,IAAM,mBAAmB,aAAE,OAAO;AAAA;AAAA,EAEvC,cAAc,aAAE,OAAO;AAAA;AAAA,EAEvB,UAAU,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAEzC,aAAa,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE5C,gBAAgB,aAAE,OAAO;AAAA,IACzB,MAAM,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,IACrC,IAAI,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACrC,CAAC,EAAE,SAAS;AAAA;AAAA,EAEV,oBAAoB,aAAE,OAAO;AAAA,IAC7B,MAAM,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,IACrC,IAAI,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACrC,CAAC,EAAE,SAAS;AAAA;AAAA,EAEV,gBAAgB,aAAE,QAAQ;AAAA;AAAA,EAE1B,wBAAwB,aAAE,QAAQ;AACpC,CAAC,EAAE,SAAS;AAEL,IAAM,iBAAiB,aAAE,KAAK,MAAM,aAAE,OAAO;AAAA;AAAA,EAElD,MAAM,aAAE,MAAM,YAAY;AAAA;AAAA,EAE1B,cAAc,aAAE,OAAO,EAAE,SAAS;AAAA,EAClC,YAAY,aAAE,OAAO;AAAA;AAAA,IAErB,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,IAEvB,QAAQ,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,IAExB,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACzB,CAAC;AAAA;AAAA,EAEC;AACF,CAAC,CAAC;AAEK,IAAM,OAAO,aAAE,OAAO;AAAA;AAAA,EAE3B,IAAI,aAAE,OAAO;AAAA;AAAA,EAEb,QAAQ,aAAE,OAAO;AAAA;AAAA,EAEjB,SAAS,aAAE,OAAO;AAAA;AAAA,EAElB,WAAW,aAAE,OAAO;AAAA;AAAA,EAEpB,QAAQ,aAAE,OAAO;AAAA;AAAA,EAEjB,MAAM,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE1B,MAAM,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE1B,aAAa,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE5C,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,EAE9C,gBAAgB,aAAE,OAAO,EAAE,KAAK,EAAE,SAAS;AAAA;AAAA,EAE3C,aAAa,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE5C,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE/B,WAAW,aAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAEM,IAAM,oBAAoB,aAAE,OAAO;AAAA;AAAA,EAExC,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA;AAAA,EAElC,WAAW,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA;AAAA,EAEpC,QAAQ,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AACnC,CAAC;AAEM,IAAM,oBAAoB,aAAE,OAAO;AAAA;AAAA,EAExC,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA;AAAA,EAE7C,WAAW,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA;AAAA,EAE/C,QAAQ,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA;AAAA,EAE5C,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAChD,CAAC;AAEM,IAAM,oBAAoB,aAAE,OAAO;AAAA;AAAA,EAExC,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAEvB,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAC7C,CAAC;AAEM,IAAM,YAAY,aAAE,OAAO;AAAA;AAAA,EAEhC,IAAI,aAAE,OAAO;AAAA;AAAA,EAEb,MAAM,aAAE,OAAO;AAAA;AAAA,EAEf,aAAa,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE5C,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,EAEvC,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE/B,WAAW,aAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAEM,IAAM,aAAa,aAAE,OAAO;AAAA;AAAA,EAEjC,IAAI,aAAE,OAAO;AAAA;AAAA,EAEb,QAAQ,aAAE,OAAO;AAAA;AAAA,EAEjB,MAAM,aAAE,OAAO;AAAA;AAAA,EAEf,gBAAgB,aAAE,OAAO;AAAA;AAAA,EAEzB,MAAM,aAAE,KAAK,CAAC,UAAU,WAAW,cAAc,WAAW,gBAAgB,iBAAiB,WAAW,cAAc,CAAC;AAAA;AAAA,EAEvH,SAAS,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,EAEtC,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA;AAAA,EAEnC,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEjC,YAAY,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEhC,cAAc,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAE9B,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE/B,WAAW,aAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAEM,IAAM,WAAW,aAAE,OAAO;AAAA;AAAA,EAE/B,IAAI,aAAE,OAAO;AAAA;AAAA,EAEb,QAAQ,aAAE,OAAO;AAAA;AAAA,EAEjB,SAAS,aAAE,OAAO;AAAA;AAAA,EAElB,MAAM,aAAE,OAAO;AAAA;AAAA,EAEf,MAAM,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAErC,aAAa,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE5C,UAAU,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAEzC,gBAAgB,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE/C,UAAU,aAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA;AAAA,EAEhC,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE/B,WAAW,aAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAEM,IAAM,wBAAwB,aAAE,OAAO;AAAA;AAAA,EAE5C,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAEzB,MAAM,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAEtB,MAAM,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE1B,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEjC,UAAU,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE9B,gBAAgB,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEpC,UAAU,aAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAClC,CAAC;AAEM,IAAM,wBAAwB,aAAE,OAAO;AAAA;AAAA,EAE5C,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,EAEpC,MAAM,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,EAEjC,MAAM,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE1B,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEjC,UAAU,aAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAClC,CAAC;AAEM,IAAM,qBAAqB,aAAE,OAAO;AAAA;AAAA,EAEzC,IAAI,aAAE,OAAO;AAAA;AAAA,EAEb,gBAAgB,aAAE,OAAO;AAAA;AAAA,EAEzB,gBAAgB,aAAE,OAAO;AAAA;AAAA,EAEzB,MAAM,aAAE,KAAK,CAAC,cAAc,WAAW,YAAY,eAAe,YAAY,CAAC;AAAA;AAAA,EAE/E,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA;AAAA,EAEnC,gBAAgB,aAAE,KAAK,CAAC,UAAU,iBAAiB,eAAe,CAAC;AAAA;AAAA,EAEnE,QAAQ,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE5B,WAAW,aAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAEM,IAAM,kCAAkC,aAAE,OAAO;AAAA;AAAA,EAEtD,gBAAgB,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAEhC,MAAM,aAAE,KAAK,CAAC,cAAc,WAAW,YAAY,eAAe,YAAY,CAAC;AAAA;AAAA,EAE/E,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,EAE9C,QAAQ,aAAE,OAAO,EAAE,SAAS;AAC9B,CAAC;AAEM,IAAM,8BAA8B,aAAE,KAAK,MAAM,aAAE,OAAO;AAAA,EAC/D,MAAM,aAAE,MAAM,kBAAkB;AAAA;AAAA,EAEhC,gBAAgB,aAAE,OAAO;AAAA;AAAA,EAEzB,WAAW,aAAE,KAAK,CAAC,YAAY,YAAY,MAAM,CAAC;AACpD,CAAC,CAAC;AAEK,IAAM,kBAAkB,aAAE,OAAO;AAAA;AAAA,EAEtC,IAAI,aAAE,OAAO;AAAA;AAAA,EAEb,QAAQ,aAAE,OAAO;AAAA;AAAA,EAEjB,OAAO,aAAE,OAAO;AAAA;AAAA,EAEhB,OAAO,aAAE,KAAK,CAAC,QAAQ,YAAY,YAAY,YAAY,CAAC;AAAA;AAAA,EAE5D,cAAc,aAAE,OAAO;AAAA;AAAA,EAEvB,iBAAiB,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAErC,oBAAoB,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAExC,QAAQ,aAAE,MAAM,aAAE,OAAO,CAAC;AAAA;AAAA,EAE1B,aAAa,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAE7B,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE/B,WAAW,aAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAEM,IAAM,yBAAyB,aAAE,OAAO;AAAA;AAAA,EAE7C,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAEvB,cAAc,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAE9B,QAAQ,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AACvC,CAAC;AAEM,IAAM,yBAAyB,aAAE,OAAO;AAAA;AAAA,EAE7C,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,EAElC,OAAO,aAAE,KAAK,CAAC,QAAQ,YAAY,YAAY,YAAY,CAAC,EAAE,SAAS;AAAA;AAAA,EAEvE,oBAAoB,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAExC,QAAQ,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AACvC,CAAC;AAEM,IAAM,8BAA8B,aAAE,OAAO;AAAA;AAAA,EAElD,UAAU,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAE1B,UAAU,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AACvC,CAAC;AAEM,IAAM,kBAAkB,aAAE,OAAO;AAAA,EACtC,QAAQ,aAAE,OAAO;AAAA;AAAA,IAEjB,IAAI,aAAE,OAAO;AAAA;AAAA,IAEb,MAAM,aAAE,OAAO,EAAE,MAAM,mCAAmC,EAAE,SAAS;AAAA;AAAA,IAErE,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,IAEpC,SAAS,aAAE,OAAO;AAAA;AAAA,IAElB,YAAY,aAAE,KAAK,CAAC,YAAY,YAAY,YAAY,CAAC;AAAA;AAAA,IAEzD,SAAS,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,IAE7B,QAAQ,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,IAErC,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,IAE1C,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,IAE1C,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,IAE1C,SAAS,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,IAEnD,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,IAE/B,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,IAE/B,iBAAiB,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,IAEnD,iBAAiB,aAAE,KAAK,CAAC,oBAAoB,oBAAoB,kBAAkB,UAAU,aAAa,mBAAmB,cAAc,CAAC,EAAE,SAAS;AAAA;AAAA,IAEvJ,gBAAgB,aAAE,KAAK,CAAC,WAAW,cAAc,cAAc,CAAC,EAAE,SAAS;AAAA;AAAA,IAE3E,kBAAkB,aAAE,KAAK,CAAC,WAAW,aAAa,UAAU,SAAS,CAAC,EAAE,SAAS;AAAA;AAAA,IAEjF,uBAAuB,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,IAEtD,qBAAqB,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,IAEhD,oBAAoB,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,IAE/C,sBAAsB,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA;AAAA,IAEjD,YAAY,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,IAEzC,iBAAiB,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,IAE9C,UAAU,aAAE,MAAM,aAAE,OAAO;AAAA;AAAA,MAE3B,MAAM,aAAE,OAAO;AAAA;AAAA,MAEf,MAAM,aAAE,OAAO;AAAA;AAAA,MAEf,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,IAChD,CAAC,CAAC,EAAE,SAAS;AAAA,EACb,CAAC;AAAA;AAAA,EAEC,UAAU,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAE1B,gBAAgB,aAAE,KAAK,CAAC,WAAW,cAAc,cAAc,CAAC,EAAE,SAAS;AAC7E,CAAC;AAEM,IAAM,4BAA4B,aAAE,KAAK,MAAM,aAAE,OAAO;AAAA,EAC7D,MAAM,aAAE,MAAM,eAAe;AAAA,EAC7B,WAAW;AAAA,EACX,YAAY,aAAE,OAAO;AAAA,IACrB,OAAO,aAAE,OAAO;AAAA,IAChB,QAAQ,aAAE,OAAO;AAAA,IACjB,OAAO,aAAE,OAAO;AAAA,EAClB,CAAC;AACD,CAAC,CAAC;AAEK,IAAM,uBAAuB,aAAE,KAAK,MAAM,aAAE,OAAO;AAAA,EACxD,MAAM;AACR,CAAC,CAAC;AAEK,IAAM,yBAAyB,aAAE,KAAK,MAAM,aAAE,OAAO;AAAA,EAC1D,MAAM,aAAE,MAAM,eAAe;AAAA,EAC7B,YAAY,aAAE,OAAO;AAAA,IACrB,OAAO,aAAE,OAAO;AAAA,IAChB,QAAQ,aAAE,OAAO;AAAA,IACjB,OAAO,aAAE,OAAO;AAAA,EAClB,CAAC;AACD,CAAC,CAAC;AAEK,IAAM,OAAO,aAAE,OAAO;AAAA,EAC3B,IAAI,aAAE,OAAO,EAAE,KAAK;AAAA,EACpB,OAAO,aAAE,OAAO,EAAE,MAAM;AAAA,EACxB,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,UAAU,aAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,mBAAmB,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EAC7C,QAAQ,aAAE,KAAK,CAAC,UAAU,aAAa,UAAU,CAAC;AAAA,EAClD,MAAM,aAAE,KAAK,CAAC,QAAQ,OAAO,YAAY,CAAC;AAAA,EAC1C,aAAa,aAAE,OAAO;AAAA,EACtB,eAAe,aAAE,OAAO,EAAE,SAAS;AAAA,EACnC,gBAAgB,aAAE,KAAK,CAAC,QAAQ,oBAAoB,YAAY,WAAW,iBAAiB,CAAC;AAAA,EAC7F,sBAAsB,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACrD,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,WAAW,aAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAEM,IAAM,YAAY,aAAE,OAAO;AAAA,EAChC,cAAc,aAAE,OAAO;AAAA,EACvB,aAAa,aAAE,OAAO;AAAA,EACtB,mBAAmB,aAAE,OAAO;AAAA,EAC5B,aAAa,aAAE,OAAO;AAAA,EACtB,MAAM,aAAE,KAAK,CAAC,QAAQ,OAAO,YAAY,CAAC;AAAA,EAC1C,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA,EACjC,WAAW,aAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAEM,IAAM,eAAe,aAAE,OAAO;AAAA;AAAA,EAEnC,IAAI,aAAE,OAAO;AAAA;AAAA,EAEb,QAAQ,aAAE,KAAK,CAAC,UAAU,YAAY,cAAc,sBAAsB,YAAY,UAAU,YAAY,QAAQ,CAAC;AAAA;AAAA,EAErH,MAAM,aAAE,KAAK,CAAC,QAAQ,OAAO,YAAY,CAAC;AAAA;AAAA,EAE1C,oBAAoB,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAExC,kBAAkB,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEtC,mBAAmB,aAAE,QAAQ;AAAA;AAAA,EAE7B,YAAY,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAC7C,CAAC;AAEM,IAAM,UAAU,aAAE,OAAO;AAAA;AAAA,EAE9B,IAAI,aAAE,OAAO;AAAA;AAAA,EAEb,QAAQ,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE5B,QAAQ,aAAE,KAAK,CAAC,SAAS,QAAQ,QAAQ,iBAAiB,MAAM,CAAC;AAAA;AAAA,EAEjE,WAAW,aAAE,OAAO;AAAA;AAAA,EAEpB,YAAY,aAAE,OAAO;AAAA;AAAA,EAErB,UAAU,aAAE,OAAO;AAAA;AAAA,EAEnB,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEjC,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE/B,SAAS,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE7B,kBAAkB,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA;AAAA,EAE5C,YAAY,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AACxC,CAAC;AAEM,IAAM,gBAAgB,aAAE,OAAO;AAAA;AAAA,EAEpC,IAAI,aAAE,OAAO;AAAA;AAAA,EAEb,MAAM,aAAE,OAAO;AAAA;AAAA,EAEf,MAAM,aAAE,OAAO;AAAA;AAAA,IAEf,OAAO,aAAE,OAAO;AAAA;AAAA,IAEhB,OAAO,aAAE,OAAO;AAAA;AAAA,IAEhB,UAAU,aAAE,OAAO;AAAA;AAAA,IAEnB,SAAS,aAAE,OAAO;AAAA,EACpB,CAAC,EAAE,SAAS;AAAA;AAAA,EAEV,WAAW,aAAE,QAAQ;AACvB,CAAC;AAEM,IAAM,kBAAkB,aAAE,OAAO;AAAA,EACtC,cAAc,aAAE,OAAO;AAAA;AAAA,IAEvB,IAAI,aAAE,OAAO;AAAA;AAAA,IAEb,QAAQ,aAAE,KAAK,CAAC,UAAU,YAAY,cAAc,sBAAsB,YAAY,UAAU,YAAY,QAAQ,CAAC;AAAA;AAAA,IAErH,MAAM,aAAE,KAAK,CAAC,QAAQ,OAAO,YAAY,CAAC;AAAA;AAAA,IAE1C,oBAAoB,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,IAExC,kBAAkB,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,IAEtC,mBAAmB,aAAE,QAAQ;AAAA;AAAA,IAE7B,YAAY,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC7C,CAAC;AAAA,EACC,sBAAsB,aAAE,OAAO;AAAA;AAAA,IAE/B,IAAI,aAAE,OAAO;AAAA;AAAA,IAEb,MAAM,aAAE,OAAO;AAAA;AAAA,IAEf,MAAM,aAAE,OAAO;AAAA;AAAA,MAEf,OAAO,aAAE,OAAO;AAAA;AAAA,MAEhB,OAAO,aAAE,OAAO;AAAA;AAAA,MAEhB,UAAU,aAAE,OAAO;AAAA;AAAA,MAEnB,SAAS,aAAE,OAAO;AAAA,IACpB,CAAC,EAAE,SAAS;AAAA;AAAA,IAEV,WAAW,aAAE,QAAQ;AAAA,EACvB,CAAC;AAAA;AAAA,EAEC,iBAAiB,aAAE,OAAO;AAAA;AAAA,IAE1B,WAAW,aAAE,OAAO;AAAA;AAAA,IAEpB,UAAU,aAAE,OAAO;AAAA;AAAA,IAEnB,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA,EACjC,CAAC,EAAE,SAAS;AACZ,CAAC;AAEM,IAAM,+BAA+B,aAAE,OAAO;AAAA;AAAA,EAEnD,SAAS,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE7B,YAAY,aAAE,OAAO,EAAE,IAAI;AAAA;AAAA,EAE3B,WAAW,aAAE,OAAO,EAAE,IAAI;AAC5B,CAAC;AAEM,IAAM,0BAA0B,aAAE,OAAO;AAAA;AAAA,EAE9C,WAAW,aAAE,OAAO;AAAA;AAAA,EAEpB,KAAK,aAAE,OAAO,EAAE,IAAI;AACtB,CAAC;AAEM,IAAM,6BAA6B,aAAE,OAAO;AAAA;AAAA,EAEjD,WAAW,aAAE,OAAO,EAAE,IAAI;AAC5B,CAAC;AAEM,IAAM,wBAAwB,aAAE,OAAO;AAAA;AAAA,EAE5C,KAAK,aAAE,OAAO,EAAE,IAAI;AACtB,CAAC;AAEM,IAAM,uBAAuB,aAAE,KAAK,MAAM,aAAE,OAAO;AAAA;AAAA,EAExD,MAAM,aAAE,MAAM,OAAO;AAAA;AAAA,EAErB,SAAS,aAAE,QAAQ;AACrB,CAAC,CAAC;AAEK,IAAM,6BAA6B,aAAE,KAAK,MAAM,aAAE,OAAO;AAAA;AAAA,EAE9D,MAAM,aAAE,MAAM,aAAa;AAC7B,CAAC,CAAC;AAEK,IAAM,gBAAgB,aAAE,OAAO;AAAA;AAAA,EAEpC,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAEvB,QAAQ,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE5B,QAAQ,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,EAErC,iBAAiB,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,EAE9C,QAAQ,aAAE,KAAK,CAAC,cAAc,aAAa,YAAY,eAAe,CAAC,EAAE,SAAS;AAAA;AAAA,EAElF,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA;AAAA,EAEhD,kBAAkB,aAAE,QAAQ,EAAE,SAAS;AACzC,CAAC;AAKM,IAAM,kBAAkB,aAAE,OAAO;AAAA;AAAA,EAEtC,UAAU,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE9B,QAAQ,aAAE,OAAO,EAAE,SAAS;AAC9B,CAAC,EAAE,SAAS;AAKL,IAAM,iBAAiB,aAAE,KAAK,MAAM,aAAE,OAAO;AAAA;AAAA,EAElD,OAAO,aAAE,OAAO;AAAA;AAAA,EAEhB,mBAAmB,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAEnC,aAAa,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAE7B,sBAAsB,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAEtC,WAAW;AAAA;AAAA,EAEX,QAAQ,aAAE,KAAK,CAAC,cAAc,aAAa,YAAY,eAAe,CAAC;AAAA;AAAA,EAEvE,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEjC,WAAW,aAAE,OAAO;AAAA;AAAA,IAEpB,SAAS,aAAE,QAAQ;AAAA;AAAA,IAEnB,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,IAE5B,cAAc,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,IAE9B,iBAAiB,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACnC,CAAC,EAAE,SAAS;AACZ,CAAC,CAAC;AAEK,IAAM,eAAe,aAAE,OAAO;AAAA;AAAA,EAEnC,UAAU,aAAE,OAAO;AAAA;AAAA,EAEnB,WAAW,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA;AAAA,EAElC,cAAc,aAAE,OAAO,EAAE,SAAS;AACpC,CAAC;AAEM,IAAM,iBAAiB,aAAE,KAAK,MAAM,aAAE,OAAO;AAAA;AAAA,EAElD,QAAQ,aAAE,OAAO;AAAA;AAAA,EAEjB,UAAU;AAAA;AAAA,EAEV,SAAS,aAAE,MAAM,YAAY;AAC/B,CAAC,CAAC;;;AzBvlCK,IAAM,WAAN,MAAe;AAAA,EACH;AAAA;AAAA,EAGD;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMhB,YAAY,SAAoB,CAAC,GAAG;AAClC,SAAK,SAAS;AAAA,MACZ,SAAS,OAAO,WAAW;AAAA,MAC3B,GAAG;AAAA,IACL;AAEA,SAAK,QAAQ,IAAI,aAAa,KAAK,MAAM;AACzC,SAAK,UAAU,IAAI,eAAe,KAAK,MAAM;AAC7C,SAAK,YAAY,IAAI,iBAAiB,KAAK,MAAM;AACjD,SAAK,UAAU,IAAI,eAAe,KAAK,MAAM;AAC7C,SAAK,gBAAgB,IAAI,qBAAqB,KAAK,MAAM;AACzD,SAAK,WAAW,IAAI,gBAAgB,KAAK,MAAM;AAC/C,SAAK,QAAQ,IAAI,aAAa,KAAK,MAAM;AACzC,SAAK,WAAW,IAAI,gBAAgB,KAAK,MAAM;AAC/C,SAAK,SAAS,IAAI,cAAc,KAAK,MAAM;AAC3C,SAAK,UAAU,IAAI,eAAe,KAAK,MAAM;AAC7C,SAAK,WAAW,IAAI,gBAAgB,KAAK,MAAM;AAC/C,SAAK,aAAa,IAAI,kBAAkB,KAAK,MAAM;AACnD,SAAK,aAAa,IAAI,kBAAkB,KAAK,MAAM;AACnD,SAAK,SAAS,IAAI,cAAc,KAAK,MAAM;AAC3C,SAAK,WAAW,IAAI,gBAAgB,KAAK,MAAM;AAC/C,SAAK,WAAW,IAAI,gBAAgB,KAAK,MAAM;AAC/C,SAAK,SAAS,IAAI,cAAc,KAAK,MAAM;AAC3C,SAAK,QAAQ,IAAI,aAAa,KAAK,MAAM;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS,OAAqB;AAC5B,SAAK,OAAO,QAAQ;AACpB,SAAK,MAAM,QAAQ;AACnB,SAAK,QAAQ,QAAQ;AACrB,SAAK,UAAU,QAAQ;AACvB,SAAK,QAAQ,QAAQ;AACrB,SAAK,cAAc,QAAQ;AAC3B,SAAK,SAAS,QAAQ;AACtB,SAAK,MAAM,QAAQ;AACnB,SAAK,SAAS,QAAQ;AACtB,SAAK,OAAO,QAAQ;AACpB,SAAK,QAAQ,QAAQ;AACrB,SAAK,SAAS,QAAQ;AACtB,SAAK,WAAW,QAAQ;AACxB,SAAK,WAAW,QAAQ;AACxB,SAAK,OAAO,QAAQ;AACpB,SAAK,SAAS,QAAQ;AACtB,SAAK,SAAS,QAAQ;AACtB,SAAK,OAAO,QAAQ;AACpB,SAAK,MAAM,QAAQ;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW,SAAuB;AAChC,SAAK,OAAO,UAAU;AACtB,SAAK,MAAM,UAAU;AACrB,SAAK,QAAQ,UAAU;AACvB,SAAK,UAAU,UAAU;AACzB,SAAK,QAAQ,UAAU;AACvB,SAAK,cAAc,UAAU;AAC7B,SAAK,SAAS,UAAU;AACxB,SAAK,MAAM,UAAU;AACrB,SAAK,SAAS,UAAU;AACxB,SAAK,OAAO,UAAU;AACtB,SAAK,QAAQ,UAAU;AACvB,SAAK,SAAS,UAAU;AACxB,SAAK,WAAW,UAAU;AAC1B,SAAK,WAAW,UAAU;AAC1B,SAAK,OAAO,UAAU;AACtB,SAAK,SAAS,UAAU;AACxB,SAAK,SAAS,UAAU;AACxB,SAAK,OAAO,UAAU;AACtB,SAAK,MAAM,UAAU;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAe,aAAgC;AAC7C,SAAK,OAAO,cAAc;AAC1B,SAAK,MAAM,cAAc;AACzB,SAAK,QAAQ,cAAc;AAC3B,SAAK,UAAU,cAAc;AAC7B,SAAK,QAAQ,cAAc;AAC3B,SAAK,cAAc,cAAc;AACjC,SAAK,SAAS,cAAc;AAC5B,SAAK,MAAM,cAAc;AACzB,SAAK,SAAS,cAAc;AAC5B,SAAK,OAAO,cAAc;AAC1B,SAAK,QAAQ,cAAc;AAC3B,SAAK,SAAS,cAAc;AAC5B,SAAK,WAAW,cAAc;AAC9B,SAAK,WAAW,cAAc;AAC9B,SAAK,OAAO,cAAc;AAC1B,SAAK,SAAS,cAAc;AAC5B,SAAK,SAAS,cAAc;AAC5B,SAAK,OAAO,cAAc;AAC1B,SAAK,MAAM,cAAc;AAAA,EAC3B;AACF;AAEA,IAAO,gBAAQ;","names":["error","SerializationStyle","ContentType","Environment"]}
|