diff --git a/.claude/settings.local.json b/.claude/settings.local.json index d32fbc6..0e65d89 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -6,7 +6,11 @@ "Bash(Get-ChildItem -Path \"c:\\\\development\\\\DIOS\\\\weekly-project\\\\setrip\" -Force)", "Bash(Select-Object Name, PSIsContainer)", "Bash(npx tsc *)", - "Bash(echo \"exitcode=$?\")" + "Bash(echo \"exitcode=$?\")", + "PowerShell(npx prisma generate 2>&1)", + "PowerShell(npx tsc --noEmit 2>&1)", + "PowerShell(npx eslint server/services/refund.service.ts server/repositories/refund.repo.ts features/refund app/admin/refunds 2>&1)", + "PowerShell(npx eslint server lib features app 2>&1)" ] } } diff --git a/CLAUDE.md b/CLAUDE.md index 1dce0c5..5db24e3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -16,8 +16,8 @@ ## Forbidden - Jangan query database langsung di component -- Jangan buat arsitektur over-engineered -- Jangan menambahkan dependency tanpa kebutuhan jelas +- Jangan buat arsitektur over-engineered, tidak apa apa jika lebih baik untuk performance dan struktur yang baik +- Jangan menambahkan dependency tanpa kebutuhan jelas, tambahkan jika memang dibutuhkan dan gunakan dependency yang aman ## Output Style diff --git a/app/admin/refunds/layout.tsx b/app/admin/refunds/layout.tsx new file mode 100644 index 0000000..6a8c8ba --- /dev/null +++ b/app/admin/refunds/layout.tsx @@ -0,0 +1,17 @@ +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Admin · Refund Manual", + description: + "Halaman admin untuk meninjau laporan refund dari peserta dan organizer.", + alternates: { canonical: "/admin/refunds" }, + robots: { index: false, follow: false }, +}; + +export default function AdminRefundsLayout({ + children, +}: { + children: React.ReactNode; +}) { + return children; +} diff --git a/app/admin/refunds/page.tsx b/app/admin/refunds/page.tsx new file mode 100644 index 0000000..1688c8f --- /dev/null +++ b/app/admin/refunds/page.tsx @@ -0,0 +1,126 @@ +import { redirect } from "next/navigation"; +import { getServerSession } from "next-auth"; +import { authOptions } from "@/lib/auth"; +import { isAdminEmail } from "@/lib/admin"; +import { refundRepo } from "@/server/repositories/refund.repo"; +import { CreateRefundForm } from "@/features/refund/components/create-refund-form"; +import { + RefundReviewCard, + type RefundCardData, +} from "@/features/refund/components/refund-review-card"; + +type Tab = "PENDING" | "APPROVED" | "REJECTED" | "SUCCEEDED" | "FAILED"; + +const TABS: { key: Tab; label: string }[] = [ + { key: "PENDING", label: "Pending" }, + { key: "APPROVED", label: "Disetujui" }, + { key: "SUCCEEDED", label: "Selesai" }, + { key: "REJECTED", label: "Ditolak" }, + { key: "FAILED", label: "Gagal" }, +]; + +interface PageProps { + searchParams: Promise<{ tab?: string }>; +} + +export default async function AdminRefundsPage({ searchParams }: PageProps) { + const session = await getServerSession(authOptions); + if (!session?.user) redirect("/login?callbackUrl=/admin/refunds"); + if (!isAdminEmail(session.user.email)) { + return ( +
+

+ Halaman ini hanya untuk admin SeTrip. +

+
+ ); + } + + const params = await searchParams; + const tab: Tab = TABS.some((t) => t.key === params.tab) + ? (params.tab as Tab) + : "PENDING"; + + const rows = await refundRepo.listByStatus(tab); + const items: RefundCardData[] = rows.map((r) => ({ + id: r.id, + amount: r.amount, + currency: r.currency, + reason: r.reason, + reportedBy: r.reportedBy, + reportNote: r.reportNote, + initiatedBy: r.initiatedBy, + status: r.status, + adminNote: r.adminNote, + createdAt: r.createdAt, + reviewedAt: r.reviewedAt, + succeededAt: r.succeededAt, + failedAt: r.failedAt, + reviewedBy: r.reviewedBy, + booking: { + id: r.booking.id, + amount: r.booking.amount, + status: r.booking.status, + trip: { + id: r.booking.trip.id, + title: r.booking.trip.title, + date: r.booking.trip.date, + }, + user: r.booking.user, + payments: r.booking.payments.map((p) => ({ + id: p.id, + provider: p.provider, + method: p.method, + amount: p.amount, + status: p.status, + paidAt: p.paidAt, + })), + }, + })); + + return ( +
+
+

+ Review Refund Manual +

+

+ Tinjau laporan refund dari peserta dan organizer. Setiap refund harus + melalui approval admin sebelum dieksekusi. +

+
+ + + +
+ {TABS.map((t) => ( + + {t.label} + + ))} +
+ + {items.length === 0 ? ( +
+

+ Tidak ada refund pada status ini. +

+
+ ) : ( +
+ {items.map((r) => ( + + ))} +
+ )} +
+ ); +} diff --git a/app/generated/prisma/browser.ts b/app/generated/prisma/browser.ts index 428df25..d0062fa 100644 --- a/app/generated/prisma/browser.ts +++ b/app/generated/prisma/browser.ts @@ -75,3 +75,15 @@ export type Booking = Prisma.BookingModel * (di Phase MIDTRANS nanti). Untuk MANUAL biasanya cukup 1 Payment. */ export type Payment = Prisma.PaymentModel +/** + * Model Refund + * Refund = financial event terpisah dari Booking. Satu Booking bisa punya + * banyak Refund (partial, multi-tahap). Setiap row auditable: kapan dibuat, + * siapa melaporkan, siapa approve, kapan SUCCEEDED. Never delete — kalau + * gagal, set status=FAILED + alasan. + * + * Di MVP refund dimasukkan admin secara manual berdasarkan laporan dari + * peserta atau organizer (via WhatsApp/email). Phase berikutnya akan + * menambah self-service flow dari user dan organizer. + */ +export type Refund = Prisma.RefundModel diff --git a/app/generated/prisma/client.ts b/app/generated/prisma/client.ts index 032b895..76053f9 100644 --- a/app/generated/prisma/client.ts +++ b/app/generated/prisma/client.ts @@ -99,3 +99,15 @@ export type Booking = Prisma.BookingModel * (di Phase MIDTRANS nanti). Untuk MANUAL biasanya cukup 1 Payment. */ export type Payment = Prisma.PaymentModel +/** + * Model Refund + * Refund = financial event terpisah dari Booking. Satu Booking bisa punya + * banyak Refund (partial, multi-tahap). Setiap row auditable: kapan dibuat, + * siapa melaporkan, siapa approve, kapan SUCCEEDED. Never delete — kalau + * gagal, set status=FAILED + alasan. + * + * Di MVP refund dimasukkan admin secara manual berdasarkan laporan dari + * peserta atau organizer (via WhatsApp/email). Phase berikutnya akan + * menambah self-service flow dari user dan organizer. + */ +export type Refund = Prisma.RefundModel diff --git a/app/generated/prisma/commonInputTypes.ts b/app/generated/prisma/commonInputTypes.ts index fdbd48b..51213f2 100644 --- a/app/generated/prisma/commonInputTypes.ts +++ b/app/generated/prisma/commonInputTypes.ts @@ -389,6 +389,74 @@ export type JsonNullableWithAggregatesFilterBase<$PrismaModel = never> = { _max?: Prisma.NestedJsonNullableFilter<$PrismaModel> } +export type EnumRefundReasonFilter<$PrismaModel = never> = { + equals?: $Enums.RefundReason | Prisma.EnumRefundReasonFieldRefInput<$PrismaModel> + in?: $Enums.RefundReason[] | Prisma.ListEnumRefundReasonFieldRefInput<$PrismaModel> + notIn?: $Enums.RefundReason[] | Prisma.ListEnumRefundReasonFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRefundReasonFilter<$PrismaModel> | $Enums.RefundReason +} + +export type EnumRefundReporterFilter<$PrismaModel = never> = { + equals?: $Enums.RefundReporter | Prisma.EnumRefundReporterFieldRefInput<$PrismaModel> + in?: $Enums.RefundReporter[] | Prisma.ListEnumRefundReporterFieldRefInput<$PrismaModel> + notIn?: $Enums.RefundReporter[] | Prisma.ListEnumRefundReporterFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRefundReporterFilter<$PrismaModel> | $Enums.RefundReporter +} + +export type EnumRefundInitiatorFilter<$PrismaModel = never> = { + equals?: $Enums.RefundInitiator | Prisma.EnumRefundInitiatorFieldRefInput<$PrismaModel> + in?: $Enums.RefundInitiator[] | Prisma.ListEnumRefundInitiatorFieldRefInput<$PrismaModel> + notIn?: $Enums.RefundInitiator[] | Prisma.ListEnumRefundInitiatorFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRefundInitiatorFilter<$PrismaModel> | $Enums.RefundInitiator +} + +export type EnumRefundStatusFilter<$PrismaModel = never> = { + equals?: $Enums.RefundStatus | Prisma.EnumRefundStatusFieldRefInput<$PrismaModel> + in?: $Enums.RefundStatus[] | Prisma.ListEnumRefundStatusFieldRefInput<$PrismaModel> + notIn?: $Enums.RefundStatus[] | Prisma.ListEnumRefundStatusFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRefundStatusFilter<$PrismaModel> | $Enums.RefundStatus +} + +export type EnumRefundReasonWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.RefundReason | Prisma.EnumRefundReasonFieldRefInput<$PrismaModel> + in?: $Enums.RefundReason[] | Prisma.ListEnumRefundReasonFieldRefInput<$PrismaModel> + notIn?: $Enums.RefundReason[] | Prisma.ListEnumRefundReasonFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRefundReasonWithAggregatesFilter<$PrismaModel> | $Enums.RefundReason + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedEnumRefundReasonFilter<$PrismaModel> + _max?: Prisma.NestedEnumRefundReasonFilter<$PrismaModel> +} + +export type EnumRefundReporterWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.RefundReporter | Prisma.EnumRefundReporterFieldRefInput<$PrismaModel> + in?: $Enums.RefundReporter[] | Prisma.ListEnumRefundReporterFieldRefInput<$PrismaModel> + notIn?: $Enums.RefundReporter[] | Prisma.ListEnumRefundReporterFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRefundReporterWithAggregatesFilter<$PrismaModel> | $Enums.RefundReporter + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedEnumRefundReporterFilter<$PrismaModel> + _max?: Prisma.NestedEnumRefundReporterFilter<$PrismaModel> +} + +export type EnumRefundInitiatorWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.RefundInitiator | Prisma.EnumRefundInitiatorFieldRefInput<$PrismaModel> + in?: $Enums.RefundInitiator[] | Prisma.ListEnumRefundInitiatorFieldRefInput<$PrismaModel> + notIn?: $Enums.RefundInitiator[] | Prisma.ListEnumRefundInitiatorFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRefundInitiatorWithAggregatesFilter<$PrismaModel> | $Enums.RefundInitiator + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedEnumRefundInitiatorFilter<$PrismaModel> + _max?: Prisma.NestedEnumRefundInitiatorFilter<$PrismaModel> +} + +export type EnumRefundStatusWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.RefundStatus | Prisma.EnumRefundStatusFieldRefInput<$PrismaModel> + in?: $Enums.RefundStatus[] | Prisma.ListEnumRefundStatusFieldRefInput<$PrismaModel> + notIn?: $Enums.RefundStatus[] | Prisma.ListEnumRefundStatusFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRefundStatusWithAggregatesFilter<$PrismaModel> | $Enums.RefundStatus + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedEnumRefundStatusFilter<$PrismaModel> + _max?: Prisma.NestedEnumRefundStatusFilter<$PrismaModel> +} + export type NestedStringFilter<$PrismaModel = never> = { equals?: string | Prisma.StringFieldRefInput<$PrismaModel> in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> @@ -750,4 +818,72 @@ export type NestedJsonNullableFilterBase<$PrismaModel = never> = { not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter } +export type NestedEnumRefundReasonFilter<$PrismaModel = never> = { + equals?: $Enums.RefundReason | Prisma.EnumRefundReasonFieldRefInput<$PrismaModel> + in?: $Enums.RefundReason[] | Prisma.ListEnumRefundReasonFieldRefInput<$PrismaModel> + notIn?: $Enums.RefundReason[] | Prisma.ListEnumRefundReasonFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRefundReasonFilter<$PrismaModel> | $Enums.RefundReason +} + +export type NestedEnumRefundReporterFilter<$PrismaModel = never> = { + equals?: $Enums.RefundReporter | Prisma.EnumRefundReporterFieldRefInput<$PrismaModel> + in?: $Enums.RefundReporter[] | Prisma.ListEnumRefundReporterFieldRefInput<$PrismaModel> + notIn?: $Enums.RefundReporter[] | Prisma.ListEnumRefundReporterFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRefundReporterFilter<$PrismaModel> | $Enums.RefundReporter +} + +export type NestedEnumRefundInitiatorFilter<$PrismaModel = never> = { + equals?: $Enums.RefundInitiator | Prisma.EnumRefundInitiatorFieldRefInput<$PrismaModel> + in?: $Enums.RefundInitiator[] | Prisma.ListEnumRefundInitiatorFieldRefInput<$PrismaModel> + notIn?: $Enums.RefundInitiator[] | Prisma.ListEnumRefundInitiatorFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRefundInitiatorFilter<$PrismaModel> | $Enums.RefundInitiator +} + +export type NestedEnumRefundStatusFilter<$PrismaModel = never> = { + equals?: $Enums.RefundStatus | Prisma.EnumRefundStatusFieldRefInput<$PrismaModel> + in?: $Enums.RefundStatus[] | Prisma.ListEnumRefundStatusFieldRefInput<$PrismaModel> + notIn?: $Enums.RefundStatus[] | Prisma.ListEnumRefundStatusFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRefundStatusFilter<$PrismaModel> | $Enums.RefundStatus +} + +export type NestedEnumRefundReasonWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.RefundReason | Prisma.EnumRefundReasonFieldRefInput<$PrismaModel> + in?: $Enums.RefundReason[] | Prisma.ListEnumRefundReasonFieldRefInput<$PrismaModel> + notIn?: $Enums.RefundReason[] | Prisma.ListEnumRefundReasonFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRefundReasonWithAggregatesFilter<$PrismaModel> | $Enums.RefundReason + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedEnumRefundReasonFilter<$PrismaModel> + _max?: Prisma.NestedEnumRefundReasonFilter<$PrismaModel> +} + +export type NestedEnumRefundReporterWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.RefundReporter | Prisma.EnumRefundReporterFieldRefInput<$PrismaModel> + in?: $Enums.RefundReporter[] | Prisma.ListEnumRefundReporterFieldRefInput<$PrismaModel> + notIn?: $Enums.RefundReporter[] | Prisma.ListEnumRefundReporterFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRefundReporterWithAggregatesFilter<$PrismaModel> | $Enums.RefundReporter + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedEnumRefundReporterFilter<$PrismaModel> + _max?: Prisma.NestedEnumRefundReporterFilter<$PrismaModel> +} + +export type NestedEnumRefundInitiatorWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.RefundInitiator | Prisma.EnumRefundInitiatorFieldRefInput<$PrismaModel> + in?: $Enums.RefundInitiator[] | Prisma.ListEnumRefundInitiatorFieldRefInput<$PrismaModel> + notIn?: $Enums.RefundInitiator[] | Prisma.ListEnumRefundInitiatorFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRefundInitiatorWithAggregatesFilter<$PrismaModel> | $Enums.RefundInitiator + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedEnumRefundInitiatorFilter<$PrismaModel> + _max?: Prisma.NestedEnumRefundInitiatorFilter<$PrismaModel> +} + +export type NestedEnumRefundStatusWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.RefundStatus | Prisma.EnumRefundStatusFieldRefInput<$PrismaModel> + in?: $Enums.RefundStatus[] | Prisma.ListEnumRefundStatusFieldRefInput<$PrismaModel> + notIn?: $Enums.RefundStatus[] | Prisma.ListEnumRefundStatusFieldRefInput<$PrismaModel> + not?: Prisma.NestedEnumRefundStatusWithAggregatesFilter<$PrismaModel> | $Enums.RefundStatus + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedEnumRefundStatusFilter<$PrismaModel> + _max?: Prisma.NestedEnumRefundStatusFilter<$PrismaModel> +} + diff --git a/app/generated/prisma/enums.ts b/app/generated/prisma/enums.ts index 5ca4ef8..b6bbcc0 100644 --- a/app/generated/prisma/enums.ts +++ b/app/generated/prisma/enums.ts @@ -68,6 +68,7 @@ export const BookingStatus = { PAID: 'PAID', CANCELLED: 'CANCELLED', REFUNDED: 'REFUNDED', + PARTIALLY_REFUNDED: 'PARTIALLY_REFUNDED', EXPIRED: 'EXPIRED' } as const @@ -93,3 +94,45 @@ export const PaymentStatus = { } as const export type PaymentStatus = (typeof PaymentStatus)[keyof typeof PaymentStatus] + + +export const RefundReason = { + USER_CANCELLATION: 'USER_CANCELLATION', + ORGANIZER_CANCELLED: 'ORGANIZER_CANCELLED', + TRIP_ISSUE: 'TRIP_ISSUE', + ADMIN_ADJUSTMENT: 'ADMIN_ADJUSTMENT', + DISPUTE_RESOLVED: 'DISPUTE_RESOLVED', + OTHER: 'OTHER' +} as const + +export type RefundReason = (typeof RefundReason)[keyof typeof RefundReason] + + +export const RefundStatus = { + PENDING: 'PENDING', + APPROVED: 'APPROVED', + REJECTED: 'REJECTED', + PROCESSING: 'PROCESSING', + SUCCEEDED: 'SUCCEEDED', + FAILED: 'FAILED' +} as const + +export type RefundStatus = (typeof RefundStatus)[keyof typeof RefundStatus] + + +export const RefundInitiator = { + USER: 'USER', + ORGANIZER: 'ORGANIZER', + SYSTEM: 'SYSTEM', + ADMIN: 'ADMIN' +} as const + +export type RefundInitiator = (typeof RefundInitiator)[keyof typeof RefundInitiator] + + +export const RefundReporter = { + PARTICIPANT: 'PARTICIPANT', + ORGANIZER: 'ORGANIZER' +} as const + +export type RefundReporter = (typeof RefundReporter)[keyof typeof RefundReporter] diff --git a/app/generated/prisma/internal/class.ts b/app/generated/prisma/internal/class.ts index 88f0669..8f41f74 100644 --- a/app/generated/prisma/internal/class.ts +++ b/app/generated/prisma/internal/class.ts @@ -20,7 +20,7 @@ const config: runtime.GetPrismaClientConfig = { "clientVersion": "7.8.0", "engineVersion": "3c6e192761c0362d496ed980de936e2f3cebcd3a", "activeProvider": "postgresql", - "inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../app/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nmodel User {\n id String @id @default(cuid())\n name String\n email String @unique\n /// Hash bcrypt. Null untuk user yang sign-in via OAuth (mis. Google).\n password String?\n image String?\n /// Diisi PrismaAdapter NextAuth saat email diverifikasi provider OAuth (Google selalu sudah verified).\n emailVerified DateTime?\n /// Apakah user telah menyetujui Syarat & Ketentuan dan Kebijakan Privasi\n acceptedTermsAndPrivacy Boolean @default(false)\n /// Waktu user menyetujui Syarat & Ketentuan dan Kebijakan Privasi\n acceptedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n accounts Account[]\n trips Trip[]\n participations TripParticipant[]\n tripReviews TripReview[]\n bookings Booking[]\n\n organizerVerification OrganizerVerification? @relation(\"OrganizerVerificationOwner\")\n reviewedVerifications OrganizerVerification[] @relation(\"OrganizerVerificationReviewer\")\n\n profile UserProfile?\n}\n\n/// Profil sosial publik. Berisi info yang user pilih untuk dibagikan ke peserta lain\n/// (bio, kota, minat, vibe). Tidak menyimpan data sensitif — KYC tetap di OrganizerVerification.\nmodel UserProfile {\n id String @id @default(cuid())\n userId String @unique\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n /// Bio singkat, teks bebas\n bio String?\n /// Kota domisili (teks bebas, mis. \"Bandung\", \"Jakarta Selatan\")\n city String?\n /// Tag minat aktivitas (mis. [\"hiking\", \"fotografi\", \"yoga\"])\n interests String[] @default([])\n /// Username Instagram (tanpa @, opsional)\n instagram String?\n /// Gaya jalan / energi user — dipakai untuk matching teman dengan ritme serupa.\n vibe Vibe?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum Vibe {\n CHILL\n BALANCED\n HARDCORE\n}\n\n/// Tabel link akun OAuth pihak ketiga (Google, dst). Diisi oleh PrismaAdapter NextAuth.\n/// Session tidak pakai DB — kita pakai JWT, jadi Session/VerificationToken tidak perlu.\nmodel Account {\n id String @id @default(cuid())\n userId String\n type String\n provider String\n providerAccountId String\n refresh_token String?\n access_token String?\n expires_at Int?\n token_type String?\n scope String?\n id_token String?\n session_state String?\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n}\n\nmodel OrganizerVerification {\n id String @id @default(cuid())\n userId String @unique\n user User @relation(\"OrganizerVerificationOwner\", fields: [userId], references: [id], onDelete: Cascade)\n\n /// Nama lengkap sesuai KTP\n fullName String\n /// NIK terenkripsi (AES-256-GCM, base64). Plaintext tidak disimpan.\n nikEncrypted String\n /// HMAC-SHA256(NIK + pepper) untuk uniqueness lookup tanpa membuka plaintext.\n nikHash String @unique\n birthDate DateTime\n address String\n\n /// Storage key foto KTP (mis. `ktp/.jpg`). File disimpan terenkripsi di luar /public.\n ktpImageKey String\n /// Storage key foto liveness — user memegang kertas bertuliskan \"SETRIP\".\n /// (Sebelumnya: selfie memegang KTP. Diganti supaya user tidak perlu memajang KTP dua kali.)\n livenessKey String\n\n bankName String\n bankAccountNumber String\n bankAccountName String\n\n status VerificationStatus @default(PENDING)\n rejectionReason String?\n reviewedAt DateTime?\n reviewedById String?\n reviewedBy User? @relation(\"OrganizerVerificationReviewer\", fields: [reviewedById], references: [id])\n verifiedAt DateTime?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum VerificationStatus {\n PENDING\n APPROVED\n REJECTED\n}\n\nmodel Trip {\n id String @id @default(cuid())\n title String\n description String?\n /// Kategori aktivitas.\n category ActivityCategory @default(HIKING)\n /// Destinasi/subjek aktivitas — interpretasinya tergantung kategori (gunung untuk HIKING, spot untuk DIVING, venue untuk CONCERT, tema untuk WORKSHOP, dst).\n destination String\n location String\n /// Titik kumpul / meeting point (teks bebas)\n meetingPoint String?\n /// Itinerary hari per hari (teks bebas, bullet OK)\n itinerary String?\n /// Yang termasuk harga (teks bebas)\n whatsIncluded String?\n /// Yang tidak termasuk (teks bebas)\n whatsExcluded String?\n date DateTime\n endDate DateTime?\n maxParticipants Int\n price Int\n /// Ritme/energi trip — dipakai untuk matching dengan vibe user.\n vibe Vibe?\n status TripStatus @default(OPEN)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n organizerId String\n organizer User @relation(fields: [organizerId], references: [id])\n\n participants TripParticipant[]\n images TripImage[]\n reviews TripReview[]\n bookings Booking[]\n\n @@index([category, status, date])\n @@index([vibe, status, date])\n}\n\nmodel TripReview {\n id String @id @default(cuid())\n rating Int\n comment String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n tripId String\n trip Trip @relation(fields: [tripId], references: [id], onDelete: Cascade)\n\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([tripId, userId])\n}\n\nmodel TripImage {\n id String @id @default(cuid())\n url String\n caption String?\n order Int @default(0)\n\n tripId String\n trip Trip @relation(fields: [tripId], references: [id], onDelete: Cascade)\n}\n\nmodel TripParticipant {\n id String @id @default(cuid())\n status ParticipantStatus @default(PENDING)\n createdAt DateTime @default(now())\n /// @deprecated — sumber kebenaran pindah ke Booking/Payment. Tetap di-update\n /// untuk backward-compat selama transisi UI lama. Akan dihapus PR berikutnya.\n markedPaidAt DateTime?\n /// @deprecated — sumber kebenaran pindah ke Booking/Payment. Tetap di-update\n /// untuk backward-compat selama transisi UI lama. Akan dihapus PR berikutnya.\n paymentConfirmedAt DateTime?\n\n tripId String\n trip Trip @relation(fields: [tripId], references: [id])\n\n userId String\n user User @relation(fields: [userId], references: [id])\n\n booking Booking?\n\n @@unique([tripId, userId])\n}\n\nenum TripStatus {\n OPEN\n FULL\n CLOSED\n COMPLETED\n}\n\nenum ActivityCategory {\n HIKING\n CAMPING\n SNORKELING\n DIVING\n ISLAND_HOPPING\n CITY_TRIP\n CULINARY\n CONCERT\n WORKSHOP\n RETREAT\n}\n\nenum ParticipantStatus {\n PENDING\n CONFIRMED\n CANCELLED\n}\n\n/// Booking 1-1 ke TripParticipant. Lifecycle ikut peserta:\n/// - join → Booking PENDING (menunggu approve organizer)\n/// - organizer confirm → AWAITING_PAY (paid trip) atau PAID (free trip)\n/// - peserta + organizer rampungkan pembayaran → PAID\n/// - cancel/reject → CANCELLED\n/// `amount` adalah snapshot harga saat booking dibuat — protect dari perubahan trip.price.\nmodel Booking {\n id String @id @default(cuid())\n tripId String\n trip Trip @relation(fields: [tripId], references: [id])\n userId String\n user User @relation(fields: [userId], references: [id])\n participantId String @unique\n participant TripParticipant @relation(fields: [participantId], references: [id], onDelete: Cascade)\n\n amount Int\n currency String @default(\"IDR\")\n status BookingStatus @default(PENDING)\n\n payments Payment[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n /// Konsistensi: 1-1 ke participant via participantId, dan participant unique\n /// per (tripId, userId). Constraint ini eksplisit + jadi index untuk query\n /// `findByTripAndUser`.\n @@unique([tripId, userId])\n @@index([tripId, status])\n}\n\nenum BookingStatus {\n PENDING\n AWAITING_PAY\n PAID\n CANCELLED\n REFUNDED\n EXPIRED\n}\n\n/// Satu attempt pembayaran. Satu Booking bisa punya banyak Payment kalau retry\n/// (di Phase MIDTRANS nanti). Untuk MANUAL biasanya cukup 1 Payment.\nmodel Payment {\n id String @id @default(cuid())\n bookingId String\n booking Booking @relation(fields: [bookingId], references: [id], onDelete: Cascade)\n\n provider PaymentProvider\n /// order_id eksternal (unik per attempt). Format MANUAL: `manual-`.\n /// Format MIDTRANS nanti: `midtrans--`.\n externalOrderId String @unique\n /// transaction_id dari gateway. Kosong untuk MANUAL atau sebelum first callback.\n externalTxId String?\n /// Metode konkret: bca_va, gopay, qris, manual_transfer, dst.\n method String?\n amount Int\n status PaymentStatus @default(PENDING)\n\n /// Snapshot mentah callback gateway (untuk audit & dispute).\n rawCallback Json?\n /// Snap token Midtrans / redirect URL.\n snapToken String?\n /// Kapan attempt ini kadaluarsa (Midtrans default 24 jam).\n expiresAt DateTime?\n\n paidAt DateTime?\n failedAt DateTime?\n rejectionReason String?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([bookingId, status])\n @@index([provider, status])\n}\n\nenum PaymentProvider {\n MANUAL\n MIDTRANS\n}\n\nenum PaymentStatus {\n PENDING\n AWAITING\n PAID\n FAILED\n EXPIRED\n CANCELLED\n REFUNDED\n}\n", + "inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../app/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nmodel User {\n id String @id @default(cuid())\n name String\n email String @unique\n /// Hash bcrypt. Null untuk user yang sign-in via OAuth (mis. Google).\n password String?\n image String?\n /// Diisi PrismaAdapter NextAuth saat email diverifikasi provider OAuth (Google selalu sudah verified).\n emailVerified DateTime?\n /// Apakah user telah menyetujui Syarat & Ketentuan dan Kebijakan Privasi\n acceptedTermsAndPrivacy Boolean @default(false)\n /// Waktu user menyetujui Syarat & Ketentuan dan Kebijakan Privasi\n acceptedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n accounts Account[]\n trips Trip[]\n participations TripParticipant[]\n tripReviews TripReview[]\n bookings Booking[]\n\n organizerVerification OrganizerVerification? @relation(\"OrganizerVerificationOwner\")\n reviewedVerifications OrganizerVerification[] @relation(\"OrganizerVerificationReviewer\")\n\n reviewedRefunds Refund[] @relation(\"RefundReviewer\")\n\n profile UserProfile?\n}\n\n/// Profil sosial publik. Berisi info yang user pilih untuk dibagikan ke peserta lain\n/// (bio, kota, minat, vibe). Tidak menyimpan data sensitif — KYC tetap di OrganizerVerification.\nmodel UserProfile {\n id String @id @default(cuid())\n userId String @unique\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n /// Bio singkat, teks bebas\n bio String?\n /// Kota domisili (teks bebas, mis. \"Bandung\", \"Jakarta Selatan\")\n city String?\n /// Tag minat aktivitas (mis. [\"hiking\", \"fotografi\", \"yoga\"])\n interests String[] @default([])\n /// Username Instagram (tanpa @, opsional)\n instagram String?\n /// Gaya jalan / energi user — dipakai untuk matching teman dengan ritme serupa.\n vibe Vibe?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum Vibe {\n CHILL\n BALANCED\n HARDCORE\n}\n\n/// Tabel link akun OAuth pihak ketiga (Google, dst). Diisi oleh PrismaAdapter NextAuth.\n/// Session tidak pakai DB — kita pakai JWT, jadi Session/VerificationToken tidak perlu.\nmodel Account {\n id String @id @default(cuid())\n userId String\n type String\n provider String\n providerAccountId String\n refresh_token String?\n access_token String?\n expires_at Int?\n token_type String?\n scope String?\n id_token String?\n session_state String?\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n}\n\nmodel OrganizerVerification {\n id String @id @default(cuid())\n userId String @unique\n user User @relation(\"OrganizerVerificationOwner\", fields: [userId], references: [id], onDelete: Cascade)\n\n /// Nama lengkap sesuai KTP\n fullName String\n /// NIK terenkripsi (AES-256-GCM, base64). Plaintext tidak disimpan.\n nikEncrypted String\n /// HMAC-SHA256(NIK + pepper) untuk uniqueness lookup tanpa membuka plaintext.\n nikHash String @unique\n birthDate DateTime\n address String\n\n /// Storage key foto KTP (mis. `ktp/.jpg`). File disimpan terenkripsi di luar /public.\n ktpImageKey String\n /// Storage key foto liveness — user memegang kertas bertuliskan \"SETRIP\".\n /// (Sebelumnya: selfie memegang KTP. Diganti supaya user tidak perlu memajang KTP dua kali.)\n livenessKey String\n\n bankName String\n bankAccountNumber String\n bankAccountName String\n\n status VerificationStatus @default(PENDING)\n rejectionReason String?\n reviewedAt DateTime?\n reviewedById String?\n reviewedBy User? @relation(\"OrganizerVerificationReviewer\", fields: [reviewedById], references: [id])\n verifiedAt DateTime?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum VerificationStatus {\n PENDING\n APPROVED\n REJECTED\n}\n\nmodel Trip {\n id String @id @default(cuid())\n title String\n description String?\n /// Kategori aktivitas.\n category ActivityCategory @default(HIKING)\n /// Destinasi/subjek aktivitas — interpretasinya tergantung kategori (gunung untuk HIKING, spot untuk DIVING, venue untuk CONCERT, tema untuk WORKSHOP, dst).\n destination String\n location String\n /// Titik kumpul / meeting point (teks bebas)\n meetingPoint String?\n /// Itinerary hari per hari (teks bebas, bullet OK)\n itinerary String?\n /// Yang termasuk harga (teks bebas)\n whatsIncluded String?\n /// Yang tidak termasuk (teks bebas)\n whatsExcluded String?\n date DateTime\n endDate DateTime?\n maxParticipants Int\n price Int\n /// Ritme/energi trip — dipakai untuk matching dengan vibe user.\n vibe Vibe?\n status TripStatus @default(OPEN)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n organizerId String\n organizer User @relation(fields: [organizerId], references: [id])\n\n participants TripParticipant[]\n images TripImage[]\n reviews TripReview[]\n bookings Booking[]\n\n @@index([category, status, date])\n @@index([vibe, status, date])\n}\n\nmodel TripReview {\n id String @id @default(cuid())\n rating Int\n comment String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n tripId String\n trip Trip @relation(fields: [tripId], references: [id], onDelete: Cascade)\n\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([tripId, userId])\n}\n\nmodel TripImage {\n id String @id @default(cuid())\n url String\n caption String?\n order Int @default(0)\n\n tripId String\n trip Trip @relation(fields: [tripId], references: [id], onDelete: Cascade)\n}\n\nmodel TripParticipant {\n id String @id @default(cuid())\n status ParticipantStatus @default(PENDING)\n createdAt DateTime @default(now())\n /// @deprecated — sumber kebenaran pindah ke Booking/Payment. Tetap di-update\n /// untuk backward-compat selama transisi UI lama. Akan dihapus PR berikutnya.\n markedPaidAt DateTime?\n /// @deprecated — sumber kebenaran pindah ke Booking/Payment. Tetap di-update\n /// untuk backward-compat selama transisi UI lama. Akan dihapus PR berikutnya.\n paymentConfirmedAt DateTime?\n\n tripId String\n trip Trip @relation(fields: [tripId], references: [id])\n\n userId String\n user User @relation(fields: [userId], references: [id])\n\n booking Booking?\n\n @@unique([tripId, userId])\n}\n\nenum TripStatus {\n OPEN\n FULL\n CLOSED\n COMPLETED\n}\n\nenum ActivityCategory {\n HIKING\n CAMPING\n SNORKELING\n DIVING\n ISLAND_HOPPING\n CITY_TRIP\n CULINARY\n CONCERT\n WORKSHOP\n RETREAT\n}\n\nenum ParticipantStatus {\n PENDING\n CONFIRMED\n CANCELLED\n}\n\n/// Booking 1-1 ke TripParticipant. Lifecycle ikut peserta:\n/// - join → Booking PENDING (menunggu approve organizer)\n/// - organizer confirm → AWAITING_PAY (paid trip) atau PAID (free trip)\n/// - peserta + organizer rampungkan pembayaran → PAID\n/// - cancel/reject → CANCELLED\n/// `amount` adalah snapshot harga saat booking dibuat — protect dari perubahan trip.price.\nmodel Booking {\n id String @id @default(cuid())\n tripId String\n trip Trip @relation(fields: [tripId], references: [id])\n userId String\n user User @relation(fields: [userId], references: [id])\n participantId String @unique\n participant TripParticipant @relation(fields: [participantId], references: [id], onDelete: Cascade)\n\n amount Int\n currency String @default(\"IDR\")\n status BookingStatus @default(PENDING)\n\n payments Payment[]\n refunds Refund[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n /// Konsistensi: 1-1 ke participant via participantId, dan participant unique\n /// per (tripId, userId). Constraint ini eksplisit + jadi index untuk query\n /// `findByTripAndUser`.\n @@unique([tripId, userId])\n @@index([tripId, status])\n}\n\nenum BookingStatus {\n PENDING\n AWAITING_PAY\n PAID\n CANCELLED\n REFUNDED\n PARTIALLY_REFUNDED\n EXPIRED\n}\n\n/// Satu attempt pembayaran. Satu Booking bisa punya banyak Payment kalau retry\n/// (di Phase MIDTRANS nanti). Untuk MANUAL biasanya cukup 1 Payment.\nmodel Payment {\n id String @id @default(cuid())\n bookingId String\n booking Booking @relation(fields: [bookingId], references: [id], onDelete: Cascade)\n\n provider PaymentProvider\n /// order_id eksternal (unik per attempt). Format MANUAL: `manual-`.\n /// Format MIDTRANS nanti: `midtrans--`.\n externalOrderId String @unique\n /// transaction_id dari gateway. Kosong untuk MANUAL atau sebelum first callback.\n externalTxId String?\n /// Metode konkret: bca_va, gopay, qris, manual_transfer, dst.\n method String?\n amount Int\n status PaymentStatus @default(PENDING)\n\n /// Snapshot mentah callback gateway (untuk audit & dispute).\n rawCallback Json?\n /// Snap token Midtrans / redirect URL.\n snapToken String?\n /// Kapan attempt ini kadaluarsa (Midtrans default 24 jam).\n expiresAt DateTime?\n\n paidAt DateTime?\n failedAt DateTime?\n rejectionReason String?\n\n refunds Refund[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([bookingId, status])\n @@index([provider, status])\n}\n\nenum PaymentProvider {\n MANUAL\n MIDTRANS\n}\n\nenum PaymentStatus {\n PENDING\n AWAITING\n PAID\n FAILED\n EXPIRED\n CANCELLED\n REFUNDED\n}\n\n/// Refund = financial event terpisah dari Booking. Satu Booking bisa punya\n/// banyak Refund (partial, multi-tahap). Setiap row auditable: kapan dibuat,\n/// siapa melaporkan, siapa approve, kapan SUCCEEDED. Never delete — kalau\n/// gagal, set status=FAILED + alasan.\n///\n/// Di MVP refund dimasukkan admin secara manual berdasarkan laporan dari\n/// peserta atau organizer (via WhatsApp/email). Phase berikutnya akan\n/// menambah self-service flow dari user dan organizer.\nmodel Refund {\n id String @id @default(cuid())\n bookingId String\n booking Booking @relation(fields: [bookingId], references: [id], onDelete: Restrict)\n\n /// Payment yang di-refund. Opsional di MVP (manual transfer bisa tidak\n /// terikat ke Payment row tertentu); wajib saat integrasi Midtrans (R-4).\n paymentId String?\n payment Payment? @relation(fields: [paymentId], references: [id], onDelete: Restrict)\n\n /// Nominal refund dalam satuan terkecil (IDR rupiah, integer). Boleh < total\n /// payment untuk partial. Service layer enforce SUM(SUCCEEDED) <= payment.amount.\n amount Int\n currency String @default(\"IDR\")\n\n reason RefundReason\n\n /// Siapa yang melaporkan kebutuhan refund ini ke admin.\n reportedBy RefundReporter\n /// Isi laporan dari peserta/organizer yang admin terima (mis. WA, email).\n reportNote String\n\n /// Pihak yang membuat record di sistem. Di MVP selalu ADMIN; saat self-service\n /// nanti USER/ORGANIZER, dan SYSTEM untuk auto-trigger dari trip dibatalkan.\n initiatedBy RefundInitiator @default(ADMIN)\n\n status RefundStatus @default(PENDING)\n\n /// Idempotency key, dipakai saat panggil Midtrans Refund API di R-4. Generate\n /// sekali saat create supaya retry gateway tidak double-refund.\n idempotencyKey String @unique\n\n /// Catatan admin: alasan tolak, referensi transfer manual, dst. Bebas teks.\n adminNote String?\n\n /// Admin yang terakhir mengubah status (approve/reject/mark-succeeded/failed).\n reviewedById String?\n reviewedBy User? @relation(\"RefundReviewer\", fields: [reviewedById], references: [id], onDelete: SetNull)\n reviewedAt DateTime?\n\n succeededAt DateTime?\n failedAt DateTime?\n\n /// ID refund di gateway (mis. Midtrans refund_id). Kosong untuk manual transfer.\n externalRefundId String?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([bookingId, status])\n @@index([status, createdAt])\n}\n\nenum RefundReason {\n /// Peserta cancel booking sendiri (mengikuti refund window policy).\n USER_CANCELLATION\n /// Organizer membatalkan trip — peserta dapat full refund.\n ORGANIZER_CANCELLED\n /// Masalah saat/setelah trip (mis. itinerary tidak sesuai).\n TRIP_ISSUE\n /// Penyesuaian dari admin (kompensasi, koreksi nominal, dll.).\n ADMIN_ADJUSTMENT\n /// Hasil resolusi dispute / chargeback bank.\n DISPUTE_RESOLVED\n OTHER\n}\n\nenum RefundStatus {\n /// Baru dilaporkan, menunggu review admin.\n PENDING\n /// Admin sudah setujui, siap dieksekusi (manual transfer / gateway).\n APPROVED\n /// Admin tolak (alasan di `adminNote`).\n REJECTED\n /// (R-4) Request sudah dikirim ke gateway, menunggu callback.\n PROCESSING\n /// Uang sudah keluar dari kas Setrip / merchant gateway.\n SUCCEEDED\n /// Eksekusi gagal (alasan di `adminNote`). Record tidak dihapus.\n FAILED\n}\n\nenum RefundInitiator {\n USER\n ORGANIZER\n SYSTEM\n ADMIN\n}\n\nenum RefundReporter {\n PARTICIPANT\n ORGANIZER\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\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"acceptedTermsAndPrivacy\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"acceptedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"trips\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToUser\"},{\"name\":\"participations\",\"kind\":\"object\",\"type\":\"TripParticipant\",\"relationName\":\"TripParticipantToUser\"},{\"name\":\"tripReviews\",\"kind\":\"object\",\"type\":\"TripReview\",\"relationName\":\"TripReviewToUser\"},{\"name\":\"bookings\",\"kind\":\"object\",\"type\":\"Booking\",\"relationName\":\"BookingToUser\"},{\"name\":\"organizerVerification\",\"kind\":\"object\",\"type\":\"OrganizerVerification\",\"relationName\":\"OrganizerVerificationOwner\"},{\"name\":\"reviewedVerifications\",\"kind\":\"object\",\"type\":\"OrganizerVerification\",\"relationName\":\"OrganizerVerificationReviewer\"},{\"name\":\"profile\",\"kind\":\"object\",\"type\":\"UserProfile\",\"relationName\":\"UserToUserProfile\"}],\"dbName\":null},\"UserProfile\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserProfile\"},{\"name\":\"bio\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"city\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"interests\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"instagram\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"vibe\",\"kind\":\"enum\",\"type\":\"Vibe\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"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},\"OrganizerVerification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"OrganizerVerificationOwner\"},{\"name\":\"fullName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nikEncrypted\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nikHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"birthDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"address\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ktpImageKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"livenessKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bankName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bankAccountNumber\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bankAccountName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"VerificationStatus\"},{\"name\":\"rejectionReason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reviewedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"reviewedById\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reviewedBy\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"OrganizerVerificationReviewer\"},{\"name\":\"verifiedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Trip\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"enum\",\"type\":\"ActivityCategory\"},{\"name\":\"destination\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"location\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"meetingPoint\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"itinerary\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"whatsIncluded\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"whatsExcluded\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"endDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"maxParticipants\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"price\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"vibe\",\"kind\":\"enum\",\"type\":\"Vibe\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"TripStatus\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"organizerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"organizer\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TripToUser\"},{\"name\":\"participants\",\"kind\":\"object\",\"type\":\"TripParticipant\",\"relationName\":\"TripToTripParticipant\"},{\"name\":\"images\",\"kind\":\"object\",\"type\":\"TripImage\",\"relationName\":\"TripToTripImage\"},{\"name\":\"reviews\",\"kind\":\"object\",\"type\":\"TripReview\",\"relationName\":\"TripToTripReview\"},{\"name\":\"bookings\",\"kind\":\"object\",\"type\":\"Booking\",\"relationName\":\"BookingToTrip\"}],\"dbName\":null},\"TripReview\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"rating\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"comment\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"tripId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trip\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToTripReview\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TripReviewToUser\"}],\"dbName\":null},\"TripImage\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"caption\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tripId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trip\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToTripImage\"}],\"dbName\":null},\"TripParticipant\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"ParticipantStatus\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"markedPaidAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"paymentConfirmedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"tripId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trip\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToTripParticipant\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TripParticipantToUser\"},{\"name\":\"booking\",\"kind\":\"object\",\"type\":\"Booking\",\"relationName\":\"BookingToTripParticipant\"}],\"dbName\":null},\"Booking\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tripId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trip\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"BookingToTrip\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"BookingToUser\"},{\"name\":\"participantId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"participant\",\"kind\":\"object\",\"type\":\"TripParticipant\",\"relationName\":\"BookingToTripParticipant\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"currency\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"BookingStatus\"},{\"name\":\"payments\",\"kind\":\"object\",\"type\":\"Payment\",\"relationName\":\"BookingToPayment\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Payment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bookingId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"booking\",\"kind\":\"object\",\"type\":\"Booking\",\"relationName\":\"BookingToPayment\"},{\"name\":\"provider\",\"kind\":\"enum\",\"type\":\"PaymentProvider\"},{\"name\":\"externalOrderId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"externalTxId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"method\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"PaymentStatus\"},{\"name\":\"rawCallback\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"snapToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"paidAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"failedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"rejectionReason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"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\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"acceptedTermsAndPrivacy\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"acceptedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"trips\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToUser\"},{\"name\":\"participations\",\"kind\":\"object\",\"type\":\"TripParticipant\",\"relationName\":\"TripParticipantToUser\"},{\"name\":\"tripReviews\",\"kind\":\"object\",\"type\":\"TripReview\",\"relationName\":\"TripReviewToUser\"},{\"name\":\"bookings\",\"kind\":\"object\",\"type\":\"Booking\",\"relationName\":\"BookingToUser\"},{\"name\":\"organizerVerification\",\"kind\":\"object\",\"type\":\"OrganizerVerification\",\"relationName\":\"OrganizerVerificationOwner\"},{\"name\":\"reviewedVerifications\",\"kind\":\"object\",\"type\":\"OrganizerVerification\",\"relationName\":\"OrganizerVerificationReviewer\"},{\"name\":\"reviewedRefunds\",\"kind\":\"object\",\"type\":\"Refund\",\"relationName\":\"RefundReviewer\"},{\"name\":\"profile\",\"kind\":\"object\",\"type\":\"UserProfile\",\"relationName\":\"UserToUserProfile\"}],\"dbName\":null},\"UserProfile\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserProfile\"},{\"name\":\"bio\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"city\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"interests\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"instagram\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"vibe\",\"kind\":\"enum\",\"type\":\"Vibe\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"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},\"OrganizerVerification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"OrganizerVerificationOwner\"},{\"name\":\"fullName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nikEncrypted\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nikHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"birthDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"address\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ktpImageKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"livenessKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bankName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bankAccountNumber\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bankAccountName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"VerificationStatus\"},{\"name\":\"rejectionReason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reviewedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"reviewedById\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reviewedBy\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"OrganizerVerificationReviewer\"},{\"name\":\"verifiedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Trip\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"enum\",\"type\":\"ActivityCategory\"},{\"name\":\"destination\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"location\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"meetingPoint\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"itinerary\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"whatsIncluded\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"whatsExcluded\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"endDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"maxParticipants\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"price\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"vibe\",\"kind\":\"enum\",\"type\":\"Vibe\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"TripStatus\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"organizerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"organizer\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TripToUser\"},{\"name\":\"participants\",\"kind\":\"object\",\"type\":\"TripParticipant\",\"relationName\":\"TripToTripParticipant\"},{\"name\":\"images\",\"kind\":\"object\",\"type\":\"TripImage\",\"relationName\":\"TripToTripImage\"},{\"name\":\"reviews\",\"kind\":\"object\",\"type\":\"TripReview\",\"relationName\":\"TripToTripReview\"},{\"name\":\"bookings\",\"kind\":\"object\",\"type\":\"Booking\",\"relationName\":\"BookingToTrip\"}],\"dbName\":null},\"TripReview\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"rating\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"comment\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"tripId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trip\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToTripReview\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TripReviewToUser\"}],\"dbName\":null},\"TripImage\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"caption\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tripId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trip\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToTripImage\"}],\"dbName\":null},\"TripParticipant\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"ParticipantStatus\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"markedPaidAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"paymentConfirmedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"tripId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trip\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"TripToTripParticipant\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TripParticipantToUser\"},{\"name\":\"booking\",\"kind\":\"object\",\"type\":\"Booking\",\"relationName\":\"BookingToTripParticipant\"}],\"dbName\":null},\"Booking\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tripId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trip\",\"kind\":\"object\",\"type\":\"Trip\",\"relationName\":\"BookingToTrip\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"BookingToUser\"},{\"name\":\"participantId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"participant\",\"kind\":\"object\",\"type\":\"TripParticipant\",\"relationName\":\"BookingToTripParticipant\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"currency\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"BookingStatus\"},{\"name\":\"payments\",\"kind\":\"object\",\"type\":\"Payment\",\"relationName\":\"BookingToPayment\"},{\"name\":\"refunds\",\"kind\":\"object\",\"type\":\"Refund\",\"relationName\":\"BookingToRefund\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Payment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bookingId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"booking\",\"kind\":\"object\",\"type\":\"Booking\",\"relationName\":\"BookingToPayment\"},{\"name\":\"provider\",\"kind\":\"enum\",\"type\":\"PaymentProvider\"},{\"name\":\"externalOrderId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"externalTxId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"method\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"PaymentStatus\"},{\"name\":\"rawCallback\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"snapToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"paidAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"failedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"rejectionReason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"refunds\",\"kind\":\"object\",\"type\":\"Refund\",\"relationName\":\"PaymentToRefund\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Refund\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bookingId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"booking\",\"kind\":\"object\",\"type\":\"Booking\",\"relationName\":\"BookingToRefund\"},{\"name\":\"paymentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"payment\",\"kind\":\"object\",\"type\":\"Payment\",\"relationName\":\"PaymentToRefund\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"currency\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reason\",\"kind\":\"enum\",\"type\":\"RefundReason\"},{\"name\":\"reportedBy\",\"kind\":\"enum\",\"type\":\"RefundReporter\"},{\"name\":\"reportNote\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"initiatedBy\",\"kind\":\"enum\",\"type\":\"RefundInitiator\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"RefundStatus\"},{\"name\":\"idempotencyKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"adminNote\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reviewedById\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reviewedBy\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"RefundReviewer\"},{\"name\":\"reviewedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"succeededAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"failedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"externalRefundId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") config.parameterizationSchema = { - strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"accounts\",\"organizer\",\"trip\",\"participant\",\"booking\",\"payments\",\"_count\",\"participants\",\"images\",\"reviews\",\"bookings\",\"trips\",\"participations\",\"tripReviews\",\"reviewedBy\",\"organizerVerification\",\"reviewedVerifications\",\"profile\",\"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\",\"UserProfile.findUnique\",\"UserProfile.findUniqueOrThrow\",\"UserProfile.findFirst\",\"UserProfile.findFirstOrThrow\",\"UserProfile.findMany\",\"UserProfile.createOne\",\"UserProfile.createMany\",\"UserProfile.createManyAndReturn\",\"UserProfile.updateOne\",\"UserProfile.updateMany\",\"UserProfile.updateManyAndReturn\",\"UserProfile.upsertOne\",\"UserProfile.deleteOne\",\"UserProfile.deleteMany\",\"UserProfile.groupBy\",\"UserProfile.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\",\"OrganizerVerification.findUnique\",\"OrganizerVerification.findUniqueOrThrow\",\"OrganizerVerification.findFirst\",\"OrganizerVerification.findFirstOrThrow\",\"OrganizerVerification.findMany\",\"OrganizerVerification.createOne\",\"OrganizerVerification.createMany\",\"OrganizerVerification.createManyAndReturn\",\"OrganizerVerification.updateOne\",\"OrganizerVerification.updateMany\",\"OrganizerVerification.updateManyAndReturn\",\"OrganizerVerification.upsertOne\",\"OrganizerVerification.deleteOne\",\"OrganizerVerification.deleteMany\",\"OrganizerVerification.groupBy\",\"OrganizerVerification.aggregate\",\"Trip.findUnique\",\"Trip.findUniqueOrThrow\",\"Trip.findFirst\",\"Trip.findFirstOrThrow\",\"Trip.findMany\",\"Trip.createOne\",\"Trip.createMany\",\"Trip.createManyAndReturn\",\"Trip.updateOne\",\"Trip.updateMany\",\"Trip.updateManyAndReturn\",\"Trip.upsertOne\",\"Trip.deleteOne\",\"Trip.deleteMany\",\"Trip.groupBy\",\"Trip.aggregate\",\"TripReview.findUnique\",\"TripReview.findUniqueOrThrow\",\"TripReview.findFirst\",\"TripReview.findFirstOrThrow\",\"TripReview.findMany\",\"TripReview.createOne\",\"TripReview.createMany\",\"TripReview.createManyAndReturn\",\"TripReview.updateOne\",\"TripReview.updateMany\",\"TripReview.updateManyAndReturn\",\"TripReview.upsertOne\",\"TripReview.deleteOne\",\"TripReview.deleteMany\",\"TripReview.groupBy\",\"TripReview.aggregate\",\"TripImage.findUnique\",\"TripImage.findUniqueOrThrow\",\"TripImage.findFirst\",\"TripImage.findFirstOrThrow\",\"TripImage.findMany\",\"TripImage.createOne\",\"TripImage.createMany\",\"TripImage.createManyAndReturn\",\"TripImage.updateOne\",\"TripImage.updateMany\",\"TripImage.updateManyAndReturn\",\"TripImage.upsertOne\",\"TripImage.deleteOne\",\"TripImage.deleteMany\",\"TripImage.groupBy\",\"TripImage.aggregate\",\"TripParticipant.findUnique\",\"TripParticipant.findUniqueOrThrow\",\"TripParticipant.findFirst\",\"TripParticipant.findFirstOrThrow\",\"TripParticipant.findMany\",\"TripParticipant.createOne\",\"TripParticipant.createMany\",\"TripParticipant.createManyAndReturn\",\"TripParticipant.updateOne\",\"TripParticipant.updateMany\",\"TripParticipant.updateManyAndReturn\",\"TripParticipant.upsertOne\",\"TripParticipant.deleteOne\",\"TripParticipant.deleteMany\",\"TripParticipant.groupBy\",\"TripParticipant.aggregate\",\"Booking.findUnique\",\"Booking.findUniqueOrThrow\",\"Booking.findFirst\",\"Booking.findFirstOrThrow\",\"Booking.findMany\",\"Booking.createOne\",\"Booking.createMany\",\"Booking.createManyAndReturn\",\"Booking.updateOne\",\"Booking.updateMany\",\"Booking.updateManyAndReturn\",\"Booking.upsertOne\",\"Booking.deleteOne\",\"Booking.deleteMany\",\"Booking.groupBy\",\"Booking.aggregate\",\"Payment.findUnique\",\"Payment.findUniqueOrThrow\",\"Payment.findFirst\",\"Payment.findFirstOrThrow\",\"Payment.findMany\",\"Payment.createOne\",\"Payment.createMany\",\"Payment.createManyAndReturn\",\"Payment.updateOne\",\"Payment.updateMany\",\"Payment.updateManyAndReturn\",\"Payment.upsertOne\",\"Payment.deleteOne\",\"Payment.deleteMany\",\"Payment.groupBy\",\"Payment.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"bookingId\",\"PaymentProvider\",\"provider\",\"externalOrderId\",\"externalTxId\",\"method\",\"amount\",\"PaymentStatus\",\"status\",\"rawCallback\",\"snapToken\",\"expiresAt\",\"paidAt\",\"failedAt\",\"rejectionReason\",\"createdAt\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"contains\",\"startsWith\",\"endsWith\",\"tripId\",\"userId\",\"participantId\",\"currency\",\"BookingStatus\",\"ParticipantStatus\",\"markedPaidAt\",\"paymentConfirmedAt\",\"url\",\"caption\",\"order\",\"rating\",\"comment\",\"title\",\"description\",\"ActivityCategory\",\"category\",\"destination\",\"location\",\"meetingPoint\",\"itinerary\",\"whatsIncluded\",\"whatsExcluded\",\"date\",\"endDate\",\"maxParticipants\",\"price\",\"Vibe\",\"vibe\",\"TripStatus\",\"organizerId\",\"fullName\",\"nikEncrypted\",\"nikHash\",\"birthDate\",\"address\",\"ktpImageKey\",\"livenessKey\",\"bankName\",\"bankAccountNumber\",\"bankAccountName\",\"VerificationStatus\",\"reviewedAt\",\"reviewedById\",\"verifiedAt\",\"type\",\"providerAccountId\",\"refresh_token\",\"access_token\",\"expires_at\",\"token_type\",\"scope\",\"id_token\",\"session_state\",\"bio\",\"city\",\"interests\",\"instagram\",\"has\",\"hasEvery\",\"hasSome\",\"name\",\"email\",\"password\",\"image\",\"emailVerified\",\"acceptedTermsAndPrivacy\",\"acceptedAt\",\"every\",\"some\",\"none\",\"tripId_userId\",\"provider_providerAccountId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"push\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "3QVgoAEVBAAA3wIAIA4AAOMCACAPAADgAgAgEAAA4QIAIBEAAOICACATAADkAgAgFAAA5QIAIBUAAOYCACC-AQAA3QIAML8BAAAqABDAAQAA3QIAMMEBAQAAAAHRAUAA0gIAIdIBQADSAgAhoQIBANgCACGiAgEAAAABowIBANACACGkAgEA0AIAIaUCQADbAgAhpgIgAN4CACGnAkAA2wIAIQEAAAABACAQAwAA0wIAIL4BAAD_AgAwvwEAAAMAEMABAAD_AgAwwQEBANgCACHEAQEA2AIAIeUBAQDYAgAhkQIBANgCACGSAgEA2AIAIZMCAQDQAgAhlAIBANACACGVAgIAgAMAIZYCAQDQAgAhlwIBANACACGYAgEA0AIAIZkCAQDQAgAhCAMAAKIEACCTAgAAgQMAIJQCAACBAwAglQIAAIEDACCWAgAAgQMAIJcCAACBAwAgmAIAAIEDACCZAgAAgQMAIBEDAADTAgAgvgEAAP8CADC_AQAAAwAQwAEAAP8CADDBAQEAAAABxAEBANgCACHlAQEA2AIAIZECAQDYAgAhkgIBANgCACGTAgEA0AIAIZQCAQDQAgAhlQICAIADACGWAgEA0AIAIZcCAQDQAgAhmAIBANACACGZAgEA0AIAIawCAAD-AgAgAwAAAAMAIAEAAAQAMAIAAAUAIBsFAADTAgAgCwAA4QIAIAwAAP0CACANAADiAgAgDgAA4wIAIL4BAAD6AgAwvwEAAAcAEMABAAD6AgAwwQEBANgCACHKAQAA_AKCAiLRAUAA0gIAIdIBQADSAgAh8QEBANgCACHyAQEA0AIAIfQBAAD7AvQBIvUBAQDYAgAh9gEBANgCACH3AQEA0AIAIfgBAQDQAgAh-QEBANACACH6AQEA0AIAIfsBQADSAgAh_AFAANsCACH9AQIA6QIAIf4BAgDpAgAhgAIAANECgAIjggIBANgCACEMBQAAogQAIAsAAIIFACAMAACMBQAgDQAAgwUAIA4AAIQFACDyAQAAgQMAIPcBAACBAwAg-AEAAIEDACD5AQAAgQMAIPoBAACBAwAg_AEAAIEDACCAAgAAgQMAIBsFAADTAgAgCwAA4QIAIAwAAP0CACANAADiAgAgDgAA4wIAIL4BAAD6AgAwvwEAAAcAEMABAAD6AgAwwQEBAAAAAcoBAAD8AoICItEBQADSAgAh0gFAANICACHxAQEA2AIAIfIBAQDQAgAh9AEAAPsC9AEi9QEBANgCACH2AQEA2AIAIfcBAQDQAgAh-AEBANACACH5AQEA0AIAIfoBAQDQAgAh-wFAANICACH8AUAA2wIAIf0BAgDpAgAh_gECAOkCACGAAgAA0QKAAiOCAgEA2AIAIQMAAAAHACABAAAIADACAAAJACANAwAA0wIAIAYAAOsCACAIAAD5AgAgvgEAAPcCADC_AQAACwAQwAEAAPcCADDBAQEA2AIAIcoBAAD4AuoBItEBQADSAgAh5AEBANgCACHlAQEA2AIAIeoBQADbAgAh6wFAANsCACEFAwAAogQAIAYAAIgFACAIAACLBQAg6gEAAIEDACDrAQAAgQMAIA4DAADTAgAgBgAA6wIAIAgAAPkCACC-AQAA9wIAML8BAAALABDAAQAA9wIAMMEBAQAAAAHKAQAA-ALqASLRAUAA0gIAIeQBAQDYAgAh5QEBANgCACHqAUAA2wIAIesBQADbAgAhqwIAAPYCACADAAAACwAgAQAADAAwAgAADQAgEAMAANMCACAGAADrAgAgBwAA7AIAIAkAAO0CACC-AQAA6AIAML8BAAAPABDAAQAA6AIAMMEBAQDYAgAhyAECAOkCACHKAQAA6gLpASLRAUAA0gIAIdIBQADSAgAh5AEBANgCACHlAQEA2AIAIeYBAQDYAgAh5wEBANgCACEBAAAADwAgFAgAAPUCACC-AQAA8QIAML8BAAARABDAAQAA8QIAMMEBAQDYAgAhwgEBANgCACHEAQAA8gLEASLFAQEA2AIAIcYBAQDQAgAhxwEBANACACHIAQIA6QIAIcoBAADzAsoBIssBAAD0AgAgzAEBANACACHNAUAA2wIAIc4BQADbAgAhzwFAANsCACHQAQEA0AIAIdEBQADSAgAh0gFAANICACEJCAAAiwUAIMYBAACBAwAgxwEAAIEDACDLAQAAgQMAIMwBAACBAwAgzQEAAIEDACDOAQAAgQMAIM8BAACBAwAg0AEAAIEDACAUCAAA9QIAIL4BAADxAgAwvwEAABEAEMABAADxAgAwwQEBAAAAAcIBAQDYAgAhxAEAAPICxAEixQEBAAAAAcYBAQDQAgAhxwEBANACACHIAQIA6QIAIcoBAADzAsoBIssBAAD0AgAgzAEBANACACHNAUAA2wIAIc4BQADbAgAhzwFAANsCACHQAQEA0AIAIdEBQADSAgAh0gFAANICACEDAAAAEQAgAQAAEgAwAgAAEwAgAQAAABEAIAkGAADrAgAgvgEAAPACADC_AQAAFgAQwAEAAPACADDBAQEA2AIAIeQBAQDYAgAh7AEBANgCACHtAQEA0AIAIe4BAgDpAgAhAgYAAIgFACDtAQAAgQMAIAkGAADrAgAgvgEAAPACADC_AQAAFgAQwAEAAPACADDBAQEAAAAB5AEBANgCACHsAQEA2AIAIe0BAQDQAgAh7gECAOkCACEDAAAAFgAgAQAAFwAwAgAAGAAgDAMAANMCACAGAADrAgAgvgEAAO8CADC_AQAAGgAQwAEAAO8CADDBAQEA2AIAIdEBQADSAgAh0gFAANICACHkAQEA2AIAIeUBAQDYAgAh7wECAOkCACHwAQEA0AIAIQMDAACiBAAgBgAAiAUAIPABAACBAwAgDQMAANMCACAGAADrAgAgvgEAAO8CADC_AQAAGgAQwAEAAO8CADDBAQEAAAAB0QFAANICACHSAUAA0gIAIeQBAQDYAgAh5QEBANgCACHvAQIA6QIAIfABAQDQAgAhqwIAAO4CACADAAAAGgAgAQAAGwAwAgAAHAAgBAMAAKIEACAGAACIBQAgBwAAiQUAIAkAAIoFACARAwAA0wIAIAYAAOsCACAHAADsAgAgCQAA7QIAIL4BAADoAgAwvwEAAA8AEMABAADoAgAwwQEBAAAAAcgBAgDpAgAhygEAAOoC6QEi0QFAANICACHSAUAA0gIAIeQBAQDYAgAh5QEBANgCACHmAQEAAAAB5wEBANgCACGrAgAA5wIAIAMAAAAPACABAAAeADACAAAfACABAAAACwAgAQAAABYAIAEAAAAaACABAAAADwAgAwAAAAsAIAEAAAwAMAIAAA0AIAMAAAAaACABAAAbADACAAAcACADAAAADwAgAQAAHgAwAgAAHwAgGAMAANMCACASAADcAgAgvgEAANkCADC_AQAAKAAQwAEAANkCADDBAQEA2AIAIcoBAADaAo4CItABAQDQAgAh0QFAANICACHSAUAA0gIAIeUBAQDYAgAhgwIBANgCACGEAgEA2AIAIYUCAQDYAgAhhgJAANICACGHAgEA2AIAIYgCAQDYAgAhiQIBANgCACGKAgEA2AIAIYsCAQDYAgAhjAIBANgCACGOAkAA2wIAIY8CAQDQAgAhkAJAANsCACEBAAAAKAAgFQQAAN8CACAOAADjAgAgDwAA4AIAIBAAAOECACARAADiAgAgEwAA5AIAIBQAAOUCACAVAADmAgAgvgEAAN0CADC_AQAAKgAQwAEAAN0CADDBAQEA2AIAIdEBQADSAgAh0gFAANICACGhAgEA2AIAIaICAQDYAgAhowIBANACACGkAgEA0AIAIaUCQADbAgAhpgIgAN4CACGnAkAA2wIAIQEAAAAqACAGAwAAogQAIBIAAKIEACDQAQAAgQMAII4CAACBAwAgjwIAAIEDACCQAgAAgQMAIBgDAADTAgAgEgAA3AIAIL4BAADZAgAwvwEAACgAEMABAADZAgAwwQEBAAAAAcoBAADaAo4CItABAQDQAgAh0QFAANICACHSAUAA0gIAIeUBAQAAAAGDAgEA2AIAIYQCAQDYAgAhhQIBAAAAAYYCQADSAgAhhwIBANgCACGIAgEA2AIAIYkCAQDYAgAhigIBANgCACGLAgEA2AIAIYwCAQDYAgAhjgJAANsCACGPAgEA0AIAIZACQADbAgAhAwAAACgAIAEAACwAMAIAAC0AIA0DAADTAgAgvgEAAM8CADC_AQAALwAQwAEAAM8CADDBAQEA2AIAIdEBQADSAgAh0gFAANICACHlAQEA2AIAIYACAADRAoACI5oCAQDQAgAhmwIBANACACGcAgAAzgIAIJ0CAQDQAgAhAQAAAC8AIAEAAAADACABAAAABwAgAQAAAAsAIAEAAAAaACABAAAADwAgAQAAACgAIAEAAAABACAMBAAAgAUAIA4AAIQFACAPAACBBQAgEAAAggUAIBEAAIMFACATAACFBQAgFAAAhgUAIBUAAIcFACCjAgAAgQMAIKQCAACBAwAgpQIAAIEDACCnAgAAgQMAIAMAAAAqACABAAA4ADACAAABACADAAAAKgAgAQAAOAAwAgAAAQAgAwAAACoAIAEAADgAMAIAAAEAIBIEAAD4BAAgDgAA_AQAIA8AAPkEACAQAAD6BAAgEQAA-wQAIBMAAP0EACAUAAD-BAAgFQAA_wQAIMEBAQAAAAHRAUAAAAAB0gFAAAAAAaECAQAAAAGiAgEAAAABowIBAAAAAaQCAQAAAAGlAkAAAAABpgIgAAAAAacCQAAAAAEBGwAAPAAgCsEBAQAAAAHRAUAAAAAB0gFAAAAAAaECAQAAAAGiAgEAAAABowIBAAAAAaQCAQAAAAGlAkAAAAABpgIgAAAAAacCQAAAAAEBGwAAPgAwARsAAD4AMBIEAACnBAAgDgAAqwQAIA8AAKgEACAQAACpBAAgEQAAqgQAIBMAAKwEACAUAACtBAAgFQAArgQAIMEBAQCHAwAh0QFAAI0DACHSAUAAjQMAIaECAQCHAwAhogIBAIcDACGjAgEAiQMAIaQCAQCJAwAhpQJAAIwDACGmAiAApgQAIacCQACMAwAhAgAAAAEAIBsAAEEAIArBAQEAhwMAIdEBQACNAwAh0gFAAI0DACGhAgEAhwMAIaICAQCHAwAhowIBAIkDACGkAgEAiQMAIaUCQACMAwAhpgIgAKYEACGnAkAAjAMAIQIAAAAqACAbAABDACACAAAAKgAgGwAAQwAgAwAAAAEAICIAADwAICMAAEEAIAEAAAABACABAAAAKgAgBwoAAKMEACAoAAClBAAgKQAApAQAIKMCAACBAwAgpAIAAIEDACClAgAAgQMAIKcCAACBAwAgDb4BAADUAgAwvwEAAEoAEMABAADUAgAwwQEBAJgCACHRAUAAnwIAIdIBQACfAgAhoQIBAJgCACGiAgEAmAIAIaMCAQCaAgAhpAIBAJoCACGlAkAAngIAIaYCIADVAgAhpwJAAJ4CACEDAAAAKgAgAQAASQAwJwAASgAgAwAAACoAIAEAADgAMAIAAAEAIA0DAADTAgAgvgEAAM8CADC_AQAALwAQwAEAAM8CADDBAQEAAAAB0QFAANICACHSAUAA0gIAIeUBAQAAAAGAAgAA0QKAAiOaAgEA0AIAIZsCAQDQAgAhnAIAAM4CACCdAgEA0AIAIQEAAABNACABAAAATQAgBQMAAKIEACCAAgAAgQMAIJoCAACBAwAgmwIAAIEDACCdAgAAgQMAIAMAAAAvACABAABQADACAABNACADAAAALwAgAQAAUAAwAgAATQAgAwAAAC8AIAEAAFAAMAIAAE0AIAoDAAChBAAgwQEBAAAAAdEBQAAAAAHSAUAAAAAB5QEBAAAAAYACAAAAgAIDmgIBAAAAAZsCAQAAAAGcAgAAoAQAIJ0CAQAAAAEBGwAAVAAgCcEBAQAAAAHRAUAAAAAB0gFAAAAAAeUBAQAAAAGAAgAAAIACA5oCAQAAAAGbAgEAAAABnAIAAKAEACCdAgEAAAABARsAAFYAMAEbAABWADAKAwAAnwQAIMEBAQCHAwAh0QFAAI0DACHSAUAAjQMAIeUBAQCHAwAhgAIAAM8DgAIjmgIBAIkDACGbAgEAiQMAIZwCAACeBAAgnQIBAIkDACECAAAATQAgGwAAWQAgCcEBAQCHAwAh0QFAAI0DACHSAUAAjQMAIeUBAQCHAwAhgAIAAM8DgAIjmgIBAIkDACGbAgEAiQMAIZwCAACeBAAgnQIBAIkDACECAAAALwAgGwAAWwAgAgAAAC8AIBsAAFsAIAMAAABNACAiAABUACAjAABZACABAAAATQAgAQAAAC8AIAcKAACbBAAgKAAAnQQAICkAAJwEACCAAgAAgQMAIJoCAACBAwAgmwIAAIEDACCdAgAAgQMAIAy-AQAAzQIAML8BAABiABDAAQAAzQIAMMEBAQCYAgAh0QFAAJ8CACHSAUAAnwIAIeUBAQCYAgAhgAIAAL0CgAIjmgIBAJoCACGbAgEAmgIAIZwCAADOAgAgnQIBAJoCACEDAAAALwAgAQAAYQAwJwAAYgAgAwAAAC8AIAEAAFAAMAIAAE0AIAEAAAAFACABAAAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACADAAAAAwAgAQAABAAwAgAABQAgDQMAAJoEACDBAQEAAAABxAEBAAAAAeUBAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQICAAAAAZYCAQAAAAGXAgEAAAABmAIBAAAAAZkCAQAAAAEBGwAAagAgDMEBAQAAAAHEAQEAAAAB5QEBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAgIAAAABlgIBAAAAAZcCAQAAAAGYAgEAAAABmQIBAAAAAQEbAABsADABGwAAbAAwDQMAAJkEACDBAQEAhwMAIcQBAQCHAwAh5QEBAIcDACGRAgEAhwMAIZICAQCHAwAhkwIBAIkDACGUAgEAiQMAIZUCAgCYBAAhlgIBAIkDACGXAgEAiQMAIZgCAQCJAwAhmQIBAIkDACECAAAABQAgGwAAbwAgDMEBAQCHAwAhxAEBAIcDACHlAQEAhwMAIZECAQCHAwAhkgIBAIcDACGTAgEAiQMAIZQCAQCJAwAhlQICAJgEACGWAgEAiQMAIZcCAQCJAwAhmAIBAIkDACGZAgEAiQMAIQIAAAADACAbAABxACACAAAAAwAgGwAAcQAgAwAAAAUAICIAAGoAICMAAG8AIAEAAAAFACABAAAAAwAgDAoAAJMEACAoAACWBAAgKQAAlQQAIEoAAJQEACBLAACXBAAgkwIAAIEDACCUAgAAgQMAIJUCAACBAwAglgIAAIEDACCXAgAAgQMAIJgCAACBAwAgmQIAAIEDACAPvgEAAMkCADC_AQAAeAAQwAEAAMkCADDBAQEAmAIAIcQBAQCYAgAh5QEBAJgCACGRAgEAmAIAIZICAQCYAgAhkwIBAJoCACGUAgEAmgIAIZUCAgDKAgAhlgIBAJoCACGXAgEAmgIAIZgCAQCaAgAhmQIBAJoCACEDAAAAAwAgAQAAdwAwJwAAeAAgAwAAAAMAIAEAAAQAMAIAAAUAIAEAAAAtACABAAAALQAgAwAAACgAIAEAACwAMAIAAC0AIAMAAAAoACABAAAsADACAAAtACADAAAAKAAgAQAALAAwAgAALQAgFQMAAJEEACASAACSBAAgwQEBAAAAAcoBAAAAjgIC0AEBAAAAAdEBQAAAAAHSAUAAAAAB5QEBAAAAAYMCAQAAAAGEAgEAAAABhQIBAAAAAYYCQAAAAAGHAgEAAAABiAIBAAAAAYkCAQAAAAGKAgEAAAABiwIBAAAAAYwCAQAAAAGOAkAAAAABjwIBAAAAAZACQAAAAAEBGwAAgAEAIBPBAQEAAAABygEAAACOAgLQAQEAAAAB0QFAAAAAAdIBQAAAAAHlAQEAAAABgwIBAAAAAYQCAQAAAAGFAgEAAAABhgJAAAAAAYcCAQAAAAGIAgEAAAABiQIBAAAAAYoCAQAAAAGLAgEAAAABjAIBAAAAAY4CQAAAAAGPAgEAAAABkAJAAAAAAQEbAACCAQAwARsAAIIBADABAAAAKgAgFQMAAI8EACASAACQBAAgwQEBAIcDACHKAQAAjgSOAiLQAQEAiQMAIdEBQACNAwAh0gFAAI0DACHlAQEAhwMAIYMCAQCHAwAhhAIBAIcDACGFAgEAhwMAIYYCQACNAwAhhwIBAIcDACGIAgEAhwMAIYkCAQCHAwAhigIBAIcDACGLAgEAhwMAIYwCAQCHAwAhjgJAAIwDACGPAgEAiQMAIZACQACMAwAhAgAAAC0AIBsAAIYBACATwQEBAIcDACHKAQAAjgSOAiLQAQEAiQMAIdEBQACNAwAh0gFAAI0DACHlAQEAhwMAIYMCAQCHAwAhhAIBAIcDACGFAgEAhwMAIYYCQACNAwAhhwIBAIcDACGIAgEAhwMAIYkCAQCHAwAhigIBAIcDACGLAgEAhwMAIYwCAQCHAwAhjgJAAIwDACGPAgEAiQMAIZACQACMAwAhAgAAACgAIBsAAIgBACACAAAAKAAgGwAAiAEAIAEAAAAqACADAAAALQAgIgAAgAEAICMAAIYBACABAAAALQAgAQAAACgAIAcKAACLBAAgKAAAjQQAICkAAIwEACDQAQAAgQMAII4CAACBAwAgjwIAAIEDACCQAgAAgQMAIBa-AQAAxQIAML8BAACQAQAQwAEAAMUCADDBAQEAmAIAIcoBAADGAo4CItABAQCaAgAh0QFAAJ8CACHSAUAAnwIAIeUBAQCYAgAhgwIBAJgCACGEAgEAmAIAIYUCAQCYAgAhhgJAAJ8CACGHAgEAmAIAIYgCAQCYAgAhiQIBAJgCACGKAgEAmAIAIYsCAQCYAgAhjAIBAJgCACGOAkAAngIAIY8CAQCaAgAhkAJAAJ4CACEDAAAAKAAgAQAAjwEAMCcAAJABACADAAAAKAAgAQAALAAwAgAALQAgAQAAAAkAIAEAAAAJACADAAAABwAgAQAACAAwAgAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAMAAAAHACABAAAIADACAAAJACAYBQAAhgQAIAsAAIcEACAMAACIBAAgDQAAiQQAIA4AAIoEACDBAQEAAAABygEAAACCAgLRAUAAAAAB0gFAAAAAAfEBAQAAAAHyAQEAAAAB9AEAAAD0AQL1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQAAAAH7AUAAAAAB_AFAAAAAAf0BAgAAAAH-AQIAAAABgAIAAACAAgOCAgEAAAABARsAAJgBACATwQEBAAAAAcoBAAAAggIC0QFAAAAAAdIBQAAAAAHxAQEAAAAB8gEBAAAAAfQBAAAA9AEC9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEBAAAAAfkBAQAAAAH6AQEAAAAB-wFAAAAAAfwBQAAAAAH9AQIAAAAB_gECAAAAAYACAAAAgAIDggIBAAAAAQEbAACaAQAwARsAAJoBADAYBQAA0QMAIAsAANIDACAMAADTAwAgDQAA1AMAIA4AANUDACDBAQEAhwMAIcoBAADQA4ICItEBQACNAwAh0gFAAI0DACHxAQEAhwMAIfIBAQCJAwAh9AEAAM4D9AEi9QEBAIcDACH2AQEAhwMAIfcBAQCJAwAh-AEBAIkDACH5AQEAiQMAIfoBAQCJAwAh-wFAAI0DACH8AUAAjAMAIf0BAgCKAwAh_gECAIoDACGAAgAAzwOAAiOCAgEAhwMAIQIAAAAJACAbAACdAQAgE8EBAQCHAwAhygEAANADggIi0QFAAI0DACHSAUAAjQMAIfEBAQCHAwAh8gEBAIkDACH0AQAAzgP0ASL1AQEAhwMAIfYBAQCHAwAh9wEBAIkDACH4AQEAiQMAIfkBAQCJAwAh-gEBAIkDACH7AUAAjQMAIfwBQACMAwAh_QECAIoDACH-AQIAigMAIYACAADPA4ACI4ICAQCHAwAhAgAAAAcAIBsAAJ8BACACAAAABwAgGwAAnwEAIAMAAAAJACAiAACYAQAgIwAAnQEAIAEAAAAJACABAAAABwAgDAoAAMkDACAoAADMAwAgKQAAywMAIEoAAMoDACBLAADNAwAg8gEAAIEDACD3AQAAgQMAIPgBAACBAwAg-QEAAIEDACD6AQAAgQMAIPwBAACBAwAggAIAAIEDACAWvgEAALsCADC_AQAApgEAEMABAAC7AgAwwQEBAJgCACHKAQAAvgKCAiLRAUAAnwIAIdIBQACfAgAh8QEBAJgCACHyAQEAmgIAIfQBAAC8AvQBIvUBAQCYAgAh9gEBAJgCACH3AQEAmgIAIfgBAQCaAgAh-QEBAJoCACH6AQEAmgIAIfsBQACfAgAh_AFAAJ4CACH9AQIAmwIAIf4BAgCbAgAhgAIAAL0CgAIjggIBAJgCACEDAAAABwAgAQAApQEAMCcAAKYBACADAAAABwAgAQAACAAwAgAACQAgAQAAABwAIAEAAAAcACADAAAAGgAgAQAAGwAwAgAAHAAgAwAAABoAIAEAABsAMAIAABwAIAMAAAAaACABAAAbADACAAAcACAJAwAAyAMAIAYAAMcDACDBAQEAAAAB0QFAAAAAAdIBQAAAAAHkAQEAAAAB5QEBAAAAAe8BAgAAAAHwAQEAAAABARsAAK4BACAHwQEBAAAAAdEBQAAAAAHSAUAAAAAB5AEBAAAAAeUBAQAAAAHvAQIAAAAB8AEBAAAAAQEbAACwAQAwARsAALABADAJAwAAxgMAIAYAAMUDACDBAQEAhwMAIdEBQACNAwAh0gFAAI0DACHkAQEAhwMAIeUBAQCHAwAh7wECAIoDACHwAQEAiQMAIQIAAAAcACAbAACzAQAgB8EBAQCHAwAh0QFAAI0DACHSAUAAjQMAIeQBAQCHAwAh5QEBAIcDACHvAQIAigMAIfABAQCJAwAhAgAAABoAIBsAALUBACACAAAAGgAgGwAAtQEAIAMAAAAcACAiAACuAQAgIwAAswEAIAEAAAAcACABAAAAGgAgBgoAAMADACAoAADDAwAgKQAAwgMAIEoAAMEDACBLAADEAwAg8AEAAIEDACAKvgEAALoCADC_AQAAvAEAEMABAAC6AgAwwQEBAJgCACHRAUAAnwIAIdIBQACfAgAh5AEBAJgCACHlAQEAmAIAIe8BAgCbAgAh8AEBAJoCACEDAAAAGgAgAQAAuwEAMCcAALwBACADAAAAGgAgAQAAGwAwAgAAHAAgAQAAABgAIAEAAAAYACADAAAAFgAgAQAAFwAwAgAAGAAgAwAAABYAIAEAABcAMAIAABgAIAMAAAAWACABAAAXADACAAAYACAGBgAAvwMAIMEBAQAAAAHkAQEAAAAB7AEBAAAAAe0BAQAAAAHuAQIAAAABARsAAMQBACAFwQEBAAAAAeQBAQAAAAHsAQEAAAAB7QEBAAAAAe4BAgAAAAEBGwAAxgEAMAEbAADGAQAwBgYAAL4DACDBAQEAhwMAIeQBAQCHAwAh7AEBAIcDACHtAQEAiQMAIe4BAgCKAwAhAgAAABgAIBsAAMkBACAFwQEBAIcDACHkAQEAhwMAIewBAQCHAwAh7QEBAIkDACHuAQIAigMAIQIAAAAWACAbAADLAQAgAgAAABYAIBsAAMsBACADAAAAGAAgIgAAxAEAICMAAMkBACABAAAAGAAgAQAAABYAIAYKAAC5AwAgKAAAvAMAICkAALsDACBKAAC6AwAgSwAAvQMAIO0BAACBAwAgCL4BAAC5AgAwvwEAANIBABDAAQAAuQIAMMEBAQCYAgAh5AEBAJgCACHsAQEAmAIAIe0BAQCaAgAh7gECAJsCACEDAAAAFgAgAQAA0QEAMCcAANIBACADAAAAFgAgAQAAFwAwAgAAGAAgAQAAAA0AIAEAAAANACADAAAACwAgAQAADAAwAgAADQAgAwAAAAsAIAEAAAwAMAIAAA0AIAMAAAALACABAAAMADACAAANACAKAwAAtwMAIAYAALYDACAIAAC4AwAgwQEBAAAAAcoBAAAA6gEC0QFAAAAAAeQBAQAAAAHlAQEAAAAB6gFAAAAAAesBQAAAAAEBGwAA2gEAIAfBAQEAAAABygEAAADqAQLRAUAAAAAB5AEBAAAAAeUBAQAAAAHqAUAAAAAB6wFAAAAAAQEbAADcAQAwARsAANwBADAKAwAArwMAIAYAAK4DACAIAACwAwAgwQEBAIcDACHKAQAArQPqASLRAUAAjQMAIeQBAQCHAwAh5QEBAIcDACHqAUAAjAMAIesBQACMAwAhAgAAAA0AIBsAAN8BACAHwQEBAIcDACHKAQAArQPqASLRAUAAjQMAIeQBAQCHAwAh5QEBAIcDACHqAUAAjAMAIesBQACMAwAhAgAAAAsAIBsAAOEBACACAAAACwAgGwAA4QEAIAMAAAANACAiAADaAQAgIwAA3wEAIAEAAAANACABAAAACwAgBQoAAKoDACAoAACsAwAgKQAAqwMAIOoBAACBAwAg6wEAAIEDACAKvgEAALUCADC_AQAA6AEAEMABAAC1AgAwwQEBAJgCACHKAQAAtgLqASLRAUAAnwIAIeQBAQCYAgAh5QEBAJgCACHqAUAAngIAIesBQACeAgAhAwAAAAsAIAEAAOcBADAnAADoAQAgAwAAAAsAIAEAAAwAMAIAAA0AIAEAAAAfACABAAAAHwAgAwAAAA8AIAEAAB4AMAIAAB8AIAMAAAAPACABAAAeADACAAAfACADAAAADwAgAQAAHgAwAgAAHwAgDQMAAKcDACAGAACmAwAgBwAAqAMAIAkAAKkDACDBAQEAAAAByAECAAAAAcoBAAAA6QEC0QFAAAAAAdIBQAAAAAHkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAABARsAAPABACAJwQEBAAAAAcgBAgAAAAHKAQAAAOkBAtEBQAAAAAHSAUAAAAAB5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAQEbAADyAQAwARsAAPIBADANAwAAlwMAIAYAAJYDACAHAACYAwAgCQAAmQMAIMEBAQCHAwAhyAECAIoDACHKAQAAlQPpASLRAUAAjQMAIdIBQACNAwAh5AEBAIcDACHlAQEAhwMAIeYBAQCHAwAh5wEBAIcDACECAAAAHwAgGwAA9QEAIAnBAQEAhwMAIcgBAgCKAwAhygEAAJUD6QEi0QFAAI0DACHSAUAAjQMAIeQBAQCHAwAh5QEBAIcDACHmAQEAhwMAIecBAQCHAwAhAgAAAA8AIBsAAPcBACACAAAADwAgGwAA9wEAIAMAAAAfACAiAADwAQAgIwAA9QEAIAEAAAAfACABAAAADwAgBQoAAJADACAoAACTAwAgKQAAkgMAIEoAAJEDACBLAACUAwAgDL4BAACxAgAwvwEAAP4BABDAAQAAsQIAMMEBAQCYAgAhyAECAJsCACHKAQAAsgLpASLRAUAAnwIAIdIBQACfAgAh5AEBAJgCACHlAQEAmAIAIeYBAQCYAgAh5wEBAJgCACEDAAAADwAgAQAA_QEAMCcAAP4BACADAAAADwAgAQAAHgAwAgAAHwAgAQAAABMAIAEAAAATACADAAAAEQAgAQAAEgAwAgAAEwAgAwAAABEAIAEAABIAMAIAABMAIAMAAAARACABAAASADACAAATACARCAAAjwMAIMEBAQAAAAHCAQEAAAABxAEAAADEAQLFAQEAAAABxgEBAAAAAccBAQAAAAHIAQIAAAABygEAAADKAQLLAYAAAAABzAEBAAAAAc0BQAAAAAHOAUAAAAABzwFAAAAAAdABAQAAAAHRAUAAAAAB0gFAAAAAAQEbAACGAgAgEMEBAQAAAAHCAQEAAAABxAEAAADEAQLFAQEAAAABxgEBAAAAAccBAQAAAAHIAQIAAAABygEAAADKAQLLAYAAAAABzAEBAAAAAc0BQAAAAAHOAUAAAAABzwFAAAAAAdABAQAAAAHRAUAAAAAB0gFAAAAAAQEbAACIAgAwARsAAIgCADARCAAAjgMAIMEBAQCHAwAhwgEBAIcDACHEAQAAiAPEASLFAQEAhwMAIcYBAQCJAwAhxwEBAIkDACHIAQIAigMAIcoBAACLA8oBIssBgAAAAAHMAQEAiQMAIc0BQACMAwAhzgFAAIwDACHPAUAAjAMAIdABAQCJAwAh0QFAAI0DACHSAUAAjQMAIQIAAAATACAbAACLAgAgEMEBAQCHAwAhwgEBAIcDACHEAQAAiAPEASLFAQEAhwMAIcYBAQCJAwAhxwEBAIkDACHIAQIAigMAIcoBAACLA8oBIssBgAAAAAHMAQEAiQMAIc0BQACMAwAhzgFAAIwDACHPAUAAjAMAIdABAQCJAwAh0QFAAI0DACHSAUAAjQMAIQIAAAARACAbAACNAgAgAgAAABEAIBsAAI0CACADAAAAEwAgIgAAhgIAICMAAIsCACABAAAAEwAgAQAAABEAIA0KAACCAwAgKAAAhQMAICkAAIQDACBKAACDAwAgSwAAhgMAIMYBAACBAwAgxwEAAIEDACDLAQAAgQMAIMwBAACBAwAgzQEAAIEDACDOAQAAgQMAIM8BAACBAwAg0AEAAIEDACATvgEAAJcCADC_AQAAlAIAEMABAACXAgAwwQEBAJgCACHCAQEAmAIAIcQBAACZAsQBIsUBAQCYAgAhxgEBAJoCACHHAQEAmgIAIcgBAgCbAgAhygEAAJwCygEiywEAAJ0CACDMAQEAmgIAIc0BQACeAgAhzgFAAJ4CACHPAUAAngIAIdABAQCaAgAh0QFAAJ8CACHSAUAAnwIAIQMAAAARACABAACTAgAwJwAAlAIAIAMAAAARACABAAASADACAAATACATvgEAAJcCADC_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_AQAA6AEAEMABAAC1AgAwwQEBAJgCACHKAQAAtgLqASLRAUAAnwIAIeQBAQCYAgAh5QEBAJgCACHqAUAAngIAIesBQACeAgAhBwoAAKECACAoAAC4AgAgKQAAuAIAINMBAAAA6gEC1AEAAADqAQjVAQAAAOoBCNoBAAC3AuoBIgcKAAChAgAgKAAAuAIAICkAALgCACDTAQAAAOoBAtQBAAAA6gEI1QEAAADqAQjaAQAAtwLqASIE0wEAAADqAQLUAQAAAOoBCNUBAAAA6gEI2gEAALgC6gEiCL4BAAC5AgAwvwEAANIBABDAAQAAuQIAMMEBAQCYAgAh5AEBAJgCACHsAQEAmAIAIe0BAQCaAgAh7gECAJsCACEKvgEAALoCADC_AQAAvAEAEMABAAC6AgAwwQEBAJgCACHRAUAAnwIAIdIBQACfAgAh5AEBAJgCACHlAQEAmAIAIe8BAgCbAgAh8AEBAJoCACEWvgEAALsCADC_AQAApgEAEMABAAC7AgAwwQEBAJgCACHKAQAAvgKCAiLRAUAAnwIAIdIBQACfAgAh8QEBAJgCACHyAQEAmgIAIfQBAAC8AvQBIvUBAQCYAgAh9gEBAJgCACH3AQEAmgIAIfgBAQCaAgAh-QEBAJoCACH6AQEAmgIAIfsBQACfAgAh_AFAAJ4CACH9AQIAmwIAIf4BAgCbAgAhgAIAAL0CgAIjggIBAJgCACEHCgAAoQIAICgAAMQCACApAADEAgAg0wEAAAD0AQLUAQAAAPQBCNUBAAAA9AEI2gEAAMMC9AEiBwoAAKQCACAoAADCAgAgKQAAwgIAINMBAAAAgAID1AEAAACAAgnVAQAAAIACCdoBAADBAoACIwcKAAChAgAgKAAAwAIAICkAAMACACDTAQAAAIICAtQBAAAAggII1QEAAACCAgjaAQAAvwKCAiIHCgAAoQIAICgAAMACACApAADAAgAg0wEAAACCAgLUAQAAAIICCNUBAAAAggII2gEAAL8CggIiBNMBAAAAggIC1AEAAACCAgjVAQAAAIICCNoBAADAAoICIgcKAACkAgAgKAAAwgIAICkAAMICACDTAQAAAIACA9QBAAAAgAIJ1QEAAACAAgnaAQAAwQKAAiME0wEAAACAAgPUAQAAAIACCdUBAAAAgAIJ2gEAAMICgAIjBwoAAKECACAoAADEAgAgKQAAxAIAINMBAAAA9AEC1AEAAAD0AQjVAQAAAPQBCNoBAADDAvQBIgTTAQAAAPQBAtQBAAAA9AEI1QEAAAD0AQjaAQAAxAL0ASIWvgEAAMUCADC_AQAAkAEAEMABAADFAgAwwQEBAJgCACHKAQAAxgKOAiLQAQEAmgIAIdEBQACfAgAh0gFAAJ8CACHlAQEAmAIAIYMCAQCYAgAhhAIBAJgCACGFAgEAmAIAIYYCQACfAgAhhwIBAJgCACGIAgEAmAIAIYkCAQCYAgAhigIBAJgCACGLAgEAmAIAIYwCAQCYAgAhjgJAAJ4CACGPAgEAmgIAIZACQACeAgAhBwoAAKECACAoAADIAgAgKQAAyAIAINMBAAAAjgIC1AEAAACOAgjVAQAAAI4CCNoBAADHAo4CIgcKAAChAgAgKAAAyAIAICkAAMgCACDTAQAAAI4CAtQBAAAAjgII1QEAAACOAgjaAQAAxwKOAiIE0wEAAACOAgLUAQAAAI4CCNUBAAAAjgII2gEAAMgCjgIiD74BAADJAgAwvwEAAHgAEMABAADJAgAwwQEBAJgCACHEAQEAmAIAIeUBAQCYAgAhkQIBAJgCACGSAgEAmAIAIZMCAQCaAgAhlAIBAJoCACGVAgIAygIAIZYCAQCaAgAhlwIBAJoCACGYAgEAmgIAIZkCAQCaAgAhDQoAAKQCACAoAACkAgAgKQAApAIAIEoAAMwCACBLAACkAgAg0wECAAAAAdQBAgAAAAXVAQIAAAAF1gECAAAAAdcBAgAAAAHYAQIAAAAB2QECAAAAAdoBAgDLAgAhDQoAAKQCACAoAACkAgAgKQAApAIAIEoAAMwCACBLAACkAgAg0wECAAAAAdQBAgAAAAXVAQIAAAAF1gECAAAAAdcBAgAAAAHYAQIAAAAB2QECAAAAAdoBAgDLAgAhCNMBCAAAAAHUAQgAAAAF1QEIAAAABdYBCAAAAAHXAQgAAAAB2AEIAAAAAdkBCAAAAAHaAQgAzAIAIQy-AQAAzQIAML8BAABiABDAAQAAzQIAMMEBAQCYAgAh0QFAAJ8CACHSAUAAnwIAIeUBAQCYAgAhgAIAAL0CgAIjmgIBAJoCACGbAgEAmgIAIZwCAADOAgAgnQIBAJoCACEE0wEBAAAABZ4CAQAAAAGfAgEAAAAEoAIBAAAABA0DAADTAgAgvgEAAM8CADC_AQAALwAQwAEAAM8CADDBAQEA2AIAIdEBQADSAgAh0gFAANICACHlAQEA2AIAIYACAADRAoACI5oCAQDQAgAhmwIBANACACGcAgAAzgIAIJ0CAQDQAgAhC9MBAQAAAAHUAQEAAAAF1QEBAAAABdYBAQAAAAHXAQEAAAAB2AEBAAAAAdkBAQAAAAHaAQEArAIAIeEBAQAAAAHiAQEAAAAB4wEBAAAAAQTTAQAAAIACA9QBAAAAgAIJ1QEAAACAAgnaAQAAwgKAAiMI0wFAAAAAAdQBQAAAAATVAUAAAAAE1gFAAAAAAdcBQAAAAAHYAUAAAAAB2QFAAAAAAdoBQACiAgAhFwQAAN8CACAOAADjAgAgDwAA4AIAIBAAAOECACARAADiAgAgEwAA5AIAIBQAAOUCACAVAADmAgAgvgEAAN0CADC_AQAAKgAQwAEAAN0CADDBAQEA2AIAIdEBQADSAgAh0gFAANICACGhAgEA2AIAIaICAQDYAgAhowIBANACACGkAgEA0AIAIaUCQADbAgAhpgIgAN4CACGnAkAA2wIAIa0CAAAqACCuAgAAKgAgDb4BAADUAgAwvwEAAEoAEMABAADUAgAwwQEBAJgCACHRAUAAnwIAIdIBQACfAgAhoQIBAJgCACGiAgEAmAIAIaMCAQCaAgAhpAIBAJoCACGlAkAAngIAIaYCIADVAgAhpwJAAJ4CACEFCgAAoQIAICgAANcCACApAADXAgAg0wEgAAAAAdoBIADWAgAhBQoAAKECACAoAADXAgAgKQAA1wIAINMBIAAAAAHaASAA1gIAIQLTASAAAAAB2gEgANcCACEL0wEBAAAAAdQBAQAAAATVAQEAAAAE1gEBAAAAAdcBAQAAAAHYAQEAAAAB2QEBAAAAAdoBAQCwAgAh4QEBAAAAAeIBAQAAAAHjAQEAAAABGAMAANMCACASAADcAgAgvgEAANkCADC_AQAAKAAQwAEAANkCADDBAQEA2AIAIcoBAADaAo4CItABAQDQAgAh0QFAANICACHSAUAA0gIAIeUBAQDYAgAhgwIBANgCACGEAgEA2AIAIYUCAQDYAgAhhgJAANICACGHAgEA2AIAIYgCAQDYAgAhiQIBANgCACGKAgEA2AIAIYsCAQDYAgAhjAIBANgCACGOAkAA2wIAIY8CAQDQAgAhkAJAANsCACEE0wEAAACOAgLUAQAAAI4CCNUBAAAAjgII2gEAAMgCjgIiCNMBQAAAAAHUAUAAAAAF1QFAAAAABdYBQAAAAAHXAUAAAAAB2AFAAAAAAdkBQAAAAAHaAUAApQIAIRcEAADfAgAgDgAA4wIAIA8AAOACACAQAADhAgAgEQAA4gIAIBMAAOQCACAUAADlAgAgFQAA5gIAIL4BAADdAgAwvwEAACoAEMABAADdAgAwwQEBANgCACHRAUAA0gIAIdIBQADSAgAhoQIBANgCACGiAgEA2AIAIaMCAQDQAgAhpAIBANACACGlAkAA2wIAIaYCIADeAgAhpwJAANsCACGtAgAAKgAgrgIAACoAIBUEAADfAgAgDgAA4wIAIA8AAOACACAQAADhAgAgEQAA4gIAIBMAAOQCACAUAADlAgAgFQAA5gIAIL4BAADdAgAwvwEAACoAEMABAADdAgAwwQEBANgCACHRAUAA0gIAIdIBQADSAgAhoQIBANgCACGiAgEA2AIAIaMCAQDQAgAhpAIBANACACGlAkAA2wIAIaYCIADeAgAhpwJAANsCACEC0wEgAAAAAdoBIADXAgAhA6gCAAADACCpAgAAAwAgqgIAAAMAIAOoAgAABwAgqQIAAAcAIKoCAAAHACADqAIAAAsAIKkCAAALACCqAgAACwAgA6gCAAAaACCpAgAAGgAgqgIAABoAIAOoAgAADwAgqQIAAA8AIKoCAAAPACAaAwAA0wIAIBIAANwCACC-AQAA2QIAML8BAAAoABDAAQAA2QIAMMEBAQDYAgAhygEAANoCjgIi0AEBANACACHRAUAA0gIAIdIBQADSAgAh5QEBANgCACGDAgEA2AIAIYQCAQDYAgAhhQIBANgCACGGAkAA0gIAIYcCAQDYAgAhiAIBANgCACGJAgEA2AIAIYoCAQDYAgAhiwIBANgCACGMAgEA2AIAIY4CQADbAgAhjwIBANACACGQAkAA2wIAIa0CAAAoACCuAgAAKAAgA6gCAAAoACCpAgAAKAAgqgIAACgAIA8DAADTAgAgvgEAAM8CADC_AQAALwAQwAEAAM8CADDBAQEA2AIAIdEBQADSAgAh0gFAANICACHlAQEA2AIAIYACAADRAoACI5oCAQDQAgAhmwIBANACACGcAgAAzgIAIJ0CAQDQAgAhrQIAAC8AIK4CAAAvACAC5AEBAAAAAeUBAQAAAAEQAwAA0wIAIAYAAOsCACAHAADsAgAgCQAA7QIAIL4BAADoAgAwvwEAAA8AEMABAADoAgAwwQEBANgCACHIAQIA6QIAIcoBAADqAukBItEBQADSAgAh0gFAANICACHkAQEA2AIAIeUBAQDYAgAh5gEBANgCACHnAQEA2AIAIQjTAQIAAAAB1AECAAAABNUBAgAAAATWAQIAAAAB1wECAAAAAdgBAgAAAAHZAQIAAAAB2gECAKECACEE0wEAAADpAQLUAQAAAOkBCNUBAAAA6QEI2gEAALQC6QEiHQUAANMCACALAADhAgAgDAAA_QIAIA0AAOICACAOAADjAgAgvgEAAPoCADC_AQAABwAQwAEAAPoCADDBAQEA2AIAIcoBAAD8AoICItEBQADSAgAh0gFAANICACHxAQEA2AIAIfIBAQDQAgAh9AEAAPsC9AEi9QEBANgCACH2AQEA2AIAIfcBAQDQAgAh-AEBANACACH5AQEA0AIAIfoBAQDQAgAh-wFAANICACH8AUAA2wIAIf0BAgDpAgAh_gECAOkCACGAAgAA0QKAAiOCAgEA2AIAIa0CAAAHACCuAgAABwAgDwMAANMCACAGAADrAgAgCAAA-QIAIL4BAAD3AgAwvwEAAAsAEMABAAD3AgAwwQEBANgCACHKAQAA-ALqASLRAUAA0gIAIeQBAQDYAgAh5QEBANgCACHqAUAA2wIAIesBQADbAgAhrQIAAAsAIK4CAAALACADqAIAABEAIKkCAAARACCqAgAAEQAgAuQBAQAAAAHlAQEAAAABDAMAANMCACAGAADrAgAgvgEAAO8CADC_AQAAGgAQwAEAAO8CADDBAQEA2AIAIdEBQADSAgAh0gFAANICACHkAQEA2AIAIeUBAQDYAgAh7wECAOkCACHwAQEA0AIAIQkGAADrAgAgvgEAAPACADC_AQAAFgAQwAEAAPACADDBAQEA2AIAIeQBAQDYAgAh7AEBANgCACHtAQEA0AIAIe4BAgDpAgAhFAgAAPUCACC-AQAA8QIAML8BAAARABDAAQAA8QIAMMEBAQDYAgAhwgEBANgCACHEAQAA8gLEASLFAQEA2AIAIcYBAQDQAgAhxwEBANACACHIAQIA6QIAIcoBAADzAsoBIssBAAD0AgAgzAEBANACACHNAUAA2wIAIc4BQADbAgAhzwFAANsCACHQAQEA0AIAIdEBQADSAgAh0gFAANICACEE0wEAAADEAQLUAQAAAMQBCNUBAAAAxAEI2gEAAK4CxAEiBNMBAAAAygEC1AEAAADKAQjVAQAAAMoBCNoBAACoAsoBIgzTAYAAAAAB1gGAAAAAAdcBgAAAAAHYAYAAAAAB2QGAAAAAAdoBgAAAAAHbAQEAAAAB3AEBAAAAAd0BAQAAAAHeAYAAAAAB3wGAAAAAAeABgAAAAAESAwAA0wIAIAYAAOsCACAHAADsAgAgCQAA7QIAIL4BAADoAgAwvwEAAA8AEMABAADoAgAwwQEBANgCACHIAQIA6QIAIcoBAADqAukBItEBQADSAgAh0gFAANICACHkAQEA2AIAIeUBAQDYAgAh5gEBANgCACHnAQEA2AIAIa0CAAAPACCuAgAADwAgAuQBAQAAAAHlAQEAAAABDQMAANMCACAGAADrAgAgCAAA-QIAIL4BAAD3AgAwvwEAAAsAEMABAAD3AgAwwQEBANgCACHKAQAA-ALqASLRAUAA0gIAIeQBAQDYAgAh5QEBANgCACHqAUAA2wIAIesBQADbAgAhBNMBAAAA6gEC1AEAAADqAQjVAQAAAOoBCNoBAAC4AuoBIhIDAADTAgAgBgAA6wIAIAcAAOwCACAJAADtAgAgvgEAAOgCADC_AQAADwAQwAEAAOgCADDBAQEA2AIAIcgBAgDpAgAhygEAAOoC6QEi0QFAANICACHSAUAA0gIAIeQBAQDYAgAh5QEBANgCACHmAQEA2AIAIecBAQDYAgAhrQIAAA8AIK4CAAAPACAbBQAA0wIAIAsAAOECACAMAAD9AgAgDQAA4gIAIA4AAOMCACC-AQAA-gIAML8BAAAHABDAAQAA-gIAMMEBAQDYAgAhygEAAPwCggIi0QFAANICACHSAUAA0gIAIfEBAQDYAgAh8gEBANACACH0AQAA-wL0ASL1AQEA2AIAIfYBAQDYAgAh9wEBANACACH4AQEA0AIAIfkBAQDQAgAh-gEBANACACH7AUAA0gIAIfwBQADbAgAh_QECAOkCACH-AQIA6QIAIYACAADRAoACI4ICAQDYAgAhBNMBAAAA9AEC1AEAAAD0AQjVAQAAAPQBCNoBAADEAvQBIgTTAQAAAIICAtQBAAAAggII1QEAAACCAgjaAQAAwAKCAiIDqAIAABYAIKkCAAAWACCqAgAAFgAgAsQBAQAAAAGSAgEAAAABEAMAANMCACC-AQAA_wIAML8BAAADABDAAQAA_wIAMMEBAQDYAgAhxAEBANgCACHlAQEA2AIAIZECAQDYAgAhkgIBANgCACGTAgEA0AIAIZQCAQDQAgAhlQICAIADACGWAgEA0AIAIZcCAQDQAgAhmAIBANACACGZAgEA0AIAIQjTAQIAAAAB1AECAAAABdUBAgAAAAXWAQIAAAAB1wECAAAAAdgBAgAAAAHZAQIAAAAB2gECAKQCACEAAAAAAAABsgIBAAAAAQGyAgAAAMQBAgGyAgEAAAABBbICAgAAAAG5AgIAAAABugICAAAAAbsCAgAAAAG8AgIAAAABAbICAAAAygECAbICQAAAAAEBsgJAAAAAAQUiAADZBQAgIwAA3AUAIK8CAADaBQAgsAIAANsFACC1AgAAHwAgAyIAANkFACCvAgAA2gUAILUCAAAfACAAAAAAAAGyAgAAAOkBAgUiAADNBQAgIwAA1wUAIK8CAADOBQAgsAIAANYFACC1AgAACQAgBSIAAMsFACAjAADUBQAgrwIAAMwFACCwAgAA0wUAILUCAAABACAFIgAAyQUAICMAANEFACCvAgAAygUAILACAADQBQAgtQIAAA0AIAsiAACaAwAwIwAAnwMAMK8CAACbAwAwsAIAAJwDADCxAgAAnQMAILICAACeAwAwswIAAJ4DADC0AgAAngMAMLUCAACeAwAwtgIAAKADADC3AgAAoQMAMA_BAQEAAAABxAEAAADEAQLFAQEAAAABxgEBAAAAAccBAQAAAAHIAQIAAAABygEAAADKAQLLAYAAAAABzAEBAAAAAc0BQAAAAAHOAUAAAAABzwFAAAAAAdABAQAAAAHRAUAAAAAB0gFAAAAAAQIAAAATACAiAAClAwAgAwAAABMAICIAAKUDACAjAACkAwAgARsAAM8FADAUCAAA9QIAIL4BAADxAgAwvwEAABEAEMABAADxAgAwwQEBAAAAAcIBAQDYAgAhxAEAAPICxAEixQEBAAAAAcYBAQDQAgAhxwEBANACACHIAQIA6QIAIcoBAADzAsoBIssBAAD0AgAgzAEBANACACHNAUAA2wIAIc4BQADbAgAhzwFAANsCACHQAQEA0AIAIdEBQADSAgAh0gFAANICACECAAAAEwAgGwAApAMAIAIAAACiAwAgGwAAowMAIBO-AQAAoQMAML8BAACiAwAQwAEAAKEDADDBAQEA2AIAIcIBAQDYAgAhxAEAAPICxAEixQEBANgCACHGAQEA0AIAIccBAQDQAgAhyAECAOkCACHKAQAA8wLKASLLAQAA9AIAIMwBAQDQAgAhzQFAANsCACHOAUAA2wIAIc8BQADbAgAh0AEBANACACHRAUAA0gIAIdIBQADSAgAhE74BAAChAwAwvwEAAKIDABDAAQAAoQMAMMEBAQDYAgAhwgEBANgCACHEAQAA8gLEASLFAQEA2AIAIcYBAQDQAgAhxwEBANACACHIAQIA6QIAIcoBAADzAsoBIssBAAD0AgAgzAEBANACACHNAUAA2wIAIc4BQADbAgAhzwFAANsCACHQAQEA0AIAIdEBQADSAgAh0gFAANICACEPwQEBAIcDACHEAQAAiAPEASLFAQEAhwMAIcYBAQCJAwAhxwEBAIkDACHIAQIAigMAIcoBAACLA8oBIssBgAAAAAHMAQEAiQMAIc0BQACMAwAhzgFAAIwDACHPAUAAjAMAIdABAQCJAwAh0QFAAI0DACHSAUAAjQMAIQ_BAQEAhwMAIcQBAACIA8QBIsUBAQCHAwAhxgEBAIkDACHHAQEAiQMAIcgBAgCKAwAhygEAAIsDygEiywGAAAAAAcwBAQCJAwAhzQFAAIwDACHOAUAAjAMAIc8BQACMAwAh0AEBAIkDACHRAUAAjQMAIdIBQACNAwAhD8EBAQAAAAHEAQAAAMQBAsUBAQAAAAHGAQEAAAABxwEBAAAAAcgBAgAAAAHKAQAAAMoBAssBgAAAAAHMAQEAAAABzQFAAAAAAc4BQAAAAAHPAUAAAAAB0AEBAAAAAdEBQAAAAAHSAUAAAAABAyIAAM0FACCvAgAAzgUAILUCAAAJACADIgAAywUAIK8CAADMBQAgtQIAAAEAIAMiAADJBQAgrwIAAMoFACC1AgAADQAgBCIAAJoDADCvAgAAmwMAMLECAACdAwAgtQIAAJ4DADAAAAABsgIAAADqAQIFIgAAwQUAICMAAMcFACCvAgAAwgUAILACAADGBQAgtQIAAAkAIAUiAAC_BQAgIwAAxAUAIK8CAADABQAgsAIAAMMFACC1AgAAAQAgByIAALEDACAjAAC0AwAgrwIAALIDACCwAgAAswMAILMCAAAPACC0AgAADwAgtQIAAB8AIAsDAACnAwAgBgAApgMAIAkAAKkDACDBAQEAAAAByAECAAAAAcoBAAAA6QEC0QFAAAAAAdIBQAAAAAHkAQEAAAAB5QEBAAAAAecBAQAAAAECAAAAHwAgIgAAsQMAIAMAAAAPACAiAACxAwAgIwAAtQMAIA0AAAAPACADAACXAwAgBgAAlgMAIAkAAJkDACAbAAC1AwAgwQEBAIcDACHIAQIAigMAIcoBAACVA-kBItEBQACNAwAh0gFAAI0DACHkAQEAhwMAIeUBAQCHAwAh5wEBAIcDACELAwAAlwMAIAYAAJYDACAJAACZAwAgwQEBAIcDACHIAQIAigMAIcoBAACVA-kBItEBQACNAwAh0gFAAI0DACHkAQEAhwMAIeUBAQCHAwAh5wEBAIcDACEDIgAAwQUAIK8CAADCBQAgtQIAAAkAIAMiAAC_BQAgrwIAAMAFACC1AgAAAQAgAyIAALEDACCvAgAAsgMAILUCAAAfACAAAAAAAAUiAAC6BQAgIwAAvQUAIK8CAAC7BQAgsAIAALwFACC1AgAACQAgAyIAALoFACCvAgAAuwUAILUCAAAJACAAAAAAAAUiAACyBQAgIwAAuAUAIK8CAACzBQAgsAIAALcFACC1AgAACQAgBSIAALAFACAjAAC1BQAgrwIAALEFACCwAgAAtAUAILUCAAABACADIgAAsgUAIK8CAACzBQAgtQIAAAkAIAMiAACwBQAgrwIAALEFACC1AgAAAQAgAAAAAAABsgIAAAD0AQIBsgIAAACAAgMBsgIAAACCAgIFIgAApwUAICMAAK4FACCvAgAAqAUAILACAACtBQAgtQIAAAEAIAsiAAD6AwAwIwAA_wMAMK8CAAD7AwAwsAIAAPwDADCxAgAA_QMAILICAAD-AwAwswIAAP4DADC0AgAA_gMAMLUCAAD-AwAwtgIAAIAEADC3AgAAgQQAMAsiAADuAwAwIwAA8wMAMK8CAADvAwAwsAIAAPADADCxAgAA8QMAILICAADyAwAwswIAAPIDADC0AgAA8gMAMLUCAADyAwAwtgIAAPQDADC3AgAA9QMAMAsiAADiAwAwIwAA5wMAMK8CAADjAwAwsAIAAOQDADCxAgAA5QMAILICAADmAwAwswIAAOYDADC0AgAA5gMAMLUCAADmAwAwtgIAAOgDADC3AgAA6QMAMAsiAADWAwAwIwAA2wMAMK8CAADXAwAwsAIAANgDADCxAgAA2QMAILICAADaAwAwswIAANoDADC0AgAA2gMAMLUCAADaAwAwtgIAANwDADC3AgAA3QMAMAsDAACnAwAgBwAAqAMAIAkAAKkDACDBAQEAAAAByAECAAAAAcoBAAAA6QEC0QFAAAAAAdIBQAAAAAHlAQEAAAAB5gEBAAAAAecBAQAAAAECAAAAHwAgIgAA4QMAIAMAAAAfACAiAADhAwAgIwAA4AMAIAEbAACsBQAwEQMAANMCACAGAADrAgAgBwAA7AIAIAkAAO0CACC-AQAA6AIAML8BAAAPABDAAQAA6AIAMMEBAQAAAAHIAQIA6QIAIcoBAADqAukBItEBQADSAgAh0gFAANICACHkAQEA2AIAIeUBAQDYAgAh5gEBAAAAAecBAQDYAgAhqwIAAOcCACACAAAAHwAgGwAA4AMAIAIAAADeAwAgGwAA3wMAIAy-AQAA3QMAML8BAADeAwAQwAEAAN0DADDBAQEA2AIAIcgBAgDpAgAhygEAAOoC6QEi0QFAANICACHSAUAA0gIAIeQBAQDYAgAh5QEBANgCACHmAQEA2AIAIecBAQDYAgAhDL4BAADdAwAwvwEAAN4DABDAAQAA3QMAMMEBAQDYAgAhyAECAOkCACHKAQAA6gLpASLRAUAA0gIAIdIBQADSAgAh5AEBANgCACHlAQEA2AIAIeYBAQDYAgAh5wEBANgCACEIwQEBAIcDACHIAQIAigMAIcoBAACVA-kBItEBQACNAwAh0gFAAI0DACHlAQEAhwMAIeYBAQCHAwAh5wEBAIcDACELAwAAlwMAIAcAAJgDACAJAACZAwAgwQEBAIcDACHIAQIAigMAIcoBAACVA-kBItEBQACNAwAh0gFAAI0DACHlAQEAhwMAIeYBAQCHAwAh5wEBAIcDACELAwAApwMAIAcAAKgDACAJAACpAwAgwQEBAAAAAcgBAgAAAAHKAQAAAOkBAtEBQAAAAAHSAUAAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAABBwMAAMgDACDBAQEAAAAB0QFAAAAAAdIBQAAAAAHlAQEAAAAB7wECAAAAAfABAQAAAAECAAAAHAAgIgAA7QMAIAMAAAAcACAiAADtAwAgIwAA7AMAIAEbAACrBQAwDQMAANMCACAGAADrAgAgvgEAAO8CADC_AQAAGgAQwAEAAO8CADDBAQEAAAAB0QFAANICACHSAUAA0gIAIeQBAQDYAgAh5QEBANgCACHvAQIA6QIAIfABAQDQAgAhqwIAAO4CACACAAAAHAAgGwAA7AMAIAIAAADqAwAgGwAA6wMAIAq-AQAA6QMAML8BAADqAwAQwAEAAOkDADDBAQEA2AIAIdEBQADSAgAh0gFAANICACHkAQEA2AIAIeUBAQDYAgAh7wECAOkCACHwAQEA0AIAIQq-AQAA6QMAML8BAADqAwAQwAEAAOkDADDBAQEA2AIAIdEBQADSAgAh0gFAANICACHkAQEA2AIAIeUBAQDYAgAh7wECAOkCACHwAQEA0AIAIQbBAQEAhwMAIdEBQACNAwAh0gFAAI0DACHlAQEAhwMAIe8BAgCKAwAh8AEBAIkDACEHAwAAxgMAIMEBAQCHAwAh0QFAAI0DACHSAUAAjQMAIeUBAQCHAwAh7wECAIoDACHwAQEAiQMAIQcDAADIAwAgwQEBAAAAAdEBQAAAAAHSAUAAAAAB5QEBAAAAAe8BAgAAAAHwAQEAAAABBMEBAQAAAAHsAQEAAAAB7QEBAAAAAe4BAgAAAAECAAAAGAAgIgAA-QMAIAMAAAAYACAiAAD5AwAgIwAA-AMAIAEbAACqBQAwCQYAAOsCACC-AQAA8AIAML8BAAAWABDAAQAA8AIAMMEBAQAAAAHkAQEA2AIAIewBAQDYAgAh7QEBANACACHuAQIA6QIAIQIAAAAYACAbAAD4AwAgAgAAAPYDACAbAAD3AwAgCL4BAAD1AwAwvwEAAPYDABDAAQAA9QMAMMEBAQDYAgAh5AEBANgCACHsAQEA2AIAIe0BAQDQAgAh7gECAOkCACEIvgEAAPUDADC_AQAA9gMAEMABAAD1AwAwwQEBANgCACHkAQEA2AIAIewBAQDYAgAh7QEBANACACHuAQIA6QIAIQTBAQEAhwMAIewBAQCHAwAh7QEBAIkDACHuAQIAigMAIQTBAQEAhwMAIewBAQCHAwAh7QEBAIkDACHuAQIAigMAIQTBAQEAAAAB7AEBAAAAAe0BAQAAAAHuAQIAAAABCAMAALcDACAIAAC4AwAgwQEBAAAAAcoBAAAA6gEC0QFAAAAAAeUBAQAAAAHqAUAAAAAB6wFAAAAAAQIAAAANACAiAACFBAAgAwAAAA0AICIAAIUEACAjAACEBAAgARsAAKkFADAOAwAA0wIAIAYAAOsCACAIAAD5AgAgvgEAAPcCADC_AQAACwAQwAEAAPcCADDBAQEAAAABygEAAPgC6gEi0QFAANICACHkAQEA2AIAIeUBAQDYAgAh6gFAANsCACHrAUAA2wIAIasCAAD2AgAgAgAAAA0AIBsAAIQEACACAAAAggQAIBsAAIMEACAKvgEAAIEEADC_AQAAggQAEMABAACBBAAwwQEBANgCACHKAQAA-ALqASLRAUAA0gIAIeQBAQDYAgAh5QEBANgCACHqAUAA2wIAIesBQADbAgAhCr4BAACBBAAwvwEAAIIEABDAAQAAgQQAMMEBAQDYAgAhygEAAPgC6gEi0QFAANICACHkAQEA2AIAIeUBAQDYAgAh6gFAANsCACHrAUAA2wIAIQbBAQEAhwMAIcoBAACtA-oBItEBQACNAwAh5QEBAIcDACHqAUAAjAMAIesBQACMAwAhCAMAAK8DACAIAACwAwAgwQEBAIcDACHKAQAArQPqASLRAUAAjQMAIeUBAQCHAwAh6gFAAIwDACHrAUAAjAMAIQgDAAC3AwAgCAAAuAMAIMEBAQAAAAHKAQAAAOoBAtEBQAAAAAHlAQEAAAAB6gFAAAAAAesBQAAAAAEDIgAApwUAIK8CAACoBQAgtQIAAAEAIAQiAAD6AwAwrwIAAPsDADCxAgAA_QMAILUCAAD-AwAwBCIAAO4DADCvAgAA7wMAMLECAADxAwAgtQIAAPIDADAEIgAA4gMAMK8CAADjAwAwsQIAAOUDACC1AgAA5gMAMAQiAADWAwAwrwIAANcDADCxAgAA2QMAILUCAADaAwAwAAAAAbICAAAAjgICBSIAAJ8FACAjAAClBQAgrwIAAKAFACCwAgAApAUAILUCAAABACAHIgAAnQUAICMAAKIFACCvAgAAngUAILACAAChBQAgswIAACoAILQCAAAqACC1AgAAAQAgAyIAAJ8FACCvAgAAoAUAILUCAAABACADIgAAnQUAIK8CAACeBQAgtQIAAAEAIAAAAAAABbICAgAAAAG5AgIAAAABugICAAAAAbsCAgAAAAG8AgIAAAABBSIAAJgFACAjAACbBQAgrwIAAJkFACCwAgAAmgUAILUCAAABACADIgAAmAUAIK8CAACZBQAgtQIAAAEAIAAAAAKyAgEAAAAEuAIBAAAABQUiAACTBQAgIwAAlgUAIK8CAACUBQAgsAIAAJUFACC1AgAAAQAgAbICAQAAAAQDIgAAkwUAIK8CAACUBQAgtQIAAAEAIAwEAACABQAgDgAAhAUAIA8AAIEFACAQAACCBQAgEQAAgwUAIBMAAIUFACAUAACGBQAgFQAAhwUAIKMCAACBAwAgpAIAAIEDACClAgAAgQMAIKcCAACBAwAgAAAAAbICIAAAAAELIgAA7AQAMCMAAPEEADCvAgAA7QQAMLACAADuBAAwsQIAAO8EACCyAgAA8AQAMLMCAADwBAAwtAIAAPAEADC1AgAA8AQAMLYCAADyBAAwtwIAAPMEADALIgAA4AQAMCMAAOUEADCvAgAA4QQAMLACAADiBAAwsQIAAOMEACCyAgAA5AQAMLMCAADkBAAwtAIAAOQEADC1AgAA5AQAMLYCAADmBAAwtwIAAOcEADALIgAA1wQAMCMAANsEADCvAgAA2AQAMLACAADZBAAwsQIAANoEACCyAgAA_gMAMLMCAAD-AwAwtAIAAP4DADC1AgAA_gMAMLYCAADcBAAwtwIAAIEEADALIgAAzgQAMCMAANIEADCvAgAAzwQAMLACAADQBAAwsQIAANEEACCyAgAA5gMAMLMCAADmAwAwtAIAAOYDADC1AgAA5gMAMLYCAADTBAAwtwIAAOkDADALIgAAxQQAMCMAAMkEADCvAgAAxgQAMLACAADHBAAwsQIAAMgEACCyAgAA2gMAMLMCAADaAwAwtAIAANoDADC1AgAA2gMAMLYCAADKBAAwtwIAAN0DADAHIgAAwAQAICMAAMMEACCvAgAAwQQAILACAADCBAAgswIAACgAILQCAAAoACC1AgAALQAgCyIAALQEADAjAAC5BAAwrwIAALUEADCwAgAAtgQAMLECAAC3BAAgsgIAALgEADCzAgAAuAQAMLQCAAC4BAAwtQIAALgEADC2AgAAugQAMLcCAAC7BAAwByIAAK8EACAjAACyBAAgrwIAALAEACCwAgAAsQQAILMCAAAvACC0AgAALwAgtQIAAE0AIAjBAQEAAAAB0QFAAAAAAdIBQAAAAAGAAgAAAIACA5oCAQAAAAGbAgEAAAABnAIAAKAEACCdAgEAAAABAgAAAE0AICIAAK8EACADAAAALwAgIgAArwQAICMAALMEACAKAAAALwAgGwAAswQAIMEBAQCHAwAh0QFAAI0DACHSAUAAjQMAIYACAADPA4ACI5oCAQCJAwAhmwIBAIkDACGcAgAAngQAIJ0CAQCJAwAhCMEBAQCHAwAh0QFAAI0DACHSAUAAjQMAIYACAADPA4ACI5oCAQCJAwAhmwIBAIkDACGcAgAAngQAIJ0CAQCJAwAhEwMAAJEEACDBAQEAAAABygEAAACOAgLQAQEAAAAB0QFAAAAAAdIBQAAAAAHlAQEAAAABgwIBAAAAAYQCAQAAAAGFAgEAAAABhgJAAAAAAYcCAQAAAAGIAgEAAAABiQIBAAAAAYoCAQAAAAGLAgEAAAABjAIBAAAAAY4CQAAAAAGQAkAAAAABAgAAAC0AICIAAL8EACADAAAALQAgIgAAvwQAICMAAL4EACABGwAAkgUAMBgDAADTAgAgEgAA3AIAIL4BAADZAgAwvwEAACgAEMABAADZAgAwwQEBAAAAAcoBAADaAo4CItABAQDQAgAh0QFAANICACHSAUAA0gIAIeUBAQAAAAGDAgEA2AIAIYQCAQDYAgAhhQIBAAAAAYYCQADSAgAhhwIBANgCACGIAgEA2AIAIYkCAQDYAgAhigIBANgCACGLAgEA2AIAIYwCAQDYAgAhjgJAANsCACGPAgEA0AIAIZACQADbAgAhAgAAAC0AIBsAAL4EACACAAAAvAQAIBsAAL0EACAWvgEAALsEADC_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-gEBAAAAAfsBQAAAAAH8AUAAAAAB_QECAAAAAf4BAgAAAAGAAgAAAIACAwIAAAAJACAiAADrBAAgAwAAAAkAICIAAOsEACAjAADqBAAgARsAAI4FADAbBQAA0wIAIAsAAOECACAMAAD9AgAgDQAA4gIAIA4AAOMCACC-AQAA-gIAML8BAAAHABDAAQAA-gIAMMEBAQAAAAHKAQAA_AKCAiLRAUAA0gIAIdIBQADSAgAh8QEBANgCACHyAQEA0AIAIfQBAAD7AvQBIvUBAQDYAgAh9gEBANgCACH3AQEA0AIAIfgBAQDQAgAh-QEBANACACH6AQEA0AIAIfsBQADSAgAh_AFAANsCACH9AQIA6QIAIf4BAgDpAgAhgAIAANECgAIjggIBANgCACECAAAACQAgGwAA6gQAIAIAAADoBAAgGwAA6QQAIBa-AQAA5wQAML8BAADoBAAQwAEAAOcEADDBAQEA2AIAIcoBAAD8AoICItEBQADSAgAh0gFAANICACHxAQEA2AIAIfIBAQDQAgAh9AEAAPsC9AEi9QEBANgCACH2AQEA2AIAIfcBAQDQAgAh-AEBANACACH5AQEA0AIAIfoBAQDQAgAh-wFAANICACH8AUAA2wIAIf0BAgDpAgAh_gECAOkCACGAAgAA0QKAAiOCAgEA2AIAIRa-AQAA5wQAML8BAADoBAAQwAEAAOcEADDBAQEA2AIAIcoBAAD8AoICItEBQADSAgAh0gFAANICACHxAQEA2AIAIfIBAQDQAgAh9AEAAPsC9AEi9QEBANgCACH2AQEA2AIAIfcBAQDQAgAh-AEBANACACH5AQEA0AIAIfoBAQDQAgAh-wFAANICACH8AUAA2wIAIf0BAgDpAgAh_gECAOkCACGAAgAA0QKAAiOCAgEA2AIAIRLBAQEAhwMAIcoBAADQA4ICItEBQACNAwAh0gFAAI0DACHxAQEAhwMAIfIBAQCJAwAh9AEAAM4D9AEi9QEBAIcDACH2AQEAhwMAIfcBAQCJAwAh-AEBAIkDACH5AQEAiQMAIfoBAQCJAwAh-wFAAI0DACH8AUAAjAMAIf0BAgCKAwAh_gECAIoDACGAAgAAzwOAAiMWCwAA0gMAIAwAANMDACANAADUAwAgDgAA1QMAIMEBAQCHAwAhygEAANADggIi0QFAAI0DACHSAUAAjQMAIfEBAQCHAwAh8gEBAIkDACH0AQAAzgP0ASL1AQEAhwMAIfYBAQCHAwAh9wEBAIkDACH4AQEAiQMAIfkBAQCJAwAh-gEBAIkDACH7AUAAjQMAIfwBQACMAwAh_QECAIoDACH-AQIAigMAIYACAADPA4ACIxYLAACHBAAgDAAAiAQAIA0AAIkEACAOAACKBAAgwQEBAAAAAcoBAAAAggIC0QFAAAAAAdIBQAAAAAHxAQEAAAAB8gEBAAAAAfQBAAAA9AEC9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEBAAAAAfkBAQAAAAH6AQEAAAAB-wFAAAAAAfwBQAAAAAH9AQIAAAAB_gECAAAAAYACAAAAgAIDC8EBAQAAAAHEAQEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCAgAAAAGWAgEAAAABlwIBAAAAAZgCAQAAAAGZAgEAAAABAgAAAAUAICIAAPcEACADAAAABQAgIgAA9wQAICMAAPYEACABGwAAjQUAMBEDAADTAgAgvgEAAP8CADC_AQAAAwAQwAEAAP8CADDBAQEAAAABxAEBANgCACHlAQEA2AIAIZECAQDYAgAhkgIBANgCACGTAgEA0AIAIZQCAQDQAgAhlQICAIADACGWAgEA0AIAIZcCAQDQAgAhmAIBANACACGZAgEA0AIAIawCAAD-AgAgAgAAAAUAIBsAAPYEACACAAAA9AQAIBsAAPUEACAPvgEAAPMEADC_AQAA9AQAEMABAADzBAAwwQEBANgCACHEAQEA2AIAIeUBAQDYAgAhkQIBANgCACGSAgEA2AIAIZMCAQDQAgAhlAIBANACACGVAgIAgAMAIZYCAQDQAgAhlwIBANACACGYAgEA0AIAIZkCAQDQAgAhD74BAADzBAAwvwEAAPQEABDAAQAA8wQAMMEBAQDYAgAhxAEBANgCACHlAQEA2AIAIZECAQDYAgAhkgIBANgCACGTAgEA0AIAIZQCAQDQAgAhlQICAIADACGWAgEA0AIAIZcCAQDQAgAhmAIBANACACGZAgEA0AIAIQvBAQEAhwMAIcQBAQCHAwAhkQIBAIcDACGSAgEAhwMAIZMCAQCJAwAhlAIBAIkDACGVAgIAmAQAIZYCAQCJAwAhlwIBAIkDACGYAgEAiQMAIZkCAQCJAwAhC8EBAQCHAwAhxAEBAIcDACGRAgEAhwMAIZICAQCHAwAhkwIBAIkDACGUAgEAiQMAIZUCAgCYBAAhlgIBAIkDACGXAgEAiQMAIZgCAQCJAwAhmQIBAIkDACELwQEBAAAAAcQBAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQICAAAAAZYCAQAAAAGXAgEAAAABmAIBAAAAAZkCAQAAAAEEIgAA7AQAMK8CAADtBAAwsQIAAO8EACC1AgAA8AQAMAQiAADgBAAwrwIAAOEEADCxAgAA4wQAILUCAADkBAAwBCIAANcEADCvAgAA2AQAMLECAADaBAAgtQIAAP4DADAEIgAAzgQAMK8CAADPBAAwsQIAANEEACC1AgAA5gMAMAQiAADFBAAwrwIAAMYEADCxAgAAyAQAILUCAADaAwAwAyIAAMAEACCvAgAAwQQAILUCAAAtACAEIgAAtAQAMK8CAAC1BAAwsQIAALcEACC1AgAAuAQAMAMiAACvBAAgrwIAALAEACC1AgAATQAgAAAAAAAGAwAAogQAIBIAAKIEACDQAQAAgQMAII4CAACBAwAgjwIAAIEDACCQAgAAgQMAIAAFAwAAogQAIIACAACBAwAgmgIAAIEDACCbAgAAgQMAIJ0CAACBAwAgDAUAAKIEACALAACCBQAgDAAAjAUAIA0AAIMFACAOAACEBQAg8gEAAIEDACD3AQAAgQMAIPgBAACBAwAg-QEAAIEDACD6AQAAgQMAIPwBAACBAwAggAIAAIEDACAFAwAAogQAIAYAAIgFACAIAACLBQAg6gEAAIEDACDrAQAAgQMAIAAEAwAAogQAIAYAAIgFACAHAACJBQAgCQAAigUAIAALwQEBAAAAAcQBAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQICAAAAAZYCAQAAAAGXAgEAAAABmAIBAAAAAZkCAQAAAAESwQEBAAAAAcoBAAAAggIC0QFAAAAAAdIBQAAAAAHxAQEAAAAB8gEBAAAAAfQBAAAA9AEC9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEBAAAAAfkBAQAAAAH6AQEAAAAB-wFAAAAAAfwBQAAAAAH9AQIAAAAB_gECAAAAAYACAAAAgAIDBsEBAQAAAAHKAQAAAOoBAtEBQAAAAAHkAQEAAAAB6gFAAAAAAesBQAAAAAEGwQEBAAAAAdEBQAAAAAHSAUAAAAAB5AEBAAAAAe8BAgAAAAHwAQEAAAABCMEBAQAAAAHIAQIAAAABygEAAADpAQLRAUAAAAAB0gFAAAAAAeQBAQAAAAHmAQEAAAAB5wEBAAAAARLBAQEAAAABygEAAACOAgLQAQEAAAAB0QFAAAAAAdIBQAAAAAHlAQEAAAABgwIBAAAAAYQCAQAAAAGFAgEAAAABhgJAAAAAAYcCAQAAAAGIAgEAAAABiQIBAAAAAYoCAQAAAAGLAgEAAAABjAIBAAAAAY4CQAAAAAGQAkAAAAABEQQAAPgEACAOAAD8BAAgDwAA-QQAIBAAAPoEACARAAD7BAAgEwAA_QQAIBQAAP4EACDBAQEAAAAB0QFAAAAAAdIBQAAAAAGhAgEAAAABogIBAAAAAaMCAQAAAAGkAgEAAAABpQJAAAAAAaYCIAAAAAGnAkAAAAABAgAAAAEAICIAAJMFACADAAAAKgAgIgAAkwUAICMAAJcFACATAAAAKgAgBAAApwQAIA4AAKsEACAPAACoBAAgEAAAqQQAIBEAAKoEACATAACsBAAgFAAArQQAIBsAAJcFACDBAQEAhwMAIdEBQACNAwAh0gFAAI0DACGhAgEAhwMAIaICAQCHAwAhowIBAIkDACGkAgEAiQMAIaUCQACMAwAhpgIgAKYEACGnAkAAjAMAIREEAACnBAAgDgAAqwQAIA8AAKgEACAQAACpBAAgEQAAqgQAIBMAAKwEACAUAACtBAAgwQEBAIcDACHRAUAAjQMAIdIBQACNAwAhoQIBAIcDACGiAgEAhwMAIaMCAQCJAwAhpAIBAIkDACGlAkAAjAMAIaYCIACmBAAhpwJAAIwDACERDgAA_AQAIA8AAPkEACAQAAD6BAAgEQAA-wQAIBMAAP0EACAUAAD-BAAgFQAA_wQAIMEBAQAAAAHRAUAAAAAB0gFAAAAAAaECAQAAAAGiAgEAAAABowIBAAAAAaQCAQAAAAGlAkAAAAABpgIgAAAAAacCQAAAAAECAAAAAQAgIgAAmAUAIAMAAAAqACAiAACYBQAgIwAAnAUAIBMAAAAqACAOAACrBAAgDwAAqAQAIBAAAKkEACARAACqBAAgEwAArAQAIBQAAK0EACAVAACuBAAgGwAAnAUAIMEBAQCHAwAh0QFAAI0DACHSAUAAjQMAIaECAQCHAwAhogIBAIcDACGjAgEAiQMAIaQCAQCJAwAhpQJAAIwDACGmAiAApgQAIacCQACMAwAhEQ4AAKsEACAPAACoBAAgEAAAqQQAIBEAAKoEACATAACsBAAgFAAArQQAIBUAAK4EACDBAQEAhwMAIdEBQACNAwAh0gFAAI0DACGhAgEAhwMAIaICAQCHAwAhowIBAIkDACGkAgEAiQMAIaUCQACMAwAhpgIgAKYEACGnAkAAjAMAIREEAAD4BAAgDgAA_AQAIA8AAPkEACAQAAD6BAAgEQAA-wQAIBMAAP0EACAVAAD_BAAgwQEBAAAAAdEBQAAAAAHSAUAAAAABoQIBAAAAAaICAQAAAAGjAgEAAAABpAIBAAAAAaUCQAAAAAGmAiAAAAABpwJAAAAAAQIAAAABACAiAACdBQAgEQQAAPgEACAOAAD8BAAgDwAA-QQAIBAAAPoEACARAAD7BAAgFAAA_gQAIBUAAP8EACDBAQEAAAAB0QFAAAAAAdIBQAAAAAGhAgEAAAABogIBAAAAAaMCAQAAAAGkAgEAAAABpQJAAAAAAaYCIAAAAAGnAkAAAAABAgAAAAEAICIAAJ8FACADAAAAKgAgIgAAnQUAICMAAKMFACATAAAAKgAgBAAApwQAIA4AAKsEACAPAACoBAAgEAAAqQQAIBEAAKoEACATAACsBAAgFQAArgQAIBsAAKMFACDBAQEAhwMAIdEBQACNAwAh0gFAAI0DACGhAgEAhwMAIaICAQCHAwAhowIBAIkDACGkAgEAiQMAIaUCQACMAwAhpgIgAKYEACGnAkAAjAMAIREEAACnBAAgDgAAqwQAIA8AAKgEACAQAACpBAAgEQAAqgQAIBMAAKwEACAVAACuBAAgwQEBAIcDACHRAUAAjQMAIdIBQACNAwAhoQIBAIcDACGiAgEAhwMAIaMCAQCJAwAhpAIBAIkDACGlAkAAjAMAIaYCIACmBAAhpwJAAIwDACEDAAAAKgAgIgAAnwUAICMAAKYFACATAAAAKgAgBAAApwQAIA4AAKsEACAPAACoBAAgEAAAqQQAIBEAAKoEACAUAACtBAAgFQAArgQAIBsAAKYFACDBAQEAhwMAIdEBQACNAwAh0gFAAI0DACGhAgEAhwMAIaICAQCHAwAhowIBAIkDACGkAgEAiQMAIaUCQACMAwAhpgIgAKYEACGnAkAAjAMAIREEAACnBAAgDgAAqwQAIA8AAKgEACAQAACpBAAgEQAAqgQAIBQAAK0EACAVAACuBAAgwQEBAIcDACHRAUAAjQMAIdIBQACNAwAhoQIBAIcDACGiAgEAhwMAIaMCAQCJAwAhpAIBAIkDACGlAkAAjAMAIaYCIACmBAAhpwJAAIwDACERBAAA-AQAIA4AAPwEACAQAAD6BAAgEQAA-wQAIBMAAP0EACAUAAD-BAAgFQAA_wQAIMEBAQAAAAHRAUAAAAAB0gFAAAAAAaECAQAAAAGiAgEAAAABowIBAAAAAaQCAQAAAAGlAkAAAAABpgIgAAAAAacCQAAAAAECAAAAAQAgIgAApwUAIAbBAQEAAAABygEAAADqAQLRAUAAAAAB5QEBAAAAAeoBQAAAAAHrAUAAAAABBMEBAQAAAAHsAQEAAAAB7QEBAAAAAe4BAgAAAAEGwQEBAAAAAdEBQAAAAAHSAUAAAAAB5QEBAAAAAe8BAgAAAAHwAQEAAAABCMEBAQAAAAHIAQIAAAABygEAAADpAQLRAUAAAAAB0gFAAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAQMAAAAqACAiAACnBQAgIwAArwUAIBMAAAAqACAEAACnBAAgDgAAqwQAIBAAAKkEACARAACqBAAgEwAArAQAIBQAAK0EACAVAACuBAAgGwAArwUAIMEBAQCHAwAh0QFAAI0DACHSAUAAjQMAIaECAQCHAwAhogIBAIcDACGjAgEAiQMAIaQCAQCJAwAhpQJAAIwDACGmAiAApgQAIacCQACMAwAhEQQAAKcEACAOAACrBAAgEAAAqQQAIBEAAKoEACATAACsBAAgFAAArQQAIBUAAK4EACDBAQEAhwMAIdEBQACNAwAh0gFAAI0DACGhAgEAhwMAIaICAQCHAwAhowIBAIkDACGkAgEAiQMAIaUCQACMAwAhpgIgAKYEACGnAkAAjAMAIREEAAD4BAAgDgAA_AQAIA8AAPkEACAQAAD6BAAgEwAA_QQAIBQAAP4EACAVAAD_BAAgwQEBAAAAAdEBQAAAAAHSAUAAAAABoQIBAAAAAaICAQAAAAGjAgEAAAABpAIBAAAAAaUCQAAAAAGmAiAAAAABpwJAAAAAAQIAAAABACAiAACwBQAgFwUAAIYEACALAACHBAAgDAAAiAQAIA4AAIoEACDBAQEAAAABygEAAACCAgLRAUAAAAAB0gFAAAAAAfEBAQAAAAHyAQEAAAAB9AEAAAD0AQL1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQAAAAH7AUAAAAAB_AFAAAAAAf0BAgAAAAH-AQIAAAABgAIAAACAAgOCAgEAAAABAgAAAAkAICIAALIFACADAAAAKgAgIgAAsAUAICMAALYFACATAAAAKgAgBAAApwQAIA4AAKsEACAPAACoBAAgEAAAqQQAIBMAAKwEACAUAACtBAAgFQAArgQAIBsAALYFACDBAQEAhwMAIdEBQACNAwAh0gFAAI0DACGhAgEAhwMAIaICAQCHAwAhowIBAIkDACGkAgEAiQMAIaUCQACMAwAhpgIgAKYEACGnAkAAjAMAIREEAACnBAAgDgAAqwQAIA8AAKgEACAQAACpBAAgEwAArAQAIBQAAK0EACAVAACuBAAgwQEBAIcDACHRAUAAjQMAIdIBQACNAwAhoQIBAIcDACGiAgEAhwMAIaMCAQCJAwAhpAIBAIkDACGlAkAAjAMAIaYCIACmBAAhpwJAAIwDACEDAAAABwAgIgAAsgUAICMAALkFACAZAAAABwAgBQAA0QMAIAsAANIDACAMAADTAwAgDgAA1QMAIBsAALkFACDBAQEAhwMAIcoBAADQA4ICItEBQACNAwAh0gFAAI0DACHxAQEAhwMAIfIBAQCJAwAh9AEAAM4D9AEi9QEBAIcDACH2AQEAhwMAIfcBAQCJAwAh-AEBAIkDACH5AQEAiQMAIfoBAQCJAwAh-wFAAI0DACH8AUAAjAMAIf0BAgCKAwAh_gECAIoDACGAAgAAzwOAAiOCAgEAhwMAIRcFAADRAwAgCwAA0gMAIAwAANMDACAOAADVAwAgwQEBAIcDACHKAQAA0AOCAiLRAUAAjQMAIdIBQACNAwAh8QEBAIcDACHyAQEAiQMAIfQBAADOA_QBIvUBAQCHAwAh9gEBAIcDACH3AQEAiQMAIfgBAQCJAwAh-QEBAIkDACH6AQEAiQMAIfsBQACNAwAh_AFAAIwDACH9AQIAigMAIf4BAgCKAwAhgAIAAM8DgAIjggIBAIcDACEXBQAAhgQAIAsAAIcEACANAACJBAAgDgAAigQAIMEBAQAAAAHKAQAAAIICAtEBQAAAAAHSAUAAAAAB8QEBAAAAAfIBAQAAAAH0AQAAAPQBAvUBAQAAAAH2AQEAAAAB9wEBAAAAAfgBAQAAAAH5AQEAAAAB-gEBAAAAAfsBQAAAAAH8AUAAAAAB_QECAAAAAf4BAgAAAAGAAgAAAIACA4ICAQAAAAECAAAACQAgIgAAugUAIAMAAAAHACAiAAC6BQAgIwAAvgUAIBkAAAAHACAFAADRAwAgCwAA0gMAIA0AANQDACAOAADVAwAgGwAAvgUAIMEBAQCHAwAhygEAANADggIi0QFAAI0DACHSAUAAjQMAIfEBAQCHAwAh8gEBAIkDACH0AQAAzgP0ASL1AQEAhwMAIfYBAQCHAwAh9wEBAIkDACH4AQEAiQMAIfkBAQCJAwAh-gEBAIkDACH7AUAAjQMAIfwBQACMAwAh_QECAIoDACH-AQIAigMAIYACAADPA4ACI4ICAQCHAwAhFwUAANEDACALAADSAwAgDQAA1AMAIA4AANUDACDBAQEAhwMAIcoBAADQA4ICItEBQACNAwAh0gFAAI0DACHxAQEAhwMAIfIBAQCJAwAh9AEAAM4D9AEi9QEBAIcDACH2AQEAhwMAIfcBAQCJAwAh-AEBAIkDACH5AQEAiQMAIfoBAQCJAwAh-wFAAI0DACH8AUAAjAMAIf0BAgCKAwAh_gECAIoDACGAAgAAzwOAAiOCAgEAhwMAIREEAAD4BAAgDgAA_AQAIA8AAPkEACARAAD7BAAgEwAA_QQAIBQAAP4EACAVAAD_BAAgwQEBAAAAAdEBQAAAAAHSAUAAAAABoQIBAAAAAaICAQAAAAGjAgEAAAABpAIBAAAAAaUCQAAAAAGmAiAAAAABpwJAAAAAAQIAAAABACAiAAC_BQAgFwUAAIYEACAMAACIBAAgDQAAiQQAIA4AAIoEACDBAQEAAAABygEAAACCAgLRAUAAAAAB0gFAAAAAAfEBAQAAAAHyAQEAAAAB9AEAAAD0AQL1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQAAAAH7AUAAAAAB_AFAAAAAAf0BAgAAAAH-AQIAAAABgAIAAACAAgOCAgEAAAABAgAAAAkAICIAAMEFACADAAAAKgAgIgAAvwUAICMAAMUFACATAAAAKgAgBAAApwQAIA4AAKsEACAPAACoBAAgEQAAqgQAIBMAAKwEACAUAACtBAAgFQAArgQAIBsAAMUFACDBAQEAhwMAIdEBQACNAwAh0gFAAI0DACGhAgEAhwMAIaICAQCHAwAhowIBAIkDACGkAgEAiQMAIaUCQACMAwAhpgIgAKYEACGnAkAAjAMAIREEAACnBAAgDgAAqwQAIA8AAKgEACARAACqBAAgEwAArAQAIBQAAK0EACAVAACuBAAgwQEBAIcDACHRAUAAjQMAIdIBQACNAwAhoQIBAIcDACGiAgEAhwMAIaMCAQCJAwAhpAIBAIkDACGlAkAAjAMAIaYCIACmBAAhpwJAAIwDACEDAAAABwAgIgAAwQUAICMAAMgFACAZAAAABwAgBQAA0QMAIAwAANMDACANAADUAwAgDgAA1QMAIBsAAMgFACDBAQEAhwMAIcoBAADQA4ICItEBQACNAwAh0gFAAI0DACHxAQEAhwMAIfIBAQCJAwAh9AEAAM4D9AEi9QEBAIcDACH2AQEAhwMAIfcBAQCJAwAh-AEBAIkDACH5AQEAiQMAIfoBAQCJAwAh-wFAAI0DACH8AUAAjAMAIf0BAgCKAwAh_gECAIoDACGAAgAAzwOAAiOCAgEAhwMAIRcFAADRAwAgDAAA0wMAIA0AANQDACAOAADVAwAgwQEBAIcDACHKAQAA0AOCAiLRAUAAjQMAIdIBQACNAwAh8QEBAIcDACHyAQEAiQMAIfQBAADOA_QBIvUBAQCHAwAh9gEBAIcDACH3AQEAiQMAIfgBAQCJAwAh-QEBAIkDACH6AQEAiQMAIfsBQACNAwAh_AFAAIwDACH9AQIAigMAIf4BAgCKAwAhgAIAAM8DgAIjggIBAIcDACEJAwAAtwMAIAYAALYDACDBAQEAAAABygEAAADqAQLRAUAAAAAB5AEBAAAAAeUBAQAAAAHqAUAAAAAB6wFAAAAAAQIAAAANACAiAADJBQAgEQQAAPgEACAPAAD5BAAgEAAA-gQAIBEAAPsEACATAAD9BAAgFAAA_gQAIBUAAP8EACDBAQEAAAAB0QFAAAAAAdIBQAAAAAGhAgEAAAABogIBAAAAAaMCAQAAAAGkAgEAAAABpQJAAAAAAaYCIAAAAAGnAkAAAAABAgAAAAEAICIAAMsFACAXBQAAhgQAIAsAAIcEACAMAACIBAAgDQAAiQQAIMEBAQAAAAHKAQAAAIICAtEBQAAAAAHSAUAAAAAB8QEBAAAAAfIBAQAAAAH0AQAAAPQBAvUBAQAAAAH2AQEAAAAB9wEBAAAAAfgBAQAAAAH5AQEAAAAB-gEBAAAAAfsBQAAAAAH8AUAAAAAB_QECAAAAAf4BAgAAAAGAAgAAAIACA4ICAQAAAAECAAAACQAgIgAAzQUAIA_BAQEAAAABxAEAAADEAQLFAQEAAAABxgEBAAAAAccBAQAAAAHIAQIAAAABygEAAADKAQLLAYAAAAABzAEBAAAAAc0BQAAAAAHOAUAAAAABzwFAAAAAAdABAQAAAAHRAUAAAAAB0gFAAAAAAQMAAAALACAiAADJBQAgIwAA0gUAIAsAAAALACADAACvAwAgBgAArgMAIBsAANIFACDBAQEAhwMAIcoBAACtA-oBItEBQACNAwAh5AEBAIcDACHlAQEAhwMAIeoBQACMAwAh6wFAAIwDACEJAwAArwMAIAYAAK4DACDBAQEAhwMAIcoBAACtA-oBItEBQACNAwAh5AEBAIcDACHlAQEAhwMAIeoBQACMAwAh6wFAAIwDACEDAAAAKgAgIgAAywUAICMAANUFACATAAAAKgAgBAAApwQAIA8AAKgEACAQAACpBAAgEQAAqgQAIBMAAKwEACAUAACtBAAgFQAArgQAIBsAANUFACDBAQEAhwMAIdEBQACNAwAh0gFAAI0DACGhAgEAhwMAIaICAQCHAwAhowIBAIkDACGkAgEAiQMAIaUCQACMAwAhpgIgAKYEACGnAkAAjAMAIREEAACnBAAgDwAAqAQAIBAAAKkEACARAACqBAAgEwAArAQAIBQAAK0EACAVAACuBAAgwQEBAIcDACHRAUAAjQMAIdIBQACNAwAhoQIBAIcDACGiAgEAhwMAIaMCAQCJAwAhpAIBAIkDACGlAkAAjAMAIaYCIACmBAAhpwJAAIwDACEDAAAABwAgIgAAzQUAICMAANgFACAZAAAABwAgBQAA0QMAIAsAANIDACAMAADTAwAgDQAA1AMAIBsAANgFACDBAQEAhwMAIcoBAADQA4ICItEBQACNAwAh0gFAAI0DACHxAQEAhwMAIfIBAQCJAwAh9AEAAM4D9AEi9QEBAIcDACH2AQEAhwMAIfcBAQCJAwAh-AEBAIkDACH5AQEAiQMAIfoBAQCJAwAh-wFAAI0DACH8AUAAjAMAIf0BAgCKAwAh_gECAIoDACGAAgAAzwOAAiOCAgEAhwMAIRcFAADRAwAgCwAA0gMAIAwAANMDACANAADUAwAgwQEBAIcDACHKAQAA0AOCAiLRAUAAjQMAIdIBQACNAwAh8QEBAIcDACHyAQEAiQMAIfQBAADOA_QBIvUBAQCHAwAh9gEBAIcDACH3AQEAiQMAIfgBAQCJAwAh-QEBAIkDACH6AQEAiQMAIfsBQACNAwAh_AFAAIwDACH9AQIAigMAIf4BAgCKAwAhgAIAAM8DgAIjggIBAIcDACEMAwAApwMAIAYAAKYDACAHAACoAwAgwQEBAAAAAcgBAgAAAAHKAQAAAOkBAtEBQAAAAAHSAUAAAAAB5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAQIAAAAfACAiAADZBQAgAwAAAA8AICIAANkFACAjAADdBQAgDgAAAA8AIAMAAJcDACAGAACWAwAgBwAAmAMAIBsAAN0FACDBAQEAhwMAIcgBAgCKAwAhygEAAJUD6QEi0QFAAI0DACHSAUAAjQMAIeQBAQCHAwAh5QEBAIcDACHmAQEAhwMAIecBAQCHAwAhDAMAAJcDACAGAACWAwAgBwAAmAMAIMEBAQCHAwAhyAECAIoDACHKAQAAlQPpASLRAUAAjQMAIdIBQACNAwAh5AEBAIcDACHlAQEAhwMAIeYBAQCHAwAh5wEBAIcDACEJBAYCCgANDicFDwoDECUEESYJEykLFC4LFTAMAQMAAQYFAAEKAAoLDgQMGQgNHQkOIAUDAwABBgADCBAFBQMAAQYAAwcABAkUBgoABwEIAAUBCRUAAQYAAwIDAAEGAAMECyEADCIADSMADiQAAgMAARIrAQEDAAEGBDEADjUADzIAEDMAETQAFDYAAAAAAwoAEigAEykAFAAAAAMKABIoABMpABQBAwABAQMAAQMKABkoABopABsAAAADCgAZKAAaKQAbAQMAAQEDAAEFCgAgKAAjKQAkSgAhSwAiAAAAAAAFCgAgKAAjKQAkSgAhSwAiAgMAARKFAQECAwABEosBAQMKACkoACopACsAAAADCgApKAAqKQArAQUAAQEFAAEFCgAwKAAzKQA0SgAxSwAyAAAAAAAFCgAwKAAzKQA0SgAxSwAyAgMAAQYAAwIDAAEGAAMFCgA5KAA8KQA9SgA6SwA7AAAAAAAFCgA5KAA8KQA9SgA6SwA7AQYAAwEGAAMFCgBCKABFKQBGSgBDSwBEAAAAAAAFCgBCKABFKQBGSgBDSwBEAgMAAQYAAwIDAAEGAAMDCgBLKABMKQBNAAAAAwoASygATCkATQMDAAEGAAMHAAQDAwABBgADBwAEBQoAUigAVSkAVkoAU0sAVAAAAAAABQoAUigAVSkAVkoAU0sAVAEIAAUBCAAFBQoAWygAXikAX0oAXEsAXQAAAAAABQoAWygAXikAX0oAXEsAXRYCARc3ARg5ARk6ARo7ARw9AR0_Dh5ADx9CASBEDiFFECRGASVHASZIDipLEStMFSxODC1PDC5RDC9SDDBTDDFVDDJXDjNYFjRaDDVcDjZdFzdeDDhfDDlgDjpjGDtkHDxlAj1mAj5nAj9oAkBpAkFrAkJtDkNuHURwAkVyDkZzHkd0Akh1Akl2Dkx5H016JU57C098C1B9C1F-C1J_C1OBAQtUgwEOVYQBJlaHAQtXiQEOWIoBJ1mMAQtajQELW44BDlyRAShdkgEsXpMBA1-UAQNglQEDYZYBA2KXAQNjmQEDZJsBDmWcAS1mngEDZ6ABDmihAS5pogEDaqMBA2ukAQ5spwEvbagBNW6pAQlvqgEJcKsBCXGsAQlyrQEJc68BCXSxAQ51sgE2drQBCXe2AQ54twE3ebgBCXq5AQl7ugEOfL0BOH2-AT5-vwEIf8ABCIABwQEIgQHCAQiCAcMBCIMBxQEIhAHHAQ6FAcgBP4YBygEIhwHMAQ6IAc0BQIkBzgEIigHPAQiLAdABDowB0wFBjQHUAUeOAdUBBI8B1gEEkAHXAQSRAdgBBJIB2QEEkwHbAQSUAd0BDpUB3gFIlgHgAQSXAeIBDpgB4wFJmQHkAQSaAeUBBJsB5gEOnAHpAUqdAeoBTp4B6wEFnwHsAQWgAe0BBaEB7gEFogHvAQWjAfEBBaQB8wEOpQH0AU-mAfYBBacB-AEOqAH5AVCpAfoBBaoB-wEFqwH8AQ6sAf8BUa0BgAJXrgGBAgavAYICBrABgwIGsQGEAgayAYUCBrMBhwIGtAGJAg61AYoCWLYBjAIGtwGOAg64AY8CWbkBkAIGugGRAga7AZICDrwBlQJavQGWAmA" + strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"accounts\",\"organizer\",\"trip\",\"participant\",\"booking\",\"payment\",\"reviewedBy\",\"refunds\",\"_count\",\"payments\",\"participants\",\"images\",\"reviews\",\"bookings\",\"trips\",\"participations\",\"tripReviews\",\"organizerVerification\",\"reviewedVerifications\",\"reviewedRefunds\",\"profile\",\"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\",\"UserProfile.findUnique\",\"UserProfile.findUniqueOrThrow\",\"UserProfile.findFirst\",\"UserProfile.findFirstOrThrow\",\"UserProfile.findMany\",\"UserProfile.createOne\",\"UserProfile.createMany\",\"UserProfile.createManyAndReturn\",\"UserProfile.updateOne\",\"UserProfile.updateMany\",\"UserProfile.updateManyAndReturn\",\"UserProfile.upsertOne\",\"UserProfile.deleteOne\",\"UserProfile.deleteMany\",\"UserProfile.groupBy\",\"UserProfile.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\",\"OrganizerVerification.findUnique\",\"OrganizerVerification.findUniqueOrThrow\",\"OrganizerVerification.findFirst\",\"OrganizerVerification.findFirstOrThrow\",\"OrganizerVerification.findMany\",\"OrganizerVerification.createOne\",\"OrganizerVerification.createMany\",\"OrganizerVerification.createManyAndReturn\",\"OrganizerVerification.updateOne\",\"OrganizerVerification.updateMany\",\"OrganizerVerification.updateManyAndReturn\",\"OrganizerVerification.upsertOne\",\"OrganizerVerification.deleteOne\",\"OrganizerVerification.deleteMany\",\"OrganizerVerification.groupBy\",\"OrganizerVerification.aggregate\",\"Trip.findUnique\",\"Trip.findUniqueOrThrow\",\"Trip.findFirst\",\"Trip.findFirstOrThrow\",\"Trip.findMany\",\"Trip.createOne\",\"Trip.createMany\",\"Trip.createManyAndReturn\",\"Trip.updateOne\",\"Trip.updateMany\",\"Trip.updateManyAndReturn\",\"Trip.upsertOne\",\"Trip.deleteOne\",\"Trip.deleteMany\",\"Trip.groupBy\",\"Trip.aggregate\",\"TripReview.findUnique\",\"TripReview.findUniqueOrThrow\",\"TripReview.findFirst\",\"TripReview.findFirstOrThrow\",\"TripReview.findMany\",\"TripReview.createOne\",\"TripReview.createMany\",\"TripReview.createManyAndReturn\",\"TripReview.updateOne\",\"TripReview.updateMany\",\"TripReview.updateManyAndReturn\",\"TripReview.upsertOne\",\"TripReview.deleteOne\",\"TripReview.deleteMany\",\"TripReview.groupBy\",\"TripReview.aggregate\",\"TripImage.findUnique\",\"TripImage.findUniqueOrThrow\",\"TripImage.findFirst\",\"TripImage.findFirstOrThrow\",\"TripImage.findMany\",\"TripImage.createOne\",\"TripImage.createMany\",\"TripImage.createManyAndReturn\",\"TripImage.updateOne\",\"TripImage.updateMany\",\"TripImage.updateManyAndReturn\",\"TripImage.upsertOne\",\"TripImage.deleteOne\",\"TripImage.deleteMany\",\"TripImage.groupBy\",\"TripImage.aggregate\",\"TripParticipant.findUnique\",\"TripParticipant.findUniqueOrThrow\",\"TripParticipant.findFirst\",\"TripParticipant.findFirstOrThrow\",\"TripParticipant.findMany\",\"TripParticipant.createOne\",\"TripParticipant.createMany\",\"TripParticipant.createManyAndReturn\",\"TripParticipant.updateOne\",\"TripParticipant.updateMany\",\"TripParticipant.updateManyAndReturn\",\"TripParticipant.upsertOne\",\"TripParticipant.deleteOne\",\"TripParticipant.deleteMany\",\"TripParticipant.groupBy\",\"TripParticipant.aggregate\",\"Booking.findUnique\",\"Booking.findUniqueOrThrow\",\"Booking.findFirst\",\"Booking.findFirstOrThrow\",\"Booking.findMany\",\"Booking.createOne\",\"Booking.createMany\",\"Booking.createManyAndReturn\",\"Booking.updateOne\",\"Booking.updateMany\",\"Booking.updateManyAndReturn\",\"Booking.upsertOne\",\"Booking.deleteOne\",\"Booking.deleteMany\",\"Booking.groupBy\",\"Booking.aggregate\",\"Payment.findUnique\",\"Payment.findUniqueOrThrow\",\"Payment.findFirst\",\"Payment.findFirstOrThrow\",\"Payment.findMany\",\"Payment.createOne\",\"Payment.createMany\",\"Payment.createManyAndReturn\",\"Payment.updateOne\",\"Payment.updateMany\",\"Payment.updateManyAndReturn\",\"Payment.upsertOne\",\"Payment.deleteOne\",\"Payment.deleteMany\",\"Payment.groupBy\",\"Payment.aggregate\",\"Refund.findUnique\",\"Refund.findUniqueOrThrow\",\"Refund.findFirst\",\"Refund.findFirstOrThrow\",\"Refund.findMany\",\"Refund.createOne\",\"Refund.createMany\",\"Refund.createManyAndReturn\",\"Refund.updateOne\",\"Refund.updateMany\",\"Refund.updateManyAndReturn\",\"Refund.upsertOne\",\"Refund.deleteOne\",\"Refund.deleteMany\",\"Refund.groupBy\",\"Refund.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"bookingId\",\"paymentId\",\"amount\",\"currency\",\"RefundReason\",\"reason\",\"RefundReporter\",\"reportedBy\",\"reportNote\",\"RefundInitiator\",\"initiatedBy\",\"RefundStatus\",\"status\",\"idempotencyKey\",\"adminNote\",\"reviewedById\",\"reviewedAt\",\"succeededAt\",\"failedAt\",\"externalRefundId\",\"createdAt\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"PaymentProvider\",\"provider\",\"externalOrderId\",\"externalTxId\",\"method\",\"PaymentStatus\",\"rawCallback\",\"snapToken\",\"expiresAt\",\"paidAt\",\"rejectionReason\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"tripId\",\"userId\",\"participantId\",\"BookingStatus\",\"ParticipantStatus\",\"markedPaidAt\",\"paymentConfirmedAt\",\"url\",\"caption\",\"order\",\"rating\",\"comment\",\"title\",\"description\",\"ActivityCategory\",\"category\",\"destination\",\"location\",\"meetingPoint\",\"itinerary\",\"whatsIncluded\",\"whatsExcluded\",\"date\",\"endDate\",\"maxParticipants\",\"price\",\"Vibe\",\"vibe\",\"TripStatus\",\"organizerId\",\"fullName\",\"nikEncrypted\",\"nikHash\",\"birthDate\",\"address\",\"ktpImageKey\",\"livenessKey\",\"bankName\",\"bankAccountNumber\",\"bankAccountName\",\"VerificationStatus\",\"verifiedAt\",\"type\",\"providerAccountId\",\"refresh_token\",\"access_token\",\"expires_at\",\"token_type\",\"scope\",\"id_token\",\"session_state\",\"bio\",\"city\",\"interests\",\"instagram\",\"has\",\"hasEvery\",\"hasSome\",\"name\",\"email\",\"password\",\"image\",\"emailVerified\",\"acceptedTermsAndPrivacy\",\"acceptedAt\",\"tripId_userId\",\"every\",\"some\",\"none\",\"provider_providerAccountId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"push\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), + graph: "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_wBIucBQACNAwAh6QFAAIQDACHqAUAAhAMAIfcBAACsA_cBIvgBAQCKAwAh-QEBAIIDACH6AQEAggMAIfwBAACuAwAg_QEBAIIDACH-AUAAjQMAIf8BQACNAwAhgAIBAIIDACEKCAAA-AUAIAsAAPMFACDnAQAAugMAIPkBAAC6AwAg-gEAALoDACD8AQAAugMAIP0BAAC6AwAg_gEAALoDACD_AQAAugMAIIACAAC6AwAgFQgAAKkDACALAACWAwAg0QEAAKsDADDSAQAAEQAQ0wEAAKsDADDUAQEAAAAB1QEBAIoDACHXAQIAkQMAIeEBAACtA_wBIucBQACNAwAh6QFAAIQDACHqAUAAhAMAIfcBAACsA_cBIvgBAQAAAAH5AQEAggMAIfoBAQCCAwAh_AEAAK4DACD9AQEAggMAIf4BQACNAwAh_wFAAI0DACGAAgEAggMAIQMAAAARACABAAASADACAAATACAZCAAAqQMAIAkAAKoDACAKAACOAwAg0QEAAKQDADDSAQAAFQAQ0wEAAKQDADDUAQEAigMAIdUBAQCKAwAh1gEBAIIDACHXAQIAkQMAIdgBAQCKAwAh2gEAAKUD2gEi3AEAAKYD3AEi3QEBAIoDACHfAQAApwPfASLhAQAAqAPhASLiAQEAigMAIeMBAQCCAwAh5AEBAIIDACHlAUAAjQMAIeYBQACNAwAh5wFAAI0DACHoAQEAggMAIekBQACEAwAh6gFAAIQDACEKCAAA-AUAIAkAAPkFACAKAACDBQAg1gEAALoDACDjAQAAugMAIOQBAAC6AwAg5QEAALoDACDmAQAAugMAIOcBAAC6AwAg6AEAALoDACAZCAAAqQMAIAkAAKoDACAKAACOAwAg0QEAAKQDADDSAQAAFQAQ0wEAAKQDADDUAQEAAAAB1QEBAIoDACHWAQEAggMAIdcBAgCRAwAh2AEBAIoDACHaAQAApQPaASLcAQAApgPcASLdAQEAigMAId8BAACnA98BIuEBAACoA-EBIuIBAQAAAAHjAQEAggMAIeQBAQCCAwAh5QFAAI0DACHmAUAAjQMAIecBQACNAwAh6AEBAIIDACHpAUAAhAMAIeoBQACEAwAhAwAAABUAIAEAABYAMAIAABcAIAEAAAARACAWBAAAnAMAIBEAAKADACASAACdAwAgEwAAngMAIBQAAJ8DACAVAAChAwAgFgAAogMAIBcAAJYDACAYAACjAwAg0QEAAJoDADDSAQAAGgAQ0wEAAJoDADDUAQEAigMAIekBQACEAwAh6gFAAIQDACHBAgEAigMAIcICAQCKAwAhwwIBAIIDACHEAgEAggMAIcUCQACNAwAhxgIgAJsDACHHAkAAjQMAIQEAAAAaACABAAAAFQAgAwAAABUAIAEAABYAMAIAABcAIAEAAAARACABAAAAFQAgCQYAAJMDACDRAQAAmQMAMNIBAAAgABDTAQAAmQMAMNQBAQCKAwAhhwIBAIoDACGOAgEAigMAIY8CAQCCAwAhkAICAJEDACECBgAA9QUAII8CAAC6AwAgCQYAAJMDACDRAQAAmQMAMNIBAAAgABDTAQAAmQMAMNQBAQAAAAGHAgEAigMAIY4CAQCKAwAhjwIBAIIDACGQAgIAkQMAIQMAAAAgACABAAAhADACAAAiACAMAwAAhQMAIAYAAJMDACDRAQAAmAMAMNIBAAAkABDTAQAAmAMAMNQBAQCKAwAh6QFAAIQDACHqAUAAhAMAIYcCAQCKAwAhiAIBAIoDACGRAgIAkQMAIZICAQCCAwAhAwMAAIMFACAGAAD1BQAgkgIAALoDACANAwAAhQMAIAYAAJMDACDRAQAAmAMAMNIBAAAkABDTAQAAmAMAMNQBAQAAAAHpAUAAhAMAIeoBQACEAwAhhwIBAIoDACGIAgEAigMAIZECAgCRAwAhkgIBAIIDACHIAgAAlwMAIAMAAAAkACABAAAlADACAAAmACAFAwAAgwUAIAYAAPUFACAHAAD2BQAgCwAA8wUAIA0AAPcFACASAwAAhQMAIAYAAJMDACAHAACUAwAgCwAAlgMAIA0AAJUDACDRAQAAkAMAMNIBAAAPABDTAQAAkAMAMNQBAQAAAAHXAQIAkQMAIdgBAQCKAwAh4QEAAJIDiwIi6QFAAIQDACHqAUAAhAMAIYcCAQCKAwAhiAIBAIoDACGJAgEAAAAByAIAAI8DACADAAAADwAgAQAAKAAwAgAAKQAgAQAAAAsAIAEAAAAgACABAAAAJAAgAQAAAA8AIAMAAAALACABAAAMADACAAANACADAAAAJAAgAQAAJQAwAgAAJgAgAwAAAA8AIAEAACgAMAIAACkAIBgDAACFAwAgCgAAjgMAINEBAACLAwAw0gEAADIAENMBAACLAwAw1AEBAIoDACHhAQAAjAOwAiLkAQEAggMAIeUBQACNAwAh6QFAAIQDACHqAUAAhAMAIYACAQCCAwAhiAIBAIoDACGlAgEAigMAIaYCAQCKAwAhpwIBAIoDACGoAkAAhAMAIakCAQCKAwAhqgIBAIoDACGrAgEAigMAIawCAQCKAwAhrQIBAIoDACGuAgEAigMAIbACQACNAwAhAQAAADIAIAEAAAAaACAGAwAAgwUAIAoAAIMFACDkAQAAugMAIOUBAAC6AwAggAIAALoDACCwAgAAugMAIBgDAACFAwAgCgAAjgMAINEBAACLAwAw0gEAADIAENMBAACLAwAw1AEBAAAAAeEBAACMA7ACIuQBAQCCAwAh5QFAAI0DACHpAUAAhAMAIeoBQACEAwAhgAIBAIIDACGIAgEAAAABpQIBAIoDACGmAgEAigMAIacCAQAAAAGoAkAAhAMAIakCAQCKAwAhqgIBAIoDACGrAgEAigMAIawCAQCKAwAhrQIBAIoDACGuAgEAigMAIbACQACNAwAhAwAAADIAIAEAADUAMAIAADYAIAMAAAAVACABAAAWADACAAAXACANAwAAhQMAINEBAACBAwAw0gEAADkAENMBAACBAwAw1AEBAIoDACHpAUAAhAMAIeoBQACEAwAhiAIBAIoDACGiAgAAgwOiAiO6AgEAggMAIbsCAQCCAwAhvAIAAIADACC9AgEAggMAIQEAAAA5ACABAAAAAwAgAQAAAAcAIAEAAAALACABAAAAJAAgAQAAAA8AIAEAAAAyACABAAAAFQAgAQAAAAEAIA0EAADsBQAgEQAA8AUAIBIAAO0FACATAADuBQAgFAAA7wUAIBUAAPEFACAWAADyBQAgFwAA8wUAIBgAAPQFACDDAgAAugMAIMQCAAC6AwAgxQIAALoDACDHAgAAugMAIAMAAAAaACABAABDADACAAABACADAAAAGgAgAQAAQwAwAgAAAQAgAwAAABoAIAEAAEMAMAIAAAEAIBMEAADjBQAgEQAA5wUAIBIAAOQFACATAADlBQAgFAAA5gUAIBUAAOgFACAWAADpBQAgFwAA6gUAIBgAAOsFACDUAQEAAAAB6QFAAAAAAeoBQAAAAAHBAgEAAAABwgIBAAAAAcMCAQAAAAHEAgEAAAABxQJAAAAAAcYCIAAAAAHHAkAAAAABAR4AAEcAIArUAQEAAAAB6QFAAAAAAeoBQAAAAAHBAgEAAAABwgIBAAAAAcMCAQAAAAHEAgEAAAABxQJAAAAAAcYCIAAAAAHHAkAAAAABAR4AAEkAMAEeAABJADATBAAAiAUAIBEAAIwFACASAACJBQAgEwAAigUAIBQAAIsFACAVAACNBQAgFgAAjgUAIBcAAI8FACAYAACQBQAg1AEBAMADACHpAUAAyAMAIeoBQADIAwAhwQIBAMADACHCAgEAwAMAIcMCAQDGAwAhxAIBAMYDACHFAkAAxwMAIcYCIACHBQAhxwJAAMcDACECAAAAAQAgHgAATAAgCtQBAQDAAwAh6QFAAMgDACHqAUAAyAMAIcECAQDAAwAhwgIBAMADACHDAgEAxgMAIcQCAQDGAwAhxQJAAMcDACHGAiAAhwUAIccCQADHAwAhAgAAABoAIB4AAE4AIAIAAAAaACAeAABOACADAAAAAQAgJQAARwAgJgAATAAgAQAAAAEAIAEAAAAaACAHDAAAhAUAICsAAIYFACAsAACFBQAgwwIAALoDACDEAgAAugMAIMUCAAC6AwAgxwIAALoDACAN0QEAAIYDADDSAQAAVQAQ0wEAAIYDADDUAQEAvQIAIekBQADFAgAh6gFAAMUCACHBAgEAvQIAIcICAQC9AgAhwwIBAL4CACHEAgEAvgIAIcUCQADEAgAhxgIgAIcDACHHAkAAxAIAIQMAAAAaACABAABUADAqAABVACADAAAAGgAgAQAAQwAwAgAAAQAgDQMAAIUDACDRAQAAgQMAMNIBAAA5ABDTAQAAgQMAMNQBAQAAAAHpAUAAhAMAIeoBQACEAwAhiAIBAAAAAaICAACDA6ICI7oCAQCCAwAhuwIBAIIDACG8AgAAgAMAIL0CAQCCAwAhAQAAAFgAIAEAAABYACAFAwAAgwUAIKICAAC6AwAgugIAALoDACC7AgAAugMAIL0CAAC6AwAgAwAAADkAIAEAAFsAMAIAAFgAIAMAAAA5ACABAABbADACAABYACADAAAAOQAgAQAAWwAwAgAAWAAgCgMAAIIFACDUAQEAAAAB6QFAAAAAAeoBQAAAAAGIAgEAAAABogIAAACiAgO6AgEAAAABuwIBAAAAAbwCAACBBQAgvQIBAAAAAQEeAABfACAJ1AEBAAAAAekBQAAAAAHqAUAAAAABiAIBAAAAAaICAAAAogIDugIBAAAAAbsCAQAAAAG8AgAAgQUAIL0CAQAAAAEBHgAAYQAwAR4AAGEAMAoDAACABQAg1AEBAMADACHpAUAAyAMAIeoBQADIAwAhiAIBAMADACGiAgAAsASiAiO6AgEAxgMAIbsCAQDGAwAhvAIAAP8EACC9AgEAxgMAIQIAAABYACAeAABkACAJ1AEBAMADACHpAUAAyAMAIeoBQADIAwAhiAIBAMADACGiAgAAsASiAiO6AgEAxgMAIbsCAQDGAwAhvAIAAP8EACC9AgEAxgMAIQIAAAA5ACAeAABmACACAAAAOQAgHgAAZgAgAwAAAFgAICUAAF8AICYAAGQAIAEAAABYACABAAAAOQAgBwwAAPwEACArAAD-BAAgLAAA_QQAIKICAAC6AwAgugIAALoDACC7AgAAugMAIL0CAAC6AwAgDNEBAAD_AgAw0gEAAG0AENMBAAD_AgAw1AEBAL0CACHpAUAAxQIAIeoBQADFAgAhiAIBAL0CACGiAgAA7wKiAiO6AgEAvgIAIbsCAQC-AgAhvAIAAIADACC9AgEAvgIAIQMAAAA5ACABAABsADAqAABtACADAAAAOQAgAQAAWwAwAgAAWAAgAQAAAAUAIAEAAAAFACADAAAAAwAgAQAABAAwAgAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACANAwAA-wQAINQBAQAAAAH3AQEAAAABiAIBAAAAAbECAQAAAAGyAgEAAAABswIBAAAAAbQCAQAAAAG1AgIAAAABtgIBAAAAAbcCAQAAAAG4AgEAAAABuQIBAAAAAQEeAAB1ACAM1AEBAAAAAfcBAQAAAAGIAgEAAAABsQIBAAAAAbICAQAAAAGzAgEAAAABtAIBAAAAAbUCAgAAAAG2AgEAAAABtwIBAAAAAbgCAQAAAAG5AgEAAAABAR4AAHcAMAEeAAB3ADANAwAA-gQAINQBAQDAAwAh9wEBAMADACGIAgEAwAMAIbECAQDAAwAhsgIBAMADACGzAgEAxgMAIbQCAQDGAwAhtQICAPkEACG2AgEAxgMAIbcCAQDGAwAhuAIBAMYDACG5AgEAxgMAIQIAAAAFACAeAAB6ACAM1AEBAMADACH3AQEAwAMAIYgCAQDAAwAhsQIBAMADACGyAgEAwAMAIbMCAQDGAwAhtAIBAMYDACG1AgIA-QQAIbYCAQDGAwAhtwIBAMYDACG4AgEAxgMAIbkCAQDGAwAhAgAAAAMAIB4AAHwAIAIAAAADACAeAAB8ACADAAAABQAgJQAAdQAgJgAAegAgAQAAAAUAIAEAAAADACAMDAAA9AQAICsAAPcEACAsAAD2BAAgTQAA9QQAIE4AAPgEACCzAgAAugMAILQCAAC6AwAgtQIAALoDACC2AgAAugMAILcCAAC6AwAguAIAALoDACC5AgAAugMAIA_RAQAA-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-AgAhmgIBAL4CACGbAgEAvgIAIZwCAQC-AgAhnQJAAMUCACGeAkAAxAIAIZ8CAgC_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_AgAh2AEBAL0CACHhAQAA5AKLAiLpAUAAxQIAIeoBQADFAgAhhwIBAL0CACGIAgEAvQIAIYkCAQC9AgAhAwAAAA8AIAEAAIgCADAqAACJAgAgAwAAAA8AIAEAACgAMAIAACkAIAEAAAATACABAAAAEwAgAwAAABEAIAEAABIAMAIAABMAIAMAAAARACABAAASADACAAATACADAAAAEQAgAQAAEgAwAgAAEwAgEggAAOQDACALAADlAwAg1AEBAAAAAdUBAQAAAAHXAQIAAAAB4QEAAAD8AQLnAUAAAAAB6QFAAAAAAeoBQAAAAAH3AQAAAPcBAvgBAQAAAAH5AQEAAAAB-gEBAAAAAfwBgAAAAAH9AQEAAAAB_gFAAAAAAf8BQAAAAAGAAgEAAAABAR4AAJECACAQ1AEBAAAAAdUBAQAAAAHXAQIAAAAB4QEAAAD8AQLnAUAAAAAB6QFAAAAAAeoBQAAAAAH3AQAAAPcBAvgBAQAAAAH5AQEAAAAB-gEBAAAAAfwBgAAAAAH9AQEAAAAB_gFAAAAAAf8BQAAAAAGAAgEAAAABAR4AAJMCADABHgAAkwIAMBIIAADWAwAgCwAA1wMAINQBAQDAAwAh1QEBAMADACHXAQIAwQMAIeEBAADVA_wBIucBQADHAwAh6QFAAMgDACHqAUAAyAMAIfcBAADUA_cBIvgBAQDAAwAh-QEBAMYDACH6AQEAxgMAIfwBgAAAAAH9AQEAxgMAIf4BQADHAwAh_wFAAMcDACGAAgEAxgMAIQIAAAATACAeAACWAgAgENQBAQDAAwAh1QEBAMADACHXAQIAwQMAIeEBAADVA_wBIucBQADHAwAh6QFAAMgDACHqAUAAyAMAIfcBAADUA_cBIvgBAQDAAwAh-QEBAMYDACH6AQEAxgMAIfwBgAAAAAH9AQEAxgMAIf4BQADHAwAh_wFAAMcDACGAAgEAxgMAIQIAAAARACAeAACYAgAgAgAAABEAIB4AAJgCACADAAAAEwAgJQAAkQIAICYAAJYCACABAAAAEwAgAQAAABEAIA0MAADPAwAgKwAA0gMAICwAANEDACBNAADQAwAgTgAA0wMAIOcBAAC6AwAg-QEAALoDACD6AQAAugMAIPwBAAC6AwAg_QEAALoDACD-AQAAugMAIP8BAAC6AwAggAIAALoDACAT0QEAANoCADDSAQAAnwIAENMBAADaAgAw1AEBAL0CACHVAQEAvQIAIdcBAgC_AgAh4QEAANwC_AEi5wFAAMQCACHpAUAAxQIAIeoBQADFAgAh9wEAANsC9wEi-AEBAL0CACH5AQEAvgIAIfoBAQC-AgAh_AEAAN0CACD9AQEAvgIAIf4BQADEAgAh_wFAAMQCACGAAgEAvgIAIQMAAAARACABAACeAgAwKgAAnwIAIAMAAAARACABAAASADACAAATACABAAAAFwAgAQAAABcAIAMAAAAVACABAAAWADACAAAXACADAAAAFQAgAQAAFgAwAgAAFwAgAwAAABUAIAEAABYAMAIAABcAIBYIAADMAwAgCQAAzQMAIAoAAM4DACDUAQEAAAAB1QEBAAAAAdYBAQAAAAHXAQIAAAAB2AEBAAAAAdoBAAAA2gEC3AEAAADcAQLdAQEAAAAB3wEAAADfAQLhAQAAAOEBAuIBAQAAAAHjAQEAAAAB5AEBAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBAQAAAAHpAUAAAAAB6gFAAAAAAQEeAACnAgAgE9QBAQAAAAHVAQEAAAAB1gEBAAAAAdcBAgAAAAHYAQEAAAAB2gEAAADaAQLcAQAAANwBAt0BAQAAAAHfAQAAAN8BAuEBAAAA4QEC4gEBAAAAAeMBAQAAAAHkAQEAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AEBAAAAAekBQAAAAAHqAUAAAAABAR4AAKkCADABHgAAqQIAMAEAAAARACABAAAAGgAgFggAAMkDACAJAADKAwAgCgAAywMAINQBAQDAAwAh1QEBAMADACHWAQEAxgMAIdcBAgDBAwAh2AEBAMADACHaAQAAwgPaASLcAQAAwwPcASLdAQEAwAMAId8BAADEA98BIuEBAADFA-EBIuIBAQDAAwAh4wEBAMYDACHkAQEAxgMAIeUBQADHAwAh5gFAAMcDACHnAUAAxwMAIegBAQDGAwAh6QFAAMgDACHqAUAAyAMAIQIAAAAXACAeAACuAgAgE9QBAQDAAwAh1QEBAMADACHWAQEAxgMAIdcBAgDBAwAh2AEBAMADACHaAQAAwgPaASLcAQAAwwPcASLdAQEAwAMAId8BAADEA98BIuEBAADFA-EBIuIBAQDAAwAh4wEBAMYDACHkAQEAxgMAIeUBQADHAwAh5gFAAMcDACHnAUAAxwMAIegBAQDGAwAh6QFAAMgDACHqAUAAyAMAIQIAAAAVACAeAACwAgAgAgAAABUAIB4AALACACABAAAAEQAgAQAAABoAIAMAAAAXACAlAACnAgAgJgAArgIAIAEAAAAXACABAAAAFQAgDAwAALsDACArAAC-AwAgLAAAvQMAIE0AALwDACBOAAC_AwAg1gEAALoDACDjAQAAugMAIOQBAAC6AwAg5QEAALoDACDmAQAAugMAIOcBAAC6AwAg6AEAALoDACAW0QEAALwCADDSAQAAuQIAENMBAAC8AgAw1AEBAL0CACHVAQEAvQIAIdYBAQC-AgAh1wECAL8CACHYAQEAvQIAIdoBAADAAtoBItwBAADBAtwBIt0BAQC9AgAh3wEAAMIC3wEi4QEAAMMC4QEi4gEBAL0CACHjAQEAvgIAIeQBAQC-AgAh5QFAAMQCACHmAUAAxAIAIecBQADEAgAh6AEBAL4CACHpAUAAxQIAIeoBQADFAgAhAwAAABUAIAEAALgCADAqAAC5AgAgAwAAABUAIAEAABYAMAIAABcAIBbRAQAAvAIAMNIBAAC5AgAQ0wEAALwCADDUAQEAvQIAIdUBAQC9AgAh1gEBAL4CACHXAQIAvwIAIdgBAQC9AgAh2gEAAMAC2gEi3AEAAMEC3AEi3QEBAL0CACHfAQAAwgLfASLhAQAAwwLhASLiAQEAvQIAIeMBAQC-AgAh5AEBAL4CACHlAUAAxAIAIeYBQADEAgAh5wFAAMQCACHoAQEAvgIAIekBQADFAgAh6gFAAMUCACEODAAAxwIAICsAANkCACAsAADZAgAg6wEBAAAAAewBAQAAAATtAQEAAAAE7gEBAAAAAe8BAQAAAAHwAQEAAAAB8QEBAAAAAfIBAQDYAgAh8wEBAAAAAfQBAQAAAAH1AQEAAAABDgwAAMoCACArAADXAgAgLAAA1wIAIOsBAQAAAAHsAQEAAAAF7QEBAAAABe4BAQAAAAHvAQEAAAAB8AEBAAAAAfEBAQAAAAHyAQEA1gIAIfMBAQAAAAH0AQEAAAAB9QEBAAAAAQ0MAADHAgAgKwAAxwIAICwAAMcCACBNAADVAgAgTgAAxwIAIOsBAgAAAAHsAQIAAAAE7QECAAAABO4BAgAAAAHvAQIAAAAB8AECAAAAAfEBAgAAAAHyAQIA1AIAIQcMAADHAgAgKwAA0wIAICwAANMCACDrAQAAANoBAuwBAAAA2gEI7QEAAADaAQjyAQAA0gLaASIHDAAAxwIAICsAANECACAsAADRAgAg6wEAAADcAQLsAQAAANwBCO0BAAAA3AEI8gEAANAC3AEiBwwAAMcCACArAADPAgAgLAAAzwIAIOsBAAAA3wEC7AEAAADfAQjtAQAAAN8BCPIBAADOAt8BIgcMAADHAgAgKwAAzQIAICwAAM0CACDrAQAAAOEBAuwBAAAA4QEI7QEAAADhAQjyAQAAzALhASILDAAAygIAICsAAMsCACAsAADLAgAg6wFAAAAAAewBQAAAAAXtAUAAAAAF7gFAAAAAAe8BQAAAAAHwAUAAAAAB8QFAAAAAAfIBQADJAgAhCwwAAMcCACArAADIAgAgLAAAyAIAIOsBQAAAAAHsAUAAAAAE7QFAAAAABO4BQAAAAAHvAUAAAAAB8AFAAAAAAfEBQAAAAAHyAUAAxgIAIQsMAADHAgAgKwAAyAIAICwAAMgCACDrAUAAAAAB7AFAAAAABO0BQAAAAATuAUAAAAAB7wFAAAAAAfABQAAAAAHxAUAAAAAB8gFAAMYCACEI6wECAAAAAewBAgAAAATtAQIAAAAE7gECAAAAAe8BAgAAAAHwAQIAAAAB8QECAAAAAfIBAgDHAgAhCOsBQAAAAAHsAUAAAAAE7QFAAAAABO4BQAAAAAHvAUAAAAAB8AFAAAAAAfEBQAAAAAHyAUAAyAIAIQsMAADKAgAgKwAAywIAICwAAMsCACDrAUAAAAAB7AFAAAAABe0BQAAAAAXuAUAAAAAB7wFAAAAAAfABQAAAAAHxAUAAAAAB8gFAAMkCACEI6wECAAAAAewBAgAAAAXtAQIAAAAF7gECAAAAAe8BAgAAAAHwAQIAAAAB8QECAAAAAfIBAgDKAgAhCOsBQAAAAAHsAUAAAAAF7QFAAAAABe4BQAAAAAHvAUAAAAAB8AFAAAAAAfEBQAAAAAHyAUAAywIAIQcMAADHAgAgKwAAzQIAICwAAM0CACDrAQAAAOEBAuwBAAAA4QEI7QEAAADhAQjyAQAAzALhASIE6wEAAADhAQLsAQAAAOEBCO0BAAAA4QEI8gEAAM0C4QEiBwwAAMcCACArAADPAgAgLAAAzwIAIOsBAAAA3wEC7AEAAADfAQjtAQAAAN8BCPIBAADOAt8BIgTrAQAAAN8BAuwBAAAA3wEI7QEAAADfAQjyAQAAzwLfASIHDAAAxwIAICsAANECACAsAADRAgAg6wEAAADcAQLsAQAAANwBCO0BAAAA3AEI8gEAANAC3AEiBOsBAAAA3AEC7AEAAADcAQjtAQAAANwBCPIBAADRAtwBIgcMAADHAgAgKwAA0wIAICwAANMCACDrAQAAANoBAuwBAAAA2gEI7QEAAADaAQjyAQAA0gLaASIE6wEAAADaAQLsAQAAANoBCO0BAAAA2gEI8gEAANMC2gEiDQwAAMcCACArAADHAgAgLAAAxwIAIE0AANUCACBOAADHAgAg6wECAAAAAewBAgAAAATtAQIAAAAE7gECAAAAAe8BAgAAAAHwAQIAAAAB8QECAAAAAfIBAgDUAgAhCOsBCAAAAAHsAQgAAAAE7QEIAAAABO4BCAAAAAHvAQgAAAAB8AEIAAAAAfEBCAAAAAHyAQgA1QIAIQ4MAADKAgAgKwAA1wIAICwAANcCACDrAQEAAAAB7AEBAAAABe0BAQAAAAXuAQEAAAAB7wEBAAAAAfABAQAAAAHxAQEAAAAB8gEBANYCACHzAQEAAAAB9AEBAAAAAfUBAQAAAAEL6wEBAAAAAewBAQAAAAXtAQEAAAAF7gEBAAAAAe8BAQAAAAHwAQEAAAAB8QEBAAAAAfIBAQDXAgAh8wEBAAAAAfQBAQAAAAH1AQEAAAABDgwAAMcCACArAADZAgAgLAAA2QIAIOsBAQAAAAHsAQEAAAAE7QEBAAAABO4BAQAAAAHvAQEAAAAB8AEBAAAAAfEBAQAAAAHyAQEA2AIAIfMBAQAAAAH0AQEAAAAB9QEBAAAAAQvrAQEAAAAB7AEBAAAABO0BAQAAAATuAQEAAAAB7wEBAAAAAfABAQAAAAHxAQEAAAAB8gEBANkCACHzAQEAAAAB9AEBAAAAAfUBAQAAAAET0QEAANoCADDSAQAAnwIAENMBAADaAgAw1AEBAL0CACHVAQEAvQIAIdcBAgC_AgAh4QEAANwC_AEi5wFAAMQCACHpAUAAxQIAIeoBQADFAgAh9wEAANsC9wEi-AEBAL0CACH5AQEAvgIAIfoBAQC-AgAh_AEAAN0CACD9AQEAvgIAIf4BQADEAgAh_wFAAMQCACGAAgEAvgIAIQcMAADHAgAgKwAA4gIAICwAAOICACDrAQAAAPcBAuwBAAAA9wEI7QEAAAD3AQjyAQAA4QL3ASIHDAAAxwIAICsAAOACACAsAADgAgAg6wEAAAD8AQLsAQAAAPwBCO0BAAAA_AEI8gEAAN8C_AEiDwwAAMoCACArAADeAgAgLAAA3gIAIOsBgAAAAAHuAYAAAAAB7wGAAAAAAfABgAAAAAHxAYAAAAAB8gGAAAAAAYECAQAAAAGCAgEAAAABgwIBAAAAAYQCgAAAAAGFAoAAAAABhgKAAAAAAQzrAYAAAAAB7gGAAAAAAe8BgAAAAAHwAYAAAAAB8QGAAAAAAfIBgAAAAAGBAgEAAAABggIBAAAAAYMCAQAAAAGEAoAAAAABhQKAAAAAAYYCgAAAAAEHDAAAxwIAICsAAOACACAsAADgAgAg6wEAAAD8AQLsAQAAAPwBCO0BAAAA_AEI8gEAAN8C_AEiBOsBAAAA_AEC7AEAAAD8AQjtAQAAAPwBCPIBAADgAvwBIgcMAADHAgAgKwAA4gIAICwAAOICACDrAQAAAPcBAuwBAAAA9wEI7QEAAAD3AQjyAQAA4QL3ASIE6wEAAAD3AQLsAQAAAPcBCO0BAAAA9wEI8gEAAOIC9wEiDNEBAADjAgAw0gEAAIkCABDTAQAA4wIAMNQBAQC9AgAh1wECAL8CACHYAQEAvQIAIeEBAADkAosCIukBQADFAgAh6gFAAMUCACGHAgEAvQIAIYgCAQC9AgAhiQIBAL0CACEHDAAAxwIAICsAAOYCACAsAADmAgAg6wEAAACLAgLsAQAAAIsCCO0BAAAAiwII8gEAAOUCiwIiBwwAAMcCACArAADmAgAgLAAA5gIAIOsBAAAAiwIC7AEAAACLAgjtAQAAAIsCCPIBAADlAosCIgTrAQAAAIsCAuwBAAAAiwII7QEAAACLAgjyAQAA5gKLAiIK0QEAAOcCADDSAQAA8wEAENMBAADnAgAw1AEBAL0CACHhAQAA6AKMAiLpAUAAxQIAIYcCAQC9AgAhiAIBAL0CACGMAkAAxAIAIY0CQADEAgAhBwwAAMcCACArAADqAgAgLAAA6gIAIOsBAAAAjAIC7AEAAACMAgjtAQAAAIwCCPIBAADpAowCIgcMAADHAgAgKwAA6gIAICwAAOoCACDrAQAAAIwCAuwBAAAAjAII7QEAAACMAgjyAQAA6QKMAiIE6wEAAACMAgLsAQAAAIwCCO0BAAAAjAII8gEAAOoCjAIiCNEBAADrAgAw0gEAAN0BABDTAQAA6wIAMNQBAQC9AgAhhwIBAL0CACGOAgEAvQIAIY8CAQC-AgAhkAICAL8CACEK0QEAAOwCADDSAQAAxwEAENMBAADsAgAw1AEBAL0CACHpAUAAxQIAIeoBQADFAgAhhwIBAL0CACGIAgEAvQIAIZECAgC_AgAhkgIBAL4CACEW0QEAAO0CADDSAQAAsQEAENMBAADtAgAw1AEBAL0CACHhAQAA8AKkAiLpAUAAxQIAIeoBQADFAgAhkwIBAL0CACGUAgEAvgIAIZYCAADuApYCIpcCAQC9AgAhmAIBAL0CACGZAgEAvgIAIZoCAQC-AgAhmwIBAL4CACGcAgEAvgIAIZ0CQADFAgAhngJAAMQCACGfAgIAvwIAIaACAgC_AgAhogIAAO8CogIjpAIBAL0CACEHDAAAxwIAICsAAPYCACAsAAD2AgAg6wEAAACWAgLsAQAAAJYCCO0BAAAAlgII8gEAAPUClgIiBwwAAMoCACArAAD0AgAgLAAA9AIAIOsBAAAAogID7AEAAACiAgntAQAAAKICCfIBAADzAqICIwcMAADHAgAgKwAA8gIAICwAAPICACDrAQAAAKQCAuwBAAAApAII7QEAAACkAgjyAQAA8QKkAiIHDAAAxwIAICsAAPICACAsAADyAgAg6wEAAACkAgLsAQAAAKQCCO0BAAAApAII8gEAAPECpAIiBOsBAAAApAIC7AEAAACkAgjtAQAAAKQCCPIBAADyAqQCIgcMAADKAgAgKwAA9AIAICwAAPQCACDrAQAAAKICA-wBAAAAogIJ7QEAAACiAgnyAQAA8wKiAiME6wEAAACiAgPsAQAAAKICCe0BAAAAogIJ8gEAAPQCogIjBwwAAMcCACArAAD2AgAgLAAA9gIAIOsBAAAAlgIC7AEAAACWAgjtAQAAAJYCCPIBAAD1ApYCIgTrAQAAAJYCAuwBAAAAlgII7QEAAACWAgjyAQAA9gKWAiIW0QEAAPcCADDSAQAAmwEAENMBAAD3AgAw1AEBAL0CACHhAQAA-AKwAiLkAQEAvgIAIeUBQADEAgAh6QFAAMUCACHqAUAAxQIAIYACAQC-AgAhiAIBAL0CACGlAgEAvQIAIaYCAQC9AgAhpwIBAL0CACGoAkAAxQIAIakCAQC9AgAhqgIBAL0CACGrAgEAvQIAIawCAQC9AgAhrQIBAL0CACGuAgEAvQIAIbACQADEAgAhBwwAAMcCACArAAD6AgAgLAAA-gIAIOsBAAAAsAIC7AEAAACwAgjtAQAAALACCPIBAAD5ArACIgcMAADHAgAgKwAA-gIAICwAAPoCACDrAQAAALACAuwBAAAAsAII7QEAAACwAgjyAQAA-QKwAiIE6wEAAACwAgLsAQAAALACCO0BAAAAsAII8gEAAPoCsAIiD9EBAAD7AgAw0gEAAIMBABDTAQAA-wIAMNQBAQC9AgAh9wEBAL0CACGIAgEAvQIAIbECAQC9AgAhsgIBAL0CACGzAgEAvgIAIbQCAQC-AgAhtQICAPwCACG2AgEAvgIAIbcCAQC-AgAhuAIBAL4CACG5AgEAvgIAIQ0MAADKAgAgKwAAygIAICwAAMoCACBNAAD-AgAgTgAAygIAIOsBAgAAAAHsAQIAAAAF7QECAAAABe4BAgAAAAHvAQIAAAAB8AECAAAAAfEBAgAAAAHyAQIA_QIAIQ0MAADKAgAgKwAAygIAICwAAMoCACBNAAD-AgAgTgAAygIAIOsBAgAAAAHsAQIAAAAF7QECAAAABe4BAgAAAAHvAQIAAAAB8AECAAAAAfEBAgAAAAHyAQIA_QIAIQjrAQgAAAAB7AEIAAAABe0BCAAAAAXuAQgAAAAB7wEIAAAAAfABCAAAAAHxAQgAAAAB8gEIAP4CACEM0QEAAP8CADDSAQAAbQAQ0wEAAP8CADDUAQEAvQIAIekBQADFAgAh6gFAAMUCACGIAgEAvQIAIaICAADvAqICI7oCAQC-AgAhuwIBAL4CACG8AgAAgAMAIL0CAQC-AgAhBOsBAQAAAAW-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-gEBAIIDACH8AQAArgMAIP0BAQCCAwAh_gFAAI0DACH_AUAAjQMAIYACAQCCAwAhzQIAABEAIM4CAAARACAVCAAAqQMAIAsAAJYDACDRAQAAqwMAMNIBAAARABDTAQAAqwMAMNQBAQCKAwAh1QEBAIoDACHXAQIAkQMAIeEBAACtA_wBIucBQACNAwAh6QFAAIQDACHqAUAAhAMAIfcBAACsA_cBIvgBAQCKAwAh-QEBAIIDACH6AQEAggMAIfwBAACuAwAg_QEBAIIDACH-AUAAjQMAIf8BQACNAwAhgAIBAIIDACEE6wEAAAD3AQLsAQAAAPcBCO0BAAAA9wEI8gEAAOIC9wEiBOsBAAAA_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-gMAMCYAAP8DADDPAgAA-wMAMNACAAD8AwAw0QIAAP0DACDSAgAA_gMAMNMCAAD-AwAw1AIAAP4DADDVAgAA_gMAMNYCAACABAAw1wIAAIEEADALJQAA8QMAMCYAAPUDADDPAgAA8gMAMNACAADzAwAw0QIAAPQDACDSAgAA3AMAMNMCAADcAwAw1AIAANwDADDVAgAA3AMAMNYCAAD2AwAw1wIAAN8DADAUCQAAzQMAIAoAAM4DACDUAQEAAAAB1gEBAAAAAdcBAgAAAAHYAQEAAAAB2gEAAADaAQLcAQAAANwBAt0BAQAAAAHfAQAAAN8BAuEBAAAA4QEC4gEBAAAAAeMBAQAAAAHkAQEAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AEBAAAAAekBQAAAAAHqAUAAAAABAgAAABcAICUAAPkDACADAAAAFwAgJQAA-QMAICYAAPgDACABHgAAvwYAMAIAAAAXACAeAAD4AwAgAgAAAOADACAeAAD3AwAgEtQBAQDAAwAh1gEBAMYDACHXAQIAwQMAIdgBAQDAAwAh2gEAAMID2gEi3AEAAMMD3AEi3QEBAMADACHfAQAAxAPfASLhAQAAxQPhASLiAQEAwAMAIeMBAQDGAwAh5AEBAMYDACHlAUAAxwMAIeYBQADHAwAh5wFAAMcDACHoAQEAxgMAIekBQADIAwAh6gFAAMgDACEUCQAAygMAIAoAAMsDACDUAQEAwAMAIdYBAQDGAwAh1wECAMEDACHYAQEAwAMAIdoBAADCA9oBItwBAADDA9wBIt0BAQDAAwAh3wEAAMQD3wEi4QEAAMUD4QEi4gEBAMADACHjAQEAxgMAIeQBAQDGAwAh5QFAAMcDACHmAUAAxwMAIecBQADHAwAh6AEBAMYDACHpAUAAyAMAIeoBQADIAwAhFAkAAM0DACAKAADOAwAg1AEBAAAAAdYBAQAAAAHXAQIAAAAB2AEBAAAAAdoBAAAA2gEC3AEAAADcAQLdAQEAAAAB3wEAAADfAQLhAQAAAOEBAuIBAQAAAAHjAQEAAAAB5AEBAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBAQAAAAHpAUAAAAAB6gFAAAAAARALAADlAwAg1AEBAAAAAdcBAgAAAAHhAQAAAPwBAucBQAAAAAHpAUAAAAAB6gFAAAAAAfcBAAAA9wEC-AEBAAAAAfkBAQAAAAH6AQEAAAAB_AGAAAAAAf0BAQAAAAH-AUAAAAAB_wFAAAAAAYACAQAAAAECAAAAEwAgJQAAhQQAIAMAAAATACAlAACFBAAgJgAAhAQAIAEeAAC-BgAwFQgAAKkDACALAACWAwAg0QEAAKsDADDSAQAAEQAQ0wEAAKsDADDUAQEAAAAB1QEBAIoDACHXAQIAkQMAIeEBAACtA_wBIucBQACNAwAh6QFAAIQDACHqAUAAhAMAIfcBAACsA_cBIvgBAQAAAAH5AQEAggMAIfoBAQCCAwAh_AEAAK4DACD9AQEAggMAIf4BQACNAwAh_wFAAI0DACGAAgEAggMAIQIAAAATACAeAACEBAAgAgAAAIIEACAeAACDBAAgE9EBAACBBAAw0gEAAIIEABDTAQAAgQQAMNQBAQCKAwAh1QEBAIoDACHXAQIAkQMAIeEBAACtA_wBIucBQACNAwAh6QFAAIQDACHqAUAAhAMAIfcBAACsA_cBIvgBAQCKAwAh-QEBAIIDACH6AQEAggMAIfwBAACuAwAg_QEBAIIDACH-AUAAjQMAIf8BQACNAwAhgAIBAIIDACET0QEAAIEEADDSAQAAggQAENMBAACBBAAw1AEBAIoDACHVAQEAigMAIdcBAgCRAwAh4QEAAK0D_AEi5wFAAI0DACHpAUAAhAMAIeoBQACEAwAh9wEAAKwD9wEi-AEBAIoDACH5AQEAggMAIfoBAQCCAwAh_AEAAK4DACD9AQEAggMAIf4BQACNAwAh_wFAAI0DACGAAgEAggMAIQ_UAQEAwAMAIdcBAgDBAwAh4QEAANUD_AEi5wFAAMcDACHpAUAAyAMAIeoBQADIAwAh9wEAANQD9wEi-AEBAMADACH5AQEAxgMAIfoBAQDGAwAh_AGAAAAAAf0BAQDGAwAh_gFAAMcDACH_AUAAxwMAIYACAQDGAwAhEAsAANcDACDUAQEAwAMAIdcBAgDBAwAh4QEAANUD_AEi5wFAAMcDACHpAUAAyAMAIeoBQADIAwAh9wEAANQD9wEi-AEBAMADACH5AQEAxgMAIfoBAQDGAwAh_AGAAAAAAf0BAQDGAwAh_gFAAMcDACH_AUAAxwMAIYACAQDGAwAhEAsAAOUDACDUAQEAAAAB1wECAAAAAeEBAAAA_AEC5wFAAAAAAekBQAAAAAHqAUAAAAAB9wEAAAD3AQL4AQEAAAAB-QEBAAAAAfoBAQAAAAH8AYAAAAAB_QEBAAAAAf4BQAAAAAH_AUAAAAABgAIBAAAAAQMlAAC8BgAgzwIAAL0GACDVAgAACQAgAyUAALoGACDPAgAAuwYAINUCAAABACADJQAAuAYAIM8CAAC5BgAg1QIAAA0AIAQlAAD6AwAwzwIAAPsDADDRAgAA_QMAINUCAAD-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_BAAgvQIBAMYDACEI1AEBAMADACHpAUAAyAMAIeoBQADIAwAhogIAALAEogIjugIBAMYDACG7AgEAxgMAIbwCAAD_BAAgvQIBAMYDACEUCAAAzAMAIAkAAM0DACDUAQEAAAAB1QEBAAAAAdYBAQAAAAHXAQIAAAAB2AEBAAAAAdoBAAAA2gEC3AEAAADcAQLdAQEAAAAB3wEAAADfAQLhAQAAAOEBAuIBAQAAAAHjAQEAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AEBAAAAAekBQAAAAAHqAUAAAAABAgAAABcAICUAAJ4FACADAAAAFwAgJQAAngUAICYAAJ0FACABHgAAgQYAMAIAAAAXACAeAACdBQAgAgAAAOADACAeAACcBQAgEtQBAQDAAwAh1QEBAMADACHWAQEAxgMAIdcBAgDBAwAh2AEBAMADACHaAQAAwgPaASLcAQAAwwPcASLdAQEAwAMAId8BAADEA98BIuEBAADFA-EBIuIBAQDAAwAh4wEBAMYDACHlAUAAxwMAIeYBQADHAwAh5wFAAMcDACHoAQEAxgMAIekBQADIAwAh6gFAAMgDACEUCAAAyQMAIAkAAMoDACDUAQEAwAMAIdUBAQDAAwAh1gEBAMYDACHXAQIAwQMAIdgBAQDAAwAh2gEAAMID2gEi3AEAAMMD3AEi3QEBAMADACHfAQAAxAPfASLhAQAAxQPhASLiAQEAwAMAIeMBAQDGAwAh5QFAAMcDACHmAUAAxwMAIecBQADHAwAh6AEBAMYDACHpAUAAyAMAIeoBQADIAwAhFAgAAMwDACAJAADNAwAg1AEBAAAAAdUBAQAAAAHWAQEAAAAB1wECAAAAAdgBAQAAAAHaAQAAANoBAtwBAAAA3AEC3QEBAAAAAd8BAAAA3wEC4QEAAADhAQLiAQEAAAAB4wEBAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBAQAAAAHpAUAAAAAB6gFAAAAAARMDAADyBAAg1AEBAAAAAeEBAAAAsAIC5QFAAAAAAekBQAAAAAHqAUAAAAABgAIBAAAAAYgCAQAAAAGlAgEAAAABpgIBAAAAAacCAQAAAAGoAkAAAAABqQIBAAAAAaoCAQAAAAGrAgEAAAABrAIBAAAAAa0CAQAAAAGuAgEAAAABsAJAAAAAAQIAAAA2ACAlAACqBQAgAwAAADYAICUAAKoFACAmAACpBQAgAR4AAIAGADAYAwAAhQMAIAoAAI4DACDRAQAAiwMAMNIBAAAyABDTAQAAiwMAMNQBAQAAAAHhAQAAjAOwAiLkAQEAggMAIeUBQACNAwAh6QFAAIQDACHqAUAAhAMAIYACAQCCAwAhiAIBAAAAAaUCAQCKAwAhpgIBAIoDACGnAgEAAAABqAJAAIQDACGpAgEAigMAIaoCAQCKAwAhqwIBAIoDACGsAgEAigMAIa0CAQCKAwAhrgIBAIoDACGwAkAAjQMAIQIAAAA2ACAeAACpBQAgAgAAAKcFACAeAACoBQAgFtEBAACmBQAw0gEAAKcFABDTAQAApgUAMNQBAQCKAwAh4QEAAIwDsAIi5AEBAIIDACHlAUAAjQMAIekBQACEAwAh6gFAAIQDACGAAgEAggMAIYgCAQCKAwAhpQIBAIoDACGmAgEAigMAIacCAQCKAwAhqAJAAIQDACGpAgEAigMAIaoCAQCKAwAhqwIBAIoDACGsAgEAigMAIa0CAQCKAwAhrgIBAIoDACGwAkAAjQMAIRbRAQAApgUAMNIBAACnBQAQ0wEAAKYFADDUAQEAigMAIeEBAACMA7ACIuQBAQCCAwAh5QFAAI0DACHpAUAAhAMAIeoBQACEAwAhgAIBAIIDACGIAgEAigMAIaUCAQCKAwAhpgIBAIoDACGnAgEAigMAIagCQACEAwAhqQIBAIoDACGqAgEAigMAIasCAQCKAwAhrAIBAIoDACGtAgEAigMAIa4CAQCKAwAhsAJAAI0DACES1AEBAMADACHhAQAA7wSwAiLlAUAAxwMAIekBQADIAwAh6gFAAMgDACGAAgEAxgMAIYgCAQDAAwAhpQIBAMADACGmAgEAwAMAIacCAQDAAwAhqAJAAMgDACGpAgEAwAMAIaoCAQDAAwAhqwIBAMADACGsAgEAwAMAIa0CAQDAAwAhrgIBAMADACGwAkAAxwMAIRMDAADwBAAg1AEBAMADACHhAQAA7wSwAiLlAUAAxwMAIekBQADIAwAh6gFAAMgDACGAAgEAxgMAIYgCAQDAAwAhpQIBAMADACGmAgEAwAMAIacCAQDAAwAhqAJAAMgDACGpAgEAwAMAIaoCAQDAAwAhqwIBAMADACGsAgEAwAMAIa0CAQDAAwAhrgIBAMADACGwAkAAxwMAIRMDAADyBAAg1AEBAAAAAeEBAAAAsAIC5QFAAAAAAekBQAAAAAHqAUAAAAABgAIBAAAAAYgCAQAAAAGlAgEAAAABpgIBAAAAAacCAQAAAAGoAkAAAAABqQIBAAAAAaoCAQAAAAGrAgEAAAABrAIBAAAAAa0CAQAAAAGuAgEAAAABsAJAAAAAARMKAADzBAAg1AEBAAAAAeEBAAAAsAIC5AEBAAAAAeUBQAAAAAHpAUAAAAAB6gFAAAAAAYACAQAAAAGlAgEAAAABpgIBAAAAAacCAQAAAAGoAkAAAAABqQIBAAAAAaoCAQAAAAGrAgEAAAABrAIBAAAAAa0CAQAAAAGuAgEAAAABsAJAAAAAAQIAAAA2ACAlAACrBQAgAwAAADIAICUAAKsFACAmAACvBQAgFQAAADIAIAoAAPEEACAeAACvBQAg1AEBAMADACHhAQAA7wSwAiLkAQEAxgMAIeUBQADHAwAh6QFAAMgDACHqAUAAyAMAIYACAQDGAwAhpQIBAMADACGmAgEAwAMAIacCAQDAAwAhqAJAAMgDACGpAgEAwAMAIaoCAQDAAwAhqwIBAMADACGsAgEAwAMAIa0CAQDAAwAhrgIBAMADACGwAkAAxwMAIRMKAADxBAAg1AEBAMADACHhAQAA7wSwAiLkAQEAxgMAIeUBQADHAwAh6QFAAMgDACHqAUAAyAMAIYACAQDGAwAhpQIBAMADACGmAgEAwAMAIacCAQDAAwAhqAJAAMgDACGpAgEAwAMAIaoCAQDAAwAhqwIBAMADACGsAgEAwAMAIa0CAQDAAwAhrgIBAMADACGwAkAAxwMAIQwGAACGBAAgBwAAiAQAIAsAAIoEACANAACJBAAg1AEBAAAAAdcBAgAAAAHYAQEAAAAB4QEAAACLAgLpAUAAAAAB6gFAAAAAAYcCAQAAAAGJAgEAAAABAgAAACkAICUAALgFACADAAAAKQAgJQAAuAUAICYAALcFACABHgAA_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_RAQAA3gUAMNIBAADfBQAQ0wEAAN4FADDUAQEAigMAIfcBAQCKAwAhiAIBAIoDACGxAgEAigMAIbICAQCKAwAhswIBAIIDACG0AgEAggMAIbUCAgC5AwAhtgIBAIIDACG3AgEAggMAIbgCAQCCAwAhuQIBAIIDACEL1AEBAMADACH3AQEAwAMAIbECAQDAAwAhsgIBAMADACGzAgEAxgMAIbQCAQDGAwAhtQICAPkEACG2AgEAxgMAIbcCAQDGAwAhuAIBAMYDACG5AgEAxgMAIQvUAQEAwAMAIfcBAQDAAwAhsQIBAMADACGyAgEAwAMAIbMCAQDGAwAhtAIBAMYDACG1AgIA-QQAIbYCAQDGAwAhtwIBAMYDACG4AgEAxgMAIbkCAQDGAwAhC9QBAQAAAAH3AQEAAAABsQIBAAAAAbICAQAAAAGzAgEAAAABtAIBAAAAAbUCAgAAAAG2AgEAAAABtwIBAAAAAbgCAQAAAAG5AgEAAAABBCUAANcFADDPAgAA2AUAMNECAADaBQAg1QIAANsFADAEJQAAywUAMM8CAADMBQAw0QIAAM4FACDVAgAAzwUAMAQlAADCBQAwzwIAAMMFADDRAgAAxQUAINUCAADfBAAwBCUAALkFADDPAgAAugUAMNECAAC8BQAg1QIAAMcEADAEJQAAsAUAMM8CAACxBQAw0QIAALMFACDVAgAAuwQAMAMlAACrBQAgzwIAAKwFACDVAgAANgAgBCUAAJ8FADDPAgAAoAUAMNECAACiBQAg1QIAAKMFADAEJQAAlgUAMM8CAACXBQAw0QIAAJkFACDVAgAA3AMAMAMlAACRBQAgzwIAAJIFACDVAgAAWAAgAAAAAAAGAwAAgwUAIAoAAIMFACDkAQAAugMAIOUBAAC6AwAggAIAALoDACCwAgAAugMAIAAABQMAAIMFACCiAgAAugMAILoCAAC6AwAguwIAALoDACC9AgAAugMAIAwFAACDBQAgDgAA7gUAIA8AAPoFACAQAADvBQAgEQAA8AUAIJQCAAC6AwAgmQIAALoDACCaAgAAugMAIJsCAAC6AwAgnAIAALoDACCeAgAAugMAIKICAAC6AwAgBQMAAIMFACAGAAD1BQAgCAAA-AUAIIwCAAC6AwAgjQIAALoDACAABQMAAIMFACAGAAD1BQAgBwAA9gUAIAsAAPMFACANAAD3BQAgCggAAPgFACALAADzBQAg5wEAALoDACD5AQAAugMAIPoBAAC6AwAg_AEAALoDACD9AQAAugMAIP4BAAC6AwAg_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_UAQEAAAAB1wECAAAAAeEBAAAA_AEC5wFAAAAAAekBQAAAAAHqAUAAAAAB9wEAAAD3AQL4AQEAAAAB-QEBAAAAAfoBAQAAAAH8AYAAAAAB_QEBAAAAAf4BQAAAAAH_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_AEC5wFAAAAAAekBQAAAAAHqAUAAAAAB9wEAAAD3AQL4AQEAAAAB-QEBAAAAAfoBAQAAAAH8AYAAAAAB_QEBAAAAAf4BQAAAAAH_AUAAAAABgAIBAAAAAQIAAAATACAlAADRBgAgDQMAAIcEACAGAACGBAAgBwAAiAQAIA0AAIkEACDUAQEAAAAB1wECAAAAAdgBAQAAAAHhAQAAAIsCAukBQAAAAAHqAUAAAAABhwIBAAAAAYgCAQAAAAGJAgEAAAABAgAAACkAICUAANMGACADAAAAGgAgJQAAzwYAICYAANcGACAUAAAAGgAgBAAAiAUAIBEAAIwFACASAACJBQAgEwAAigUAIBQAAIsFACAVAACNBQAgFgAAjgUAIBgAAJAFACAeAADXBgAg1AEBAMADACHpAUAAyAMAIeoBQADIAwAhwQIBAMADACHCAgEAwAMAIcMCAQDGAwAhxAIBAMYDACHFAkAAxwMAIcYCIACHBQAhxwJAAMcDACESBAAAiAUAIBEAAIwFACASAACJBQAgEwAAigUAIBQAAIsFACAVAACNBQAgFgAAjgUAIBgAAJAFACDUAQEAwAMAIekBQADIAwAh6gFAAMgDACHBAgEAwAMAIcICAQDAAwAhwwIBAMYDACHEAgEAxgMAIcUCQADHAwAhxgIgAIcFACHHAkAAxwMAIQMAAAARACAlAADRBgAgJgAA2gYAIBMAAAARACAIAADWAwAgHgAA2gYAINQBAQDAAwAh1QEBAMADACHXAQIAwQMAIeEBAADVA_wBIucBQADHAwAh6QFAAMgDACHqAUAAyAMAIfcBAADUA_cBIvgBAQDAAwAh-QEBAMYDACH6AQEAxgMAIfwBgAAAAAH9AQEAxgMAIf4BQADHAwAh_wFAAMcDACGAAgEAxgMAIREIAADWAwAg1AEBAMADACHVAQEAwAMAIdcBAgDBAwAh4QEAANUD_AEi5wFAAMcDACHpAUAAyAMAIeoBQADIAwAh9wEAANQD9wEi-AEBAMADACH5AQEAxgMAIfoBAQDGAwAh_AGAAAAAAf0BAQDGAwAh_gFAAMcDACH_AUAAxwMAIYACAQDGAwAhAwAAAA8AICUAANMGACAmAADdBgAgDwAAAA8AIAMAAO0DACAGAADsAwAgBwAA7gMAIA0AAO8DACAeAADdBgAg1AEBAMADACHXAQIAwQMAIdgBAQDAAwAh4QEAAOsDiwIi6QFAAMgDACHqAUAAyAMAIYcCAQDAAwAhiAIBAMADACGJAgEAwAMAIQ0DAADtAwAgBgAA7AMAIAcAAO4DACANAADvAwAg1AEBAMADACHXAQIAwQMAIdgBAQDAAwAh4QEAAOsDiwIi6QFAAMgDACHqAUAAyAMAIYcCAQDAAwAhiAIBAMADACGJAgEAwAMAIQoEBgIMAA8RMQUSCgMTLwQUMAsVMw0WNw0XOAcYOg4BAwABBgUAAQwADA4OBA8jChAnCxEqBQMDAAEGAAMIEAUGAwABBgADBwAECx0HDAAJDRQGAwgABQsYBwwACAMIAAUJGQYKGwEBCxwAAgsfAA0eAAEGAAMCAwABBgADBA4rAA8sABAtABEuAAIDAAEKNAEBAwABBwQ7ABE_ABI8ABM9ABQ-ABZAABdBAAAAAAMMABQrABUsABYAAAADDAAUKwAVLAAWAQMAAQEDAAEDDAAbKwAcLAAdAAAAAwwAGysAHCwAHQEDAAEBAwABBQwAIisAJSwAJk0AI04AJAAAAAAABQwAIisAJSwAJk0AI04AJAIDAAEKkAEBAgMAAQqWAQEDDAArKwAsLAAtAAAAAwwAKysALCwALQEFAAEBBQABBQwAMisANSwANk0AM04ANAAAAAAABQwAMisANSwANk0AM04ANAIDAAEGAAMCAwABBgADBQwAOysAPiwAP00APE4APQAAAAAABQwAOysAPiwAP00APE4APQEGAAMBBgADBQwARCsARywASE0ARU4ARgAAAAAABQwARCsARywASE0ARU4ARgIDAAEGAAMCAwABBgADAwwATSsATiwATwAAAAMMAE0rAE4sAE8DAwABBgADBwAEAwMAAQYAAwcABAUMAFQrAFcsAFhNAFVOAFYAAAAAAAUMAFQrAFcsAFhNAFVOAFYBCAAFAQgABQUMAF0rAGAsAGFNAF5OAF8AAAAAAAUMAF0rAGAsAGFNAF5OAF8DCAAFCawCBgqtAgEDCAAFCbMCBgq0AgEFDABmKwBpLABqTQBnTgBoAAAAAAAFDABmKwBpLABqTQBnTgBoGQIBGkIBG0QBHEUBHUYBH0gBIEoQIUsRIk0BI08QJFASJ1EBKFIBKVMQLVYTLlcXL1kOMFoOMVwOMl0OM14ONGAONWIQNmMYN2UOOGcQOWgZOmkOO2oOPGsQPW4aPm8eP3ACQHECQXICQnMCQ3QCRHYCRXgQRnkfR3sCSH0QSX4gSn8CS4ABAkyBARBPhAEhUIUBJ1GGAQ1ShwENU4gBDVSJAQ1VigENVowBDVeOARBYjwEoWZIBDVqUARBblQEpXJcBDV2YAQ1emQEQX5wBKmCdAS5hngEDYp8BA2OgAQNkoQEDZaIBA2akAQNnpgEQaKcBL2mpAQNqqwEQa6wBMGytAQNtrgEDbq8BEG-yATFwswE3cbQBC3K1AQtztgELdLcBC3W4AQt2ugELd7wBEHi9ATh5vwELesEBEHvCATl8wwELfcQBC37FARB_yAE6gAHJAUCBAcoBCoIBywEKgwHMAQqEAc0BCoUBzgEKhgHQAQqHAdIBEIgB0wFBiQHVAQqKAdcBEIsB2AFCjAHZAQqNAdoBCo4B2wEQjwHeAUOQAd8BSZEB4AEEkgHhAQSTAeIBBJQB4wEElQHkAQSWAeYBBJcB6AEQmAHpAUqZAesBBJoB7QEQmwHuAUucAe8BBJ0B8AEEngHxARCfAfQBTKAB9QFQoQH2AQWiAfcBBaMB-AEFpAH5AQWlAfoBBaYB_AEFpwH-ARCoAf8BUakBgQIFqgGDAhCrAYQCUqwBhQIFrQGGAgWuAYcCEK8BigJTsAGLAlmxAYwCBrIBjQIGswGOAga0AY8CBrUBkAIGtgGSAga3AZQCELgBlQJauQGXAga6AZkCELsBmgJbvAGbAga9AZwCBr4BnQIQvwGgAlzAAaECYsEBogIHwgGjAgfDAaQCB8QBpQIHxQGmAgfGAagCB8cBqgIQyAGrAmPJAa8CB8oBsQIQywGyAmTMAbUCB80BtgIHzgG3AhDPAboCZdABuwJr" } async function decodeBase64AsWasm(wasmBase64: string): Promise { @@ -287,6 +287,16 @@ export interface PrismaClient< * ``` */ get payment(): Prisma.PaymentDelegate; + + /** + * `prisma.refund`: Exposes CRUD operations for the **Refund** model. + * Example usage: + * ```ts + * // Fetch zero or more Refunds + * const refunds = await prisma.refund.findMany() + * ``` + */ + get refund(): Prisma.RefundDelegate; } export function getPrismaClientClass(): PrismaClientConstructor { diff --git a/app/generated/prisma/internal/prismaNamespace.ts b/app/generated/prisma/internal/prismaNamespace.ts index f1d30d5..01c9d02 100644 --- a/app/generated/prisma/internal/prismaNamespace.ts +++ b/app/generated/prisma/internal/prismaNamespace.ts @@ -393,7 +393,8 @@ export const ModelName = { TripImage: 'TripImage', TripParticipant: 'TripParticipant', Booking: 'Booking', - Payment: 'Payment' + Payment: 'Payment', + Refund: 'Refund' } as const export type ModelName = (typeof ModelName)[keyof typeof ModelName] @@ -409,7 +410,7 @@ export type TypeMap + fields: Prisma.RefundFieldRefs + operations: { + findUnique: { + args: Prisma.RefundFindUniqueArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.RefundFindUniqueOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findFirst: { + args: Prisma.RefundFindFirstArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.RefundFindFirstOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findMany: { + args: Prisma.RefundFindManyArgs + result: runtime.Types.Utils.PayloadToResult[] + } + create: { + args: Prisma.RefundCreateArgs + result: runtime.Types.Utils.PayloadToResult + } + createMany: { + args: Prisma.RefundCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.RefundCreateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + delete: { + args: Prisma.RefundDeleteArgs + result: runtime.Types.Utils.PayloadToResult + } + update: { + args: Prisma.RefundUpdateArgs + result: runtime.Types.Utils.PayloadToResult + } + deleteMany: { + args: Prisma.RefundDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.RefundUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.RefundUpdateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + upsert: { + args: Prisma.RefundUpsertArgs + result: runtime.Types.Utils.PayloadToResult + } + aggregate: { + args: Prisma.RefundAggregateArgs + result: runtime.Types.Utils.Optional + } + groupBy: { + args: Prisma.RefundGroupByArgs + result: runtime.Types.Utils.Optional[] + } + count: { + args: Prisma.RefundCountArgs + result: runtime.Types.Utils.Optional | number + } + } + } } } & { other: { @@ -1365,6 +1440,31 @@ export const PaymentScalarFieldEnum = { export type PaymentScalarFieldEnum = (typeof PaymentScalarFieldEnum)[keyof typeof PaymentScalarFieldEnum] +export const RefundScalarFieldEnum = { + id: 'id', + bookingId: 'bookingId', + paymentId: 'paymentId', + amount: 'amount', + currency: 'currency', + reason: 'reason', + reportedBy: 'reportedBy', + reportNote: 'reportNote', + initiatedBy: 'initiatedBy', + status: 'status', + idempotencyKey: 'idempotencyKey', + adminNote: 'adminNote', + reviewedById: 'reviewedById', + reviewedAt: 'reviewedAt', + succeededAt: 'succeededAt', + failedAt: 'failedAt', + externalRefundId: 'externalRefundId', + createdAt: 'createdAt', + updatedAt: 'updatedAt' +} as const + +export type RefundScalarFieldEnum = (typeof RefundScalarFieldEnum)[keyof typeof RefundScalarFieldEnum] + + export const SortOrder = { asc: 'asc', desc: 'desc' @@ -1587,6 +1687,62 @@ export type EnumQueryModeFieldRefInput<$PrismaModel> = FieldRefInputType<$Prisma +/** + * Reference to a field of type 'RefundReason' + */ +export type EnumRefundReasonFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'RefundReason'> + + + +/** + * Reference to a field of type 'RefundReason[]' + */ +export type ListEnumRefundReasonFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'RefundReason[]'> + + + +/** + * Reference to a field of type 'RefundReporter' + */ +export type EnumRefundReporterFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'RefundReporter'> + + + +/** + * Reference to a field of type 'RefundReporter[]' + */ +export type ListEnumRefundReporterFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'RefundReporter[]'> + + + +/** + * Reference to a field of type 'RefundInitiator' + */ +export type EnumRefundInitiatorFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'RefundInitiator'> + + + +/** + * Reference to a field of type 'RefundInitiator[]' + */ +export type ListEnumRefundInitiatorFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'RefundInitiator[]'> + + + +/** + * Reference to a field of type 'RefundStatus' + */ +export type EnumRefundStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'RefundStatus'> + + + +/** + * Reference to a field of type 'RefundStatus[]' + */ +export type ListEnumRefundStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'RefundStatus[]'> + + + /** * Reference to a field of type 'Float' */ @@ -1720,6 +1876,7 @@ export type GlobalOmitConfig = { tripParticipant?: Prisma.TripParticipantOmit booking?: Prisma.BookingOmit payment?: Prisma.PaymentOmit + refund?: Prisma.RefundOmit } /* Types for Logging */ diff --git a/app/generated/prisma/internal/prismaNamespaceBrowser.ts b/app/generated/prisma/internal/prismaNamespaceBrowser.ts index 6fe902d..0c3b63d 100644 --- a/app/generated/prisma/internal/prismaNamespaceBrowser.ts +++ b/app/generated/prisma/internal/prismaNamespaceBrowser.ts @@ -60,7 +60,8 @@ export const ModelName = { TripImage: 'TripImage', TripParticipant: 'TripParticipant', Booking: 'Booking', - Payment: 'Payment' + Payment: 'Payment', + Refund: 'Refund' } as const export type ModelName = (typeof ModelName)[keyof typeof ModelName] @@ -252,6 +253,31 @@ export const PaymentScalarFieldEnum = { export type PaymentScalarFieldEnum = (typeof PaymentScalarFieldEnum)[keyof typeof PaymentScalarFieldEnum] +export const RefundScalarFieldEnum = { + id: 'id', + bookingId: 'bookingId', + paymentId: 'paymentId', + amount: 'amount', + currency: 'currency', + reason: 'reason', + reportedBy: 'reportedBy', + reportNote: 'reportNote', + initiatedBy: 'initiatedBy', + status: 'status', + idempotencyKey: 'idempotencyKey', + adminNote: 'adminNote', + reviewedById: 'reviewedById', + reviewedAt: 'reviewedAt', + succeededAt: 'succeededAt', + failedAt: 'failedAt', + externalRefundId: 'externalRefundId', + createdAt: 'createdAt', + updatedAt: 'updatedAt' +} as const + +export type RefundScalarFieldEnum = (typeof RefundScalarFieldEnum)[keyof typeof RefundScalarFieldEnum] + + export const SortOrder = { asc: 'asc', desc: 'desc' diff --git a/app/generated/prisma/models.ts b/app/generated/prisma/models.ts index 80f8a58..43d18c1 100644 --- a/app/generated/prisma/models.ts +++ b/app/generated/prisma/models.ts @@ -18,4 +18,5 @@ export type * from './models/TripImage' export type * from './models/TripParticipant' export type * from './models/Booking' export type * from './models/Payment' +export type * from './models/Refund' export type * from './commonInputTypes' \ No newline at end of file diff --git a/app/generated/prisma/models/Booking.ts b/app/generated/prisma/models/Booking.ts index 345831d..07ab345 100644 --- a/app/generated/prisma/models/Booking.ts +++ b/app/generated/prisma/models/Booking.ts @@ -257,6 +257,7 @@ export type BookingWhereInput = { user?: Prisma.XOR participant?: Prisma.XOR payments?: Prisma.PaymentListRelationFilter + refunds?: Prisma.RefundListRelationFilter } export type BookingOrderByWithRelationInput = { @@ -273,6 +274,7 @@ export type BookingOrderByWithRelationInput = { user?: Prisma.UserOrderByWithRelationInput participant?: Prisma.TripParticipantOrderByWithRelationInput payments?: Prisma.PaymentOrderByRelationAggregateInput + refunds?: Prisma.RefundOrderByRelationAggregateInput } export type BookingWhereUniqueInput = Prisma.AtLeast<{ @@ -293,6 +295,7 @@ export type BookingWhereUniqueInput = Prisma.AtLeast<{ user?: Prisma.XOR participant?: Prisma.XOR payments?: Prisma.PaymentListRelationFilter + refunds?: Prisma.RefundListRelationFilter }, "id" | "participantId" | "tripId_userId"> export type BookingOrderByWithAggregationInput = { @@ -338,6 +341,7 @@ export type BookingCreateInput = { user: Prisma.UserCreateNestedOneWithoutBookingsInput participant: Prisma.TripParticipantCreateNestedOneWithoutBookingInput payments?: Prisma.PaymentCreateNestedManyWithoutBookingInput + refunds?: Prisma.RefundCreateNestedManyWithoutBookingInput } export type BookingUncheckedCreateInput = { @@ -351,6 +355,7 @@ export type BookingUncheckedCreateInput = { createdAt?: Date | string updatedAt?: Date | string payments?: Prisma.PaymentUncheckedCreateNestedManyWithoutBookingInput + refunds?: Prisma.RefundUncheckedCreateNestedManyWithoutBookingInput } export type BookingUpdateInput = { @@ -364,6 +369,7 @@ export type BookingUpdateInput = { user?: Prisma.UserUpdateOneRequiredWithoutBookingsNestedInput participant?: Prisma.TripParticipantUpdateOneRequiredWithoutBookingNestedInput payments?: Prisma.PaymentUpdateManyWithoutBookingNestedInput + refunds?: Prisma.RefundUpdateManyWithoutBookingNestedInput } export type BookingUncheckedUpdateInput = { @@ -377,6 +383,7 @@ export type BookingUncheckedUpdateInput = { createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string payments?: Prisma.PaymentUncheckedUpdateManyWithoutBookingNestedInput + refunds?: Prisma.RefundUncheckedUpdateManyWithoutBookingNestedInput } export type BookingCreateManyInput = { @@ -615,6 +622,20 @@ export type BookingUpdateOneRequiredWithoutPaymentsNestedInput = { update?: Prisma.XOR, Prisma.BookingUncheckedUpdateWithoutPaymentsInput> } +export type BookingCreateNestedOneWithoutRefundsInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.BookingCreateOrConnectWithoutRefundsInput + connect?: Prisma.BookingWhereUniqueInput +} + +export type BookingUpdateOneRequiredWithoutRefundsNestedInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.BookingCreateOrConnectWithoutRefundsInput + upsert?: Prisma.BookingUpsertWithoutRefundsInput + connect?: Prisma.BookingWhereUniqueInput + update?: Prisma.XOR, Prisma.BookingUncheckedUpdateWithoutRefundsInput> +} + export type BookingCreateWithoutUserInput = { id?: string amount: number @@ -625,6 +646,7 @@ export type BookingCreateWithoutUserInput = { trip: Prisma.TripCreateNestedOneWithoutBookingsInput participant: Prisma.TripParticipantCreateNestedOneWithoutBookingInput payments?: Prisma.PaymentCreateNestedManyWithoutBookingInput + refunds?: Prisma.RefundCreateNestedManyWithoutBookingInput } export type BookingUncheckedCreateWithoutUserInput = { @@ -637,6 +659,7 @@ export type BookingUncheckedCreateWithoutUserInput = { createdAt?: Date | string updatedAt?: Date | string payments?: Prisma.PaymentUncheckedCreateNestedManyWithoutBookingInput + refunds?: Prisma.RefundUncheckedCreateNestedManyWithoutBookingInput } export type BookingCreateOrConnectWithoutUserInput = { @@ -690,6 +713,7 @@ export type BookingCreateWithoutTripInput = { user: Prisma.UserCreateNestedOneWithoutBookingsInput participant: Prisma.TripParticipantCreateNestedOneWithoutBookingInput payments?: Prisma.PaymentCreateNestedManyWithoutBookingInput + refunds?: Prisma.RefundCreateNestedManyWithoutBookingInput } export type BookingUncheckedCreateWithoutTripInput = { @@ -702,6 +726,7 @@ export type BookingUncheckedCreateWithoutTripInput = { createdAt?: Date | string updatedAt?: Date | string payments?: Prisma.PaymentUncheckedCreateNestedManyWithoutBookingInput + refunds?: Prisma.RefundUncheckedCreateNestedManyWithoutBookingInput } export type BookingCreateOrConnectWithoutTripInput = { @@ -740,6 +765,7 @@ export type BookingCreateWithoutParticipantInput = { trip: Prisma.TripCreateNestedOneWithoutBookingsInput user: Prisma.UserCreateNestedOneWithoutBookingsInput payments?: Prisma.PaymentCreateNestedManyWithoutBookingInput + refunds?: Prisma.RefundCreateNestedManyWithoutBookingInput } export type BookingUncheckedCreateWithoutParticipantInput = { @@ -752,6 +778,7 @@ export type BookingUncheckedCreateWithoutParticipantInput = { createdAt?: Date | string updatedAt?: Date | string payments?: Prisma.PaymentUncheckedCreateNestedManyWithoutBookingInput + refunds?: Prisma.RefundUncheckedCreateNestedManyWithoutBookingInput } export type BookingCreateOrConnectWithoutParticipantInput = { @@ -780,6 +807,7 @@ export type BookingUpdateWithoutParticipantInput = { trip?: Prisma.TripUpdateOneRequiredWithoutBookingsNestedInput user?: Prisma.UserUpdateOneRequiredWithoutBookingsNestedInput payments?: Prisma.PaymentUpdateManyWithoutBookingNestedInput + refunds?: Prisma.RefundUpdateManyWithoutBookingNestedInput } export type BookingUncheckedUpdateWithoutParticipantInput = { @@ -792,6 +820,7 @@ export type BookingUncheckedUpdateWithoutParticipantInput = { createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string payments?: Prisma.PaymentUncheckedUpdateManyWithoutBookingNestedInput + refunds?: Prisma.RefundUncheckedUpdateManyWithoutBookingNestedInput } export type BookingCreateWithoutPaymentsInput = { @@ -804,6 +833,7 @@ export type BookingCreateWithoutPaymentsInput = { trip: Prisma.TripCreateNestedOneWithoutBookingsInput user: Prisma.UserCreateNestedOneWithoutBookingsInput participant: Prisma.TripParticipantCreateNestedOneWithoutBookingInput + refunds?: Prisma.RefundCreateNestedManyWithoutBookingInput } export type BookingUncheckedCreateWithoutPaymentsInput = { @@ -816,6 +846,7 @@ export type BookingUncheckedCreateWithoutPaymentsInput = { status?: $Enums.BookingStatus createdAt?: Date | string updatedAt?: Date | string + refunds?: Prisma.RefundUncheckedCreateNestedManyWithoutBookingInput } export type BookingCreateOrConnectWithoutPaymentsInput = { @@ -844,6 +875,7 @@ export type BookingUpdateWithoutPaymentsInput = { trip?: Prisma.TripUpdateOneRequiredWithoutBookingsNestedInput user?: Prisma.UserUpdateOneRequiredWithoutBookingsNestedInput participant?: Prisma.TripParticipantUpdateOneRequiredWithoutBookingNestedInput + refunds?: Prisma.RefundUpdateManyWithoutBookingNestedInput } export type BookingUncheckedUpdateWithoutPaymentsInput = { @@ -856,6 +888,75 @@ export type BookingUncheckedUpdateWithoutPaymentsInput = { status?: Prisma.EnumBookingStatusFieldUpdateOperationsInput | $Enums.BookingStatus createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + refunds?: Prisma.RefundUncheckedUpdateManyWithoutBookingNestedInput +} + +export type BookingCreateWithoutRefundsInput = { + id?: string + amount: number + currency?: string + status?: $Enums.BookingStatus + createdAt?: Date | string + updatedAt?: Date | string + trip: Prisma.TripCreateNestedOneWithoutBookingsInput + user: Prisma.UserCreateNestedOneWithoutBookingsInput + participant: Prisma.TripParticipantCreateNestedOneWithoutBookingInput + payments?: Prisma.PaymentCreateNestedManyWithoutBookingInput +} + +export type BookingUncheckedCreateWithoutRefundsInput = { + id?: string + tripId: string + userId: string + participantId: string + amount: number + currency?: string + status?: $Enums.BookingStatus + createdAt?: Date | string + updatedAt?: Date | string + payments?: Prisma.PaymentUncheckedCreateNestedManyWithoutBookingInput +} + +export type BookingCreateOrConnectWithoutRefundsInput = { + where: Prisma.BookingWhereUniqueInput + create: Prisma.XOR +} + +export type BookingUpsertWithoutRefundsInput = { + update: Prisma.XOR + create: Prisma.XOR + where?: Prisma.BookingWhereInput +} + +export type BookingUpdateToOneWithWhereWithoutRefundsInput = { + where?: Prisma.BookingWhereInput + data: Prisma.XOR +} + +export type BookingUpdateWithoutRefundsInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + amount?: Prisma.IntFieldUpdateOperationsInput | number + currency?: Prisma.StringFieldUpdateOperationsInput | string + status?: Prisma.EnumBookingStatusFieldUpdateOperationsInput | $Enums.BookingStatus + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + trip?: Prisma.TripUpdateOneRequiredWithoutBookingsNestedInput + user?: Prisma.UserUpdateOneRequiredWithoutBookingsNestedInput + participant?: Prisma.TripParticipantUpdateOneRequiredWithoutBookingNestedInput + payments?: Prisma.PaymentUpdateManyWithoutBookingNestedInput +} + +export type BookingUncheckedUpdateWithoutRefundsInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + tripId?: Prisma.StringFieldUpdateOperationsInput | string + userId?: Prisma.StringFieldUpdateOperationsInput | string + participantId?: Prisma.StringFieldUpdateOperationsInput | string + amount?: Prisma.IntFieldUpdateOperationsInput | number + currency?: Prisma.StringFieldUpdateOperationsInput | string + status?: Prisma.EnumBookingStatusFieldUpdateOperationsInput | $Enums.BookingStatus + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + payments?: Prisma.PaymentUncheckedUpdateManyWithoutBookingNestedInput } export type BookingCreateManyUserInput = { @@ -879,6 +980,7 @@ export type BookingUpdateWithoutUserInput = { trip?: Prisma.TripUpdateOneRequiredWithoutBookingsNestedInput participant?: Prisma.TripParticipantUpdateOneRequiredWithoutBookingNestedInput payments?: Prisma.PaymentUpdateManyWithoutBookingNestedInput + refunds?: Prisma.RefundUpdateManyWithoutBookingNestedInput } export type BookingUncheckedUpdateWithoutUserInput = { @@ -891,6 +993,7 @@ export type BookingUncheckedUpdateWithoutUserInput = { createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string payments?: Prisma.PaymentUncheckedUpdateManyWithoutBookingNestedInput + refunds?: Prisma.RefundUncheckedUpdateManyWithoutBookingNestedInput } export type BookingUncheckedUpdateManyWithoutUserInput = { @@ -925,6 +1028,7 @@ export type BookingUpdateWithoutTripInput = { user?: Prisma.UserUpdateOneRequiredWithoutBookingsNestedInput participant?: Prisma.TripParticipantUpdateOneRequiredWithoutBookingNestedInput payments?: Prisma.PaymentUpdateManyWithoutBookingNestedInput + refunds?: Prisma.RefundUpdateManyWithoutBookingNestedInput } export type BookingUncheckedUpdateWithoutTripInput = { @@ -937,6 +1041,7 @@ export type BookingUncheckedUpdateWithoutTripInput = { createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string payments?: Prisma.PaymentUncheckedUpdateManyWithoutBookingNestedInput + refunds?: Prisma.RefundUncheckedUpdateManyWithoutBookingNestedInput } export type BookingUncheckedUpdateManyWithoutTripInput = { @@ -957,10 +1062,12 @@ export type BookingUncheckedUpdateManyWithoutTripInput = { export type BookingCountOutputType = { payments: number + refunds: number } export type BookingCountOutputTypeSelect = { payments?: boolean | BookingCountOutputTypeCountPaymentsArgs + refunds?: boolean | BookingCountOutputTypeCountRefundsArgs } /** @@ -980,6 +1087,13 @@ export type BookingCountOutputTypeCountPaymentsArgs = { + where?: Prisma.RefundWhereInput +} + export type BookingSelect = runtime.Types.Extensions.GetSelect<{ id?: boolean @@ -995,6 +1109,7 @@ export type BookingSelect participant?: boolean | Prisma.TripParticipantDefaultArgs payments?: boolean | Prisma.Booking$paymentsArgs + refunds?: boolean | Prisma.Booking$refundsArgs _count?: boolean | Prisma.BookingCountOutputTypeDefaultArgs }, ExtArgs["result"]["booking"]> @@ -1046,6 +1161,7 @@ export type BookingInclude participant?: boolean | Prisma.TripParticipantDefaultArgs payments?: boolean | Prisma.Booking$paymentsArgs + refunds?: boolean | Prisma.Booking$refundsArgs _count?: boolean | Prisma.BookingCountOutputTypeDefaultArgs } export type BookingIncludeCreateManyAndReturn = { @@ -1066,6 +1182,7 @@ export type $BookingPayload participant: Prisma.$TripParticipantPayload payments: Prisma.$PaymentPayload[] + refunds: Prisma.$RefundPayload[] } scalars: runtime.Types.Extensions.GetPayloadResult<{ id: string @@ -1475,6 +1592,7 @@ export interface Prisma__BookingClient = {}>(args?: Prisma.Subset>): Prisma.Prisma__UserClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> participant = {}>(args?: Prisma.Subset>): Prisma.Prisma__TripParticipantClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> payments = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> + refunds = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> /** * Attaches callbacks for the resolution and/or rejection of the Promise. * @param onfulfilled The callback to execute when the Promise is resolved. @@ -1937,6 +2055,30 @@ export type Booking$paymentsArgs = { + /** + * Select specific fields to fetch from the Refund + */ + select?: Prisma.RefundSelect | null + /** + * Omit specific fields from the Refund + */ + omit?: Prisma.RefundOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.RefundInclude | null + where?: Prisma.RefundWhereInput + orderBy?: Prisma.RefundOrderByWithRelationInput | Prisma.RefundOrderByWithRelationInput[] + cursor?: Prisma.RefundWhereUniqueInput + take?: number + skip?: number + distinct?: Prisma.RefundScalarFieldEnum | Prisma.RefundScalarFieldEnum[] +} + /** * Booking without action */ diff --git a/app/generated/prisma/models/Payment.ts b/app/generated/prisma/models/Payment.ts index f7152be..6ef9ac1 100644 --- a/app/generated/prisma/models/Payment.ts +++ b/app/generated/prisma/models/Payment.ts @@ -302,6 +302,7 @@ export type PaymentWhereInput = { createdAt?: Prisma.DateTimeFilter<"Payment"> | Date | string updatedAt?: Prisma.DateTimeFilter<"Payment"> | Date | string booking?: Prisma.XOR + refunds?: Prisma.RefundListRelationFilter } export type PaymentOrderByWithRelationInput = { @@ -322,6 +323,7 @@ export type PaymentOrderByWithRelationInput = { createdAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder booking?: Prisma.BookingOrderByWithRelationInput + refunds?: Prisma.RefundOrderByRelationAggregateInput } export type PaymentWhereUniqueInput = Prisma.AtLeast<{ @@ -345,6 +347,7 @@ export type PaymentWhereUniqueInput = Prisma.AtLeast<{ createdAt?: Prisma.DateTimeFilter<"Payment"> | Date | string updatedAt?: Prisma.DateTimeFilter<"Payment"> | Date | string booking?: Prisma.XOR + refunds?: Prisma.RefundListRelationFilter }, "id" | "externalOrderId"> export type PaymentOrderByWithAggregationInput = { @@ -410,6 +413,7 @@ export type PaymentCreateInput = { createdAt?: Date | string updatedAt?: Date | string booking: Prisma.BookingCreateNestedOneWithoutPaymentsInput + refunds?: Prisma.RefundCreateNestedManyWithoutPaymentInput } export type PaymentUncheckedCreateInput = { @@ -429,6 +433,7 @@ export type PaymentUncheckedCreateInput = { rejectionReason?: string | null createdAt?: Date | string updatedAt?: Date | string + refunds?: Prisma.RefundUncheckedCreateNestedManyWithoutPaymentInput } export type PaymentUpdateInput = { @@ -448,6 +453,7 @@ export type PaymentUpdateInput = { createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string booking?: Prisma.BookingUpdateOneRequiredWithoutPaymentsNestedInput + refunds?: Prisma.RefundUpdateManyWithoutPaymentNestedInput } export type PaymentUncheckedUpdateInput = { @@ -467,6 +473,7 @@ export type PaymentUncheckedUpdateInput = { rejectionReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + refunds?: Prisma.RefundUncheckedUpdateManyWithoutPaymentNestedInput } export type PaymentCreateManyInput = { @@ -598,6 +605,11 @@ export type PaymentSumOrderByAggregateInput = { amount?: Prisma.SortOrder } +export type PaymentNullableScalarRelationFilter = { + is?: Prisma.PaymentWhereInput | null + isNot?: Prisma.PaymentWhereInput | null +} + export type PaymentCreateNestedManyWithoutBookingInput = { create?: Prisma.XOR | Prisma.PaymentCreateWithoutBookingInput[] | Prisma.PaymentUncheckedCreateWithoutBookingInput[] connectOrCreate?: Prisma.PaymentCreateOrConnectWithoutBookingInput | Prisma.PaymentCreateOrConnectWithoutBookingInput[] @@ -648,6 +660,22 @@ export type EnumPaymentStatusFieldUpdateOperationsInput = { set?: $Enums.PaymentStatus } +export type PaymentCreateNestedOneWithoutRefundsInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.PaymentCreateOrConnectWithoutRefundsInput + connect?: Prisma.PaymentWhereUniqueInput +} + +export type PaymentUpdateOneWithoutRefundsNestedInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.PaymentCreateOrConnectWithoutRefundsInput + upsert?: Prisma.PaymentUpsertWithoutRefundsInput + disconnect?: Prisma.PaymentWhereInput | boolean + delete?: Prisma.PaymentWhereInput | boolean + connect?: Prisma.PaymentWhereUniqueInput + update?: Prisma.XOR, Prisma.PaymentUncheckedUpdateWithoutRefundsInput> +} + export type PaymentCreateWithoutBookingInput = { id?: string provider: $Enums.PaymentProvider @@ -664,6 +692,7 @@ export type PaymentCreateWithoutBookingInput = { rejectionReason?: string | null createdAt?: Date | string updatedAt?: Date | string + refunds?: Prisma.RefundCreateNestedManyWithoutPaymentInput } export type PaymentUncheckedCreateWithoutBookingInput = { @@ -682,6 +711,7 @@ export type PaymentUncheckedCreateWithoutBookingInput = { rejectionReason?: string | null createdAt?: Date | string updatedAt?: Date | string + refunds?: Prisma.RefundUncheckedCreateNestedManyWithoutPaymentInput } export type PaymentCreateOrConnectWithoutBookingInput = { @@ -732,6 +762,98 @@ export type PaymentScalarWhereInput = { updatedAt?: Prisma.DateTimeFilter<"Payment"> | Date | string } +export type PaymentCreateWithoutRefundsInput = { + id?: string + provider: $Enums.PaymentProvider + externalOrderId: string + externalTxId?: string | null + method?: string | null + amount: number + status?: $Enums.PaymentStatus + rawCallback?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + snapToken?: string | null + expiresAt?: Date | string | null + paidAt?: Date | string | null + failedAt?: Date | string | null + rejectionReason?: string | null + createdAt?: Date | string + updatedAt?: Date | string + booking: Prisma.BookingCreateNestedOneWithoutPaymentsInput +} + +export type PaymentUncheckedCreateWithoutRefundsInput = { + id?: string + bookingId: string + provider: $Enums.PaymentProvider + externalOrderId: string + externalTxId?: string | null + method?: string | null + amount: number + status?: $Enums.PaymentStatus + rawCallback?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + snapToken?: string | null + expiresAt?: Date | string | null + paidAt?: Date | string | null + failedAt?: Date | string | null + rejectionReason?: string | null + createdAt?: Date | string + updatedAt?: Date | string +} + +export type PaymentCreateOrConnectWithoutRefundsInput = { + where: Prisma.PaymentWhereUniqueInput + create: Prisma.XOR +} + +export type PaymentUpsertWithoutRefundsInput = { + update: Prisma.XOR + create: Prisma.XOR + where?: Prisma.PaymentWhereInput +} + +export type PaymentUpdateToOneWithWhereWithoutRefundsInput = { + where?: Prisma.PaymentWhereInput + data: Prisma.XOR +} + +export type PaymentUpdateWithoutRefundsInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + provider?: Prisma.EnumPaymentProviderFieldUpdateOperationsInput | $Enums.PaymentProvider + externalOrderId?: Prisma.StringFieldUpdateOperationsInput | string + externalTxId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + method?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + amount?: Prisma.IntFieldUpdateOperationsInput | number + status?: Prisma.EnumPaymentStatusFieldUpdateOperationsInput | $Enums.PaymentStatus + rawCallback?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + snapToken?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + expiresAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + paidAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + rejectionReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + booking?: Prisma.BookingUpdateOneRequiredWithoutPaymentsNestedInput +} + +export type PaymentUncheckedUpdateWithoutRefundsInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + bookingId?: Prisma.StringFieldUpdateOperationsInput | string + provider?: Prisma.EnumPaymentProviderFieldUpdateOperationsInput | $Enums.PaymentProvider + externalOrderId?: Prisma.StringFieldUpdateOperationsInput | string + externalTxId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + method?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + amount?: Prisma.IntFieldUpdateOperationsInput | number + status?: Prisma.EnumPaymentStatusFieldUpdateOperationsInput | $Enums.PaymentStatus + rawCallback?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + snapToken?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + expiresAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + paidAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + rejectionReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + export type PaymentCreateManyBookingInput = { id?: string provider: $Enums.PaymentProvider @@ -766,6 +888,7 @@ export type PaymentUpdateWithoutBookingInput = { rejectionReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + refunds?: Prisma.RefundUpdateManyWithoutPaymentNestedInput } export type PaymentUncheckedUpdateWithoutBookingInput = { @@ -784,6 +907,7 @@ export type PaymentUncheckedUpdateWithoutBookingInput = { rejectionReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + refunds?: Prisma.RefundUncheckedUpdateManyWithoutPaymentNestedInput } export type PaymentUncheckedUpdateManyWithoutBookingInput = { @@ -805,6 +929,35 @@ export type PaymentUncheckedUpdateManyWithoutBookingInput = { } +/** + * Count Type PaymentCountOutputType + */ + +export type PaymentCountOutputType = { + refunds: number +} + +export type PaymentCountOutputTypeSelect = { + refunds?: boolean | PaymentCountOutputTypeCountRefundsArgs +} + +/** + * PaymentCountOutputType without action + */ +export type PaymentCountOutputTypeDefaultArgs = { + /** + * Select specific fields to fetch from the PaymentCountOutputType + */ + select?: Prisma.PaymentCountOutputTypeSelect | null +} + +/** + * PaymentCountOutputType without action + */ +export type PaymentCountOutputTypeCountRefundsArgs = { + where?: Prisma.RefundWhereInput +} + export type PaymentSelect = runtime.Types.Extensions.GetSelect<{ id?: boolean @@ -824,6 +977,8 @@ export type PaymentSelect + refunds?: boolean | Prisma.Payment$refundsArgs + _count?: boolean | Prisma.PaymentCountOutputTypeDefaultArgs }, ExtArgs["result"]["payment"]> export type PaymentSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ @@ -888,6 +1043,8 @@ export type PaymentSelectScalar = { export type PaymentOmit = runtime.Types.Extensions.GetOmit<"id" | "bookingId" | "provider" | "externalOrderId" | "externalTxId" | "method" | "amount" | "status" | "rawCallback" | "snapToken" | "expiresAt" | "paidAt" | "failedAt" | "rejectionReason" | "createdAt" | "updatedAt", ExtArgs["result"]["payment"]> export type PaymentInclude = { booking?: boolean | Prisma.BookingDefaultArgs + refunds?: boolean | Prisma.Payment$refundsArgs + _count?: boolean | Prisma.PaymentCountOutputTypeDefaultArgs } export type PaymentIncludeCreateManyAndReturn = { booking?: boolean | Prisma.BookingDefaultArgs @@ -900,6 +1057,7 @@ export type $PaymentPayload + refunds: Prisma.$RefundPayload[] } scalars: runtime.Types.Extensions.GetPayloadResult<{ id: string @@ -1332,6 +1490,7 @@ readonly fields: PaymentFieldRefs; export interface Prisma__PaymentClient extends Prisma.PrismaPromise { readonly [Symbol.toStringTag]: "PrismaPromise" booking = {}>(args?: Prisma.Subset>): Prisma.Prisma__BookingClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> + refunds = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> /** * Attaches callbacks for the resolution and/or rejection of the Promise. * @param onfulfilled The callback to execute when the Promise is resolved. @@ -1777,6 +1936,30 @@ export type PaymentDeleteManyArgs = { + /** + * Select specific fields to fetch from the Refund + */ + select?: Prisma.RefundSelect | null + /** + * Omit specific fields from the Refund + */ + omit?: Prisma.RefundOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.RefundInclude | null + where?: Prisma.RefundWhereInput + orderBy?: Prisma.RefundOrderByWithRelationInput | Prisma.RefundOrderByWithRelationInput[] + cursor?: Prisma.RefundWhereUniqueInput + take?: number + skip?: number + distinct?: Prisma.RefundScalarFieldEnum | Prisma.RefundScalarFieldEnum[] +} + /** * Payment without action */ diff --git a/app/generated/prisma/models/Refund.ts b/app/generated/prisma/models/Refund.ts new file mode 100644 index 0000000..ac33894 --- /dev/null +++ b/app/generated/prisma/models/Refund.ts @@ -0,0 +1,2379 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file exports the `Refund` 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" +import type * as Prisma from "../internal/prismaNamespace" + +/** + * Model Refund + * Refund = financial event terpisah dari Booking. Satu Booking bisa punya + * banyak Refund (partial, multi-tahap). Setiap row auditable: kapan dibuat, + * siapa melaporkan, siapa approve, kapan SUCCEEDED. Never delete — kalau + * gagal, set status=FAILED + alasan. + * + * Di MVP refund dimasukkan admin secara manual berdasarkan laporan dari + * peserta atau organizer (via WhatsApp/email). Phase berikutnya akan + * menambah self-service flow dari user dan organizer. + */ +export type RefundModel = runtime.Types.Result.DefaultSelection + +export type AggregateRefund = { + _count: RefundCountAggregateOutputType | null + _avg: RefundAvgAggregateOutputType | null + _sum: RefundSumAggregateOutputType | null + _min: RefundMinAggregateOutputType | null + _max: RefundMaxAggregateOutputType | null +} + +export type RefundAvgAggregateOutputType = { + amount: number | null +} + +export type RefundSumAggregateOutputType = { + amount: number | null +} + +export type RefundMinAggregateOutputType = { + id: string | null + bookingId: string | null + paymentId: string | null + amount: number | null + currency: string | null + reason: $Enums.RefundReason | null + reportedBy: $Enums.RefundReporter | null + reportNote: string | null + initiatedBy: $Enums.RefundInitiator | null + status: $Enums.RefundStatus | null + idempotencyKey: string | null + adminNote: string | null + reviewedById: string | null + reviewedAt: Date | null + succeededAt: Date | null + failedAt: Date | null + externalRefundId: string | null + createdAt: Date | null + updatedAt: Date | null +} + +export type RefundMaxAggregateOutputType = { + id: string | null + bookingId: string | null + paymentId: string | null + amount: number | null + currency: string | null + reason: $Enums.RefundReason | null + reportedBy: $Enums.RefundReporter | null + reportNote: string | null + initiatedBy: $Enums.RefundInitiator | null + status: $Enums.RefundStatus | null + idempotencyKey: string | null + adminNote: string | null + reviewedById: string | null + reviewedAt: Date | null + succeededAt: Date | null + failedAt: Date | null + externalRefundId: string | null + createdAt: Date | null + updatedAt: Date | null +} + +export type RefundCountAggregateOutputType = { + id: number + bookingId: number + paymentId: number + amount: number + currency: number + reason: number + reportedBy: number + reportNote: number + initiatedBy: number + status: number + idempotencyKey: number + adminNote: number + reviewedById: number + reviewedAt: number + succeededAt: number + failedAt: number + externalRefundId: number + createdAt: number + updatedAt: number + _all: number +} + + +export type RefundAvgAggregateInputType = { + amount?: true +} + +export type RefundSumAggregateInputType = { + amount?: true +} + +export type RefundMinAggregateInputType = { + id?: true + bookingId?: true + paymentId?: true + amount?: true + currency?: true + reason?: true + reportedBy?: true + reportNote?: true + initiatedBy?: true + status?: true + idempotencyKey?: true + adminNote?: true + reviewedById?: true + reviewedAt?: true + succeededAt?: true + failedAt?: true + externalRefundId?: true + createdAt?: true + updatedAt?: true +} + +export type RefundMaxAggregateInputType = { + id?: true + bookingId?: true + paymentId?: true + amount?: true + currency?: true + reason?: true + reportedBy?: true + reportNote?: true + initiatedBy?: true + status?: true + idempotencyKey?: true + adminNote?: true + reviewedById?: true + reviewedAt?: true + succeededAt?: true + failedAt?: true + externalRefundId?: true + createdAt?: true + updatedAt?: true +} + +export type RefundCountAggregateInputType = { + id?: true + bookingId?: true + paymentId?: true + amount?: true + currency?: true + reason?: true + reportedBy?: true + reportNote?: true + initiatedBy?: true + status?: true + idempotencyKey?: true + adminNote?: true + reviewedById?: true + reviewedAt?: true + succeededAt?: true + failedAt?: true + externalRefundId?: true + createdAt?: true + updatedAt?: true + _all?: true +} + +export type RefundAggregateArgs = { + /** + * Filter which Refund to aggregate. + */ + where?: Prisma.RefundWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Refunds to fetch. + */ + orderBy?: Prisma.RefundOrderByWithRelationInput | Prisma.RefundOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: Prisma.RefundWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Refunds 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` Refunds. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned Refunds + **/ + _count?: true | RefundCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to average + **/ + _avg?: RefundAvgAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to sum + **/ + _sum?: RefundSumAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: RefundMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: RefundMaxAggregateInputType +} + +export type GetRefundAggregateType = { + [P in keyof T & keyof AggregateRefund]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType +} + + + + +export type RefundGroupByArgs = { + where?: Prisma.RefundWhereInput + orderBy?: Prisma.RefundOrderByWithAggregationInput | Prisma.RefundOrderByWithAggregationInput[] + by: Prisma.RefundScalarFieldEnum[] | Prisma.RefundScalarFieldEnum + having?: Prisma.RefundScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: RefundCountAggregateInputType | true + _avg?: RefundAvgAggregateInputType + _sum?: RefundSumAggregateInputType + _min?: RefundMinAggregateInputType + _max?: RefundMaxAggregateInputType +} + +export type RefundGroupByOutputType = { + id: string + bookingId: string + paymentId: string | null + amount: number + currency: string + reason: $Enums.RefundReason + reportedBy: $Enums.RefundReporter + reportNote: string + initiatedBy: $Enums.RefundInitiator + status: $Enums.RefundStatus + idempotencyKey: string + adminNote: string | null + reviewedById: string | null + reviewedAt: Date | null + succeededAt: Date | null + failedAt: Date | null + externalRefundId: string | null + createdAt: Date + updatedAt: Date + _count: RefundCountAggregateOutputType | null + _avg: RefundAvgAggregateOutputType | null + _sum: RefundSumAggregateOutputType | null + _min: RefundMinAggregateOutputType | null + _max: RefundMaxAggregateOutputType | null +} + +export type GetRefundGroupByPayload = Prisma.PrismaPromise< + Array< + Prisma.PickEnumerable & + { + [P in ((keyof T) & (keyof RefundGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType + } + > + > + + + +export type RefundWhereInput = { + AND?: Prisma.RefundWhereInput | Prisma.RefundWhereInput[] + OR?: Prisma.RefundWhereInput[] + NOT?: Prisma.RefundWhereInput | Prisma.RefundWhereInput[] + id?: Prisma.StringFilter<"Refund"> | string + bookingId?: Prisma.StringFilter<"Refund"> | string + paymentId?: Prisma.StringNullableFilter<"Refund"> | string | null + amount?: Prisma.IntFilter<"Refund"> | number + currency?: Prisma.StringFilter<"Refund"> | string + reason?: Prisma.EnumRefundReasonFilter<"Refund"> | $Enums.RefundReason + reportedBy?: Prisma.EnumRefundReporterFilter<"Refund"> | $Enums.RefundReporter + reportNote?: Prisma.StringFilter<"Refund"> | string + initiatedBy?: Prisma.EnumRefundInitiatorFilter<"Refund"> | $Enums.RefundInitiator + status?: Prisma.EnumRefundStatusFilter<"Refund"> | $Enums.RefundStatus + idempotencyKey?: Prisma.StringFilter<"Refund"> | string + adminNote?: Prisma.StringNullableFilter<"Refund"> | string | null + reviewedById?: Prisma.StringNullableFilter<"Refund"> | string | null + reviewedAt?: Prisma.DateTimeNullableFilter<"Refund"> | Date | string | null + succeededAt?: Prisma.DateTimeNullableFilter<"Refund"> | Date | string | null + failedAt?: Prisma.DateTimeNullableFilter<"Refund"> | Date | string | null + externalRefundId?: Prisma.StringNullableFilter<"Refund"> | string | null + createdAt?: Prisma.DateTimeFilter<"Refund"> | Date | string + updatedAt?: Prisma.DateTimeFilter<"Refund"> | Date | string + booking?: Prisma.XOR + payment?: Prisma.XOR | null + reviewedBy?: Prisma.XOR | null +} + +export type RefundOrderByWithRelationInput = { + id?: Prisma.SortOrder + bookingId?: Prisma.SortOrder + paymentId?: Prisma.SortOrderInput | Prisma.SortOrder + amount?: Prisma.SortOrder + currency?: Prisma.SortOrder + reason?: Prisma.SortOrder + reportedBy?: Prisma.SortOrder + reportNote?: Prisma.SortOrder + initiatedBy?: Prisma.SortOrder + status?: Prisma.SortOrder + idempotencyKey?: Prisma.SortOrder + adminNote?: Prisma.SortOrderInput | Prisma.SortOrder + reviewedById?: Prisma.SortOrderInput | Prisma.SortOrder + reviewedAt?: Prisma.SortOrderInput | Prisma.SortOrder + succeededAt?: Prisma.SortOrderInput | Prisma.SortOrder + failedAt?: Prisma.SortOrderInput | Prisma.SortOrder + externalRefundId?: Prisma.SortOrderInput | Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder + booking?: Prisma.BookingOrderByWithRelationInput + payment?: Prisma.PaymentOrderByWithRelationInput + reviewedBy?: Prisma.UserOrderByWithRelationInput +} + +export type RefundWhereUniqueInput = Prisma.AtLeast<{ + id?: string + idempotencyKey?: string + AND?: Prisma.RefundWhereInput | Prisma.RefundWhereInput[] + OR?: Prisma.RefundWhereInput[] + NOT?: Prisma.RefundWhereInput | Prisma.RefundWhereInput[] + bookingId?: Prisma.StringFilter<"Refund"> | string + paymentId?: Prisma.StringNullableFilter<"Refund"> | string | null + amount?: Prisma.IntFilter<"Refund"> | number + currency?: Prisma.StringFilter<"Refund"> | string + reason?: Prisma.EnumRefundReasonFilter<"Refund"> | $Enums.RefundReason + reportedBy?: Prisma.EnumRefundReporterFilter<"Refund"> | $Enums.RefundReporter + reportNote?: Prisma.StringFilter<"Refund"> | string + initiatedBy?: Prisma.EnumRefundInitiatorFilter<"Refund"> | $Enums.RefundInitiator + status?: Prisma.EnumRefundStatusFilter<"Refund"> | $Enums.RefundStatus + adminNote?: Prisma.StringNullableFilter<"Refund"> | string | null + reviewedById?: Prisma.StringNullableFilter<"Refund"> | string | null + reviewedAt?: Prisma.DateTimeNullableFilter<"Refund"> | Date | string | null + succeededAt?: Prisma.DateTimeNullableFilter<"Refund"> | Date | string | null + failedAt?: Prisma.DateTimeNullableFilter<"Refund"> | Date | string | null + externalRefundId?: Prisma.StringNullableFilter<"Refund"> | string | null + createdAt?: Prisma.DateTimeFilter<"Refund"> | Date | string + updatedAt?: Prisma.DateTimeFilter<"Refund"> | Date | string + booking?: Prisma.XOR + payment?: Prisma.XOR | null + reviewedBy?: Prisma.XOR | null +}, "id" | "idempotencyKey"> + +export type RefundOrderByWithAggregationInput = { + id?: Prisma.SortOrder + bookingId?: Prisma.SortOrder + paymentId?: Prisma.SortOrderInput | Prisma.SortOrder + amount?: Prisma.SortOrder + currency?: Prisma.SortOrder + reason?: Prisma.SortOrder + reportedBy?: Prisma.SortOrder + reportNote?: Prisma.SortOrder + initiatedBy?: Prisma.SortOrder + status?: Prisma.SortOrder + idempotencyKey?: Prisma.SortOrder + adminNote?: Prisma.SortOrderInput | Prisma.SortOrder + reviewedById?: Prisma.SortOrderInput | Prisma.SortOrder + reviewedAt?: Prisma.SortOrderInput | Prisma.SortOrder + succeededAt?: Prisma.SortOrderInput | Prisma.SortOrder + failedAt?: Prisma.SortOrderInput | Prisma.SortOrder + externalRefundId?: Prisma.SortOrderInput | Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder + _count?: Prisma.RefundCountOrderByAggregateInput + _avg?: Prisma.RefundAvgOrderByAggregateInput + _max?: Prisma.RefundMaxOrderByAggregateInput + _min?: Prisma.RefundMinOrderByAggregateInput + _sum?: Prisma.RefundSumOrderByAggregateInput +} + +export type RefundScalarWhereWithAggregatesInput = { + AND?: Prisma.RefundScalarWhereWithAggregatesInput | Prisma.RefundScalarWhereWithAggregatesInput[] + OR?: Prisma.RefundScalarWhereWithAggregatesInput[] + NOT?: Prisma.RefundScalarWhereWithAggregatesInput | Prisma.RefundScalarWhereWithAggregatesInput[] + id?: Prisma.StringWithAggregatesFilter<"Refund"> | string + bookingId?: Prisma.StringWithAggregatesFilter<"Refund"> | string + paymentId?: Prisma.StringNullableWithAggregatesFilter<"Refund"> | string | null + amount?: Prisma.IntWithAggregatesFilter<"Refund"> | number + currency?: Prisma.StringWithAggregatesFilter<"Refund"> | string + reason?: Prisma.EnumRefundReasonWithAggregatesFilter<"Refund"> | $Enums.RefundReason + reportedBy?: Prisma.EnumRefundReporterWithAggregatesFilter<"Refund"> | $Enums.RefundReporter + reportNote?: Prisma.StringWithAggregatesFilter<"Refund"> | string + initiatedBy?: Prisma.EnumRefundInitiatorWithAggregatesFilter<"Refund"> | $Enums.RefundInitiator + status?: Prisma.EnumRefundStatusWithAggregatesFilter<"Refund"> | $Enums.RefundStatus + idempotencyKey?: Prisma.StringWithAggregatesFilter<"Refund"> | string + adminNote?: Prisma.StringNullableWithAggregatesFilter<"Refund"> | string | null + reviewedById?: Prisma.StringNullableWithAggregatesFilter<"Refund"> | string | null + reviewedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"Refund"> | Date | string | null + succeededAt?: Prisma.DateTimeNullableWithAggregatesFilter<"Refund"> | Date | string | null + failedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"Refund"> | Date | string | null + externalRefundId?: Prisma.StringNullableWithAggregatesFilter<"Refund"> | string | null + createdAt?: Prisma.DateTimeWithAggregatesFilter<"Refund"> | Date | string + updatedAt?: Prisma.DateTimeWithAggregatesFilter<"Refund"> | Date | string +} + +export type RefundCreateInput = { + id?: string + amount: number + currency?: string + reason: $Enums.RefundReason + reportedBy: $Enums.RefundReporter + reportNote: string + initiatedBy?: $Enums.RefundInitiator + status?: $Enums.RefundStatus + idempotencyKey: string + adminNote?: string | null + reviewedAt?: Date | string | null + succeededAt?: Date | string | null + failedAt?: Date | string | null + externalRefundId?: string | null + createdAt?: Date | string + updatedAt?: Date | string + booking: Prisma.BookingCreateNestedOneWithoutRefundsInput + payment?: Prisma.PaymentCreateNestedOneWithoutRefundsInput + reviewedBy?: Prisma.UserCreateNestedOneWithoutReviewedRefundsInput +} + +export type RefundUncheckedCreateInput = { + id?: string + bookingId: string + paymentId?: string | null + amount: number + currency?: string + reason: $Enums.RefundReason + reportedBy: $Enums.RefundReporter + reportNote: string + initiatedBy?: $Enums.RefundInitiator + status?: $Enums.RefundStatus + idempotencyKey: string + adminNote?: string | null + reviewedById?: string | null + reviewedAt?: Date | string | null + succeededAt?: Date | string | null + failedAt?: Date | string | null + externalRefundId?: string | null + createdAt?: Date | string + updatedAt?: Date | string +} + +export type RefundUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + amount?: Prisma.IntFieldUpdateOperationsInput | number + currency?: Prisma.StringFieldUpdateOperationsInput | string + reason?: Prisma.EnumRefundReasonFieldUpdateOperationsInput | $Enums.RefundReason + reportedBy?: Prisma.EnumRefundReporterFieldUpdateOperationsInput | $Enums.RefundReporter + reportNote?: Prisma.StringFieldUpdateOperationsInput | string + initiatedBy?: Prisma.EnumRefundInitiatorFieldUpdateOperationsInput | $Enums.RefundInitiator + status?: Prisma.EnumRefundStatusFieldUpdateOperationsInput | $Enums.RefundStatus + idempotencyKey?: Prisma.StringFieldUpdateOperationsInput | string + adminNote?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + succeededAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + externalRefundId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + booking?: Prisma.BookingUpdateOneRequiredWithoutRefundsNestedInput + payment?: Prisma.PaymentUpdateOneWithoutRefundsNestedInput + reviewedBy?: Prisma.UserUpdateOneWithoutReviewedRefundsNestedInput +} + +export type RefundUncheckedUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + bookingId?: Prisma.StringFieldUpdateOperationsInput | string + paymentId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + amount?: Prisma.IntFieldUpdateOperationsInput | number + currency?: Prisma.StringFieldUpdateOperationsInput | string + reason?: Prisma.EnumRefundReasonFieldUpdateOperationsInput | $Enums.RefundReason + reportedBy?: Prisma.EnumRefundReporterFieldUpdateOperationsInput | $Enums.RefundReporter + reportNote?: Prisma.StringFieldUpdateOperationsInput | string + initiatedBy?: Prisma.EnumRefundInitiatorFieldUpdateOperationsInput | $Enums.RefundInitiator + status?: Prisma.EnumRefundStatusFieldUpdateOperationsInput | $Enums.RefundStatus + idempotencyKey?: Prisma.StringFieldUpdateOperationsInput | string + adminNote?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedById?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + succeededAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + externalRefundId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type RefundCreateManyInput = { + id?: string + bookingId: string + paymentId?: string | null + amount: number + currency?: string + reason: $Enums.RefundReason + reportedBy: $Enums.RefundReporter + reportNote: string + initiatedBy?: $Enums.RefundInitiator + status?: $Enums.RefundStatus + idempotencyKey: string + adminNote?: string | null + reviewedById?: string | null + reviewedAt?: Date | string | null + succeededAt?: Date | string | null + failedAt?: Date | string | null + externalRefundId?: string | null + createdAt?: Date | string + updatedAt?: Date | string +} + +export type RefundUpdateManyMutationInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + amount?: Prisma.IntFieldUpdateOperationsInput | number + currency?: Prisma.StringFieldUpdateOperationsInput | string + reason?: Prisma.EnumRefundReasonFieldUpdateOperationsInput | $Enums.RefundReason + reportedBy?: Prisma.EnumRefundReporterFieldUpdateOperationsInput | $Enums.RefundReporter + reportNote?: Prisma.StringFieldUpdateOperationsInput | string + initiatedBy?: Prisma.EnumRefundInitiatorFieldUpdateOperationsInput | $Enums.RefundInitiator + status?: Prisma.EnumRefundStatusFieldUpdateOperationsInput | $Enums.RefundStatus + idempotencyKey?: Prisma.StringFieldUpdateOperationsInput | string + adminNote?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + succeededAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + externalRefundId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type RefundUncheckedUpdateManyInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + bookingId?: Prisma.StringFieldUpdateOperationsInput | string + paymentId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + amount?: Prisma.IntFieldUpdateOperationsInput | number + currency?: Prisma.StringFieldUpdateOperationsInput | string + reason?: Prisma.EnumRefundReasonFieldUpdateOperationsInput | $Enums.RefundReason + reportedBy?: Prisma.EnumRefundReporterFieldUpdateOperationsInput | $Enums.RefundReporter + reportNote?: Prisma.StringFieldUpdateOperationsInput | string + initiatedBy?: Prisma.EnumRefundInitiatorFieldUpdateOperationsInput | $Enums.RefundInitiator + status?: Prisma.EnumRefundStatusFieldUpdateOperationsInput | $Enums.RefundStatus + idempotencyKey?: Prisma.StringFieldUpdateOperationsInput | string + adminNote?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedById?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + succeededAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + externalRefundId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type RefundListRelationFilter = { + every?: Prisma.RefundWhereInput + some?: Prisma.RefundWhereInput + none?: Prisma.RefundWhereInput +} + +export type RefundOrderByRelationAggregateInput = { + _count?: Prisma.SortOrder +} + +export type RefundCountOrderByAggregateInput = { + id?: Prisma.SortOrder + bookingId?: Prisma.SortOrder + paymentId?: Prisma.SortOrder + amount?: Prisma.SortOrder + currency?: Prisma.SortOrder + reason?: Prisma.SortOrder + reportedBy?: Prisma.SortOrder + reportNote?: Prisma.SortOrder + initiatedBy?: Prisma.SortOrder + status?: Prisma.SortOrder + idempotencyKey?: Prisma.SortOrder + adminNote?: Prisma.SortOrder + reviewedById?: Prisma.SortOrder + reviewedAt?: Prisma.SortOrder + succeededAt?: Prisma.SortOrder + failedAt?: Prisma.SortOrder + externalRefundId?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder +} + +export type RefundAvgOrderByAggregateInput = { + amount?: Prisma.SortOrder +} + +export type RefundMaxOrderByAggregateInput = { + id?: Prisma.SortOrder + bookingId?: Prisma.SortOrder + paymentId?: Prisma.SortOrder + amount?: Prisma.SortOrder + currency?: Prisma.SortOrder + reason?: Prisma.SortOrder + reportedBy?: Prisma.SortOrder + reportNote?: Prisma.SortOrder + initiatedBy?: Prisma.SortOrder + status?: Prisma.SortOrder + idempotencyKey?: Prisma.SortOrder + adminNote?: Prisma.SortOrder + reviewedById?: Prisma.SortOrder + reviewedAt?: Prisma.SortOrder + succeededAt?: Prisma.SortOrder + failedAt?: Prisma.SortOrder + externalRefundId?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder +} + +export type RefundMinOrderByAggregateInput = { + id?: Prisma.SortOrder + bookingId?: Prisma.SortOrder + paymentId?: Prisma.SortOrder + amount?: Prisma.SortOrder + currency?: Prisma.SortOrder + reason?: Prisma.SortOrder + reportedBy?: Prisma.SortOrder + reportNote?: Prisma.SortOrder + initiatedBy?: Prisma.SortOrder + status?: Prisma.SortOrder + idempotencyKey?: Prisma.SortOrder + adminNote?: Prisma.SortOrder + reviewedById?: Prisma.SortOrder + reviewedAt?: Prisma.SortOrder + succeededAt?: Prisma.SortOrder + failedAt?: Prisma.SortOrder + externalRefundId?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder +} + +export type RefundSumOrderByAggregateInput = { + amount?: Prisma.SortOrder +} + +export type RefundCreateNestedManyWithoutReviewedByInput = { + create?: Prisma.XOR | Prisma.RefundCreateWithoutReviewedByInput[] | Prisma.RefundUncheckedCreateWithoutReviewedByInput[] + connectOrCreate?: Prisma.RefundCreateOrConnectWithoutReviewedByInput | Prisma.RefundCreateOrConnectWithoutReviewedByInput[] + createMany?: Prisma.RefundCreateManyReviewedByInputEnvelope + connect?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] +} + +export type RefundUncheckedCreateNestedManyWithoutReviewedByInput = { + create?: Prisma.XOR | Prisma.RefundCreateWithoutReviewedByInput[] | Prisma.RefundUncheckedCreateWithoutReviewedByInput[] + connectOrCreate?: Prisma.RefundCreateOrConnectWithoutReviewedByInput | Prisma.RefundCreateOrConnectWithoutReviewedByInput[] + createMany?: Prisma.RefundCreateManyReviewedByInputEnvelope + connect?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] +} + +export type RefundUpdateManyWithoutReviewedByNestedInput = { + create?: Prisma.XOR | Prisma.RefundCreateWithoutReviewedByInput[] | Prisma.RefundUncheckedCreateWithoutReviewedByInput[] + connectOrCreate?: Prisma.RefundCreateOrConnectWithoutReviewedByInput | Prisma.RefundCreateOrConnectWithoutReviewedByInput[] + upsert?: Prisma.RefundUpsertWithWhereUniqueWithoutReviewedByInput | Prisma.RefundUpsertWithWhereUniqueWithoutReviewedByInput[] + createMany?: Prisma.RefundCreateManyReviewedByInputEnvelope + set?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + disconnect?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + delete?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + connect?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + update?: Prisma.RefundUpdateWithWhereUniqueWithoutReviewedByInput | Prisma.RefundUpdateWithWhereUniqueWithoutReviewedByInput[] + updateMany?: Prisma.RefundUpdateManyWithWhereWithoutReviewedByInput | Prisma.RefundUpdateManyWithWhereWithoutReviewedByInput[] + deleteMany?: Prisma.RefundScalarWhereInput | Prisma.RefundScalarWhereInput[] +} + +export type RefundUncheckedUpdateManyWithoutReviewedByNestedInput = { + create?: Prisma.XOR | Prisma.RefundCreateWithoutReviewedByInput[] | Prisma.RefundUncheckedCreateWithoutReviewedByInput[] + connectOrCreate?: Prisma.RefundCreateOrConnectWithoutReviewedByInput | Prisma.RefundCreateOrConnectWithoutReviewedByInput[] + upsert?: Prisma.RefundUpsertWithWhereUniqueWithoutReviewedByInput | Prisma.RefundUpsertWithWhereUniqueWithoutReviewedByInput[] + createMany?: Prisma.RefundCreateManyReviewedByInputEnvelope + set?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + disconnect?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + delete?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + connect?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + update?: Prisma.RefundUpdateWithWhereUniqueWithoutReviewedByInput | Prisma.RefundUpdateWithWhereUniqueWithoutReviewedByInput[] + updateMany?: Prisma.RefundUpdateManyWithWhereWithoutReviewedByInput | Prisma.RefundUpdateManyWithWhereWithoutReviewedByInput[] + deleteMany?: Prisma.RefundScalarWhereInput | Prisma.RefundScalarWhereInput[] +} + +export type RefundCreateNestedManyWithoutBookingInput = { + create?: Prisma.XOR | Prisma.RefundCreateWithoutBookingInput[] | Prisma.RefundUncheckedCreateWithoutBookingInput[] + connectOrCreate?: Prisma.RefundCreateOrConnectWithoutBookingInput | Prisma.RefundCreateOrConnectWithoutBookingInput[] + createMany?: Prisma.RefundCreateManyBookingInputEnvelope + connect?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] +} + +export type RefundUncheckedCreateNestedManyWithoutBookingInput = { + create?: Prisma.XOR | Prisma.RefundCreateWithoutBookingInput[] | Prisma.RefundUncheckedCreateWithoutBookingInput[] + connectOrCreate?: Prisma.RefundCreateOrConnectWithoutBookingInput | Prisma.RefundCreateOrConnectWithoutBookingInput[] + createMany?: Prisma.RefundCreateManyBookingInputEnvelope + connect?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] +} + +export type RefundUpdateManyWithoutBookingNestedInput = { + create?: Prisma.XOR | Prisma.RefundCreateWithoutBookingInput[] | Prisma.RefundUncheckedCreateWithoutBookingInput[] + connectOrCreate?: Prisma.RefundCreateOrConnectWithoutBookingInput | Prisma.RefundCreateOrConnectWithoutBookingInput[] + upsert?: Prisma.RefundUpsertWithWhereUniqueWithoutBookingInput | Prisma.RefundUpsertWithWhereUniqueWithoutBookingInput[] + createMany?: Prisma.RefundCreateManyBookingInputEnvelope + set?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + disconnect?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + delete?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + connect?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + update?: Prisma.RefundUpdateWithWhereUniqueWithoutBookingInput | Prisma.RefundUpdateWithWhereUniqueWithoutBookingInput[] + updateMany?: Prisma.RefundUpdateManyWithWhereWithoutBookingInput | Prisma.RefundUpdateManyWithWhereWithoutBookingInput[] + deleteMany?: Prisma.RefundScalarWhereInput | Prisma.RefundScalarWhereInput[] +} + +export type RefundUncheckedUpdateManyWithoutBookingNestedInput = { + create?: Prisma.XOR | Prisma.RefundCreateWithoutBookingInput[] | Prisma.RefundUncheckedCreateWithoutBookingInput[] + connectOrCreate?: Prisma.RefundCreateOrConnectWithoutBookingInput | Prisma.RefundCreateOrConnectWithoutBookingInput[] + upsert?: Prisma.RefundUpsertWithWhereUniqueWithoutBookingInput | Prisma.RefundUpsertWithWhereUniqueWithoutBookingInput[] + createMany?: Prisma.RefundCreateManyBookingInputEnvelope + set?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + disconnect?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + delete?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + connect?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + update?: Prisma.RefundUpdateWithWhereUniqueWithoutBookingInput | Prisma.RefundUpdateWithWhereUniqueWithoutBookingInput[] + updateMany?: Prisma.RefundUpdateManyWithWhereWithoutBookingInput | Prisma.RefundUpdateManyWithWhereWithoutBookingInput[] + deleteMany?: Prisma.RefundScalarWhereInput | Prisma.RefundScalarWhereInput[] +} + +export type RefundCreateNestedManyWithoutPaymentInput = { + create?: Prisma.XOR | Prisma.RefundCreateWithoutPaymentInput[] | Prisma.RefundUncheckedCreateWithoutPaymentInput[] + connectOrCreate?: Prisma.RefundCreateOrConnectWithoutPaymentInput | Prisma.RefundCreateOrConnectWithoutPaymentInput[] + createMany?: Prisma.RefundCreateManyPaymentInputEnvelope + connect?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] +} + +export type RefundUncheckedCreateNestedManyWithoutPaymentInput = { + create?: Prisma.XOR | Prisma.RefundCreateWithoutPaymentInput[] | Prisma.RefundUncheckedCreateWithoutPaymentInput[] + connectOrCreate?: Prisma.RefundCreateOrConnectWithoutPaymentInput | Prisma.RefundCreateOrConnectWithoutPaymentInput[] + createMany?: Prisma.RefundCreateManyPaymentInputEnvelope + connect?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] +} + +export type RefundUpdateManyWithoutPaymentNestedInput = { + create?: Prisma.XOR | Prisma.RefundCreateWithoutPaymentInput[] | Prisma.RefundUncheckedCreateWithoutPaymentInput[] + connectOrCreate?: Prisma.RefundCreateOrConnectWithoutPaymentInput | Prisma.RefundCreateOrConnectWithoutPaymentInput[] + upsert?: Prisma.RefundUpsertWithWhereUniqueWithoutPaymentInput | Prisma.RefundUpsertWithWhereUniqueWithoutPaymentInput[] + createMany?: Prisma.RefundCreateManyPaymentInputEnvelope + set?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + disconnect?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + delete?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + connect?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + update?: Prisma.RefundUpdateWithWhereUniqueWithoutPaymentInput | Prisma.RefundUpdateWithWhereUniqueWithoutPaymentInput[] + updateMany?: Prisma.RefundUpdateManyWithWhereWithoutPaymentInput | Prisma.RefundUpdateManyWithWhereWithoutPaymentInput[] + deleteMany?: Prisma.RefundScalarWhereInput | Prisma.RefundScalarWhereInput[] +} + +export type RefundUncheckedUpdateManyWithoutPaymentNestedInput = { + create?: Prisma.XOR | Prisma.RefundCreateWithoutPaymentInput[] | Prisma.RefundUncheckedCreateWithoutPaymentInput[] + connectOrCreate?: Prisma.RefundCreateOrConnectWithoutPaymentInput | Prisma.RefundCreateOrConnectWithoutPaymentInput[] + upsert?: Prisma.RefundUpsertWithWhereUniqueWithoutPaymentInput | Prisma.RefundUpsertWithWhereUniqueWithoutPaymentInput[] + createMany?: Prisma.RefundCreateManyPaymentInputEnvelope + set?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + disconnect?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + delete?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + connect?: Prisma.RefundWhereUniqueInput | Prisma.RefundWhereUniqueInput[] + update?: Prisma.RefundUpdateWithWhereUniqueWithoutPaymentInput | Prisma.RefundUpdateWithWhereUniqueWithoutPaymentInput[] + updateMany?: Prisma.RefundUpdateManyWithWhereWithoutPaymentInput | Prisma.RefundUpdateManyWithWhereWithoutPaymentInput[] + deleteMany?: Prisma.RefundScalarWhereInput | Prisma.RefundScalarWhereInput[] +} + +export type EnumRefundReasonFieldUpdateOperationsInput = { + set?: $Enums.RefundReason +} + +export type EnumRefundReporterFieldUpdateOperationsInput = { + set?: $Enums.RefundReporter +} + +export type EnumRefundInitiatorFieldUpdateOperationsInput = { + set?: $Enums.RefundInitiator +} + +export type EnumRefundStatusFieldUpdateOperationsInput = { + set?: $Enums.RefundStatus +} + +export type RefundCreateWithoutReviewedByInput = { + id?: string + amount: number + currency?: string + reason: $Enums.RefundReason + reportedBy: $Enums.RefundReporter + reportNote: string + initiatedBy?: $Enums.RefundInitiator + status?: $Enums.RefundStatus + idempotencyKey: string + adminNote?: string | null + reviewedAt?: Date | string | null + succeededAt?: Date | string | null + failedAt?: Date | string | null + externalRefundId?: string | null + createdAt?: Date | string + updatedAt?: Date | string + booking: Prisma.BookingCreateNestedOneWithoutRefundsInput + payment?: Prisma.PaymentCreateNestedOneWithoutRefundsInput +} + +export type RefundUncheckedCreateWithoutReviewedByInput = { + id?: string + bookingId: string + paymentId?: string | null + amount: number + currency?: string + reason: $Enums.RefundReason + reportedBy: $Enums.RefundReporter + reportNote: string + initiatedBy?: $Enums.RefundInitiator + status?: $Enums.RefundStatus + idempotencyKey: string + adminNote?: string | null + reviewedAt?: Date | string | null + succeededAt?: Date | string | null + failedAt?: Date | string | null + externalRefundId?: string | null + createdAt?: Date | string + updatedAt?: Date | string +} + +export type RefundCreateOrConnectWithoutReviewedByInput = { + where: Prisma.RefundWhereUniqueInput + create: Prisma.XOR +} + +export type RefundCreateManyReviewedByInputEnvelope = { + data: Prisma.RefundCreateManyReviewedByInput | Prisma.RefundCreateManyReviewedByInput[] + skipDuplicates?: boolean +} + +export type RefundUpsertWithWhereUniqueWithoutReviewedByInput = { + where: Prisma.RefundWhereUniqueInput + update: Prisma.XOR + create: Prisma.XOR +} + +export type RefundUpdateWithWhereUniqueWithoutReviewedByInput = { + where: Prisma.RefundWhereUniqueInput + data: Prisma.XOR +} + +export type RefundUpdateManyWithWhereWithoutReviewedByInput = { + where: Prisma.RefundScalarWhereInput + data: Prisma.XOR +} + +export type RefundScalarWhereInput = { + AND?: Prisma.RefundScalarWhereInput | Prisma.RefundScalarWhereInput[] + OR?: Prisma.RefundScalarWhereInput[] + NOT?: Prisma.RefundScalarWhereInput | Prisma.RefundScalarWhereInput[] + id?: Prisma.StringFilter<"Refund"> | string + bookingId?: Prisma.StringFilter<"Refund"> | string + paymentId?: Prisma.StringNullableFilter<"Refund"> | string | null + amount?: Prisma.IntFilter<"Refund"> | number + currency?: Prisma.StringFilter<"Refund"> | string + reason?: Prisma.EnumRefundReasonFilter<"Refund"> | $Enums.RefundReason + reportedBy?: Prisma.EnumRefundReporterFilter<"Refund"> | $Enums.RefundReporter + reportNote?: Prisma.StringFilter<"Refund"> | string + initiatedBy?: Prisma.EnumRefundInitiatorFilter<"Refund"> | $Enums.RefundInitiator + status?: Prisma.EnumRefundStatusFilter<"Refund"> | $Enums.RefundStatus + idempotencyKey?: Prisma.StringFilter<"Refund"> | string + adminNote?: Prisma.StringNullableFilter<"Refund"> | string | null + reviewedById?: Prisma.StringNullableFilter<"Refund"> | string | null + reviewedAt?: Prisma.DateTimeNullableFilter<"Refund"> | Date | string | null + succeededAt?: Prisma.DateTimeNullableFilter<"Refund"> | Date | string | null + failedAt?: Prisma.DateTimeNullableFilter<"Refund"> | Date | string | null + externalRefundId?: Prisma.StringNullableFilter<"Refund"> | string | null + createdAt?: Prisma.DateTimeFilter<"Refund"> | Date | string + updatedAt?: Prisma.DateTimeFilter<"Refund"> | Date | string +} + +export type RefundCreateWithoutBookingInput = { + id?: string + amount: number + currency?: string + reason: $Enums.RefundReason + reportedBy: $Enums.RefundReporter + reportNote: string + initiatedBy?: $Enums.RefundInitiator + status?: $Enums.RefundStatus + idempotencyKey: string + adminNote?: string | null + reviewedAt?: Date | string | null + succeededAt?: Date | string | null + failedAt?: Date | string | null + externalRefundId?: string | null + createdAt?: Date | string + updatedAt?: Date | string + payment?: Prisma.PaymentCreateNestedOneWithoutRefundsInput + reviewedBy?: Prisma.UserCreateNestedOneWithoutReviewedRefundsInput +} + +export type RefundUncheckedCreateWithoutBookingInput = { + id?: string + paymentId?: string | null + amount: number + currency?: string + reason: $Enums.RefundReason + reportedBy: $Enums.RefundReporter + reportNote: string + initiatedBy?: $Enums.RefundInitiator + status?: $Enums.RefundStatus + idempotencyKey: string + adminNote?: string | null + reviewedById?: string | null + reviewedAt?: Date | string | null + succeededAt?: Date | string | null + failedAt?: Date | string | null + externalRefundId?: string | null + createdAt?: Date | string + updatedAt?: Date | string +} + +export type RefundCreateOrConnectWithoutBookingInput = { + where: Prisma.RefundWhereUniqueInput + create: Prisma.XOR +} + +export type RefundCreateManyBookingInputEnvelope = { + data: Prisma.RefundCreateManyBookingInput | Prisma.RefundCreateManyBookingInput[] + skipDuplicates?: boolean +} + +export type RefundUpsertWithWhereUniqueWithoutBookingInput = { + where: Prisma.RefundWhereUniqueInput + update: Prisma.XOR + create: Prisma.XOR +} + +export type RefundUpdateWithWhereUniqueWithoutBookingInput = { + where: Prisma.RefundWhereUniqueInput + data: Prisma.XOR +} + +export type RefundUpdateManyWithWhereWithoutBookingInput = { + where: Prisma.RefundScalarWhereInput + data: Prisma.XOR +} + +export type RefundCreateWithoutPaymentInput = { + id?: string + amount: number + currency?: string + reason: $Enums.RefundReason + reportedBy: $Enums.RefundReporter + reportNote: string + initiatedBy?: $Enums.RefundInitiator + status?: $Enums.RefundStatus + idempotencyKey: string + adminNote?: string | null + reviewedAt?: Date | string | null + succeededAt?: Date | string | null + failedAt?: Date | string | null + externalRefundId?: string | null + createdAt?: Date | string + updatedAt?: Date | string + booking: Prisma.BookingCreateNestedOneWithoutRefundsInput + reviewedBy?: Prisma.UserCreateNestedOneWithoutReviewedRefundsInput +} + +export type RefundUncheckedCreateWithoutPaymentInput = { + id?: string + bookingId: string + amount: number + currency?: string + reason: $Enums.RefundReason + reportedBy: $Enums.RefundReporter + reportNote: string + initiatedBy?: $Enums.RefundInitiator + status?: $Enums.RefundStatus + idempotencyKey: string + adminNote?: string | null + reviewedById?: string | null + reviewedAt?: Date | string | null + succeededAt?: Date | string | null + failedAt?: Date | string | null + externalRefundId?: string | null + createdAt?: Date | string + updatedAt?: Date | string +} + +export type RefundCreateOrConnectWithoutPaymentInput = { + where: Prisma.RefundWhereUniqueInput + create: Prisma.XOR +} + +export type RefundCreateManyPaymentInputEnvelope = { + data: Prisma.RefundCreateManyPaymentInput | Prisma.RefundCreateManyPaymentInput[] + skipDuplicates?: boolean +} + +export type RefundUpsertWithWhereUniqueWithoutPaymentInput = { + where: Prisma.RefundWhereUniqueInput + update: Prisma.XOR + create: Prisma.XOR +} + +export type RefundUpdateWithWhereUniqueWithoutPaymentInput = { + where: Prisma.RefundWhereUniqueInput + data: Prisma.XOR +} + +export type RefundUpdateManyWithWhereWithoutPaymentInput = { + where: Prisma.RefundScalarWhereInput + data: Prisma.XOR +} + +export type RefundCreateManyReviewedByInput = { + id?: string + bookingId: string + paymentId?: string | null + amount: number + currency?: string + reason: $Enums.RefundReason + reportedBy: $Enums.RefundReporter + reportNote: string + initiatedBy?: $Enums.RefundInitiator + status?: $Enums.RefundStatus + idempotencyKey: string + adminNote?: string | null + reviewedAt?: Date | string | null + succeededAt?: Date | string | null + failedAt?: Date | string | null + externalRefundId?: string | null + createdAt?: Date | string + updatedAt?: Date | string +} + +export type RefundUpdateWithoutReviewedByInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + amount?: Prisma.IntFieldUpdateOperationsInput | number + currency?: Prisma.StringFieldUpdateOperationsInput | string + reason?: Prisma.EnumRefundReasonFieldUpdateOperationsInput | $Enums.RefundReason + reportedBy?: Prisma.EnumRefundReporterFieldUpdateOperationsInput | $Enums.RefundReporter + reportNote?: Prisma.StringFieldUpdateOperationsInput | string + initiatedBy?: Prisma.EnumRefundInitiatorFieldUpdateOperationsInput | $Enums.RefundInitiator + status?: Prisma.EnumRefundStatusFieldUpdateOperationsInput | $Enums.RefundStatus + idempotencyKey?: Prisma.StringFieldUpdateOperationsInput | string + adminNote?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + succeededAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + externalRefundId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + booking?: Prisma.BookingUpdateOneRequiredWithoutRefundsNestedInput + payment?: Prisma.PaymentUpdateOneWithoutRefundsNestedInput +} + +export type RefundUncheckedUpdateWithoutReviewedByInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + bookingId?: Prisma.StringFieldUpdateOperationsInput | string + paymentId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + amount?: Prisma.IntFieldUpdateOperationsInput | number + currency?: Prisma.StringFieldUpdateOperationsInput | string + reason?: Prisma.EnumRefundReasonFieldUpdateOperationsInput | $Enums.RefundReason + reportedBy?: Prisma.EnumRefundReporterFieldUpdateOperationsInput | $Enums.RefundReporter + reportNote?: Prisma.StringFieldUpdateOperationsInput | string + initiatedBy?: Prisma.EnumRefundInitiatorFieldUpdateOperationsInput | $Enums.RefundInitiator + status?: Prisma.EnumRefundStatusFieldUpdateOperationsInput | $Enums.RefundStatus + idempotencyKey?: Prisma.StringFieldUpdateOperationsInput | string + adminNote?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + succeededAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + externalRefundId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type RefundUncheckedUpdateManyWithoutReviewedByInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + bookingId?: Prisma.StringFieldUpdateOperationsInput | string + paymentId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + amount?: Prisma.IntFieldUpdateOperationsInput | number + currency?: Prisma.StringFieldUpdateOperationsInput | string + reason?: Prisma.EnumRefundReasonFieldUpdateOperationsInput | $Enums.RefundReason + reportedBy?: Prisma.EnumRefundReporterFieldUpdateOperationsInput | $Enums.RefundReporter + reportNote?: Prisma.StringFieldUpdateOperationsInput | string + initiatedBy?: Prisma.EnumRefundInitiatorFieldUpdateOperationsInput | $Enums.RefundInitiator + status?: Prisma.EnumRefundStatusFieldUpdateOperationsInput | $Enums.RefundStatus + idempotencyKey?: Prisma.StringFieldUpdateOperationsInput | string + adminNote?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + succeededAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + externalRefundId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type RefundCreateManyBookingInput = { + id?: string + paymentId?: string | null + amount: number + currency?: string + reason: $Enums.RefundReason + reportedBy: $Enums.RefundReporter + reportNote: string + initiatedBy?: $Enums.RefundInitiator + status?: $Enums.RefundStatus + idempotencyKey: string + adminNote?: string | null + reviewedById?: string | null + reviewedAt?: Date | string | null + succeededAt?: Date | string | null + failedAt?: Date | string | null + externalRefundId?: string | null + createdAt?: Date | string + updatedAt?: Date | string +} + +export type RefundUpdateWithoutBookingInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + amount?: Prisma.IntFieldUpdateOperationsInput | number + currency?: Prisma.StringFieldUpdateOperationsInput | string + reason?: Prisma.EnumRefundReasonFieldUpdateOperationsInput | $Enums.RefundReason + reportedBy?: Prisma.EnumRefundReporterFieldUpdateOperationsInput | $Enums.RefundReporter + reportNote?: Prisma.StringFieldUpdateOperationsInput | string + initiatedBy?: Prisma.EnumRefundInitiatorFieldUpdateOperationsInput | $Enums.RefundInitiator + status?: Prisma.EnumRefundStatusFieldUpdateOperationsInput | $Enums.RefundStatus + idempotencyKey?: Prisma.StringFieldUpdateOperationsInput | string + adminNote?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + succeededAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + externalRefundId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + payment?: Prisma.PaymentUpdateOneWithoutRefundsNestedInput + reviewedBy?: Prisma.UserUpdateOneWithoutReviewedRefundsNestedInput +} + +export type RefundUncheckedUpdateWithoutBookingInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + paymentId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + amount?: Prisma.IntFieldUpdateOperationsInput | number + currency?: Prisma.StringFieldUpdateOperationsInput | string + reason?: Prisma.EnumRefundReasonFieldUpdateOperationsInput | $Enums.RefundReason + reportedBy?: Prisma.EnumRefundReporterFieldUpdateOperationsInput | $Enums.RefundReporter + reportNote?: Prisma.StringFieldUpdateOperationsInput | string + initiatedBy?: Prisma.EnumRefundInitiatorFieldUpdateOperationsInput | $Enums.RefundInitiator + status?: Prisma.EnumRefundStatusFieldUpdateOperationsInput | $Enums.RefundStatus + idempotencyKey?: Prisma.StringFieldUpdateOperationsInput | string + adminNote?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedById?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + succeededAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + externalRefundId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type RefundUncheckedUpdateManyWithoutBookingInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + paymentId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + amount?: Prisma.IntFieldUpdateOperationsInput | number + currency?: Prisma.StringFieldUpdateOperationsInput | string + reason?: Prisma.EnumRefundReasonFieldUpdateOperationsInput | $Enums.RefundReason + reportedBy?: Prisma.EnumRefundReporterFieldUpdateOperationsInput | $Enums.RefundReporter + reportNote?: Prisma.StringFieldUpdateOperationsInput | string + initiatedBy?: Prisma.EnumRefundInitiatorFieldUpdateOperationsInput | $Enums.RefundInitiator + status?: Prisma.EnumRefundStatusFieldUpdateOperationsInput | $Enums.RefundStatus + idempotencyKey?: Prisma.StringFieldUpdateOperationsInput | string + adminNote?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedById?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + succeededAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + externalRefundId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type RefundCreateManyPaymentInput = { + id?: string + bookingId: string + amount: number + currency?: string + reason: $Enums.RefundReason + reportedBy: $Enums.RefundReporter + reportNote: string + initiatedBy?: $Enums.RefundInitiator + status?: $Enums.RefundStatus + idempotencyKey: string + adminNote?: string | null + reviewedById?: string | null + reviewedAt?: Date | string | null + succeededAt?: Date | string | null + failedAt?: Date | string | null + externalRefundId?: string | null + createdAt?: Date | string + updatedAt?: Date | string +} + +export type RefundUpdateWithoutPaymentInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + amount?: Prisma.IntFieldUpdateOperationsInput | number + currency?: Prisma.StringFieldUpdateOperationsInput | string + reason?: Prisma.EnumRefundReasonFieldUpdateOperationsInput | $Enums.RefundReason + reportedBy?: Prisma.EnumRefundReporterFieldUpdateOperationsInput | $Enums.RefundReporter + reportNote?: Prisma.StringFieldUpdateOperationsInput | string + initiatedBy?: Prisma.EnumRefundInitiatorFieldUpdateOperationsInput | $Enums.RefundInitiator + status?: Prisma.EnumRefundStatusFieldUpdateOperationsInput | $Enums.RefundStatus + idempotencyKey?: Prisma.StringFieldUpdateOperationsInput | string + adminNote?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + succeededAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + externalRefundId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + booking?: Prisma.BookingUpdateOneRequiredWithoutRefundsNestedInput + reviewedBy?: Prisma.UserUpdateOneWithoutReviewedRefundsNestedInput +} + +export type RefundUncheckedUpdateWithoutPaymentInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + bookingId?: Prisma.StringFieldUpdateOperationsInput | string + amount?: Prisma.IntFieldUpdateOperationsInput | number + currency?: Prisma.StringFieldUpdateOperationsInput | string + reason?: Prisma.EnumRefundReasonFieldUpdateOperationsInput | $Enums.RefundReason + reportedBy?: Prisma.EnumRefundReporterFieldUpdateOperationsInput | $Enums.RefundReporter + reportNote?: Prisma.StringFieldUpdateOperationsInput | string + initiatedBy?: Prisma.EnumRefundInitiatorFieldUpdateOperationsInput | $Enums.RefundInitiator + status?: Prisma.EnumRefundStatusFieldUpdateOperationsInput | $Enums.RefundStatus + idempotencyKey?: Prisma.StringFieldUpdateOperationsInput | string + adminNote?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedById?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + succeededAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + externalRefundId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type RefundUncheckedUpdateManyWithoutPaymentInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + bookingId?: Prisma.StringFieldUpdateOperationsInput | string + amount?: Prisma.IntFieldUpdateOperationsInput | number + currency?: Prisma.StringFieldUpdateOperationsInput | string + reason?: Prisma.EnumRefundReasonFieldUpdateOperationsInput | $Enums.RefundReason + reportedBy?: Prisma.EnumRefundReporterFieldUpdateOperationsInput | $Enums.RefundReporter + reportNote?: Prisma.StringFieldUpdateOperationsInput | string + initiatedBy?: Prisma.EnumRefundInitiatorFieldUpdateOperationsInput | $Enums.RefundInitiator + status?: Prisma.EnumRefundStatusFieldUpdateOperationsInput | $Enums.RefundStatus + idempotencyKey?: Prisma.StringFieldUpdateOperationsInput | string + adminNote?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedById?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + reviewedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + succeededAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + externalRefundId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + + + +export type RefundSelect = runtime.Types.Extensions.GetSelect<{ + id?: boolean + bookingId?: boolean + paymentId?: boolean + amount?: boolean + currency?: boolean + reason?: boolean + reportedBy?: boolean + reportNote?: boolean + initiatedBy?: boolean + status?: boolean + idempotencyKey?: boolean + adminNote?: boolean + reviewedById?: boolean + reviewedAt?: boolean + succeededAt?: boolean + failedAt?: boolean + externalRefundId?: boolean + createdAt?: boolean + updatedAt?: boolean + booking?: boolean | Prisma.BookingDefaultArgs + payment?: boolean | Prisma.Refund$paymentArgs + reviewedBy?: boolean | Prisma.Refund$reviewedByArgs +}, ExtArgs["result"]["refund"]> + +export type RefundSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + bookingId?: boolean + paymentId?: boolean + amount?: boolean + currency?: boolean + reason?: boolean + reportedBy?: boolean + reportNote?: boolean + initiatedBy?: boolean + status?: boolean + idempotencyKey?: boolean + adminNote?: boolean + reviewedById?: boolean + reviewedAt?: boolean + succeededAt?: boolean + failedAt?: boolean + externalRefundId?: boolean + createdAt?: boolean + updatedAt?: boolean + booking?: boolean | Prisma.BookingDefaultArgs + payment?: boolean | Prisma.Refund$paymentArgs + reviewedBy?: boolean | Prisma.Refund$reviewedByArgs +}, ExtArgs["result"]["refund"]> + +export type RefundSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + bookingId?: boolean + paymentId?: boolean + amount?: boolean + currency?: boolean + reason?: boolean + reportedBy?: boolean + reportNote?: boolean + initiatedBy?: boolean + status?: boolean + idempotencyKey?: boolean + adminNote?: boolean + reviewedById?: boolean + reviewedAt?: boolean + succeededAt?: boolean + failedAt?: boolean + externalRefundId?: boolean + createdAt?: boolean + updatedAt?: boolean + booking?: boolean | Prisma.BookingDefaultArgs + payment?: boolean | Prisma.Refund$paymentArgs + reviewedBy?: boolean | Prisma.Refund$reviewedByArgs +}, ExtArgs["result"]["refund"]> + +export type RefundSelectScalar = { + id?: boolean + bookingId?: boolean + paymentId?: boolean + amount?: boolean + currency?: boolean + reason?: boolean + reportedBy?: boolean + reportNote?: boolean + initiatedBy?: boolean + status?: boolean + idempotencyKey?: boolean + adminNote?: boolean + reviewedById?: boolean + reviewedAt?: boolean + succeededAt?: boolean + failedAt?: boolean + externalRefundId?: boolean + createdAt?: boolean + updatedAt?: boolean +} + +export type RefundOmit = runtime.Types.Extensions.GetOmit<"id" | "bookingId" | "paymentId" | "amount" | "currency" | "reason" | "reportedBy" | "reportNote" | "initiatedBy" | "status" | "idempotencyKey" | "adminNote" | "reviewedById" | "reviewedAt" | "succeededAt" | "failedAt" | "externalRefundId" | "createdAt" | "updatedAt", ExtArgs["result"]["refund"]> +export type RefundInclude = { + booking?: boolean | Prisma.BookingDefaultArgs + payment?: boolean | Prisma.Refund$paymentArgs + reviewedBy?: boolean | Prisma.Refund$reviewedByArgs +} +export type RefundIncludeCreateManyAndReturn = { + booking?: boolean | Prisma.BookingDefaultArgs + payment?: boolean | Prisma.Refund$paymentArgs + reviewedBy?: boolean | Prisma.Refund$reviewedByArgs +} +export type RefundIncludeUpdateManyAndReturn = { + booking?: boolean | Prisma.BookingDefaultArgs + payment?: boolean | Prisma.Refund$paymentArgs + reviewedBy?: boolean | Prisma.Refund$reviewedByArgs +} + +export type $RefundPayload = { + name: "Refund" + objects: { + booking: Prisma.$BookingPayload + payment: Prisma.$PaymentPayload | null + reviewedBy: Prisma.$UserPayload | null + } + scalars: runtime.Types.Extensions.GetPayloadResult<{ + id: string + bookingId: string + /** + * Payment yang di-refund. Opsional di MVP (manual transfer bisa tidak + * terikat ke Payment row tertentu); wajib saat integrasi Midtrans (R-4). + */ + paymentId: string | null + /** + * Nominal refund dalam satuan terkecil (IDR rupiah, integer). Boleh < total + * payment untuk partial. Service layer enforce SUM(SUCCEEDED) <= payment.amount. + */ + amount: number + currency: string + reason: $Enums.RefundReason + /** + * Siapa yang melaporkan kebutuhan refund ini ke admin. + */ + reportedBy: $Enums.RefundReporter + /** + * Isi laporan dari peserta/organizer yang admin terima (mis. WA, email). + */ + reportNote: string + /** + * Pihak yang membuat record di sistem. Di MVP selalu ADMIN; saat self-service + * nanti USER/ORGANIZER, dan SYSTEM untuk auto-trigger dari trip dibatalkan. + */ + initiatedBy: $Enums.RefundInitiator + status: $Enums.RefundStatus + /** + * Idempotency key, dipakai saat panggil Midtrans Refund API di R-4. Generate + * sekali saat create supaya retry gateway tidak double-refund. + */ + idempotencyKey: string + /** + * Catatan admin: alasan tolak, referensi transfer manual, dst. Bebas teks. + */ + adminNote: string | null + /** + * Admin yang terakhir mengubah status (approve/reject/mark-succeeded/failed). + */ + reviewedById: string | null + reviewedAt: Date | null + succeededAt: Date | null + failedAt: Date | null + /** + * ID refund di gateway (mis. Midtrans refund_id). Kosong untuk manual transfer. + */ + externalRefundId: string | null + createdAt: Date + updatedAt: Date + }, ExtArgs["result"]["refund"]> + composites: {} +} + +export type RefundGetPayload = runtime.Types.Result.GetResult + +export type RefundCountArgs = + Omit & { + select?: RefundCountAggregateInputType | true + } + +export interface RefundDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['Refund'], meta: { name: 'Refund' } } + /** + * Find zero or one Refund that matches the filter. + * @param {RefundFindUniqueArgs} args - Arguments to find a Refund + * @example + * // Get one Refund + * const refund = await prisma.refund.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__RefundClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one Refund that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {RefundFindUniqueOrThrowArgs} args - Arguments to find a Refund + * @example + * // Get one Refund + * const refund = await prisma.refund.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__RefundClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first Refund 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 {RefundFindFirstArgs} args - Arguments to find a Refund + * @example + * // Get one Refund + * const refund = await prisma.refund.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__RefundClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first Refund 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 {RefundFindFirstOrThrowArgs} args - Arguments to find a Refund + * @example + * // Get one Refund + * const refund = await prisma.refund.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__RefundClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more Refunds 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 {RefundFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all Refunds + * const refunds = await prisma.refund.findMany() + * + * // Get first 10 Refunds + * const refunds = await prisma.refund.findMany({ take: 10 }) + * + * // Only select the `id` + * const refundWithIdOnly = await prisma.refund.findMany({ select: { id: true } }) + * + */ + findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> + + /** + * Create a Refund. + * @param {RefundCreateArgs} args - Arguments to create a Refund. + * @example + * // Create one Refund + * const Refund = await prisma.refund.create({ + * data: { + * // ... data to create a Refund + * } + * }) + * + */ + create(args: Prisma.SelectSubset>): Prisma.Prisma__RefundClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many Refunds. + * @param {RefundCreateManyArgs} args - Arguments to create many Refunds. + * @example + * // Create many Refunds + * const refund = await prisma.refund.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Create many Refunds and returns the data saved in the database. + * @param {RefundCreateManyAndReturnArgs} args - Arguments to create many Refunds. + * @example + * // Create many Refunds + * const refund = await prisma.refund.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many Refunds and only return the `id` + * const refundWithIdOnly = await prisma.refund.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 Refund. + * @param {RefundDeleteArgs} args - Arguments to delete one Refund. + * @example + * // Delete one Refund + * const Refund = await prisma.refund.delete({ + * where: { + * // ... filter to delete one Refund + * } + * }) + * + */ + delete(args: Prisma.SelectSubset>): Prisma.Prisma__RefundClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one Refund. + * @param {RefundUpdateArgs} args - Arguments to update one Refund. + * @example + * // Update one Refund + * const refund = await prisma.refund.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: Prisma.SelectSubset>): Prisma.Prisma__RefundClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more Refunds. + * @param {RefundDeleteManyArgs} args - Arguments to filter Refunds to delete. + * @example + * // Delete a few Refunds + * const { count } = await prisma.refund.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Refunds. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {RefundUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many Refunds + * const refund = await prisma.refund.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Refunds and returns the data updated in the database. + * @param {RefundUpdateManyAndReturnArgs} args - Arguments to update many Refunds. + * @example + * // Update many Refunds + * const refund = await prisma.refund.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more Refunds and only return the `id` + * const refundWithIdOnly = await prisma.refund.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 Refund. + * @param {RefundUpsertArgs} args - Arguments to update or create a Refund. + * @example + * // Update or create a Refund + * const refund = await prisma.refund.upsert({ + * create: { + * // ... data to create a Refund + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the Refund we want to update + * } + * }) + */ + upsert(args: Prisma.SelectSubset>): Prisma.Prisma__RefundClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of Refunds. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {RefundCountArgs} args - Arguments to filter Refunds to count. + * @example + * // Count the number of Refunds + * const count = await prisma.refund.count({ + * where: { + * // ... the filter for the Refunds 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 Refund. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {RefundAggregateArgs} 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 Refund. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {RefundGroupByArgs} 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 RefundGroupByArgs, + HasSelectOrTake extends Prisma.Or< + Prisma.Extends<'skip', Prisma.Keys>, + Prisma.Extends<'take', Prisma.Keys> + >, + OrderByArg extends Prisma.True extends HasSelectOrTake + ? { orderBy: RefundGroupByArgs['orderBy'] } + : { orderBy?: RefundGroupByArgs['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 ? GetRefundGroupByPayload : Prisma.PrismaPromise +/** + * Fields of the Refund model + */ +readonly fields: RefundFieldRefs; +} + +/** + * The delegate class that acts as a "Promise-like" for Refund. + * 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__RefundClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + booking = {}>(args?: Prisma.Subset>): Prisma.Prisma__BookingClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> + payment = {}>(args?: Prisma.Subset>): Prisma.Prisma__PaymentClient, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + reviewedBy = {}>(args?: Prisma.Subset>): Prisma.Prisma__UserClient, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + /** + * 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 Refund model + */ +export interface RefundFieldRefs { + readonly id: Prisma.FieldRef<"Refund", 'String'> + readonly bookingId: Prisma.FieldRef<"Refund", 'String'> + readonly paymentId: Prisma.FieldRef<"Refund", 'String'> + readonly amount: Prisma.FieldRef<"Refund", 'Int'> + readonly currency: Prisma.FieldRef<"Refund", 'String'> + readonly reason: Prisma.FieldRef<"Refund", 'RefundReason'> + readonly reportedBy: Prisma.FieldRef<"Refund", 'RefundReporter'> + readonly reportNote: Prisma.FieldRef<"Refund", 'String'> + readonly initiatedBy: Prisma.FieldRef<"Refund", 'RefundInitiator'> + readonly status: Prisma.FieldRef<"Refund", 'RefundStatus'> + readonly idempotencyKey: Prisma.FieldRef<"Refund", 'String'> + readonly adminNote: Prisma.FieldRef<"Refund", 'String'> + readonly reviewedById: Prisma.FieldRef<"Refund", 'String'> + readonly reviewedAt: Prisma.FieldRef<"Refund", 'DateTime'> + readonly succeededAt: Prisma.FieldRef<"Refund", 'DateTime'> + readonly failedAt: Prisma.FieldRef<"Refund", 'DateTime'> + readonly externalRefundId: Prisma.FieldRef<"Refund", 'String'> + readonly createdAt: Prisma.FieldRef<"Refund", 'DateTime'> + readonly updatedAt: Prisma.FieldRef<"Refund", 'DateTime'> +} + + +// Custom InputTypes +/** + * Refund findUnique + */ +export type RefundFindUniqueArgs = { + /** + * Select specific fields to fetch from the Refund + */ + select?: Prisma.RefundSelect | null + /** + * Omit specific fields from the Refund + */ + omit?: Prisma.RefundOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.RefundInclude | null + /** + * Filter, which Refund to fetch. + */ + where: Prisma.RefundWhereUniqueInput +} + +/** + * Refund findUniqueOrThrow + */ +export type RefundFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the Refund + */ + select?: Prisma.RefundSelect | null + /** + * Omit specific fields from the Refund + */ + omit?: Prisma.RefundOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.RefundInclude | null + /** + * Filter, which Refund to fetch. + */ + where: Prisma.RefundWhereUniqueInput +} + +/** + * Refund findFirst + */ +export type RefundFindFirstArgs = { + /** + * Select specific fields to fetch from the Refund + */ + select?: Prisma.RefundSelect | null + /** + * Omit specific fields from the Refund + */ + omit?: Prisma.RefundOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.RefundInclude | null + /** + * Filter, which Refund to fetch. + */ + where?: Prisma.RefundWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Refunds to fetch. + */ + orderBy?: Prisma.RefundOrderByWithRelationInput | Prisma.RefundOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for Refunds. + */ + cursor?: Prisma.RefundWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Refunds 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` Refunds. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Refunds. + */ + distinct?: Prisma.RefundScalarFieldEnum | Prisma.RefundScalarFieldEnum[] +} + +/** + * Refund findFirstOrThrow + */ +export type RefundFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the Refund + */ + select?: Prisma.RefundSelect | null + /** + * Omit specific fields from the Refund + */ + omit?: Prisma.RefundOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.RefundInclude | null + /** + * Filter, which Refund to fetch. + */ + where?: Prisma.RefundWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Refunds to fetch. + */ + orderBy?: Prisma.RefundOrderByWithRelationInput | Prisma.RefundOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for Refunds. + */ + cursor?: Prisma.RefundWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Refunds 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` Refunds. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Refunds. + */ + distinct?: Prisma.RefundScalarFieldEnum | Prisma.RefundScalarFieldEnum[] +} + +/** + * Refund findMany + */ +export type RefundFindManyArgs = { + /** + * Select specific fields to fetch from the Refund + */ + select?: Prisma.RefundSelect | null + /** + * Omit specific fields from the Refund + */ + omit?: Prisma.RefundOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.RefundInclude | null + /** + * Filter, which Refunds to fetch. + */ + where?: Prisma.RefundWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of Refunds to fetch. + */ + orderBy?: Prisma.RefundOrderByWithRelationInput | Prisma.RefundOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing Refunds. + */ + cursor?: Prisma.RefundWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` Refunds 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` Refunds. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of Refunds. + */ + distinct?: Prisma.RefundScalarFieldEnum | Prisma.RefundScalarFieldEnum[] +} + +/** + * Refund create + */ +export type RefundCreateArgs = { + /** + * Select specific fields to fetch from the Refund + */ + select?: Prisma.RefundSelect | null + /** + * Omit specific fields from the Refund + */ + omit?: Prisma.RefundOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.RefundInclude | null + /** + * The data needed to create a Refund. + */ + data: Prisma.XOR +} + +/** + * Refund createMany + */ +export type RefundCreateManyArgs = { + /** + * The data used to create many Refunds. + */ + data: Prisma.RefundCreateManyInput | Prisma.RefundCreateManyInput[] + skipDuplicates?: boolean +} + +/** + * Refund createManyAndReturn + */ +export type RefundCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the Refund + */ + select?: Prisma.RefundSelectCreateManyAndReturn | null + /** + * Omit specific fields from the Refund + */ + omit?: Prisma.RefundOmit | null + /** + * The data used to create many Refunds. + */ + data: Prisma.RefundCreateManyInput | Prisma.RefundCreateManyInput[] + skipDuplicates?: boolean + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.RefundIncludeCreateManyAndReturn | null +} + +/** + * Refund update + */ +export type RefundUpdateArgs = { + /** + * Select specific fields to fetch from the Refund + */ + select?: Prisma.RefundSelect | null + /** + * Omit specific fields from the Refund + */ + omit?: Prisma.RefundOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.RefundInclude | null + /** + * The data needed to update a Refund. + */ + data: Prisma.XOR + /** + * Choose, which Refund to update. + */ + where: Prisma.RefundWhereUniqueInput +} + +/** + * Refund updateMany + */ +export type RefundUpdateManyArgs = { + /** + * The data used to update Refunds. + */ + data: Prisma.XOR + /** + * Filter which Refunds to update + */ + where?: Prisma.RefundWhereInput + /** + * Limit how many Refunds to update. + */ + limit?: number +} + +/** + * Refund updateManyAndReturn + */ +export type RefundUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the Refund + */ + select?: Prisma.RefundSelectUpdateManyAndReturn | null + /** + * Omit specific fields from the Refund + */ + omit?: Prisma.RefundOmit | null + /** + * The data used to update Refunds. + */ + data: Prisma.XOR + /** + * Filter which Refunds to update + */ + where?: Prisma.RefundWhereInput + /** + * Limit how many Refunds to update. + */ + limit?: number + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.RefundIncludeUpdateManyAndReturn | null +} + +/** + * Refund upsert + */ +export type RefundUpsertArgs = { + /** + * Select specific fields to fetch from the Refund + */ + select?: Prisma.RefundSelect | null + /** + * Omit specific fields from the Refund + */ + omit?: Prisma.RefundOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.RefundInclude | null + /** + * The filter to search for the Refund to update in case it exists. + */ + where: Prisma.RefundWhereUniqueInput + /** + * In case the Refund found by the `where` argument doesn't exist, create a new Refund with this data. + */ + create: Prisma.XOR + /** + * In case the Refund was found with the provided `where` argument, update it with this data. + */ + update: Prisma.XOR +} + +/** + * Refund delete + */ +export type RefundDeleteArgs = { + /** + * Select specific fields to fetch from the Refund + */ + select?: Prisma.RefundSelect | null + /** + * Omit specific fields from the Refund + */ + omit?: Prisma.RefundOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.RefundInclude | null + /** + * Filter which Refund to delete. + */ + where: Prisma.RefundWhereUniqueInput +} + +/** + * Refund deleteMany + */ +export type RefundDeleteManyArgs = { + /** + * Filter which Refunds to delete + */ + where?: Prisma.RefundWhereInput + /** + * Limit how many Refunds to delete. + */ + limit?: number +} + +/** + * Refund.payment + */ +export type Refund$paymentArgs = { + /** + * Select specific fields to fetch from the Payment + */ + select?: Prisma.PaymentSelect | null + /** + * Omit specific fields from the Payment + */ + omit?: Prisma.PaymentOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.PaymentInclude | null + where?: Prisma.PaymentWhereInput +} + +/** + * Refund.reviewedBy + */ +export type Refund$reviewedByArgs = { + /** + * Select specific fields to fetch from the User + */ + select?: Prisma.UserSelect | null + /** + * Omit specific fields from the User + */ + omit?: Prisma.UserOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.UserInclude | null + where?: Prisma.UserWhereInput +} + +/** + * Refund without action + */ +export type RefundDefaultArgs = { + /** + * Select specific fields to fetch from the Refund + */ + select?: Prisma.RefundSelect | null + /** + * Omit specific fields from the Refund + */ + omit?: Prisma.RefundOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.RefundInclude | null +} diff --git a/app/generated/prisma/models/User.ts b/app/generated/prisma/models/User.ts index 7c5908f..3eccb2e 100644 --- a/app/generated/prisma/models/User.ts +++ b/app/generated/prisma/models/User.ts @@ -229,6 +229,7 @@ export type UserWhereInput = { bookings?: Prisma.BookingListRelationFilter organizerVerification?: Prisma.XOR | null reviewedVerifications?: Prisma.OrganizerVerificationListRelationFilter + reviewedRefunds?: Prisma.RefundListRelationFilter profile?: Prisma.XOR | null } @@ -250,6 +251,7 @@ export type UserOrderByWithRelationInput = { bookings?: Prisma.BookingOrderByRelationAggregateInput organizerVerification?: Prisma.OrganizerVerificationOrderByWithRelationInput reviewedVerifications?: Prisma.OrganizerVerificationOrderByRelationAggregateInput + reviewedRefunds?: Prisma.RefundOrderByRelationAggregateInput profile?: Prisma.UserProfileOrderByWithRelationInput } @@ -274,6 +276,7 @@ export type UserWhereUniqueInput = Prisma.AtLeast<{ bookings?: Prisma.BookingListRelationFilter organizerVerification?: Prisma.XOR | null reviewedVerifications?: Prisma.OrganizerVerificationListRelationFilter + reviewedRefunds?: Prisma.RefundListRelationFilter profile?: Prisma.XOR | null }, "id" | "email"> @@ -327,6 +330,7 @@ export type UserCreateInput = { bookings?: Prisma.BookingCreateNestedManyWithoutUserInput organizerVerification?: Prisma.OrganizerVerificationCreateNestedOneWithoutUserInput reviewedVerifications?: Prisma.OrganizerVerificationCreateNestedManyWithoutReviewedByInput + reviewedRefunds?: Prisma.RefundCreateNestedManyWithoutReviewedByInput profile?: Prisma.UserProfileCreateNestedOneWithoutUserInput } @@ -348,6 +352,7 @@ export type UserUncheckedCreateInput = { bookings?: Prisma.BookingUncheckedCreateNestedManyWithoutUserInput organizerVerification?: Prisma.OrganizerVerificationUncheckedCreateNestedOneWithoutUserInput reviewedVerifications?: Prisma.OrganizerVerificationUncheckedCreateNestedManyWithoutReviewedByInput + reviewedRefunds?: Prisma.RefundUncheckedCreateNestedManyWithoutReviewedByInput profile?: Prisma.UserProfileUncheckedCreateNestedOneWithoutUserInput } @@ -369,6 +374,7 @@ export type UserUpdateInput = { bookings?: Prisma.BookingUpdateManyWithoutUserNestedInput organizerVerification?: Prisma.OrganizerVerificationUpdateOneWithoutUserNestedInput reviewedVerifications?: Prisma.OrganizerVerificationUpdateManyWithoutReviewedByNestedInput + reviewedRefunds?: Prisma.RefundUpdateManyWithoutReviewedByNestedInput profile?: Prisma.UserProfileUpdateOneWithoutUserNestedInput } @@ -390,6 +396,7 @@ export type UserUncheckedUpdateInput = { bookings?: Prisma.BookingUncheckedUpdateManyWithoutUserNestedInput organizerVerification?: Prisma.OrganizerVerificationUncheckedUpdateOneWithoutUserNestedInput reviewedVerifications?: Prisma.OrganizerVerificationUncheckedUpdateManyWithoutReviewedByNestedInput + reviewedRefunds?: Prisma.RefundUncheckedUpdateManyWithoutReviewedByNestedInput profile?: Prisma.UserProfileUncheckedUpdateOneWithoutUserNestedInput } @@ -615,6 +622,22 @@ export type UserUpdateOneRequiredWithoutBookingsNestedInput = { update?: Prisma.XOR, Prisma.UserUncheckedUpdateWithoutBookingsInput> } +export type UserCreateNestedOneWithoutReviewedRefundsInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserCreateOrConnectWithoutReviewedRefundsInput + connect?: Prisma.UserWhereUniqueInput +} + +export type UserUpdateOneWithoutReviewedRefundsNestedInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserCreateOrConnectWithoutReviewedRefundsInput + upsert?: Prisma.UserUpsertWithoutReviewedRefundsInput + disconnect?: Prisma.UserWhereInput | boolean + delete?: Prisma.UserWhereInput | boolean + connect?: Prisma.UserWhereUniqueInput + update?: Prisma.XOR, Prisma.UserUncheckedUpdateWithoutReviewedRefundsInput> +} + export type UserCreateWithoutProfileInput = { id?: string name: string @@ -633,6 +656,7 @@ export type UserCreateWithoutProfileInput = { bookings?: Prisma.BookingCreateNestedManyWithoutUserInput organizerVerification?: Prisma.OrganizerVerificationCreateNestedOneWithoutUserInput reviewedVerifications?: Prisma.OrganizerVerificationCreateNestedManyWithoutReviewedByInput + reviewedRefunds?: Prisma.RefundCreateNestedManyWithoutReviewedByInput } export type UserUncheckedCreateWithoutProfileInput = { @@ -653,6 +677,7 @@ export type UserUncheckedCreateWithoutProfileInput = { bookings?: Prisma.BookingUncheckedCreateNestedManyWithoutUserInput organizerVerification?: Prisma.OrganizerVerificationUncheckedCreateNestedOneWithoutUserInput reviewedVerifications?: Prisma.OrganizerVerificationUncheckedCreateNestedManyWithoutReviewedByInput + reviewedRefunds?: Prisma.RefundUncheckedCreateNestedManyWithoutReviewedByInput } export type UserCreateOrConnectWithoutProfileInput = { @@ -689,6 +714,7 @@ export type UserUpdateWithoutProfileInput = { bookings?: Prisma.BookingUpdateManyWithoutUserNestedInput organizerVerification?: Prisma.OrganizerVerificationUpdateOneWithoutUserNestedInput reviewedVerifications?: Prisma.OrganizerVerificationUpdateManyWithoutReviewedByNestedInput + reviewedRefunds?: Prisma.RefundUpdateManyWithoutReviewedByNestedInput } export type UserUncheckedUpdateWithoutProfileInput = { @@ -709,6 +735,7 @@ export type UserUncheckedUpdateWithoutProfileInput = { bookings?: Prisma.BookingUncheckedUpdateManyWithoutUserNestedInput organizerVerification?: Prisma.OrganizerVerificationUncheckedUpdateOneWithoutUserNestedInput reviewedVerifications?: Prisma.OrganizerVerificationUncheckedUpdateManyWithoutReviewedByNestedInput + reviewedRefunds?: Prisma.RefundUncheckedUpdateManyWithoutReviewedByNestedInput } export type UserCreateWithoutAccountsInput = { @@ -728,6 +755,7 @@ export type UserCreateWithoutAccountsInput = { bookings?: Prisma.BookingCreateNestedManyWithoutUserInput organizerVerification?: Prisma.OrganizerVerificationCreateNestedOneWithoutUserInput reviewedVerifications?: Prisma.OrganizerVerificationCreateNestedManyWithoutReviewedByInput + reviewedRefunds?: Prisma.RefundCreateNestedManyWithoutReviewedByInput profile?: Prisma.UserProfileCreateNestedOneWithoutUserInput } @@ -748,6 +776,7 @@ export type UserUncheckedCreateWithoutAccountsInput = { bookings?: Prisma.BookingUncheckedCreateNestedManyWithoutUserInput organizerVerification?: Prisma.OrganizerVerificationUncheckedCreateNestedOneWithoutUserInput reviewedVerifications?: Prisma.OrganizerVerificationUncheckedCreateNestedManyWithoutReviewedByInput + reviewedRefunds?: Prisma.RefundUncheckedCreateNestedManyWithoutReviewedByInput profile?: Prisma.UserProfileUncheckedCreateNestedOneWithoutUserInput } @@ -784,6 +813,7 @@ export type UserUpdateWithoutAccountsInput = { bookings?: Prisma.BookingUpdateManyWithoutUserNestedInput organizerVerification?: Prisma.OrganizerVerificationUpdateOneWithoutUserNestedInput reviewedVerifications?: Prisma.OrganizerVerificationUpdateManyWithoutReviewedByNestedInput + reviewedRefunds?: Prisma.RefundUpdateManyWithoutReviewedByNestedInput profile?: Prisma.UserProfileUpdateOneWithoutUserNestedInput } @@ -804,6 +834,7 @@ export type UserUncheckedUpdateWithoutAccountsInput = { bookings?: Prisma.BookingUncheckedUpdateManyWithoutUserNestedInput organizerVerification?: Prisma.OrganizerVerificationUncheckedUpdateOneWithoutUserNestedInput reviewedVerifications?: Prisma.OrganizerVerificationUncheckedUpdateManyWithoutReviewedByNestedInput + reviewedRefunds?: Prisma.RefundUncheckedUpdateManyWithoutReviewedByNestedInput profile?: Prisma.UserProfileUncheckedUpdateOneWithoutUserNestedInput } @@ -824,6 +855,7 @@ export type UserCreateWithoutOrganizerVerificationInput = { tripReviews?: Prisma.TripReviewCreateNestedManyWithoutUserInput bookings?: Prisma.BookingCreateNestedManyWithoutUserInput reviewedVerifications?: Prisma.OrganizerVerificationCreateNestedManyWithoutReviewedByInput + reviewedRefunds?: Prisma.RefundCreateNestedManyWithoutReviewedByInput profile?: Prisma.UserProfileCreateNestedOneWithoutUserInput } @@ -844,6 +876,7 @@ export type UserUncheckedCreateWithoutOrganizerVerificationInput = { tripReviews?: Prisma.TripReviewUncheckedCreateNestedManyWithoutUserInput bookings?: Prisma.BookingUncheckedCreateNestedManyWithoutUserInput reviewedVerifications?: Prisma.OrganizerVerificationUncheckedCreateNestedManyWithoutReviewedByInput + reviewedRefunds?: Prisma.RefundUncheckedCreateNestedManyWithoutReviewedByInput profile?: Prisma.UserProfileUncheckedCreateNestedOneWithoutUserInput } @@ -869,6 +902,7 @@ export type UserCreateWithoutReviewedVerificationsInput = { tripReviews?: Prisma.TripReviewCreateNestedManyWithoutUserInput bookings?: Prisma.BookingCreateNestedManyWithoutUserInput organizerVerification?: Prisma.OrganizerVerificationCreateNestedOneWithoutUserInput + reviewedRefunds?: Prisma.RefundCreateNestedManyWithoutReviewedByInput profile?: Prisma.UserProfileCreateNestedOneWithoutUserInput } @@ -889,6 +923,7 @@ export type UserUncheckedCreateWithoutReviewedVerificationsInput = { tripReviews?: Prisma.TripReviewUncheckedCreateNestedManyWithoutUserInput bookings?: Prisma.BookingUncheckedCreateNestedManyWithoutUserInput organizerVerification?: Prisma.OrganizerVerificationUncheckedCreateNestedOneWithoutUserInput + reviewedRefunds?: Prisma.RefundUncheckedCreateNestedManyWithoutReviewedByInput profile?: Prisma.UserProfileUncheckedCreateNestedOneWithoutUserInput } @@ -925,6 +960,7 @@ export type UserUpdateWithoutOrganizerVerificationInput = { tripReviews?: Prisma.TripReviewUpdateManyWithoutUserNestedInput bookings?: Prisma.BookingUpdateManyWithoutUserNestedInput reviewedVerifications?: Prisma.OrganizerVerificationUpdateManyWithoutReviewedByNestedInput + reviewedRefunds?: Prisma.RefundUpdateManyWithoutReviewedByNestedInput profile?: Prisma.UserProfileUpdateOneWithoutUserNestedInput } @@ -945,6 +981,7 @@ export type UserUncheckedUpdateWithoutOrganizerVerificationInput = { tripReviews?: Prisma.TripReviewUncheckedUpdateManyWithoutUserNestedInput bookings?: Prisma.BookingUncheckedUpdateManyWithoutUserNestedInput reviewedVerifications?: Prisma.OrganizerVerificationUncheckedUpdateManyWithoutReviewedByNestedInput + reviewedRefunds?: Prisma.RefundUncheckedUpdateManyWithoutReviewedByNestedInput profile?: Prisma.UserProfileUncheckedUpdateOneWithoutUserNestedInput } @@ -976,6 +1013,7 @@ export type UserUpdateWithoutReviewedVerificationsInput = { tripReviews?: Prisma.TripReviewUpdateManyWithoutUserNestedInput bookings?: Prisma.BookingUpdateManyWithoutUserNestedInput organizerVerification?: Prisma.OrganizerVerificationUpdateOneWithoutUserNestedInput + reviewedRefunds?: Prisma.RefundUpdateManyWithoutReviewedByNestedInput profile?: Prisma.UserProfileUpdateOneWithoutUserNestedInput } @@ -996,6 +1034,7 @@ export type UserUncheckedUpdateWithoutReviewedVerificationsInput = { tripReviews?: Prisma.TripReviewUncheckedUpdateManyWithoutUserNestedInput bookings?: Prisma.BookingUncheckedUpdateManyWithoutUserNestedInput organizerVerification?: Prisma.OrganizerVerificationUncheckedUpdateOneWithoutUserNestedInput + reviewedRefunds?: Prisma.RefundUncheckedUpdateManyWithoutReviewedByNestedInput profile?: Prisma.UserProfileUncheckedUpdateOneWithoutUserNestedInput } @@ -1016,6 +1055,7 @@ export type UserCreateWithoutTripsInput = { bookings?: Prisma.BookingCreateNestedManyWithoutUserInput organizerVerification?: Prisma.OrganizerVerificationCreateNestedOneWithoutUserInput reviewedVerifications?: Prisma.OrganizerVerificationCreateNestedManyWithoutReviewedByInput + reviewedRefunds?: Prisma.RefundCreateNestedManyWithoutReviewedByInput profile?: Prisma.UserProfileCreateNestedOneWithoutUserInput } @@ -1036,6 +1076,7 @@ export type UserUncheckedCreateWithoutTripsInput = { bookings?: Prisma.BookingUncheckedCreateNestedManyWithoutUserInput organizerVerification?: Prisma.OrganizerVerificationUncheckedCreateNestedOneWithoutUserInput reviewedVerifications?: Prisma.OrganizerVerificationUncheckedCreateNestedManyWithoutReviewedByInput + reviewedRefunds?: Prisma.RefundUncheckedCreateNestedManyWithoutReviewedByInput profile?: Prisma.UserProfileUncheckedCreateNestedOneWithoutUserInput } @@ -1072,6 +1113,7 @@ export type UserUpdateWithoutTripsInput = { bookings?: Prisma.BookingUpdateManyWithoutUserNestedInput organizerVerification?: Prisma.OrganizerVerificationUpdateOneWithoutUserNestedInput reviewedVerifications?: Prisma.OrganizerVerificationUpdateManyWithoutReviewedByNestedInput + reviewedRefunds?: Prisma.RefundUpdateManyWithoutReviewedByNestedInput profile?: Prisma.UserProfileUpdateOneWithoutUserNestedInput } @@ -1092,6 +1134,7 @@ export type UserUncheckedUpdateWithoutTripsInput = { bookings?: Prisma.BookingUncheckedUpdateManyWithoutUserNestedInput organizerVerification?: Prisma.OrganizerVerificationUncheckedUpdateOneWithoutUserNestedInput reviewedVerifications?: Prisma.OrganizerVerificationUncheckedUpdateManyWithoutReviewedByNestedInput + reviewedRefunds?: Prisma.RefundUncheckedUpdateManyWithoutReviewedByNestedInput profile?: Prisma.UserProfileUncheckedUpdateOneWithoutUserNestedInput } @@ -1112,6 +1155,7 @@ export type UserCreateWithoutTripReviewsInput = { bookings?: Prisma.BookingCreateNestedManyWithoutUserInput organizerVerification?: Prisma.OrganizerVerificationCreateNestedOneWithoutUserInput reviewedVerifications?: Prisma.OrganizerVerificationCreateNestedManyWithoutReviewedByInput + reviewedRefunds?: Prisma.RefundCreateNestedManyWithoutReviewedByInput profile?: Prisma.UserProfileCreateNestedOneWithoutUserInput } @@ -1132,6 +1176,7 @@ export type UserUncheckedCreateWithoutTripReviewsInput = { bookings?: Prisma.BookingUncheckedCreateNestedManyWithoutUserInput organizerVerification?: Prisma.OrganizerVerificationUncheckedCreateNestedOneWithoutUserInput reviewedVerifications?: Prisma.OrganizerVerificationUncheckedCreateNestedManyWithoutReviewedByInput + reviewedRefunds?: Prisma.RefundUncheckedCreateNestedManyWithoutReviewedByInput profile?: Prisma.UserProfileUncheckedCreateNestedOneWithoutUserInput } @@ -1168,6 +1213,7 @@ export type UserUpdateWithoutTripReviewsInput = { bookings?: Prisma.BookingUpdateManyWithoutUserNestedInput organizerVerification?: Prisma.OrganizerVerificationUpdateOneWithoutUserNestedInput reviewedVerifications?: Prisma.OrganizerVerificationUpdateManyWithoutReviewedByNestedInput + reviewedRefunds?: Prisma.RefundUpdateManyWithoutReviewedByNestedInput profile?: Prisma.UserProfileUpdateOneWithoutUserNestedInput } @@ -1188,6 +1234,7 @@ export type UserUncheckedUpdateWithoutTripReviewsInput = { bookings?: Prisma.BookingUncheckedUpdateManyWithoutUserNestedInput organizerVerification?: Prisma.OrganizerVerificationUncheckedUpdateOneWithoutUserNestedInput reviewedVerifications?: Prisma.OrganizerVerificationUncheckedUpdateManyWithoutReviewedByNestedInput + reviewedRefunds?: Prisma.RefundUncheckedUpdateManyWithoutReviewedByNestedInput profile?: Prisma.UserProfileUncheckedUpdateOneWithoutUserNestedInput } @@ -1208,6 +1255,7 @@ export type UserCreateWithoutParticipationsInput = { bookings?: Prisma.BookingCreateNestedManyWithoutUserInput organizerVerification?: Prisma.OrganizerVerificationCreateNestedOneWithoutUserInput reviewedVerifications?: Prisma.OrganizerVerificationCreateNestedManyWithoutReviewedByInput + reviewedRefunds?: Prisma.RefundCreateNestedManyWithoutReviewedByInput profile?: Prisma.UserProfileCreateNestedOneWithoutUserInput } @@ -1228,6 +1276,7 @@ export type UserUncheckedCreateWithoutParticipationsInput = { bookings?: Prisma.BookingUncheckedCreateNestedManyWithoutUserInput organizerVerification?: Prisma.OrganizerVerificationUncheckedCreateNestedOneWithoutUserInput reviewedVerifications?: Prisma.OrganizerVerificationUncheckedCreateNestedManyWithoutReviewedByInput + reviewedRefunds?: Prisma.RefundUncheckedCreateNestedManyWithoutReviewedByInput profile?: Prisma.UserProfileUncheckedCreateNestedOneWithoutUserInput } @@ -1264,6 +1313,7 @@ export type UserUpdateWithoutParticipationsInput = { bookings?: Prisma.BookingUpdateManyWithoutUserNestedInput organizerVerification?: Prisma.OrganizerVerificationUpdateOneWithoutUserNestedInput reviewedVerifications?: Prisma.OrganizerVerificationUpdateManyWithoutReviewedByNestedInput + reviewedRefunds?: Prisma.RefundUpdateManyWithoutReviewedByNestedInput profile?: Prisma.UserProfileUpdateOneWithoutUserNestedInput } @@ -1284,6 +1334,7 @@ export type UserUncheckedUpdateWithoutParticipationsInput = { bookings?: Prisma.BookingUncheckedUpdateManyWithoutUserNestedInput organizerVerification?: Prisma.OrganizerVerificationUncheckedUpdateOneWithoutUserNestedInput reviewedVerifications?: Prisma.OrganizerVerificationUncheckedUpdateManyWithoutReviewedByNestedInput + reviewedRefunds?: Prisma.RefundUncheckedUpdateManyWithoutReviewedByNestedInput profile?: Prisma.UserProfileUncheckedUpdateOneWithoutUserNestedInput } @@ -1304,6 +1355,7 @@ export type UserCreateWithoutBookingsInput = { tripReviews?: Prisma.TripReviewCreateNestedManyWithoutUserInput organizerVerification?: Prisma.OrganizerVerificationCreateNestedOneWithoutUserInput reviewedVerifications?: Prisma.OrganizerVerificationCreateNestedManyWithoutReviewedByInput + reviewedRefunds?: Prisma.RefundCreateNestedManyWithoutReviewedByInput profile?: Prisma.UserProfileCreateNestedOneWithoutUserInput } @@ -1324,6 +1376,7 @@ export type UserUncheckedCreateWithoutBookingsInput = { tripReviews?: Prisma.TripReviewUncheckedCreateNestedManyWithoutUserInput organizerVerification?: Prisma.OrganizerVerificationUncheckedCreateNestedOneWithoutUserInput reviewedVerifications?: Prisma.OrganizerVerificationUncheckedCreateNestedManyWithoutReviewedByInput + reviewedRefunds?: Prisma.RefundUncheckedCreateNestedManyWithoutReviewedByInput profile?: Prisma.UserProfileUncheckedCreateNestedOneWithoutUserInput } @@ -1360,6 +1413,7 @@ export type UserUpdateWithoutBookingsInput = { tripReviews?: Prisma.TripReviewUpdateManyWithoutUserNestedInput organizerVerification?: Prisma.OrganizerVerificationUpdateOneWithoutUserNestedInput reviewedVerifications?: Prisma.OrganizerVerificationUpdateManyWithoutReviewedByNestedInput + reviewedRefunds?: Prisma.RefundUpdateManyWithoutReviewedByNestedInput profile?: Prisma.UserProfileUpdateOneWithoutUserNestedInput } @@ -1380,6 +1434,107 @@ export type UserUncheckedUpdateWithoutBookingsInput = { tripReviews?: Prisma.TripReviewUncheckedUpdateManyWithoutUserNestedInput organizerVerification?: Prisma.OrganizerVerificationUncheckedUpdateOneWithoutUserNestedInput reviewedVerifications?: Prisma.OrganizerVerificationUncheckedUpdateManyWithoutReviewedByNestedInput + reviewedRefunds?: Prisma.RefundUncheckedUpdateManyWithoutReviewedByNestedInput + profile?: Prisma.UserProfileUncheckedUpdateOneWithoutUserNestedInput +} + +export type UserCreateWithoutReviewedRefundsInput = { + id?: string + name: string + email: string + password?: string | null + image?: string | null + emailVerified?: Date | string | null + acceptedTermsAndPrivacy?: boolean + acceptedAt?: Date | string | null + createdAt?: Date | string + updatedAt?: Date | string + accounts?: Prisma.AccountCreateNestedManyWithoutUserInput + trips?: Prisma.TripCreateNestedManyWithoutOrganizerInput + participations?: Prisma.TripParticipantCreateNestedManyWithoutUserInput + tripReviews?: Prisma.TripReviewCreateNestedManyWithoutUserInput + bookings?: Prisma.BookingCreateNestedManyWithoutUserInput + organizerVerification?: Prisma.OrganizerVerificationCreateNestedOneWithoutUserInput + reviewedVerifications?: Prisma.OrganizerVerificationCreateNestedManyWithoutReviewedByInput + profile?: Prisma.UserProfileCreateNestedOneWithoutUserInput +} + +export type UserUncheckedCreateWithoutReviewedRefundsInput = { + id?: string + name: string + email: string + password?: string | null + image?: string | null + emailVerified?: Date | string | null + acceptedTermsAndPrivacy?: boolean + acceptedAt?: Date | string | null + createdAt?: Date | string + updatedAt?: Date | string + accounts?: Prisma.AccountUncheckedCreateNestedManyWithoutUserInput + trips?: Prisma.TripUncheckedCreateNestedManyWithoutOrganizerInput + participations?: Prisma.TripParticipantUncheckedCreateNestedManyWithoutUserInput + tripReviews?: Prisma.TripReviewUncheckedCreateNestedManyWithoutUserInput + bookings?: Prisma.BookingUncheckedCreateNestedManyWithoutUserInput + organizerVerification?: Prisma.OrganizerVerificationUncheckedCreateNestedOneWithoutUserInput + reviewedVerifications?: Prisma.OrganizerVerificationUncheckedCreateNestedManyWithoutReviewedByInput + profile?: Prisma.UserProfileUncheckedCreateNestedOneWithoutUserInput +} + +export type UserCreateOrConnectWithoutReviewedRefundsInput = { + where: Prisma.UserWhereUniqueInput + create: Prisma.XOR +} + +export type UserUpsertWithoutReviewedRefundsInput = { + update: Prisma.XOR + create: Prisma.XOR + where?: Prisma.UserWhereInput +} + +export type UserUpdateToOneWithWhereWithoutReviewedRefundsInput = { + where?: Prisma.UserWhereInput + data: Prisma.XOR +} + +export type UserUpdateWithoutReviewedRefundsInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + email?: Prisma.StringFieldUpdateOperationsInput | string + password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean + acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + accounts?: Prisma.AccountUpdateManyWithoutUserNestedInput + trips?: Prisma.TripUpdateManyWithoutOrganizerNestedInput + participations?: Prisma.TripParticipantUpdateManyWithoutUserNestedInput + tripReviews?: Prisma.TripReviewUpdateManyWithoutUserNestedInput + bookings?: Prisma.BookingUpdateManyWithoutUserNestedInput + organizerVerification?: Prisma.OrganizerVerificationUpdateOneWithoutUserNestedInput + reviewedVerifications?: Prisma.OrganizerVerificationUpdateManyWithoutReviewedByNestedInput + profile?: Prisma.UserProfileUpdateOneWithoutUserNestedInput +} + +export type UserUncheckedUpdateWithoutReviewedRefundsInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + name?: Prisma.StringFieldUpdateOperationsInput | string + email?: Prisma.StringFieldUpdateOperationsInput | string + password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean + acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + accounts?: Prisma.AccountUncheckedUpdateManyWithoutUserNestedInput + trips?: Prisma.TripUncheckedUpdateManyWithoutOrganizerNestedInput + participations?: Prisma.TripParticipantUncheckedUpdateManyWithoutUserNestedInput + tripReviews?: Prisma.TripReviewUncheckedUpdateManyWithoutUserNestedInput + bookings?: Prisma.BookingUncheckedUpdateManyWithoutUserNestedInput + organizerVerification?: Prisma.OrganizerVerificationUncheckedUpdateOneWithoutUserNestedInput + reviewedVerifications?: Prisma.OrganizerVerificationUncheckedUpdateManyWithoutReviewedByNestedInput profile?: Prisma.UserProfileUncheckedUpdateOneWithoutUserNestedInput } @@ -1395,6 +1550,7 @@ export type UserCountOutputType = { tripReviews: number bookings: number reviewedVerifications: number + reviewedRefunds: number } export type UserCountOutputTypeSelect = { @@ -1404,6 +1560,7 @@ export type UserCountOutputTypeSelect = { + where?: Prisma.RefundWhereInput +} + export type UserSelect = runtime.Types.Extensions.GetSelect<{ id?: boolean @@ -1477,6 +1641,7 @@ export type UserSelect organizerVerification?: boolean | Prisma.User$organizerVerificationArgs reviewedVerifications?: boolean | Prisma.User$reviewedVerificationsArgs + reviewedRefunds?: boolean | Prisma.User$reviewedRefundsArgs profile?: boolean | Prisma.User$profileArgs _count?: boolean | Prisma.UserCountOutputTypeDefaultArgs }, ExtArgs["result"]["user"]> @@ -1529,6 +1694,7 @@ export type UserInclude organizerVerification?: boolean | Prisma.User$organizerVerificationArgs reviewedVerifications?: boolean | Prisma.User$reviewedVerificationsArgs + reviewedRefunds?: boolean | Prisma.User$reviewedRefundsArgs profile?: boolean | Prisma.User$profileArgs _count?: boolean | Prisma.UserCountOutputTypeDefaultArgs } @@ -1545,6 +1711,7 @@ export type $UserPayload[] organizerVerification: Prisma.$OrganizerVerificationPayload | null reviewedVerifications: Prisma.$OrganizerVerificationPayload[] + reviewedRefunds: Prisma.$RefundPayload[] profile: Prisma.$UserProfilePayload | null } scalars: runtime.Types.Extensions.GetPayloadResult<{ @@ -1971,6 +2138,7 @@ export interface Prisma__UserClient = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> organizerVerification = {}>(args?: Prisma.Subset>): Prisma.Prisma__OrganizerVerificationClient, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> reviewedVerifications = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> + reviewedRefunds = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> profile = {}>(args?: Prisma.Subset>): Prisma.Prisma__UserProfileClient, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> /** * Attaches callbacks for the resolution and/or rejection of the Promise. @@ -2566,6 +2734,30 @@ export type User$reviewedVerificationsArgs = { + /** + * Select specific fields to fetch from the Refund + */ + select?: Prisma.RefundSelect | null + /** + * Omit specific fields from the Refund + */ + omit?: Prisma.RefundOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.RefundInclude | null + where?: Prisma.RefundWhereInput + orderBy?: Prisma.RefundOrderByWithRelationInput | Prisma.RefundOrderByWithRelationInput[] + cursor?: Prisma.RefundWhereUniqueInput + take?: number + skip?: number + distinct?: Prisma.RefundScalarFieldEnum | Prisma.RefundScalarFieldEnum[] +} + /** * User.profile */ diff --git a/app/trips/[id]/page.tsx b/app/trips/[id]/page.tsx index 46273bb..201d7a7 100644 --- a/app/trips/[id]/page.tsx +++ b/app/trips/[id]/page.tsx @@ -6,17 +6,21 @@ import Image from "next/image"; import { authOptions } from "@/lib/auth"; import { tripService } from "@/server/services/trip.service"; import { bookingService } from "@/server/services/booking.service"; +import { bookingRepo } from "@/server/repositories/booking.repo"; import { trustService } from "@/server/services/trust.service"; import { formatRupiah } from "@/lib/utils"; import { formatTripCalendarDateRangeLong } from "@/lib/trip-dates"; import { siteConfig, siteUrl, absoluteUrl } from "@/lib/site"; import { JoinTripButton } from "@/features/trip/components/join-trip-button"; +import { CancelTripButton } from "@/features/trip/components/cancel-trip-button"; +import { CancelBookingButton } from "@/features/booking/components/cancel-booking-button"; import { OrganizerJoinRequests } from "@/features/trip/components/organizer-join-requests"; import { OrganizerTrustPanel } from "@/features/trip/components/organizer-trust-panel"; import { TripProgramBlock } from "@/features/trip/components/trip-program-block"; import { OrganizerPaymentQueue } from "@/features/booking/components/organizer-payment-queue"; import { ImageGallery } from "@/features/trip/components/image-gallery"; import { TripReviewSection } from "@/features/review/components/trip-review-section"; +import { RefundPolicySection } from "@/features/refund/components/refund-policy-section"; import { categoryMeta } from "@/lib/activity-category"; import { vibeMeta } from "@/lib/vibe"; import { isFreeTrip } from "@/lib/trip-pricing"; @@ -24,6 +28,7 @@ import { isPastTripLastDayForReview, isTripDepartureDayPast, } from "@/lib/trip-dates"; +import { previewRefund } from "@/lib/refund-policy"; export async function generateMetadata({ params, @@ -137,6 +142,31 @@ export default async function TripDetailPage({ ? await bookingService.getAwaitingManualForTrip(trip.id) : []; + // Booking peserta saat ini — dipakai untuk render CancelBookingButton vs + // tombol "Batal Ikut" biasa. Hanya untuk non-organizer yang ikut trip. + const myBooking = + session?.user && !isOrganizer && currentParticipation + ? await bookingService.getByTripAndUser(trip.id, session.user.id) + : null; + + // Untuk CancelTripButton: jumlah booking PAID/PARTIALLY_REFUNDED (yang akan + // auto-refund). Hanya dihitung saat organizer mengakses trip yang masih + // bisa dibatalkan. + const canOrganizerCancel = + isOrganizer && + (trip.status === "OPEN" || trip.status === "FULL") && + !isDeparturePast; + const paidBookingCount = canOrganizerCancel + ? await bookingRepo.countSettledForTrip(trip.id) + : 0; + + // Preview refund untuk CancelBookingButton (server-side supaya konsisten + // dengan service yang juga pakai policy yang sama). + const refundPreview = + myBooking && myBooking.status === "PAID" && !isDeparturePast + ? previewRefund(myBooking.amount, trip.date) + : null; + const catMeta = categoryMeta(trip.category); const tripUrl = absoluteUrl(`/trips/${trip.id}`); @@ -480,8 +510,33 @@ export default async function TripDetailPage({ isFull={spotsLeft <= 0} tripStatus={trip.status} isDeparturePast={isDeparturePast} + hideCancelButton={!!refundPreview} /> + {/* Peserta PAID: cancel + request refund (lewat policy default). */} + {refundPreview && ( + + )} + + {/* Organizer: batalkan trip (auto-refund peserta PAID). */} + {canOrganizerCancel && ( + + )} + + {/* Kebijakan refund — transparency sebelum user cancel. */} + {!tripIsFree && } + ({ diff --git a/app/trips/[id]/payment/page.tsx b/app/trips/[id]/payment/page.tsx index 7b5fce0..764284e 100644 --- a/app/trips/[id]/payment/page.tsx +++ b/app/trips/[id]/payment/page.tsx @@ -158,7 +158,14 @@ function FreeTripSection({ bookingStatus, }: { tripId: string; - bookingStatus: "PENDING" | "AWAITING_PAY" | "PAID" | "CANCELLED" | "REFUNDED" | "EXPIRED"; + bookingStatus: + | "PENDING" + | "AWAITING_PAY" + | "PAID" + | "CANCELLED" + | "REFUNDED" + | "PARTIALLY_REFUNDED" + | "EXPIRED"; }) { return (
@@ -208,7 +215,14 @@ async function PaidTripSection({ organizerId: string; organizerName: string; price: number; - bookingStatus: "PENDING" | "AWAITING_PAY" | "PAID" | "CANCELLED" | "REFUNDED" | "EXPIRED"; + bookingStatus: + | "PENDING" + | "AWAITING_PAY" + | "PAID" + | "CANCELLED" + | "REFUNDED" + | "PARTIALLY_REFUNDED" + | "EXPIRED"; paymentMarkedAt: Date | null; paymentPaidAt: Date | null; }) { diff --git a/features/booking/actions.ts b/features/booking/actions.ts index fbf1220..2856055 100644 --- a/features/booking/actions.ts +++ b/features/booking/actions.ts @@ -5,6 +5,7 @@ import { authOptions } from "@/lib/auth"; import { tripService } from "@/server/services/trip.service"; import { paymentService } from "@/server/services/payment.service"; import { bookingService } from "@/server/services/booking.service"; +import { refundService } from "@/server/services/refund.service"; import { revalidatePath } from "next/cache"; export async function markParticipantPaidAction(tripId: string) { @@ -94,3 +95,45 @@ export async function confirmParticipantPaymentAction( return { error: (err as Error).message }; } } + +/** + * Peserta cancel booking PAID dengan refund request. Server menghitung + * nominal refund pakai policy default (lib/refund-policy.ts) — client + * cuma kirim bookingId untuk cegah tampering. + */ +export async function cancelBookingWithRefundAction(tripId: string) { + const session = await getServerSession(authOptions); + if (!session?.user) { + return { error: "Kamu harus login terlebih dahulu" }; + } + + try { + const booking = await bookingService.getByTripAndUser( + tripId, + session.user.id + ); + if (!booking) { + return { error: "Kamu tidak terdaftar di trip ini" }; + } + + const result = await refundService.requestUserCancellation({ + bookingId: booking.id, + userId: session.user.id, + }); + + revalidatePath(`/trips/${tripId}`); + revalidatePath("/trips"); + revalidatePath("/"); + revalidatePath("/profile"); + revalidatePath("/admin/refunds"); + + return { + success: true as const, + kind: result.kind, + refundAmount: result.refundAmount, + days: result.days, + }; + } catch (err) { + return { error: (err as Error).message }; + } +} diff --git a/features/booking/components/cancel-booking-button.tsx b/features/booking/components/cancel-booking-button.tsx new file mode 100644 index 0000000..3c13c65 --- /dev/null +++ b/features/booking/components/cancel-booking-button.tsx @@ -0,0 +1,161 @@ +"use client"; + +import { useState } from "react"; +import { useRouter } from "next/navigation"; +import { cancelBookingWithRefundAction } from "@/features/booking/actions"; +import { formatRupiah } from "@/lib/utils"; + +interface CancelBookingButtonProps { + tripId: string; + /** Hasil preview server-side (dihitung di trip detail page). */ + preview: { + days: number; + refundAmount: number; + bookingAmount: number; + tierLabel: string; + }; +} + +type ServerResult = + | { kind: "REFUND_PENDING"; refundAmount: number; days: number } + | { kind: "CANCELLED_NO_REFUND"; days: number }; + +export function CancelBookingButton({ tripId, preview }: CancelBookingButtonProps) { + const router = useRouter(); + const [open, setOpen] = useState(false); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(""); + const [result, setResult] = useState(null); + + async function handleConfirm() { + setLoading(true); + setError(""); + const res = await cancelBookingWithRefundAction(tripId); + setLoading(false); + if ("error" in res) { + setError(res.error ?? "Terjadi kesalahan"); + return; + } + setResult({ + kind: res.kind, + refundAmount: res.refundAmount, + days: res.days, + } as ServerResult); + router.refresh(); + } + + if (result?.kind === "REFUND_PENDING") { + return ( +
+

Request refund dibuat.

+

+ Refund {formatRupiah(result.refundAmount)}{" "} + menunggu review admin. Setelah disetujui dan ditransfer manual, slot + kamu di trip akan otomatis dibebaskan. +

+
+ ); + } + + if (result?.kind === "CANCELLED_NO_REFUND") { + return ( +
+

Booking dibatalkan.

+

+ Pembatalan di H-{result.days} berada di luar window refund — tidak + ada nominal yang dikembalikan. +

+
+ ); + } + + if (!open) { + return ( + + ); + } + + const percentage = preview.bookingAmount + ? Math.floor((preview.refundAmount * 100) / preview.bookingAmount) + : 0; + const noRefund = preview.refundAmount === 0; + + return ( +
+
+

Cancel booking?

+

+ Kamu cancel di H-{preview.days}{" "} + dari tanggal berangkat. +

+
+ +
+

+ Estimasi refund (sesuai policy) +

+

+ {formatRupiah(preview.refundAmount)} + {!noRefund && ( + + ({percentage}% dari {formatRupiah(preview.bookingAmount)}) + + )} +

+

+ Tier: {preview.tierLabel} +

+ {noRefund ? ( +

+ ⚠️ Di luar window refund — uang tidak dikembalikan. Booking akan + di-cancel langsung. +

+ ) : ( +

+ Refund akan masuk antrian review admin. Setelah disetujui & uang + ditransfer, booking otomatis ditandai{" "} + {percentage === 100 ? "REFUNDED" : "PARTIALLY_REFUNDED"}. +

+ )} +
+ + {error && ( +
+ {error} +
+ )} + +
+ + +
+
+ ); +} diff --git a/features/refund/actions.ts b/features/refund/actions.ts new file mode 100644 index 0000000..7fa460c --- /dev/null +++ b/features/refund/actions.ts @@ -0,0 +1,99 @@ +"use server"; + +import { getServerSession } from "next-auth"; +import { revalidatePath } from "next/cache"; +import { authOptions } from "@/lib/auth"; +import { isAdminEmail } from "@/lib/admin"; +import { refundService } from "@/server/services/refund.service"; +import { createRefundSchema, refundDecisionSchema } from "./schemas"; + +async function requireAdmin() { + const session = await getServerSession(authOptions); + if (!session?.user || !isAdminEmail(session.user.email)) { + return null; + } + return session.user; +} + +export async function createRefundAction(formData: FormData) { + const admin = await requireAdmin(); + if (!admin) return { error: "Tidak memiliki akses admin" }; + + const parsed = createRefundSchema.safeParse({ + bookingId: formData.get("bookingId") as string, + reason: formData.get("reason") as string, + reportedBy: formData.get("reportedBy") as string, + reportNote: formData.get("reportNote") as string, + amount: (formData.get("amount") as string) || undefined, + }); + if (!parsed.success) { + return { error: parsed.error.issues[0].message }; + } + + try { + await refundService.requestRefund({ + bookingId: parsed.data.bookingId, + reason: parsed.data.reason, + reportedBy: parsed.data.reportedBy, + reportNote: parsed.data.reportNote, + amount: parsed.data.amount, + initiatedByAdminId: admin.id, + }); + revalidatePath("/admin/refunds"); + return { success: true }; + } catch (err) { + return { error: (err as Error).message }; + } +} + +export async function decideRefundAction(formData: FormData) { + const admin = await requireAdmin(); + if (!admin) return { error: "Tidak memiliki akses admin" }; + + const parsed = refundDecisionSchema.safeParse({ + refundId: formData.get("refundId") as string, + decision: formData.get("decision") as string, + adminNote: (formData.get("adminNote") as string) || undefined, + }); + if (!parsed.success) { + return { error: parsed.error.issues[0].message }; + } + + const { refundId, decision, adminNote } = parsed.data; + const needsNote = decision === "REJECT" || decision === "SUCCEEDED" || decision === "FAILED"; + if (needsNote && (!adminNote || !adminNote.trim())) { + return { error: "Catatan/alasan admin wajib diisi untuk tindakan ini" }; + } + + try { + if (decision === "APPROVE") { + await refundService.approveRefund({ + refundId, + adminId: admin.id, + adminNote, + }); + } else if (decision === "REJECT") { + await refundService.rejectRefund({ + refundId, + adminId: admin.id, + adminNote: adminNote!, + }); + } else if (decision === "SUCCEEDED") { + await refundService.markSucceededManual({ + refundId, + adminId: admin.id, + adminNote: adminNote!, + }); + } else { + await refundService.markFailed({ + refundId, + adminId: admin.id, + adminNote: adminNote!, + }); + } + revalidatePath("/admin/refunds"); + return { success: true }; + } catch (err) { + return { error: (err as Error).message }; + } +} diff --git a/features/refund/components/create-refund-form.tsx b/features/refund/components/create-refund-form.tsx new file mode 100644 index 0000000..749ab7b --- /dev/null +++ b/features/refund/components/create-refund-form.tsx @@ -0,0 +1,206 @@ +"use client"; + +import { useState } from "react"; +import { useRouter } from "next/navigation"; +import { createRefundAction } from "@/features/refund/actions"; + +const REASON_OPTIONS = [ + { value: "USER_CANCELLATION", label: "Peserta cancel sendiri" }, + { value: "ORGANIZER_CANCELLED", label: "Organizer batalkan trip" }, + { value: "TRIP_ISSUE", label: "Masalah saat/setelah trip" }, + { value: "ADMIN_ADJUSTMENT", label: "Penyesuaian admin" }, + { value: "DISPUTE_RESOLVED", label: "Hasil dispute / chargeback" }, + { value: "OTHER", label: "Lain-lain" }, +]; + +const REPORTER_OPTIONS = [ + { value: "PARTICIPANT", label: "Peserta" }, + { value: "ORGANIZER", label: "Organizer" }, +]; + +export function CreateRefundForm() { + const router = useRouter(); + const [open, setOpen] = useState(false); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(""); + + async function onSubmit(e: React.FormEvent) { + e.preventDefault(); + setError(""); + setLoading(true); + const fd = new FormData(e.currentTarget); + const result = await createRefundAction(fd); + setLoading(false); + if (result.error) { + setError(result.error); + return; + } + (e.target as HTMLFormElement).reset(); + setOpen(false); + router.refresh(); + } + + if (!open) { + return ( +
+ +
+ ); + } + + return ( +
+
+
+

+ Catat Laporan Refund Manual +

+

+ Masukkan laporan yang diterima dari peserta atau organizer (via + WhatsApp/email). Refund akan masuk antrian PENDING untuk di-review. +

+
+ +
+ + {error && ( +
+ {error} +
+ )} + +
+ + + + + + + + + + + + + + + +
+ + +