diff --git a/Dockerfile b/Dockerfile index ddf35734..a6df5d08 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,4 +26,4 @@ RUN npm run build EXPOSE 3000 ENV NEXT_TELEMETRY_DISABLED=1 -CMD npx prisma migrate deploy && npm start \ No newline at end of file +CMD npx prisma migrate deploy && npx prisma db seed && npm start \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 8ee20c7e..098130fc 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -100,13 +100,12 @@ model Transaction { id Int @id @default(autoincrement()) userId String provider SubscriptionProvider - transactionId String + transactionId String @unique createdAt DateTime @default(now()) user User @relation(fields: [userId], references: [id], onDelete: Cascade) @@index([userId]) - @@index([transactionId]) } model Project { diff --git a/src/app/api/apple/verify/route.ts b/src/app/api/apple/verify/route.ts index 33cf6ae1..3817569b 100644 --- a/src/app/api/apple/verify/route.ts +++ b/src/app/api/apple/verify/route.ts @@ -1,9 +1,9 @@ import { NextRequest } from "next/server"; import { decodeJwt } from "jose"; -import prisma from "@src/server/db"; import { apiHandler, AuthApiContext } from "@src/lib/utils/api-handler"; import { BodyFieldError, ForbiddenError, Success } from "@src/lib/utils/api-utils"; import * as UserService from "@src/server/service/user-service"; +import * as TransactionService from "@src/server/service/transaction-service"; const APPLE_PRODUCT_ID = "app.scriptio.pro.monthly"; const APPLE_BUNDLE_IDS = ["app.scriptio", "app.scriptio.staging"]; @@ -46,13 +46,7 @@ async function verifyApplePurchase(req: NextRequest, { user }: AuthApiContext) { isSubscriptionCancelled: false, }); - await prisma.transaction.create({ - data: { - userId: user.id, - provider: "APPLE", - transactionId: payload.transactionId, - }, - }); + await TransactionService.createTransactionIfNotExists(user.id, "APPLE", payload.transactionId); return Success(null); } diff --git a/src/app/api/projects/[projectId]/saves/route.ts b/src/app/api/projects/[projectId]/saves/route.ts index b329c024..54d390b1 100644 --- a/src/app/api/projects/[projectId]/saves/route.ts +++ b/src/app/api/projects/[projectId]/saves/route.ts @@ -59,6 +59,10 @@ async function listSaves(req: NextRequest, { routeParams, user }: AuthApiContext } const res = await forwardToWorker(projectId, "GET", "/saves"); + if (!res.ok) { + const text = await res.text(); + throw new Error(`Worker error listing saves: ${text}`); + } const data = await res.json(); return Success(data); } diff --git a/src/app/api/webhooks/apple/route.ts b/src/app/api/webhooks/apple/route.ts index 1bf02e13..39ee350b 100644 --- a/src/app/api/webhooks/apple/route.ts +++ b/src/app/api/webhooks/apple/route.ts @@ -1,7 +1,7 @@ import { NextRequest, NextResponse } from "next/server"; import { decodeJwt } from "jose"; -import prisma from "@src/server/db"; import * as UserService from "@src/server/service/user-service"; +import * as TransactionService from "@src/server/service/transaction-service"; interface AppleNotificationPayload { notificationType: string; @@ -27,9 +27,13 @@ interface AppleRenewalInfo { } async function findUser(transaction: AppleTransactionInfo): Promise<{ id: string } | null> { - if (!transaction.appAccountToken) return null; - const user = await UserService.getUserFromId(transaction.appAccountToken); - return user ? { id: user.id } : null; + if (transaction.appAccountToken) { + const user = await UserService.getUserFromId(transaction.appAccountToken); + if (user) return { id: user.id }; + } + // Fallback: look up via the transaction stored during initial purchase verification + const tx = await TransactionService.findUserByTransactionId(transaction.transactionId); + return tx ? { id: tx.userId } : null; } export async function POST(req: NextRequest) { @@ -59,13 +63,7 @@ export async function POST(req: NextRequest) { subscriptionProvider: "APPLE", isSubscriptionCancelled: false, }); - await prisma.transaction.create({ - data: { - userId: user.id, - provider: "APPLE", - transactionId: transaction.transactionId, - }, - }); + await TransactionService.createTransactionIfNotExists(user.id, "APPLE", transaction.transactionId); break; } diff --git a/src/generated/client/internal/class.ts b/src/generated/client/internal/class.ts index 2c766b49..e46d9c76 100644 --- a/src/generated/client/internal/class.ts +++ b/src/generated/client/internal/class.ts @@ -20,7 +20,7 @@ const config: runtime.GetPrismaClientConfig = { "clientVersion": "7.7.0", "engineVersion": "75cbdc1eb7150937890ad5465d861175c6624711", "activeProvider": "postgresql", - "inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../src/generated/client\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nenum ProjectRole {\n OWNER\n ADMIN\n EDITOR\n VIEWER\n}\n\nenum UserRole {\n USER\n ADMIN\n}\n\nenum SubscriptionProvider {\n STRIPE\n APPLE\n}\n\nmodel User {\n id String @id @default(uuid(7))\n createdAt DateTime @default(now())\n email String @unique\n emailVerified DateTime?\n username String?\n color String?\n role UserRole @default(USER)\n\n isProUntil DateTime?\n isSubscriptionCancelled Boolean @default(false)\n subscriptionProvider SubscriptionProvider?\n\n settings Json?\n\n accounts Account[]\n sessions Session[]\n projects ProjectMember[]\n transactions Transaction[]\n}\n\nmodel Account {\n id String @id @default(cuid())\n userId String\n type String\n provider String\n providerAccountId String\n refresh_token String? @db.Text\n access_token String? @db.Text\n expires_at Int?\n token_type String?\n scope String?\n id_token String? @db.Text\n session_state String?\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n}\n\nmodel Session {\n id String @id @default(cuid())\n sessionToken String @unique\n userId String\n expires DateTime\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n}\n\nmodel VerificationToken {\n identifier String\n token String @unique\n expires DateTime\n\n @@unique([identifier, token])\n}\n\nmodel MagicLinkToken {\n id Int @id @default(autoincrement())\n email String\n tokenHash String @unique\n expiresAt DateTime\n createdAt DateTime @default(now())\n\n desktopNonce String?\n inviteToken String?\n\n @@index([email, createdAt])\n}\n\nmodel Transaction {\n id Int @id @default(autoincrement())\n userId String\n provider SubscriptionProvider\n transactionId String\n createdAt DateTime @default(now())\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId])\n @@index([transactionId])\n}\n\nmodel Project {\n id String @id @default(uuid(7))\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n title String\n description String?\n author String?\n hasPoster Boolean @default(false)\n\n members ProjectMember[]\n invitations ProjectInvitation[]\n}\n\nmodel ProjectMember {\n id Int @id @default(autoincrement())\n role ProjectRole @default(VIEWER)\n\n user User @relation(fields: [userId], references: [id])\n userId String\n project Project @relation(fields: [projectId], references: [id], onDelete: Cascade)\n projectId String\n\n @@unique([userId, projectId])\n}\n\nmodel ProjectInvitation {\n id Int @id @default(autoincrement())\n token String @unique\n email String\n createdAt DateTime @default(now())\n\n project Project @relation(fields: [projectId], references: [id], onDelete: Cascade)\n projectId String\n\n @@unique([email, projectId])\n}\n", + "inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../src/generated/client\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nenum ProjectRole {\n OWNER\n ADMIN\n EDITOR\n VIEWER\n}\n\nenum UserRole {\n USER\n ADMIN\n}\n\nenum SubscriptionProvider {\n STRIPE\n APPLE\n}\n\nmodel User {\n id String @id @default(uuid(7))\n createdAt DateTime @default(now())\n email String @unique\n emailVerified DateTime?\n username String?\n color String?\n role UserRole @default(USER)\n\n isProUntil DateTime?\n isSubscriptionCancelled Boolean @default(false)\n subscriptionProvider SubscriptionProvider?\n\n settings Json?\n\n accounts Account[]\n sessions Session[]\n projects ProjectMember[]\n transactions Transaction[]\n}\n\nmodel Account {\n id String @id @default(cuid())\n userId String\n type String\n provider String\n providerAccountId String\n refresh_token String? @db.Text\n access_token String? @db.Text\n expires_at Int?\n token_type String?\n scope String?\n id_token String? @db.Text\n session_state String?\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n}\n\nmodel Session {\n id String @id @default(cuid())\n sessionToken String @unique\n userId String\n expires DateTime\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n}\n\nmodel VerificationToken {\n identifier String\n token String @unique\n expires DateTime\n\n @@unique([identifier, token])\n}\n\nmodel MagicLinkToken {\n id Int @id @default(autoincrement())\n email String\n tokenHash String @unique\n expiresAt DateTime\n createdAt DateTime @default(now())\n\n desktopNonce String?\n inviteToken String?\n\n @@index([email, createdAt])\n}\n\nmodel Transaction {\n id Int @id @default(autoincrement())\n userId String\n provider SubscriptionProvider\n transactionId String @unique\n createdAt DateTime @default(now())\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId])\n}\n\nmodel Project {\n id String @id @default(uuid(7))\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n title String\n description String?\n author String?\n hasPoster Boolean @default(false)\n\n members ProjectMember[]\n invitations ProjectInvitation[]\n}\n\nmodel ProjectMember {\n id Int @id @default(autoincrement())\n role ProjectRole @default(VIEWER)\n\n user User @relation(fields: [userId], references: [id])\n userId String\n project Project @relation(fields: [projectId], references: [id], onDelete: Cascade)\n projectId String\n\n @@unique([userId, projectId])\n}\n\nmodel ProjectInvitation {\n id Int @id @default(autoincrement())\n token String @unique\n email String\n createdAt DateTime @default(now())\n\n project Project @relation(fields: [projectId], references: [id], onDelete: Cascade)\n projectId String\n\n @@unique([email, projectId])\n}\n", "runtimeDataModel": { "models": {}, "enums": {}, @@ -35,7 +35,7 @@ const config: runtime.GetPrismaClientConfig = { config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"color\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"UserRole\"},{\"name\":\"isProUntil\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"isSubscriptionCancelled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"subscriptionProvider\",\"kind\":\"enum\",\"type\":\"SubscriptionProvider\"},{\"name\":\"settings\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"projects\",\"kind\":\"object\",\"type\":\"ProjectMember\",\"relationName\":\"ProjectMemberToUser\"},{\"name\":\"transactions\",\"kind\":\"object\",\"type\":\"Transaction\",\"relationName\":\"TransactionToUser\"}],\"dbName\":null},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerAccountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"refresh_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"access_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expires_at\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"token_type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"id_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"session_state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"}],\"dbName\":null},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sessionToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expires\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"}],\"dbName\":null},\"VerificationToken\":{\"fields\":[{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expires\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"MagicLinkToken\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"desktopNonce\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"inviteToken\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Transaction\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"provider\",\"kind\":\"enum\",\"type\":\"SubscriptionProvider\"},{\"name\":\"transactionId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TransactionToUser\"}],\"dbName\":null},\"Project\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"author\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"hasPoster\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"members\",\"kind\":\"object\",\"type\":\"ProjectMember\",\"relationName\":\"ProjectToProjectMember\"},{\"name\":\"invitations\",\"kind\":\"object\",\"type\":\"ProjectInvitation\",\"relationName\":\"ProjectToProjectInvitation\"}],\"dbName\":null},\"ProjectMember\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"ProjectRole\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ProjectMemberToUser\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"project\",\"kind\":\"object\",\"type\":\"Project\",\"relationName\":\"ProjectToProjectMember\"},{\"name\":\"projectId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"ProjectInvitation\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"project\",\"kind\":\"object\",\"type\":\"Project\",\"relationName\":\"ProjectToProjectInvitation\"},{\"name\":\"projectId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") config.parameterizationSchema = { strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"accounts\",\"sessions\",\"members\",\"project\",\"invitations\",\"_count\",\"projects\",\"transactions\",\"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\",\"_min\",\"_max\",\"User.groupBy\",\"User.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\",\"_avg\",\"_sum\",\"Account.groupBy\",\"Account.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\",\"VerificationToken.findUnique\",\"VerificationToken.findUniqueOrThrow\",\"VerificationToken.findFirst\",\"VerificationToken.findFirstOrThrow\",\"VerificationToken.findMany\",\"VerificationToken.createOne\",\"VerificationToken.createMany\",\"VerificationToken.createManyAndReturn\",\"VerificationToken.updateOne\",\"VerificationToken.updateMany\",\"VerificationToken.updateManyAndReturn\",\"VerificationToken.upsertOne\",\"VerificationToken.deleteOne\",\"VerificationToken.deleteMany\",\"VerificationToken.groupBy\",\"VerificationToken.aggregate\",\"MagicLinkToken.findUnique\",\"MagicLinkToken.findUniqueOrThrow\",\"MagicLinkToken.findFirst\",\"MagicLinkToken.findFirstOrThrow\",\"MagicLinkToken.findMany\",\"MagicLinkToken.createOne\",\"MagicLinkToken.createMany\",\"MagicLinkToken.createManyAndReturn\",\"MagicLinkToken.updateOne\",\"MagicLinkToken.updateMany\",\"MagicLinkToken.updateManyAndReturn\",\"MagicLinkToken.upsertOne\",\"MagicLinkToken.deleteOne\",\"MagicLinkToken.deleteMany\",\"MagicLinkToken.groupBy\",\"MagicLinkToken.aggregate\",\"Transaction.findUnique\",\"Transaction.findUniqueOrThrow\",\"Transaction.findFirst\",\"Transaction.findFirstOrThrow\",\"Transaction.findMany\",\"Transaction.createOne\",\"Transaction.createMany\",\"Transaction.createManyAndReturn\",\"Transaction.updateOne\",\"Transaction.updateMany\",\"Transaction.updateManyAndReturn\",\"Transaction.upsertOne\",\"Transaction.deleteOne\",\"Transaction.deleteMany\",\"Transaction.groupBy\",\"Transaction.aggregate\",\"Project.findUnique\",\"Project.findUniqueOrThrow\",\"Project.findFirst\",\"Project.findFirstOrThrow\",\"Project.findMany\",\"Project.createOne\",\"Project.createMany\",\"Project.createManyAndReturn\",\"Project.updateOne\",\"Project.updateMany\",\"Project.updateManyAndReturn\",\"Project.upsertOne\",\"Project.deleteOne\",\"Project.deleteMany\",\"Project.groupBy\",\"Project.aggregate\",\"ProjectMember.findUnique\",\"ProjectMember.findUniqueOrThrow\",\"ProjectMember.findFirst\",\"ProjectMember.findFirstOrThrow\",\"ProjectMember.findMany\",\"ProjectMember.createOne\",\"ProjectMember.createMany\",\"ProjectMember.createManyAndReturn\",\"ProjectMember.updateOne\",\"ProjectMember.updateMany\",\"ProjectMember.updateManyAndReturn\",\"ProjectMember.upsertOne\",\"ProjectMember.deleteOne\",\"ProjectMember.deleteMany\",\"ProjectMember.groupBy\",\"ProjectMember.aggregate\",\"ProjectInvitation.findUnique\",\"ProjectInvitation.findUniqueOrThrow\",\"ProjectInvitation.findFirst\",\"ProjectInvitation.findFirstOrThrow\",\"ProjectInvitation.findMany\",\"ProjectInvitation.createOne\",\"ProjectInvitation.createMany\",\"ProjectInvitation.createManyAndReturn\",\"ProjectInvitation.updateOne\",\"ProjectInvitation.updateMany\",\"ProjectInvitation.updateManyAndReturn\",\"ProjectInvitation.upsertOne\",\"ProjectInvitation.deleteOne\",\"ProjectInvitation.deleteMany\",\"ProjectInvitation.groupBy\",\"ProjectInvitation.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"token\",\"email\",\"createdAt\",\"projectId\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"ProjectRole\",\"role\",\"userId\",\"updatedAt\",\"title\",\"description\",\"author\",\"hasPoster\",\"every\",\"some\",\"none\",\"SubscriptionProvider\",\"provider\",\"transactionId\",\"tokenHash\",\"expiresAt\",\"desktopNonce\",\"inviteToken\",\"identifier\",\"expires\",\"identifier_token\",\"sessionToken\",\"type\",\"providerAccountId\",\"refresh_token\",\"access_token\",\"expires_at\",\"token_type\",\"scope\",\"id_token\",\"session_state\",\"emailVerified\",\"username\",\"color\",\"UserRole\",\"isProUntil\",\"isSubscriptionCancelled\",\"subscriptionProvider\",\"settings\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"email_projectId\",\"userId_projectId\",\"provider_providerAccountId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "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-AQAh2AEBAP4BACHaAUAAnAIAIdsBIAD_AQAh3AEAAJ4CwwEj3QEAAJ8CACADAAAAHwAgAQAAMQAwHQAAMgAgAwAAAB8AIAEAACAAMAIAAAEAIAEAAAAFACABAAAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACADAAAAAwAgAQAABAAwAgAABQAgDQMAAJADACCnAQEAAAABuQEBAAAAAcMBAQAAAAHNAQEAAAABzgEBAAAAAc8BAQAAAAHQAQEAAAAB0QECAAAAAdIBAQAAAAHTAQEAAAAB1AEBAAAAAdUBAQAAAAEBEQAAOgAgDKcBAQAAAAG5AQEAAAABwwEBAAAAAc0BAQAAAAHOAQEAAAABzwEBAAAAAdABAQAAAAHRAQIAAAAB0gEBAAAAAdMBAQAAAAHUAQEAAAAB1QEBAAAAAQERAAA8ADABEQAAPAAwDQMAAI8DACCnAQEAwQIAIbkBAQDBAgAhwwEBAMECACHNAQEAwQIAIc4BAQDBAgAhzwEBANQCACHQAQEA1AIAIdEBAgCOAwAh0gEBANQCACHTAQEA1AIAIdQBAQDUAgAh1QEBANQCACECAAAABQAgEQAAPwAgDKcBAQDBAgAhuQEBAMECACHDAQEAwQIAIc0BAQDBAgAhzgEBAMECACHPAQEA1AIAIdABAQDUAgAh0QECAI4DACHSAQEA1AIAIdMBAQDUAgAh1AEBANQCACHVAQEA1AIAIQIAAAADACARAABBACACAAAAAwAgEQAAQQAgAwAAAAUAIBgAADoAIBkAAD8AIAEAAAAFACABAAAAAwAgDAkAAIkDACAeAACMAwAgHwAAiwMAIDAAAIoDACAxAACNAwAgzwEAANACACDQAQAA0AIAINEBAADQAgAg0gEAANACACDTAQAA0AIAINQBAADQAgAg1QEAANACACAPpAEAAJcCADClAQAASAAQpgEAAJcCADCnAQEA8AEAIbkBAQDwAQAhwwEBAPABACHNAQEA8AEAIc4BAQDwAQAhzwEBAP4BACHQAQEA_gEAIdEBAgCYAgAh0gEBAP4BACHTAQEA_gEAIdQBAQD-AQAh1QEBAP4BACEDAAAAAwAgAQAARwAwHQAASAAgAwAAAAMAIAEAAAQAMAIAAAUAIAEAAAAJACABAAAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAMAAAAHACABAAAIADACAAAJACADAAAABwAgAQAACAAwAgAACQAgBQMAAIgDACCnAQEAAAABuQEBAAAAAcoBQAAAAAHMAQEAAAABAREAAFAAIASnAQEAAAABuQEBAAAAAcoBQAAAAAHMAQEAAAABAREAAFIAMAERAABSADAFAwAAhwMAIKcBAQDBAgAhuQEBAMECACHKAUAAwgIAIcwBAQDBAgAhAgAAAAkAIBEAAFUAIASnAQEAwQIAIbkBAQDBAgAhygFAAMICACHMAQEAwQIAIQIAAAAHACARAABXACACAAAABwAgEQAAVwAgAwAAAAkAIBgAAFAAIBkAAFUAIAEAAAAJACABAAAABwAgAwkAAIQDACAeAACGAwAgHwAAhQMAIAekAQAAlgIAMKUBAABeABCmAQAAlgIAMKcBAQDwAQAhuQEBAPABACHKAUAA8QEAIcwBAQDwAQAhAwAAAAcAIAEAAF0AMB0AAF4AIAMAAAAHACABAAAIADACAAAJACAHpAEAAJQCADClAQAAZAAQpgEAAJQCADCoAQEAAAAByQEBAIYCACHKAUAAhwIAIcsBAACVAgAgAQAAAGEAIAEAAABhACAGpAEAAJQCADClAQAAZAAQpgEAAJQCADCoAQEAhgIAIckBAQCGAgAhygFAAIcCACEAAwAAAGQAIAEAAGUAMAIAAGEAIAMAAABkACABAABlADACAABhACADAAAAZAAgAQAAZQAwAgAAYQAgA6gBAQAAAAHJAQEAAAABygFAAAAAAQERAABpACADqAEBAAAAAckBAQAAAAHKAUAAAAABAREAAGsAMAERAABrADADqAEBAMECACHJAQEAwQIAIcoBQADCAgAhAgAAAGEAIBEAAG4AIAOoAQEAwQIAIckBAQDBAgAhygFAAMICACECAAAAZAAgEQAAcAAgAgAAAGQAIBEAAHAAIAMAAABhACAYAABpACAZAABuACABAAAAYQAgAQAAAGQAIAMJAACBAwAgHgAAgwMAIB8AAIIDACAGpAEAAJMCADClAQAAdwAQpgEAAJMCADCoAQEA8AEAIckBAQDwAQAhygFAAPEBACEDAAAAZAAgAQAAdgAwHQAAdwAgAwAAAGQAIAEAAGUAMAIAAGEAIAqkAQAAkQIAMKUBAAB9ABCmAQAAkQIAMKcBAgAAAAGpAQEAhgIAIaoBQACHAgAhxQEBAAAAAcYBQACHAgAhxwEBAIgCACHIAQEAiAIAIQEAAAB6ACABAAAAegAgCqQBAACRAgAwpQEAAH0AEKYBAACRAgAwpwECAJICACGpAQEAhgIAIaoBQACHAgAhxQEBAIYCACHGAUAAhwIAIccBAQCIAgAhyAEBAIgCACECxwEAANACACDIAQAA0AIAIAMAAAB9ACABAAB-ADACAAB6ACADAAAAfQAgAQAAfgAwAgAAegAgAwAAAH0AIAEAAH4AMAIAAHoAIAenAQIAAAABqQEBAAAAAaoBQAAAAAHFAQEAAAABxgFAAAAAAccBAQAAAAHIAQEAAAABAREAAIIBACAHpwECAAAAAakBAQAAAAGqAUAAAAABxQEBAAAAAcYBQAAAAAHHAQEAAAAByAEBAAAAAQERAACEAQAwAREAAIQBADAHpwECAMMCACGpAQEAwQIAIaoBQADCAgAhxQEBAMECACHGAUAAwgIAIccBAQDUAgAhyAEBANQCACECAAAAegAgEQAAhwEAIAenAQIAwwIAIakBAQDBAgAhqgFAAMICACHFAQEAwQIAIcYBQADCAgAhxwEBANQCACHIAQEA1AIAIQIAAAB9ACARAACJAQAgAgAAAH0AIBEAAIkBACADAAAAegAgGAAAggEAIBkAAIcBACABAAAAegAgAQAAAH0AIAcJAAD8AgAgHgAA_wIAIB8AAP4CACAwAAD9AgAgMQAAgAMAIMcBAADQAgAgyAEAANACACAKpAEAAJACADClAQAAkAEAEKYBAACQAgAwpwECAO8BACGpAQEA8AEAIaoBQADxAQAhxQEBAPABACHGAUAA8QEAIccBAQD-AQAhyAEBAP4BACEDAAAAfQAgAQAAjwEAMB0AAJABACADAAAAfQAgAQAAfgAwAgAAegAgAQAAABgAIAEAAAAYACADAAAAFgAgAQAAFwAwAgAAGAAgAwAAABYAIAEAABcAMAIAABgAIAMAAAAWACABAAAXADACAAAYACAGAwAA-wIAIKcBAgAAAAGqAUAAAAABuQEBAAAAAcMBAAAAwwECxAEBAAAAAQERAACYAQAgBacBAgAAAAGqAUAAAAABuQEBAAAAAcMBAAAAwwECxAEBAAAAAQERAACaAQAwAREAAJoBADAGAwAA-gIAIKcBAgDDAgAhqgFAAMICACG5AQEAwQIAIcMBAAD5AsMBIsQBAQDBAgAhAgAAABgAIBEAAJ0BACAFpwECAMMCACGqAUAAwgIAIbkBAQDBAgAhwwEAAPkCwwEixAEBAMECACECAAAAFgAgEQAAnwEAIAIAAAAWACARAACfAQAgAwAAABgAIBgAAJgBACAZAACdAQAgAQAAABgAIAEAAAAWACAFCQAA9AIAIB4AAPcCACAfAAD2AgAgMAAA9QIAIDEAAPgCACAIpAEAAIwCADClAQAApgEAEKYBAACMAgAwpwECAO8BACGqAUAA8QEAIbkBAQDwAQAhwwEAAI0CwwEixAEBAPABACEDAAAAFgAgAQAApQEAMB0AAKYBACADAAAAFgAgAQAAFwAwAgAAGAAgDAYAAIoCACAIAACLAgAgpAEAAIUCADClAQAArAEAEKYBAACFAgAwpwEBAAAAAaoBQACHAgAhugFAAIcCACG7AQEAhgIAIbwBAQCIAgAhvQEBAIgCACG-ASAAiQIAIQEAAACpAQAgAQAAAKkBACAMBgAAigIAIAgAAIsCACCkAQAAhQIAMKUBAACsAQAQpgEAAIUCADCnAQEAhgIAIaoBQACHAgAhugFAAIcCACG7AQEAhgIAIbwBAQCIAgAhvQEBAIgCACG-ASAAiQIAIQQGAADyAgAgCAAA8wIAILwBAADQAgAgvQEAANACACADAAAArAEAIAEAAK0BADACAACpAQAgAwAAAKwBACABAACtAQAwAgAAqQEAIAMAAACsAQAgAQAArQEAMAIAAKkBACAJBgAA8AIAIAgAAPECACCnAQEAAAABqgFAAAAAAboBQAAAAAG7AQEAAAABvAEBAAAAAb0BAQAAAAG-ASAAAAABAREAALEBACAHpwEBAAAAAaoBQAAAAAG6AUAAAAABuwEBAAAAAbwBAQAAAAG9AQEAAAABvgEgAAAAAQERAACzAQAwAREAALMBADAJBgAA1gIAIAgAANcCACCnAQEAwQIAIaoBQADCAgAhugFAAMICACG7AQEAwQIAIbwBAQDUAgAhvQEBANQCACG-ASAA1QIAIQIAAACpAQAgEQAAtgEAIAenAQEAwQIAIaoBQADCAgAhugFAAMICACG7AQEAwQIAIbwBAQDUAgAhvQEBANQCACG-ASAA1QIAIQIAAACsAQAgEQAAuAEAIAIAAACsAQAgEQAAuAEAIAMAAACpAQAgGAAAsQEAIBkAALYBACABAAAAqQEAIAEAAACsAQAgBQkAANECACAeAADTAgAgHwAA0gIAILwBAADQAgAgvQEAANACACAKpAEAAP0BADClAQAAvwEAEKYBAAD9AQAwpwEBAPABACGqAUAA8QEAIboBQADxAQAhuwEBAPABACG8AQEA_gEAIb0BAQD-AQAhvgEgAP8BACEDAAAArAEAIAEAAL4BADAdAAC_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-QEAMKcBAgDvAQAhqwEBAPABACG4AQAA-gG4ASK5AQEA8AEAIQcJAADzAQAgHgAA_AEAIB8AAPwBACCsAQAAALgBAq0BAAAAuAEIrgEAAAC4AQizAQAA-wG4ASIHCQAA8wEAIB4AAPwBACAfAAD8AQAgrAEAAAC4AQKtAQAAALgBCK4BAAAAuAEIswEAAPsBuAEiBKwBAAAAuAECrQEAAAC4AQiuAQAAALgBCLMBAAD8AbgBIgqkAQAA_QEAMKUBAAC_AQAQpgEAAP0BADCnAQEA8AEAIaoBQADxAQAhugFAAPEBACG7AQEA8AEAIbwBAQD-AQAhvQEBAP4BACG-ASAA_wEAIQ4JAACDAgAgHgAAhAIAIB8AAIQCACCsAQEAAAABrQEBAAAABa4BAQAAAAWvAQEAAAABsAEBAAAAAbEBAQAAAAGyAQEAAAABswEBAIICACG0AQEAAAABtQEBAAAAAbYBAQAAAAEFCQAA8wEAIB4AAIECACAfAACBAgAgrAEgAAAAAbMBIACAAgAhBQkAAPMBACAeAACBAgAgHwAAgQIAIKwBIAAAAAGzASAAgAIAIQKsASAAAAABswEgAIECACEOCQAAgwIAIB4AAIQCACAfAACEAgAgrAEBAAAAAa0BAQAAAAWuAQEAAAAFrwEBAAAAAbABAQAAAAGxAQEAAAABsgEBAAAAAbMBAQCCAgAhtAEBAAAAAbUBAQAAAAG2AQEAAAABCKwBAgAAAAGtAQIAAAAFrgECAAAABa8BAgAAAAGwAQIAAAABsQECAAAAAbIBAgAAAAGzAQIAgwIAIQusAQEAAAABrQEBAAAABa4BAQAAAAWvAQEAAAABsAEBAAAAAbEBAQAAAAGyAQEAAAABswEBAIQCACG0AQEAAAABtQEBAAAAAbYBAQAAAAEMBgAAigIAIAgAAIsCACCkAQAAhQIAMKUBAACsAQAQpgEAAIUCADCnAQEAhgIAIaoBQACHAgAhugFAAIcCACG7AQEAhgIAIbwBAQCIAgAhvQEBAIgCACG-ASAAiQIAIQusAQEAAAABrQEBAAAABK4BAQAAAASvAQEAAAABsAEBAAAAAbEBAQAAAAGyAQEAAAABswEBAPYBACG0AQEAAAABtQEBAAAAAbYBAQAAAAEIrAFAAAAAAa0BQAAAAASuAUAAAAAErwFAAAAAAbABQAAAAAGxAUAAAAABsgFAAAAAAbMBQAD0AQAhC6wBAQAAAAGtAQEAAAAFrgEBAAAABa8BAQAAAAGwAQEAAAABsQEBAAAAAbIBAQAAAAGzAQEAhAIAIbQBAQAAAAG1AQEAAAABtgEBAAAAAQKsASAAAAABswEgAIECACEDvwEAAAsAIMABAAALACDBAQAACwAgA78BAAAQACDAAQAAEAAgwQEAABAAIAikAQAAjAIAMKUBAACmAQAQpgEAAIwCADCnAQIA7wEAIaoBQADxAQAhuQEBAPABACHDAQAAjQLDASLEAQEA8AEAIQcJAADzAQAgHgAAjwIAIB8AAI8CACCsAQAAAMMBAq0BAAAAwwEIrgEAAADDAQizAQAAjgLDASIHCQAA8wEAIB4AAI8CACAfAACPAgAgrAEAAADDAQKtAQAAAMMBCK4BAAAAwwEIswEAAI4CwwEiBKwBAAAAwwECrQEAAADDAQiuAQAAAMMBCLMBAACPAsMBIgqkAQAAkAIAMKUBAACQAQAQpgEAAJACADCnAQIA7wEAIakBAQDwAQAhqgFAAPEBACHFAQEA8AEAIcYBQADxAQAhxwEBAP4BACHIAQEA_gEAIQqkAQAAkQIAMKUBAAB9ABCmAQAAkQIAMKcBAgCSAgAhqQEBAIYCACGqAUAAhwIAIcUBAQCGAgAhxgFAAIcCACHHAQEAiAIAIcgBAQCIAgAhCKwBAgAAAAGtAQIAAAAErgECAAAABK8BAgAAAAGwAQIAAAABsQECAAAAAbIBAgAAAAGzAQIA8wEAIQakAQAAkwIAMKUBAAB3ABCmAQAAkwIAMKgBAQDwAQAhyQEBAPABACHKAUAA8QEAIQakAQAAlAIAMKUBAABkABCmAQAAlAIAMKgBAQCGAgAhyQEBAIYCACHKAUAAhwIAIQKoAQEAAAAByQEBAAAAAQekAQAAlgIAMKUBAABeABCmAQAAlgIAMKcBAQDwAQAhuQEBAPABACHKAUAA8QEAIcwBAQDwAQAhD6QBAACXAgAwpQEAAEgAEKYBAACXAgAwpwEBAPABACG5AQEA8AEAIcMBAQDwAQAhzQEBAPABACHOAQEA8AEAIc8BAQD-AQAh0AEBAP4BACHRAQIAmAIAIdIBAQD-AQAh0wEBAP4BACHUAQEA_gEAIdUBAQD-AQAhDQkAAIMCACAeAACDAgAgHwAAgwIAIDAAAJoCACAxAACDAgAgrAECAAAAAa0BAgAAAAWuAQIAAAAFrwECAAAAAbABAgAAAAGxAQIAAAABsgECAAAAAbMBAgCZAgAhDQkAAIMCACAeAACDAgAgHwAAgwIAIDAAAJoCACAxAACDAgAgrAECAAAAAa0BAgAAAAWuAQIAAAAFrwECAAAAAbABAgAAAAGxAQIAAAABsgECAAAAAbMBAgCZAgAhCKwBCAAAAAGtAQgAAAAFrgEIAAAABa8BCAAAAAGwAQgAAAABsQEIAAAAAbIBCAAAAAGzAQgAmgIAIQ6kAQAAmwIAMKUBAAAyABCmAQAAmwIAMKcBAQDwAQAhqQEBAPABACGqAUAA8QEAIbgBAACdAtoBItYBQACcAgAh1wEBAP4BACHYAQEA_gEAIdoBQACcAgAh2wEgAP8BACHcAQAAngLDASPdAQAAnwIAIAsJAACDAgAgHgAApgIAIB8AAKYCACCsAUAAAAABrQFAAAAABa4BQAAAAAWvAUAAAAABsAFAAAAAAbEBQAAAAAGyAUAAAAABswFAAKUCACEHCQAA8wEAIB4AAKQCACAfAACkAgAgrAEAAADaAQKtAQAAANoBCK4BAAAA2gEIswEAAKMC2gEiBwkAAIMCACAeAACiAgAgHwAAogIAIKwBAAAAwwEDrQEAAADDAQmuAQAAAMMBCbMBAAChAsMBIw8JAACDAgAgHgAAoAIAIB8AAKACACCsAYAAAAABrwGAAAAAAbABgAAAAAGxAYAAAAABsgGAAAAAAbMBgAAAAAHeAQEAAAAB3wEBAAAAAeABAQAAAAHhAYAAAAAB4gGAAAAAAeMBgAAAAAEMrAGAAAAAAa8BgAAAAAGwAYAAAAABsQGAAAAAAbIBgAAAAAGzAYAAAAAB3gEBAAAAAd8BAQAAAAHgAQEAAAAB4QGAAAAAAeIBgAAAAAHjAYAAAAABBwkAAIMCACAeAACiAgAgHwAAogIAIKwBAAAAwwEDrQEAAADDAQmuAQAAAMMBCbMBAAChAsMBIwSsAQAAAMMBA60BAAAAwwEJrgEAAADDAQmzAQAAogLDASMHCQAA8wEAIB4AAKQCACAfAACkAgAgrAEAAADaAQKtAQAAANoBCK4BAAAA2gEIswEAAKMC2gEiBKwBAAAA2gECrQEAAADaAQiuAQAAANoBCLMBAACkAtoBIgsJAACDAgAgHgAApgIAIB8AAKYCACCsAUAAAAABrQFAAAAABa4BQAAAAAWvAUAAAAABsAFAAAAAAbEBQAAAAAGyAUAAAAABswFAAKUCACEIrAFAAAAAAa0BQAAAAAWuAUAAAAAFrwFAAAAAAbABQAAAAAGxAUAAAAABsgFAAAAAAbMBQACmAgAhEgQAAKwCACAFAACtAgAgCgAAigIAIAsAAK4CACCkAQAApwIAMKUBAAAfABCmAQAApwIAMKcBAQCGAgAhqQEBAIYCACGqAUAAhwIAIbgBAACpAtoBItYBQACoAgAh1wEBAIgCACHYAQEAiAIAIdoBQACoAgAh2wEgAIkCACHcAQAAqgLDASPdAQAAqwIAIAisAUAAAAABrQFAAAAABa4BQAAAAAWvAUAAAAABsAFAAAAAAbEBQAAAAAGyAUAAAAABswFAAKYCACEErAEAAADaAQKtAQAAANoBCK4BAAAA2gEIswEAAKQC2gEiBKwBAAAAwwEDrQEAAADDAQmuAQAAAMMBCbMBAACiAsMBIwysAYAAAAABrwGAAAAAAbABgAAAAAGxAYAAAAABsgGAAAAAAbMBgAAAAAHeAQEAAAAB3wEBAAAAAeABAQAAAAHhAYAAAAAB4gGAAAAAAeMBgAAAAAEDvwEAAAMAIMABAAADACDBAQAAAwAgA78BAAAHACDAAQAABwAgwQEAAAcAIAO_AQAAFgAgwAEAABYAIMEBAAAWACAJAwAAsQIAIKQBAACvAgAwpQEAABYAEKYBAACvAgAwpwECAJICACGqAUAAhwIAIbkBAQCGAgAhwwEAALACwwEixAEBAIYCACEErAEAAADDAQKtAQAAAMMBCK4BAAAAwwEIswEAAI8CwwEiFAQAAKwCACAFAACtAgAgCgAAigIAIAsAAK4CACCkAQAApwIAMKUBAAAfABCmAQAApwIAMKcBAQCGAgAhqQEBAIYCACGqAUAAhwIAIbgBAACpAtoBItYBQACoAgAh1wEBAIgCACHYAQEAiAIAIdoBQACoAgAh2wEgAIkCACHcAQAAqgLDASPdAQAAqwIAIOcBAAAfACDoAQAAHwAgAqkBAQAAAAGrAQEAAAABCQcAALQCACCkAQAAswIAMKUBAAAQABCmAQAAswIAMKcBAgCSAgAhqAEBAIYCACGpAQEAhgIAIaoBQACHAgAhqwEBAIYCACEOBgAAigIAIAgAAIsCACCkAQAAhQIAMKUBAACsAQAQpgEAAIUCADCnAQEAhgIAIaoBQACHAgAhugFAAIcCACG7AQEAhgIAIbwBAQCIAgAhvQEBAIgCACG-ASAAiQIAIecBAACsAQAg6AEAAKwBACACqwEBAAAAAbkBAQAAAAEJAwAAsQIAIAcAALQCACCkAQAAtgIAMKUBAAALABCmAQAAtgIAMKcBAgCSAgAhqwEBAIYCACG4AQAAtwK4ASK5AQEAhgIAIQSsAQAAALgBAq0BAAAAuAEIrgEAAAC4AQizAQAA_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-7AQWAAbwBBYEBvQEKggHAAT-DAcEBQ4QBwgEEhQHDAQSGAcQBBIcBxQEEiAHGAQSJAcgBBIoBygEKiwHLAUSMAc0BBI0BzwEKjgHQAUWPAdEBBJAB0gEEkQHTAQqSAdYBRpMB1wFMlAHYAQaVAdkBBpYB2gEGlwHbAQaYAdwBBpkB3gEGmgHgAQqbAeEBTZwB4wEGnQHlAQqeAeYBTp8B5wEGoAHoAQahAekBCqIB7AFPowHtAVU" + graph: "9ANVkAESBAAArAIAIAUAAK0CACAKAACKAgAgCwAArgIAIKQBAACnAgAwpQEAAB8AEKYBAACnAgAwpwEBAAAAAakBAQAAAAGqAUAAhwIAIbgBAACpAtoBItYBQACoAgAh1wEBAIgCACHYAQEAiAIAIdoBQACoAgAh2wEgAIkCACHcAQAAqgLDASPdAQAAqwIAIAEAAAABACAQAwAAsQIAIKQBAAC6AgAwpQEAAAMAEKYBAAC6AgAwpwEBAIYCACG5AQEAhgIAIcMBAQCGAgAhzQEBAIYCACHOAQEAhgIAIc8BAQCIAgAh0AEBAIgCACHRAQIAuwIAIdIBAQCIAgAh0wEBAIgCACHUAQEAiAIAIdUBAQCIAgAhCAMAAM8DACDPAQAA0AIAINABAADQAgAg0QEAANACACDSAQAA0AIAINMBAADQAgAg1AEAANACACDVAQAA0AIAIBEDAACxAgAgpAEAALoCADClAQAAAwAQpgEAALoCADCnAQEAAAABuQEBAIYCACHDAQEAhgIAIc0BAQCGAgAhzgEBAIYCACHPAQEAiAIAIdABAQCIAgAh0QECALsCACHSAQEAiAIAIdMBAQCIAgAh1AEBAIgCACHVAQEAiAIAIeYBAAC5AgAgAwAAAAMAIAEAAAQAMAIAAAUAIAgDAACxAgAgpAEAALgCADClAQAABwAQpgEAALgCADCnAQEAhgIAIbkBAQCGAgAhygFAAIcCACHMAQEAhgIAIQEDAADPAwAgCAMAALECACCkAQAAuAIAMKUBAAAHABCmAQAAuAIAMKcBAQAAAAG5AQEAhgIAIcoBQACHAgAhzAEBAAAAAQMAAAAHACABAAAIADACAAAJACAJAwAAsQIAIAcAALQCACCkAQAAtgIAMKUBAAALABCmAQAAtgIAMKcBAgCSAgAhqwEBAIYCACG4AQAAtwK4ASK5AQEAhgIAIQIDAADPAwAgBwAA0AMAIAoDAACxAgAgBwAAtAIAIKQBAAC2AgAwpQEAAAsAEKYBAAC2AgAwpwECAAAAAasBAQCGAgAhuAEAALcCuAEiuQEBAIYCACHlAQAAtQIAIAMAAAALACABAAAMADACAAANACADAAAACwAgAQAADAAwAgAADQAgCQcAALQCACCkAQAAswIAMKUBAAAQABCmAQAAswIAMKcBAgCSAgAhqAEBAIYCACGpAQEAhgIAIaoBQACHAgAhqwEBAIYCACEBBwAA0AMAIAoHAAC0AgAgpAEAALMCADClAQAAEAAQpgEAALMCADCnAQIAAAABqAEBAAAAAakBAQCGAgAhqgFAAIcCACGrAQEAhgIAIeQBAACyAgAgAwAAABAAIAEAABEAMAIAABIAIAEAAAALACABAAAAEAAgCQMAALECACCkAQAArwIAMKUBAAAWABCmAQAArwIAMKcBAgCSAgAhqgFAAIcCACG5AQEAhgIAIcMBAACwAsMBIsQBAQCGAgAhAQMAAM8DACAJAwAAsQIAIKQBAACvAgAwpQEAABYAEKYBAACvAgAwpwECAAAAAaoBQACHAgAhuQEBAIYCACHDAQAAsALDASLEAQEAAAABAwAAABYAIAEAABcAMAIAABgAIAEAAAADACABAAAABwAgAQAAAAsAIAEAAAAWACABAAAAAQAgEgQAAKwCACAFAACtAgAgCgAAigIAIAsAAK4CACCkAQAApwIAMKUBAAAfABCmAQAApwIAMKcBAQCGAgAhqQEBAIYCACGqAUAAhwIAIbgBAACpAtoBItYBQACoAgAh1wEBAIgCACHYAQEAiAIAIdoBQACoAgAh2wEgAIkCACHcAQAAqgLDASPdAQAAqwIAIAoEAADMAwAgBQAAzQMAIAoAAPICACALAADOAwAg1gEAANACACDXAQAA0AIAINgBAADQAgAg2gEAANACACDcAQAA0AIAIN0BAADQAgAgAwAAAB8AIAEAACAAMAIAAAEAIAMAAAAfACABAAAgADACAAABACADAAAAHwAgAQAAIAAwAgAAAQAgDwQAAMgDACAFAADJAwAgCgAAygMAIAsAAMsDACCnAQEAAAABqQEBAAAAAaoBQAAAAAG4AQAAANoBAtYBQAAAAAHXAQEAAAAB2AEBAAAAAdoBQAAAAAHbASAAAAAB3AEAAADDAQPdAYAAAAABAREAACQAIAunAQEAAAABqQEBAAAAAaoBQAAAAAG4AQAAANoBAtYBQAAAAAHXAQEAAAAB2AEBAAAAAdoBQAAAAAHbASAAAAAB3AEAAADDAQPdAYAAAAABAREAACYAMAERAAAmADAPBAAAlwMAIAUAAJgDACAKAACZAwAgCwAAmgMAIKcBAQDBAgAhqQEBAMECACGqAUAAwgIAIbgBAACVA9oBItYBQACUAwAh1wEBANQCACHYAQEA1AIAIdoBQACUAwAh2wEgANUCACHcAQAAlgPDASPdAYAAAAABAgAAAAEAIBEAACkAIAunAQEAwQIAIakBAQDBAgAhqgFAAMICACG4AQAAlQPaASLWAUAAlAMAIdcBAQDUAgAh2AEBANQCACHaAUAAlAMAIdsBIADVAgAh3AEAAJYDwwEj3QGAAAAAAQIAAAAfACARAAArACACAAAAHwAgEQAAKwAgAwAAAAEAIBgAACQAIBkAACkAIAEAAAABACABAAAAHwAgCQkAAJEDACAeAACTAwAgHwAAkgMAINYBAADQAgAg1wEAANACACDYAQAA0AIAINoBAADQAgAg3AEAANACACDdAQAA0AIAIA6kAQAAmwIAMKUBAAAyABCmAQAAmwIAMKcBAQDwAQAhqQEBAPABACGqAUAA8QEAIbgBAACdAtoBItYBQACcAgAh1wEBAP4BACHYAQEA_gEAIdoBQACcAgAh2wEgAP8BACHcAQAAngLDASPdAQAAnwIAIAMAAAAfACABAAAxADAdAAAyACADAAAAHwAgAQAAIAAwAgAAAQAgAQAAAAUAIAEAAAAFACADAAAAAwAgAQAABAAwAgAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACANAwAAkAMAIKcBAQAAAAG5AQEAAAABwwEBAAAAAc0BAQAAAAHOAQEAAAABzwEBAAAAAdABAQAAAAHRAQIAAAAB0gEBAAAAAdMBAQAAAAHUAQEAAAAB1QEBAAAAAQERAAA6ACAMpwEBAAAAAbkBAQAAAAHDAQEAAAABzQEBAAAAAc4BAQAAAAHPAQEAAAAB0AEBAAAAAdEBAgAAAAHSAQEAAAAB0wEBAAAAAdQBAQAAAAHVAQEAAAABAREAADwAMAERAAA8ADANAwAAjwMAIKcBAQDBAgAhuQEBAMECACHDAQEAwQIAIc0BAQDBAgAhzgEBAMECACHPAQEA1AIAIdABAQDUAgAh0QECAI4DACHSAQEA1AIAIdMBAQDUAgAh1AEBANQCACHVAQEA1AIAIQIAAAAFACARAAA_ACAMpwEBAMECACG5AQEAwQIAIcMBAQDBAgAhzQEBAMECACHOAQEAwQIAIc8BAQDUAgAh0AEBANQCACHRAQIAjgMAIdIBAQDUAgAh0wEBANQCACHUAQEA1AIAIdUBAQDUAgAhAgAAAAMAIBEAAEEAIAIAAAADACARAABBACADAAAABQAgGAAAOgAgGQAAPwAgAQAAAAUAIAEAAAADACAMCQAAiQMAIB4AAIwDACAfAACLAwAgMAAAigMAIDEAAI0DACDPAQAA0AIAINABAADQAgAg0QEAANACACDSAQAA0AIAINMBAADQAgAg1AEAANACACDVAQAA0AIAIA-kAQAAlwIAMKUBAABIABCmAQAAlwIAMKcBAQDwAQAhuQEBAPABACHDAQEA8AEAIc0BAQDwAQAhzgEBAPABACHPAQEA_gEAIdABAQD-AQAh0QECAJgCACHSAQEA_gEAIdMBAQD-AQAh1AEBAP4BACHVAQEA_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_AgAgHwAA_gIAIDAAAP0CACAxAACAAwAgxwEAANACACDIAQAA0AIAIAqkAQAAkAIAMKUBAACQAQAQpgEAAJACADCnAQIA7wEAIakBAQDwAQAhqgFAAPEBACHFAQEA8AEAIcYBQADxAQAhxwEBAP4BACHIAQEA_gEAIQMAAAB9ACABAACPAQAwHQAAkAEAIAMAAAB9ACABAAB-ADACAAB6ACABAAAAGAAgAQAAABgAIAMAAAAWACABAAAXADACAAAYACADAAAAFgAgAQAAFwAwAgAAGAAgAwAAABYAIAEAABcAMAIAABgAIAYDAAD7AgAgpwECAAAAAaoBQAAAAAG5AQEAAAABwwEAAADDAQLEAQEAAAABAREAAJgBACAFpwECAAAAAaoBQAAAAAG5AQEAAAABwwEAAADDAQLEAQEAAAABAREAAJoBADABEQAAmgEAMAYDAAD6AgAgpwECAMMCACGqAUAAwgIAIbkBAQDBAgAhwwEAAPkCwwEixAEBAMECACECAAAAGAAgEQAAnQEAIAWnAQIAwwIAIaoBQADCAgAhuQEBAMECACHDAQAA-QLDASLEAQEAwQIAIQIAAAAWACARAACfAQAgAgAAABYAIBEAAJ8BACADAAAAGAAgGAAAmAEAIBkAAJ0BACABAAAAGAAgAQAAABYAIAUJAAD0AgAgHgAA9wIAIB8AAPYCACAwAAD1AgAgMQAA-AIAIAikAQAAjAIAMKUBAACmAQAQpgEAAIwCADCnAQIA7wEAIaoBQADxAQAhuQEBAPABACHDAQAAjQLDASLEAQEA8AEAIQMAAAAWACABAAClAQAwHQAApgEAIAMAAAAWACABAAAXADACAAAYACAMBgAAigIAIAgAAIsCACCkAQAAhQIAMKUBAACsAQAQpgEAAIUCADCnAQEAAAABqgFAAIcCACG6AUAAhwIAIbsBAQCGAgAhvAEBAIgCACG9AQEAiAIAIb4BIACJAgAhAQAAAKkBACABAAAAqQEAIAwGAACKAgAgCAAAiwIAIKQBAACFAgAwpQEAAKwBABCmAQAAhQIAMKcBAQCGAgAhqgFAAIcCACG6AUAAhwIAIbsBAQCGAgAhvAEBAIgCACG9AQEAiAIAIb4BIACJAgAhBAYAAPICACAIAADzAgAgvAEAANACACC9AQAA0AIAIAMAAACsAQAgAQAArQEAMAIAAKkBACADAAAArAEAIAEAAK0BADACAACpAQAgAwAAAKwBACABAACtAQAwAgAAqQEAIAkGAADwAgAgCAAA8QIAIKcBAQAAAAGqAUAAAAABugFAAAAAAbsBAQAAAAG8AQEAAAABvQEBAAAAAb4BIAAAAAEBEQAAsQEAIAenAQEAAAABqgFAAAAAAboBQAAAAAG7AQEAAAABvAEBAAAAAb0BAQAAAAG-ASAAAAABAREAALMBADABEQAAswEAMAkGAADWAgAgCAAA1wIAIKcBAQDBAgAhqgFAAMICACG6AUAAwgIAIbsBAQDBAgAhvAEBANQCACG9AQEA1AIAIb4BIADVAgAhAgAAAKkBACARAAC2AQAgB6cBAQDBAgAhqgFAAMICACG6AUAAwgIAIbsBAQDBAgAhvAEBANQCACG9AQEA1AIAIb4BIADVAgAhAgAAAKwBACARAAC4AQAgAgAAAKwBACARAAC4AQAgAwAAAKkBACAYAACxAQAgGQAAtgEAIAEAAACpAQAgAQAAAKwBACAFCQAA0QIAIB4AANMCACAfAADSAgAgvAEAANACACC9AQAA0AIAIAqkAQAA_QEAMKUBAAC_AQAQpgEAAP0BADCnAQEA8AEAIaoBQADxAQAhugFAAPEBACG7AQEA8AEAIbwBAQD-AQAhvQEBAP4BACG-ASAA_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_AEAIKwBAAAAuAECrQEAAAC4AQiuAQAAALgBCLMBAAD7AbgBIgcJAADzAQAgHgAA_AEAIB8AAPwBACCsAQAAALgBAq0BAAAAuAEIrgEAAAC4AQizAQAA-wG4ASIErAEAAAC4AQKtAQAAALgBCK4BAAAAuAEIswEAAPwBuAEiCqQBAAD9AQAwpQEAAL8BABCmAQAA_QEAMKcBAQDwAQAhqgFAAPEBACG6AUAA8QEAIbsBAQDwAQAhvAEBAP4BACG9AQEA_gEAIb4BIAD_AQAhDgkAAIMCACAeAACEAgAgHwAAhAIAIKwBAQAAAAGtAQEAAAAFrgEBAAAABa8BAQAAAAGwAQEAAAABsQEBAAAAAbIBAQAAAAGzAQEAggIAIbQBAQAAAAG1AQEAAAABtgEBAAAAAQUJAADzAQAgHgAAgQIAIB8AAIECACCsASAAAAABswEgAIACACEFCQAA8wEAIB4AAIECACAfAACBAgAgrAEgAAAAAbMBIACAAgAhAqwBIAAAAAGzASAAgQIAIQ4JAACDAgAgHgAAhAIAIB8AAIQCACCsAQEAAAABrQEBAAAABa4BAQAAAAWvAQEAAAABsAEBAAAAAbEBAQAAAAGyAQEAAAABswEBAIICACG0AQEAAAABtQEBAAAAAbYBAQAAAAEIrAECAAAAAa0BAgAAAAWuAQIAAAAFrwECAAAAAbABAgAAAAGxAQIAAAABsgECAAAAAbMBAgCDAgAhC6wBAQAAAAGtAQEAAAAFrgEBAAAABa8BAQAAAAGwAQEAAAABsQEBAAAAAbIBAQAAAAGzAQEAhAIAIbQBAQAAAAG1AQEAAAABtgEBAAAAAQwGAACKAgAgCAAAiwIAIKQBAACFAgAwpQEAAKwBABCmAQAAhQIAMKcBAQCGAgAhqgFAAIcCACG6AUAAhwIAIbsBAQCGAgAhvAEBAIgCACG9AQEAiAIAIb4BIACJAgAhC6wBAQAAAAGtAQEAAAAErgEBAAAABK8BAQAAAAGwAQEAAAABsQEBAAAAAbIBAQAAAAGzAQEA9gEAIbQBAQAAAAG1AQEAAAABtgEBAAAAAQisAUAAAAABrQFAAAAABK4BQAAAAASvAUAAAAABsAFAAAAAAbEBQAAAAAGyAUAAAAABswFAAPQBACELrAEBAAAAAa0BAQAAAAWuAQEAAAAFrwEBAAAAAbABAQAAAAGxAQEAAAABsgEBAAAAAbMBAQCEAgAhtAEBAAAAAbUBAQAAAAG2AQEAAAABAqwBIAAAAAGzASAAgQIAIQO_AQAACwAgwAEAAAsAIMEBAAALACADvwEAABAAIMABAAAQACDBAQAAEAAgCKQBAACMAgAwpQEAAKYBABCmAQAAjAIAMKcBAgDvAQAhqgFAAPEBACG5AQEA8AEAIcMBAACNAsMBIsQBAQDwAQAhBwkAAPMBACAeAACPAgAgHwAAjwIAIKwBAAAAwwECrQEAAADDAQiuAQAAAMMBCLMBAACOAsMBIgcJAADzAQAgHgAAjwIAIB8AAI8CACCsAQAAAMMBAq0BAAAAwwEIrgEAAADDAQizAQAAjgLDASIErAEAAADDAQKtAQAAAMMBCK4BAAAAwwEIswEAAI8CwwEiCqQBAACQAgAwpQEAAJABABCmAQAAkAIAMKcBAgDvAQAhqQEBAPABACGqAUAA8QEAIcUBAQDwAQAhxgFAAPEBACHHAQEA_gEAIcgBAQD-AQAhCqQBAACRAgAwpQEAAH0AEKYBAACRAgAwpwECAJICACGpAQEAhgIAIaoBQACHAgAhxQEBAIYCACHGAUAAhwIAIccBAQCIAgAhyAEBAIgCACEIrAECAAAAAa0BAgAAAASuAQIAAAAErwECAAAAAbABAgAAAAGxAQIAAAABsgECAAAAAbMBAgDzAQAhBqQBAACTAgAwpQEAAHcAEKYBAACTAgAwqAEBAPABACHJAQEA8AEAIcoBQADxAQAhBqQBAACUAgAwpQEAAGQAEKYBAACUAgAwqAEBAIYCACHJAQEAhgIAIcoBQACHAgAhAqgBAQAAAAHJAQEAAAABB6QBAACWAgAwpQEAAF4AEKYBAACWAgAwpwEBAPABACG5AQEA8AEAIcoBQADxAQAhzAEBAPABACEPpAEAAJcCADClAQAASAAQpgEAAJcCADCnAQEA8AEAIbkBAQDwAQAhwwEBAPABACHNAQEA8AEAIc4BAQDwAQAhzwEBAP4BACHQAQEA_gEAIdEBAgCYAgAh0gEBAP4BACHTAQEA_gEAIdQBAQD-AQAh1QEBAP4BACENCQAAgwIAIB4AAIMCACAfAACDAgAgMAAAmgIAIDEAAIMCACCsAQIAAAABrQECAAAABa4BAgAAAAWvAQIAAAABsAECAAAAAbEBAgAAAAGyAQIAAAABswECAJkCACENCQAAgwIAIB4AAIMCACAfAACDAgAgMAAAmgIAIDEAAIMCACCsAQIAAAABrQECAAAABa4BAgAAAAWvAQIAAAABsAECAAAAAbEBAgAAAAGyAQIAAAABswECAJkCACEIrAEIAAAAAa0BCAAAAAWuAQgAAAAFrwEIAAAAAbABCAAAAAGxAQgAAAABsgEIAAAAAbMBCACaAgAhDqQBAACbAgAwpQEAADIAEKYBAACbAgAwpwEBAPABACGpAQEA8AEAIaoBQADxAQAhuAEAAJ0C2gEi1gFAAJwCACHXAQEA_gEAIdgBAQD-AQAh2gFAAJwCACHbASAA_wEAIdwBAACeAsMBI90BAACfAgAgCwkAAIMCACAeAACmAgAgHwAApgIAIKwBQAAAAAGtAUAAAAAFrgFAAAAABa8BQAAAAAGwAUAAAAABsQFAAAAAAbIBQAAAAAGzAUAApQIAIQcJAADzAQAgHgAApAIAIB8AAKQCACCsAQAAANoBAq0BAAAA2gEIrgEAAADaAQizAQAAowLaASIHCQAAgwIAIB4AAKICACAfAACiAgAgrAEAAADDAQOtAQAAAMMBCa4BAAAAwwEJswEAAKECwwEjDwkAAIMCACAeAACgAgAgHwAAoAIAIKwBgAAAAAGvAYAAAAABsAGAAAAAAbEBgAAAAAGyAYAAAAABswGAAAAAAd4BAQAAAAHfAQEAAAAB4AEBAAAAAeEBgAAAAAHiAYAAAAAB4wGAAAAAAQysAYAAAAABrwGAAAAAAbABgAAAAAGxAYAAAAABsgGAAAAAAbMBgAAAAAHeAQEAAAAB3wEBAAAAAeABAQAAAAHhAYAAAAAB4gGAAAAAAeMBgAAAAAEHCQAAgwIAIB4AAKICACAfAACiAgAgrAEAAADDAQOtAQAAAMMBCa4BAAAAwwEJswEAAKECwwEjBKwBAAAAwwEDrQEAAADDAQmuAQAAAMMBCbMBAACiAsMBIwcJAADzAQAgHgAApAIAIB8AAKQCACCsAQAAANoBAq0BAAAA2gEIrgEAAADaAQizAQAAowLaASIErAEAAADaAQKtAQAAANoBCK4BAAAA2gEIswEAAKQC2gEiCwkAAIMCACAeAACmAgAgHwAApgIAIKwBQAAAAAGtAUAAAAAFrgFAAAAABa8BQAAAAAGwAUAAAAABsQFAAAAAAbIBQAAAAAGzAUAApQIAIQisAUAAAAABrQFAAAAABa4BQAAAAAWvAUAAAAABsAFAAAAAAbEBQAAAAAGyAUAAAAABswFAAKYCACESBAAArAIAIAUAAK0CACAKAACKAgAgCwAArgIAIKQBAACnAgAwpQEAAB8AEKYBAACnAgAwpwEBAIYCACGpAQEAhgIAIaoBQACHAgAhuAEAAKkC2gEi1gFAAKgCACHXAQEAiAIAIdgBAQCIAgAh2gFAAKgCACHbASAAiQIAIdwBAACqAsMBI90BAACrAgAgCKwBQAAAAAGtAUAAAAAFrgFAAAAABa8BQAAAAAGwAUAAAAABsQFAAAAAAbIBQAAAAAGzAUAApgIAIQSsAQAAANoBAq0BAAAA2gEIrgEAAADaAQizAQAApALaASIErAEAAADDAQOtAQAAAMMBCa4BAAAAwwEJswEAAKICwwEjDKwBgAAAAAGvAYAAAAABsAGAAAAAAbEBgAAAAAGyAYAAAAABswGAAAAAAd4BAQAAAAHfAQEAAAAB4AEBAAAAAeEBgAAAAAHiAYAAAAAB4wGAAAAAAQO_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_AwAg7AEAAMADADDtAQAAwAMAMO4BAADAAwAw7wEAAMADADDwAQAAwgMAMPEBAADDAwAwCxgAALADADAZAAC1AwAw6QEAALEDADDqAQAAsgMAMOsBAACzAwAg7AEAALQDADDtAQAAtAMAMO4BAAC0AwAw7wEAALQDADDwAQAAtgMAMPEBAAC3AwAwCxgAAKcDADAZAACrAwAw6QEAAKgDADDqAQAAqQMAMOsBAACqAwAg7AEAAOgCADDtAQAA6AIAMO4BAADoAgAw7wEAAOgCADDwAQAArAMAMPEBAADrAgAwCxgAAJsDADAZAACgAwAw6QEAAJwDADDqAQAAnQMAMOsBAACeAwAg7AEAAJ8DADDtAQAAnwMAMO4BAACfAwAw7wEAAJ8DADDwAQAAoQMAMPEBAACiAwAwBKcBAgAAAAGqAUAAAAABwwEAAADDAQLEAQEAAAABAgAAABgAIBgAAKYDACADAAAAGAAgGAAApgMAIBkAAKUDACABEQAA1AMAMAkDAACxAgAgpAEAAK8CADClAQAAFgAQpgEAAK8CADCnAQIAAAABqgFAAIcCACG5AQEAhgIAIcMBAACwAsMBIsQBAQAAAAECAAAAGAAgEQAApQMAIAIAAACjAwAgEQAApAMAIAikAQAAogMAMKUBAACjAwAQpgEAAKIDADCnAQIAkgIAIaoBQACHAgAhuQEBAIYCACHDAQAAsALDASLEAQEAhgIAIQikAQAAogMAMKUBAACjAwAQpgEAAKIDADCnAQIAkgIAIaoBQACHAgAhuQEBAIYCACHDAQAAsALDASLEAQEAhgIAIQSnAQIAwwIAIaoBQADCAgAhwwEAAPkCwwEixAEBAMECACEEpwECAMMCACGqAUAAwgIAIcMBAAD5AsMBIsQBAQDBAgAhBKcBAgAAAAGqAUAAAAABwwEAAADDAQLEAQEAAAABBAcAAM8CACCnAQIAAAABqwEBAAAAAbgBAAAAuAECAgAAAA0AIBgAAK8DACADAAAADQAgGAAArwMAIBkAAK4DACABEQAA0wMAMAIAAAANACARAACuAwAgAgAAAOwCACARAACtAwAgA6cBAgDDAgAhqwEBAMECACG4AQAAywK4ASIEBwAAzQIAIKcBAgDDAgAhqwEBAMECACG4AQAAywK4ASIEBwAAzwIAIKcBAgAAAAGrAQEAAAABuAEAAAC4AQIDpwEBAAAAAcoBQAAAAAHMAQEAAAABAgAAAAkAIBgAALsDACADAAAACQAgGAAAuwMAIBkAALoDACABEQAA0gMAMAgDAACxAgAgpAEAALgCADClAQAABwAQpgEAALgCADCnAQEAAAABuQEBAIYCACHKAUAAhwIAIcwBAQAAAAECAAAACQAgEQAAugMAIAIAAAC4AwAgEQAAuQMAIAekAQAAtwMAMKUBAAC4AwAQpgEAALcDADCnAQEAhgIAIbkBAQCGAgAhygFAAIcCACHMAQEAhgIAIQekAQAAtwMAMKUBAAC4AwAQpgEAALcDADCnAQEAhgIAIbkBAQCGAgAhygFAAIcCACHMAQEAhgIAIQOnAQEAwQIAIcoBQADCAgAhzAEBAMECACEDpwEBAMECACHKAUAAwgIAIcwBAQDBAgAhA6cBAQAAAAHKAUAAAAABzAEBAAAAAQunAQEAAAABwwEBAAAAAc0BAQAAAAHOAQEAAAABzwEBAAAAAdABAQAAAAHRAQIAAAAB0gEBAAAAAdMBAQAAAAHUAQEAAAAB1QEBAAAAAQIAAAAFACAYAADHAwAgAwAAAAUAIBgAAMcDACAZAADGAwAgAREAANEDADARAwAAsQIAIKQBAAC6AgAwpQEAAAMAEKYBAAC6AgAwpwEBAAAAAbkBAQCGAgAhwwEBAIYCACHNAQEAhgIAIc4BAQCGAgAhzwEBAIgCACHQAQEAiAIAIdEBAgC7AgAh0gEBAIgCACHTAQEAiAIAIdQBAQCIAgAh1QEBAIgCACHmAQAAuQIAIAIAAAAFACARAADGAwAgAgAAAMQDACARAADFAwAgD6QBAADDAwAwpQEAAMQDABCmAQAAwwMAMKcBAQCGAgAhuQEBAIYCACHDAQEAhgIAIc0BAQCGAgAhzgEBAIYCACHPAQEAiAIAIdABAQCIAgAh0QECALsCACHSAQEAiAIAIdMBAQCIAgAh1AEBAIgCACHVAQEAiAIAIQ-kAQAAwwMAMKUBAADEAwAQpgEAAMMDADCnAQEAhgIAIbkBAQCGAgAhwwEBAIYCACHNAQEAhgIAIc4BAQCGAgAhzwEBAIgCACHQAQEAiAIAIdEBAgC7AgAh0gEBAIgCACHTAQEAiAIAIdQBAQCIAgAh1QEBAIgCACELpwEBAMECACHDAQEAwQIAIc0BAQDBAgAhzgEBAMECACHPAQEA1AIAIdABAQDUAgAh0QECAI4DACHSAQEA1AIAIdMBAQDUAgAh1AEBANQCACHVAQEA1AIAIQunAQEAwQIAIcMBAQDBAgAhzQEBAMECACHOAQEAwQIAIc8BAQDUAgAh0AEBANQCACHRAQIAjgMAIdIBAQDUAgAh0wEBANQCACHUAQEA1AIAIdUBAQDUAgAhC6cBAQAAAAHDAQEAAAABzQEBAAAAAc4BAQAAAAHPAQEAAAAB0AEBAAAAAdEBAgAAAAHSAQEAAAAB0wEBAAAAAdQBAQAAAAHVAQEAAAABBBgAALwDADDpAQAAvQMAMOsBAAC_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_KleAASpYgQEqWYMBKlqFAQpbhgErXIgBKl2KAQpeiwEsX4wBKmCNASphjgEKYpEBLWOSATNkkwEIZZQBCGaVAQhnlgEIaJcBCGmZAQhqmwEKa5wBNGyeAQhtoAEKbqEBNW-iAQhwowEIcaQBCnKnATZzqAE8dKoBBXWrAQV2rgEFd68BBXiwAQV5sgEFerQBCnu1AT18twEFfbkBCn66AT5_uwEFgAG8AQWBAb0BCoIBwAE_gwHBAUOEAcIBBIUBwwEEhgHEAQSHAcUBBIgBxgEEiQHIAQSKAcoBCosBywFEjAHNAQSNAc8BCo4B0AFFjwHRAQSQAdIBBJEB0wEKkgHWAUaTAdcBTJQB2AEGlQHZAQaWAdoBBpcB2wEGmAHcAQaZAd4BBpoB4AEKmwHhAU2cAeMBBp0B5QEKngHmAU6fAecBBqAB6AEGoQHpAQqiAewBT6MB7QFV" } async function decodeBase64AsWasm(wasmBase64: string): Promise { diff --git a/src/generated/client/models/Transaction.ts b/src/generated/client/models/Transaction.ts index 1ef403af..218aa370 100644 --- a/src/generated/client/models/Transaction.ts +++ b/src/generated/client/models/Transaction.ts @@ -230,15 +230,15 @@ export type TransactionOrderByWithRelationInput = { export type TransactionWhereUniqueInput = Prisma.AtLeast<{ id?: number + transactionId?: string AND?: Prisma.TransactionWhereInput | Prisma.TransactionWhereInput[] OR?: Prisma.TransactionWhereInput[] NOT?: Prisma.TransactionWhereInput | Prisma.TransactionWhereInput[] userId?: Prisma.StringFilter<"Transaction"> | string provider?: Prisma.EnumSubscriptionProviderFilter<"Transaction"> | $Enums.SubscriptionProvider - transactionId?: Prisma.StringFilter<"Transaction"> | string createdAt?: Prisma.DateTimeFilter<"Transaction"> | Date | string user?: Prisma.XOR -}, "id"> +}, "id" | "transactionId"> export type TransactionOrderByWithAggregationInput = { id?: Prisma.SortOrder diff --git a/src/server/repository/transaction-repository.ts b/src/server/repository/transaction-repository.ts index 15797cf4..14c56e32 100644 --- a/src/server/repository/transaction-repository.ts +++ b/src/server/repository/transaction-repository.ts @@ -1,3 +1,4 @@ +import { SubscriptionProvider } from "../../generated/client/client"; import prisma from "../db"; export class TransactionRepository { @@ -23,4 +24,19 @@ export class TransactionRepository { where: { createdAt: { gte: since } }, }); } + + findByTransactionId(transactionId: string) { + return prisma.transaction.findFirst({ + where: { transactionId }, + select: { userId: true }, + }); + } + + createIfNotExists(userId: string, provider: SubscriptionProvider, transactionId: string) { + return prisma.transaction.upsert({ + where: { transactionId }, + update: {}, + create: { userId, provider, transactionId }, + }); + } } diff --git a/src/server/service/transaction-service.ts b/src/server/service/transaction-service.ts index d2eb42c7..5df0863f 100644 --- a/src/server/service/transaction-service.ts +++ b/src/server/service/transaction-service.ts @@ -1,3 +1,4 @@ +import { SubscriptionProvider } from "../../generated/client/client"; import { TransactionRepository } from "../repository/transaction-repository"; const repository = new TransactionRepository(); @@ -13,3 +14,15 @@ export const countTransactionsByUser = async (userId: string) => { export const countTransactionsSince = async (since: Date) => { return repository.countSince(since); }; + +export const findUserByTransactionId = async (transactionId: string) => { + return repository.findByTransactionId(transactionId); +}; + +export const createTransactionIfNotExists = async ( + userId: string, + provider: SubscriptionProvider, + transactionId: string, +) => { + return repository.createIfNotExists(userId, provider, transactionId); +};