@float.js/core 2.0.1
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/ai/index.d.ts +103 -0
- package/dist/ai/index.js +293 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/analytics/index.d.ts +193 -0
- package/dist/analytics/index.js +499 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/api/index.d.ts +172 -0
- package/dist/api/index.js +643 -0
- package/dist/api/index.js.map +1 -0
- package/dist/cli/index.js +2367 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/devtools/index.d.ts +82 -0
- package/dist/devtools/index.js +839 -0
- package/dist/devtools/index.js.map +1 -0
- package/dist/image/index.d.ts +114 -0
- package/dist/image/index.js +242 -0
- package/dist/image/index.js.map +1 -0
- package/dist/index.d.ts +400 -0
- package/dist/index.js +6511 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/index.d.ts +179 -0
- package/dist/middleware/index.js +362 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/realtime/index.d.ts +198 -0
- package/dist/realtime/index.js +555 -0
- package/dist/realtime/index.js.map +1 -0
- package/dist/router/index.d.ts +43 -0
- package/dist/router/index.js +143 -0
- package/dist/router/index.js.map +1 -0
- package/dist/server/index.d.ts +51 -0
- package/dist/server/index.js +2163 -0
- package/dist/server/index.js.map +1 -0
- package/dist/ssg/index.d.ts +178 -0
- package/dist/ssg/index.js +399 -0
- package/dist/ssg/index.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/api/index.ts"],"sourcesContent":["/**\n * Float.js Type-Safe API Module\n * Automatic validation and type inference for API routes\n * \n * This is a MAJOR differentiator from Next.js - zero boilerplate API validation!\n */\n\n// ============================================================================\n// SCHEMA TYPES (Zod-like but zero dependencies)\n// ============================================================================\n\ntype SchemaType = 'string' | 'number' | 'boolean' | 'array' | 'object' | 'enum' | 'union' | 'optional';\n\ninterface BaseSchema<T = unknown> {\n _type: SchemaType;\n _output: T;\n optional(): OptionalSchema<T>;\n parse(value: unknown): T;\n safeParse(value: unknown): { success: true; data: T } | { success: false; error: ValidationError };\n}\n\ninterface ValidationError {\n path: string[];\n message: string;\n received: unknown;\n expected: string;\n}\n\n// ============================================================================\n// STRING SCHEMA\n// ============================================================================\n\ninterface StringSchema extends BaseSchema<string> {\n _type: 'string';\n min(length: number, message?: string): StringSchema;\n max(length: number, message?: string): StringSchema;\n email(message?: string): StringSchema;\n url(message?: string): StringSchema;\n uuid(message?: string): StringSchema;\n regex(pattern: RegExp, message?: string): StringSchema;\n trim(): StringSchema;\n toLowerCase(): StringSchema;\n toUpperCase(): StringSchema;\n}\n\nfunction createStringSchema(): StringSchema {\n const validators: Array<(val: string) => string | null> = [];\n const transforms: Array<(val: string) => string> = [];\n\n const schema: StringSchema = {\n _type: 'string',\n _output: '' as string,\n\n min(length: number, message?: string) {\n validators.push((val) => \n val.length >= length ? null : (message || `Must be at least ${length} characters`)\n );\n return schema;\n },\n\n max(length: number, message?: string) {\n validators.push((val) => \n val.length <= length ? null : (message || `Must be at most ${length} characters`)\n );\n return schema;\n },\n\n email(message?: string) {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n validators.push((val) => \n emailRegex.test(val) ? null : (message || 'Invalid email address')\n );\n return schema;\n },\n\n url(message?: string) {\n validators.push((val) => {\n try {\n new URL(val);\n return null;\n } catch {\n return message || 'Invalid URL';\n }\n });\n return schema;\n },\n\n uuid(message?: string) {\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n validators.push((val) => \n uuidRegex.test(val) ? null : (message || 'Invalid UUID')\n );\n return schema;\n },\n\n regex(pattern: RegExp, message?: string) {\n validators.push((val) => \n pattern.test(val) ? null : (message || `Must match pattern ${pattern}`)\n );\n return schema;\n },\n\n trim() {\n transforms.push((val) => val.trim());\n return schema;\n },\n\n toLowerCase() {\n transforms.push((val) => val.toLowerCase());\n return schema;\n },\n\n toUpperCase() {\n transforms.push((val) => val.toUpperCase());\n return schema;\n },\n\n optional() {\n return createOptionalSchema(schema);\n },\n\n parse(value: unknown): string {\n const result = schema.safeParse(value);\n if (!result.success) {\n throw new FloatValidationError([result.error]);\n }\n return result.data;\n },\n\n safeParse(value: unknown) {\n if (typeof value !== 'string') {\n return {\n success: false as const,\n error: {\n path: [],\n message: 'Expected string',\n received: value,\n expected: 'string',\n },\n };\n }\n\n // Apply transforms\n let transformed = value;\n for (const transform of transforms) {\n transformed = transform(transformed);\n }\n\n // Run validators\n for (const validator of validators) {\n const error = validator(transformed);\n if (error) {\n return {\n success: false as const,\n error: {\n path: [],\n message: error,\n received: value,\n expected: 'string',\n },\n };\n }\n }\n\n return { success: true as const, data: transformed };\n },\n };\n\n return schema;\n}\n\n// ============================================================================\n// NUMBER SCHEMA\n// ============================================================================\n\ninterface NumberSchema extends BaseSchema<number> {\n _type: 'number';\n min(value: number, message?: string): NumberSchema;\n max(value: number, message?: string): NumberSchema;\n int(message?: string): NumberSchema;\n positive(message?: string): NumberSchema;\n negative(message?: string): NumberSchema;\n finite(message?: string): NumberSchema;\n}\n\nfunction createNumberSchema(): NumberSchema {\n const validators: Array<(val: number) => string | null> = [];\n\n const schema: NumberSchema = {\n _type: 'number',\n _output: 0 as number,\n\n min(value: number, message?: string) {\n validators.push((val) => \n val >= value ? null : (message || `Must be at least ${value}`)\n );\n return schema;\n },\n\n max(value: number, message?: string) {\n validators.push((val) => \n val <= value ? null : (message || `Must be at most ${value}`)\n );\n return schema;\n },\n\n int(message?: string) {\n validators.push((val) => \n Number.isInteger(val) ? null : (message || 'Must be an integer')\n );\n return schema;\n },\n\n positive(message?: string) {\n validators.push((val) => \n val > 0 ? null : (message || 'Must be positive')\n );\n return schema;\n },\n\n negative(message?: string) {\n validators.push((val) => \n val < 0 ? null : (message || 'Must be negative')\n );\n return schema;\n },\n\n finite(message?: string) {\n validators.push((val) => \n Number.isFinite(val) ? null : (message || 'Must be finite')\n );\n return schema;\n },\n\n optional() {\n return createOptionalSchema(schema);\n },\n\n parse(value: unknown): number {\n const result = schema.safeParse(value);\n if (!result.success) {\n throw new FloatValidationError([result.error]);\n }\n return result.data;\n },\n\n safeParse(value: unknown) {\n const num = typeof value === 'string' ? parseFloat(value) : value;\n \n if (typeof num !== 'number' || isNaN(num)) {\n return {\n success: false as const,\n error: {\n path: [],\n message: 'Expected number',\n received: value,\n expected: 'number',\n },\n };\n }\n\n for (const validator of validators) {\n const error = validator(num);\n if (error) {\n return {\n success: false as const,\n error: {\n path: [],\n message: error,\n received: value,\n expected: 'number',\n },\n };\n }\n }\n\n return { success: true as const, data: num };\n },\n };\n\n return schema;\n}\n\n// ============================================================================\n// BOOLEAN SCHEMA\n// ============================================================================\n\ninterface BooleanSchema extends BaseSchema<boolean> {\n _type: 'boolean';\n}\n\nfunction createBooleanSchema(): BooleanSchema {\n const schema: BooleanSchema = {\n _type: 'boolean',\n _output: false as boolean,\n\n optional() {\n return createOptionalSchema(schema);\n },\n\n parse(value: unknown): boolean {\n const result = schema.safeParse(value);\n if (!result.success) {\n throw new FloatValidationError([result.error]);\n }\n return result.data;\n },\n\n safeParse(value: unknown) {\n // Handle string booleans\n if (value === 'true') return { success: true as const, data: true };\n if (value === 'false') return { success: true as const, data: false };\n \n if (typeof value !== 'boolean') {\n return {\n success: false as const,\n error: {\n path: [],\n message: 'Expected boolean',\n received: value,\n expected: 'boolean',\n },\n };\n }\n\n return { success: true as const, data: value };\n },\n };\n\n return schema;\n}\n\n// ============================================================================\n// ARRAY SCHEMA\n// ============================================================================\n\ninterface ArraySchema<T> extends BaseSchema<T[]> {\n _type: 'array';\n min(length: number, message?: string): ArraySchema<T>;\n max(length: number, message?: string): ArraySchema<T>;\n nonempty(message?: string): ArraySchema<T>;\n}\n\nfunction createArraySchema<S extends BaseSchema>(itemSchema: S): ArraySchema<S['_output']> {\n const validators: Array<(val: unknown[]) => string | null> = [];\n\n const schema: ArraySchema<S['_output']> = {\n _type: 'array',\n _output: [] as S['_output'][],\n\n min(length: number, message?: string) {\n validators.push((val) => \n val.length >= length ? null : (message || `Must have at least ${length} items`)\n );\n return schema;\n },\n\n max(length: number, message?: string) {\n validators.push((val) => \n val.length <= length ? null : (message || `Must have at most ${length} items`)\n );\n return schema;\n },\n\n nonempty(message?: string) {\n validators.push((val) => \n val.length > 0 ? null : (message || 'Array must not be empty')\n );\n return schema;\n },\n\n optional() {\n return createOptionalSchema(schema);\n },\n\n parse(value: unknown): S['_output'][] {\n const result = schema.safeParse(value);\n if (!result.success) {\n throw new FloatValidationError([result.error]);\n }\n return result.data;\n },\n\n safeParse(value: unknown) {\n if (!Array.isArray(value)) {\n return {\n success: false as const,\n error: {\n path: [],\n message: 'Expected array',\n received: value,\n expected: 'array',\n },\n };\n }\n\n // Validate length constraints\n for (const validator of validators) {\n const error = validator(value);\n if (error) {\n return {\n success: false as const,\n error: {\n path: [],\n message: error,\n received: value,\n expected: 'array',\n },\n };\n }\n }\n\n // Validate each item\n const result: S['_output'][] = [];\n for (let i = 0; i < value.length; i++) {\n const itemResult = itemSchema.safeParse(value[i]);\n if (!itemResult.success) {\n return {\n success: false as const,\n error: {\n ...itemResult.error,\n path: [String(i), ...itemResult.error.path],\n },\n };\n }\n result.push(itemResult.data);\n }\n\n return { success: true as const, data: result };\n },\n };\n\n return schema;\n}\n\n// ============================================================================\n// OBJECT SCHEMA\n// ============================================================================\n\ntype ObjectShape = Record<string, BaseSchema>;\ntype InferObject<T extends ObjectShape> = {\n [K in keyof T]: T[K]['_output'];\n};\n\ninterface ObjectSchema<T extends ObjectShape> extends BaseSchema<InferObject<T>> {\n _type: 'object';\n _shape: T;\n partial(): ObjectSchema<{ [K in keyof T]: OptionalSchema<T[K]['_output']> }>;\n pick<K extends keyof T>(...keys: K[]): ObjectSchema<Pick<T, K>>;\n omit<K extends keyof T>(...keys: K[]): ObjectSchema<Omit<T, K>>;\n extend<E extends ObjectShape>(extension: E): ObjectSchema<T & E>;\n merge<E extends ObjectShape>(other: ObjectSchema<E>): ObjectSchema<T & E>;\n passthrough(): ObjectSchema<T>;\n strict(): ObjectSchema<T>;\n}\n\nfunction createObjectSchema<T extends ObjectShape>(shape: T): ObjectSchema<T> {\n let passthroughMode = false;\n let strictMode = false;\n\n const schema: ObjectSchema<T> = {\n _type: 'object',\n _output: {} as InferObject<T>,\n _shape: shape,\n\n partial() {\n const partialShape: Record<string, BaseSchema> = {};\n for (const key in shape) {\n partialShape[key] = shape[key].optional();\n }\n return createObjectSchema(partialShape) as any;\n },\n\n pick<K extends keyof T>(...keys: K[]) {\n const pickedShape: Partial<T> = {};\n for (const key of keys) {\n pickedShape[key] = shape[key];\n }\n return createObjectSchema(pickedShape as Pick<T, K>);\n },\n\n omit<K extends keyof T>(...keys: K[]) {\n const omittedShape = { ...shape };\n for (const key of keys) {\n delete omittedShape[key];\n }\n return createObjectSchema(omittedShape as Omit<T, K>);\n },\n\n extend<E extends ObjectShape>(extension: E) {\n return createObjectSchema({ ...shape, ...extension });\n },\n\n merge<E extends ObjectShape>(other: ObjectSchema<E>) {\n return createObjectSchema({ ...shape, ...other._shape });\n },\n\n passthrough() {\n passthroughMode = true;\n return schema;\n },\n\n strict() {\n strictMode = true;\n return schema;\n },\n\n optional() {\n return createOptionalSchema(schema);\n },\n\n parse(value: unknown): InferObject<T> {\n const result = schema.safeParse(value);\n if (!result.success) {\n throw new FloatValidationError([result.error]);\n }\n return result.data;\n },\n\n safeParse(value: unknown) {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n return {\n success: false as const,\n error: {\n path: [],\n message: 'Expected object',\n received: value,\n expected: 'object',\n },\n };\n }\n\n const obj = value as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n\n // Check for unknown keys in strict mode\n if (strictMode) {\n for (const key in obj) {\n if (!(key in shape)) {\n return {\n success: false as const,\n error: {\n path: [key],\n message: `Unknown key '${key}'`,\n received: obj[key],\n expected: 'undefined',\n },\n };\n }\n }\n }\n\n // Validate each field\n for (const key in shape) {\n const fieldSchema = shape[key];\n const fieldResult = fieldSchema.safeParse(obj[key]);\n \n if (!fieldResult.success) {\n return {\n success: false as const,\n error: {\n ...fieldResult.error,\n path: [key, ...fieldResult.error.path],\n },\n };\n }\n \n result[key] = fieldResult.data;\n }\n\n // Include extra keys in passthrough mode\n if (passthroughMode) {\n for (const key in obj) {\n if (!(key in shape)) {\n result[key] = obj[key];\n }\n }\n }\n\n return { success: true as const, data: result as InferObject<T> };\n },\n };\n\n return schema;\n}\n\n// ============================================================================\n// OPTIONAL SCHEMA\n// ============================================================================\n\ninterface OptionalSchema<T> extends BaseSchema<T | undefined> {\n _type: 'optional';\n _innerType: BaseSchema<T>;\n default(value: T): BaseSchema<T>;\n}\n\nfunction createOptionalSchema<T>(innerSchema: BaseSchema<T>): OptionalSchema<T> {\n const schema: OptionalSchema<T> = {\n _type: 'optional',\n _output: undefined as T | undefined,\n _innerType: innerSchema,\n\n default(defaultValue: T): BaseSchema<T> {\n return {\n _type: 'optional',\n _output: defaultValue,\n optional: () => schema,\n parse(value: unknown): T {\n if (value === undefined || value === null) {\n return defaultValue;\n }\n return innerSchema.parse(value);\n },\n safeParse(value: unknown) {\n if (value === undefined || value === null) {\n return { success: true as const, data: defaultValue };\n }\n return innerSchema.safeParse(value);\n },\n };\n },\n\n optional() {\n return schema;\n },\n\n parse(value: unknown): T | undefined {\n const result = schema.safeParse(value);\n if (!result.success) {\n throw new FloatValidationError([result.error]);\n }\n return result.data;\n },\n\n safeParse(value: unknown) {\n if (value === undefined || value === null) {\n return { success: true as const, data: undefined };\n }\n return innerSchema.safeParse(value);\n },\n };\n\n return schema;\n}\n\n// ============================================================================\n// ENUM SCHEMA\n// ============================================================================\n\ninterface EnumSchema<T extends readonly string[]> extends BaseSchema<T[number]> {\n _type: 'enum';\n options: T;\n}\n\nfunction createEnumSchema<T extends readonly string[]>(values: T): EnumSchema<T> {\n const schema: EnumSchema<T> = {\n _type: 'enum',\n _output: values[0] as T[number],\n options: values,\n\n optional() {\n return createOptionalSchema(schema);\n },\n\n parse(value: unknown): T[number] {\n const result = schema.safeParse(value);\n if (!result.success) {\n throw new FloatValidationError([result.error]);\n }\n return result.data;\n },\n\n safeParse(value: unknown) {\n if (typeof value !== 'string' || !values.includes(value as T[number])) {\n return {\n success: false as const,\n error: {\n path: [],\n message: `Expected one of: ${values.join(', ')}`,\n received: value,\n expected: values.join(' | '),\n },\n };\n }\n\n return { success: true as const, data: value as T[number] };\n },\n };\n\n return schema;\n}\n\n// ============================================================================\n// UNION SCHEMA\n// ============================================================================\n\ninterface UnionSchema<T extends BaseSchema[]> extends BaseSchema<T[number]['_output']> {\n _type: 'union';\n}\n\nfunction createUnionSchema<T extends BaseSchema[]>(schemas: T): UnionSchema<T> {\n const schema: UnionSchema<T> = {\n _type: 'union',\n _output: undefined as T[number]['_output'],\n\n optional() {\n return createOptionalSchema(schema);\n },\n\n parse(value: unknown): T[number]['_output'] {\n const result = schema.safeParse(value);\n if (!result.success) {\n throw new FloatValidationError([result.error]);\n }\n return result.data;\n },\n\n safeParse(value: unknown) {\n const errors: ValidationError[] = [];\n \n for (const s of schemas) {\n const result = s.safeParse(value);\n if (result.success) {\n return result;\n }\n errors.push(result.error);\n }\n\n return {\n success: false as const,\n error: {\n path: [],\n message: `Value did not match any schema in union`,\n received: value,\n expected: schemas.map(s => s._type).join(' | '),\n },\n };\n },\n };\n\n return schema;\n}\n\n// ============================================================================\n// VALIDATION ERROR\n// ============================================================================\n\nexport class FloatValidationError extends Error {\n public readonly errors: ValidationError[];\n public readonly status = 400;\n\n constructor(errors: ValidationError[]) {\n super('Validation failed');\n this.name = 'FloatValidationError';\n this.errors = errors;\n }\n\n toJSON() {\n return {\n error: 'Validation Error',\n details: this.errors.map(e => ({\n path: e.path.join('.') || 'root',\n message: e.message,\n received: typeof e.received,\n })),\n };\n }\n\n toResponse(): Response {\n return new Response(JSON.stringify(this.toJSON()), {\n status: 400,\n headers: { 'Content-Type': 'application/json' },\n });\n }\n}\n\n// ============================================================================\n// SCHEMA BUILDER (f - main export)\n// ============================================================================\n\nexport const f = {\n string: createStringSchema,\n number: createNumberSchema,\n boolean: createBooleanSchema,\n array: createArraySchema,\n object: createObjectSchema,\n enum: createEnumSchema,\n union: createUnionSchema,\n};\n\n// ============================================================================\n// TYPE INFERENCE\n// ============================================================================\n\nexport type Infer<T extends BaseSchema> = T['_output'];\n\n// ============================================================================\n// API ROUTE DECORATOR\n// ============================================================================\n\ninterface TypedRouteOptions {\n body?: ObjectSchema<any>;\n query?: ObjectSchema<any>;\n params?: ObjectSchema<any>;\n}\n\ninterface ValidatedData {\n body: any;\n query: any;\n params: any;\n}\n\ninterface TypedRequest extends Request {\n validated: ValidatedData;\n}\n\ntype RouteHandler = (\n request: TypedRequest\n) => Promise<Response> | Response;\n\n/**\n * Create a type-safe API route with automatic validation\n * \n * @example\n * ```typescript\n * import { typedRoute, f } from '@float/core';\n * \n * export const POST = typedRoute({\n * body: f.object({\n * name: f.string().min(2),\n * email: f.string().email(),\n * age: f.number().min(18).optional(),\n * }),\n * }, async (req) => {\n * // req.validated.body is fully typed!\n * const { name, email, age } = req.validated.body;\n * \n * return new Response(JSON.stringify({ \n * message: `Hello ${name}!` \n * }));\n * });\n * ```\n */\nexport function typedRoute(\n options: TypedRouteOptions,\n handler: RouteHandler\n): (request: Request) => Promise<Response> {\n return async (request: Request): Promise<Response> => {\n try {\n const validated: ValidatedData = { body: undefined, query: undefined, params: undefined };\n\n // Parse and validate body\n if (options.body) {\n try {\n const body = await request.json();\n const bodySchema = options.body;\n const result = bodySchema.safeParse(body);\n if (!result.success) {\n return new FloatValidationError([result.error]).toResponse();\n }\n validated.body = result.data;\n } catch {\n return new Response(\n JSON.stringify({ error: 'Invalid JSON body' }),\n { status: 400, headers: { 'Content-Type': 'application/json' } }\n );\n }\n }\n\n // Parse and validate query params\n if (options.query) {\n const url = new URL(request.url);\n const queryObj: Record<string, string> = {};\n url.searchParams.forEach((value, key) => {\n queryObj[key] = value;\n });\n \n const querySchema = options.query;\n const result = querySchema.safeParse(queryObj);\n if (!result.success) {\n return new FloatValidationError([result.error]).toResponse();\n }\n validated.query = result.data;\n }\n\n // Validate URL params (if provided via request context)\n if (options.params) {\n const params = (request as any).params || {};\n const paramsSchema = options.params;\n const result = paramsSchema.safeParse(params);\n if (!result.success) {\n return new FloatValidationError([result.error]).toResponse();\n }\n validated.params = result.data;\n }\n\n // Create typed request\n const typedRequest = request as TypedRequest;\n typedRequest.validated = validated;\n\n // Call handler\n return await handler(typedRequest);\n } catch (error) {\n if (error instanceof FloatValidationError) {\n return error.toResponse();\n }\n \n console.error('Route error:', error);\n return new Response(\n JSON.stringify({ error: 'Internal server error' }),\n { status: 500, headers: { 'Content-Type': 'application/json' } }\n );\n }\n };\n}\n\n// ============================================================================\n// JSON RESPONSE HELPER\n// ============================================================================\n\ninterface JsonResponseOptions {\n status?: number;\n headers?: Record<string, string>;\n}\n\n/**\n * Create a JSON response with automatic serialization\n */\nexport function json<T>(data: T, options: JsonResponseOptions = {}): Response {\n return new Response(JSON.stringify(data), {\n status: options.status || 200,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n}\n\n/**\n * Create an error response\n */\nexport function error(message: string, status = 500): Response {\n return new Response(\n JSON.stringify({ error: message }),\n { \n status, \n headers: { 'Content-Type': 'application/json' } \n }\n );\n}\n\n/**\n * Create a redirect response\n */\nexport function redirect(url: string, status: 301 | 302 | 307 | 308 = 302): Response {\n return new Response(null, {\n status,\n headers: { Location: url },\n });\n}\n"],"mappings":";AA6CA,SAAS,qBAAmC;AAC1C,QAAM,aAAoD,CAAC;AAC3D,QAAM,aAA6C,CAAC;AAEpD,QAAM,SAAuB;AAAA,IAC3B,OAAO;AAAA,IACP,SAAS;AAAA,IAET,IAAI,QAAgB,SAAkB;AACpC,iBAAW;AAAA,QAAK,CAAC,QACf,IAAI,UAAU,SAAS,OAAQ,WAAW,oBAAoB,MAAM;AAAA,MACtE;AACA,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,QAAgB,SAAkB;AACpC,iBAAW;AAAA,QAAK,CAAC,QACf,IAAI,UAAU,SAAS,OAAQ,WAAW,mBAAmB,MAAM;AAAA,MACrE;AACA,aAAO;AAAA,IACT;AAAA,IAEA,MAAM,SAAkB;AACtB,YAAM,aAAa;AACnB,iBAAW;AAAA,QAAK,CAAC,QACf,WAAW,KAAK,GAAG,IAAI,OAAQ,WAAW;AAAA,MAC5C;AACA,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,SAAkB;AACpB,iBAAW,KAAK,CAAC,QAAQ;AACvB,YAAI;AACF,cAAI,IAAI,GAAG;AACX,iBAAO;AAAA,QACT,QAAQ;AACN,iBAAO,WAAW;AAAA,QACpB;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AAAA,IAEA,KAAK,SAAkB;AACrB,YAAM,YAAY;AAClB,iBAAW;AAAA,QAAK,CAAC,QACf,UAAU,KAAK,GAAG,IAAI,OAAQ,WAAW;AAAA,MAC3C;AACA,aAAO;AAAA,IACT;AAAA,IAEA,MAAM,SAAiB,SAAkB;AACvC,iBAAW;AAAA,QAAK,CAAC,QACf,QAAQ,KAAK,GAAG,IAAI,OAAQ,WAAW,sBAAsB,OAAO;AAAA,MACtE;AACA,aAAO;AAAA,IACT;AAAA,IAEA,OAAO;AACL,iBAAW,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC;AACnC,aAAO;AAAA,IACT;AAAA,IAEA,cAAc;AACZ,iBAAW,KAAK,CAAC,QAAQ,IAAI,YAAY,CAAC;AAC1C,aAAO;AAAA,IACT;AAAA,IAEA,cAAc;AACZ,iBAAW,KAAK,CAAC,QAAQ,IAAI,YAAY,CAAC;AAC1C,aAAO;AAAA,IACT;AAAA,IAEA,WAAW;AACT,aAAO,qBAAqB,MAAM;AAAA,IACpC;AAAA,IAEA,MAAM,OAAwB;AAC5B,YAAM,SAAS,OAAO,UAAU,KAAK;AACrC,UAAI,CAAC,OAAO,SAAS;AACnB,cAAM,IAAI,qBAAqB,CAAC,OAAO,KAAK,CAAC;AAAA,MAC/C;AACA,aAAO,OAAO;AAAA,IAChB;AAAA,IAEA,UAAU,OAAgB;AACxB,UAAI,OAAO,UAAU,UAAU;AAC7B,eAAO;AAAA,UACL,SAAS;AAAA,UACT,OAAO;AAAA,YACL,MAAM,CAAC;AAAA,YACP,SAAS;AAAA,YACT,UAAU;AAAA,YACV,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAGA,UAAI,cAAc;AAClB,iBAAW,aAAa,YAAY;AAClC,sBAAc,UAAU,WAAW;AAAA,MACrC;AAGA,iBAAW,aAAa,YAAY;AAClC,cAAMA,SAAQ,UAAU,WAAW;AACnC,YAAIA,QAAO;AACT,iBAAO;AAAA,YACL,SAAS;AAAA,YACT,OAAO;AAAA,cACL,MAAM,CAAC;AAAA,cACP,SAASA;AAAA,cACT,UAAU;AAAA,cACV,UAAU;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,aAAO,EAAE,SAAS,MAAe,MAAM,YAAY;AAAA,IACrD;AAAA,EACF;AAEA,SAAO;AACT;AAgBA,SAAS,qBAAmC;AAC1C,QAAM,aAAoD,CAAC;AAE3D,QAAM,SAAuB;AAAA,IAC3B,OAAO;AAAA,IACP,SAAS;AAAA,IAET,IAAI,OAAe,SAAkB;AACnC,iBAAW;AAAA,QAAK,CAAC,QACf,OAAO,QAAQ,OAAQ,WAAW,oBAAoB,KAAK;AAAA,MAC7D;AACA,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,OAAe,SAAkB;AACnC,iBAAW;AAAA,QAAK,CAAC,QACf,OAAO,QAAQ,OAAQ,WAAW,mBAAmB,KAAK;AAAA,MAC5D;AACA,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,SAAkB;AACpB,iBAAW;AAAA,QAAK,CAAC,QACf,OAAO,UAAU,GAAG,IAAI,OAAQ,WAAW;AAAA,MAC7C;AACA,aAAO;AAAA,IACT;AAAA,IAEA,SAAS,SAAkB;AACzB,iBAAW;AAAA,QAAK,CAAC,QACf,MAAM,IAAI,OAAQ,WAAW;AAAA,MAC/B;AACA,aAAO;AAAA,IACT;AAAA,IAEA,SAAS,SAAkB;AACzB,iBAAW;AAAA,QAAK,CAAC,QACf,MAAM,IAAI,OAAQ,WAAW;AAAA,MAC/B;AACA,aAAO;AAAA,IACT;AAAA,IAEA,OAAO,SAAkB;AACvB,iBAAW;AAAA,QAAK,CAAC,QACf,OAAO,SAAS,GAAG,IAAI,OAAQ,WAAW;AAAA,MAC5C;AACA,aAAO;AAAA,IACT;AAAA,IAEA,WAAW;AACT,aAAO,qBAAqB,MAAM;AAAA,IACpC;AAAA,IAEA,MAAM,OAAwB;AAC5B,YAAM,SAAS,OAAO,UAAU,KAAK;AACrC,UAAI,CAAC,OAAO,SAAS;AACnB,cAAM,IAAI,qBAAqB,CAAC,OAAO,KAAK,CAAC;AAAA,MAC/C;AACA,aAAO,OAAO;AAAA,IAChB;AAAA,IAEA,UAAU,OAAgB;AACxB,YAAM,MAAM,OAAO,UAAU,WAAW,WAAW,KAAK,IAAI;AAE5D,UAAI,OAAO,QAAQ,YAAY,MAAM,GAAG,GAAG;AACzC,eAAO;AAAA,UACL,SAAS;AAAA,UACT,OAAO;AAAA,YACL,MAAM,CAAC;AAAA,YACP,SAAS;AAAA,YACT,UAAU;AAAA,YACV,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAEA,iBAAW,aAAa,YAAY;AAClC,cAAMA,SAAQ,UAAU,GAAG;AAC3B,YAAIA,QAAO;AACT,iBAAO;AAAA,YACL,SAAS;AAAA,YACT,OAAO;AAAA,cACL,MAAM,CAAC;AAAA,cACP,SAASA;AAAA,cACT,UAAU;AAAA,cACV,UAAU;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,aAAO,EAAE,SAAS,MAAe,MAAM,IAAI;AAAA,IAC7C;AAAA,EACF;AAEA,SAAO;AACT;AAUA,SAAS,sBAAqC;AAC5C,QAAM,SAAwB;AAAA,IAC5B,OAAO;AAAA,IACP,SAAS;AAAA,IAET,WAAW;AACT,aAAO,qBAAqB,MAAM;AAAA,IACpC;AAAA,IAEA,MAAM,OAAyB;AAC7B,YAAM,SAAS,OAAO,UAAU,KAAK;AACrC,UAAI,CAAC,OAAO,SAAS;AACnB,cAAM,IAAI,qBAAqB,CAAC,OAAO,KAAK,CAAC;AAAA,MAC/C;AACA,aAAO,OAAO;AAAA,IAChB;AAAA,IAEA,UAAU,OAAgB;AAExB,UAAI,UAAU,OAAQ,QAAO,EAAE,SAAS,MAAe,MAAM,KAAK;AAClE,UAAI,UAAU,QAAS,QAAO,EAAE,SAAS,MAAe,MAAM,MAAM;AAEpE,UAAI,OAAO,UAAU,WAAW;AAC9B,eAAO;AAAA,UACL,SAAS;AAAA,UACT,OAAO;AAAA,YACL,MAAM,CAAC;AAAA,YACP,SAAS;AAAA,YACT,UAAU;AAAA,YACV,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAEA,aAAO,EAAE,SAAS,MAAe,MAAM,MAAM;AAAA,IAC/C;AAAA,EACF;AAEA,SAAO;AACT;AAaA,SAAS,kBAAwC,YAA0C;AACzF,QAAM,aAAuD,CAAC;AAE9D,QAAM,SAAoC;AAAA,IACxC,OAAO;AAAA,IACP,SAAS,CAAC;AAAA,IAEV,IAAI,QAAgB,SAAkB;AACpC,iBAAW;AAAA,QAAK,CAAC,QACf,IAAI,UAAU,SAAS,OAAQ,WAAW,sBAAsB,MAAM;AAAA,MACxE;AACA,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,QAAgB,SAAkB;AACpC,iBAAW;AAAA,QAAK,CAAC,QACf,IAAI,UAAU,SAAS,OAAQ,WAAW,qBAAqB,MAAM;AAAA,MACvE;AACA,aAAO;AAAA,IACT;AAAA,IAEA,SAAS,SAAkB;AACzB,iBAAW;AAAA,QAAK,CAAC,QACf,IAAI,SAAS,IAAI,OAAQ,WAAW;AAAA,MACtC;AACA,aAAO;AAAA,IACT;AAAA,IAEA,WAAW;AACT,aAAO,qBAAqB,MAAM;AAAA,IACpC;AAAA,IAEA,MAAM,OAAgC;AACpC,YAAM,SAAS,OAAO,UAAU,KAAK;AACrC,UAAI,CAAC,OAAO,SAAS;AACnB,cAAM,IAAI,qBAAqB,CAAC,OAAO,KAAK,CAAC;AAAA,MAC/C;AACA,aAAO,OAAO;AAAA,IAChB;AAAA,IAEA,UAAU,OAAgB;AACxB,UAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,eAAO;AAAA,UACL,SAAS;AAAA,UACT,OAAO;AAAA,YACL,MAAM,CAAC;AAAA,YACP,SAAS;AAAA,YACT,UAAU;AAAA,YACV,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAGA,iBAAW,aAAa,YAAY;AAClC,cAAMA,SAAQ,UAAU,KAAK;AAC7B,YAAIA,QAAO;AACT,iBAAO;AAAA,YACL,SAAS;AAAA,YACT,OAAO;AAAA,cACL,MAAM,CAAC;AAAA,cACP,SAASA;AAAA,cACT,UAAU;AAAA,cACV,UAAU;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAGA,YAAM,SAAyB,CAAC;AAChC,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,cAAM,aAAa,WAAW,UAAU,MAAM,CAAC,CAAC;AAChD,YAAI,CAAC,WAAW,SAAS;AACvB,iBAAO;AAAA,YACL,SAAS;AAAA,YACT,OAAO;AAAA,cACL,GAAG,WAAW;AAAA,cACd,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,WAAW,MAAM,IAAI;AAAA,YAC5C;AAAA,UACF;AAAA,QACF;AACA,eAAO,KAAK,WAAW,IAAI;AAAA,MAC7B;AAEA,aAAO,EAAE,SAAS,MAAe,MAAM,OAAO;AAAA,IAChD;AAAA,EACF;AAEA,SAAO;AACT;AAuBA,SAAS,mBAA0C,OAA2B;AAC5E,MAAI,kBAAkB;AACtB,MAAI,aAAa;AAEjB,QAAM,SAA0B;AAAA,IAC9B,OAAO;AAAA,IACP,SAAS,CAAC;AAAA,IACV,QAAQ;AAAA,IAER,UAAU;AACR,YAAM,eAA2C,CAAC;AAClD,iBAAW,OAAO,OAAO;AACvB,qBAAa,GAAG,IAAI,MAAM,GAAG,EAAE,SAAS;AAAA,MAC1C;AACA,aAAO,mBAAmB,YAAY;AAAA,IACxC;AAAA,IAEA,QAA2B,MAAW;AACpC,YAAM,cAA0B,CAAC;AACjC,iBAAW,OAAO,MAAM;AACtB,oBAAY,GAAG,IAAI,MAAM,GAAG;AAAA,MAC9B;AACA,aAAO,mBAAmB,WAAyB;AAAA,IACrD;AAAA,IAEA,QAA2B,MAAW;AACpC,YAAM,eAAe,EAAE,GAAG,MAAM;AAChC,iBAAW,OAAO,MAAM;AACtB,eAAO,aAAa,GAAG;AAAA,MACzB;AACA,aAAO,mBAAmB,YAA0B;AAAA,IACtD;AAAA,IAEA,OAA8B,WAAc;AAC1C,aAAO,mBAAmB,EAAE,GAAG,OAAO,GAAG,UAAU,CAAC;AAAA,IACtD;AAAA,IAEA,MAA6B,OAAwB;AACnD,aAAO,mBAAmB,EAAE,GAAG,OAAO,GAAG,MAAM,OAAO,CAAC;AAAA,IACzD;AAAA,IAEA,cAAc;AACZ,wBAAkB;AAClB,aAAO;AAAA,IACT;AAAA,IAEA,SAAS;AACP,mBAAa;AACb,aAAO;AAAA,IACT;AAAA,IAEA,WAAW;AACT,aAAO,qBAAqB,MAAM;AAAA,IACpC;AAAA,IAEA,MAAM,OAAgC;AACpC,YAAM,SAAS,OAAO,UAAU,KAAK;AACrC,UAAI,CAAC,OAAO,SAAS;AACnB,cAAM,IAAI,qBAAqB,CAAC,OAAO,KAAK,CAAC;AAAA,MAC/C;AACA,aAAO,OAAO;AAAA,IAChB;AAAA,IAEA,UAAU,OAAgB;AACxB,UAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,GAAG;AACvE,eAAO;AAAA,UACL,SAAS;AAAA,UACT,OAAO;AAAA,YACL,MAAM,CAAC;AAAA,YACP,SAAS;AAAA,YACT,UAAU;AAAA,YACV,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAEA,YAAM,MAAM;AACZ,YAAM,SAAkC,CAAC;AAGzC,UAAI,YAAY;AACd,mBAAW,OAAO,KAAK;AACrB,cAAI,EAAE,OAAO,QAAQ;AACnB,mBAAO;AAAA,cACL,SAAS;AAAA,cACT,OAAO;AAAA,gBACL,MAAM,CAAC,GAAG;AAAA,gBACV,SAAS,gBAAgB,GAAG;AAAA,gBAC5B,UAAU,IAAI,GAAG;AAAA,gBACjB,UAAU;AAAA,cACZ;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAGA,iBAAW,OAAO,OAAO;AACvB,cAAM,cAAc,MAAM,GAAG;AAC7B,cAAM,cAAc,YAAY,UAAU,IAAI,GAAG,CAAC;AAElD,YAAI,CAAC,YAAY,SAAS;AACxB,iBAAO;AAAA,YACL,SAAS;AAAA,YACT,OAAO;AAAA,cACL,GAAG,YAAY;AAAA,cACf,MAAM,CAAC,KAAK,GAAG,YAAY,MAAM,IAAI;AAAA,YACvC;AAAA,UACF;AAAA,QACF;AAEA,eAAO,GAAG,IAAI,YAAY;AAAA,MAC5B;AAGA,UAAI,iBAAiB;AACnB,mBAAW,OAAO,KAAK;AACrB,cAAI,EAAE,OAAO,QAAQ;AACnB,mBAAO,GAAG,IAAI,IAAI,GAAG;AAAA,UACvB;AAAA,QACF;AAAA,MACF;AAEA,aAAO,EAAE,SAAS,MAAe,MAAM,OAAyB;AAAA,IAClE;AAAA,EACF;AAEA,SAAO;AACT;AAYA,SAAS,qBAAwB,aAA+C;AAC9E,QAAM,SAA4B;AAAA,IAChC,OAAO;AAAA,IACP,SAAS;AAAA,IACT,YAAY;AAAA,IAEZ,QAAQ,cAAgC;AACtC,aAAO;AAAA,QACL,OAAO;AAAA,QACP,SAAS;AAAA,QACT,UAAU,MAAM;AAAA,QAChB,MAAM,OAAmB;AACvB,cAAI,UAAU,UAAa,UAAU,MAAM;AACzC,mBAAO;AAAA,UACT;AACA,iBAAO,YAAY,MAAM,KAAK;AAAA,QAChC;AAAA,QACA,UAAU,OAAgB;AACxB,cAAI,UAAU,UAAa,UAAU,MAAM;AACzC,mBAAO,EAAE,SAAS,MAAe,MAAM,aAAa;AAAA,UACtD;AACA,iBAAO,YAAY,UAAU,KAAK;AAAA,QACpC;AAAA,MACF;AAAA,IACF;AAAA,IAEA,WAAW;AACT,aAAO;AAAA,IACT;AAAA,IAEA,MAAM,OAA+B;AACnC,YAAM,SAAS,OAAO,UAAU,KAAK;AACrC,UAAI,CAAC,OAAO,SAAS;AACnB,cAAM,IAAI,qBAAqB,CAAC,OAAO,KAAK,CAAC;AAAA,MAC/C;AACA,aAAO,OAAO;AAAA,IAChB;AAAA,IAEA,UAAU,OAAgB;AACxB,UAAI,UAAU,UAAa,UAAU,MAAM;AACzC,eAAO,EAAE,SAAS,MAAe,MAAM,OAAU;AAAA,MACnD;AACA,aAAO,YAAY,UAAU,KAAK;AAAA,IACpC;AAAA,EACF;AAEA,SAAO;AACT;AAWA,SAAS,iBAA8C,QAA0B;AAC/E,QAAM,SAAwB;AAAA,IAC5B,OAAO;AAAA,IACP,SAAS,OAAO,CAAC;AAAA,IACjB,SAAS;AAAA,IAET,WAAW;AACT,aAAO,qBAAqB,MAAM;AAAA,IACpC;AAAA,IAEA,MAAM,OAA2B;AAC/B,YAAM,SAAS,OAAO,UAAU,KAAK;AACrC,UAAI,CAAC,OAAO,SAAS;AACnB,cAAM,IAAI,qBAAqB,CAAC,OAAO,KAAK,CAAC;AAAA,MAC/C;AACA,aAAO,OAAO;AAAA,IAChB;AAAA,IAEA,UAAU,OAAgB;AACxB,UAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAkB,GAAG;AACrE,eAAO;AAAA,UACL,SAAS;AAAA,UACT,OAAO;AAAA,YACL,MAAM,CAAC;AAAA,YACP,SAAS,oBAAoB,OAAO,KAAK,IAAI,CAAC;AAAA,YAC9C,UAAU;AAAA,YACV,UAAU,OAAO,KAAK,KAAK;AAAA,UAC7B;AAAA,QACF;AAAA,MACF;AAEA,aAAO,EAAE,SAAS,MAAe,MAAM,MAAmB;AAAA,IAC5D;AAAA,EACF;AAEA,SAAO;AACT;AAUA,SAAS,kBAA0C,SAA4B;AAC7E,QAAM,SAAyB;AAAA,IAC7B,OAAO;AAAA,IACP,SAAS;AAAA,IAET,WAAW;AACT,aAAO,qBAAqB,MAAM;AAAA,IACpC;AAAA,IAEA,MAAM,OAAsC;AAC1C,YAAM,SAAS,OAAO,UAAU,KAAK;AACrC,UAAI,CAAC,OAAO,SAAS;AACnB,cAAM,IAAI,qBAAqB,CAAC,OAAO,KAAK,CAAC;AAAA,MAC/C;AACA,aAAO,OAAO;AAAA,IAChB;AAAA,IAEA,UAAU,OAAgB;AACxB,YAAM,SAA4B,CAAC;AAEnC,iBAAW,KAAK,SAAS;AACvB,cAAM,SAAS,EAAE,UAAU,KAAK;AAChC,YAAI,OAAO,SAAS;AAClB,iBAAO;AAAA,QACT;AACA,eAAO,KAAK,OAAO,KAAK;AAAA,MAC1B;AAEA,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO;AAAA,UACL,MAAM,CAAC;AAAA,UACP,SAAS;AAAA,UACT,UAAU;AAAA,UACV,UAAU,QAAQ,IAAI,OAAK,EAAE,KAAK,EAAE,KAAK,KAAK;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAMO,IAAM,uBAAN,cAAmC,MAAM;AAAA,EAC9B;AAAA,EACA,SAAS;AAAA,EAEzB,YAAY,QAA2B;AACrC,UAAM,mBAAmB;AACzB,SAAK,OAAO;AACZ,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,OAAO;AAAA,MACP,SAAS,KAAK,OAAO,IAAI,QAAM;AAAA,QAC7B,MAAM,EAAE,KAAK,KAAK,GAAG,KAAK;AAAA,QAC1B,SAAS,EAAE;AAAA,QACX,UAAU,OAAO,EAAE;AAAA,MACrB,EAAE;AAAA,IACJ;AAAA,EACF;AAAA,EAEA,aAAuB;AACrB,WAAO,IAAI,SAAS,KAAK,UAAU,KAAK,OAAO,CAAC,GAAG;AAAA,MACjD,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAChD,CAAC;AAAA,EACH;AACF;AAMO,IAAM,IAAI;AAAA,EACf,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AACT;AAuDO,SAAS,WACd,SACA,SACyC;AACzC,SAAO,OAAO,YAAwC;AACpD,QAAI;AACF,YAAM,YAA2B,EAAE,MAAM,QAAW,OAAO,QAAW,QAAQ,OAAU;AAGxF,UAAI,QAAQ,MAAM;AAChB,YAAI;AACF,gBAAM,OAAO,MAAM,QAAQ,KAAK;AAChC,gBAAM,aAAa,QAAQ;AAC3B,gBAAM,SAAS,WAAW,UAAU,IAAI;AACxC,cAAI,CAAC,OAAO,SAAS;AACnB,mBAAO,IAAI,qBAAqB,CAAC,OAAO,KAAK,CAAC,EAAE,WAAW;AAAA,UAC7D;AACA,oBAAU,OAAO,OAAO;AAAA,QAC1B,QAAQ;AACN,iBAAO,IAAI;AAAA,YACT,KAAK,UAAU,EAAE,OAAO,oBAAoB,CAAC;AAAA,YAC7C,EAAE,QAAQ,KAAK,SAAS,EAAE,gBAAgB,mBAAmB,EAAE;AAAA,UACjE;AAAA,QACF;AAAA,MACF;AAGA,UAAI,QAAQ,OAAO;AACjB,cAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,cAAM,WAAmC,CAAC;AAC1C,YAAI,aAAa,QAAQ,CAAC,OAAO,QAAQ;AACvC,mBAAS,GAAG,IAAI;AAAA,QAClB,CAAC;AAED,cAAM,cAAc,QAAQ;AAC5B,cAAM,SAAS,YAAY,UAAU,QAAQ;AAC7C,YAAI,CAAC,OAAO,SAAS;AACnB,iBAAO,IAAI,qBAAqB,CAAC,OAAO,KAAK,CAAC,EAAE,WAAW;AAAA,QAC7D;AACA,kBAAU,QAAQ,OAAO;AAAA,MAC3B;AAGA,UAAI,QAAQ,QAAQ;AAClB,cAAM,SAAU,QAAgB,UAAU,CAAC;AAC3C,cAAM,eAAe,QAAQ;AAC7B,cAAM,SAAS,aAAa,UAAU,MAAM;AAC5C,YAAI,CAAC,OAAO,SAAS;AACnB,iBAAO,IAAI,qBAAqB,CAAC,OAAO,KAAK,CAAC,EAAE,WAAW;AAAA,QAC7D;AACA,kBAAU,SAAS,OAAO;AAAA,MAC5B;AAGA,YAAM,eAAe;AACrB,mBAAa,YAAY;AAGzB,aAAO,MAAM,QAAQ,YAAY;AAAA,IACnC,SAASA,QAAO;AACd,UAAIA,kBAAiB,sBAAsB;AACzC,eAAOA,OAAM,WAAW;AAAA,MAC1B;AAEA,cAAQ,MAAM,gBAAgBA,MAAK;AACnC,aAAO,IAAI;AAAA,QACT,KAAK,UAAU,EAAE,OAAO,wBAAwB,CAAC;AAAA,QACjD,EAAE,QAAQ,KAAK,SAAS,EAAE,gBAAgB,mBAAmB,EAAE;AAAA,MACjE;AAAA,IACF;AAAA,EACF;AACF;AAcO,SAAS,KAAQ,MAAS,UAA+B,CAAC,GAAa;AAC5E,SAAO,IAAI,SAAS,KAAK,UAAU,IAAI,GAAG;AAAA,IACxC,QAAQ,QAAQ,UAAU;AAAA,IAC1B,SAAS;AAAA,MACP,gBAAgB;AAAA,MAChB,GAAG,QAAQ;AAAA,IACb;AAAA,EACF,CAAC;AACH;AAKO,SAAS,MAAM,SAAiB,SAAS,KAAe;AAC7D,SAAO,IAAI;AAAA,IACT,KAAK,UAAU,EAAE,OAAO,QAAQ,CAAC;AAAA,IACjC;AAAA,MACE;AAAA,MACA,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAChD;AAAA,EACF;AACF;AAKO,SAAS,SAAS,KAAa,SAAgC,KAAe;AACnF,SAAO,IAAI,SAAS,MAAM;AAAA,IACxB;AAAA,IACA,SAAS,EAAE,UAAU,IAAI;AAAA,EAC3B,CAAC;AACH;","names":["error"]}
|