{"version":3,"file":"media.mjs","names":["queryBuilder"],"sources":["../../../src/libs/repositories/media.ts"],"sourcesContent":["import { sql } from \"kysely\";\nimport z from \"zod\";\nimport type { GetMultipleQueryParams } from \"../../schemas/media.js\";\nimport type DatabaseAdapter from \"../db/adapter-base.js\";\nimport queryBuilder from \"../db/query-builder/index.js\";\nimport type { KyselyDB } from \"../db/types.js\";\nimport { activeMediaCropSelect } from \"./helpers/media-selects.js\";\nimport StaticRepository from \"./parents/static-repository.js\";\nimport type { QueryProps } from \"./types.js\";\n\nexport default class MediaRepository extends StaticRepository<\"lucid_media\"> {\n\tconstructor(db: KyselyDB, dbAdapter: DatabaseAdapter) {\n\t\tsuper(db, dbAdapter, \"lucid_media\");\n\t}\n\ttableSchema = z.object({\n\t\tid: z.number(),\n\t\tkey: z.string(),\n\t\tfolder_id: z.number().nullable(),\n\t\tparent_media_id: z.number().nullable(),\n\t\trelation_type: z.enum([\"crop\", \"poster\"]).nullable(),\n\t\te_tag: z.string().nullable(),\n\t\torigin: z.enum([\"human\", \"ai_generated\", \"ai_modified\"]),\n\t\tai_generation_id: z.number().nullable(),\n\t\tpublic: z.union([\n\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.true),\n\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.false),\n\t\t]),\n\t\ttype: z.string(),\n\t\tmime_type: z.string(),\n\t\tfile_extension: z.string(),\n\t\tfile_name: z.string().nullable(),\n\t\tfile_size: z.number(),\n\t\twidth: z.number().nullable(),\n\t\theight: z.number().nullable(),\n\t\tfocal_x: z.number().nullable(),\n\t\tfocal_y: z.number().nullable(),\n\t\tcrop_x: z.number().nullable(),\n\t\tcrop_y: z.number().nullable(),\n\t\tcrop_width: z.number().nullable(),\n\t\tcrop_height: z.number().nullable(),\n\t\tcrop_rotation: z.number().nullable(),\n\t\tcrop_skew_x: z.number().nullable(),\n\t\tcrop_skew_y: z.number().nullable(),\n\t\tblur_hash: z.string().nullable(),\n\t\taverage_color: z.string().nullable(),\n\t\tbase64: z.string().nullable().optional(),\n\t\tis_dark: z\n\t\t\t.union([\n\t\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.true),\n\t\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.false),\n\t\t\t])\n\t\t\t.nullable(),\n\t\tis_light: z\n\t\t\t.union([\n\t\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.true),\n\t\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.false),\n\t\t\t])\n\t\t\t.nullable(),\n\t\tis_hidden: z.union([\n\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.true),\n\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.false),\n\t\t]),\n\t\ttranslations: z\n\t\t\t.array(\n\t\t\t\tz.object({\n\t\t\t\t\ttitle: z.string().nullable(),\n\t\t\t\t\talt: z.string().nullable(),\n\t\t\t\t\tdescription: z.string().nullable(),\n\t\t\t\t\tsummary: z.string().nullable(),\n\t\t\t\t\tlocale_code: z.string().nullable(),\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.optional(),\n\t\tposter: z\n\t\t\t.array(\n\t\t\t\tz.object({\n\t\t\t\t\tid: z.number(),\n\t\t\t\t\tkey: z.string(),\n\t\t\t\t\torigin: z.enum([\"human\", \"ai_generated\", \"ai_modified\"]),\n\t\t\t\t\ttype: z.string(),\n\t\t\t\t\tmime_type: z.string(),\n\t\t\t\t\tfile_extension: z.string(),\n\t\t\t\t\tfile_name: z.string().nullable(),\n\t\t\t\t\tfile_size: z.number(),\n\t\t\t\t\twidth: z.number().nullable(),\n\t\t\t\t\theight: z.number().nullable(),\n\t\t\t\t\tfocal_x: z.number().nullable(),\n\t\t\t\t\tfocal_y: z.number().nullable(),\n\t\t\t\t\tcrop_x: z.number().nullable().optional(),\n\t\t\t\t\tcrop_y: z.number().nullable().optional(),\n\t\t\t\t\tcrop_width: z.number().nullable().optional(),\n\t\t\t\t\tcrop_height: z.number().nullable().optional(),\n\t\t\t\t\tcrop_rotation: z.number().nullable().optional(),\n\t\t\t\t\tcrop_skew_x: z.number().nullable().optional(),\n\t\t\t\t\tcrop_skew_y: z.number().nullable().optional(),\n\t\t\t\t\tblur_hash: z.string().nullable(),\n\t\t\t\t\taverage_color: z.string().nullable(),\n\t\t\t\t\tbase64: z.string().nullable().optional(),\n\t\t\t\t\tis_dark: z\n\t\t\t\t\t\t.union([\n\t\t\t\t\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.true),\n\t\t\t\t\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.false),\n\t\t\t\t\t\t])\n\t\t\t\t\t\t.nullable(),\n\t\t\t\t\tis_light: z\n\t\t\t\t\t\t.union([\n\t\t\t\t\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.true),\n\t\t\t\t\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.false),\n\t\t\t\t\t\t])\n\t\t\t\t\t\t.nullable(),\n\t\t\t\t\tcrop: z\n\t\t\t\t\t\t.array(\n\t\t\t\t\t\t\tz.object({\n\t\t\t\t\t\t\t\tid: z.number(),\n\t\t\t\t\t\t\t\tkey: z.string(),\n\t\t\t\t\t\t\t\torigin: z.enum([\"human\", \"ai_generated\", \"ai_modified\"]),\n\t\t\t\t\t\t\t\ttype: z.string(),\n\t\t\t\t\t\t\t\tmime_type: z.string(),\n\t\t\t\t\t\t\t\tfile_extension: z.string(),\n\t\t\t\t\t\t\t\tfile_name: z.string().nullable(),\n\t\t\t\t\t\t\t\tfile_size: z.number(),\n\t\t\t\t\t\t\t\twidth: z.number().nullable(),\n\t\t\t\t\t\t\t\theight: z.number().nullable(),\n\t\t\t\t\t\t\t\tfocal_x: z.number().nullable(),\n\t\t\t\t\t\t\t\tfocal_y: z.number().nullable(),\n\t\t\t\t\t\t\t\tcrop_x: z.number(),\n\t\t\t\t\t\t\t\tcrop_y: z.number(),\n\t\t\t\t\t\t\t\tcrop_width: z.number(),\n\t\t\t\t\t\t\t\tcrop_height: z.number(),\n\t\t\t\t\t\t\t\tcrop_rotation: z.number(),\n\t\t\t\t\t\t\t\tcrop_skew_x: z.number(),\n\t\t\t\t\t\t\t\tcrop_skew_y: z.number(),\n\t\t\t\t\t\t\t\tblur_hash: z.string().nullable(),\n\t\t\t\t\t\t\t\taverage_color: z.string().nullable(),\n\t\t\t\t\t\t\t\tbase64: z.string().nullable().optional(),\n\t\t\t\t\t\t\t\tis_dark: z\n\t\t\t\t\t\t\t\t\t.union([\n\t\t\t\t\t\t\t\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.true),\n\t\t\t\t\t\t\t\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.false),\n\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t.nullable(),\n\t\t\t\t\t\t\t\tis_light: z\n\t\t\t\t\t\t\t\t\t.union([\n\t\t\t\t\t\t\t\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.true),\n\t\t\t\t\t\t\t\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.false),\n\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t.nullable(),\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.optional(),\n\t\t\t\t\ttranslations: z\n\t\t\t\t\t\t.array(\n\t\t\t\t\t\t\tz.object({\n\t\t\t\t\t\t\t\ttitle: z.string().nullable().optional(),\n\t\t\t\t\t\t\t\talt: z.string().nullable(),\n\t\t\t\t\t\t\t\tdescription: z.string().nullable().optional(),\n\t\t\t\t\t\t\t\tsummary: z.string().nullable().optional(),\n\t\t\t\t\t\t\t\tlocale_code: z.string().nullable(),\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.optional(),\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.optional(),\n\t\tcrop: z\n\t\t\t.array(\n\t\t\t\tz.object({\n\t\t\t\t\tid: z.number(),\n\t\t\t\t\tkey: z.string(),\n\t\t\t\t\torigin: z.enum([\"human\", \"ai_generated\", \"ai_modified\"]),\n\t\t\t\t\ttype: z.string(),\n\t\t\t\t\tmime_type: z.string(),\n\t\t\t\t\tfile_extension: z.string(),\n\t\t\t\t\tfile_name: z.string().nullable(),\n\t\t\t\t\tfile_size: z.number(),\n\t\t\t\t\twidth: z.number().nullable(),\n\t\t\t\t\theight: z.number().nullable(),\n\t\t\t\t\tfocal_x: z.number().nullable(),\n\t\t\t\t\tfocal_y: z.number().nullable(),\n\t\t\t\t\tcrop_x: z.number(),\n\t\t\t\t\tcrop_y: z.number(),\n\t\t\t\t\tcrop_width: z.number(),\n\t\t\t\t\tcrop_height: z.number(),\n\t\t\t\t\tcrop_rotation: z.number(),\n\t\t\t\t\tcrop_skew_x: z.number(),\n\t\t\t\t\tcrop_skew_y: z.number(),\n\t\t\t\t\tblur_hash: z.string().nullable(),\n\t\t\t\t\taverage_color: z.string().nullable(),\n\t\t\t\t\tbase64: z.string().nullable().optional(),\n\t\t\t\t\tis_dark: z\n\t\t\t\t\t\t.union([\n\t\t\t\t\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.true),\n\t\t\t\t\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.false),\n\t\t\t\t\t\t])\n\t\t\t\t\t\t.nullable(),\n\t\t\t\t\tis_light: z\n\t\t\t\t\t\t.union([\n\t\t\t\t\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.true),\n\t\t\t\t\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.false),\n\t\t\t\t\t\t])\n\t\t\t\t\t\t.nullable(),\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.optional(),\n\t\tcustom_meta: z.string().nullable(),\n\t\ttenant_key: z.string().nullable(),\n\t\tis_deleted: z.union([\n\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.true),\n\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.false),\n\t\t]),\n\t\tis_deleted_at: z.union([z.string(), z.date()]).nullable(),\n\t\tdeleted_by: z.number().nullable(),\n\t\tcreated_at: z.union([z.string(), z.date()]).nullable(),\n\t\tupdated_at: z.union([z.string(), z.date()]).nullable(),\n\t\tupdated_by: z.number().nullable(),\n\t\tcreated_by: z.number().nullable(),\n\t});\n\tcolumnFormats = {\n\t\tid: this.dbAdapter.getDataType(\"primary\"),\n\t\tkey: this.dbAdapter.getDataType(\"text\"),\n\t\tfolder_id: this.dbAdapter.getDataType(\"integer\"),\n\t\tparent_media_id: this.dbAdapter.getDataType(\"integer\"),\n\t\trelation_type: this.dbAdapter.getDataType(\"text\"),\n\t\te_tag: this.dbAdapter.getDataType(\"text\"),\n\t\torigin: this.dbAdapter.getDataType(\"text\"),\n\t\tai_generation_id: this.dbAdapter.getDataType(\"integer\"),\n\t\tpublic: this.dbAdapter.getDataType(\"boolean\"),\n\t\ttype: this.dbAdapter.getDataType(\"text\"),\n\t\tmime_type: this.dbAdapter.getDataType(\"text\"),\n\t\tfile_extension: this.dbAdapter.getDataType(\"text\"),\n\t\tfile_name: this.dbAdapter.getDataType(\"text\"),\n\t\tfile_size: this.dbAdapter.getDataType(\"integer\"),\n\t\twidth: this.dbAdapter.getDataType(\"integer\"),\n\t\theight: this.dbAdapter.getDataType(\"integer\"),\n\t\tfocal_x: this.dbAdapter.getDataType(\"integer\"),\n\t\tfocal_y: this.dbAdapter.getDataType(\"integer\"),\n\t\tcrop_x: this.dbAdapter.getDataType(\"real\"),\n\t\tcrop_y: this.dbAdapter.getDataType(\"real\"),\n\t\tcrop_width: this.dbAdapter.getDataType(\"real\"),\n\t\tcrop_height: this.dbAdapter.getDataType(\"real\"),\n\t\tcrop_rotation: this.dbAdapter.getDataType(\"real\"),\n\t\tcrop_skew_x: this.dbAdapter.getDataType(\"real\"),\n\t\tcrop_skew_y: this.dbAdapter.getDataType(\"real\"),\n\t\tblur_hash: this.dbAdapter.getDataType(\"text\"),\n\t\taverage_color: this.dbAdapter.getDataType(\"text\"),\n\t\tbase64: this.dbAdapter.getDataType(\"text\"),\n\t\tis_dark: this.dbAdapter.getDataType(\"boolean\"),\n\t\tis_light: this.dbAdapter.getDataType(\"boolean\"),\n\t\tcustom_meta: this.dbAdapter.getDataType(\"text\"),\n\t\ttenant_key: this.dbAdapter.getDataType(\"text\"),\n\t\tis_hidden: this.dbAdapter.getDataType(\"boolean\"),\n\t\tis_deleted: this.dbAdapter.getDataType(\"boolean\"),\n\t\tis_deleted_at: this.dbAdapter.getDataType(\"timestamp\"),\n\t\tdeleted_by: this.dbAdapter.getDataType(\"integer\"),\n\t\tcreated_at: this.dbAdapter.getDataType(\"timestamp\"),\n\t\tupdated_at: this.dbAdapter.getDataType(\"timestamp\"),\n\t\tupdated_by: this.dbAdapter.getDataType(\"integer\"),\n\t\tcreated_by: this.dbAdapter.getDataType(\"integer\"),\n\t};\n\tqueryConfig = {\n\t\ttableKeys: {\n\t\t\tfilters: {\n\t\t\t\tkey: \"key\",\n\t\t\t\tmimeType: \"mime_type\",\n\t\t\t\ttype: \"type\",\n\t\t\t\textension: \"file_extension\",\n\t\t\t\tfolderId: \"folder_id\",\n\t\t\t\tisDeleted: \"is_deleted\",\n\t\t\t\tdeletedBy: \"deleted_by\",\n\t\t\t\tpublic: \"public\",\n\t\t\t\tisHidden: \"is_hidden\",\n\t\t\t\torigin: \"origin\",\n\t\t\t\tfileSize: \"file_size\",\n\t\t\t\twidth: \"width\",\n\t\t\t\theight: \"height\",\n\t\t\t\tcreatedAt: \"created_at\",\n\t\t\t\tupdatedAt: \"updated_at\",\n\t\t\t},\n\t\t\tsorts: {\n\t\t\t\tcreatedAt: \"created_at\",\n\t\t\t\tupdatedAt: \"updated_at\",\n\t\t\t\tfileSize: \"file_size\",\n\t\t\t\twidth: \"width\",\n\t\t\t\theight: \"height\",\n\t\t\t\tmimeType: \"mime_type\",\n\t\t\t\textension: \"file_extension\",\n\t\t\t\tdeletedBy: \"deleted_by\",\n\t\t\t\tisDeletedAt: \"is_deleted_at\",\n\t\t\t},\n\t\t},\n\t} as const;\n\n\t// ----------------------------------------\n\t// queries\n\tasync sumFileSize() {\n\t\tconst query = this.db\n\t\t\t.selectFrom(\"lucid_media\")\n\t\t\t.select(sql<string | number>`COALESCE(SUM(file_size), 0)`.as(\"total\"));\n\n\t\tconst exec = await this.executeQuery(\n\t\t\t() =>\n\t\t\t\tquery.executeTakeFirst() as Promise<\n\t\t\t\t\t{ total: string | number | null } | undefined\n\t\t\t\t>,\n\t\t\t{\n\t\t\t\tmethod: \"sumFileSize\",\n\t\t\t},\n\t\t);\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn {\n\t\t\terror: undefined,\n\t\t\tdata: Number(exec.response.data?.total ?? 0),\n\t\t};\n\t}\n\n\tasync sumFileSizeByTenant(props: { tenantKey: string | null }) {\n\t\tlet query = this.db\n\t\t\t.selectFrom(\"lucid_media\")\n\t\t\t.select(sql<string | number>`COALESCE(SUM(file_size), 0)`.as(\"total\"));\n\n\t\tquery =\n\t\t\tprops.tenantKey === null\n\t\t\t\t? query.where(\"tenant_key\", \"is\", null)\n\t\t\t\t: query.where(\"tenant_key\", \"=\", props.tenantKey);\n\n\t\tconst exec = await this.executeQuery(\n\t\t\t() =>\n\t\t\t\tquery.executeTakeFirst() as Promise<\n\t\t\t\t\t{ total: string | number | null } | undefined\n\t\t\t\t>,\n\t\t\t{\n\t\t\t\tmethod: \"sumFileSizeByTenant\",\n\t\t\t},\n\t\t);\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn {\n\t\t\terror: undefined,\n\t\t\tdata: Number(exec.response.data?.total ?? 0),\n\t\t};\n\t}\n\n\tasync sumFileSizeGroupedByTenant() {\n\t\tconst query = this.db\n\t\t\t.selectFrom(\"lucid_media\")\n\t\t\t.select([\n\t\t\t\t\"tenant_key\",\n\t\t\t\tsql<string | number>`COALESCE(SUM(file_size), 0)`.as(\"total\"),\n\t\t\t])\n\t\t\t.groupBy(\"tenant_key\");\n\n\t\tconst exec = await this.executeQuery(\n\t\t\t() =>\n\t\t\t\tquery.execute() as Promise<\n\t\t\t\t\t{ tenant_key: string | null; total: string | number | null }[]\n\t\t\t\t>,\n\t\t\t{\n\t\t\t\tmethod: \"sumFileSizeGroupedByTenant\",\n\t\t\t},\n\t\t);\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn {\n\t\t\terror: undefined,\n\t\t\tdata: exec.response.data.map((row) => ({\n\t\t\t\ttenant_key: row.tenant_key,\n\t\t\t\ttotal: Number(row.total ?? 0),\n\t\t\t})),\n\t\t};\n\t}\n\n\t/** Resolves a requested source or crop key to its current active presentation. */\n\tasync selectSingleActivePresentationByKey(props: { key: string }) {\n\t\tconst query = this.db\n\t\t\t.selectFrom(\"lucid_media as requested\")\n\t\t\t.innerJoin(\"lucid_media as source\", (join) =>\n\t\t\t\tjoin.on((eb) =>\n\t\t\t\t\teb.or([\n\t\t\t\t\t\teb.and([\n\t\t\t\t\t\t\teb(\"requested.relation_type\", \"=\", \"crop\"),\n\t\t\t\t\t\t\teb(\"source.id\", \"=\", eb.ref(\"requested.parent_media_id\")),\n\t\t\t\t\t\t]),\n\t\t\t\t\t\teb.and([\n\t\t\t\t\t\t\teb.or([\n\t\t\t\t\t\t\t\teb(\"requested.relation_type\", \"is\", null),\n\t\t\t\t\t\t\t\teb(\"requested.relation_type\", \"=\", \"poster\"),\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\teb(\"source.id\", \"=\", eb.ref(\"requested.id\")),\n\t\t\t\t\t\t]),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t)\n\t\t\t.leftJoin(\"lucid_media as active_crop\", (join) =>\n\t\t\t\tjoin\n\t\t\t\t\t.onRef(\"active_crop.parent_media_id\", \"=\", \"source.id\")\n\t\t\t\t\t.on(\"active_crop.relation_type\", \"=\", \"crop\")\n\t\t\t\t\t.on(\n\t\t\t\t\t\t\"active_crop.is_deleted\",\n\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t),\n\t\t\t)\n\t\t\t.select([\n\t\t\t\t\"source.type as source_type\",\n\t\t\t\t\"source.key as source_key\",\n\t\t\t\t\"source.file_name as source_file_name\",\n\t\t\t\t\"source.file_extension as source_file_extension\",\n\t\t\t\t\"source.tenant_key as source_tenant_key\",\n\t\t\t\t\"active_crop.id as active_crop_id\",\n\t\t\t\t\"active_crop.type as active_crop_type\",\n\t\t\t\t\"active_crop.key as active_crop_key\",\n\t\t\t\t\"active_crop.file_name as active_crop_file_name\",\n\t\t\t\t\"active_crop.file_extension as active_crop_file_extension\",\n\t\t\t])\n\t\t\t.where(\"requested.key\", \"=\", props.key)\n\t\t\t.limit(1);\n\n\t\tconst exec = await this.executeQuery(\n\t\t\tasync () => {\n\t\t\t\tconst result = await query.executeTakeFirst();\n\t\t\t\tif (!result) return undefined;\n\n\t\t\t\treturn {\n\t\t\t\t\ttype: result.active_crop_type ?? result.source_type,\n\t\t\t\t\tkey: result.active_crop_key ?? result.source_key,\n\t\t\t\t\tfile_name:\n\t\t\t\t\t\tresult.active_crop_id !== null\n\t\t\t\t\t\t\t? result.active_crop_file_name\n\t\t\t\t\t\t\t: result.source_file_name,\n\t\t\t\t\tfile_extension:\n\t\t\t\t\t\tresult.active_crop_file_extension ?? result.source_file_extension,\n\t\t\t\t\ttenant_key: result.source_tenant_key,\n\t\t\t\t};\n\t\t\t},\n\t\t\t{\n\t\t\t\tmethod: \"selectSingleActivePresentationByKey\",\n\t\t\t},\n\t\t);\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn exec.response;\n\t}\n\n\tasync selectSingleById<V extends boolean = false>(\n\t\tprops: QueryProps<\n\t\t\tV,\n\t\t\t{\n\t\t\t\tid: number;\n\t\t\t\ttenantKey?: string | null;\n\t\t\t\tincludeOwned?: boolean;\n\t\t\t}\n\t\t>,\n\t) {\n\t\tconst query = this.db\n\t\t\t.selectFrom(\"lucid_media\")\n\t\t\t.select((eb) => [\n\t\t\t\t\"id\",\n\t\t\t\t\"key\",\n\t\t\t\t\"folder_id\",\n\t\t\t\t\"parent_media_id\",\n\t\t\t\t\"relation_type\",\n\t\t\t\t\"e_tag\",\n\t\t\t\t\"origin\",\n\t\t\t\t\"type\",\n\t\t\t\t\"mime_type\",\n\t\t\t\t\"file_extension\",\n\t\t\t\t\"file_name\",\n\t\t\t\t\"file_size\",\n\t\t\t\t\"width\",\n\t\t\t\t\"height\",\n\t\t\t\t\"focal_x\",\n\t\t\t\t\"focal_y\",\n\t\t\t\t\"crop_x\",\n\t\t\t\t\"crop_y\",\n\t\t\t\t\"crop_width\",\n\t\t\t\t\"crop_height\",\n\t\t\t\t\"crop_rotation\",\n\t\t\t\t\"crop_skew_x\",\n\t\t\t\t\"crop_skew_y\",\n\t\t\t\t\"created_at\",\n\t\t\t\t\"updated_at\",\n\t\t\t\t\"blur_hash\",\n\t\t\t\t\"average_color\",\n\t\t\t\t\"base64\",\n\t\t\t\t\"is_dark\",\n\t\t\t\t\"is_light\",\n\t\t\t\t\"is_deleted\",\n\t\t\t\t\"is_deleted_at\",\n\t\t\t\t\"deleted_by\",\n\t\t\t\t\"public\",\n\t\t\t\t\"tenant_key\",\n\t\t\t\tthis.dbAdapter\n\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\teb\n\t\t\t\t\t\t\t.selectFrom(\"lucid_media as poster\")\n\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\"poster.id\",\n\t\t\t\t\t\t\t\t\"poster.key\",\n\t\t\t\t\t\t\t\t\"poster.origin\",\n\t\t\t\t\t\t\t\t\"poster.type\",\n\t\t\t\t\t\t\t\t\"poster.mime_type\",\n\t\t\t\t\t\t\t\t\"poster.file_extension\",\n\t\t\t\t\t\t\t\t\"poster.file_name\",\n\t\t\t\t\t\t\t\t\"poster.file_size\",\n\t\t\t\t\t\t\t\t\"poster.width\",\n\t\t\t\t\t\t\t\t\"poster.height\",\n\t\t\t\t\t\t\t\t\"poster.focal_x\",\n\t\t\t\t\t\t\t\t\"poster.focal_y\",\n\t\t\t\t\t\t\t\t\"poster.crop_x\",\n\t\t\t\t\t\t\t\t\"poster.crop_y\",\n\t\t\t\t\t\t\t\t\"poster.crop_width\",\n\t\t\t\t\t\t\t\t\"poster.crop_height\",\n\t\t\t\t\t\t\t\t\"poster.crop_rotation\",\n\t\t\t\t\t\t\t\t\"poster.crop_skew_x\",\n\t\t\t\t\t\t\t\t\"poster.crop_skew_y\",\n\t\t\t\t\t\t\t\t\"poster.blur_hash\",\n\t\t\t\t\t\t\t\t\"poster.average_color\",\n\t\t\t\t\t\t\t\t\"poster.base64\",\n\t\t\t\t\t\t\t\t\"poster.is_dark\",\n\t\t\t\t\t\t\t\t\"poster.is_light\",\n\t\t\t\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t\t\t\t.selectFrom(\"lucid_media_translations\")\n\t\t\t\t\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.title\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.alt\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.description\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.summary\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.locale_code\",\n\t\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.media_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t\t\tsql.ref(\"poster.id\"),\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.as(\"translations\"),\n\t\t\t\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t\t\t\t.selectFrom(\"lucid_media as poster_crop\")\n\t\t\t\t\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.key\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.origin\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.mime_type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.file_extension\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.file_name\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.file_size\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.width\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.height\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.focal_x\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.focal_y\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.crop_x\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.crop_y\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.crop_width\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.crop_height\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.crop_rotation\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.crop_skew_x\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.crop_skew_y\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.blur_hash\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.average_color\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.base64\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.is_dark\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.is_light\",\n\t\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.parent_media_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t\t\tsql.ref<number>(\"poster.id\"),\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t.where(\"poster_crop.relation_type\", \"=\", \"crop\")\n\t\t\t\t\t\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.is_deleted\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.as(\"crop\"),\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t.whereRef(\"poster.parent_media_id\", \"=\", \"lucid_media.id\")\n\t\t\t\t\t\t\t.where(\"poster.relation_type\", \"=\", \"poster\")\n\t\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\t\t\"poster.is_deleted\",\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.as(\"poster\"),\n\t\t\t\tthis.dbAdapter\n\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\teb\n\t\t\t\t\t\t\t.selectFrom(\"lucid_media as crop\")\n\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\"crop.id\",\n\t\t\t\t\t\t\t\t\"crop.key\",\n\t\t\t\t\t\t\t\t\"crop.origin\",\n\t\t\t\t\t\t\t\t\"crop.type\",\n\t\t\t\t\t\t\t\t\"crop.mime_type\",\n\t\t\t\t\t\t\t\t\"crop.file_extension\",\n\t\t\t\t\t\t\t\t\"crop.file_name\",\n\t\t\t\t\t\t\t\t\"crop.file_size\",\n\t\t\t\t\t\t\t\t\"crop.width\",\n\t\t\t\t\t\t\t\t\"crop.height\",\n\t\t\t\t\t\t\t\t\"crop.focal_x\",\n\t\t\t\t\t\t\t\t\"crop.focal_y\",\n\t\t\t\t\t\t\t\t\"crop.crop_x\",\n\t\t\t\t\t\t\t\t\"crop.crop_y\",\n\t\t\t\t\t\t\t\t\"crop.crop_width\",\n\t\t\t\t\t\t\t\t\"crop.crop_height\",\n\t\t\t\t\t\t\t\t\"crop.crop_rotation\",\n\t\t\t\t\t\t\t\t\"crop.crop_skew_x\",\n\t\t\t\t\t\t\t\t\"crop.crop_skew_y\",\n\t\t\t\t\t\t\t\t\"crop.blur_hash\",\n\t\t\t\t\t\t\t\t\"crop.average_color\",\n\t\t\t\t\t\t\t\t\"crop.base64\",\n\t\t\t\t\t\t\t\t\"crop.is_dark\",\n\t\t\t\t\t\t\t\t\"crop.is_light\",\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t.whereRef(\"crop.parent_media_id\", \"=\", \"lucid_media.id\")\n\t\t\t\t\t\t\t.where(\"crop.relation_type\", \"=\", \"crop\")\n\t\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\t\t\"crop.is_deleted\",\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.as(\"crop\"),\n\t\t\t\tthis.dbAdapter\n\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\teb\n\t\t\t\t\t\t\t.selectFrom(\"lucid_media_translations\")\n\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\"lucid_media_translations.title\",\n\t\t\t\t\t\t\t\t\"lucid_media_translations.alt\",\n\t\t\t\t\t\t\t\t\"lucid_media_translations.description\",\n\t\t\t\t\t\t\t\t\"lucid_media_translations.summary\",\n\t\t\t\t\t\t\t\t\"lucid_media_translations.locale_code\",\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\"lucid_media_translations.media_id\",\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.as(\"translations\"),\n\t\t\t])\n\t\t\t.where(\"id\", \"=\", props.id)\n\t\t\t.$if(props.includeOwned !== true, (qb) =>\n\t\t\t\tqb.where(\"parent_media_id\", \"is\", null),\n\t\t\t)\n\t\t\t.$call((qb) =>\n\t\t\t\tqueryBuilder.tenantScope(qb, {\n\t\t\t\t\ttenantKey: props.tenantKey,\n\t\t\t\t\tcolumn: \"lucid_media.tenant_key\",\n\t\t\t\t}),\n\t\t\t);\n\n\t\tconst exec = await this.executeQuery(() => query.executeTakeFirst(), {\n\t\t\tmethod: \"selectSingleById\",\n\t\t});\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\t...props.validation,\n\t\t\tmode: \"single\",\n\t\t\tselect: [\n\t\t\t\t\"id\",\n\t\t\t\t\"key\",\n\t\t\t\t\"folder_id\",\n\t\t\t\t\"parent_media_id\",\n\t\t\t\t\"relation_type\",\n\t\t\t\t\"e_tag\",\n\t\t\t\t\"origin\",\n\t\t\t\t\"type\",\n\t\t\t\t\"mime_type\",\n\t\t\t\t\"file_extension\",\n\t\t\t\t\"file_name\",\n\t\t\t\t\"file_size\",\n\t\t\t\t\"width\",\n\t\t\t\t\"height\",\n\t\t\t\t\"focal_x\",\n\t\t\t\t\"focal_y\",\n\t\t\t\t\"crop_x\",\n\t\t\t\t\"crop_y\",\n\t\t\t\t\"crop_width\",\n\t\t\t\t\"crop_height\",\n\t\t\t\t\"crop_rotation\",\n\t\t\t\t\"crop_skew_x\",\n\t\t\t\t\"crop_skew_y\",\n\t\t\t\t\"created_at\",\n\t\t\t\t\"updated_at\",\n\t\t\t\t\"blur_hash\",\n\t\t\t\t\"average_color\",\n\t\t\t\t\"base64\",\n\t\t\t\t\"is_dark\",\n\t\t\t\t\"is_light\",\n\t\t\t\t\"is_deleted\",\n\t\t\t\t\"is_deleted_at\",\n\t\t\t\t\"deleted_by\",\n\t\t\t\t\"translations\",\n\t\t\t\t\"public\",\n\t\t\t\t\"poster\",\n\t\t\t\t\"crop\",\n\t\t\t],\n\t\t});\n\t}\n\t/** Fetches top-level media and their active owned derivatives in one query. */\n\tasync selectMultipleByIds<V extends boolean = false>(\n\t\tprops: QueryProps<\n\t\t\tV,\n\t\t\t{\n\t\t\t\tids: number[];\n\t\t\t}\n\t\t>,\n\t) {\n\t\tconst query = this.db\n\t\t\t.selectFrom(\"lucid_media\")\n\t\t\t.select((eb) => [\n\t\t\t\t\"id\",\n\t\t\t\t\"key\",\n\t\t\t\t\"folder_id\",\n\t\t\t\t\"parent_media_id\",\n\t\t\t\t\"relation_type\",\n\t\t\t\t\"e_tag\",\n\t\t\t\t\"origin\",\n\t\t\t\t\"type\",\n\t\t\t\t\"mime_type\",\n\t\t\t\t\"file_extension\",\n\t\t\t\t\"file_name\",\n\t\t\t\t\"file_size\",\n\t\t\t\t\"width\",\n\t\t\t\t\"height\",\n\t\t\t\t\"focal_x\",\n\t\t\t\t\"focal_y\",\n\t\t\t\t\"crop_x\",\n\t\t\t\t\"crop_y\",\n\t\t\t\t\"crop_width\",\n\t\t\t\t\"crop_height\",\n\t\t\t\t\"crop_rotation\",\n\t\t\t\t\"crop_skew_x\",\n\t\t\t\t\"crop_skew_y\",\n\t\t\t\t\"created_at\",\n\t\t\t\t\"updated_at\",\n\t\t\t\t\"blur_hash\",\n\t\t\t\t\"average_color\",\n\t\t\t\t\"base64\",\n\t\t\t\t\"is_dark\",\n\t\t\t\t\"is_light\",\n\t\t\t\t\"is_deleted\",\n\t\t\t\t\"is_deleted_at\",\n\t\t\t\t\"deleted_by\",\n\t\t\t\t\"public\",\n\t\t\t\t\"tenant_key\",\n\t\t\t\tthis.dbAdapter\n\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\teb\n\t\t\t\t\t\t\t.selectFrom(\"lucid_media as poster\")\n\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\"poster.id\",\n\t\t\t\t\t\t\t\t\"poster.key\",\n\t\t\t\t\t\t\t\t\"poster.origin\",\n\t\t\t\t\t\t\t\t\"poster.type\",\n\t\t\t\t\t\t\t\t\"poster.mime_type\",\n\t\t\t\t\t\t\t\t\"poster.file_extension\",\n\t\t\t\t\t\t\t\t\"poster.file_name\",\n\t\t\t\t\t\t\t\t\"poster.file_size\",\n\t\t\t\t\t\t\t\t\"poster.width\",\n\t\t\t\t\t\t\t\t\"poster.height\",\n\t\t\t\t\t\t\t\t\"poster.focal_x\",\n\t\t\t\t\t\t\t\t\"poster.focal_y\",\n\t\t\t\t\t\t\t\t\"poster.crop_x\",\n\t\t\t\t\t\t\t\t\"poster.crop_y\",\n\t\t\t\t\t\t\t\t\"poster.crop_width\",\n\t\t\t\t\t\t\t\t\"poster.crop_height\",\n\t\t\t\t\t\t\t\t\"poster.crop_rotation\",\n\t\t\t\t\t\t\t\t\"poster.crop_skew_x\",\n\t\t\t\t\t\t\t\t\"poster.crop_skew_y\",\n\t\t\t\t\t\t\t\t\"poster.blur_hash\",\n\t\t\t\t\t\t\t\t\"poster.average_color\",\n\t\t\t\t\t\t\t\t\"poster.base64\",\n\t\t\t\t\t\t\t\t\"poster.is_dark\",\n\t\t\t\t\t\t\t\t\"poster.is_light\",\n\t\t\t\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t\t\t\t.selectFrom(\"lucid_media_translations\")\n\t\t\t\t\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.title\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.alt\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.description\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.summary\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.locale_code\",\n\t\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.media_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t\t\tsql.ref(\"poster.id\"),\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.as(\"translations\"),\n\t\t\t\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t\t\t\t.selectFrom(\"lucid_media as poster_crop\")\n\t\t\t\t\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.key\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.origin\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.mime_type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.file_extension\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.file_name\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.file_size\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.width\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.height\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.focal_x\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.focal_y\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.crop_x\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.crop_y\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.crop_width\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.crop_height\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.crop_rotation\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.crop_skew_x\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.crop_skew_y\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.blur_hash\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.average_color\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.base64\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.is_dark\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.is_light\",\n\t\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.parent_media_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t\t\tsql.ref<number>(\"poster.id\"),\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t.where(\"poster_crop.relation_type\", \"=\", \"crop\")\n\t\t\t\t\t\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\t\t\t\t\t\t\"poster_crop.is_deleted\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.as(\"crop\"),\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t.whereRef(\"poster.parent_media_id\", \"=\", \"lucid_media.id\")\n\t\t\t\t\t\t\t.where(\"poster.relation_type\", \"=\", \"poster\")\n\t\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\t\t\"poster.is_deleted\",\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.as(\"poster\"),\n\t\t\t\tthis.dbAdapter\n\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\teb\n\t\t\t\t\t\t\t.selectFrom(\"lucid_media as crop\")\n\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\"crop.id\",\n\t\t\t\t\t\t\t\t\"crop.key\",\n\t\t\t\t\t\t\t\t\"crop.origin\",\n\t\t\t\t\t\t\t\t\"crop.type\",\n\t\t\t\t\t\t\t\t\"crop.mime_type\",\n\t\t\t\t\t\t\t\t\"crop.file_extension\",\n\t\t\t\t\t\t\t\t\"crop.file_name\",\n\t\t\t\t\t\t\t\t\"crop.file_size\",\n\t\t\t\t\t\t\t\t\"crop.width\",\n\t\t\t\t\t\t\t\t\"crop.height\",\n\t\t\t\t\t\t\t\t\"crop.focal_x\",\n\t\t\t\t\t\t\t\t\"crop.focal_y\",\n\t\t\t\t\t\t\t\t\"crop.crop_x\",\n\t\t\t\t\t\t\t\t\"crop.crop_y\",\n\t\t\t\t\t\t\t\t\"crop.crop_width\",\n\t\t\t\t\t\t\t\t\"crop.crop_height\",\n\t\t\t\t\t\t\t\t\"crop.crop_rotation\",\n\t\t\t\t\t\t\t\t\"crop.crop_skew_x\",\n\t\t\t\t\t\t\t\t\"crop.crop_skew_y\",\n\t\t\t\t\t\t\t\t\"crop.blur_hash\",\n\t\t\t\t\t\t\t\t\"crop.average_color\",\n\t\t\t\t\t\t\t\t\"crop.base64\",\n\t\t\t\t\t\t\t\t\"crop.is_dark\",\n\t\t\t\t\t\t\t\t\"crop.is_light\",\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t.whereRef(\"crop.parent_media_id\", \"=\", \"lucid_media.id\")\n\t\t\t\t\t\t\t.where(\"crop.relation_type\", \"=\", \"crop\")\n\t\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\t\t\"crop.is_deleted\",\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.as(\"crop\"),\n\t\t\t\tthis.dbAdapter\n\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\teb\n\t\t\t\t\t\t\t.selectFrom(\"lucid_media_translations\")\n\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\"lucid_media_translations.title\",\n\t\t\t\t\t\t\t\t\"lucid_media_translations.alt\",\n\t\t\t\t\t\t\t\t\"lucid_media_translations.description\",\n\t\t\t\t\t\t\t\t\"lucid_media_translations.summary\",\n\t\t\t\t\t\t\t\t\"lucid_media_translations.locale_code\",\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\"lucid_media_translations.media_id\",\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.as(\"translations\"),\n\t\t\t])\n\t\t\t.where(\"id\", \"in\", props.ids)\n\t\t\t.where(\"parent_media_id\", \"is\", null);\n\n\t\tconst exec = await this.executeQuery(() => query.execute(), {\n\t\t\tmethod: \"selectMultipleByIds\",\n\t\t});\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\t...props.validation,\n\t\t\tmode: \"multiple\",\n\t\t\tselect: [\n\t\t\t\t\"id\",\n\t\t\t\t\"key\",\n\t\t\t\t\"folder_id\",\n\t\t\t\t\"parent_media_id\",\n\t\t\t\t\"relation_type\",\n\t\t\t\t\"e_tag\",\n\t\t\t\t\"origin\",\n\t\t\t\t\"type\",\n\t\t\t\t\"mime_type\",\n\t\t\t\t\"file_extension\",\n\t\t\t\t\"file_name\",\n\t\t\t\t\"file_size\",\n\t\t\t\t\"width\",\n\t\t\t\t\"height\",\n\t\t\t\t\"focal_x\",\n\t\t\t\t\"focal_y\",\n\t\t\t\t\"crop_x\",\n\t\t\t\t\"crop_y\",\n\t\t\t\t\"crop_width\",\n\t\t\t\t\"crop_height\",\n\t\t\t\t\"crop_rotation\",\n\t\t\t\t\"crop_skew_x\",\n\t\t\t\t\"crop_skew_y\",\n\t\t\t\t\"created_at\",\n\t\t\t\t\"updated_at\",\n\t\t\t\t\"blur_hash\",\n\t\t\t\t\"average_color\",\n\t\t\t\t\"base64\",\n\t\t\t\t\"is_dark\",\n\t\t\t\t\"is_light\",\n\t\t\t\t\"is_deleted\",\n\t\t\t\t\"is_deleted_at\",\n\t\t\t\t\"deleted_by\",\n\t\t\t\t\"translations\",\n\t\t\t\t\"public\",\n\t\t\t\t\"poster\",\n\t\t\t\t\"crop\",\n\t\t\t],\n\t\t});\n\t}\n\t/**\n\t * Fetches media rows used by field validation, scoped to the request tenant while\n\t * keeping global media available to every tenant.\n\t */\n\tasync selectMultipleValidationData<V extends boolean = false>(\n\t\tprops: QueryProps<\n\t\t\tV,\n\t\t\t{\n\t\t\t\tids: number[];\n\t\t\t\ttenantKey?: string | null;\n\t\t\t}\n\t\t>,\n\t) {\n\t\tlet query = this.db\n\t\t\t.selectFrom(\"lucid_media\")\n\t\t\t.select([\"id\", \"file_extension\", \"width\", \"height\", \"type\"])\n\t\t\t.where(\"id\", \"in\", props.ids)\n\t\t\t.where(\"parent_media_id\", \"is\", null);\n\n\t\tquery = queryBuilder.tenantScope(query, {\n\t\t\ttenantKey: props.tenantKey,\n\t\t\tcolumn: \"lucid_media.tenant_key\",\n\t\t});\n\n\t\tconst exec = await this.executeQuery(() => query.execute(), {\n\t\t\tmethod: \"selectMultipleValidationData\",\n\t\t});\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\t...props.validation,\n\t\t\tmode: \"multiple\",\n\t\t\tselect: [\"id\", \"file_extension\", \"width\", \"height\", \"type\"],\n\t\t});\n\t}\n\n\t/**\n\t * Fetches media IDs inside folders using tenant visibility rules.\n\t * Delete flows use the returned IDs so updates cannot touch hidden tenant rows.\n\t */\n\tasync selectMultipleIdsByFolderIds<V extends boolean = false>(\n\t\tprops: QueryProps<\n\t\t\tV,\n\t\t\t{\n\t\t\t\tfolderIds: number[];\n\t\t\t\ttenantKey?: string | null;\n\t\t\t}\n\t\t>,\n\t) {\n\t\tlet query = this.db\n\t\t\t.selectFrom(\"lucid_media\")\n\t\t\t.select([\"id\"])\n\t\t\t.where(\"folder_id\", \"in\", props.folderIds);\n\n\t\tquery = queryBuilder.tenantScope(query, {\n\t\t\ttenantKey: props.tenantKey,\n\t\t\tcolumn: \"lucid_media.tenant_key\",\n\t\t});\n\n\t\tconst exec = await this.executeQuery(() => query.execute(), {\n\t\t\tmethod: \"selectMultipleIdsByFolderIds\",\n\t\t});\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\t...props.validation,\n\t\t\tmode: \"multiple\",\n\t\t\tschema: this.tableSchema.pick({\n\t\t\t\tid: true,\n\t\t\t}),\n\t\t\tselect: [\"id\"],\n\t\t});\n\t}\n\tasync selectMultipleFilteredFixed<V extends boolean = false>(\n\t\tprops: QueryProps<\n\t\t\tV,\n\t\t\t{\n\t\t\t\tqueryParams: GetMultipleQueryParams;\n\t\t\t\ttenantKey?: string | null;\n\t\t\t}\n\t\t>,\n\t) {\n\t\tconst exec = await this.executeQuery(\n\t\t\tasync () => {\n\t\t\t\tconst mainQuery = this.db\n\t\t\t\t\t.selectFrom(\"lucid_media\")\n\t\t\t\t\t.leftJoin(\"lucid_media_translations as translation\", (join) =>\n\t\t\t\t\t\tjoin.onRef(\"translation.media_id\", \"=\", \"lucid_media.id\"),\n\t\t\t\t\t)\n\t\t\t\t\t.select((eb) => [\n\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\"lucid_media.key\",\n\t\t\t\t\t\t\"lucid_media.folder_id\",\n\t\t\t\t\t\t\"lucid_media.parent_media_id\",\n\t\t\t\t\t\t\"lucid_media.relation_type\",\n\t\t\t\t\t\t\"lucid_media.e_tag\",\n\t\t\t\t\t\t\"lucid_media.origin\",\n\t\t\t\t\t\t\"lucid_media.type\",\n\t\t\t\t\t\t\"lucid_media.mime_type\",\n\t\t\t\t\t\t\"lucid_media.file_extension\",\n\t\t\t\t\t\t\"lucid_media.file_name\",\n\t\t\t\t\t\t\"lucid_media.file_size\",\n\t\t\t\t\t\t\"lucid_media.width\",\n\t\t\t\t\t\t\"lucid_media.height\",\n\t\t\t\t\t\t\"lucid_media.focal_x\",\n\t\t\t\t\t\t\"lucid_media.focal_y\",\n\t\t\t\t\t\t\"lucid_media.crop_x\",\n\t\t\t\t\t\t\"lucid_media.crop_y\",\n\t\t\t\t\t\t\"lucid_media.crop_width\",\n\t\t\t\t\t\t\"lucid_media.crop_height\",\n\t\t\t\t\t\t\"lucid_media.crop_rotation\",\n\t\t\t\t\t\t\"lucid_media.crop_skew_x\",\n\t\t\t\t\t\t\"lucid_media.crop_skew_y\",\n\t\t\t\t\t\t\"lucid_media.blur_hash\",\n\t\t\t\t\t\t\"lucid_media.average_color\",\n\t\t\t\t\t\t\"lucid_media.base64\",\n\t\t\t\t\t\t\"lucid_media.is_dark\",\n\t\t\t\t\t\t\"lucid_media.is_light\",\n\t\t\t\t\t\t\"lucid_media.created_at\",\n\t\t\t\t\t\t\"lucid_media.updated_at\",\n\t\t\t\t\t\t\"lucid_media.is_deleted\",\n\t\t\t\t\t\t\"lucid_media.is_deleted_at\",\n\t\t\t\t\t\t\"lucid_media.deleted_by\",\n\t\t\t\t\t\t\"lucid_media.public\",\n\t\t\t\t\t\t\"lucid_media.tenant_key\",\n\t\t\t\t\t\teb.fn.min<string>(\"translation.title\").as(\"title_sort\"),\n\t\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t\t.selectFrom(\"lucid_media_translations\")\n\t\t\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.title\",\n\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.alt\",\n\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.description\",\n\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.summary\",\n\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.locale_code\",\n\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.media_id\",\n\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.as(\"translations\"),\n\t\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t\t.selectFrom(\"lucid_media as poster\")\n\t\t\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\t\t\"poster.id\",\n\t\t\t\t\t\t\t\t\t\t\"poster.key\",\n\t\t\t\t\t\t\t\t\t\t\"poster.origin\",\n\t\t\t\t\t\t\t\t\t\t\"poster.type\",\n\t\t\t\t\t\t\t\t\t\t\"poster.mime_type\",\n\t\t\t\t\t\t\t\t\t\t\"poster.file_extension\",\n\t\t\t\t\t\t\t\t\t\t\"poster.file_name\",\n\t\t\t\t\t\t\t\t\t\t\"poster.file_size\",\n\t\t\t\t\t\t\t\t\t\t\"poster.width\",\n\t\t\t\t\t\t\t\t\t\t\"poster.height\",\n\t\t\t\t\t\t\t\t\t\t\"poster.focal_x\",\n\t\t\t\t\t\t\t\t\t\t\"poster.focal_y\",\n\t\t\t\t\t\t\t\t\t\t\"poster.crop_x\",\n\t\t\t\t\t\t\t\t\t\t\"poster.crop_y\",\n\t\t\t\t\t\t\t\t\t\t\"poster.crop_width\",\n\t\t\t\t\t\t\t\t\t\t\"poster.crop_height\",\n\t\t\t\t\t\t\t\t\t\t\"poster.crop_rotation\",\n\t\t\t\t\t\t\t\t\t\t\"poster.crop_skew_x\",\n\t\t\t\t\t\t\t\t\t\t\"poster.crop_skew_y\",\n\t\t\t\t\t\t\t\t\t\t\"poster.blur_hash\",\n\t\t\t\t\t\t\t\t\t\t\"poster.average_color\",\n\t\t\t\t\t\t\t\t\t\t\"poster.base64\",\n\t\t\t\t\t\t\t\t\t\t\"poster.is_dark\",\n\t\t\t\t\t\t\t\t\t\t\"poster.is_light\",\n\t\t\t\t\t\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t\t\t\t\t\t.selectFrom(\"lucid_media_translations\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.title\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.alt\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.description\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.summary\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.locale_code\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.media_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsql.ref(\"poster.id\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t.as(\"translations\"),\n\t\t\t\t\t\t\t\t\t\tactiveMediaCropSelect(this.db, this.dbAdapter, \"poster.id\"),\n\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t.whereRef(\"poster.parent_media_id\", \"=\", \"lucid_media.id\")\n\t\t\t\t\t\t\t\t\t.where(\"poster.relation_type\", \"=\", \"poster\")\n\t\t\t\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\t\t\t\t\"poster.is_deleted\",\n\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.as(\"poster\"),\n\t\t\t\t\t\tactiveMediaCropSelect(this.db, this.dbAdapter, \"lucid_media.id\"),\n\t\t\t\t\t])\n\t\t\t\t\t.where(\n\t\t\t\t\t\t\"lucid_media.is_hidden\",\n\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t)\n\t\t\t\t\t.where(\"lucid_media.parent_media_id\", \"is\", null)\n\t\t\t\t\t.groupBy(\"lucid_media.id\")\n\t\t\t\t\t.$call((qb) =>\n\t\t\t\t\t\tqueryBuilder.tenantScope(qb, {\n\t\t\t\t\t\t\ttenantKey: props.tenantKey,\n\t\t\t\t\t\t\tcolumn: \"lucid_media.tenant_key\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\n\t\t\t\tconst countQuery = this.db\n\t\t\t\t\t.selectFrom(\"lucid_media\")\n\t\t\t\t\t.select(sql`count(distinct lucid_media.id)`.as(\"count\"))\n\t\t\t\t\t.leftJoin(\"lucid_media_translations as translation\", (join) =>\n\t\t\t\t\t\tjoin.onRef(\"translation.media_id\", \"=\", \"lucid_media.id\"),\n\t\t\t\t\t)\n\t\t\t\t\t.where(\n\t\t\t\t\t\t\"lucid_media.is_hidden\",\n\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t)\n\t\t\t\t\t.where(\"lucid_media.parent_media_id\", \"is\", null)\n\t\t\t\t\t.$call((qb) =>\n\t\t\t\t\t\tqueryBuilder.tenantScope(qb, {\n\t\t\t\t\t\t\ttenantKey: props.tenantKey,\n\t\t\t\t\t\t\tcolumn: \"lucid_media.tenant_key\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\n\t\t\t\tconst { main, count } = queryBuilder.main(\n\t\t\t\t\t{\n\t\t\t\t\t\tmain: mainQuery,\n\t\t\t\t\t\tcount: countQuery,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tqueryParams: props.queryParams,\n\t\t\t\t\t\tdatabase: this.dbAdapter.config,\n\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\ttableKeys: {\n\t\t\t\t\t\t\t\tfilters: {\n\t\t\t\t\t\t\t\t\ttitle: \"translation.title\",\n\t\t\t\t\t\t\t\t\t...this.queryConfig.tableKeys.filters,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tsorts: {\n\t\t\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t\t\ttitle: \"title_sort\",\n\t\t\t\t\t\t\t\t\t...this.queryConfig.tableKeys.sorts,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\toperators: {\n\t\t\t\t\t\t\t\ttitle: \"contains\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tconst [mainResult, countResult] = await Promise.all([\n\t\t\t\t\tmain.execute(),\n\t\t\t\t\tcount?.executeTakeFirst() as Promise<{ count: string } | undefined>,\n\t\t\t\t]);\n\n\t\t\t\treturn [mainResult, countResult] as const;\n\t\t\t},\n\t\t\t{\n\t\t\t\tmethod: \"selectMultipleFilteredFixed\",\n\t\t\t},\n\t\t);\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\t...props.validation,\n\t\t\tmode: \"multiple-count\",\n\t\t\tselect: [\n\t\t\t\t\"id\",\n\t\t\t\t\"key\",\n\t\t\t\t\"folder_id\",\n\t\t\t\t\"parent_media_id\",\n\t\t\t\t\"relation_type\",\n\t\t\t\t\"e_tag\",\n\t\t\t\t\"origin\",\n\t\t\t\t\"type\",\n\t\t\t\t\"mime_type\",\n\t\t\t\t\"file_extension\",\n\t\t\t\t\"file_name\",\n\t\t\t\t\"file_size\",\n\t\t\t\t\"width\",\n\t\t\t\t\"height\",\n\t\t\t\t\"focal_x\",\n\t\t\t\t\"focal_y\",\n\t\t\t\t\"crop_x\",\n\t\t\t\t\"crop_y\",\n\t\t\t\t\"crop_width\",\n\t\t\t\t\"crop_height\",\n\t\t\t\t\"crop_rotation\",\n\t\t\t\t\"crop_skew_x\",\n\t\t\t\t\"crop_skew_y\",\n\t\t\t\t\"blur_hash\",\n\t\t\t\t\"average_color\",\n\t\t\t\t\"base64\",\n\t\t\t\t\"is_dark\",\n\t\t\t\t\"is_light\",\n\t\t\t\t\"created_at\",\n\t\t\t\t\"updated_at\",\n\t\t\t\t\"is_deleted\",\n\t\t\t\t\"is_deleted_at\",\n\t\t\t\t\"deleted_by\",\n\t\t\t\t\"public\",\n\t\t\t\t\"tenant_key\",\n\t\t\t\t\"translations\",\n\t\t\t\t\"poster\",\n\t\t\t\t\"crop\",\n\t\t\t],\n\t\t});\n\t}\n}\n"],"mappings":"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,gBACA,oBACA,qBACA,uBACA,qBACA,qBACA,mBACA,uBACA,gBACA,iBACA,kBACA,KAAK,UACH,cACA,EACE,WAAW,0BAA0B,CAAC,CACtC,OAAO,CACP,iCACA,+BACA,uCACA,mCACA,sCACD,CAAC,CAAC,CACD,SACA,oCACA,IACA,EAAI,IAAI,WAAW,CACpB,CACF,CAAC,CACA,GAAG,cAAc,EACnB,KAAK,UACH,cACA,EACE,WAAW,4BAA4B,CAAC,CACxC,OAAO,CACP,iBACA,kBACA,qBACA,mBACA,wBACA,6BACA,wBACA,wBACA,oBACA,qBACA,sBACA,sBACA,qBACA,qBACA,yBACA,0BACA,4BACA,0BACA,0BACA,wBACA,4BACA,qBACA,sBACA,sBACD,CAAC,CAAC,CACD,MACA,8BACA,IACA,EAAI,IAAY,WAAW,CAC5B,CAAC,CACA,MAAM,4BAA6B,IAAK,MAAM,CAAC,CAC/C,MACA,yBACA,IACA,KAAK,UAAU,WAAW,UAAW,OAAO,CAC7C,CACF,CAAC,CACA,GAAG,MAAM,CACZ,CAAC,CAAC,CACD,SAAS,yBAA0B,IAAK,gBAAgB,CAAC,CACzD,MAAM,uBAAwB,IAAK,QAAQ,CAAC,CAC5C,MACA,oBACA,IACA,KAAK,UAAU,WAAW,UAAW,OAAO,CAC7C,CACF,CAAC,CACA,GAAG,QAAQ,EACb,KAAK,UACH,cACA,EACE,WAAW,qBAAqB,CAAC,CACjC,OAAO,CACP,UACA,WACA,cACA,YACA,iBACA,sBACA,iBACA,iBACA,aACA,cACA,eACA,eACA,cACA,cACA,kBACA,mBACA,qBACA,mBACA,mBACA,iBACA,qBACA,cACA,eACA,eACD,CAAC,CAAC,CACD,SAAS,uBAAwB,IAAK,gBAAgB,CAAC,CACvD,MAAM,qBAAsB,IAAK,MAAM,CAAC,CACxC,MACA,kBACA,IACA,KAAK,UAAU,WAAW,UAAW,OAAO,CAC7C,CACF,CAAC,CACA,GAAG,MAAM,EACX,KAAK,UACH,cACA,EACE,WAAW,0BAA0B,CAAC,CACtC,OAAO,CACP,iCACA,+BACA,uCACA,mCACA,sCACD,CAAC,CAAC,CACD,SACA,oCACA,IACA,gBACD,CACF,CAAC,CACA,GAAG,cAAc,CACpB,CAAC,CAAC,CACD,MAAM,KAAM,IAAK,EAAM,EAAE,CAAC,CAC1B,IAAI,EAAM,eAAiB,GAAO,GAClC,EAAG,MAAM,kBAAmB,KAAM,IAAI,CACvC,CAAC,CACA,MAAO,GACPA,EAAa,YAAY,EAAI,CAC5B,UAAW,EAAM,UACjB,OAAQ,wBACT,CAAC,CACF,EAEK,EAAO,MAAM,KAAK,iBAAmB,EAAM,iBAAiB,EAAG,CACpE,OAAQ,kBACT,CAAC,EAGD,OAFI,EAAK,SAAS,MAAc,EAAK,SAE9B,KAAK,iBAAiB,EAAM,CAClC,GAAG,EAAM,WACT,KAAM,SACN,OAAQ,2WAsCR,CACD,CAAC,CACF,CAEA,MAAM,oBACL,EAMC,CACD,IAAM,EAAQ,KAAK,GACjB,WAAW,aAAa,CAAC,CACzB,OAAQ,GAAO,CACf,KACA,MACA,YACA,kBACA,gBACA,QACA,SACA,OACA,YACA,iBACA,YACA,YACA,QACA,SACA,UACA,UACA,SACA,SACA,aACA,cACA,gBACA,cACA,cACA,aACA,aACA,YACA,gBACA,SACA,UACA,WACA,aACA,gBACA,aACA,SACA,aACA,KAAK,UACH,cACA,EACE,WAAW,uBAAuB,CAAC,CACnC,OAAO,CACP,YACA,aACA,gBACA,cACA,mBACA,wBACA,mBACA,mBACA,eACA,gBACA,iBACA,iBACA,gBACA,gBACA,oBACA,qBACA,uBACA,qBACA,qBACA,mBACA,uBACA,gBACA,iBACA,kBACA,KAAK,UACH,cACA,EACE,WAAW,0BAA0B,CAAC,CACtC,OAAO,CACP,iCACA,+BACA,uCACA,mCACA,sCACD,CAAC,CAAC,CACD,SACA,oCACA,IACA,EAAI,IAAI,WAAW,CACpB,CACF,CAAC,CACA,GAAG,cAAc,EACnB,KAAK,UACH,cACA,EACE,WAAW,4BAA4B,CAAC,CACxC,OAAO,CACP,iBACA,kBACA,qBACA,mBACA,wBACA,6BACA,wBACA,wBACA,oBACA,qBACA,sBACA,sBACA,qBACA,qBACA,yBACA,0BACA,4BAC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"}