diff --git a/prisma/migrations/20260708181143_add_api_key/migration.sql b/prisma/migrations/20260708181143_add_api_key/migration.sql new file mode 100644 index 0000000..b06dc9e --- /dev/null +++ b/prisma/migrations/20260708181143_add_api_key/migration.sql @@ -0,0 +1,14 @@ +-- CreateTable +CREATE TABLE "ApiKey" ( + "id" TEXT NOT NULL, + "keyPrefix" TEXT NOT NULL, + "keyHash" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "expiresAt" TIMESTAMP(3), + "revokedAt" TIMESTAMP(3), + + CONSTRAINT "ApiKey_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "ApiKey_keyHash_key" ON "ApiKey"("keyHash"); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index aa4b517..eec5c1a 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -178,6 +178,15 @@ model LicenseKey { user User @relation(fields: [userId], references: [id]) } +model ApiKey { + id String @id @default(cuid()) + keyPrefix String + keyHash String @unique + createdAt DateTime @default(now()) + expiresAt DateTime? + revokedAt DateTime? +} + model SubscriptionLevel { id Int @id @default(autoincrement()) name String diff --git a/src/hooks.server.ts b/src/hooks.server.ts index d2aa5b6..e1d56d5 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -1,14 +1,34 @@ import { auth } from '$lib/auth'; import { svelteKitHandler } from 'better-auth/svelte-kit'; import { building } from '$app/environment'; +import { validateApiKey } from '$lib/server/api-key'; export async function handle({ event, resolve }) { - // Fetch current session from Better Auth + if (event.url.pathname.startsWith('/api/v1/')) { + const authHeader = event.request.headers.get('authorization'); + if (!authHeader?.startsWith('Bearer ')) { + return new Response(JSON.stringify({ error: 'API key required' }), { + status: 401, + headers: { 'content-type': 'application/json' } + }); + } + + const key = authHeader.slice(7); + const record = await validateApiKey(key); + if (!record) { + return new Response(JSON.stringify({ error: 'Invalid or expired API key' }), { + status: 401, + headers: { 'content-type': 'application/json' } + }); + } + + return resolve(event); + } + const session = await auth.api.getSession({ headers: event.request.headers }); - // Make session and user available on server if (session) { event.locals.session = session.session; event.locals.user = session.user; diff --git a/src/lib/generated/prisma/browser.ts b/src/lib/generated/prisma/browser.ts index 336735f..6226235 100644 --- a/src/lib/generated/prisma/browser.ts +++ b/src/lib/generated/prisma/browser.ts @@ -82,6 +82,11 @@ export type ProclamationCategorySubscriptionLevel = Prisma.ProclamationCategoryS * */ export type LicenseKey = Prisma.LicenseKeyModel +/** + * Model ApiKey + * + */ +export type ApiKey = Prisma.ApiKeyModel /** * Model SubscriptionLevel * diff --git a/src/lib/generated/prisma/client.ts b/src/lib/generated/prisma/client.ts index bedd3ee..9ccb337 100644 --- a/src/lib/generated/prisma/client.ts +++ b/src/lib/generated/prisma/client.ts @@ -106,6 +106,11 @@ export type ProclamationCategorySubscriptionLevel = Prisma.ProclamationCategoryS * */ export type LicenseKey = Prisma.LicenseKeyModel +/** + * Model ApiKey + * + */ +export type ApiKey = Prisma.ApiKeyModel /** * Model SubscriptionLevel * diff --git a/src/lib/generated/prisma/internal/class.ts b/src/lib/generated/prisma/internal/class.ts index 5bab12c..b00379f 100644 --- a/src/lib/generated/prisma/internal/class.ts +++ b/src/lib/generated/prisma/internal/class.ts @@ -20,7 +20,7 @@ const config: runtime.GetPrismaClientConfig = { "clientVersion": "7.8.0", "engineVersion": "3c6e192761c0362d496ed980de936e2f3cebcd3a", "activeProvider": "postgresql", - "inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\n// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?\n// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../src/lib/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nmodel User {\n id String @id\n name String\n email String\n emailVerified Boolean @default(false)\n image String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n roleId Int?\n role UserRole? @relation(fields: [roleId], references: [id])\n sessions Session[]\n accounts Account[]\n profile Profile?\n licenseKeys LicenseKey[]\n userProclamations UserProclamations[]\n\n @@unique([email])\n @@map(\"user\")\n}\n\n// I chose to create a Profile table here because honestly, I didn't want to waste\n// a bunch of time trying to figure out how to customize the default Better-Auth model. \nmodel Profile {\n id String @id @default(uuid())\n userId String @unique\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n firstName String\n lastName String\n phoneNumber String\n ghlContactId String? @map(\"ghl_contact_id\")\n addresses Address[]\n}\n\nmodel Address {\n id String @id @default(uuid())\n profileId String\n profile Profile @relation(fields: [profileId], references: [id], onDelete: Cascade)\n street String\n city String\n state String\n postalCode String\n country String\n type String @default(\"Mailing\")\n isDefaultMailing Boolean @default(false)\n isDefaultBilling Boolean @default(false)\n isDefaultShipping Boolean @default(false)\n}\n\nmodel Session {\n id String @id\n expiresAt DateTime\n token String\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n ipAddress String?\n userAgent String?\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([token])\n @@index([userId])\n @@map(\"session\")\n}\n\nmodel Account {\n id String @id\n accountId String\n providerId String\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n accessToken String?\n refreshToken String?\n idToken String?\n accessTokenExpiresAt DateTime?\n refreshTokenExpiresAt DateTime?\n scope String?\n password String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId])\n @@map(\"account\")\n}\n\nmodel UserRole {\n id Int @id @default(autoincrement())\n name String\n users User[]\n}\n\nmodel Verification {\n id String @id\n identifier String\n value String\n expiresAt DateTime\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([identifier])\n @@map(\"verification\")\n}\n\nmodel Proclamation {\n id String @id @default(uuid())\n name String @unique\n content String\n solfeggioFrequencyId Int\n solfeggioFrequency SolfeggioFrequency @relation(fields: [solfeggioFrequencyId], references: [id])\n categoryId Int\n category ProclamationCategory @relation(fields: [categoryId], references: [id])\n userProclamations UserProclamations[]\n subscriptionLevelId Int // Keeping old FK for migration stability\n subscriptionLevel SubscriptionLevel @relation(fields: [subscriptionLevelId], references: [id])\n}\n\nmodel UserProclamations {\n userId String\n user User @relation(fields: [userId], references: [id])\n proclamationId String\n proclamation Proclamation @relation(fields: [proclamationId], references: [id])\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@id([userId, proclamationId])\n}\n\nmodel SolfeggioFrequency {\n id Int @id @default(autoincrement())\n name String @unique\n value Int @unique\n proclamations Proclamation[]\n}\n\nmodel ProclamationCategory {\n id Int @id @default(autoincrement())\n name String\n sortOrder Int @default(0)\n parentId Int?\n parent ProclamationCategory? @relation(\"CategoryHierarchy\", fields: [parentId], references: [id])\n children ProclamationCategory[] @relation(\"CategoryHierarchy\")\n proclamations Proclamation[]\n subscriptionLevels ProclamationCategorySubscriptionLevel[]\n\n @@unique([parentId, name])\n}\n\n// Join table for ProclamationCategory -> SubscriptionLevel defaults\nmodel ProclamationCategorySubscriptionLevel {\n categoryId Int\n category ProclamationCategory @relation(fields: [categoryId], references: [id], onDelete: Cascade)\n subscriptionLevelId Int\n subscriptionLevel SubscriptionLevel @relation(fields: [subscriptionLevelId], references: [id], onDelete: Cascade)\n\n @@id([categoryId, subscriptionLevelId])\n}\n\nmodel LicenseKey {\n id String @id @default(uuid())\n key String @unique\n active Boolean\n level String\n userId String\n user User @relation(fields: [userId], references: [id])\n}\n\nmodel SubscriptionLevel {\n id Int @id @default(autoincrement())\n name String\n description String?\n proclamations Proclamation[]\n categoryLevels ProclamationCategorySubscriptionLevel[]\n}\n", + "inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\n// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?\n// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../src/lib/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nmodel User {\n id String @id\n name String\n email String\n emailVerified Boolean @default(false)\n image String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n roleId Int?\n role UserRole? @relation(fields: [roleId], references: [id])\n sessions Session[]\n accounts Account[]\n profile Profile?\n licenseKeys LicenseKey[]\n userProclamations UserProclamations[]\n\n @@unique([email])\n @@map(\"user\")\n}\n\n// I chose to create a Profile table here because honestly, I didn't want to waste\n// a bunch of time trying to figure out how to customize the default Better-Auth model. \nmodel Profile {\n id String @id @default(uuid())\n userId String @unique\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n firstName String\n lastName String\n phoneNumber String\n ghlContactId String? @map(\"ghl_contact_id\")\n addresses Address[]\n}\n\nmodel Address {\n id String @id @default(uuid())\n profileId String\n profile Profile @relation(fields: [profileId], references: [id], onDelete: Cascade)\n street String\n city String\n state String\n postalCode String\n country String\n type String @default(\"Mailing\")\n isDefaultMailing Boolean @default(false)\n isDefaultBilling Boolean @default(false)\n isDefaultShipping Boolean @default(false)\n}\n\nmodel Session {\n id String @id\n expiresAt DateTime\n token String\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n ipAddress String?\n userAgent String?\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([token])\n @@index([userId])\n @@map(\"session\")\n}\n\nmodel Account {\n id String @id\n accountId String\n providerId String\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n accessToken String?\n refreshToken String?\n idToken String?\n accessTokenExpiresAt DateTime?\n refreshTokenExpiresAt DateTime?\n scope String?\n password String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId])\n @@map(\"account\")\n}\n\nmodel UserRole {\n id Int @id @default(autoincrement())\n name String\n users User[]\n}\n\nmodel Verification {\n id String @id\n identifier String\n value String\n expiresAt DateTime\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([identifier])\n @@map(\"verification\")\n}\n\nmodel Proclamation {\n id String @id @default(uuid())\n name String @unique\n content String\n solfeggioFrequencyId Int\n solfeggioFrequency SolfeggioFrequency @relation(fields: [solfeggioFrequencyId], references: [id])\n categoryId Int\n category ProclamationCategory @relation(fields: [categoryId], references: [id])\n userProclamations UserProclamations[]\n subscriptionLevelId Int // Keeping old FK for migration stability\n subscriptionLevel SubscriptionLevel @relation(fields: [subscriptionLevelId], references: [id])\n}\n\nmodel UserProclamations {\n userId String\n user User @relation(fields: [userId], references: [id])\n proclamationId String\n proclamation Proclamation @relation(fields: [proclamationId], references: [id])\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@id([userId, proclamationId])\n}\n\nmodel SolfeggioFrequency {\n id Int @id @default(autoincrement())\n name String @unique\n value Int @unique\n proclamations Proclamation[]\n}\n\nmodel ProclamationCategory {\n id Int @id @default(autoincrement())\n name String\n sortOrder Int @default(0)\n parentId Int?\n parent ProclamationCategory? @relation(\"CategoryHierarchy\", fields: [parentId], references: [id])\n children ProclamationCategory[] @relation(\"CategoryHierarchy\")\n proclamations Proclamation[]\n subscriptionLevels ProclamationCategorySubscriptionLevel[]\n\n @@unique([parentId, name])\n}\n\n// Join table for ProclamationCategory -> SubscriptionLevel defaults\nmodel ProclamationCategorySubscriptionLevel {\n categoryId Int\n category ProclamationCategory @relation(fields: [categoryId], references: [id], onDelete: Cascade)\n subscriptionLevelId Int\n subscriptionLevel SubscriptionLevel @relation(fields: [subscriptionLevelId], references: [id], onDelete: Cascade)\n\n @@id([categoryId, subscriptionLevelId])\n}\n\nmodel LicenseKey {\n id String @id @default(uuid())\n key String @unique\n active Boolean\n level String\n userId String\n user User @relation(fields: [userId], references: [id])\n}\n\nmodel ApiKey {\n id String @id @default(cuid())\n keyPrefix String\n keyHash String @unique\n createdAt DateTime @default(now())\n expiresAt DateTime?\n revokedAt DateTime?\n}\n\nmodel SubscriptionLevel {\n id Int @id @default(autoincrement())\n name String\n description String?\n proclamations Proclamation[]\n categoryLevels ProclamationCategorySubscriptionLevel[]\n}\n", "runtimeDataModel": { "models": {}, "enums": {}, @@ -32,10 +32,10 @@ const config: runtime.GetPrismaClientConfig = { } } -config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"roleId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"role\",\"kind\":\"object\",\"type\":\"UserRole\",\"relationName\":\"UserToUserRole\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"profile\",\"kind\":\"object\",\"type\":\"Profile\",\"relationName\":\"ProfileToUser\"},{\"name\":\"licenseKeys\",\"kind\":\"object\",\"type\":\"LicenseKey\",\"relationName\":\"LicenseKeyToUser\"},{\"name\":\"userProclamations\",\"kind\":\"object\",\"type\":\"UserProclamations\",\"relationName\":\"UserToUserProclamations\"}],\"dbName\":\"user\"},\"Profile\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ProfileToUser\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phoneNumber\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ghlContactId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"ghl_contact_id\"},{\"name\":\"addresses\",\"kind\":\"object\",\"type\":\"Address\",\"relationName\":\"AddressToProfile\"}],\"dbName\":null},\"Address\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"profileId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"profile\",\"kind\":\"object\",\"type\":\"Profile\",\"relationName\":\"AddressToProfile\"},{\"name\":\"street\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"city\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"postalCode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"country\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isDefaultMailing\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"isDefaultBilling\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"isDefaultShipping\",\"kind\":\"scalar\",\"type\":\"Boolean\"}],\"dbName\":null},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"}],\"dbName\":\"session\"},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"},{\"name\":\"accessToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"refreshToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"idToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"refreshTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"account\"},\"UserRole\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"users\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserRole\"}],\"dbName\":null},\"Verification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"verification\"},\"Proclamation\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"solfeggioFrequencyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"solfeggioFrequency\",\"kind\":\"object\",\"type\":\"SolfeggioFrequency\",\"relationName\":\"ProclamationToSolfeggioFrequency\"},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"category\",\"kind\":\"object\",\"type\":\"ProclamationCategory\",\"relationName\":\"ProclamationToProclamationCategory\"},{\"name\":\"userProclamations\",\"kind\":\"object\",\"type\":\"UserProclamations\",\"relationName\":\"ProclamationToUserProclamations\"},{\"name\":\"subscriptionLevelId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"subscriptionLevel\",\"kind\":\"object\",\"type\":\"SubscriptionLevel\",\"relationName\":\"ProclamationToSubscriptionLevel\"}],\"dbName\":null},\"UserProclamations\":{\"fields\":[{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserProclamations\"},{\"name\":\"proclamationId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"proclamation\",\"kind\":\"object\",\"type\":\"Proclamation\",\"relationName\":\"ProclamationToUserProclamations\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"SolfeggioFrequency\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"proclamations\",\"kind\":\"object\",\"type\":\"Proclamation\",\"relationName\":\"ProclamationToSolfeggioFrequency\"}],\"dbName\":null},\"ProclamationCategory\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"parentId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"parent\",\"kind\":\"object\",\"type\":\"ProclamationCategory\",\"relationName\":\"CategoryHierarchy\"},{\"name\":\"children\",\"kind\":\"object\",\"type\":\"ProclamationCategory\",\"relationName\":\"CategoryHierarchy\"},{\"name\":\"proclamations\",\"kind\":\"object\",\"type\":\"Proclamation\",\"relationName\":\"ProclamationToProclamationCategory\"},{\"name\":\"subscriptionLevels\",\"kind\":\"object\",\"type\":\"ProclamationCategorySubscriptionLevel\",\"relationName\":\"ProclamationCategoryToProclamationCategorySubscriptionLevel\"}],\"dbName\":null},\"ProclamationCategorySubscriptionLevel\":{\"fields\":[{\"name\":\"categoryId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"category\",\"kind\":\"object\",\"type\":\"ProclamationCategory\",\"relationName\":\"ProclamationCategoryToProclamationCategorySubscriptionLevel\"},{\"name\":\"subscriptionLevelId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"subscriptionLevel\",\"kind\":\"object\",\"type\":\"SubscriptionLevel\",\"relationName\":\"ProclamationCategorySubscriptionLevelToSubscriptionLevel\"}],\"dbName\":null},\"LicenseKey\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"active\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"level\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"LicenseKeyToUser\"}],\"dbName\":null},\"SubscriptionLevel\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"proclamations\",\"kind\":\"object\",\"type\":\"Proclamation\",\"relationName\":\"ProclamationToSubscriptionLevel\"},{\"name\":\"categoryLevels\",\"kind\":\"object\",\"type\":\"ProclamationCategorySubscriptionLevel\",\"relationName\":\"ProclamationCategorySubscriptionLevelToSubscriptionLevel\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"roleId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"role\",\"kind\":\"object\",\"type\":\"UserRole\",\"relationName\":\"UserToUserRole\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"profile\",\"kind\":\"object\",\"type\":\"Profile\",\"relationName\":\"ProfileToUser\"},{\"name\":\"licenseKeys\",\"kind\":\"object\",\"type\":\"LicenseKey\",\"relationName\":\"LicenseKeyToUser\"},{\"name\":\"userProclamations\",\"kind\":\"object\",\"type\":\"UserProclamations\",\"relationName\":\"UserToUserProclamations\"}],\"dbName\":\"user\"},\"Profile\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ProfileToUser\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phoneNumber\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ghlContactId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"ghl_contact_id\"},{\"name\":\"addresses\",\"kind\":\"object\",\"type\":\"Address\",\"relationName\":\"AddressToProfile\"}],\"dbName\":null},\"Address\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"profileId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"profile\",\"kind\":\"object\",\"type\":\"Profile\",\"relationName\":\"AddressToProfile\"},{\"name\":\"street\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"city\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"postalCode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"country\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isDefaultMailing\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"isDefaultBilling\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"isDefaultShipping\",\"kind\":\"scalar\",\"type\":\"Boolean\"}],\"dbName\":null},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"}],\"dbName\":\"session\"},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"},{\"name\":\"accessToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"refreshToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"idToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"refreshTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"account\"},\"UserRole\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"users\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserRole\"}],\"dbName\":null},\"Verification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"verification\"},\"Proclamation\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"solfeggioFrequencyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"solfeggioFrequency\",\"kind\":\"object\",\"type\":\"SolfeggioFrequency\",\"relationName\":\"ProclamationToSolfeggioFrequency\"},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"category\",\"kind\":\"object\",\"type\":\"ProclamationCategory\",\"relationName\":\"ProclamationToProclamationCategory\"},{\"name\":\"userProclamations\",\"kind\":\"object\",\"type\":\"UserProclamations\",\"relationName\":\"ProclamationToUserProclamations\"},{\"name\":\"subscriptionLevelId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"subscriptionLevel\",\"kind\":\"object\",\"type\":\"SubscriptionLevel\",\"relationName\":\"ProclamationToSubscriptionLevel\"}],\"dbName\":null},\"UserProclamations\":{\"fields\":[{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserProclamations\"},{\"name\":\"proclamationId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"proclamation\",\"kind\":\"object\",\"type\":\"Proclamation\",\"relationName\":\"ProclamationToUserProclamations\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"SolfeggioFrequency\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"proclamations\",\"kind\":\"object\",\"type\":\"Proclamation\",\"relationName\":\"ProclamationToSolfeggioFrequency\"}],\"dbName\":null},\"ProclamationCategory\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"parentId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"parent\",\"kind\":\"object\",\"type\":\"ProclamationCategory\",\"relationName\":\"CategoryHierarchy\"},{\"name\":\"children\",\"kind\":\"object\",\"type\":\"ProclamationCategory\",\"relationName\":\"CategoryHierarchy\"},{\"name\":\"proclamations\",\"kind\":\"object\",\"type\":\"Proclamation\",\"relationName\":\"ProclamationToProclamationCategory\"},{\"name\":\"subscriptionLevels\",\"kind\":\"object\",\"type\":\"ProclamationCategorySubscriptionLevel\",\"relationName\":\"ProclamationCategoryToProclamationCategorySubscriptionLevel\"}],\"dbName\":null},\"ProclamationCategorySubscriptionLevel\":{\"fields\":[{\"name\":\"categoryId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"category\",\"kind\":\"object\",\"type\":\"ProclamationCategory\",\"relationName\":\"ProclamationCategoryToProclamationCategorySubscriptionLevel\"},{\"name\":\"subscriptionLevelId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"subscriptionLevel\",\"kind\":\"object\",\"type\":\"SubscriptionLevel\",\"relationName\":\"ProclamationCategorySubscriptionLevelToSubscriptionLevel\"}],\"dbName\":null},\"LicenseKey\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"active\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"level\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"LicenseKeyToUser\"}],\"dbName\":null},\"ApiKey\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"keyPrefix\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"keyHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"SubscriptionLevel\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"proclamations\",\"kind\":\"object\",\"type\":\"Proclamation\",\"relationName\":\"ProclamationToSubscriptionLevel\"},{\"name\":\"categoryLevels\",\"kind\":\"object\",\"type\":\"ProclamationCategorySubscriptionLevel\",\"relationName\":\"ProclamationCategorySubscriptionLevelToSubscriptionLevel\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") config.parameterizationSchema = { - strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"users\",\"_count\",\"role\",\"user\",\"sessions\",\"accounts\",\"profile\",\"addresses\",\"licenseKeys\",\"proclamations\",\"solfeggioFrequency\",\"parent\",\"children\",\"category\",\"categoryLevels\",\"subscriptionLevel\",\"subscriptionLevels\",\"userProclamations\",\"proclamation\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"data\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"create\",\"update\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"User.groupBy\",\"User.aggregate\",\"Profile.findUnique\",\"Profile.findUniqueOrThrow\",\"Profile.findFirst\",\"Profile.findFirstOrThrow\",\"Profile.findMany\",\"Profile.createOne\",\"Profile.createMany\",\"Profile.createManyAndReturn\",\"Profile.updateOne\",\"Profile.updateMany\",\"Profile.updateManyAndReturn\",\"Profile.upsertOne\",\"Profile.deleteOne\",\"Profile.deleteMany\",\"Profile.groupBy\",\"Profile.aggregate\",\"Address.findUnique\",\"Address.findUniqueOrThrow\",\"Address.findFirst\",\"Address.findFirstOrThrow\",\"Address.findMany\",\"Address.createOne\",\"Address.createMany\",\"Address.createManyAndReturn\",\"Address.updateOne\",\"Address.updateMany\",\"Address.updateManyAndReturn\",\"Address.upsertOne\",\"Address.deleteOne\",\"Address.deleteMany\",\"Address.groupBy\",\"Address.aggregate\",\"Session.findUnique\",\"Session.findUniqueOrThrow\",\"Session.findFirst\",\"Session.findFirstOrThrow\",\"Session.findMany\",\"Session.createOne\",\"Session.createMany\",\"Session.createManyAndReturn\",\"Session.updateOne\",\"Session.updateMany\",\"Session.updateManyAndReturn\",\"Session.upsertOne\",\"Session.deleteOne\",\"Session.deleteMany\",\"Session.groupBy\",\"Session.aggregate\",\"Account.findUnique\",\"Account.findUniqueOrThrow\",\"Account.findFirst\",\"Account.findFirstOrThrow\",\"Account.findMany\",\"Account.createOne\",\"Account.createMany\",\"Account.createManyAndReturn\",\"Account.updateOne\",\"Account.updateMany\",\"Account.updateManyAndReturn\",\"Account.upsertOne\",\"Account.deleteOne\",\"Account.deleteMany\",\"Account.groupBy\",\"Account.aggregate\",\"UserRole.findUnique\",\"UserRole.findUniqueOrThrow\",\"UserRole.findFirst\",\"UserRole.findFirstOrThrow\",\"UserRole.findMany\",\"UserRole.createOne\",\"UserRole.createMany\",\"UserRole.createManyAndReturn\",\"UserRole.updateOne\",\"UserRole.updateMany\",\"UserRole.updateManyAndReturn\",\"UserRole.upsertOne\",\"UserRole.deleteOne\",\"UserRole.deleteMany\",\"UserRole.groupBy\",\"UserRole.aggregate\",\"Verification.findUnique\",\"Verification.findUniqueOrThrow\",\"Verification.findFirst\",\"Verification.findFirstOrThrow\",\"Verification.findMany\",\"Verification.createOne\",\"Verification.createMany\",\"Verification.createManyAndReturn\",\"Verification.updateOne\",\"Verification.updateMany\",\"Verification.updateManyAndReturn\",\"Verification.upsertOne\",\"Verification.deleteOne\",\"Verification.deleteMany\",\"Verification.groupBy\",\"Verification.aggregate\",\"Proclamation.findUnique\",\"Proclamation.findUniqueOrThrow\",\"Proclamation.findFirst\",\"Proclamation.findFirstOrThrow\",\"Proclamation.findMany\",\"Proclamation.createOne\",\"Proclamation.createMany\",\"Proclamation.createManyAndReturn\",\"Proclamation.updateOne\",\"Proclamation.updateMany\",\"Proclamation.updateManyAndReturn\",\"Proclamation.upsertOne\",\"Proclamation.deleteOne\",\"Proclamation.deleteMany\",\"Proclamation.groupBy\",\"Proclamation.aggregate\",\"UserProclamations.findUnique\",\"UserProclamations.findUniqueOrThrow\",\"UserProclamations.findFirst\",\"UserProclamations.findFirstOrThrow\",\"UserProclamations.findMany\",\"UserProclamations.createOne\",\"UserProclamations.createMany\",\"UserProclamations.createManyAndReturn\",\"UserProclamations.updateOne\",\"UserProclamations.updateMany\",\"UserProclamations.updateManyAndReturn\",\"UserProclamations.upsertOne\",\"UserProclamations.deleteOne\",\"UserProclamations.deleteMany\",\"UserProclamations.groupBy\",\"UserProclamations.aggregate\",\"SolfeggioFrequency.findUnique\",\"SolfeggioFrequency.findUniqueOrThrow\",\"SolfeggioFrequency.findFirst\",\"SolfeggioFrequency.findFirstOrThrow\",\"SolfeggioFrequency.findMany\",\"SolfeggioFrequency.createOne\",\"SolfeggioFrequency.createMany\",\"SolfeggioFrequency.createManyAndReturn\",\"SolfeggioFrequency.updateOne\",\"SolfeggioFrequency.updateMany\",\"SolfeggioFrequency.updateManyAndReturn\",\"SolfeggioFrequency.upsertOne\",\"SolfeggioFrequency.deleteOne\",\"SolfeggioFrequency.deleteMany\",\"SolfeggioFrequency.groupBy\",\"SolfeggioFrequency.aggregate\",\"ProclamationCategory.findUnique\",\"ProclamationCategory.findUniqueOrThrow\",\"ProclamationCategory.findFirst\",\"ProclamationCategory.findFirstOrThrow\",\"ProclamationCategory.findMany\",\"ProclamationCategory.createOne\",\"ProclamationCategory.createMany\",\"ProclamationCategory.createManyAndReturn\",\"ProclamationCategory.updateOne\",\"ProclamationCategory.updateMany\",\"ProclamationCategory.updateManyAndReturn\",\"ProclamationCategory.upsertOne\",\"ProclamationCategory.deleteOne\",\"ProclamationCategory.deleteMany\",\"ProclamationCategory.groupBy\",\"ProclamationCategory.aggregate\",\"ProclamationCategorySubscriptionLevel.findUnique\",\"ProclamationCategorySubscriptionLevel.findUniqueOrThrow\",\"ProclamationCategorySubscriptionLevel.findFirst\",\"ProclamationCategorySubscriptionLevel.findFirstOrThrow\",\"ProclamationCategorySubscriptionLevel.findMany\",\"ProclamationCategorySubscriptionLevel.createOne\",\"ProclamationCategorySubscriptionLevel.createMany\",\"ProclamationCategorySubscriptionLevel.createManyAndReturn\",\"ProclamationCategorySubscriptionLevel.updateOne\",\"ProclamationCategorySubscriptionLevel.updateMany\",\"ProclamationCategorySubscriptionLevel.updateManyAndReturn\",\"ProclamationCategorySubscriptionLevel.upsertOne\",\"ProclamationCategorySubscriptionLevel.deleteOne\",\"ProclamationCategorySubscriptionLevel.deleteMany\",\"ProclamationCategorySubscriptionLevel.groupBy\",\"ProclamationCategorySubscriptionLevel.aggregate\",\"LicenseKey.findUnique\",\"LicenseKey.findUniqueOrThrow\",\"LicenseKey.findFirst\",\"LicenseKey.findFirstOrThrow\",\"LicenseKey.findMany\",\"LicenseKey.createOne\",\"LicenseKey.createMany\",\"LicenseKey.createManyAndReturn\",\"LicenseKey.updateOne\",\"LicenseKey.updateMany\",\"LicenseKey.updateManyAndReturn\",\"LicenseKey.upsertOne\",\"LicenseKey.deleteOne\",\"LicenseKey.deleteMany\",\"LicenseKey.groupBy\",\"LicenseKey.aggregate\",\"SubscriptionLevel.findUnique\",\"SubscriptionLevel.findUniqueOrThrow\",\"SubscriptionLevel.findFirst\",\"SubscriptionLevel.findFirstOrThrow\",\"SubscriptionLevel.findMany\",\"SubscriptionLevel.createOne\",\"SubscriptionLevel.createMany\",\"SubscriptionLevel.createManyAndReturn\",\"SubscriptionLevel.updateOne\",\"SubscriptionLevel.updateMany\",\"SubscriptionLevel.updateManyAndReturn\",\"SubscriptionLevel.upsertOne\",\"SubscriptionLevel.deleteOne\",\"SubscriptionLevel.deleteMany\",\"SubscriptionLevel.groupBy\",\"SubscriptionLevel.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"name\",\"description\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"contains\",\"startsWith\",\"endsWith\",\"not\",\"every\",\"some\",\"none\",\"key\",\"active\",\"level\",\"userId\",\"categoryId\",\"subscriptionLevelId\",\"sortOrder\",\"parentId\",\"value\",\"proclamationId\",\"createdAt\",\"updatedAt\",\"content\",\"solfeggioFrequencyId\",\"identifier\",\"expiresAt\",\"accountId\",\"providerId\",\"accessToken\",\"refreshToken\",\"idToken\",\"accessTokenExpiresAt\",\"refreshTokenExpiresAt\",\"scope\",\"password\",\"token\",\"ipAddress\",\"userAgent\",\"profileId\",\"street\",\"city\",\"state\",\"postalCode\",\"country\",\"type\",\"isDefaultMailing\",\"isDefaultBilling\",\"isDefaultShipping\",\"firstName\",\"lastName\",\"phoneNumber\",\"ghlContactId\",\"email\",\"emailVerified\",\"image\",\"roleId\",\"categoryId_subscriptionLevelId\",\"parentId_name\",\"userId_proclamationId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "vgaGAeABEQUAAMoDACAHAADLAwAgCAAAzAMAIAkAAM0DACALAADOAwAgFAAAvgMAIP4BAADJAwAw_wEAAAUAEIACAADJAwAwgQIBAAAAAYICAQCOAwAhnAJAAKQDACGdAkAApAMAIbwCAQAAAAG9AiAAwwMAIb4CAQCPAwAhvwICALkDACEBAAAAAQAgBgMAAKcDACD-AQAApgMAMP8BAAADABCAAgAApgMAMIECAgCNAwAhggIBAI4DACEBAAAAAwAgEQUAAMoDACAHAADLAwAgCAAAzAMAIAkAAM0DACALAADOAwAgFAAAvgMAIP4BAADJAwAw_wEAAAUAEIACAADJAwAwgQIBAI4DACGCAgEAjgMAIZwCQACkAwAhnQJAAKQDACG8AgEAjgMAIb0CIADDAwAhvgIBAI8DACG_AgIAuQMAIQgFAADoBQAgBwAA6QUAIAgAAOoFACAJAADnBQAgCwAA6wUAIBQAAOUFACC-AgAAzwMAIL8CAADPAwAgAwAAAAUAIAEAAAYAMAIAAAEAIAEAAAAFACAMBgAAsAMAIP4BAADIAwAw_wEAAAkAEIACAADIAwAwgQIBAI4DACGVAgEAjgMAIZwCQACkAwAhnQJAAKQDACGhAkAApAMAIasCAQCOAwAhrAIBAI8DACGtAgEAjwMAIQMGAADYBQAgrAIAAM8DACCtAgAAzwMAIAwGAACwAwAg_gEAAMgDADD_AQAACQAQgAIAAMgDADCBAgEAAAABlQIBAI4DACGcAkAApAMAIZ0CQACkAwAhoQJAAKQDACGrAgEAAAABrAIBAI8DACGtAgEAjwMAIQMAAAAJACABAAAKADACAAALACARBgAAsAMAIP4BAADGAwAw_wEAAA0AEIACAADGAwAwgQIBAI4DACGVAgEAjgMAIZwCQACkAwAhnQJAAKQDACGiAgEAjgMAIaMCAQCOAwAhpAIBAI8DACGlAgEAjwMAIaYCAQCPAwAhpwJAAMcDACGoAkAAxwMAIakCAQCPAwAhqgIBAI8DACEIBgAA2AUAIKQCAADPAwAgpQIAAM8DACCmAgAAzwMAIKcCAADPAwAgqAIAAM8DACCpAgAAzwMAIKoCAADPAwAgEQYAALADACD-AQAAxgMAMP8BAAANABCAAgAAxgMAMIECAQAAAAGVAgEAjgMAIZwCQACkAwAhnQJAAKQDACGiAgEAjgMAIaMCAQCOAwAhpAIBAI8DACGlAgEAjwMAIaYCAQCPAwAhpwJAAMcDACGoAkAAxwMAIakCAQCPAwAhqgIBAI8DACEDAAAADQAgAQAADgAwAgAADwAgCwYAALADACAKAACxAwAg_gEAAK8DADD_AQAAEQAQgAIAAK8DADCBAgEAjgMAIZUCAQCOAwAhuAIBAI4DACG5AgEAjgMAIboCAQCOAwAhuwIBAI8DACEBAAAAEQAgDwkAAMUDACD-AQAAxAMAMP8BAAATABCAAgAAxAMAMIECAQCOAwAhrgIBAI4DACGvAgEAjgMAIbACAQCOAwAhsQIBAI4DACGyAgEAjgMAIbMCAQCOAwAhtAIBAI4DACG1AiAAwwMAIbYCIADDAwAhtwIgAMMDACEBCQAA5wUAIA8JAADFAwAg_gEAAMQDADD_AQAAEwAQgAIAAMQDADCBAgEAAAABrgIBAI4DACGvAgEAjgMAIbACAQCOAwAhsQIBAI4DACGyAgEAjgMAIbMCAQCOAwAhtAIBAI4DACG1AiAAwwMAIbYCIADDAwAhtwIgAMMDACEDAAAAEwAgAQAAFAAwAgAAFQAgAQAAABMAIAkGAACwAwAg_gEAAMIDADD_AQAAGAAQgAIAAMIDADCBAgEAjgMAIZICAQCOAwAhkwIgAMMDACGUAgEAjgMAIZUCAQCOAwAhAQYAANgFACAJBgAAsAMAIP4BAADCAwAw_wEAABgAEIACAADCAwAwgQIBAAAAAZICAQAAAAGTAiAAwwMAIZQCAQCOAwAhlQIBAI4DACEDAAAAGAAgAQAAGQAwAgAAGgAgCQYAALADACAVAADBAwAg_gEAAMADADD_AQAAHAAQgAIAAMADADCVAgEAjgMAIZsCAQCOAwAhnAJAAKQDACGdAkAApAMAIQIGAADYBQAgFQAA5gUAIAoGAACwAwAgFQAAwQMAIP4BAADAAwAw_wEAABwAEIACAADAAwAwlQIBAI4DACGbAgEAjgMAIZwCQACkAwAhnQJAAKQDACHCAgAAvwMAIAMAAAAcACABAAAdADACAAAeACANDQAAvQMAIBAAALUDACASAAC2AwAgFAAAvgMAIP4BAAC8AwAw_wEAACAAEIACAAC8AwAwgQIBAI4DACGCAgEAjgMAIZYCAgCNAwAhlwICAI0DACGeAgEAjgMAIZ8CAgCNAwAhBA0AAOQFACAQAADhBQAgEgAA4gUAIBQAAOUFACANDQAAvQMAIBAAALUDACASAAC2AwAgFAAAvgMAIP4BAAC8AwAw_wEAACAAEIACAAC8AwAwgQIBAAAAAYICAQAAAAGWAgIAjQMAIZcCAgCNAwAhngIBAI4DACGfAgIAjQMAIQMAAAAgACABAAAhADACAAAiACABAAAAIAAgCwwAAJADACAOAAC6AwAgDwAAuwMAIBMAAJEDACD-AQAAuAMAMP8BAAAlABCAAgAAuAMAMIECAgCNAwAhggIBAI4DACGYAgIAjQMAIZkCAgC5AwAhAQAAACUAIAUMAACLBAAgDgAA4QUAIA8AAOMFACATAACMBAAgmQIAAM8DACAMDAAAkAMAIA4AALoDACAPAAC7AwAgEwAAkQMAIP4BAAC4AwAw_wEAACUAEIACAAC4AwAwgQICAAAAAYICAQCOAwAhmAICAI0DACGZAgIAuQMAIcECAAC3AwAgAwAAACUAIAEAACcAMAIAACgAIAMAAAAgACABAAAhADACAAAiACAHEAAAtQMAIBIAALYDACD-AQAAtAMAMP8BAAArABCAAgAAtAMAMJYCAgCNAwAhlwICAI0DACECEAAA4QUAIBIAAOIFACAIEAAAtQMAIBIAALYDACD-AQAAtAMAMP8BAAArABCAAgAAtAMAMJYCAgCNAwAhlwICAI0DACHAAgAAswMAIAMAAAArACABAAAsADACAAAtACADAAAAIAAgAQAAIQAwAgAAIgAgAwAAACsAIAEAACwAMAIAAC0AIAEAAAAgACABAAAAKwAgAQAAACUAIAEAAAAgACABAAAAKwAgAwAAABwAIAEAAB0AMAIAAB4AIAEAAAAcACABAAAACQAgAQAAAA0AIAEAAAAYACABAAAAHAAgAQAAAAEAIAMAAAAFACABAAAGADACAAABACADAAAABQAgAQAABgAwAgAAAQAgAwAAAAUAIAEAAAYAMAIAAAEAIA4FAADgBQAgBwAAvQUAIAgAAL4FACAJAAC_BQAgCwAAwAUAIBQAAMEFACCBAgEAAAABggIBAAAAAZwCQAAAAAGdAkAAAAABvAIBAAAAAb0CIAAAAAG-AgEAAAABvwICAAAAAQEbAABAACAIgQIBAAAAAYICAQAAAAGcAkAAAAABnQJAAAAAAbwCAQAAAAG9AiAAAAABvgIBAAAAAb8CAgAAAAEBGwAAQgAwARsAAEIAMAEAAAADACAOBQAA3wUAIAcAAPYEACAIAAD3BAAgCQAA-AQAIAsAAPkEACAUAAD6BAAggQIBANUDACGCAgEA1QMAIZwCQACABAAhnQJAAIAEACG8AgEA1QMAIb0CIACQBAAhvgIBANYDACG_AgIAnwQAIQIAAAABACAbAABGACAIgQIBANUDACGCAgEA1QMAIZwCQACABAAhnQJAAIAEACG8AgEA1QMAIb0CIACQBAAhvgIBANYDACG_AgIAnwQAIQIAAAAFACAbAABIACACAAAABQAgGwAASAAgAQAAAAMAIAMAAAABACAiAABAACAjAABGACABAAAAAQAgAQAAAAUAIAcEAADaBQAgKAAA2wUAICkAAN4FACAqAADdBQAgKwAA3AUAIL4CAADPAwAgvwIAAM8DACAL_gEAALIDADD_AQAAUAAQgAIAALIDADCBAgEAggMAIYICAQCCAwAhnAJAAJ4DACGdAkAAngMAIbwCAQCCAwAhvQIgAJMDACG-AgEAgwMAIb8CAgCYAwAhAwAAAAUAIAEAAE8AMCcAAFAAIAMAAAAFACABAAAGADACAAABACALBgAAsAMAIAoAALEDACD-AQAArwMAMP8BAAARABCAAgAArwMAMIECAQAAAAGVAgEAAAABuAIBAI4DACG5AgEAjgMAIboCAQCOAwAhuwIBAI8DACEBAAAAUwAgAQAAAFMAIAMGAADYBQAgCgAA2QUAILsCAADPAwAgAwAAABEAIAEAAFYAMAIAAFMAIAMAAAARACABAABWADACAABTACADAAAAEQAgAQAAVgAwAgAAUwAgCAYAANcFACAKAACiBQAggQIBAAAAAZUCAQAAAAG4AgEAAAABuQIBAAAAAboCAQAAAAG7AgEAAAABARsAAFoAIAaBAgEAAAABlQIBAAAAAbgCAQAAAAG5AgEAAAABugIBAAAAAbsCAQAAAAEBGwAAXAAwARsAAFwAMAgGAADWBQAgCgAAlQUAIIECAQDVAwAhlQIBANUDACG4AgEA1QMAIbkCAQDVAwAhugIBANUDACG7AgEA1gMAIQIAAABTACAbAABfACAGgQIBANUDACGVAgEA1QMAIbgCAQDVAwAhuQIBANUDACG6AgEA1QMAIbsCAQDWAwAhAgAAABEAIBsAAGEAIAIAAAARACAbAABhACADAAAAUwAgIgAAWgAgIwAAXwAgAQAAAFMAIAEAAAARACAEBAAA0wUAICoAANUFACArAADUBQAguwIAAM8DACAJ_gEAAK4DADD_AQAAaAAQgAIAAK4DADCBAgEAggMAIZUCAQCCAwAhuAIBAIIDACG5AgEAggMAIboCAQCCAwAhuwIBAIMDACEDAAAAEQAgAQAAZwAwJwAAaAAgAwAAABEAIAEAAFYAMAIAAFMAIAEAAAAVACABAAAAFQAgAwAAABMAIAEAABQAMAIAABUAIAMAAAATACABAAAUADACAAAVACADAAAAEwAgAQAAFAAwAgAAFQAgDAkAANIFACCBAgEAAAABrgIBAAAAAa8CAQAAAAGwAgEAAAABsQIBAAAAAbICAQAAAAGzAgEAAAABtAIBAAAAAbUCIAAAAAG2AiAAAAABtwIgAAAAAQEbAABwACALgQIBAAAAAa4CAQAAAAGvAgEAAAABsAIBAAAAAbECAQAAAAGyAgEAAAABswIBAAAAAbQCAQAAAAG1AiAAAAABtgIgAAAAAbcCIAAAAAEBGwAAcgAwARsAAHIAMAwJAADRBQAggQIBANUDACGuAgEA1QMAIa8CAQDVAwAhsAIBANUDACGxAgEA1QMAIbICAQDVAwAhswIBANUDACG0AgEA1QMAIbUCIACQBAAhtgIgAJAEACG3AiAAkAQAIQIAAAAVACAbAAB1ACALgQIBANUDACGuAgEA1QMAIa8CAQDVAwAhsAIBANUDACGxAgEA1QMAIbICAQDVAwAhswIBANUDACG0AgEA1QMAIbUCIACQBAAhtgIgAJAEACG3AiAAkAQAIQIAAAATACAbAAB3ACACAAAAEwAgGwAAdwAgAwAAABUAICIAAHAAICMAAHUAIAEAAAAVACABAAAAEwAgAwQAAM4FACAqAADQBQAgKwAAzwUAIA7-AQAArQMAMP8BAAB-ABCAAgAArQMAMIECAQCCAwAhrgIBAIIDACGvAgEAggMAIbACAQCCAwAhsQIBAIIDACGyAgEAggMAIbMCAQCCAwAhtAIBAIIDACG1AiAAkwMAIbYCIACTAwAhtwIgAJMDACEDAAAAEwAgAQAAfQAwJwAAfgAgAwAAABMAIAEAABQAMAIAABUAIAEAAAALACABAAAACwAgAwAAAAkAIAEAAAoAMAIAAAsAIAMAAAAJACABAAAKADACAAALACADAAAACQAgAQAACgAwAgAACwAgCQYAAM0FACCBAgEAAAABlQIBAAAAAZwCQAAAAAGdAkAAAAABoQJAAAAAAasCAQAAAAGsAgEAAAABrQIBAAAAAQEbAACGAQAgCIECAQAAAAGVAgEAAAABnAJAAAAAAZ0CQAAAAAGhAkAAAAABqwIBAAAAAawCAQAAAAGtAgEAAAABARsAAIgBADABGwAAiAEAMAkGAADMBQAggQIBANUDACGVAgEA1QMAIZwCQACABAAhnQJAAIAEACGhAkAAgAQAIasCAQDVAwAhrAIBANYDACGtAgEA1gMAIQIAAAALACAbAACLAQAgCIECAQDVAwAhlQIBANUDACGcAkAAgAQAIZ0CQACABAAhoQJAAIAEACGrAgEA1QMAIawCAQDWAwAhrQIBANYDACECAAAACQAgGwAAjQEAIAIAAAAJACAbAACNAQAgAwAAAAsAICIAAIYBACAjAACLAQAgAQAAAAsAIAEAAAAJACAFBAAAyQUAICoAAMsFACArAADKBQAgrAIAAM8DACCtAgAAzwMAIAv-AQAArAMAMP8BAACUAQAQgAIAAKwDADCBAgEAggMAIZUCAQCCAwAhnAJAAJ4DACGdAkAAngMAIaECQACeAwAhqwIBAIIDACGsAgEAgwMAIa0CAQCDAwAhAwAAAAkAIAEAAJMBADAnAACUAQAgAwAAAAkAIAEAAAoAMAIAAAsAIAEAAAAPACABAAAADwAgAwAAAA0AIAEAAA4AMAIAAA8AIAMAAAANACABAAAOADACAAAPACADAAAADQAgAQAADgAwAgAADwAgDgYAAMgFACCBAgEAAAABlQIBAAAAAZwCQAAAAAGdAkAAAAABogIBAAAAAaMCAQAAAAGkAgEAAAABpQIBAAAAAaYCAQAAAAGnAkAAAAABqAJAAAAAAakCAQAAAAGqAgEAAAABARsAAJwBACANgQIBAAAAAZUCAQAAAAGcAkAAAAABnQJAAAAAAaICAQAAAAGjAgEAAAABpAIBAAAAAaUCAQAAAAGmAgEAAAABpwJAAAAAAagCQAAAAAGpAgEAAAABqgIBAAAAAQEbAACeAQAwARsAAJ4BADAOBgAAxwUAIIECAQDVAwAhlQIBANUDACGcAkAAgAQAIZ0CQACABAAhogIBANUDACGjAgEA1QMAIaQCAQDWAwAhpQIBANYDACGmAgEA1gMAIacCQACtBQAhqAJAAK0FACGpAgEA1gMAIaoCAQDWAwAhAgAAAA8AIBsAAKEBACANgQIBANUDACGVAgEA1QMAIZwCQACABAAhnQJAAIAEACGiAgEA1QMAIaMCAQDVAwAhpAIBANYDACGlAgEA1gMAIaYCAQDWAwAhpwJAAK0FACGoAkAArQUAIakCAQDWAwAhqgIBANYDACECAAAADQAgGwAAowEAIAIAAAANACAbAACjAQAgAwAAAA8AICIAAJwBACAjAAChAQAgAQAAAA8AIAEAAAANACAKBAAAxAUAICoAAMYFACArAADFBQAgpAIAAM8DACClAgAAzwMAIKYCAADPAwAgpwIAAM8DACCoAgAAzwMAIKkCAADPAwAgqgIAAM8DACAQ_gEAAKgDADD_AQAAqgEAEIACAACoAwAwgQIBAIIDACGVAgEAggMAIZwCQACeAwAhnQJAAJ4DACGiAgEAggMAIaMCAQCCAwAhpAIBAIMDACGlAgEAgwMAIaYCAQCDAwAhpwJAAKkDACGoAkAAqQMAIakCAQCDAwAhqgIBAIMDACEDAAAADQAgAQAAqQEAMCcAAKoBACADAAAADQAgAQAADgAwAgAADwAgBgMAAKcDACD-AQAApgMAMP8BAAADABCAAgAApgMAMIECAgAAAAGCAgEAjgMAIQEAAACtAQAgAQAAAK0BACABAwAAwwUAIAMAAAADACABAACwAQAwAgAArQEAIAMAAAADACABAACwAQAwAgAArQEAIAMAAAADACABAACwAQAwAgAArQEAIAMDAADCBQAggQICAAAAAYICAQAAAAEBGwAAtAEAIAKBAgIAAAABggIBAAAAAQEbAAC2AQAwARsAALYBADADAwAA6gQAIIECAgDXAwAhggIBANUDACECAAAArQEAIBsAALkBACACgQICANcDACGCAgEA1QMAIQIAAAADACAbAAC7AQAgAgAAAAMAIBsAALsBACADAAAArQEAICIAALQBACAjAAC5AQAgAQAAAK0BACABAAAAAwAgBQQAAOUEACAoAADmBAAgKQAA6QQAICoAAOgEACArAADnBAAgBf4BAAClAwAw_wEAAMIBABCAAgAApQMAMIECAgCBAwAhggIBAIIDACEDAAAAAwAgAQAAwQEAMCcAAMIBACADAAAAAwAgAQAAsAEAMAIAAK0BACAJ_gEAAKMDADD_AQAAyAEAEIACAACjAwAwgQIBAAAAAZoCAQCOAwAhnAJAAKQDACGdAkAApAMAIaACAQCOAwAhoQJAAKQDACEBAAAAxQEAIAEAAADFAQAgCf4BAACjAwAw_wEAAMgBABCAAgAAowMAMIECAQCOAwAhmgIBAI4DACGcAkAApAMAIZ0CQACkAwAhoAIBAI4DACGhAkAApAMAIQADAAAAyAEAIAEAAMkBADACAADFAQAgAwAAAMgBACABAADJAQAwAgAAxQEAIAMAAADIAQAgAQAAyQEAMAIAAMUBACAGgQIBAAAAAZoCAQAAAAGcAkAAAAABnQJAAAAAAaACAQAAAAGhAkAAAAABARsAAM0BACAGgQIBAAAAAZoCAQAAAAGcAkAAAAABnQJAAAAAAaACAQAAAAGhAkAAAAABARsAAM8BADABGwAAzwEAMAaBAgEA1QMAIZoCAQDVAwAhnAJAAIAEACGdAkAAgAQAIaACAQDVAwAhoQJAAIAEACECAAAAxQEAIBsAANIBACAGgQIBANUDACGaAgEA1QMAIZwCQACABAAhnQJAAIAEACGgAgEA1QMAIaECQACABAAhAgAAAMgBACAbAADUAQAgAgAAAMgBACAbAADUAQAgAwAAAMUBACAiAADNAQAgIwAA0gEAIAEAAADFAQAgAQAAAMgBACADBAAA4gQAICoAAOQEACArAADjBAAgCf4BAACiAwAw_wEAANsBABCAAgAAogMAMIECAQCCAwAhmgIBAIIDACGcAkAAngMAIZ0CQACeAwAhoAIBAIIDACGhAkAAngMAIQMAAADIAQAgAQAA2gEAMCcAANsBACADAAAAyAEAIAEAAMkBADACAADFAQAgAQAAACIAIAEAAAAiACADAAAAIAAgAQAAIQAwAgAAIgAgAwAAACAAIAEAACEAMAIAACIAIAMAAAAgACABAAAhADACAAAiACAKDQAAhgQAIBAAAIcEACASAAC3BAAgFAAAiAQAIIECAQAAAAGCAgEAAAABlgICAAAAAZcCAgAAAAGeAgEAAAABnwICAAAAAQEbAADjAQAgBoECAQAAAAGCAgEAAAABlgICAAAAAZcCAgAAAAGeAgEAAAABnwICAAAAAQEbAADlAQAwARsAAOUBADAKDQAA8wMAIBAAAPQDACASAAC1BAAgFAAA9QMAIIECAQDVAwAhggIBANUDACGWAgIA1wMAIZcCAgDXAwAhngIBANUDACGfAgIA1wMAIQIAAAAiACAbAADoAQAgBoECAQDVAwAhggIBANUDACGWAgIA1wMAIZcCAgDXAwAhngIBANUDACGfAgIA1wMAIQIAAAAgACAbAADqAQAgAgAAACAAIBsAAOoBACADAAAAIgAgIgAA4wEAICMAAOgBACABAAAAIgAgAQAAACAAIAUEAADdBAAgKAAA3gQAICkAAOEEACAqAADgBAAgKwAA3wQAIAn-AQAAoQMAMP8BAADxAQAQgAIAAKEDADCBAgEAggMAIYICAQCCAwAhlgICAIEDACGXAgIAgQMAIZ4CAQCCAwAhnwICAIEDACEDAAAAIAAgAQAA8AEAMCcAAPEBACADAAAAIAAgAQAAIQAwAgAAIgAgAQAAAB4AIAEAAAAeACADAAAAHAAgAQAAHQAwAgAAHgAgAwAAABwAIAEAAB0AMAIAAB4AIAMAAAAcACABAAAdADACAAAeACAGBgAAhAQAIBUAANwEACCVAgEAAAABmwIBAAAAAZwCQAAAAAGdAkAAAAABARsAAPkBACAElQIBAAAAAZsCAQAAAAGcAkAAAAABnQJAAAAAAQEbAAD7AQAwARsAAPsBADAGBgAAggQAIBUAANsEACCVAgEA1QMAIZsCAQDVAwAhnAJAAIAEACGdAkAAgAQAIQIAAAAeACAbAAD-AQAgBJUCAQDVAwAhmwIBANUDACGcAkAAgAQAIZ0CQACABAAhAgAAABwAIBsAAIACACACAAAAHAAgGwAAgAIAIAMAAAAeACAiAAD5AQAgIwAA_gEAIAEAAAAeACABAAAAHAAgAwQAANgEACAqAADaBAAgKwAA2QQAIAf-AQAAnQMAMP8BAACHAgAQgAIAAJ0DADCVAgEAggMAIZsCAQCCAwAhnAJAAJ4DACGdAkAAngMAIQMAAAAcACABAACGAgAwJwAAhwIAIAMAAAAcACABAAAdADACAAAeACAHDAAAkAMAIP4BAACcAwAw_wEAAI0CABCAAgAAnAMAMIECAgAAAAGCAgEAAAABmgICAAAAAQEAAACKAgAgAQAAAIoCACAHDAAAkAMAIP4BAACcAwAw_wEAAI0CABCAAgAAnAMAMIECAgCNAwAhggIBAI4DACGaAgIAjQMAIQEMAACLBAAgAwAAAI0CACABAACOAgAwAgAAigIAIAMAAACNAgAgAQAAjgIAMAIAAIoCACADAAAAjQIAIAEAAI4CADACAACKAgAgBAwAANcEACCBAgIAAAABggIBAAAAAZoCAgAAAAEBGwAAkgIAIAOBAgIAAAABggIBAAAAAZoCAgAAAAEBGwAAlAIAMAEbAACUAgAwBAwAAM0EACCBAgIA1wMAIYICAQDVAwAhmgICANcDACECAAAAigIAIBsAAJcCACADgQICANcDACGCAgEA1QMAIZoCAgDXAwAhAgAAAI0CACAbAACZAgAgAgAAAI0CACAbAACZAgAgAwAAAIoCACAiAACSAgAgIwAAlwIAIAEAAACKAgAgAQAAAI0CACAFBAAAyAQAICgAAMkEACApAADMBAAgKgAAywQAICsAAMoEACAG_gEAAJsDADD_AQAAoAIAEIACAACbAwAwgQICAIEDACGCAgEAggMAIZoCAgCBAwAhAwAAAI0CACABAACfAgAwJwAAoAIAIAMAAACNAgAgAQAAjgIAMAIAAIoCACABAAAAKAAgAQAAACgAIAMAAAAlACABAAAnADACAAAoACADAAAAJQAgAQAAJwAwAgAAKAAgAwAAACUAIAEAACcAMAIAACgAIAgMAADFBAAgDgAAxwQAIA8AAMQEACATAADGBAAggQICAAAAAYICAQAAAAGYAgIAAAABmQICAAAAAQEbAACoAgAgBIECAgAAAAGCAgEAAAABmAICAAAAAZkCAgAAAAEBGwAAqgIAMAEbAACqAgAwAQAAACUAIAgMAACiBAAgDgAAoAQAIA8AAKEEACATAACjBAAggQICANcDACGCAgEA1QMAIZgCAgDXAwAhmQICAJ8EACECAAAAKAAgGwAArgIAIASBAgIA1wMAIYICAQDVAwAhmAICANcDACGZAgIAnwQAIQIAAAAlACAbAACwAgAgAgAAACUAIBsAALACACABAAAAJQAgAwAAACgAICIAAKgCACAjAACuAgAgAQAAACgAIAEAAAAlACAGBAAAmgQAICgAAJsEACApAACeBAAgKgAAnQQAICsAAJwEACCZAgAAzwMAIAf-AQAAlwMAMP8BAAC4AgAQgAIAAJcDADCBAgIAgQMAIYICAQCCAwAhmAICAIEDACGZAgIAmAMAIQMAAAAlACABAAC3AgAwJwAAuAIAIAMAAAAlACABAAAnADACAAAoACABAAAALQAgAQAAAC0AIAMAAAArACABAAAsADACAAAtACADAAAAKwAgAQAALAAwAgAALQAgAwAAACsAIAEAACwAMAIAAC0AIAQQAADnAwAgEgAAmQQAIJYCAgAAAAGXAgIAAAABARsAAMACACAClgICAAAAAZcCAgAAAAEBGwAAwgIAMAEbAADCAgAwBBAAAOUDACASAACYBAAglgICANcDACGXAgIA1wMAIQIAAAAtACAbAADFAgAgApYCAgDXAwAhlwICANcDACECAAAAKwAgGwAAxwIAIAIAAAArACAbAADHAgAgAwAAAC0AICIAAMACACAjAADFAgAgAQAAAC0AIAEAAAArACAFBAAAkwQAICgAAJQEACApAACXBAAgKgAAlgQAICsAAJUEACAF_gEAAJYDADD_AQAAzgIAEIACAACWAwAwlgICAIEDACGXAgIAgQMAIQMAAAArACABAADNAgAwJwAAzgIAIAMAAAArACABAAAsADACAAAtACABAAAAGgAgAQAAABoAIAMAAAAYACABAAAZADACAAAaACADAAAAGAAgAQAAGQAwAgAAGgAgAwAAABgAIAEAABkAMAIAABoAIAYGAACSBAAggQIBAAAAAZICAQAAAAGTAiAAAAABlAIBAAAAAZUCAQAAAAEBGwAA1gIAIAWBAgEAAAABkgIBAAAAAZMCIAAAAAGUAgEAAAABlQIBAAAAAQEbAADYAgAwARsAANgCADAGBgAAkQQAIIECAQDVAwAhkgIBANUDACGTAiAAkAQAIZQCAQDVAwAhlQIBANUDACECAAAAGgAgGwAA2wIAIAWBAgEA1QMAIZICAQDVAwAhkwIgAJAEACGUAgEA1QMAIZUCAQDVAwAhAgAAABgAIBsAAN0CACACAAAAGAAgGwAA3QIAIAMAAAAaACAiAADWAgAgIwAA2wIAIAEAAAAaACABAAAAGAAgAwQAAI0EACAqAACPBAAgKwAAjgQAIAj-AQAAkgMAMP8BAADkAgAQgAIAAJIDADCBAgEAggMAIZICAQCCAwAhkwIgAJMDACGUAgEAggMAIZUCAQCCAwAhAwAAABgAIAEAAOMCADAnAADkAgAgAwAAABgAIAEAABkAMAIAABoAIAgMAACQAwAgEQAAkQMAIP4BAACMAwAw_wEAAOoCABCAAgAAjAMAMIECAgAAAAGCAgEAjgMAIYMCAQCPAwAhAQAAAOcCACABAAAA5wIAIAgMAACQAwAgEQAAkQMAIP4BAACMAwAw_wEAAOoCABCAAgAAjAMAMIECAgCNAwAhggIBAI4DACGDAgEAjwMAIQMMAACLBAAgEQAAjAQAIIMCAADPAwAgAwAAAOoCACABAADrAgAwAgAA5wIAIAMAAADqAgAgAQAA6wIAMAIAAOcCACADAAAA6gIAIAEAAOsCADACAADnAgAgBQwAAIkEACARAACKBAAggQICAAAAAYICAQAAAAGDAgEAAAABARsAAO8CACADgQICAAAAAYICAQAAAAGDAgEAAAABARsAAPECADABGwAA8QIAMAUMAADYAwAgEQAA2QMAIIECAgDXAwAhggIBANUDACGDAgEA1gMAIQIAAADnAgAgGwAA9AIAIAOBAgIA1wMAIYICAQDVAwAhgwIBANYDACECAAAA6gIAIBsAAPYCACACAAAA6gIAIBsAAPYCACADAAAA5wIAICIAAO8CACAjAAD0AgAgAQAAAOcCACABAAAA6gIAIAYEAADQAwAgKAAA0QMAICkAANQDACAqAADTAwAgKwAA0gMAIIMCAADPAwAgBv4BAACAAwAw_wEAAP0CABCAAgAAgAMAMIECAgCBAwAhggIBAIIDACGDAgEAgwMAIQMAAADqAgAgAQAA_AIAMCcAAP0CACADAAAA6gIAIAEAAOsCADACAADnAgAgBv4BAACAAwAw_wEAAP0CABCAAgAAgAMAMIECAgCBAwAhggIBAIIDACGDAgEAgwMAIQ0EAACIAwAgKAAAiwMAICkAAIgDACAqAACIAwAgKwAAiAMAIIQCAgAAAAGFAgIAAAAEhgICAAAABIcCAgAAAAGIAgIAAAABiQICAAAAAYoCAgAAAAGOAgIAigMAIQ4EAACIAwAgKgAAiQMAICsAAIkDACCEAgEAAAABhQIBAAAABIYCAQAAAASHAgEAAAABiAIBAAAAAYkCAQAAAAGKAgEAAAABiwIBAAAAAYwCAQAAAAGNAgEAAAABjgIBAIcDACEOBAAAhQMAICoAAIYDACArAACGAwAghAIBAAAAAYUCAQAAAAWGAgEAAAAFhwIBAAAAAYgCAQAAAAGJAgEAAAABigIBAAAAAYsCAQAAAAGMAgEAAAABjQIBAAAAAY4CAQCEAwAhDgQAAIUDACAqAACGAwAgKwAAhgMAIIQCAQAAAAGFAgEAAAAFhgIBAAAABYcCAQAAAAGIAgEAAAABiQIBAAAAAYoCAQAAAAGLAgEAAAABjAIBAAAAAY0CAQAAAAGOAgEAhAMAIQiEAgIAAAABhQICAAAABYYCAgAAAAWHAgIAAAABiAICAAAAAYkCAgAAAAGKAgIAAAABjgICAIUDACELhAIBAAAAAYUCAQAAAAWGAgEAAAAFhwIBAAAAAYgCAQAAAAGJAgEAAAABigIBAAAAAYsCAQAAAAGMAgEAAAABjQIBAAAAAY4CAQCGAwAhDgQAAIgDACAqAACJAwAgKwAAiQMAIIQCAQAAAAGFAgEAAAAEhgIBAAAABIcCAQAAAAGIAgEAAAABiQIBAAAAAYoCAQAAAAGLAgEAAAABjAIBAAAAAY0CAQAAAAGOAgEAhwMAIQiEAgIAAAABhQICAAAABIYCAgAAAASHAgIAAAABiAICAAAAAYkCAgAAAAGKAgIAAAABjgICAIgDACELhAIBAAAAAYUCAQAAAASGAgEAAAAEhwIBAAAAAYgCAQAAAAGJAgEAAAABigIBAAAAAYsCAQAAAAGMAgEAAAABjQIBAAAAAY4CAQCJAwAhDQQAAIgDACAoAACLAwAgKQAAiAMAICoAAIgDACArAACIAwAghAICAAAAAYUCAgAAAASGAgIAAAAEhwICAAAAAYgCAgAAAAGJAgIAAAABigICAAAAAY4CAgCKAwAhCIQCCAAAAAGFAggAAAAEhgIIAAAABIcCCAAAAAGIAggAAAABiQIIAAAAAYoCCAAAAAGOAggAiwMAIQgMAACQAwAgEQAAkQMAIP4BAACMAwAw_wEAAOoCABCAAgAAjAMAMIECAgCNAwAhggIBAI4DACGDAgEAjwMAIQiEAgIAAAABhQICAAAABIYCAgAAAASHAgIAAAABiAICAAAAAYkCAgAAAAGKAgIAAAABjgICAIgDACELhAIBAAAAAYUCAQAAAASGAgEAAAAEhwIBAAAAAYgCAQAAAAGJAgEAAAABigIBAAAAAYsCAQAAAAGMAgEAAAABjQIBAAAAAY4CAQCJAwAhC4QCAQAAAAGFAgEAAAAFhgIBAAAABYcCAQAAAAGIAgEAAAABiQIBAAAAAYoCAQAAAAGLAgEAAAABjAIBAAAAAY0CAQAAAAGOAgEAhgMAIQOPAgAAIAAgkAIAACAAIJECAAAgACADjwIAACsAIJACAAArACCRAgAAKwAgCP4BAACSAwAw_wEAAOQCABCAAgAAkgMAMIECAQCCAwAhkgIBAIIDACGTAiAAkwMAIZQCAQCCAwAhlQIBAIIDACEFBAAAiAMAICoAAJUDACArAACVAwAghAIgAAAAAY4CIACUAwAhBQQAAIgDACAqAACVAwAgKwAAlQMAIIQCIAAAAAGOAiAAlAMAIQKEAiAAAAABjgIgAJUDACEF_gEAAJYDADD_AQAAzgIAEIACAACWAwAwlgICAIEDACGXAgIAgQMAIQf-AQAAlwMAMP8BAAC4AgAQgAIAAJcDADCBAgIAgQMAIYICAQCCAwAhmAICAIEDACGZAgIAmAMAIQ0EAACFAwAgKAAAmgMAICkAAIUDACAqAACFAwAgKwAAhQMAIIQCAgAAAAGFAgIAAAAFhgICAAAABYcCAgAAAAGIAgIAAAABiQICAAAAAYoCAgAAAAGOAgIAmQMAIQ0EAACFAwAgKAAAmgMAICkAAIUDACAqAACFAwAgKwAAhQMAIIQCAgAAAAGFAgIAAAAFhgICAAAABYcCAgAAAAGIAgIAAAABiQICAAAAAYoCAgAAAAGOAgIAmQMAIQiEAggAAAABhQIIAAAABYYCCAAAAAWHAggAAAABiAIIAAAAAYkCCAAAAAGKAggAAAABjgIIAJoDACEG_gEAAJsDADD_AQAAoAIAEIACAACbAwAwgQICAIEDACGCAgEAggMAIZoCAgCBAwAhBwwAAJADACD-AQAAnAMAMP8BAACNAgAQgAIAAJwDADCBAgIAjQMAIYICAQCOAwAhmgICAI0DACEH_gEAAJ0DADD_AQAAhwIAEIACAACdAwAwlQIBAIIDACGbAgEAggMAIZwCQACeAwAhnQJAAJ4DACELBAAAiAMAICoAAKADACArAACgAwAghAJAAAAAAYUCQAAAAASGAkAAAAAEhwJAAAAAAYgCQAAAAAGJAkAAAAABigJAAAAAAY4CQACfAwAhCwQAAIgDACAqAACgAwAgKwAAoAMAIIQCQAAAAAGFAkAAAAAEhgJAAAAABIcCQAAAAAGIAkAAAAABiQJAAAAAAYoCQAAAAAGOAkAAnwMAIQiEAkAAAAABhQJAAAAABIYCQAAAAASHAkAAAAABiAJAAAAAAYkCQAAAAAGKAkAAAAABjgJAAKADACEJ_gEAAKEDADD_AQAA8QEAEIACAAChAwAwgQIBAIIDACGCAgEAggMAIZYCAgCBAwAhlwICAIEDACGeAgEAggMAIZ8CAgCBAwAhCf4BAACiAwAw_wEAANsBABCAAgAAogMAMIECAQCCAwAhmgIBAIIDACGcAkAAngMAIZ0CQACeAwAhoAIBAIIDACGhAkAAngMAIQn-AQAAowMAMP8BAADIAQAQgAIAAKMDADCBAgEAjgMAIZoCAQCOAwAhnAJAAKQDACGdAkAApAMAIaACAQCOAwAhoQJAAKQDACEIhAJAAAAAAYUCQAAAAASGAkAAAAAEhwJAAAAAAYgCQAAAAAGJAkAAAAABigJAAAAAAY4CQACgAwAhBf4BAAClAwAw_wEAAMIBABCAAgAApQMAMIECAgCBAwAhggIBAIIDACEGAwAApwMAIP4BAACmAwAw_wEAAAMAEIACAACmAwAwgQICAI0DACGCAgEAjgMAIQOPAgAABQAgkAIAAAUAIJECAAAFACAQ_gEAAKgDADD_AQAAqgEAEIACAACoAwAwgQIBAIIDACGVAgEAggMAIZwCQACeAwAhnQJAAJ4DACGiAgEAggMAIaMCAQCCAwAhpAIBAIMDACGlAgEAgwMAIaYCAQCDAwAhpwJAAKkDACGoAkAAqQMAIakCAQCDAwAhqgIBAIMDACELBAAAhQMAICoAAKsDACArAACrAwAghAJAAAAAAYUCQAAAAAWGAkAAAAAFhwJAAAAAAYgCQAAAAAGJAkAAAAABigJAAAAAAY4CQACqAwAhCwQAAIUDACAqAACrAwAgKwAAqwMAIIQCQAAAAAGFAkAAAAAFhgJAAAAABYcCQAAAAAGIAkAAAAABiQJAAAAAAYoCQAAAAAGOAkAAqgMAIQiEAkAAAAABhQJAAAAABYYCQAAAAAWHAkAAAAABiAJAAAAAAYkCQAAAAAGKAkAAAAABjgJAAKsDACEL_gEAAKwDADD_AQAAlAEAEIACAACsAwAwgQIBAIIDACGVAgEAggMAIZwCQACeAwAhnQJAAJ4DACGhAkAAngMAIasCAQCCAwAhrAIBAIMDACGtAgEAgwMAIQ7-AQAArQMAMP8BAAB-ABCAAgAArQMAMIECAQCCAwAhrgIBAIIDACGvAgEAggMAIbACAQCCAwAhsQIBAIIDACGyAgEAggMAIbMCAQCCAwAhtAIBAIIDACG1AiAAkwMAIbYCIACTAwAhtwIgAJMDACEJ_gEAAK4DADD_AQAAaAAQgAIAAK4DADCBAgEAggMAIZUCAQCCAwAhuAIBAIIDACG5AgEAggMAIboCAQCCAwAhuwIBAIMDACELBgAAsAMAIAoAALEDACD-AQAArwMAMP8BAAARABCAAgAArwMAMIECAQCOAwAhlQIBAI4DACG4AgEAjgMAIbkCAQCOAwAhugIBAI4DACG7AgEAjwMAIRMFAADKAwAgBwAAywMAIAgAAMwDACAJAADNAwAgCwAAzgMAIBQAAL4DACD-AQAAyQMAMP8BAAAFABCAAgAAyQMAMIECAQCOAwAhggIBAI4DACGcAkAApAMAIZ0CQACkAwAhvAIBAI4DACG9AiAAwwMAIb4CAQCPAwAhvwICALkDACHDAgAABQAgxAIAAAUAIAOPAgAAEwAgkAIAABMAIJECAAATACAL_gEAALIDADD_AQAAUAAQgAIAALIDADCBAgEAggMAIYICAQCCAwAhnAJAAJ4DACGdAkAAngMAIbwCAQCCAwAhvQIgAJMDACG-AgEAgwMAIb8CAgCYAwAhApYCAgAAAAGXAgIAAAABBxAAALUDACASAAC2AwAg_gEAALQDADD_AQAAKwAQgAIAALQDADCWAgIAjQMAIZcCAgCNAwAhDQwAAJADACAOAAC6AwAgDwAAuwMAIBMAAJEDACD-AQAAuAMAMP8BAAAlABCAAgAAuAMAMIECAgCNAwAhggIBAI4DACGYAgIAjQMAIZkCAgC5AwAhwwIAACUAIMQCAAAlACAKDAAAkAMAIBEAAJEDACD-AQAAjAMAMP8BAADqAgAQgAIAAIwDADCBAgIAjQMAIYICAQCOAwAhgwIBAI8DACHDAgAA6gIAIMQCAADqAgAgAoICAQAAAAGZAgIAAAABCwwAAJADACAOAAC6AwAgDwAAuwMAIBMAAJEDACD-AQAAuAMAMP8BAAAlABCAAgAAuAMAMIECAgCNAwAhggIBAI4DACGYAgIAjQMAIZkCAgC5AwAhCIQCAgAAAAGFAgIAAAAFhgICAAAABYcCAgAAAAGIAgIAAAABiQICAAAAAYoCAgAAAAGOAgIAhQMAIQ0MAACQAwAgDgAAugMAIA8AALsDACATAACRAwAg_gEAALgDADD_AQAAJQAQgAIAALgDADCBAgIAjQMAIYICAQCOAwAhmAICAI0DACGZAgIAuQMAIcMCAAAlACDEAgAAJQAgA48CAAAlACCQAgAAJQAgkQIAACUAIA0NAAC9AwAgEAAAtQMAIBIAALYDACAUAAC-AwAg_gEAALwDADD_AQAAIAAQgAIAALwDADCBAgEAjgMAIYICAQCOAwAhlgICAI0DACGXAgIAjQMAIZ4CAQCOAwAhnwICAI0DACEJDAAAkAMAIP4BAACcAwAw_wEAAI0CABCAAgAAnAMAMIECAgCNAwAhggIBAI4DACGaAgIAjQMAIcMCAACNAgAgxAIAAI0CACADjwIAABwAIJACAAAcACCRAgAAHAAgApUCAQAAAAGbAgEAAAABCQYAALADACAVAADBAwAg_gEAAMADADD_AQAAHAAQgAIAAMADADCVAgEAjgMAIZsCAQCOAwAhnAJAAKQDACGdAkAApAMAIQ8NAAC9AwAgEAAAtQMAIBIAALYDACAUAAC-AwAg_gEAALwDADD_AQAAIAAQgAIAALwDADCBAgEAjgMAIYICAQCOAwAhlgICAI0DACGXAgIAjQMAIZ4CAQCOAwAhnwICAI0DACHDAgAAIAAgxAIAACAAIAkGAACwAwAg_gEAAMIDADD_AQAAGAAQgAIAAMIDADCBAgEAjgMAIZICAQCOAwAhkwIgAMMDACGUAgEAjgMAIZUCAQCOAwAhAoQCIAAAAAGOAiAAlQMAIQ8JAADFAwAg_gEAAMQDADD_AQAAEwAQgAIAAMQDADCBAgEAjgMAIa4CAQCOAwAhrwIBAI4DACGwAgEAjgMAIbECAQCOAwAhsgIBAI4DACGzAgEAjgMAIbQCAQCOAwAhtQIgAMMDACG2AiAAwwMAIbcCIADDAwAhDQYAALADACAKAACxAwAg_gEAAK8DADD_AQAAEQAQgAIAAK8DADCBAgEAjgMAIZUCAQCOAwAhuAIBAI4DACG5AgEAjgMAIboCAQCOAwAhuwIBAI8DACHDAgAAEQAgxAIAABEAIBEGAACwAwAg_gEAAMYDADD_AQAADQAQgAIAAMYDADCBAgEAjgMAIZUCAQCOAwAhnAJAAKQDACGdAkAApAMAIaICAQCOAwAhowIBAI4DACGkAgEAjwMAIaUCAQCPAwAhpgIBAI8DACGnAkAAxwMAIagCQADHAwAhqQIBAI8DACGqAgEAjwMAIQiEAkAAAAABhQJAAAAABYYCQAAAAAWHAkAAAAABiAJAAAAAAYkCQAAAAAGKAkAAAAABjgJAAKsDACEMBgAAsAMAIP4BAADIAwAw_wEAAAkAEIACAADIAwAwgQIBAI4DACGVAgEAjgMAIZwCQACkAwAhnQJAAKQDACGhAkAApAMAIasCAQCOAwAhrAIBAI8DACGtAgEAjwMAIREFAADKAwAgBwAAywMAIAgAAMwDACAJAADNAwAgCwAAzgMAIBQAAL4DACD-AQAAyQMAMP8BAAAFABCAAgAAyQMAMIECAQCOAwAhggIBAI4DACGcAkAApAMAIZ0CQACkAwAhvAIBAI4DACG9AiAAwwMAIb4CAQCPAwAhvwICALkDACEIAwAApwMAIP4BAACmAwAw_wEAAAMAEIACAACmAwAwgQICAI0DACGCAgEAjgMAIcMCAAADACDEAgAAAwAgA48CAAAJACCQAgAACQAgkQIAAAkAIAOPAgAADQAgkAIAAA0AIJECAAANACANBgAAsAMAIAoAALEDACD-AQAArwMAMP8BAAARABCAAgAArwMAMIECAQCOAwAhlQIBAI4DACG4AgEAjgMAIbkCAQCOAwAhugIBAI4DACG7AgEAjwMAIcMCAAARACDEAgAAEQAgA48CAAAYACCQAgAAGAAgkQIAABgAIAAAAAAAAAHIAgEAAAABAcgCAQAAAAEFyAICAAAAAc4CAgAAAAHPAgIAAAAB0AICAAAAAdECAgAAAAELIgAA6AMAMCMAAO0DADDFAgAA6QMAMMYCAADqAwAwxwIAAOsDACDIAgAA7AMAMMkCAADsAwAwygIAAOwDADDLAgAA7AMAMMwCAADuAwAwzQIAAO8DADALIgAA2gMAMCMAAN8DADDFAgAA2wMAMMYCAADcAwAwxwIAAN0DACDIAgAA3gMAMMkCAADeAwAwygIAAN4DADDLAgAA3gMAMMwCAADgAwAwzQIAAOEDADACEAAA5wMAIJYCAgAAAAECAAAALQAgIgAA5gMAIAMAAAAtACAiAADmAwAgIwAA5AMAIAEbAAC-BgAwCBAAALUDACASAAC2AwAg_gEAALQDADD_AQAAKwAQgAIAALQDADCWAgIAjQMAIZcCAgCNAwAhwAIAALMDACACAAAALQAgGwAA5AMAIAIAAADiAwAgGwAA4wMAIAX-AQAA4QMAMP8BAADiAwAQgAIAAOEDADCWAgIAjQMAIZcCAgCNAwAhBf4BAADhAwAw_wEAAOIDABCAAgAA4QMAMJYCAgCNAwAhlwICAI0DACEBlgICANcDACECEAAA5QMAIJYCAgDXAwAhBSIAALkGACAjAAC8BgAgxQIAALoGACDGAgAAuwYAIMsCAAAoACACEAAA5wMAIJYCAgAAAAEDIgAAuQYAIMUCAAC6BgAgywIAACgAIAgNAACGBAAgEAAAhwQAIBQAAIgEACCBAgEAAAABggIBAAAAAZYCAgAAAAGeAgEAAAABnwICAAAAAQIAAAAiACAiAACFBAAgAwAAACIAICIAAIUEACAjAADyAwAgARsAALgGADANDQAAvQMAIBAAALUDACASAAC2AwAgFAAAvgMAIP4BAAC8AwAw_wEAACAAEIACAAC8AwAwgQIBAAAAAYICAQAAAAGWAgIAjQMAIZcCAgCNAwAhngIBAI4DACGfAgIAjQMAIQIAAAAiACAbAADyAwAgAgAAAPADACAbAADxAwAgCf4BAADvAwAw_wEAAPADABCAAgAA7wMAMIECAQCOAwAhggIBAI4DACGWAgIAjQMAIZcCAgCNAwAhngIBAI4DACGfAgIAjQMAIQn-AQAA7wMAMP8BAADwAwAQgAIAAO8DADCBAgEAjgMAIYICAQCOAwAhlgICAI0DACGXAgIAjQMAIZ4CAQCOAwAhnwICAI0DACEFgQIBANUDACGCAgEA1QMAIZYCAgDXAwAhngIBANUDACGfAgIA1wMAIQgNAADzAwAgEAAA9AMAIBQAAPUDACCBAgEA1QMAIYICAQDVAwAhlgICANcDACGeAgEA1QMAIZ8CAgDXAwAhBSIAAKoGACAjAAC2BgAgxQIAAKsGACDGAgAAtQYAIMsCAACKAgAgBSIAAKgGACAjAACzBgAgxQIAAKkGACDGAgAAsgYAIMsCAAAoACALIgAA9gMAMCMAAPsDADDFAgAA9wMAMMYCAAD4AwAwxwIAAPkDACDIAgAA-gMAMMkCAAD6AwAwygIAAPoDADDLAgAA-gMAMMwCAAD8AwAwzQIAAP0DADAEBgAAhAQAIJUCAQAAAAGcAkAAAAABnQJAAAAAAQIAAAAeACAiAACDBAAgAwAAAB4AICIAAIMEACAjAACBBAAgARsAALEGADAKBgAAsAMAIBUAAMEDACD-AQAAwAMAMP8BAAAcABCAAgAAwAMAMJUCAQCOAwAhmwIBAI4DACGcAkAApAMAIZ0CQACkAwAhwgIAAL8DACACAAAAHgAgGwAAgQQAIAIAAAD-AwAgGwAA_wMAIAf-AQAA_QMAMP8BAAD-AwAQgAIAAP0DADCVAgEAjgMAIZsCAQCOAwAhnAJAAKQDACGdAkAApAMAIQf-AQAA_QMAMP8BAAD-AwAQgAIAAP0DADCVAgEAjgMAIZsCAQCOAwAhnAJAAKQDACGdAkAApAMAIQOVAgEA1QMAIZwCQACABAAhnQJAAIAEACEByAJAAAAAAQQGAACCBAAglQIBANUDACGcAkAAgAQAIZ0CQACABAAhBSIAAKwGACAjAACvBgAgxQIAAK0GACDGAgAArgYAIMsCAAABACAEBgAAhAQAIJUCAQAAAAGcAkAAAAABnQJAAAAAAQMiAACsBgAgxQIAAK0GACDLAgAAAQAgCA0AAIYEACAQAACHBAAgFAAAiAQAIIECAQAAAAGCAgEAAAABlgICAAAAAZ4CAQAAAAGfAgIAAAABAyIAAKoGACDFAgAAqwYAIMsCAACKAgAgAyIAAKgGACDFAgAAqQYAIMsCAAAoACAEIgAA9gMAMMUCAAD3AwAwxwIAAPkDACDLAgAA-gMAMAQiAADoAwAwxQIAAOkDADDHAgAA6wMAIMsCAADsAwAwBCIAANoDADDFAgAA2wMAMMcCAADdAwAgywIAAN4DADAAAAAAAAHIAiAAAAABBSIAAKMGACAjAACmBgAgxQIAAKQGACDGAgAApQYAIMsCAAABACADIgAAowYAIMUCAACkBgAgywIAAAEAIAAAAAAABSIAAJ4GACAjAAChBgAgxQIAAJ8GACDGAgAAoAYAIMsCAADnAgAgAyIAAJ4GACDFAgAAnwYAIMsCAADnAgAgAAAAAAAFyAICAAAAAc4CAgAAAAHPAgIAAAAB0AICAAAAAdECAgAAAAEHIgAAkQYAICMAAJwGACDFAgAAkgYAIMYCAACbBgAgyQIAACUAIMoCAAAlACDLAgAAKAAgCyIAALgEADAjAAC9BAAwxQIAALkEADDGAgAAugQAMMcCAAC7BAAgyAIAALwEADDJAgAAvAQAMMoCAAC8BAAwywIAALwEADDMAgAAvgQAMM0CAAC_BAAwCyIAAK0EADAjAACxBAAwxQIAAK4EADDGAgAArwQAMMcCAACwBAAgyAIAAOwDADDJAgAA7AMAMMoCAADsAwAwywIAAOwDADDMAgAAsgQAMM0CAADvAwAwCyIAAKQEADAjAACoBAAwxQIAAKUEADDGAgAApgQAMMcCAACnBAAgyAIAAN4DADDJAgAA3gMAMMoCAADeAwAwywIAAN4DADDMAgAAqQQAMM0CAADhAwAwAhIAAJkEACCXAgIAAAABAgAAAC0AICIAAKwEACADAAAALQAgIgAArAQAICMAAKsEACABGwAAmgYAMAIAAAAtACAbAACrBAAgAgAAAOIDACAbAACqBAAgAZcCAgDXAwAhAhIAAJgEACCXAgIA1wMAIQISAACZBAAglwICAAAAAQgNAACGBAAgEgAAtwQAIBQAAIgEACCBAgEAAAABggIBAAAAAZcCAgAAAAGeAgEAAAABnwICAAAAAQIAAAAiACAiAAC2BAAgAwAAACIAICIAALYEACAjAAC0BAAgARsAAJkGADACAAAAIgAgGwAAtAQAIAIAAADwAwAgGwAAswQAIAWBAgEA1QMAIYICAQDVAwAhlwICANcDACGeAgEA1QMAIZ8CAgDXAwAhCA0AAPMDACASAAC1BAAgFAAA9QMAIIECAQDVAwAhggIBANUDACGXAgIA1wMAIZ4CAQDVAwAhnwICANcDACEFIgAAlAYAICMAAJcGACDFAgAAlQYAIMYCAACWBgAgywIAAOcCACAIDQAAhgQAIBIAALcEACAUAACIBAAggQIBAAAAAYICAQAAAAGXAgIAAAABngIBAAAAAZ8CAgAAAAEDIgAAlAYAIMUCAACVBgAgywIAAOcCACAGDAAAxQQAIA8AAMQEACATAADGBAAggQICAAAAAYICAQAAAAGYAgIAAAABAgAAACgAICIAAMMEACADAAAAKAAgIgAAwwQAICMAAMIEACABGwAAkwYAMAwMAACQAwAgDgAAugMAIA8AALsDACATAACRAwAg_gEAALgDADD_AQAAJQAQgAIAALgDADCBAgIAAAABggIBAI4DACGYAgIAjQMAIZkCAgC5AwAhwQIAALcDACACAAAAKAAgGwAAwgQAIAIAAADABAAgGwAAwQQAIAf-AQAAvwQAMP8BAADABAAQgAIAAL8EADCBAgIAjQMAIYICAQCOAwAhmAICAI0DACGZAgIAuQMAIQf-AQAAvwQAMP8BAADABAAQgAIAAL8EADCBAgIAjQMAIYICAQCOAwAhmAICAI0DACGZAgIAuQMAIQOBAgIA1wMAIYICAQDVAwAhmAICANcDACEGDAAAogQAIA8AAKEEACATAACjBAAggQICANcDACGCAgEA1QMAIZgCAgDXAwAhBgwAAMUEACAPAADEBAAgEwAAxgQAIIECAgAAAAGCAgEAAAABmAICAAAAAQQiAAC4BAAwxQIAALkEADDHAgAAuwQAIMsCAAC8BAAwBCIAAK0EADDFAgAArgQAMMcCAACwBAAgywIAAOwDADAEIgAApAQAMMUCAAClBAAwxwIAAKcEACDLAgAA3gMAMAMiAACRBgAgxQIAAJIGACDLAgAAKAAgAAAAAAALIgAAzgQAMCMAANIEADDFAgAAzwQAMMYCAADQBAAwxwIAANEEACDIAgAA7AMAMMkCAADsAwAwygIAAOwDADDLAgAA7AMAMMwCAADTBAAwzQIAAO8DADAIEAAAhwQAIBIAALcEACAUAACIBAAggQIBAAAAAYICAQAAAAGWAgIAAAABlwICAAAAAZ4CAQAAAAECAAAAIgAgIgAA1gQAIAMAAAAiACAiAADWBAAgIwAA1QQAIAEbAACQBgAwAgAAACIAIBsAANUEACACAAAA8AMAIBsAANQEACAFgQIBANUDACGCAgEA1QMAIZYCAgDXAwAhlwICANcDACGeAgEA1QMAIQgQAAD0AwAgEgAAtQQAIBQAAPUDACCBAgEA1QMAIYICAQDVAwAhlgICANcDACGXAgIA1wMAIZ4CAQDVAwAhCBAAAIcEACASAAC3BAAgFAAAiAQAIIECAQAAAAGCAgEAAAABlgICAAAAAZcCAgAAAAGeAgEAAAABBCIAAM4EADDFAgAAzwQAMMcCAADRBAAgywIAAOwDADAAAAAFIgAAiwYAICMAAI4GACDFAgAAjAYAIMYCAACNBgAgywIAACIAIAMiAACLBgAgxQIAAIwGACDLAgAAIgAgAAAAAAAAAAAAAAAAAAsiAADrBAAwIwAA8AQAMMUCAADsBAAwxgIAAO0EADDHAgAA7gQAIMgCAADvBAAwyQIAAO8EADDKAgAA7wQAMMsCAADvBAAwzAIAAPEEADDNAgAA8gQAMAwHAAC9BQAgCAAAvgUAIAkAAL8FACALAADABQAgFAAAwQUAIIECAQAAAAGCAgEAAAABnAJAAAAAAZ0CQAAAAAG8AgEAAAABvQIgAAAAAb4CAQAAAAECAAAAAQAgIgAAvAUAIAMAAAABACAiAAC8BQAgIwAA9QQAIAEbAACKBgAwEQUAAMoDACAHAADLAwAgCAAAzAMAIAkAAM0DACALAADOAwAgFAAAvgMAIP4BAADJAwAw_wEAAAUAEIACAADJAwAwgQIBAAAAAYICAQCOAwAhnAJAAKQDACGdAkAApAMAIbwCAQAAAAG9AiAAwwMAIb4CAQCPAwAhvwICALkDACECAAAAAQAgGwAA9QQAIAIAAADzBAAgGwAA9AQAIAv-AQAA8gQAMP8BAADzBAAQgAIAAPIEADCBAgEAjgMAIYICAQCOAwAhnAJAAKQDACGdAkAApAMAIbwCAQCOAwAhvQIgAMMDACG-AgEAjwMAIb8CAgC5AwAhC_4BAADyBAAw_wEAAPMEABCAAgAA8gQAMIECAQCOAwAhggIBAI4DACGcAkAApAMAIZ0CQACkAwAhvAIBAI4DACG9AiAAwwMAIb4CAQCPAwAhvwICALkDACEHgQIBANUDACGCAgEA1QMAIZwCQACABAAhnQJAAIAEACG8AgEA1QMAIb0CIACQBAAhvgIBANYDACEMBwAA9gQAIAgAAPcEACAJAAD4BAAgCwAA-QQAIBQAAPoEACCBAgEA1QMAIYICAQDVAwAhnAJAAIAEACGdAkAAgAQAIbwCAQDVAwAhvQIgAJAEACG-AgEA1gMAIQsiAACwBQAwIwAAtQUAMMUCAACxBQAwxgIAALIFADDHAgAAswUAIMgCAAC0BQAwyQIAALQFADDKAgAAtAUAMMsCAAC0BQAwzAIAALYFADDNAgAAtwUAMAsiAACjBQAwIwAAqAUAMMUCAACkBQAwxgIAAKUFADDHAgAApgUAIMgCAACnBQAwyQIAAKcFADDKAgAApwUAMMsCAACnBQAwzAIAAKkFADDNAgAAqgUAMAciAACQBQAgIwAAkwUAIMUCAACRBQAgxgIAAJIFACDJAgAAEQAgygIAABEAIMsCAABTACALIgAAhAUAMCMAAIkFADDFAgAAhQUAMMYCAACGBQAwxwIAAIcFACDIAgAAiAUAMMkCAACIBQAwygIAAIgFADDLAgAAiAUAMMwCAACKBQAwzQIAAIsFADALIgAA-wQAMCMAAP8EADDFAgAA_AQAMMYCAAD9BAAwxwIAAP4EACDIAgAA-gMAMMkCAAD6AwAwygIAAPoDADDLAgAA-gMAMMwCAACABQAwzQIAAP0DADAEFQAA3AQAIJsCAQAAAAGcAkAAAAABnQJAAAAAAQIAAAAeACAiAACDBQAgAwAAAB4AICIAAIMFACAjAACCBQAgARsAAIkGADACAAAAHgAgGwAAggUAIAIAAAD-AwAgGwAAgQUAIAObAgEA1QMAIZwCQACABAAhnQJAAIAEACEEFQAA2wQAIJsCAQDVAwAhnAJAAIAEACGdAkAAgAQAIQQVAADcBAAgmwIBAAAAAZwCQAAAAAGdAkAAAAABBIECAQAAAAGSAgEAAAABkwIgAAAAAZQCAQAAAAECAAAAGgAgIgAAjwUAIAMAAAAaACAiAACPBQAgIwAAjgUAIAEbAACIBgAwCQYAALADACD-AQAAwgMAMP8BAAAYABCAAgAAwgMAMIECAQAAAAGSAgEAAAABkwIgAMMDACGUAgEAjgMAIZUCAQCOAwAhAgAAABoAIBsAAI4FACACAAAAjAUAIBsAAI0FACAI_gEAAIsFADD_AQAAjAUAEIACAACLBQAwgQIBAI4DACGSAgEAjgMAIZMCIADDAwAhlAIBAI4DACGVAgEAjgMAIQj-AQAAiwUAMP8BAACMBQAQgAIAAIsFADCBAgEAjgMAIZICAQCOAwAhkwIgAMMDACGUAgEAjgMAIZUCAQCOAwAhBIECAQDVAwAhkgIBANUDACGTAiAAkAQAIZQCAQDVAwAhBIECAQDVAwAhkgIBANUDACGTAiAAkAQAIZQCAQDVAwAhBIECAQAAAAGSAgEAAAABkwIgAAAAAZQCAQAAAAEGCgAAogUAIIECAQAAAAG4AgEAAAABuQIBAAAAAboCAQAAAAG7AgEAAAABAgAAAFMAICIAAJAFACADAAAAEQAgIgAAkAUAICMAAJQFACAIAAAAEQAgCgAAlQUAIBsAAJQFACCBAgEA1QMAIbgCAQDVAwAhuQIBANUDACG6AgEA1QMAIbsCAQDWAwAhBgoAAJUFACCBAgEA1QMAIbgCAQDVAwAhuQIBANUDACG6AgEA1QMAIbsCAQDWAwAhCyIAAJYFADAjAACbBQAwxQIAAJcFADDGAgAAmAUAMMcCAACZBQAgyAIAAJoFADDJAgAAmgUAMMoCAACaBQAwywIAAJoFADDMAgAAnAUAMM0CAACdBQAwCoECAQAAAAGvAgEAAAABsAIBAAAAAbECAQAAAAGyAgEAAAABswIBAAAAAbQCAQAAAAG1AiAAAAABtgIgAAAAAbcCIAAAAAECAAAAFQAgIgAAoQUAIAMAAAAVACAiAAChBQAgIwAAoAUAIAEbAACHBgAwDwkAAMUDACD-AQAAxAMAMP8BAAATABCAAgAAxAMAMIECAQAAAAGuAgEAjgMAIa8CAQCOAwAhsAIBAI4DACGxAgEAjgMAIbICAQCOAwAhswIBAI4DACG0AgEAjgMAIbUCIADDAwAhtgIgAMMDACG3AiAAwwMAIQIAAAAVACAbAACgBQAgAgAAAJ4FACAbAACfBQAgDv4BAACdBQAw_wEAAJ4FABCAAgAAnQUAMIECAQCOAwAhrgIBAI4DACGvAgEAjgMAIbACAQCOAwAhsQIBAI4DACGyAgEAjgMAIbMCAQCOAwAhtAIBAI4DACG1AiAAwwMAIbYCIADDAwAhtwIgAMMDACEO_gEAAJ0FADD_AQAAngUAEIACAACdBQAwgQIBAI4DACGuAgEAjgMAIa8CAQCOAwAhsAIBAI4DACGxAgEAjgMAIbICAQCOAwAhswIBAI4DACG0AgEAjgMAIbUCIADDAwAhtgIgAMMDACG3AiAAwwMAIQqBAgEA1QMAIa8CAQDVAwAhsAIBANUDACGxAgEA1QMAIbICAQDVAwAhswIBANUDACG0AgEA1QMAIbUCIACQBAAhtgIgAJAEACG3AiAAkAQAIQqBAgEA1QMAIa8CAQDVAwAhsAIBANUDACGxAgEA1QMAIbICAQDVAwAhswIBANUDACG0AgEA1QMAIbUCIACQBAAhtgIgAJAEACG3AiAAkAQAIQqBAgEAAAABrwIBAAAAAbACAQAAAAGxAgEAAAABsgIBAAAAAbMCAQAAAAG0AgEAAAABtQIgAAAAAbYCIAAAAAG3AiAAAAABBCIAAJYFADDFAgAAlwUAMMcCAACZBQAgywIAAJoFADAMgQIBAAAAAZwCQAAAAAGdAkAAAAABogIBAAAAAaMCAQAAAAGkAgEAAAABpQIBAAAAAaYCAQAAAAGnAkAAAAABqAJAAAAAAakCAQAAAAGqAgEAAAABAgAAAA8AICIAAK8FACADAAAADwAgIgAArwUAICMAAK4FACABGwAAhgYAMBEGAACwAwAg_gEAAMYDADD_AQAADQAQgAIAAMYDADCBAgEAAAABlQIBAI4DACGcAkAApAMAIZ0CQACkAwAhogIBAI4DACGjAgEAjgMAIaQCAQCPAwAhpQIBAI8DACGmAgEAjwMAIacCQADHAwAhqAJAAMcDACGpAgEAjwMAIaoCAQCPAwAhAgAAAA8AIBsAAK4FACACAAAAqwUAIBsAAKwFACAQ_gEAAKoFADD_AQAAqwUAEIACAACqBQAwgQIBAI4DACGVAgEAjgMAIZwCQACkAwAhnQJAAKQDACGiAgEAjgMAIaMCAQCOAwAhpAIBAI8DACGlAgEAjwMAIaYCAQCPAwAhpwJAAMcDACGoAkAAxwMAIakCAQCPAwAhqgIBAI8DACEQ_gEAAKoFADD_AQAAqwUAEIACAACqBQAwgQIBAI4DACGVAgEAjgMAIZwCQACkAwAhnQJAAKQDACGiAgEAjgMAIaMCAQCOAwAhpAIBAI8DACGlAgEAjwMAIaYCAQCPAwAhpwJAAMcDACGoAkAAxwMAIakCAQCPAwAhqgIBAI8DACEMgQIBANUDACGcAkAAgAQAIZ0CQACABAAhogIBANUDACGjAgEA1QMAIaQCAQDWAwAhpQIBANYDACGmAgEA1gMAIacCQACtBQAhqAJAAK0FACGpAgEA1gMAIaoCAQDWAwAhAcgCQAAAAAEMgQIBANUDACGcAkAAgAQAIZ0CQACABAAhogIBANUDACGjAgEA1QMAIaQCAQDWAwAhpQIBANYDACGmAgEA1gMAIacCQACtBQAhqAJAAK0FACGpAgEA1gMAIaoCAQDWAwAhDIECAQAAAAGcAkAAAAABnQJAAAAAAaICAQAAAAGjAgEAAAABpAIBAAAAAaUCAQAAAAGmAgEAAAABpwJAAAAAAagCQAAAAAGpAgEAAAABqgIBAAAAAQeBAgEAAAABnAJAAAAAAZ0CQAAAAAGhAkAAAAABqwIBAAAAAawCAQAAAAGtAgEAAAABAgAAAAsAICIAALsFACADAAAACwAgIgAAuwUAICMAALoFACABGwAAhQYAMAwGAACwAwAg_gEAAMgDADD_AQAACQAQgAIAAMgDADCBAgEAAAABlQIBAI4DACGcAkAApAMAIZ0CQACkAwAhoQJAAKQDACGrAgEAAAABrAIBAI8DACGtAgEAjwMAIQIAAAALACAbAAC6BQAgAgAAALgFACAbAAC5BQAgC_4BAAC3BQAw_wEAALgFABCAAgAAtwUAMIECAQCOAwAhlQIBAI4DACGcAkAApAMAIZ0CQACkAwAhoQJAAKQDACGrAgEAjgMAIawCAQCPAwAhrQIBAI8DACEL_gEAALcFADD_AQAAuAUAEIACAAC3BQAwgQIBAI4DACGVAgEAjgMAIZwCQACkAwAhnQJAAKQDACGhAkAApAMAIasCAQCOAwAhrAIBAI8DACGtAgEAjwMAIQeBAgEA1QMAIZwCQACABAAhnQJAAIAEACGhAkAAgAQAIasCAQDVAwAhrAIBANYDACGtAgEA1gMAIQeBAgEA1QMAIZwCQACABAAhnQJAAIAEACGhAkAAgAQAIasCAQDVAwAhrAIBANYDACGtAgEA1gMAIQeBAgEAAAABnAJAAAAAAZ0CQAAAAAGhAkAAAAABqwIBAAAAAawCAQAAAAGtAgEAAAABDAcAAL0FACAIAAC-BQAgCQAAvwUAIAsAAMAFACAUAADBBQAggQIBAAAAAYICAQAAAAGcAkAAAAABnQJAAAAAAbwCAQAAAAG9AiAAAAABvgIBAAAAAQQiAACwBQAwxQIAALEFADDHAgAAswUAIMsCAAC0BQAwBCIAAKMFADDFAgAApAUAMMcCAACmBQAgywIAAKcFADADIgAAkAUAIMUCAACRBQAgywIAAFMAIAQiAACEBQAwxQIAAIUFADDHAgAAhwUAIMsCAACIBQAwBCIAAPsEADDFAgAA_AQAMMcCAAD-BAAgywIAAPoDADAEIgAA6wQAMMUCAADsBAAwxwIAAO4EACDLAgAA7wQAMAAAAAAFIgAAgAYAICMAAIMGACDFAgAAgQYAIMYCAACCBgAgywIAAAEAIAMiAACABgAgxQIAAIEGACDLAgAAAQAgAAAABSIAAPsFACAjAAD-BQAgxQIAAPwFACDGAgAA_QUAIMsCAAABACADIgAA-wUAIMUCAAD8BQAgywIAAAEAIAAAAAUiAAD2BQAgIwAA-QUAIMUCAAD3BQAgxgIAAPgFACDLAgAAUwAgAyIAAPYFACDFAgAA9wUAIMsCAABTACAAAAAFIgAA8QUAICMAAPQFACDFAgAA8gUAIMYCAADzBQAgywIAAAEAIAMiAADxBQAgxQIAAPIFACDLAgAAAQAgCAUAAOgFACAHAADpBQAgCAAA6gUAIAkAAOcFACALAADrBQAgFAAA5QUAIL4CAADPAwAgvwIAAM8DACAAAAAAAAAHIgAA7AUAICMAAO8FACDFAgAA7QUAIMYCAADuBQAgyQIAAAMAIMoCAAADACDLAgAArQEAIAMiAADsBQAgxQIAAO0FACDLAgAArQEAIAUMAACLBAAgDgAA4QUAIA8AAOMFACATAACMBAAgmQIAAM8DACADDAAAiwQAIBEAAIwEACCDAgAAzwMAIAABDAAAiwQAIAAEDQAA5AUAIBAAAOEFACASAADiBQAgFAAA5QUAIAMGAADYBQAgCgAA2QUAILsCAADPAwAgAQMAAMMFACAAAAACgQICAAAAAYICAQAAAAECAAAArQEAICIAAOwFACADAAAAAwAgIgAA7AUAICMAAPAFACAEAAAAAwAgGwAA8AUAIIECAgDXAwAhggIBANUDACECgQICANcDACGCAgEA1QMAIQ0FAADgBQAgBwAAvQUAIAgAAL4FACALAADABQAgFAAAwQUAIIECAQAAAAGCAgEAAAABnAJAAAAAAZ0CQAAAAAG8AgEAAAABvQIgAAAAAb4CAQAAAAG_AgIAAAABAgAAAAEAICIAAPEFACADAAAABQAgIgAA8QUAICMAAPUFACAPAAAABQAgBQAA3wUAIAcAAPYEACAIAAD3BAAgCwAA-QQAIBQAAPoEACAbAAD1BQAggQIBANUDACGCAgEA1QMAIZwCQACABAAhnQJAAIAEACG8AgEA1QMAIb0CIACQBAAhvgIBANYDACG_AgIAnwQAIQ0FAADfBQAgBwAA9gQAIAgAAPcEACALAAD5BAAgFAAA-gQAIIECAQDVAwAhggIBANUDACGcAkAAgAQAIZ0CQACABAAhvAIBANUDACG9AiAAkAQAIb4CAQDWAwAhvwICAJ8EACEHBgAA1wUAIIECAQAAAAGVAgEAAAABuAIBAAAAAbkCAQAAAAG6AgEAAAABuwIBAAAAAQIAAABTACAiAAD2BQAgAwAAABEAICIAAPYFACAjAAD6BQAgCQAAABEAIAYAANYFACAbAAD6BQAggQIBANUDACGVAgEA1QMAIbgCAQDVAwAhuQIBANUDACG6AgEA1QMAIbsCAQDWAwAhBwYAANYFACCBAgEA1QMAIZUCAQDVAwAhuAIBANUDACG5AgEA1QMAIboCAQDVAwAhuwIBANYDACENBQAA4AUAIAgAAL4FACAJAAC_BQAgCwAAwAUAIBQAAMEFACCBAgEAAAABggIBAAAAAZwCQAAAAAGdAkAAAAABvAIBAAAAAb0CIAAAAAG-AgEAAAABvwICAAAAAQIAAAABACAiAAD7BQAgAwAAAAUAICIAAPsFACAjAAD_BQAgDwAAAAUAIAUAAN8FACAIAAD3BAAgCQAA-AQAIAsAAPkEACAUAAD6BAAgGwAA_wUAIIECAQDVAwAhggIBANUDACGcAkAAgAQAIZ0CQACABAAhvAIBANUDACG9AiAAkAQAIb4CAQDWAwAhvwICAJ8EACENBQAA3wUAIAgAAPcEACAJAAD4BAAgCwAA-QQAIBQAAPoEACCBAgEA1QMAIYICAQDVAwAhnAJAAIAEACGdAkAAgAQAIbwCAQDVAwAhvQIgAJAEACG-AgEA1gMAIb8CAgCfBAAhDQUAAOAFACAHAAC9BQAgCQAAvwUAIAsAAMAFACAUAADBBQAggQIBAAAAAYICAQAAAAGcAkAAAAABnQJAAAAAAbwCAQAAAAG9AiAAAAABvgIBAAAAAb8CAgAAAAECAAAAAQAgIgAAgAYAIAMAAAAFACAiAACABgAgIwAAhAYAIA8AAAAFACAFAADfBQAgBwAA9gQAIAkAAPgEACALAAD5BAAgFAAA-gQAIBsAAIQGACCBAgEA1QMAIYICAQDVAwAhnAJAAIAEACGdAkAAgAQAIbwCAQDVAwAhvQIgAJAEACG-AgEA1gMAIb8CAgCfBAAhDQUAAN8FACAHAAD2BAAgCQAA-AQAIAsAAPkEACAUAAD6BAAggQIBANUDACGCAgEA1QMAIZwCQACABAAhnQJAAIAEACG8AgEA1QMAIb0CIACQBAAhvgIBANYDACG_AgIAnwQAIQeBAgEAAAABnAJAAAAAAZ0CQAAAAAGhAkAAAAABqwIBAAAAAawCAQAAAAGtAgEAAAABDIECAQAAAAGcAkAAAAABnQJAAAAAAaICAQAAAAGjAgEAAAABpAIBAAAAAaUCAQAAAAGmAgEAAAABpwJAAAAAAagCQAAAAAGpAgEAAAABqgIBAAAAAQqBAgEAAAABrwIBAAAAAbACAQAAAAGxAgEAAAABsgIBAAAAAbMCAQAAAAG0AgEAAAABtQIgAAAAAbYCIAAAAAG3AiAAAAABBIECAQAAAAGSAgEAAAABkwIgAAAAAZQCAQAAAAEDmwIBAAAAAZwCQAAAAAGdAkAAAAABB4ECAQAAAAGCAgEAAAABnAJAAAAAAZ0CQAAAAAG8AgEAAAABvQIgAAAAAb4CAQAAAAEJDQAAhgQAIBAAAIcEACASAAC3BAAggQIBAAAAAYICAQAAAAGWAgIAAAABlwICAAAAAZ4CAQAAAAGfAgIAAAABAgAAACIAICIAAIsGACADAAAAIAAgIgAAiwYAICMAAI8GACALAAAAIAAgDQAA8wMAIBAAAPQDACASAAC1BAAgGwAAjwYAIIECAQDVAwAhggIBANUDACGWAgIA1wMAIZcCAgDXAwAhngIBANUDACGfAgIA1wMAIQkNAADzAwAgEAAA9AMAIBIAALUEACCBAgEA1QMAIYICAQDVAwAhlgICANcDACGXAgIA1wMAIZ4CAQDVAwAhnwICANcDACEFgQIBAAAAAYICAQAAAAGWAgIAAAABlwICAAAAAZ4CAQAAAAEHDAAAxQQAIA4AAMcEACATAADGBAAggQICAAAAAYICAQAAAAGYAgIAAAABmQICAAAAAQIAAAAoACAiAACRBgAgA4ECAgAAAAGCAgEAAAABmAICAAAAAQQRAACKBAAggQICAAAAAYICAQAAAAGDAgEAAAABAgAAAOcCACAiAACUBgAgAwAAAOoCACAiAACUBgAgIwAAmAYAIAYAAADqAgAgEQAA2QMAIBsAAJgGACCBAgIA1wMAIYICAQDVAwAhgwIBANYDACEEEQAA2QMAIIECAgDXAwAhggIBANUDACGDAgEA1gMAIQWBAgEAAAABggIBAAAAAZcCAgAAAAGeAgEAAAABnwICAAAAAQGXAgIAAAABAwAAACUAICIAAJEGACAjAACdBgAgCQAAACUAIAwAAKIEACAOAACgBAAgEwAAowQAIBsAAJ0GACCBAgIA1wMAIYICAQDVAwAhmAICANcDACGZAgIAnwQAIQcMAACiBAAgDgAAoAQAIBMAAKMEACCBAgIA1wMAIYICAQDVAwAhmAICANcDACGZAgIAnwQAIQQMAACJBAAggQICAAAAAYICAQAAAAGDAgEAAAABAgAAAOcCACAiAACeBgAgAwAAAOoCACAiAACeBgAgIwAAogYAIAYAAADqAgAgDAAA2AMAIBsAAKIGACCBAgIA1wMAIYICAQDVAwAhgwIBANYDACEEDAAA2AMAIIECAgDXAwAhggIBANUDACGDAgEA1gMAIQ0FAADgBQAgBwAAvQUAIAgAAL4FACAJAAC_BQAgFAAAwQUAIIECAQAAAAGCAgEAAAABnAJAAAAAAZ0CQAAAAAG8AgEAAAABvQIgAAAAAb4CAQAAAAG_AgIAAAABAgAAAAEAICIAAKMGACADAAAABQAgIgAAowYAICMAAKcGACAPAAAABQAgBQAA3wUAIAcAAPYEACAIAAD3BAAgCQAA-AQAIBQAAPoEACAbAACnBgAggQIBANUDACGCAgEA1QMAIZwCQACABAAhnQJAAIAEACG8AgEA1QMAIb0CIACQBAAhvgIBANYDACG_AgIAnwQAIQ0FAADfBQAgBwAA9gQAIAgAAPcEACAJAAD4BAAgFAAA-gQAIIECAQDVAwAhggIBANUDACGcAkAAgAQAIZ0CQACABAAhvAIBANUDACG9AiAAkAQAIb4CAQDWAwAhvwICAJ8EACEHDgAAxwQAIA8AAMQEACATAADGBAAggQICAAAAAYICAQAAAAGYAgIAAAABmQICAAAAAQIAAAAoACAiAACoBgAgA4ECAgAAAAGCAgEAAAABmgICAAAAAQIAAACKAgAgIgAAqgYAIA0FAADgBQAgBwAAvQUAIAgAAL4FACAJAAC_BQAgCwAAwAUAIIECAQAAAAGCAgEAAAABnAJAAAAAAZ0CQAAAAAG8AgEAAAABvQIgAAAAAb4CAQAAAAG_AgIAAAABAgAAAAEAICIAAKwGACADAAAABQAgIgAArAYAICMAALAGACAPAAAABQAgBQAA3wUAIAcAAPYEACAIAAD3BAAgCQAA-AQAIAsAAPkEACAbAACwBgAggQIBANUDACGCAgEA1QMAIZwCQACABAAhnQJAAIAEACG8AgEA1QMAIb0CIACQBAAhvgIBANYDACG_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_xwFEgAHKAUSBAcsBRIIBzAFEgwHOAUSEAdABFYUB0QFFhgHTAUSHAdUBFYgB1gFGiQHXAUSKAdgBRIsB2QEVjAHcAUeNAd0BS44B3gELjwHfAQuQAeABC5EB4QELkgHiAQuTAeQBC5QB5gEVlQHnAUyWAekBC5cB6wEVmAHsAU2ZAe0BC5oB7gELmwHvARWcAfIBTp0B8wFUngH0AQqfAfUBCqAB9gEKoQH3AQqiAfgBCqMB-gEKpAH8ARWlAf0BVaYB_wEKpwGBAhWoAYICVqkBgwIKqgGEAgqrAYUCFawBiAJXrQGJAluuAYsCDK8BjAIMsAGPAgyxAZACDLIBkQIMswGTAgy0AZUCFbUBlgJctgGYAgy3AZoCFbgBmwJduQGcAgy6AZ0CDLsBngIVvAGhAl69AaICZL4BowIOvwGkAg7AAaUCDsEBpgIOwgGnAg7DAakCDsQBqwIVxQGsAmXGAa8CDscBsQIVyAGyAmbJAbQCDsoBtQIOywG2AhXMAbkCZ80BugJtzgG7Ag_PAbwCD9ABvQIP0QG-Ag_SAb8CD9MBwQIP1AHDAhXVAcQCbtYBxgIP1wHIAhXYAckCb9kBygIP2gHLAg_bAcwCFdwBzwJw3QHQAnbeAdECCd8B0gIJ4AHTAgnhAdQCCeIB1QIJ4wHXAgnkAdkCFeUB2gJ35gHcAgnnAd4CFegB3wJ46QHgAgnqAeECCesB4gIV7AHlAnntAeYCfe4B6AIQ7wHpAhDwAewCEPEB7QIQ8gHuAhDzAfACEPQB8gIV9QHzAn72AfUCEPcB9wIV-AH4An_5AfkCEPoB-gIQ-wH7AhX8Af4CgAH9Af8ChgE" + strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"users\",\"_count\",\"role\",\"user\",\"sessions\",\"accounts\",\"profile\",\"addresses\",\"licenseKeys\",\"proclamations\",\"solfeggioFrequency\",\"parent\",\"children\",\"category\",\"categoryLevels\",\"subscriptionLevel\",\"subscriptionLevels\",\"userProclamations\",\"proclamation\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"data\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"create\",\"update\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"User.groupBy\",\"User.aggregate\",\"Profile.findUnique\",\"Profile.findUniqueOrThrow\",\"Profile.findFirst\",\"Profile.findFirstOrThrow\",\"Profile.findMany\",\"Profile.createOne\",\"Profile.createMany\",\"Profile.createManyAndReturn\",\"Profile.updateOne\",\"Profile.updateMany\",\"Profile.updateManyAndReturn\",\"Profile.upsertOne\",\"Profile.deleteOne\",\"Profile.deleteMany\",\"Profile.groupBy\",\"Profile.aggregate\",\"Address.findUnique\",\"Address.findUniqueOrThrow\",\"Address.findFirst\",\"Address.findFirstOrThrow\",\"Address.findMany\",\"Address.createOne\",\"Address.createMany\",\"Address.createManyAndReturn\",\"Address.updateOne\",\"Address.updateMany\",\"Address.updateManyAndReturn\",\"Address.upsertOne\",\"Address.deleteOne\",\"Address.deleteMany\",\"Address.groupBy\",\"Address.aggregate\",\"Session.findUnique\",\"Session.findUniqueOrThrow\",\"Session.findFirst\",\"Session.findFirstOrThrow\",\"Session.findMany\",\"Session.createOne\",\"Session.createMany\",\"Session.createManyAndReturn\",\"Session.updateOne\",\"Session.updateMany\",\"Session.updateManyAndReturn\",\"Session.upsertOne\",\"Session.deleteOne\",\"Session.deleteMany\",\"Session.groupBy\",\"Session.aggregate\",\"Account.findUnique\",\"Account.findUniqueOrThrow\",\"Account.findFirst\",\"Account.findFirstOrThrow\",\"Account.findMany\",\"Account.createOne\",\"Account.createMany\",\"Account.createManyAndReturn\",\"Account.updateOne\",\"Account.updateMany\",\"Account.updateManyAndReturn\",\"Account.upsertOne\",\"Account.deleteOne\",\"Account.deleteMany\",\"Account.groupBy\",\"Account.aggregate\",\"UserRole.findUnique\",\"UserRole.findUniqueOrThrow\",\"UserRole.findFirst\",\"UserRole.findFirstOrThrow\",\"UserRole.findMany\",\"UserRole.createOne\",\"UserRole.createMany\",\"UserRole.createManyAndReturn\",\"UserRole.updateOne\",\"UserRole.updateMany\",\"UserRole.updateManyAndReturn\",\"UserRole.upsertOne\",\"UserRole.deleteOne\",\"UserRole.deleteMany\",\"UserRole.groupBy\",\"UserRole.aggregate\",\"Verification.findUnique\",\"Verification.findUniqueOrThrow\",\"Verification.findFirst\",\"Verification.findFirstOrThrow\",\"Verification.findMany\",\"Verification.createOne\",\"Verification.createMany\",\"Verification.createManyAndReturn\",\"Verification.updateOne\",\"Verification.updateMany\",\"Verification.updateManyAndReturn\",\"Verification.upsertOne\",\"Verification.deleteOne\",\"Verification.deleteMany\",\"Verification.groupBy\",\"Verification.aggregate\",\"Proclamation.findUnique\",\"Proclamation.findUniqueOrThrow\",\"Proclamation.findFirst\",\"Proclamation.findFirstOrThrow\",\"Proclamation.findMany\",\"Proclamation.createOne\",\"Proclamation.createMany\",\"Proclamation.createManyAndReturn\",\"Proclamation.updateOne\",\"Proclamation.updateMany\",\"Proclamation.updateManyAndReturn\",\"Proclamation.upsertOne\",\"Proclamation.deleteOne\",\"Proclamation.deleteMany\",\"Proclamation.groupBy\",\"Proclamation.aggregate\",\"UserProclamations.findUnique\",\"UserProclamations.findUniqueOrThrow\",\"UserProclamations.findFirst\",\"UserProclamations.findFirstOrThrow\",\"UserProclamations.findMany\",\"UserProclamations.createOne\",\"UserProclamations.createMany\",\"UserProclamations.createManyAndReturn\",\"UserProclamations.updateOne\",\"UserProclamations.updateMany\",\"UserProclamations.updateManyAndReturn\",\"UserProclamations.upsertOne\",\"UserProclamations.deleteOne\",\"UserProclamations.deleteMany\",\"UserProclamations.groupBy\",\"UserProclamations.aggregate\",\"SolfeggioFrequency.findUnique\",\"SolfeggioFrequency.findUniqueOrThrow\",\"SolfeggioFrequency.findFirst\",\"SolfeggioFrequency.findFirstOrThrow\",\"SolfeggioFrequency.findMany\",\"SolfeggioFrequency.createOne\",\"SolfeggioFrequency.createMany\",\"SolfeggioFrequency.createManyAndReturn\",\"SolfeggioFrequency.updateOne\",\"SolfeggioFrequency.updateMany\",\"SolfeggioFrequency.updateManyAndReturn\",\"SolfeggioFrequency.upsertOne\",\"SolfeggioFrequency.deleteOne\",\"SolfeggioFrequency.deleteMany\",\"SolfeggioFrequency.groupBy\",\"SolfeggioFrequency.aggregate\",\"ProclamationCategory.findUnique\",\"ProclamationCategory.findUniqueOrThrow\",\"ProclamationCategory.findFirst\",\"ProclamationCategory.findFirstOrThrow\",\"ProclamationCategory.findMany\",\"ProclamationCategory.createOne\",\"ProclamationCategory.createMany\",\"ProclamationCategory.createManyAndReturn\",\"ProclamationCategory.updateOne\",\"ProclamationCategory.updateMany\",\"ProclamationCategory.updateManyAndReturn\",\"ProclamationCategory.upsertOne\",\"ProclamationCategory.deleteOne\",\"ProclamationCategory.deleteMany\",\"ProclamationCategory.groupBy\",\"ProclamationCategory.aggregate\",\"ProclamationCategorySubscriptionLevel.findUnique\",\"ProclamationCategorySubscriptionLevel.findUniqueOrThrow\",\"ProclamationCategorySubscriptionLevel.findFirst\",\"ProclamationCategorySubscriptionLevel.findFirstOrThrow\",\"ProclamationCategorySubscriptionLevel.findMany\",\"ProclamationCategorySubscriptionLevel.createOne\",\"ProclamationCategorySubscriptionLevel.createMany\",\"ProclamationCategorySubscriptionLevel.createManyAndReturn\",\"ProclamationCategorySubscriptionLevel.updateOne\",\"ProclamationCategorySubscriptionLevel.updateMany\",\"ProclamationCategorySubscriptionLevel.updateManyAndReturn\",\"ProclamationCategorySubscriptionLevel.upsertOne\",\"ProclamationCategorySubscriptionLevel.deleteOne\",\"ProclamationCategorySubscriptionLevel.deleteMany\",\"ProclamationCategorySubscriptionLevel.groupBy\",\"ProclamationCategorySubscriptionLevel.aggregate\",\"LicenseKey.findUnique\",\"LicenseKey.findUniqueOrThrow\",\"LicenseKey.findFirst\",\"LicenseKey.findFirstOrThrow\",\"LicenseKey.findMany\",\"LicenseKey.createOne\",\"LicenseKey.createMany\",\"LicenseKey.createManyAndReturn\",\"LicenseKey.updateOne\",\"LicenseKey.updateMany\",\"LicenseKey.updateManyAndReturn\",\"LicenseKey.upsertOne\",\"LicenseKey.deleteOne\",\"LicenseKey.deleteMany\",\"LicenseKey.groupBy\",\"LicenseKey.aggregate\",\"ApiKey.findUnique\",\"ApiKey.findUniqueOrThrow\",\"ApiKey.findFirst\",\"ApiKey.findFirstOrThrow\",\"ApiKey.findMany\",\"ApiKey.createOne\",\"ApiKey.createMany\",\"ApiKey.createManyAndReturn\",\"ApiKey.updateOne\",\"ApiKey.updateMany\",\"ApiKey.updateManyAndReturn\",\"ApiKey.upsertOne\",\"ApiKey.deleteOne\",\"ApiKey.deleteMany\",\"ApiKey.groupBy\",\"ApiKey.aggregate\",\"SubscriptionLevel.findUnique\",\"SubscriptionLevel.findUniqueOrThrow\",\"SubscriptionLevel.findFirst\",\"SubscriptionLevel.findFirstOrThrow\",\"SubscriptionLevel.findMany\",\"SubscriptionLevel.createOne\",\"SubscriptionLevel.createMany\",\"SubscriptionLevel.createManyAndReturn\",\"SubscriptionLevel.updateOne\",\"SubscriptionLevel.updateMany\",\"SubscriptionLevel.updateManyAndReturn\",\"SubscriptionLevel.upsertOne\",\"SubscriptionLevel.deleteOne\",\"SubscriptionLevel.deleteMany\",\"SubscriptionLevel.groupBy\",\"SubscriptionLevel.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"name\",\"description\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"contains\",\"startsWith\",\"endsWith\",\"not\",\"every\",\"some\",\"none\",\"keyPrefix\",\"keyHash\",\"createdAt\",\"expiresAt\",\"revokedAt\",\"key\",\"active\",\"level\",\"userId\",\"categoryId\",\"subscriptionLevelId\",\"sortOrder\",\"parentId\",\"value\",\"proclamationId\",\"updatedAt\",\"content\",\"solfeggioFrequencyId\",\"identifier\",\"accountId\",\"providerId\",\"accessToken\",\"refreshToken\",\"idToken\",\"accessTokenExpiresAt\",\"refreshTokenExpiresAt\",\"scope\",\"password\",\"token\",\"ipAddress\",\"userAgent\",\"profileId\",\"street\",\"city\",\"state\",\"postalCode\",\"country\",\"type\",\"isDefaultMailing\",\"isDefaultBilling\",\"isDefaultShipping\",\"firstName\",\"lastName\",\"phoneNumber\",\"ghlContactId\",\"email\",\"emailVerified\",\"image\",\"roleId\",\"categoryId_subscriptionLevelId\",\"parentId_name\",\"userId_proclamationId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), + graph: "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_BQAgEgAAgAYAIBQAAIMGACANDQAA2QMAIBAAANEDACASAADSAwAgFAAA2gMAII4CAADYAwAwjwIAACAAEJACAADYAwAwkQIBAAAAAZICAQAAAAGrAgIApgMAIawCAgCmAwAhsgIBAKcDACGzAgIApgMAIQMAAAAgACABAAAhADACAAAiACABAAAAIAAgCwwAAKkDACAOAADWAwAgDwAA1wMAIBMAAKoDACCOAgAA1AMAMI8CAAAlABCQAgAA1AMAMJECAgCmAwAhkgIBAKcDACGtAgIApgMAIa4CAgDVAwAhAQAAACUAIAUMAACmBAAgDgAA_wUAIA8AAIEGACATAACnBAAgrgIAAOoDACAMDAAAqQMAIA4AANYDACAPAADXAwAgEwAAqgMAII4CAADUAwAwjwIAACUAEJACAADUAwAwkQICAAAAAZICAQCnAwAhrQICAKYDACGuAgIA1QMAIdQCAADTAwAgAwAAACUAIAEAACcAMAIAACgAIAMAAAAgACABAAAhADACAAAiACAHEAAA0QMAIBIAANIDACCOAgAA0AMAMI8CAAArABCQAgAA0AMAMKsCAgCmAwAhrAICAKYDACECEAAA_wUAIBIAAIAGACAIEAAA0QMAIBIAANIDACCOAgAA0AMAMI8CAAArABCQAgAA0AMAMKsCAgCmAwAhrAICAKYDACHTAgAAzwMAIAMAAAArACABAAAsADACAAAtACADAAAAIAAgAQAAIQAwAgAAIgAgAwAAACsAIAEAACwAMAIAAC0AIAEAAAAgACABAAAAKwAgAQAAACUAIAEAAAAgACABAAAAKwAgAwAAABwAIAEAAB0AMAIAAB4AIAEAAAAcACABAAAACQAgAQAAAA0AIAEAAAAYACABAAAAHAAgAQAAAAEAIAMAAAAFACABAAAGADACAAABACADAAAABQAgAQAABgAwAgAAAQAgAwAAAAUAIAEAAAYAMAIAAAEAIA4FAAD-BQAgBwAA2wUAIAgAANwFACAJAADdBQAgCwAA3gUAIBQAAN8FACCRAgEAAAABkgIBAAAAAaQCQAAAAAGxAkAAAAABzwIBAAAAAdACIAAAAAHRAgEAAAAB0gICAAAAAQEbAABAACAIkQIBAAAAAZICAQAAAAGkAkAAAAABsQJAAAAAAc8CAQAAAAHQAiAAAAAB0QIBAAAAAdICAgAAAAEBGwAAQgAwARsAAEIAMAEAAAADACAOBQAA_QUAIAcAAJUFACAIAACWBQAgCQAAlwUAIAsAAJgFACAUAACZBQAgkQIBAPADACGSAgEA8AMAIaQCQACbBAAhsQJAAJsEACHPAgEA8AMAIdACIACvBAAh0QIBAPEDACHSAgIAvgQAIQIAAAABACAbAABGACAIkQIBAPADACGSAgEA8AMAIaQCQACbBAAhsQJAAJsEACHPAgEA8AMAIdACIACvBAAh0QIBAPEDACHSAgIAvgQAIQIAAAAFACAbAABIACACAAAABQAgGwAASAAgAQAAAAMAIAMAAAABACAiAABAACAjAABGACABAAAAAQAgAQAAAAUAIAcEAAD4BQAgKAAA-QUAICkAAPwFACAqAAD7BQAgKwAA-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_AgEAAAABwAIBAAAAAQEbAACGAQAgCJECAQAAAAGkAkAAAAABpQJAAAAAAaoCAQAAAAGxAkAAAAABvgIBAAAAAb8CAQAAAAHAAgEAAAABARsAAIgBADABGwAAiAEAMAkGAADqBQAgkQIBAPADACGkAkAAmwQAIaUCQACbBAAhqgIBAPADACGxAkAAmwQAIb4CAQDwAwAhvwIBAPEDACHAAgEA8QMAIQIAAAALACAbAACLAQAgCJECAQDwAwAhpAJAAJsEACGlAkAAmwQAIaoCAQDwAwAhsQJAAJsEACG-AgEA8AMAIb8CAQDxAwAhwAIBAPEDACECAAAACQAgGwAAjQEAIAIAAAAJACAbAACNAQAgAwAAAAsAICIAAIYBACAjAACLAQAgAQAAAAsAIAEAAAAJACAFBAAA5wUAICoAAOkFACArAADoBQAgvwIAAOoDACDAAgAA6gMAIAuOAgAAyAMAMI8CAACUAQAQkAIAAMgDADCRAgEAmwMAIaQCQACsAwAhpQJAAKwDACGqAgEAmwMAIbECQACsAwAhvgIBAJsDACG_AgEAnAMAIcACAQCcAwAhAwAAAAkAIAEAAJMBADAnAACUAQAgAwAAAAkAIAEAAAoAMAIAAAsAIAEAAAAPACABAAAADwAgAwAAAA0AIAEAAA4AMAIAAA8AIAMAAAANACABAAAOADACAAAPACADAAAADQAgAQAADgAwAgAADwAgDgYAAOYFACCRAgEAAAABpAJAAAAAAaoCAQAAAAGxAkAAAAABtQIBAAAAAbYCAQAAAAG3AgEAAAABuAIBAAAAAbkCAQAAAAG6AkAAAAABuwJAAAAAAbwCAQAAAAG9AgEAAAABARsAAJwBACANkQIBAAAAAaQCQAAAAAGqAgEAAAABsQJAAAAAAbUCAQAAAAG2AgEAAAABtwIBAAAAAbgCAQAAAAG5AgEAAAABugJAAAAAAbsCQAAAAAG8AgEAAAABvQIBAAAAAQEbAACeAQAwARsAAJ4BADAOBgAA5QUAIJECAQDwAwAhpAJAAJsEACGqAgEA8AMAIbECQACbBAAhtQIBAPADACG2AgEA8AMAIbcCAQDxAwAhuAIBAPEDACG5AgEA8QMAIboCQACrBAAhuwJAAKsEACG8AgEA8QMAIb0CAQDxAwAhAgAAAA8AIBsAAKEBACANkQIBAPADACGkAkAAmwQAIaoCAQDwAwAhsQJAAJsEACG1AgEA8AMAIbYCAQDwAwAhtwIBAPEDACG4AgEA8QMAIbkCAQDxAwAhugJAAKsEACG7AkAAqwQAIbwCAQDxAwAhvQIBAPEDACECAAAADQAgGwAAowEAIAIAAAANACAbAACjAQAgAwAAAA8AICIAAJwBACAjAAChAQAgAQAAAA8AIAEAAAANACAKBAAA4gUAICoAAOQFACArAADjBQAgtwIAAOoDACC4AgAA6gMAILkCAADqAwAgugIAAOoDACC7AgAA6gMAILwCAADqAwAgvQIAAOoDACAQjgIAAMcDADCPAgAAqgEAEJACAADHAwAwkQIBAJsDACGkAkAArAMAIaoCAQCbAwAhsQJAAKwDACG1AgEAmwMAIbYCAQCbAwAhtwIBAJwDACG4AgEAnAMAIbkCAQCcAwAhugJAAK0DACG7AkAArQMAIbwCAQCcAwAhvQIBAJwDACEDAAAADQAgAQAAqQEAMCcAAKoBACADAAAADQAgAQAADgAwAgAADwAgBgMAAMYDACCOAgAAxQMAMI8CAAADABCQAgAAxQMAMJECAgAAAAGSAgEApwMAIQEAAACtAQAgAQAAAK0BACABAwAA4QUAIAMAAAADACABAACwAQAwAgAArQEAIAMAAAADACABAACwAQAwAgAArQEAIAMAAAADACABAACwAQAwAgAArQEAIAMDAADgBQAgkQICAAAAAZICAQAAAAEBGwAAtAEAIAKRAgIAAAABkgIBAAAAAQEbAAC2AQAwARsAALYBADADAwAAiQUAIJECAgDyAwAhkgIBAPADACECAAAArQEAIBsAALkBACACkQICAPIDACGSAgEA8AMAIQIAAAADACAbAAC7AQAgAgAAAAMAIBsAALsBACADAAAArQEAICIAALQBACAjAAC5AQAgAQAAAK0BACABAAAAAwAgBQQAAIQFACAoAACFBQAgKQAAiAUAICoAAIcFACArAACGBQAgBY4CAADEAwAwjwIAAMIBABCQAgAAxAMAMJECAgCaAwAhkgIBAJsDACEDAAAAAwAgAQAAwQEAMCcAAMIBACADAAAAAwAgAQAAsAEAMAIAAK0BACAJjgIAAMMDADCPAgAAyAEAEJACAADDAwAwkQIBAAAAAaQCQACzAwAhpQJAALMDACGvAgEApwMAIbECQACzAwAhtAIBAKcDACEBAAAAxQEAIAEAAADFAQAgCY4CAADDAwAwjwIAAMgBABCQAgAAwwMAMJECAQCnAwAhpAJAALMDACGlAkAAswMAIa8CAQCnAwAhsQJAALMDACG0AgEApwMAIQADAAAAyAEAIAEAAMkBADACAADFAQAgAwAAAMgBACABAADJAQAwAgAAxQEAIAMAAADIAQAgAQAAyQEAMAIAAMUBACAGkQIBAAAAAaQCQAAAAAGlAkAAAAABrwIBAAAAAbECQAAAAAG0AgEAAAABARsAAM0BACAGkQIBAAAAAaQCQAAAAAGlAkAAAAABrwIBAAAAAbECQAAAAAG0AgEAAAABARsAAM8BADABGwAAzwEAMAaRAgEA8AMAIaQCQACbBAAhpQJAAJsEACGvAgEA8AMAIbECQACbBAAhtAIBAPADACECAAAAxQEAIBsAANIBACAGkQIBAPADACGkAkAAmwQAIaUCQACbBAAhrwIBAPADACGxAkAAmwQAIbQCAQDwAwAhAgAAAMgBACAbAADUAQAgAgAAAMgBACAbAADUAQAgAwAAAMUBACAiAADNAQAgIwAA0gEAIAEAAADFAQAgAQAAAMgBACADBAAAgQUAICoAAIMFACArAACCBQAgCY4CAADCAwAwjwIAANsBABCQAgAAwgMAMJECAQCbAwAhpAJAAKwDACGlAkAArAMAIa8CAQCbAwAhsQJAAKwDACG0AgEAmwMAIQMAAADIAQAgAQAA2gEAMCcAANsBACADAAAAyAEAIAEAAMkBADACAADFAQAgAQAAACIAIAEAAAAiACADAAAAIAAgAQAAIQAwAgAAIgAgAwAAACAAIAEAACEAMAIAACIAIAMAAAAgACABAAAhADACAAAiACAKDQAAoQQAIBAAAKIEACASAADWBAAgFAAAowQAIJECAQAAAAGSAgEAAAABqwICAAAAAawCAgAAAAGyAgEAAAABswICAAAAAQEbAADjAQAgBpECAQAAAAGSAgEAAAABqwICAAAAAawCAgAAAAGyAgEAAAABswICAAAAAQEbAADlAQAwARsAAOUBADAKDQAAjgQAIBAAAI8EACASAADUBAAgFAAAkAQAIJECAQDwAwAhkgIBAPADACGrAgIA8gMAIawCAgDyAwAhsgIBAPADACGzAgIA8gMAIQIAAAAiACAbAADoAQAgBpECAQDwAwAhkgIBAPADACGrAgIA8gMAIawCAgDyAwAhsgIBAPADACGzAgIA8gMAIQIAAAAgACAbAADqAQAgAgAAACAAIBsAAOoBACADAAAAIgAgIgAA4wEAICMAAOgBACABAAAAIgAgAQAAACAAIAUEAAD8BAAgKAAA_QQAICkAAIAFACAqAAD_BAAgKwAA_gQAIAmOAgAAwQMAMI8CAADxAQAQkAIAAMEDADCRAgEAmwMAIZICAQCbAwAhqwICAJoDACGsAgIAmgMAIbICAQCbAwAhswICAJoDACEDAAAAIAAgAQAA8AEAMCcAAPEBACADAAAAIAAgAQAAIQAwAgAAIgAgAQAAAB4AIAEAAAAeACADAAAAHAAgAQAAHQAwAgAAHgAgAwAAABwAIAEAAB0AMAIAAB4AIAMAAAAcACABAAAdADACAAAeACAGBgAAnwQAIBUAAPsEACCkAkAAAAABqgIBAAAAAbACAQAAAAGxAkAAAAABARsAAPkBACAEpAJAAAAAAaoCAQAAAAGwAgEAAAABsQJAAAAAAQEbAAD7AQAwARsAAPsBADAGBgAAnQQAIBUAAPoEACCkAkAAmwQAIaoCAQDwAwAhsAIBAPADACGxAkAAmwQAIQIAAAAeACAbAAD-AQAgBKQCQACbBAAhqgIBAPADACGwAgEA8AMAIbECQACbBAAhAgAAABwAIBsAAIACACACAAAAHAAgGwAAgAIAIAMAAAAeACAiAAD5AQAgIwAA_gEAIAEAAAAeACABAAAAHAAgAwQAAPcEACAqAAD5BAAgKwAA-AQAIAeOAgAAwAMAMI8CAACHAgAQkAIAAMADADCkAkAArAMAIaoCAQCbAwAhsAIBAJsDACGxAkAArAMAIQMAAAAcACABAACGAgAwJwAAhwIAIAMAAAAcACABAAAdADACAAAeACAHDAAAqQMAII4CAAC_AwAwjwIAAI0CABCQAgAAvwMAMJECAgAAAAGSAgEAAAABrwICAAAAAQEAAACKAgAgAQAAAIoCACAHDAAAqQMAII4CAAC_AwAwjwIAAI0CABCQAgAAvwMAMJECAgCmAwAhkgIBAKcDACGvAgIApgMAIQEMAACmBAAgAwAAAI0CACABAACOAgAwAgAAigIAIAMAAACNAgAgAQAAjgIAMAIAAIoCACADAAAAjQIAIAEAAI4CADACAACKAgAgBAwAAPYEACCRAgIAAAABkgIBAAAAAa8CAgAAAAEBGwAAkgIAIAORAgIAAAABkgIBAAAAAa8CAgAAAAEBGwAAlAIAMAEbAACUAgAwBAwAAOwEACCRAgIA8gMAIZICAQDwAwAhrwICAPIDACECAAAAigIAIBsAAJcCACADkQICAPIDACGSAgEA8AMAIa8CAgDyAwAhAgAAAI0CACAbAACZAgAgAgAAAI0CACAbAACZAgAgAwAAAIoCACAiAACSAgAgIwAAlwIAIAEAAACKAgAgAQAAAI0CACAFBAAA5wQAICgAAOgEACApAADrBAAgKgAA6gQAICsAAOkEACAGjgIAAL4DADCPAgAAoAIAEJACAAC-AwAwkQICAJoDACGSAgEAmwMAIa8CAgCaAwAhAwAAAI0CACABAACfAgAwJwAAoAIAIAMAAACNAgAgAQAAjgIAMAIAAIoCACABAAAAKAAgAQAAACgAIAMAAAAlACABAAAnADACAAAoACADAAAAJQAgAQAAJwAwAgAAKAAgAwAAACUAIAEAACcAMAIAACgAIAgMAADkBAAgDgAA5gQAIA8AAOMEACATAADlBAAgkQICAAAAAZICAQAAAAGtAgIAAAABrgICAAAAAQEbAACoAgAgBJECAgAAAAGSAgEAAAABrQICAAAAAa4CAgAAAAEBGwAAqgIAMAEbAACqAgAwAQAAACUAIAgMAADBBAAgDgAAvwQAIA8AAMAEACATAADCBAAgkQICAPIDACGSAgEA8AMAIa0CAgDyAwAhrgICAL4EACECAAAAKAAgGwAArgIAIASRAgIA8gMAIZICAQDwAwAhrQICAPIDACGuAgIAvgQAIQIAAAAlACAbAACwAgAgAgAAACUAIBsAALACACABAAAAJQAgAwAAACgAICIAAKgCACAjAACuAgAgAQAAACgAIAEAAAAlACAGBAAAuQQAICgAALoEACApAAC9BAAgKgAAvAQAICsAALsEACCuAgAA6gMAIAeOAgAAugMAMI8CAAC4AgAQkAIAALoDADCRAgIAmgMAIZICAQCbAwAhrQICAJoDACGuAgIAuwMAIQMAAAAlACABAAC3AgAwJwAAuAIAIAMAAAAlACABAAAnADACAAAoACABAAAALQAgAQAAAC0AIAMAAAArACABAAAsADACAAAtACADAAAAKwAgAQAALAAwAgAALQAgAwAAACsAIAEAACwAMAIAAC0AIAQQAACCBAAgEgAAuAQAIKsCAgAAAAGsAgIAAAABARsAAMACACACqwICAAAAAawCAgAAAAEBGwAAwgIAMAEbAADCAgAwBBAAAIAEACASAAC3BAAgqwICAPIDACGsAgIA8gMAIQIAAAAtACAbAADFAgAgAqsCAgDyAwAhrAICAPIDACECAAAAKwAgGwAAxwIAIAIAAAArACAbAADHAgAgAwAAAC0AICIAAMACACAjAADFAgAgAQAAAC0AIAEAAAArACAFBAAAsgQAICgAALMEACApAAC2BAAgKgAAtQQAICsAALQEACAFjgIAALkDADCPAgAAzgIAEJACAAC5AwAwqwICAJoDACGsAgIAmgMAIQMAAAArACABAADNAgAwJwAAzgIAIAMAAAArACABAAAsADACAAAtACABAAAAGgAgAQAAABoAIAMAAAAYACABAAAZADACAAAaACADAAAAGAAgAQAAGQAwAgAAGgAgAwAAABgAIAEAABkAMAIAABoAIAYGAACxBAAgkQIBAAAAAacCAQAAAAGoAiAAAAABqQIBAAAAAaoCAQAAAAEBGwAA1gIAIAWRAgEAAAABpwIBAAAAAagCIAAAAAGpAgEAAAABqgIBAAAAAQEbAADYAgAwARsAANgCADAGBgAAsAQAIJECAQDwAwAhpwIBAPADACGoAiAArwQAIakCAQDwAwAhqgIBAPADACECAAAAGgAgGwAA2wIAIAWRAgEA8AMAIacCAQDwAwAhqAIgAK8EACGpAgEA8AMAIaoCAQDwAwAhAgAAABgAIBsAAN0CACACAAAAGAAgGwAA3QIAIAMAAAAaACAiAADWAgAgIwAA2wIAIAEAAAAaACABAAAAGAAgAwQAAKwEACAqAACuBAAgKwAArQQAIAiOAgAAtQMAMI8CAADkAgAQkAIAALUDADCRAgEAmwMAIacCAQCbAwAhqAIgALYDACGpAgEAmwMAIaoCAQCbAwAhAwAAABgAIAEAAOMCADAnAADkAgAgAwAAABgAIAEAABkAMAIAABoAIAmOAgAAsgMAMI8CAADqAgAQkAIAALIDADCRAgEAAAABogIBAKcDACGjAgEAAAABpAJAALMDACGlAkAAtAMAIaYCQAC0AwAhAQAAAOcCACABAAAA5wIAIAmOAgAAsgMAMI8CAADqAgAQkAIAALIDADCRAgEApwMAIaICAQCnAwAhowIBAKcDACGkAkAAswMAIaUCQAC0AwAhpgJAALQDACECpQIAAOoDACCmAgAA6gMAIAMAAADqAgAgAQAA6wIAMAIAAOcCACADAAAA6gIAIAEAAOsCADACAADnAgAgAwAAAOoCACABAADrAgAwAgAA5wIAIAaRAgEAAAABogIBAAAAAaMCAQAAAAGkAkAAAAABpQJAAAAAAaYCQAAAAAEBGwAA7wIAIAaRAgEAAAABogIBAAAAAaMCAQAAAAGkAkAAAAABpQJAAAAAAaYCQAAAAAEBGwAA8QIAMAEbAADxAgAwBpECAQDwAwAhogIBAPADACGjAgEA8AMAIaQCQACbBAAhpQJAAKsEACGmAkAAqwQAIQIAAADnAgAgGwAA9AIAIAaRAgEA8AMAIaICAQDwAwAhowIBAPADACGkAkAAmwQAIaUCQACrBAAhpgJAAKsEACECAAAA6gIAIBsAAPYCACACAAAA6gIAIBsAAPYCACADAAAA5wIAICIAAO8CACAjAAD0AgAgAQAAAOcCACABAAAA6gIAIAUEAACoBAAgKgAAqgQAICsAAKkEACClAgAA6gMAIKYCAADqAwAgCY4CAACrAwAwjwIAAP0CABCQAgAAqwMAMJECAQCbAwAhogIBAJsDACGjAgEAmwMAIaQCQACsAwAhpQJAAK0DACGmAkAArQMAIQMAAADqAgAgAQAA_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_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_AgEAnAMAIcACAQCcAwAhDo4CAADJAwAwjwIAAH4AEJACAADJAwAwkQIBAJsDACHBAgEAmwMAIcICAQCbAwAhwwIBAJsDACHEAgEAmwMAIcUCAQCbAwAhxgIBAJsDACHHAgEAmwMAIcgCIAC2AwAhyQIgALYDACHKAiAAtgMAIQmOAgAAygMAMI8CAABoABCQAgAAygMAMJECAQCbAwAhqgIBAJsDACHLAgEAmwMAIcwCAQCbAwAhzQIBAJsDACHOAgEAnAMAIQsGAADMAwAgCgAAzQMAII4CAADLAwAwjwIAABEAEJACAADLAwAwkQIBAKcDACGqAgEApwMAIcsCAQCnAwAhzAIBAKcDACHNAgEApwMAIc4CAQCoAwAhEwUAAOUDACAHAADmAwAgCAAA5wMAIAkAAOgDACALAADpAwAgFAAA2gMAII4CAADkAwAwjwIAAAUAEJACAADkAwAwkQIBAKcDACGSAgEApwMAIaQCQACzAwAhsQJAALMDACHPAgEApwMAIdACIADfAwAh0QIBAKgDACHSAgIA1QMAIdYCAAAFACDXAgAABQAgA58CAAATACCgAgAAEwAgoQIAABMAIAuOAgAAzgMAMI8CAABQABCQAgAAzgMAMJECAQCbAwAhkgIBAJsDACGkAkAArAMAIbECQACsAwAhzwIBAJsDACHQAiAAtgMAIdECAQCcAwAh0gICALsDACECqwICAAAAAawCAgAAAAEHEAAA0QMAIBIAANIDACCOAgAA0AMAMI8CAAArABCQAgAA0AMAMKsCAgCmAwAhrAICAKYDACENDAAAqQMAIA4AANYDACAPAADXAwAgEwAAqgMAII4CAADUAwAwjwIAACUAEJACAADUAwAwkQICAKYDACGSAgEApwMAIa0CAgCmAwAhrgICANUDACHWAgAAJQAg1wIAACUAIAoMAACpAwAgEQAAqgMAII4CAAClAwAwjwIAAIMDABCQAgAApQMAMJECAgCmAwAhkgIBAKcDACGTAgEAqAMAIdYCAACDAwAg1wIAAIMDACACkgIBAAAAAa4CAgAAAAELDAAAqQMAIA4AANYDACAPAADXAwAgEwAAqgMAII4CAADUAwAwjwIAACUAEJACAADUAwAwkQICAKYDACGSAgEApwMAIa0CAgCmAwAhrgICANUDACEIlAICAAAAAZUCAgAAAAWWAgIAAAAFlwICAAAAAZgCAgAAAAGZAgIAAAABmgICAAAAAZ4CAgCeAwAhDQwAAKkDACAOAADWAwAgDwAA1wMAIBMAAKoDACCOAgAA1AMAMI8CAAAlABCQAgAA1AMAMJECAgCmAwAhkgIBAKcDACGtAgIApgMAIa4CAgDVAwAh1gIAACUAINcCAAAlACADnwIAACUAIKACAAAlACChAgAAJQAgDQ0AANkDACAQAADRAwAgEgAA0gMAIBQAANoDACCOAgAA2AMAMI8CAAAgABCQAgAA2AMAMJECAQCnAwAhkgIBAKcDACGrAgIApgMAIawCAgCmAwAhsgIBAKcDACGzAgIApgMAIQkMAACpAwAgjgIAAL8DADCPAgAAjQIAEJACAAC_AwAwkQICAKYDACGSAgEApwMAIa8CAgCmAwAh1gIAAI0CACDXAgAAjQIAIAOfAgAAHAAgoAIAABwAIKECAAAcACACqgIBAAAAAbACAQAAAAEJBgAAzAMAIBUAAN0DACCOAgAA3AMAMI8CAAAcABCQAgAA3AMAMKQCQACzAwAhqgIBAKcDACGwAgEApwMAIbECQACzAwAhDw0AANkDACAQAADRAwAgEgAA0gMAIBQAANoDACCOAgAA2AMAMI8CAAAgABCQAgAA2AMAMJECAQCnAwAhkgIBAKcDACGrAgIApgMAIawCAgCmAwAhsgIBAKcDACGzAgIApgMAIdYCAAAgACDXAgAAIAAgCQYAAMwDACCOAgAA3gMAMI8CAAAYABCQAgAA3gMAMJECAQCnAwAhpwIBAKcDACGoAiAA3wMAIakCAQCnAwAhqgIBAKcDACEClAIgAAAAAZ4CIAC4AwAhDwkAAOEDACCOAgAA4AMAMI8CAAATABCQAgAA4AMAMJECAQCnAwAhwQIBAKcDACHCAgEApwMAIcMCAQCnAwAhxAIBAKcDACHFAgEApwMAIcYCAQCnAwAhxwIBAKcDACHIAiAA3wMAIckCIADfAwAhygIgAN8DACENBgAAzAMAIAoAAM0DACCOAgAAywMAMI8CAAARABCQAgAAywMAMJECAQCnAwAhqgIBAKcDACHLAgEApwMAIcwCAQCnAwAhzQIBAKcDACHOAgEAqAMAIdYCAAARACDXAgAAEQAgEQYAAMwDACCOAgAA4gMAMI8CAAANABCQAgAA4gMAMJECAQCnAwAhpAJAALMDACGqAgEApwMAIbECQACzAwAhtQIBAKcDACG2AgEApwMAIbcCAQCoAwAhuAIBAKgDACG5AgEAqAMAIboCQAC0AwAhuwJAALQDACG8AgEAqAMAIb0CAQCoAwAhDAYAAMwDACCOAgAA4wMAMI8CAAAJABCQAgAA4wMAMJECAQCnAwAhpAJAALMDACGlAkAAswMAIaoCAQCnAwAhsQJAALMDACG-AgEApwMAIb8CAQCoAwAhwAIBAKgDACERBQAA5QMAIAcAAOYDACAIAADnAwAgCQAA6AMAIAsAAOkDACAUAADaAwAgjgIAAOQDADCPAgAABQAQkAIAAOQDADCRAgEApwMAIZICAQCnAwAhpAJAALMDACGxAkAAswMAIc8CAQCnAwAh0AIgAN8DACHRAgEAqAMAIdICAgDVAwAhCAMAAMYDACCOAgAAxQMAMI8CAAADABCQAgAAxQMAMJECAgCmAwAhkgIBAKcDACHWAgAAAwAg1wIAAAMAIAOfAgAACQAgoAIAAAkAIKECAAAJACADnwIAAA0AIKACAAANACChAgAADQAgDQYAAMwDACAKAADNAwAgjgIAAMsDADCPAgAAEQAQkAIAAMsDADCRAgEApwMAIaoCAQCnAwAhywIBAKcDACHMAgEApwMAIc0CAQCnAwAhzgIBAKgDACHWAgAAEQAg1wIAABEAIAOfAgAAGAAgoAIAABgAIKECAAAYACAAAAAAAAAB2wIBAAAAAQHbAgEAAAABBdsCAgAAAAHhAgIAAAAB4gICAAAAAeMCAgAAAAHkAgIAAAABCyIAAIMEADAjAACIBAAw2AIAAIQEADDZAgAAhQQAMNoCAACGBAAg2wIAAIcEADDcAgAAhwQAMN0CAACHBAAw3gIAAIcEADDfAgAAiQQAMOACAACKBAAwCyIAAPUDADAjAAD6AwAw2AIAAPYDADDZAgAA9wMAMNoCAAD4AwAg2wIAAPkDADDcAgAA-QMAMN0CAAD5AwAw3gIAAPkDADDfAgAA-wMAMOACAAD8AwAwAhAAAIIEACCrAgIAAAABAgAAAC0AICIAAIEEACADAAAALQAgIgAAgQQAICMAAP8DACABGwAA3AYAMAgQAADRAwAgEgAA0gMAII4CAADQAwAwjwIAACsAEJACAADQAwAwqwICAKYDACGsAgIApgMAIdMCAADPAwAgAgAAAC0AIBsAAP8DACACAAAA_QMAIBsAAP4DACAFjgIAAPwDADCPAgAA_QMAEJACAAD8AwAwqwICAKYDACGsAgIApgMAIQWOAgAA_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_BgAg2AIAAL0GACDZAgAAvgYAIN4CAACAAwAgAyIAALwGACDYAgAAvQYAIN4CAACAAwAgAAAAAAAF2wICAAAAAeECAgAAAAHiAgIAAAAB4wICAAAAAeQCAgAAAAEHIgAArwYAICMAALoGACDYAgAAsAYAINkCAAC5BgAg3AIAACUAIN0CAAAlACDeAgAAKAAgCyIAANcEADAjAADcBAAw2AIAANgEADDZAgAA2QQAMNoCAADaBAAg2wIAANsEADDcAgAA2wQAMN0CAADbBAAw3gIAANsEADDfAgAA3QQAMOACAADeBAAwCyIAAMwEADAjAADQBAAw2AIAAM0EADDZAgAAzgQAMNoCAADPBAAg2wIAAIcEADDcAgAAhwQAMN0CAACHBAAw3gIAAIcEADDfAgAA0QQAMOACAACKBAAwCyIAAMMEADAjAADHBAAw2AIAAMQEADDZAgAAxQQAMNoCAADGBAAg2wIAAPkDADDcAgAA-QMAMN0CAAD5AwAw3gIAAPkDADDfAgAAyAQAMOACAAD8AwAwAhIAALgEACCsAgIAAAABAgAAAC0AICIAAMsEACADAAAALQAgIgAAywQAICMAAMoEACABGwAAuAYAMAIAAAAtACAbAADKBAAgAgAAAP0DACAbAADJBAAgAawCAgDyAwAhAhIAALcEACCsAgIA8gMAIQISAAC4BAAgrAICAAAAAQgNAAChBAAgEgAA1gQAIBQAAKMEACCRAgEAAAABkgIBAAAAAawCAgAAAAGyAgEAAAABswICAAAAAQIAAAAiACAiAADVBAAgAwAAACIAICIAANUEACAjAADTBAAgARsAALcGADACAAAAIgAgGwAA0wQAIAIAAACLBAAgGwAA0gQAIAWRAgEA8AMAIZICAQDwAwAhrAICAPIDACGyAgEA8AMAIbMCAgDyAwAhCA0AAI4EACASAADUBAAgFAAAkAQAIJECAQDwAwAhkgIBAPADACGsAgIA8gMAIbICAQDwAwAhswICAPIDACEFIgAAsgYAICMAALUGACDYAgAAswYAINkCAAC0BgAg3gIAAIADACAIDQAAoQQAIBIAANYEACAUAACjBAAgkQIBAAAAAZICAQAAAAGsAgIAAAABsgIBAAAAAbMCAgAAAAEDIgAAsgYAINgCAACzBgAg3gIAAIADACAGDAAA5AQAIA8AAOMEACATAADlBAAgkQICAAAAAZICAQAAAAGtAgIAAAABAgAAACgAICIAAOIEACADAAAAKAAgIgAA4gQAICMAAOEEACABGwAAsQYAMAwMAACpAwAgDgAA1gMAIA8AANcDACATAACqAwAgjgIAANQDADCPAgAAJQAQkAIAANQDADCRAgIAAAABkgIBAKcDACGtAgIApgMAIa4CAgDVAwAh1AIAANMDACACAAAAKAAgGwAA4QQAIAIAAADfBAAgGwAA4AQAIAeOAgAA3gQAMI8CAADfBAAQkAIAAN4EADCRAgIApgMAIZICAQCnAwAhrQICAKYDACGuAgIA1QMAIQeOAgAA3gQAMI8CAADfBAAQkAIAAN4EADCRAgIApgMAIZICAQCnAwAhrQICAKYDACGuAgIA1QMAIQORAgIA8gMAIZICAQDwAwAhrQICAPIDACEGDAAAwQQAIA8AAMAEACATAADCBAAgkQICAPIDACGSAgEA8AMAIa0CA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_BQAgAgAAAL0FACAbAAC-BQAgDo4CAAC8BQAwjwIAAL0FABCQAgAAvAUAMJECAQCnAwAhwQIBAKcDACHCAgEApwMAIcMCAQCnAwAhxAIBAKcDACHFAgEApwMAIcYCAQCnAwAhxwIBAKcDACHIAiAA3wMAIckCIADfAwAhygIgAN8DACEOjgIAALwFADCPAgAAvQUAEJACAAC8BQAwkQIBAKcDACHBAgEApwMAIcICAQCnAwAhwwIBAKcDACHEAgEApwMAIcUCAQCnAwAhxgIBAKcDACHHAgEApwMAIcgCIADfAwAhyQIgAN8DACHKAiAA3wMAIQqRAgEA8AMAIcICAQDwAwAhwwIBAPADACHEAgEA8AMAIcUCAQDwAwAhxgIBAPADACHHAgEA8AMAIcgCIACvBAAhyQIgAK8EACHKAiAArwQAIQqRAgEA8AMAIcICAQDwAwAhwwIBAPADACHEAgEA8AMAIcUCAQDwAwAhxgIBAPADACHHAgEA8AMAIcgCIACvBAAhyQIgAK8EACHKAiAArwQAIQqRAgEAAAABwgIBAAAAAcMCAQAAAAHEAgEAAAABxQIBAAAAAcYCAQAAAAHHAgEAAAAByAIgAAAAAckCIAAAAAHKAiAAAAABBCIAALUFADDYAgAAtgUAMNoCAAC4BQAg3gIAALkFADAMkQIBAAAAAaQCQAAAAAGxAkAAAAABtQIBAAAAAbYCAQAAAAG3AgEAAAABuAIBAAAAAbkCAQAAAAG6AkAAAAABuwJAAAAAAbwCAQAAAAG9AgEAAAABAgAAAA8AICIAAM0FACADAAAADwAgIgAAzQUAICMAAMwFACABGwAApAYAMBEGAADMAwAgjgIAAOIDADCPAgAADQAQkAIAAOIDADCRAgEAAAABpAJAALMDACGqAgEApwMAIbECQACzAwAhtQIBAKcDACG2AgEApwMAIbcCAQCoAwAhuAIBAKgDACG5AgEAqAMAIboCQAC0AwAhuwJAALQDACG8AgEAqAMAIb0CAQCoAwAhAgAAAA8AIBsAAMwFACACAAAAygUAIBsAAMsFACAQjgIAAMkFADCPAgAAygUAEJACAADJBQAwkQIBAKcDACGkAkAAswMAIaoCAQCnAwAhsQJAALMDACG1AgEApwMAIbYCAQCnAwAhtwIBAKgDACG4AgEAqAMAIbkCAQCoAwAhugJAALQDACG7AkAAtAMAIbwCAQCoAwAhvQIBAKgDACEQjgIAAMkFADCPAgAAygUAEJACAADJBQAwkQIBAKcDACGkAkAAswMAIaoCAQCnAwAhsQJAALMDACG1AgEApwMAIbYCAQCnAwAhtwIBAKgDACG4AgEAqAMAIbkCAQCoAwAhugJAALQDACG7AkAAtAMAIbwCAQCoAwAhvQIBAKgDACEMkQIBAPADACGkAkAAmwQAIbECQACbBAAhtQIBAPADACG2AgEA8AMAIbcCAQDxAwAhuAIBAPEDACG5AgEA8QMAIboCQACrBAAhuwJAAKsEACG8AgEA8QMAIb0CAQDxAwAhDJECAQDwAwAhpAJAAJsEACGxAkAAmwQAIbUCAQDwAwAhtgIBAPADACG3AgEA8QMAIbgCAQDxAwAhuQIBAPEDACG6AkAAqwQAIbsCQACrBAAhvAIBAPEDACG9AgEA8QMAIQyRAgEAAAABpAJAAAAAAbECQAAAAAG1AgEAAAABtgIBAAAAAbcCAQAAAAG4AgEAAAABuQIBAAAAAboCQAAAAAG7AkAAAAABvAIBAAAAAb0CAQAAAAEHkQIBAAAAAaQCQAAAAAGlAkAAAAABsQJAAAAAAb4CAQAAAAG_AgEAAAABwAIBAAAAAQIAAAALACAiAADZBQAgAwAAAAsAICIAANkFACAjAADYBQAgARsAAKMGADAMBgAAzAMAII4CAADjAwAwjwIAAAkAEJACAADjAwAwkQIBAAAAAaQCQACzAwAhpQJAALMDACGqAgEApwMAIbECQACzAwAhvgIBAAAAAb8CAQCoAwAhwAIBAKgDACECAAAACwAgGwAA2AUAIAIAAADWBQAgGwAA1wUAIAuOAgAA1QUAMI8CAADWBQAQkAIAANUFADCRAgEApwMAIaQCQACzAwAhpQJAALMDACGqAgEApwMAIbECQACzAwAhvgIBAKcDACG_AgEAqAMAIcACAQCoAwAhC44CAADVBQAwjwIAANYFABCQAgAA1QUAMJECAQCnAwAhpAJAALMDACGlAkAAswMAIaoCAQCnAwAhsQJAALMDACG-AgEApwMAIb8CAQCoAwAhwAIBAKgDACEHkQIBAPADACGkAkAAmwQAIaUCQACbBAAhsQJAAJsEACG-AgEA8AMAIb8CAQDxAwAhwAIBAPEDACEHkQIBAPADACGkAkAAmwQAIaUCQACbBAAhsQJAAJsEACG-AgEA8AMAIb8CAQDxAwAhwAIBAPEDACEHkQIBAAAAAaQCQAAAAAGlAkAAAAABsQJAAAAAAb4CAQAAAAG_AgEAAAABwAIBAAAAAQwHAADbBQAgCAAA3AUAIAkAAN0FACALAADeBQAgFAAA3wUAIJECAQAAAAGSAgEAAAABpAJAAAAAAbECQAAAAAHPAgEAAAAB0AIgAAAAAdECAQAAAAEEIgAAzgUAMNgCAADPBQAw2gIAANEFACDeAgAA0gUAMAQiAADCBQAw2AIAAMMFADDaAgAAxQUAIN4CAADGBQAwAyIAAK8FACDYAgAAsAUAIN4CAABTACAEIgAAowUAMNgCAACkBQAw2gIAAKYFACDeAgAApwUAMAQiAACaBQAw2AIAAJsFADDaAgAAnQUAIN4CAACVBAAwBCIAAIoFADDYAgAAiwUAMNoCAACNBQAg3gIAAI4FADAAAAAABSIAAJ4GACAjAAChBgAg2AIAAJ8GACDZAgAAoAYAIN4CAAABACADIgAAngYAINgCAACfBgAg3gIAAAEAIAAAAAUiAACZBgAgIwAAnAYAINgCAACaBgAg2QIAAJsGACDeAgAAAQAgAyIAAJkGACDYAgAAmgYAIN4CAAABACAAAAAFIgAAlAYAICMAAJcGACDYAgAAlQYAINkCAACWBgAg3gIAAFMAIAMiAACUBgAg2AIAAJUGACDeAgAAUwAgAAAABSIAAI8GACAjAACSBgAg2AIAAJAGACDZAgAAkQYAIN4CAAABACADIgAAjwYAINgCAACQBgAg3gIAAAEAIAgFAACGBgAgBwAAhwYAIAgAAIgGACAJAACFBgAgCwAAiQYAIBQAAIMGACDRAgAA6gMAINICAADqAwAgAAAAAAAAByIAAIoGACAjAACNBgAg2AIAAIsGACDZAgAAjAYAINwCAAADACDdAgAAAwAg3gIAAK0BACADIgAAigYAINgCAACLBgAg3gIAAK0BACAFDAAApgQAIA4AAP8FACAPAACBBgAgEwAApwQAIK4CAADqAwAgAwwAAKYEACARAACnBAAgkwIAAOoDACAAAQwAAKYEACAABA0AAIIGACAQAAD_BQAgEgAAgAYAIBQAAIMGACADBgAA9gUAIAoAAPcFACDOAgAA6gMAIAEDAADhBQAgAAAAApECAgAAAAGSAgEAAAABAgAAAK0BACAiAACKBgAgAwAAAAMAICIAAIoGACAjAACOBgAgBAAAAAMAIBsAAI4GACCRAgIA8gMAIZICAQDwAwAhApECAgDyAwAhkgIBAPADACENBQAA_gUAIAcAANsFACAIAADcBQAgCwAA3gUAIBQAAN8FACCRAgEAAAABkgIBAAAAAaQCQAAAAAGxAkAAAAABzwIBAAAAAdACIAAAAAHRAgEAAAAB0gICAAAAAQIAAAABACAiAACPBgAgAwAAAAUAICIAAI8GACAjAACTBgAgDwAAAAUAIAUAAP0FACAHAACVBQAgCAAAlgUAIAsAAJgFACAUAACZBQAgGwAAkwYAIJECAQDwAwAhkgIBAPADACGkAkAAmwQAIbECQACbBAAhzwIBAPADACHQAiAArwQAIdECAQDxAwAh0gICAL4EACENBQAA_QUAIAcAAJUFACAIAACWBQAgCwAAmAUAIBQAAJkFACCRAgEA8AMAIZICAQDwAwAhpAJAAJsEACGxAkAAmwQAIc8CAQDwAwAh0AIgAK8EACHRAgEA8QMAIdICAgC-BAAhBwYAAPUFACCRAgEAAAABqgIBAAAAAcsCAQAAAAHMAgEAAAABzQIBAAAAAc4CAQAAAAECAAAAUwAgIgAAlAYAIAMAAAARACAiAACUBgAgIwAAmAYAIAkAAAARACAGAAD0BQAgGwAAmAYAIJECAQDwAwAhqgIBAPADACHLAgEA8AMAIcwCAQDwAwAhzQIBAPADACHOAgEA8QMAIQcGAAD0BQAgkQIBAPADACGqAgEA8AMAIcsCAQDwAwAhzAIBAPADACHNAgEA8AMAIc4CAQDxAwAhDQUAAP4FACAIAADcBQAgCQAA3QUAIAsAAN4FACAUAADfBQAgkQIBAAAAAZICAQAAAAGkAkAAAAABsQJAAAAAAc8CAQAAAAHQAiAAAAAB0QIBAAAAAdICAgAAAAECAAAAAQAgIgAAmQYAIAMAAAAFACAiAACZBgAgIwAAnQYAIA8AAAAFACAFAAD9BQAgCAAAlgUAIAkAAJcFACALAACYBQAgFAAAmQUAIBsAAJ0GACCRAgEA8AMAIZICAQDwAwAhpAJAAJsEACGxAkAAmwQAIc8CAQDwAwAh0AIgAK8EACHRAgEA8QMAIdICAgC-BAAhDQUAAP0FACAIAACWBQAgCQAAlwUAIAsAAJgFACAUAACZBQAgkQIBAPADACGSAgEA8AMAIaQCQACbBAAhsQJAAJsEACHPAgEA8AMAIdACIACvBAAh0QIBAPEDACHSAgIAvgQAIQ0FAAD-BQAgBwAA2wUAIAkAAN0FACALAADeBQAgFAAA3wUAIJECAQAAAAGSAgEAAAABpAJAAAAAAbECQAAAAAHPAgEAAAAB0AIgAAAAAdECAQAAAAHSAgIAAAABAgAAAAEAICIAAJ4GACADAAAABQAgIgAAngYAICMAAKIGACAPAAAABQAgBQAA_QUAIAcAAJUFACAJAACXBQAgCwAAmAUAIBQAAJkFACAbAACiBgAgkQIBAPADACGSAgEA8AMAIaQCQACbBAAhsQJAAJsEACHPAgEA8AMAIdACIACvBAAh0QIBAPEDACHSAgIAvgQAIQ0FAAD9BQAgBwAAlQUAIAkAAJcFACALAACYBQAgFAAAmQUAIJECAQDwAwAhkgIBAPADACGkAkAAmwQAIbECQACbBAAhzwIBAPADACHQAiAArwQAIdECAQDxAwAh0gICAL4EACEHkQIBAAAAAaQCQAAAAAGlAkAAAAABsQJAAAAAAb4CAQAAAAG_AgEAAAABwAIBAAAAAQyRAgEAAAABpAJAAAAAAbECQAAAAAG1AgEAAAABtgIBAAAAAbcCAQAAAAG4AgEAAAABuQIBAAAAAboCQAAAAAG7AkAAAAABvAIBAAAAAb0CAQAAAAEKkQIBAAAAAcICAQAAAAHDAgEAAAABxAIBAAAAAcUCAQAAAAHGAgEAAAABxwIBAAAAAcgCIAAAAAHJAiAAAAABygIgAAAAAQSRAgEAAAABpwIBAAAAAagCIAAAAAGpAgEAAAABA6QCQAAAAAGwAgEAAAABsQJAAAAAAQeRAgEAAAABkgIBAAAAAaQCQAAAAAGxAkAAAAABzwIBAAAAAdACIAAAAAHRAgEAAAABCQ0AAKEEACAQAACiBAAgEgAA1gQAIJECAQAAAAGSAgEAAAABqwICAAAAAawCAgAAAAGyAgEAAAABswICAAAAAQIAAAAiACAiAACpBgAgAwAAACAAICIAAKkGACAjAACtBgAgCwAAACAAIA0AAI4EACAQAACPBAAgEgAA1AQAIBsAAK0GACCRAgEA8AMAIZICAQDwAwAhqwICAPIDACGsAgIA8gMAIbICAQDwAwAhswICAPIDACEJDQAAjgQAIBAAAI8EACASAADUBAAgkQIBAPADACGSAgEA8AMAIasCAgDyAwAhrAICAPIDACGyAgEA8AMAIbMCAgDyAwAhBZECAQAAAAGSAgEAAAABqwICAAAAAawCAgAAAAGyAgEAAAABBwwAAOQEACAOAADmBAAgEwAA5QQAIJECAgAAAAGSAgEAAAABrQICAAAAAa4CAgAAAAECAAAAKAAgIgAArwYAIAORAgIAAAABkgIBAAAAAa0CAgAAAAEEEQAApQQAIJECAgAAAAGSAgEAAAABkwIBAAAAAQIAAACAAwAgIgAAsgYAIAMAAACDAwAgIgAAsgYAICMAALYGACAGAAAAgwMAIBEAAPQDACAbAAC2BgAgkQICAPIDACGSAgEA8AMAIZMCAQDxAwAhBBEAAPQDACCRAgIA8gMAIZICAQDwAwAhkwIBAPEDACEFkQIBAAAAAZICAQAAAAGsAgIAAAABsgIBAAAAAbMCAgAAAAEBrAICAAAAAQMAAAAlACAiAACvBgAgIwAAuwYAIAkAAAAlACAMAADBBAAgDgAAvwQAIBMAAMIEACAbAAC7BgAgkQICAPIDACGSAgEA8AMAIa0CAgDyAwAhrgICAL4EACEHDAAAwQQAIA4AAL8EACATAADCBAAgkQICAPIDACGSAgEA8AMAIa0CAgDyAwAhrgICAL4EACEEDAAApAQAIJECAgAAAAGSAgEAAAABkwIBAAAAAQIAAACAAwAgIgAAvAYAIAMAAACDAwAgIgAAvAYAICMAAMAGACAGAAAAgwMAIAwAAPMDACAbAADABgAgkQICAPIDACGSAgEA8AMAIZMCAQDxAwAhBAwAAPMDACCRAgIA8gMAIZICAQDwAwAhkwIBAPEDACENBQAA_gUAIAcAANsFACAIAADcBQAgCQAA3QUAIBQAAN8FACCRAgEAAAABkgIBAAAAAaQCQAAAAAGxAkAAAAABzwIBAAAAAdACIAAAAAHRAgEAAAAB0gICAAAAAQIAAAABACAiAADBBgAgAwAAAAUAICIAAMEGACAjAADFBgAgDwAAAAUAIAUAAP0FACAHAACVBQAgCAAAlgUAIAkAAJcFACAUAACZBQAgGwAAxQYAIJECAQDwAwAhkgIBAPADACGkAkAAmwQAIbECQACbBAAhzwIBAPADACHQAiAArwQAIdECAQDxAwAh0gICAL4EACENBQAA_QUAIAcAAJUFACAIAACWBQAgCQAAlwUAIBQAAJkFACCRAgEA8AMAIZICAQDwAwAhpAJAAJsEACGxAkAAmwQAIc8CAQDwAwAh0AIgAK8EACHRAgEA8QMAIdICAgC-BAAhBw4AAOYEACAPAADjBAAgEwAA5QQAIJECAgAAAAGSAgEAAAABrQICAAAAAa4CAgAAAAECAAAAKAAgIgAAxgYAIAORAgIAAAABkgIBAAAAAa8CAgAAAAECAAAAigIAICIAAMgGACANBQAA_gUAIAcAANsFACAIAADcBQAgCQAA3QUAIAsAAN4FACCRAgEAAAABkgIBAAAAAaQCQAAAAAGxAkAAAAABzwIBAAAAAdACIAAAAAHRAgEAAAAB0gICAAAAAQIAAAABACAiAADKBgAgAwAAAAUAICIAAMoGACAjAADOBgAgDwAAAAUAIAUAAP0FACAHAACVBQAgCAAAlgUAIAkAAJcFACALAACYBQAgGwAAzgYAIJECAQDwAwAhkgIBAPADACGkAkAAmwQAIbECQACbBAAhzwIBAPADACHQAiAArwQAIdECAQDxAwAh0gICAL4EACENBQAA_QUAIAcAAJUFACAIAACWBQAgCQAAlwUAIAsAAJgFACCRAgEA8AMAIZICAQDwAwAhpAJAAJsEACGxAkAAmwQAIc8CAQDwAwAh0AIgAK8EACHRAgEA8QMAIdICAgC-BAAhA6QCQAAAAAGqAgEAAAABsQJAAAAAAQMAAAAlACAiAADGBgAgIwAA0gYAIAkAAAAlACAOAAC_BAAgDwAAwAQAIBMAAMIEACAbAADSBgAgkQICAPIDACGSAgEA8AMAIa0CAgDyAwAhrgICAL4EACEHDgAAvwQAIA8AAMAEACATAADCBAAgkQICAPIDACGSAgEA8AMAIa0CAgDyAwAhrgICAL4EACEDAAAAjQIAICIAAMgGACAjAADVBgAgBQAAAI0CACAbAADVBgAgkQICAPIDACGSAgEA8AMAIa8CAgDyAwAhA5ECAgDyAwAhkgIBAPADACGvAgIA8gMAIQWRAgEAAAABkgIBAAAAAasCAgAAAAGyAgEAAAABswICAAAAAQcMAADkBAAgDgAA5gQAIA8AAOMEACCRAgIAAAABkgIBAAAAAa0CAgAAAAGuAgIAAAABAgAAACgAICIAANcGACADAAAAJQAgIgAA1wYAICMAANsGACAJAAAAJQAgDAAAwQQAIA4AAL8EACAPAADABAAgGwAA2wYAIJECAgDyAwAhkgIBAPADACGtAgIA8gMAIa4CAgC-BAAhBwwAAMEEACAOAAC_BAAgDwAAwAQAIJECAgDyAwAhkgIBAPADACGtAgIA8gMAIa4CAgC-BAAhAasCAgAAAAEHBAAUBQQCBwwECBAFCRIGCxsJFB8KAgMHAQQAAwEDCAABBgABAQYAAQMEAAgGAAEKFgcBCQAGAQoXAAEGAAECBgABFQALBQQAEw0ADBAADhIAEBQ2CgIEAA0MIwsBDCQABQQAEgwqCw4mDg8pDhMuDwIQAA4SABADBAARDC8LETAPAgwxABEyAAMMNAAPMwATNQABFDcABAc4AAg5AAs6ABQ7AAABBUUCAQVLAgUEABkoABopABsqABwrAB0AAAAAAAUEABkoABopABsqABwrAB0BBgABAQYAAQMEACIqACMrACQAAAADBAAiKgAjKwAkAQkABgEJAAYDBAApKgAqKwArAAAAAwQAKSoAKisAKwEGAAEBBgABAwQAMCoAMSsAMgAAAAMEADAqADErADIBBgABAQYAAQMEADcqADgrADkAAAADBAA3KgA4KwA5AAAFBAA-KAA_KQBAKgBBKwBCAAAAAAAFBAA-KAA_KQBAKgBBKwBCAAAAAwQASCoASSsASgAAAAMEAEgqAEkrAEoDDQAMEAAOEgAQAw0ADBAADhIAEAUEAE8oAFApAFEqAFIrAFMAAAAAAAUEAE8oAFApAFEqAFIrAFMCBgABFQALAgYAARUACwMEAFgqAFkrAFoAAAADBABYKgBZKwBaAAAFBABfKABgKQBhKgBiKwBjAAAAAAAFBABfKABgKQBhKgBiKwBjAQ6tAg4BDrMCDgUEAGgoAGkpAGoqAGsrAGwAAAAAAAUEAGgoAGkpAGoqAGsrAGwCEAAOEgAQAhAADhIAEAUEAHEoAHIpAHMqAHQrAHUAAAAAAAUEAHEoAHIpAHMqAHQrAHUBBgABAQYAAQMEAHoqAHsrAHwAAAADBAB6KgB7KwB8AAAAAwQAggEqAIMBKwCEAQAAAAMEAIIBKgCDASsAhAEAAAUEAIkBKACKASkAiwEqAIwBKwCNAQAAAAAABQQAiQEoAIoBKQCLASoAjAErAI0BFgIBFzwBGD0BGT4BGj8BHEEBHUMVHkQWH0cBIEkVIUoXJEwBJU0BJk4VLFEYLVIeLlQGL1UGMFcGMVgGMlkGM1sGNF0VNV4fNmAGN2IVOGMgOWQGOmUGO2YVPGkhPWolPmsHP2wHQG0HQW4HQm8HQ3EHRHMVRXQmRnYHR3gVSHknSXoHSnsHS3wVTH8oTYABLE6BAQRPggEEUIMBBFGEAQRShQEEU4cBBFSJARVVigEtVowBBFeOARVYjwEuWZABBFqRAQRbkgEVXJUBL12WATNelwEFX5gBBWCZAQVhmgEFYpsBBWOdAQVknwEVZaABNGaiAQVnpAEVaKUBNWmmAQVqpwEFa6gBFWyrATZtrAE6bq4BAm-vAQJwsQECcbIBAnKzAQJztQECdLcBFXW4ATt2ugECd7wBFXi9ATx5vgECer8BAnvAARV8wwE9fcQBQ37GAUR_xwFEgAHKAUSBAcsBRIIBzAFEgwHOAUSEAdABFYUB0QFFhgHTAUSHAdUBFYgB1gFGiQHXAUSKAdgBRIsB2QEVjAHcAUeNAd0BS44B3gELjwHfAQuQAeABC5EB4QELkgHiAQuTAeQBC5QB5gEVlQHnAUyWAekBC5cB6wEVmAHsAU2ZAe0BC5oB7gELmwHvARWcAfIBTp0B8wFUngH0AQqfAfUBCqAB9gEKoQH3AQqiAfgBCqMB-gEKpAH8ARWlAf0BVaYB_wEKpwGBAhWoAYICVqkBgwIKqgGEAgqrAYUCFawBiAJXrQGJAluuAYsCDK8BjAIMsAGPAgyxAZACDLIBkQIMswGTAgy0AZUCFbUBlgJctgGYAgy3AZoCFbgBmwJduQGcAgy6AZ0CDLsBngIVvAGhAl69AaICZL4BowIOvwGkAg7AAaUCDsEBpgIOwgGnAg7DAakCDsQBqwIVxQGsAmXGAa8CDscBsQIVyAGyAmbJAbQCDsoBtQIOywG2AhXMAbkCZ80BugJtzgG7Ag_PAbwCD9ABvQIP0QG-Ag_SAb8CD9MBwQIP1AHDAhXVAcQCbtYBxgIP1wHIAhXYAckCb9kBygIP2gHLAg_bAcwCFdwBzwJw3QHQAnbeAdECCd8B0gIJ4AHTAgnhAdQCCeIB1QIJ4wHXAgnkAdkCFeUB2gJ35gHcAgnnAd4CFegB3wJ46QHgAgnqAeECCesB4gIV7AHlAnntAeYCfe4B6AJ-7wHpAn7wAewCfvEB7QJ-8gHuAn7zAfACfvQB8gIV9QHzAn_2AfUCfvcB9wIV-AH4AoAB-QH5An76AfoCfvsB-wIV_AH-AoEB_QH_AoUB_gGBAxD_AYIDEIAChQMQgQKGAxCCAocDEIMCiQMQhAKLAxWFAowDhgGGAo4DEIcCkAMViAKRA4cBiQKSAxCKApMDEIsClAMVjAKXA4gBjQKYA44B" } async function decodeBase64AsWasm(wasmBase64: string): Promise { @@ -318,6 +318,16 @@ export interface PrismaClient< */ get licenseKey(): Prisma.LicenseKeyDelegate; + /** + * `prisma.apiKey`: Exposes CRUD operations for the **ApiKey** model. + * Example usage: + * ```ts + * // Fetch zero or more ApiKeys + * const apiKeys = await prisma.apiKey.findMany() + * ``` + */ + get apiKey(): Prisma.ApiKeyDelegate; + /** * `prisma.subscriptionLevel`: Exposes CRUD operations for the **SubscriptionLevel** model. * Example usage: diff --git a/src/lib/generated/prisma/internal/prismaNamespace.ts b/src/lib/generated/prisma/internal/prismaNamespace.ts index ac5ec73..d1b5fb6 100644 --- a/src/lib/generated/prisma/internal/prismaNamespace.ts +++ b/src/lib/generated/prisma/internal/prismaNamespace.ts @@ -397,6 +397,7 @@ export const ModelName = { ProclamationCategory: 'ProclamationCategory', ProclamationCategorySubscriptionLevel: 'ProclamationCategorySubscriptionLevel', LicenseKey: 'LicenseKey', + ApiKey: 'ApiKey', SubscriptionLevel: 'SubscriptionLevel' } as const @@ -413,7 +414,7 @@ export type TypeMap + fields: Prisma.ApiKeyFieldRefs + operations: { + findUnique: { + args: Prisma.ApiKeyFindUniqueArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.ApiKeyFindUniqueOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findFirst: { + args: Prisma.ApiKeyFindFirstArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.ApiKeyFindFirstOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findMany: { + args: Prisma.ApiKeyFindManyArgs + result: runtime.Types.Utils.PayloadToResult[] + } + create: { + args: Prisma.ApiKeyCreateArgs + result: runtime.Types.Utils.PayloadToResult + } + createMany: { + args: Prisma.ApiKeyCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.ApiKeyCreateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + delete: { + args: Prisma.ApiKeyDeleteArgs + result: runtime.Types.Utils.PayloadToResult + } + update: { + args: Prisma.ApiKeyUpdateArgs + result: runtime.Types.Utils.PayloadToResult + } + deleteMany: { + args: Prisma.ApiKeyDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.ApiKeyUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.ApiKeyUpdateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + upsert: { + args: Prisma.ApiKeyUpsertArgs + result: runtime.Types.Utils.PayloadToResult + } + aggregate: { + args: Prisma.ApiKeyAggregateArgs + result: runtime.Types.Utils.Optional + } + groupBy: { + args: Prisma.ApiKeyGroupByArgs + result: runtime.Types.Utils.Optional[] + } + count: { + args: Prisma.ApiKeyCountArgs + result: runtime.Types.Utils.Optional | number + } + } + } SubscriptionLevel: { payload: Prisma.$SubscriptionLevelPayload fields: Prisma.SubscriptionLevelFieldRefs @@ -1648,6 +1723,18 @@ export const LicenseKeyScalarFieldEnum = { export type LicenseKeyScalarFieldEnum = (typeof LicenseKeyScalarFieldEnum)[keyof typeof LicenseKeyScalarFieldEnum] +export const ApiKeyScalarFieldEnum = { + id: 'id', + keyPrefix: 'keyPrefix', + keyHash: 'keyHash', + createdAt: 'createdAt', + expiresAt: 'expiresAt', + revokedAt: 'revokedAt' +} as const + +export type ApiKeyScalarFieldEnum = (typeof ApiKeyScalarFieldEnum)[keyof typeof ApiKeyScalarFieldEnum] + + export const SubscriptionLevelScalarFieldEnum = { id: 'id', name: 'name', @@ -1872,6 +1959,7 @@ export type GlobalOmitConfig = { proclamationCategory?: Prisma.ProclamationCategoryOmit proclamationCategorySubscriptionLevel?: Prisma.ProclamationCategorySubscriptionLevelOmit licenseKey?: Prisma.LicenseKeyOmit + apiKey?: Prisma.ApiKeyOmit subscriptionLevel?: Prisma.SubscriptionLevelOmit } diff --git a/src/lib/generated/prisma/internal/prismaNamespaceBrowser.ts b/src/lib/generated/prisma/internal/prismaNamespaceBrowser.ts index 8ed4b78..31e7cae 100644 --- a/src/lib/generated/prisma/internal/prismaNamespaceBrowser.ts +++ b/src/lib/generated/prisma/internal/prismaNamespaceBrowser.ts @@ -64,6 +64,7 @@ export const ModelName = { ProclamationCategory: 'ProclamationCategory', ProclamationCategorySubscriptionLevel: 'ProclamationCategorySubscriptionLevel', LicenseKey: 'LicenseKey', + ApiKey: 'ApiKey', SubscriptionLevel: 'SubscriptionLevel' } as const @@ -239,6 +240,18 @@ export const LicenseKeyScalarFieldEnum = { export type LicenseKeyScalarFieldEnum = (typeof LicenseKeyScalarFieldEnum)[keyof typeof LicenseKeyScalarFieldEnum] +export const ApiKeyScalarFieldEnum = { + id: 'id', + keyPrefix: 'keyPrefix', + keyHash: 'keyHash', + createdAt: 'createdAt', + expiresAt: 'expiresAt', + revokedAt: 'revokedAt' +} as const + +export type ApiKeyScalarFieldEnum = (typeof ApiKeyScalarFieldEnum)[keyof typeof ApiKeyScalarFieldEnum] + + export const SubscriptionLevelScalarFieldEnum = { id: 'id', name: 'name', diff --git a/src/lib/generated/prisma/models.ts b/src/lib/generated/prisma/models.ts index 2885cbf..9257ffd 100644 --- a/src/lib/generated/prisma/models.ts +++ b/src/lib/generated/prisma/models.ts @@ -21,5 +21,6 @@ export type * from './models/SolfeggioFrequency.ts' export type * from './models/ProclamationCategory.ts' export type * from './models/ProclamationCategorySubscriptionLevel.ts' export type * from './models/LicenseKey.ts' +export type * from './models/ApiKey.ts' export type * from './models/SubscriptionLevel.ts' export type * from './commonInputTypes.ts' \ No newline at end of file diff --git a/src/lib/generated/prisma/models/ApiKey.ts b/src/lib/generated/prisma/models/ApiKey.ts new file mode 100644 index 0000000..2bbf780 --- /dev/null +++ b/src/lib/generated/prisma/models/ApiKey.ts @@ -0,0 +1,1177 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file exports the `ApiKey` model and its related types. + * + * 🟢 You can import this file directly. + */ +import type * as runtime from "@prisma/client/runtime/client" +import type * as $Enums from "../enums.ts" +import type * as Prisma from "../internal/prismaNamespace.ts" + +/** + * Model ApiKey + * + */ +export type ApiKeyModel = runtime.Types.Result.DefaultSelection + +export type AggregateApiKey = { + _count: ApiKeyCountAggregateOutputType | null + _min: ApiKeyMinAggregateOutputType | null + _max: ApiKeyMaxAggregateOutputType | null +} + +export type ApiKeyMinAggregateOutputType = { + id: string | null + keyPrefix: string | null + keyHash: string | null + createdAt: Date | null + expiresAt: Date | null + revokedAt: Date | null +} + +export type ApiKeyMaxAggregateOutputType = { + id: string | null + keyPrefix: string | null + keyHash: string | null + createdAt: Date | null + expiresAt: Date | null + revokedAt: Date | null +} + +export type ApiKeyCountAggregateOutputType = { + id: number + keyPrefix: number + keyHash: number + createdAt: number + expiresAt: number + revokedAt: number + _all: number +} + + +export type ApiKeyMinAggregateInputType = { + id?: true + keyPrefix?: true + keyHash?: true + createdAt?: true + expiresAt?: true + revokedAt?: true +} + +export type ApiKeyMaxAggregateInputType = { + id?: true + keyPrefix?: true + keyHash?: true + createdAt?: true + expiresAt?: true + revokedAt?: true +} + +export type ApiKeyCountAggregateInputType = { + id?: true + keyPrefix?: true + keyHash?: true + createdAt?: true + expiresAt?: true + revokedAt?: true + _all?: true +} + +export type ApiKeyAggregateArgs = { + /** + * Filter which ApiKey to aggregate. + */ + where?: Prisma.ApiKeyWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of ApiKeys to fetch. + */ + orderBy?: Prisma.ApiKeyOrderByWithRelationInput | Prisma.ApiKeyOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: Prisma.ApiKeyWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` ApiKeys from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` ApiKeys. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned ApiKeys + **/ + _count?: true | ApiKeyCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: ApiKeyMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: ApiKeyMaxAggregateInputType +} + +export type GetApiKeyAggregateType = { + [P in keyof T & keyof AggregateApiKey]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType +} + + + + +export type ApiKeyGroupByArgs = { + where?: Prisma.ApiKeyWhereInput + orderBy?: Prisma.ApiKeyOrderByWithAggregationInput | Prisma.ApiKeyOrderByWithAggregationInput[] + by: Prisma.ApiKeyScalarFieldEnum[] | Prisma.ApiKeyScalarFieldEnum + having?: Prisma.ApiKeyScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: ApiKeyCountAggregateInputType | true + _min?: ApiKeyMinAggregateInputType + _max?: ApiKeyMaxAggregateInputType +} + +export type ApiKeyGroupByOutputType = { + id: string + keyPrefix: string + keyHash: string + createdAt: Date + expiresAt: Date | null + revokedAt: Date | null + _count: ApiKeyCountAggregateOutputType | null + _min: ApiKeyMinAggregateOutputType | null + _max: ApiKeyMaxAggregateOutputType | null +} + +export type GetApiKeyGroupByPayload = Prisma.PrismaPromise< + Array< + Prisma.PickEnumerable & + { + [P in ((keyof T) & (keyof ApiKeyGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType + } + > + > + + + +export type ApiKeyWhereInput = { + AND?: Prisma.ApiKeyWhereInput | Prisma.ApiKeyWhereInput[] + OR?: Prisma.ApiKeyWhereInput[] + NOT?: Prisma.ApiKeyWhereInput | Prisma.ApiKeyWhereInput[] + id?: Prisma.StringFilter<"ApiKey"> | string + keyPrefix?: Prisma.StringFilter<"ApiKey"> | string + keyHash?: Prisma.StringFilter<"ApiKey"> | string + createdAt?: Prisma.DateTimeFilter<"ApiKey"> | Date | string + expiresAt?: Prisma.DateTimeNullableFilter<"ApiKey"> | Date | string | null + revokedAt?: Prisma.DateTimeNullableFilter<"ApiKey"> | Date | string | null +} + +export type ApiKeyOrderByWithRelationInput = { + id?: Prisma.SortOrder + keyPrefix?: Prisma.SortOrder + keyHash?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + expiresAt?: Prisma.SortOrderInput | Prisma.SortOrder + revokedAt?: Prisma.SortOrderInput | Prisma.SortOrder +} + +export type ApiKeyWhereUniqueInput = Prisma.AtLeast<{ + id?: string + keyHash?: string + AND?: Prisma.ApiKeyWhereInput | Prisma.ApiKeyWhereInput[] + OR?: Prisma.ApiKeyWhereInput[] + NOT?: Prisma.ApiKeyWhereInput | Prisma.ApiKeyWhereInput[] + keyPrefix?: Prisma.StringFilter<"ApiKey"> | string + createdAt?: Prisma.DateTimeFilter<"ApiKey"> | Date | string + expiresAt?: Prisma.DateTimeNullableFilter<"ApiKey"> | Date | string | null + revokedAt?: Prisma.DateTimeNullableFilter<"ApiKey"> | Date | string | null +}, "id" | "keyHash"> + +export type ApiKeyOrderByWithAggregationInput = { + id?: Prisma.SortOrder + keyPrefix?: Prisma.SortOrder + keyHash?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + expiresAt?: Prisma.SortOrderInput | Prisma.SortOrder + revokedAt?: Prisma.SortOrderInput | Prisma.SortOrder + _count?: Prisma.ApiKeyCountOrderByAggregateInput + _max?: Prisma.ApiKeyMaxOrderByAggregateInput + _min?: Prisma.ApiKeyMinOrderByAggregateInput +} + +export type ApiKeyScalarWhereWithAggregatesInput = { + AND?: Prisma.ApiKeyScalarWhereWithAggregatesInput | Prisma.ApiKeyScalarWhereWithAggregatesInput[] + OR?: Prisma.ApiKeyScalarWhereWithAggregatesInput[] + NOT?: Prisma.ApiKeyScalarWhereWithAggregatesInput | Prisma.ApiKeyScalarWhereWithAggregatesInput[] + id?: Prisma.StringWithAggregatesFilter<"ApiKey"> | string + keyPrefix?: Prisma.StringWithAggregatesFilter<"ApiKey"> | string + keyHash?: Prisma.StringWithAggregatesFilter<"ApiKey"> | string + createdAt?: Prisma.DateTimeWithAggregatesFilter<"ApiKey"> | Date | string + expiresAt?: Prisma.DateTimeNullableWithAggregatesFilter<"ApiKey"> | Date | string | null + revokedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"ApiKey"> | Date | string | null +} + +export type ApiKeyCreateInput = { + id?: string + keyPrefix: string + keyHash: string + createdAt?: Date | string + expiresAt?: Date | string | null + revokedAt?: Date | string | null +} + +export type ApiKeyUncheckedCreateInput = { + id?: string + keyPrefix: string + keyHash: string + createdAt?: Date | string + expiresAt?: Date | string | null + revokedAt?: Date | string | null +} + +export type ApiKeyUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + keyPrefix?: Prisma.StringFieldUpdateOperationsInput | string + keyHash?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + expiresAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + revokedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null +} + +export type ApiKeyUncheckedUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + keyPrefix?: Prisma.StringFieldUpdateOperationsInput | string + keyHash?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + expiresAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + revokedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null +} + +export type ApiKeyCreateManyInput = { + id?: string + keyPrefix: string + keyHash: string + createdAt?: Date | string + expiresAt?: Date | string | null + revokedAt?: Date | string | null +} + +export type ApiKeyUpdateManyMutationInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + keyPrefix?: Prisma.StringFieldUpdateOperationsInput | string + keyHash?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + expiresAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + revokedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null +} + +export type ApiKeyUncheckedUpdateManyInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + keyPrefix?: Prisma.StringFieldUpdateOperationsInput | string + keyHash?: Prisma.StringFieldUpdateOperationsInput | string + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + expiresAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + revokedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null +} + +export type ApiKeyCountOrderByAggregateInput = { + id?: Prisma.SortOrder + keyPrefix?: Prisma.SortOrder + keyHash?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + expiresAt?: Prisma.SortOrder + revokedAt?: Prisma.SortOrder +} + +export type ApiKeyMaxOrderByAggregateInput = { + id?: Prisma.SortOrder + keyPrefix?: Prisma.SortOrder + keyHash?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + expiresAt?: Prisma.SortOrder + revokedAt?: Prisma.SortOrder +} + +export type ApiKeyMinOrderByAggregateInput = { + id?: Prisma.SortOrder + keyPrefix?: Prisma.SortOrder + keyHash?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + expiresAt?: Prisma.SortOrder + revokedAt?: Prisma.SortOrder +} + + + +export type ApiKeySelect = runtime.Types.Extensions.GetSelect<{ + id?: boolean + keyPrefix?: boolean + keyHash?: boolean + createdAt?: boolean + expiresAt?: boolean + revokedAt?: boolean +}, ExtArgs["result"]["apiKey"]> + +export type ApiKeySelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + keyPrefix?: boolean + keyHash?: boolean + createdAt?: boolean + expiresAt?: boolean + revokedAt?: boolean +}, ExtArgs["result"]["apiKey"]> + +export type ApiKeySelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + keyPrefix?: boolean + keyHash?: boolean + createdAt?: boolean + expiresAt?: boolean + revokedAt?: boolean +}, ExtArgs["result"]["apiKey"]> + +export type ApiKeySelectScalar = { + id?: boolean + keyPrefix?: boolean + keyHash?: boolean + createdAt?: boolean + expiresAt?: boolean + revokedAt?: boolean +} + +export type ApiKeyOmit = runtime.Types.Extensions.GetOmit<"id" | "keyPrefix" | "keyHash" | "createdAt" | "expiresAt" | "revokedAt", ExtArgs["result"]["apiKey"]> + +export type $ApiKeyPayload = { + name: "ApiKey" + objects: {} + scalars: runtime.Types.Extensions.GetPayloadResult<{ + id: string + keyPrefix: string + keyHash: string + createdAt: Date + expiresAt: Date | null + revokedAt: Date | null + }, ExtArgs["result"]["apiKey"]> + composites: {} +} + +export type ApiKeyGetPayload = runtime.Types.Result.GetResult + +export type ApiKeyCountArgs = + Omit & { + select?: ApiKeyCountAggregateInputType | true + } + +export interface ApiKeyDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['ApiKey'], meta: { name: 'ApiKey' } } + /** + * Find zero or one ApiKey that matches the filter. + * @param {ApiKeyFindUniqueArgs} args - Arguments to find a ApiKey + * @example + * // Get one ApiKey + * const apiKey = await prisma.apiKey.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__ApiKeyClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one ApiKey that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {ApiKeyFindUniqueOrThrowArgs} args - Arguments to find a ApiKey + * @example + * // Get one ApiKey + * const apiKey = await prisma.apiKey.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__ApiKeyClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first ApiKey that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ApiKeyFindFirstArgs} args - Arguments to find a ApiKey + * @example + * // Get one ApiKey + * const apiKey = await prisma.apiKey.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__ApiKeyClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first ApiKey that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ApiKeyFindFirstOrThrowArgs} args - Arguments to find a ApiKey + * @example + * // Get one ApiKey + * const apiKey = await prisma.apiKey.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__ApiKeyClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more ApiKeys that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ApiKeyFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all ApiKeys + * const apiKeys = await prisma.apiKey.findMany() + * + * // Get first 10 ApiKeys + * const apiKeys = await prisma.apiKey.findMany({ take: 10 }) + * + * // Only select the `id` + * const apiKeyWithIdOnly = await prisma.apiKey.findMany({ select: { id: true } }) + * + */ + findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> + + /** + * Create a ApiKey. + * @param {ApiKeyCreateArgs} args - Arguments to create a ApiKey. + * @example + * // Create one ApiKey + * const ApiKey = await prisma.apiKey.create({ + * data: { + * // ... data to create a ApiKey + * } + * }) + * + */ + create(args: Prisma.SelectSubset>): Prisma.Prisma__ApiKeyClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many ApiKeys. + * @param {ApiKeyCreateManyArgs} args - Arguments to create many ApiKeys. + * @example + * // Create many ApiKeys + * const apiKey = await prisma.apiKey.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Create many ApiKeys and returns the data saved in the database. + * @param {ApiKeyCreateManyAndReturnArgs} args - Arguments to create many ApiKeys. + * @example + * // Create many ApiKeys + * const apiKey = await prisma.apiKey.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many ApiKeys and only return the `id` + * const apiKeyWithIdOnly = await prisma.apiKey.createManyAndReturn({ + * select: { id: true }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> + + /** + * Delete a ApiKey. + * @param {ApiKeyDeleteArgs} args - Arguments to delete one ApiKey. + * @example + * // Delete one ApiKey + * const ApiKey = await prisma.apiKey.delete({ + * where: { + * // ... filter to delete one ApiKey + * } + * }) + * + */ + delete(args: Prisma.SelectSubset>): Prisma.Prisma__ApiKeyClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one ApiKey. + * @param {ApiKeyUpdateArgs} args - Arguments to update one ApiKey. + * @example + * // Update one ApiKey + * const apiKey = await prisma.apiKey.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: Prisma.SelectSubset>): Prisma.Prisma__ApiKeyClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more ApiKeys. + * @param {ApiKeyDeleteManyArgs} args - Arguments to filter ApiKeys to delete. + * @example + * // Delete a few ApiKeys + * const { count } = await prisma.apiKey.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more ApiKeys. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ApiKeyUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many ApiKeys + * const apiKey = await prisma.apiKey.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more ApiKeys and returns the data updated in the database. + * @param {ApiKeyUpdateManyAndReturnArgs} args - Arguments to update many ApiKeys. + * @example + * // Update many ApiKeys + * const apiKey = await prisma.apiKey.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more ApiKeys and only return the `id` + * const apiKeyWithIdOnly = await prisma.apiKey.updateManyAndReturn({ + * select: { id: true }, + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> + + /** + * Create or update one ApiKey. + * @param {ApiKeyUpsertArgs} args - Arguments to update or create a ApiKey. + * @example + * // Update or create a ApiKey + * const apiKey = await prisma.apiKey.upsert({ + * create: { + * // ... data to create a ApiKey + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the ApiKey we want to update + * } + * }) + */ + upsert(args: Prisma.SelectSubset>): Prisma.Prisma__ApiKeyClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of ApiKeys. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ApiKeyCountArgs} args - Arguments to filter ApiKeys to count. + * @example + * // Count the number of ApiKeys + * const count = await prisma.apiKey.count({ + * where: { + * // ... the filter for the ApiKeys we want to count + * } + * }) + **/ + count( + args?: Prisma.Subset, + ): Prisma.PrismaPromise< + T extends runtime.Types.Utils.Record<'select', any> + ? T['select'] extends true + ? number + : Prisma.GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a ApiKey. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ApiKeyAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Prisma.Subset): Prisma.PrismaPromise> + + /** + * Group by ApiKey. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {ApiKeyGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends ApiKeyGroupByArgs, + HasSelectOrTake extends Prisma.Or< + Prisma.Extends<'skip', Prisma.Keys>, + Prisma.Extends<'take', Prisma.Keys> + >, + OrderByArg extends Prisma.True extends HasSelectOrTake + ? { orderBy: ApiKeyGroupByArgs['orderBy'] } + : { orderBy?: ApiKeyGroupByArgs['orderBy'] }, + OrderFields extends Prisma.ExcludeUnderscoreKeys>>, + ByFields extends Prisma.MaybeTupleToUnion, + ByValid extends Prisma.Has, + HavingFields extends Prisma.GetHavingFields, + HavingValid extends Prisma.Has, + ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, + InputErrors extends ByEmpty extends Prisma.True + ? `Error: "by" must not be empty.` + : HavingValid extends Prisma.False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetApiKeyGroupByPayload : Prisma.PrismaPromise +/** + * Fields of the ApiKey model + */ +readonly fields: ApiKeyFieldRefs; +} + +/** + * The delegate class that acts as a "Promise-like" for ApiKey. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ +export interface Prisma__ApiKeyClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise +} + + + + +/** + * Fields of the ApiKey model + */ +export interface ApiKeyFieldRefs { + readonly id: Prisma.FieldRef<"ApiKey", 'String'> + readonly keyPrefix: Prisma.FieldRef<"ApiKey", 'String'> + readonly keyHash: Prisma.FieldRef<"ApiKey", 'String'> + readonly createdAt: Prisma.FieldRef<"ApiKey", 'DateTime'> + readonly expiresAt: Prisma.FieldRef<"ApiKey", 'DateTime'> + readonly revokedAt: Prisma.FieldRef<"ApiKey", 'DateTime'> +} + + +// Custom InputTypes +/** + * ApiKey findUnique + */ +export type ApiKeyFindUniqueArgs = { + /** + * Select specific fields to fetch from the ApiKey + */ + select?: Prisma.ApiKeySelect | null + /** + * Omit specific fields from the ApiKey + */ + omit?: Prisma.ApiKeyOmit | null + /** + * Filter, which ApiKey to fetch. + */ + where: Prisma.ApiKeyWhereUniqueInput +} + +/** + * ApiKey findUniqueOrThrow + */ +export type ApiKeyFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the ApiKey + */ + select?: Prisma.ApiKeySelect | null + /** + * Omit specific fields from the ApiKey + */ + omit?: Prisma.ApiKeyOmit | null + /** + * Filter, which ApiKey to fetch. + */ + where: Prisma.ApiKeyWhereUniqueInput +} + +/** + * ApiKey findFirst + */ +export type ApiKeyFindFirstArgs = { + /** + * Select specific fields to fetch from the ApiKey + */ + select?: Prisma.ApiKeySelect | null + /** + * Omit specific fields from the ApiKey + */ + omit?: Prisma.ApiKeyOmit | null + /** + * Filter, which ApiKey to fetch. + */ + where?: Prisma.ApiKeyWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of ApiKeys to fetch. + */ + orderBy?: Prisma.ApiKeyOrderByWithRelationInput | Prisma.ApiKeyOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for ApiKeys. + */ + cursor?: Prisma.ApiKeyWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` ApiKeys from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` ApiKeys. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of ApiKeys. + */ + distinct?: Prisma.ApiKeyScalarFieldEnum | Prisma.ApiKeyScalarFieldEnum[] +} + +/** + * ApiKey findFirstOrThrow + */ +export type ApiKeyFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the ApiKey + */ + select?: Prisma.ApiKeySelect | null + /** + * Omit specific fields from the ApiKey + */ + omit?: Prisma.ApiKeyOmit | null + /** + * Filter, which ApiKey to fetch. + */ + where?: Prisma.ApiKeyWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of ApiKeys to fetch. + */ + orderBy?: Prisma.ApiKeyOrderByWithRelationInput | Prisma.ApiKeyOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for ApiKeys. + */ + cursor?: Prisma.ApiKeyWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` ApiKeys from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` ApiKeys. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of ApiKeys. + */ + distinct?: Prisma.ApiKeyScalarFieldEnum | Prisma.ApiKeyScalarFieldEnum[] +} + +/** + * ApiKey findMany + */ +export type ApiKeyFindManyArgs = { + /** + * Select specific fields to fetch from the ApiKey + */ + select?: Prisma.ApiKeySelect | null + /** + * Omit specific fields from the ApiKey + */ + omit?: Prisma.ApiKeyOmit | null + /** + * Filter, which ApiKeys to fetch. + */ + where?: Prisma.ApiKeyWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of ApiKeys to fetch. + */ + orderBy?: Prisma.ApiKeyOrderByWithRelationInput | Prisma.ApiKeyOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing ApiKeys. + */ + cursor?: Prisma.ApiKeyWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` ApiKeys from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` ApiKeys. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of ApiKeys. + */ + distinct?: Prisma.ApiKeyScalarFieldEnum | Prisma.ApiKeyScalarFieldEnum[] +} + +/** + * ApiKey create + */ +export type ApiKeyCreateArgs = { + /** + * Select specific fields to fetch from the ApiKey + */ + select?: Prisma.ApiKeySelect | null + /** + * Omit specific fields from the ApiKey + */ + omit?: Prisma.ApiKeyOmit | null + /** + * The data needed to create a ApiKey. + */ + data: Prisma.XOR +} + +/** + * ApiKey createMany + */ +export type ApiKeyCreateManyArgs = { + /** + * The data used to create many ApiKeys. + */ + data: Prisma.ApiKeyCreateManyInput | Prisma.ApiKeyCreateManyInput[] + skipDuplicates?: boolean +} + +/** + * ApiKey createManyAndReturn + */ +export type ApiKeyCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the ApiKey + */ + select?: Prisma.ApiKeySelectCreateManyAndReturn | null + /** + * Omit specific fields from the ApiKey + */ + omit?: Prisma.ApiKeyOmit | null + /** + * The data used to create many ApiKeys. + */ + data: Prisma.ApiKeyCreateManyInput | Prisma.ApiKeyCreateManyInput[] + skipDuplicates?: boolean +} + +/** + * ApiKey update + */ +export type ApiKeyUpdateArgs = { + /** + * Select specific fields to fetch from the ApiKey + */ + select?: Prisma.ApiKeySelect | null + /** + * Omit specific fields from the ApiKey + */ + omit?: Prisma.ApiKeyOmit | null + /** + * The data needed to update a ApiKey. + */ + data: Prisma.XOR + /** + * Choose, which ApiKey to update. + */ + where: Prisma.ApiKeyWhereUniqueInput +} + +/** + * ApiKey updateMany + */ +export type ApiKeyUpdateManyArgs = { + /** + * The data used to update ApiKeys. + */ + data: Prisma.XOR + /** + * Filter which ApiKeys to update + */ + where?: Prisma.ApiKeyWhereInput + /** + * Limit how many ApiKeys to update. + */ + limit?: number +} + +/** + * ApiKey updateManyAndReturn + */ +export type ApiKeyUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the ApiKey + */ + select?: Prisma.ApiKeySelectUpdateManyAndReturn | null + /** + * Omit specific fields from the ApiKey + */ + omit?: Prisma.ApiKeyOmit | null + /** + * The data used to update ApiKeys. + */ + data: Prisma.XOR + /** + * Filter which ApiKeys to update + */ + where?: Prisma.ApiKeyWhereInput + /** + * Limit how many ApiKeys to update. + */ + limit?: number +} + +/** + * ApiKey upsert + */ +export type ApiKeyUpsertArgs = { + /** + * Select specific fields to fetch from the ApiKey + */ + select?: Prisma.ApiKeySelect | null + /** + * Omit specific fields from the ApiKey + */ + omit?: Prisma.ApiKeyOmit | null + /** + * The filter to search for the ApiKey to update in case it exists. + */ + where: Prisma.ApiKeyWhereUniqueInput + /** + * In case the ApiKey found by the `where` argument doesn't exist, create a new ApiKey with this data. + */ + create: Prisma.XOR + /** + * In case the ApiKey was found with the provided `where` argument, update it with this data. + */ + update: Prisma.XOR +} + +/** + * ApiKey delete + */ +export type ApiKeyDeleteArgs = { + /** + * Select specific fields to fetch from the ApiKey + */ + select?: Prisma.ApiKeySelect | null + /** + * Omit specific fields from the ApiKey + */ + omit?: Prisma.ApiKeyOmit | null + /** + * Filter which ApiKey to delete. + */ + where: Prisma.ApiKeyWhereUniqueInput +} + +/** + * ApiKey deleteMany + */ +export type ApiKeyDeleteManyArgs = { + /** + * Filter which ApiKeys to delete + */ + where?: Prisma.ApiKeyWhereInput + /** + * Limit how many ApiKeys to delete. + */ + limit?: number +} + +/** + * ApiKey without action + */ +export type ApiKeyDefaultArgs = { + /** + * Select specific fields to fetch from the ApiKey + */ + select?: Prisma.ApiKeySelect | null + /** + * Omit specific fields from the ApiKey + */ + omit?: Prisma.ApiKeyOmit | null +} diff --git a/src/lib/server/api-key.ts b/src/lib/server/api-key.ts new file mode 100644 index 0000000..5676ae1 --- /dev/null +++ b/src/lib/server/api-key.ts @@ -0,0 +1,81 @@ +import { randomBytes, createHash } from 'node:crypto'; +import { prisma } from '$lib/db'; + +export type ApiKeyRecord = { + id: string; + keyPrefix: string; + createdAt: Date; + expiresAt: Date | null; + revokedAt: Date | null; +}; + +export type GeneratedKey = { + plaintext: string; + prefix: string; + hash: string; +}; + +export function generateApiKey(): GeneratedKey { + const raw = randomBytes(32); + const hex = raw.toString('hex'); + const plaintext = `sk_${hex}`; + const prefix = plaintext.slice(0, 11); + const hash = createHash('sha256').update(plaintext).digest('hex'); + return { plaintext, prefix, hash }; +} + +export async function validateApiKey(key: string): Promise { + const hash = createHash('sha256').update(key).digest('hex'); + const record = await prisma.apiKey.findUnique({ where: { keyHash: hash } }); + if (!record) return null; + if (record.revokedAt && record.revokedAt <= new Date()) return null; + if (record.expiresAt && record.expiresAt <= new Date()) return null; + return record; +} + +export async function rotateApiKey(emergency = false): Promise<{ + plaintext: string; + prefix: string; + previousExpiresAt: Date | null; + previousRevokedAt: Date | null; +}> { + const now = new Date(); + + const activeKeys = await prisma.apiKey.findMany({ + where: { + revokedAt: null, + OR: [{ expiresAt: null }, { expiresAt: { gt: now } }] + } + }); + + let previousExpiresAt: Date | null = null; + let previousRevokedAt: Date | null = null; + + if (emergency) { + previousRevokedAt = now; + for (const key of activeKeys) { + await prisma.apiKey.update({ + where: { id: key.id }, + data: { revokedAt: now } + }); + } + previousExpiresAt = null; + } else { + const graceEnd = new Date(now.getTime() + 48 * 60 * 60 * 1000); + previousExpiresAt = graceEnd; + for (const key of activeKeys) { + await prisma.apiKey.update({ + where: { id: key.id }, + data: { expiresAt: graceEnd } + }); + } + previousRevokedAt = null; + } + + const { plaintext, prefix, hash } = generateApiKey(); + await prisma.apiKey.create({ + data: { keyPrefix: prefix, keyHash: hash } + }); + + return { plaintext, prefix, previousExpiresAt, previousRevokedAt }; +} diff --git a/src/routes/(protected)/+layout.svelte b/src/routes/(protected)/+layout.svelte index b4ec5d9..2325b25 100644 --- a/src/routes/(protected)/+layout.svelte +++ b/src/routes/(protected)/+layout.svelte @@ -55,6 +55,14 @@ {model.displayName} {/each} + + API Keys + {/if} diff --git a/src/routes/(protected)/admin/api-keys/+page.server.ts b/src/routes/(protected)/admin/api-keys/+page.server.ts new file mode 100644 index 0000000..1d8bba7 --- /dev/null +++ b/src/routes/(protected)/admin/api-keys/+page.server.ts @@ -0,0 +1,72 @@ +import type { PageServerLoad } from './$types'; +import { error } from '@sveltejs/kit'; +import { prisma } from '$lib/db'; +import { rotateApiKey } from '$lib/server/api-key'; +import { ROLES } from '$lib/svelte-admin/roles'; + +export const load: PageServerLoad = async ({ locals, parent }) => { + const { adminUser } = await parent(); + if (adminUser.roleId > ROLES.SUPER) { + throw error(403, 'Only Super admins can manage API keys'); + } + + const now = new Date(); + const activeKey = await prisma.apiKey.findFirst({ + where: { + revokedAt: null, + OR: [{ expiresAt: null }, { expiresAt: { gt: now } }] + }, + select: { keyPrefix: true, createdAt: true, expiresAt: true }, + orderBy: { createdAt: 'desc' } + }); + + const expiredCount = await prisma.apiKey.count({ + where: { + OR: [{ revokedAt: { not: null, lte: now } }, { expiresAt: { not: null, lte: now } }] + } + }); + + return { + activeKey: activeKey + ? { + prefix: activeKey.keyPrefix, + createdAt: activeKey.createdAt.toISOString(), + expiresAt: activeKey.expiresAt?.toISOString() ?? null + } + : null, + totalRotated: expiredCount + }; +}; + +async function viewerRoleId(locals: App.Locals): Promise { + if (!locals.user?.id) return 4; + const user = await prisma.user.findUnique({ + where: { id: locals.user.id }, + select: { roleId: true } + }); + return user?.roleId ?? 4; +} + +export const actions = { + rotate: async ({ locals }) => { + if ((await viewerRoleId(locals)) > ROLES.SUPER) { + return { success: false, error: 'Not authorized' }; + } + + const result = await rotateApiKey(false); + return { + success: true, + newKey: result.plaintext, + mode: 'normal' as const, + expiresAt: result.previousExpiresAt?.toISOString() ?? null + }; + }, + rotateEmergency: async ({ locals }) => { + if ((await viewerRoleId(locals)) > ROLES.SUPER) { + return { success: false, error: 'Not authorized' }; + } + + const result = await rotateApiKey(true); + return { success: true, newKey: result.plaintext, mode: 'emergency' as const }; + } +}; diff --git a/src/routes/(protected)/admin/api-keys/+page.svelte b/src/routes/(protected)/admin/api-keys/+page.svelte new file mode 100644 index 0000000..5884a5c --- /dev/null +++ b/src/routes/(protected)/admin/api-keys/+page.svelte @@ -0,0 +1,148 @@ + + +
+

API Key Management

+ + {#if newKey} +
+

+ {mode === 'emergency' ? 'Emergency Rotation Complete' : 'New API Key Generated'} +

+

+ This key will not be shown again. Copy it now. +

+
+ + {newKey} + +
+
+ + +
+ {#if mode === 'normal' && expiryDate} +

+ The previous key will remain valid until {new Date(expiryDate).toLocaleString()} + to give in-field devices time to update. +

+ {/if} +
+ {/if} + + {#if toastMessage} +
+ {toastMessage} +
+ {/if} + +
+

Current Key Status

+ {#if data.activeKey} +
+
+ Prefix: {data.activeKey.prefix} +
+
Created: {new Date(data.activeKey.createdAt).toLocaleString()}
+ {#if data.activeKey.expiresAt} +
Expires: {new Date(data.activeKey.expiresAt).toLocaleString()}
+ {/if} +
+ {:else} +

No active API key. Generate one below.

+ {/if} + {#if data.totalRotated > 0} +

+ {data.totalRotated} previous key(s) have been rotated. +

+ {/if} +
+ +
+
+ +
+
+ +
+
+