From 4dca50faeabafb3dad6128a5c727dcdde7d2adb9 Mon Sep 17 00:00:00 2001 From: jmgasper Date: Tue, 20 Oct 2026 06:33:55 +1100 Subject: [PATCH] PM-6594: Apply forum watch inheritance and persist topic opt-outs What was broken The previous fix added resource-based forum defaults and new-topic emails, but QA found that unwatching the forum left topic and announcement watch states unchanged and individual topic opt-outs did not survive forum re-watching. Root cause Topic reads only checked whether a TopicWatch row existed. Unwatching deleted that row, leaving no explicit opt-out to override forum notification defaults. Challenge authors also received automatic topic watches on creation. What was changed Resolve inherited topic watches from the effective forum preference. Persist challenge-topic opt-outs and exclude them from notification recipients. Preserve individual opt-ins across forum toggles and let new challenge topics inherit without an automatic author watch. Add the TopicWatch.watching migration, regenerate Prisma exports, and update API and deployment documentation. Existing watch rows remain opt-ins because historical manual/author provenance was not recorded. General-topic author watches and unwatch behavior remain intact. Any added/updated tests Add registrant/copilot HTTP regressions for list/detail/email consistency through forum toggles, announcements, individual overrides, and new authored topics. Add real PostgreSQL preference/projection tests and command/recipient regressions. Lint and build pass. The normal suite with database checks passes 193 tests. Enabling all database suites passes 200 tests and reproduces one pre-existing public-import provenance failure on unchanged origin/develop. --- README.md | 17 +- packages/forums-prisma-client/edge.js | 7 +- .../forums-prisma-client/index-browser.js | 1 + packages/forums-prisma-client/index.d.ts | 38 ++++- packages/forums-prisma-client/index.js | 7 +- packages/forums-prisma-client/package.json | 2 +- packages/forums-prisma-client/schema.prisma | 2 + .../migration.sql | 2 + prisma/schema.prisma | 2 + src/forums/challenge-forum-watch.service.ts | 34 ++-- src/forums/forums-command.service.spec.ts | 24 ++- src/forums/forums-command.service.ts | 50 +++--- ...rums-notification-read.integration.spec.ts | 146 +++++++++++++++++- src/forums/forums-read-query.service.ts | 7 +- src/forums/forums-read.service.ts | 59 ++++++- .../forums-watch-notification.service.spec.ts | 60 +++++-- .../forums-watch-notification.service.ts | 23 ++- src/forums/public-forums-query.service.ts | 2 +- .../topic-watch-schema.integration.spec.ts | 112 ++++++++++++++ src/forums/topics.controller.ts | 19 ++- 20 files changed, 528 insertions(+), 86 deletions(-) create mode 100644 prisma/migrations/20261020000000_topic_watch_preferences/migration.sql create mode 100644 src/forums/topic-watch-schema.integration.spec.ts diff --git a/README.md b/README.md index d408e56..1c9c31a 100644 --- a/README.md +++ b/README.md @@ -60,11 +60,20 @@ registrations and copilot assignments take effect without visiting the forum, including before its first topic exists. The challenge watch routes return `{ challengeId, memberId, watching }` for the authenticated human member; PUT and DELETE persist explicit preferences. DELETE stores an opt-out so later reads or -resource changes cannot silently resubscribe the member. Explicit topic watches -remain independent. Challenge-wide watchers receive new topic and post emails, +resource changes cannot silently resubscribe the member. Topic list/detail reads +inherit this preference when there is no explicit topic choice. Topic PUT stores +`watching: true`; challenge-topic DELETE stores `watching: false` so a later forum +re-watch cannot resubscribe that topic. Explicit topic watches survive forum +opt-out, and explicit topic opt-outs suppress emails even while the forum is +watched. Announcements follow the same rules. New challenge topics, including +those created by the member, inherit the current forum preference. Challenge-wide watchers receive new topic and post emails, subject to the same topic visibility, ban, author exclusion, and deduplication rules as topic watchers. Deploy the `20261016000000_challenge_forum_watch` database -migration before the API and the Opportunities watch control. +migration and `20261020000000_topic_watch_preferences` before the API and the +Opportunities watch control. The latter preserves existing topic watch rows as +opt-ins; historical rows have no provenance distinguishing manual from author +watches. New challenge-topic creation no longer seeds an author watch. General +forum author watches and unwatch behavior are unchanged. Recipient resolution expands watches from the created content topic through all ancestor topics using `TopicClosure`, dedupes by member id, excludes the @@ -307,4 +316,4 @@ The forums Prisma schema defines `Topic`, `Post`, `PostReaction`, `TopicClosure` The production image includes the Prisma schema, migration history, configuration, and CLI. Its startup script runs `prisma migrate deploy` before starting NestJS, so a deployment cannot begin serving requests against an older forums schema. Migration failure stops the container instead of leaving feature-dependent reads or writes partially available. -Topic creation is transactional: it creates the topic, starter post, closure rows, and, for human authors, author watch and read-state rows together. M2M topic creation uses the system author and skips member watch/read-state side effects. Topic deletion is soft deletion, and post deletion preserves the post row while setting content to null for placeholder reads. Topic summary reads use side-effect-free raw queries for topic lock state, visible-post counts, nullable latest visible activity, and unread derivation, then apply centralized forums policy filtering before pagination. +Topic creation is transactional: it creates the topic, starter post, closure rows, and, for human authors, read-state rows together. General topics also seed an author watch; challenge topics inherit the forum preference. M2M topic creation uses the system author and skips member watch/read-state side effects. Topic deletion is soft deletion, and post deletion preserves the post row while setting content to null for placeholder reads. Topic summary reads use side-effect-free raw queries for topic lock state, visible-post counts, nullable latest visible activity, and unread derivation, then apply centralized forums policy filtering before pagination. diff --git a/packages/forums-prisma-client/edge.js b/packages/forums-prisma-client/edge.js index d89bc07..5814b9c 100644 --- a/packages/forums-prisma-client/edge.js +++ b/packages/forums-prisma-client/edge.js @@ -159,6 +159,7 @@ exports.Prisma.TopicClosureScalarFieldEnum = { exports.Prisma.TopicWatchScalarFieldEnum = { topicId: 'topicId', memberId: 'memberId', + watching: 'watching', createdAt: 'createdAt' }; @@ -255,14 +256,14 @@ const config = { "clientVersion": "7.9.0", "engineVersion": "e922089b7d7502aff4249d5da3420f6fa55fc6ad", "activeProvider": "postgresql", - "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/client\"\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/forums-prisma-client\"\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n schemas = [\"forums\"]\n}\n\nenum PostReactionType {\n THUMBS_UP\n THUMBS_DOWN\n\n @@schema(\"forums\")\n}\n\nmodel Topic {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n parentTopicId String? @db.VarChar(14)\n challengeId String? @db.VarChar(64)\n roleName String? @db.VarChar(128)\n title String @db.VarChar(255)\n isAnnouncement Boolean @default(false)\n locked Boolean @default(false)\n lockedAt DateTime?\n lockedByMemberId String? @db.VarChar(64)\n authorMemberId String @db.VarChar(64)\n authorHandle String @db.VarChar(128)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n deletedAt DateTime?\n deletedByMemberId String? @db.VarChar(64)\n\n parentTopic Topic? @relation(\"TopicChildren\", fields: [parentTopicId], references: [id])\n childTopics Topic[] @relation(\"TopicChildren\")\n posts Post[]\n ancestorClosures TopicClosure[] @relation(\"TopicClosureAncestor\")\n descendantClosures TopicClosure[] @relation(\"TopicClosureDescendant\")\n watches TopicWatch[]\n readStates TopicReadState[]\n\n @@index([parentTopicId])\n @@index([challengeId])\n @@index([roleName])\n @@index([deletedAt])\n @@index([isAnnouncement, createdAt])\n @@schema(\"forums\")\n}\n\nmodel MemberBan {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n memberId String @db.VarChar(64)\n createdAt DateTime @default(now())\n createdByMemberId String? @db.VarChar(64)\n removedAt DateTime?\n removedByMemberId String? @db.VarChar(64)\n\n @@index([memberId])\n @@index([removedAt])\n @@schema(\"forums\")\n}\n\nmodel IpBan {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n ipAddress String @db.VarChar(45)\n createdAt DateTime @default(now())\n createdByMemberId String? @db.VarChar(64)\n removedAt DateTime?\n removedByMemberId String? @db.VarChar(64)\n\n @@index([ipAddress])\n @@index([removedAt])\n @@schema(\"forums\")\n}\n\nmodel Post {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n topicId String @db.VarChar(14)\n parentType String @db.VarChar(16)\n parentId String @db.VarChar(14)\n authorMemberId String @db.VarChar(64)\n authorHandle String @db.VarChar(128)\n content String? @db.Text\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n deletedAt DateTime?\n deletedByMemberId String? @db.VarChar(64)\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n reactions PostReaction[]\n\n @@index([topicId, createdAt])\n @@index([topicId, parentType, parentId])\n @@index([deletedAt])\n @@schema(\"forums\")\n}\n\nmodel PostReaction {\n postId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n reaction PostReactionType\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n post Post @relation(fields: [postId], references: [id], onDelete: Cascade)\n\n @@id([postId, memberId])\n @@index([memberId])\n @@index([postId, reaction])\n @@schema(\"forums\")\n}\n\nmodel TopicClosure {\n ancestorTopicId String @db.VarChar(14)\n descendantTopicId String @db.VarChar(14)\n depth Int\n\n ancestorTopic Topic @relation(\"TopicClosureAncestor\", fields: [ancestorTopicId], references: [id], onDelete: Cascade)\n descendantTopic Topic @relation(\"TopicClosureDescendant\", fields: [descendantTopicId], references: [id], onDelete: Cascade)\n\n @@id([ancestorTopicId, descendantTopicId])\n @@index([ancestorTopicId, depth])\n @@index([descendantTopicId, depth])\n @@schema(\"forums\")\n}\n\nmodel TopicWatch {\n topicId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n createdAt DateTime @default(now())\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n\n @@id([topicId, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\n// Explicit challenge-wide preferences override resource-based default watches.\nmodel ChallengeForumWatch {\n challengeId String @db.VarChar(64)\n memberId String @db.VarChar(64)\n watching Boolean\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n @@id([challengeId, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\nmodel TopicReadState {\n topicId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n lastReadAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n\n @@id([topicId, memberId])\n @@index([memberId])\n @@index([lastReadAt])\n @@schema(\"forums\")\n}\n\n// Presentation and access rules for imported public category topics only.\nmodel PublicForumCategory {\n topicId String @id @db.VarChar(14)\n description String @default(\"\") @db.Text\n displayAs String @db.VarChar(16)\n sortOrder Int\n readRoles String[]\n createRoles String[]\n replyRoles String[]\n legacyId Int @unique\n legacySlug String @db.Text\n source Json\n\n @@schema(\"forums\")\n}\n\n// Vanilla-only role assignments never grant identity-wide roles.\nmodel PublicForumRoleMember {\n roleName String @db.VarChar(128)\n memberId String @db.VarChar(64)\n\n @@id([roleName, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\n// Immutable provenance makes imports insert-only and safely repeatable.\nmodel PublicForumImportRecord {\n entityType String @db.VarChar(32)\n sourceId String @db.VarChar(64)\n targetId String @db.VarChar(64)\n sourceHash String @db.VarChar(64)\n targetHash String @db.VarChar(64)\n createdAt DateTime @default(now())\n\n @@id([entityType, sourceId])\n @@unique([entityType, targetId])\n @@schema(\"forums\")\n}\n" + "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/client\"\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/forums-prisma-client\"\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n schemas = [\"forums\"]\n}\n\nenum PostReactionType {\n THUMBS_UP\n THUMBS_DOWN\n\n @@schema(\"forums\")\n}\n\nmodel Topic {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n parentTopicId String? @db.VarChar(14)\n challengeId String? @db.VarChar(64)\n roleName String? @db.VarChar(128)\n title String @db.VarChar(255)\n isAnnouncement Boolean @default(false)\n locked Boolean @default(false)\n lockedAt DateTime?\n lockedByMemberId String? @db.VarChar(64)\n authorMemberId String @db.VarChar(64)\n authorHandle String @db.VarChar(128)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n deletedAt DateTime?\n deletedByMemberId String? @db.VarChar(64)\n\n parentTopic Topic? @relation(\"TopicChildren\", fields: [parentTopicId], references: [id])\n childTopics Topic[] @relation(\"TopicChildren\")\n posts Post[]\n ancestorClosures TopicClosure[] @relation(\"TopicClosureAncestor\")\n descendantClosures TopicClosure[] @relation(\"TopicClosureDescendant\")\n watches TopicWatch[]\n readStates TopicReadState[]\n\n @@index([parentTopicId])\n @@index([challengeId])\n @@index([roleName])\n @@index([deletedAt])\n @@index([isAnnouncement, createdAt])\n @@schema(\"forums\")\n}\n\nmodel MemberBan {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n memberId String @db.VarChar(64)\n createdAt DateTime @default(now())\n createdByMemberId String? @db.VarChar(64)\n removedAt DateTime?\n removedByMemberId String? @db.VarChar(64)\n\n @@index([memberId])\n @@index([removedAt])\n @@schema(\"forums\")\n}\n\nmodel IpBan {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n ipAddress String @db.VarChar(45)\n createdAt DateTime @default(now())\n createdByMemberId String? @db.VarChar(64)\n removedAt DateTime?\n removedByMemberId String? @db.VarChar(64)\n\n @@index([ipAddress])\n @@index([removedAt])\n @@schema(\"forums\")\n}\n\nmodel Post {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n topicId String @db.VarChar(14)\n parentType String @db.VarChar(16)\n parentId String @db.VarChar(14)\n authorMemberId String @db.VarChar(64)\n authorHandle String @db.VarChar(128)\n content String? @db.Text\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n deletedAt DateTime?\n deletedByMemberId String? @db.VarChar(64)\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n reactions PostReaction[]\n\n @@index([topicId, createdAt])\n @@index([topicId, parentType, parentId])\n @@index([deletedAt])\n @@schema(\"forums\")\n}\n\nmodel PostReaction {\n postId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n reaction PostReactionType\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n post Post @relation(fields: [postId], references: [id], onDelete: Cascade)\n\n @@id([postId, memberId])\n @@index([memberId])\n @@index([postId, reaction])\n @@schema(\"forums\")\n}\n\nmodel TopicClosure {\n ancestorTopicId String @db.VarChar(14)\n descendantTopicId String @db.VarChar(14)\n depth Int\n\n ancestorTopic Topic @relation(\"TopicClosureAncestor\", fields: [ancestorTopicId], references: [id], onDelete: Cascade)\n descendantTopic Topic @relation(\"TopicClosureDescendant\", fields: [descendantTopicId], references: [id], onDelete: Cascade)\n\n @@id([ancestorTopicId, descendantTopicId])\n @@index([ancestorTopicId, depth])\n @@index([descendantTopicId, depth])\n @@schema(\"forums\")\n}\n\n// Explicit topic choices override challenge-wide notification preferences.\nmodel TopicWatch {\n topicId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n watching Boolean @default(true)\n createdAt DateTime @default(now())\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n\n @@id([topicId, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\n// Explicit challenge-wide preferences override resource-based default watches.\nmodel ChallengeForumWatch {\n challengeId String @db.VarChar(64)\n memberId String @db.VarChar(64)\n watching Boolean\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n @@id([challengeId, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\nmodel TopicReadState {\n topicId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n lastReadAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n\n @@id([topicId, memberId])\n @@index([memberId])\n @@index([lastReadAt])\n @@schema(\"forums\")\n}\n\n// Presentation and access rules for imported public category topics only.\nmodel PublicForumCategory {\n topicId String @id @db.VarChar(14)\n description String @default(\"\") @db.Text\n displayAs String @db.VarChar(16)\n sortOrder Int\n readRoles String[]\n createRoles String[]\n replyRoles String[]\n legacyId Int @unique\n legacySlug String @db.Text\n source Json\n\n @@schema(\"forums\")\n}\n\n// Vanilla-only role assignments never grant identity-wide roles.\nmodel PublicForumRoleMember {\n roleName String @db.VarChar(128)\n memberId String @db.VarChar(64)\n\n @@id([roleName, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\n// Immutable provenance makes imports insert-only and safely repeatable.\nmodel PublicForumImportRecord {\n entityType String @db.VarChar(32)\n sourceId String @db.VarChar(64)\n targetId String @db.VarChar(64)\n sourceHash String @db.VarChar(64)\n targetHash String @db.VarChar(64)\n createdAt DateTime @default(now())\n\n @@id([entityType, sourceId])\n @@unique([entityType, targetId])\n @@schema(\"forums\")\n}\n" } -config.runtimeDataModel = JSON.parse("{\"models\":{\"Topic\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roleName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isAnnouncement\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"locked\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"lockedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"lockedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorHandle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicChildren\"},{\"name\":\"childTopics\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicChildren\"},{\"name\":\"posts\",\"kind\":\"object\",\"type\":\"Post\",\"relationName\":\"PostToTopic\"},{\"name\":\"ancestorClosures\",\"kind\":\"object\",\"type\":\"TopicClosure\",\"relationName\":\"TopicClosureAncestor\"},{\"name\":\"descendantClosures\",\"kind\":\"object\",\"type\":\"TopicClosure\",\"relationName\":\"TopicClosureDescendant\"},{\"name\":\"watches\",\"kind\":\"object\",\"type\":\"TopicWatch\",\"relationName\":\"TopicToTopicWatch\"},{\"name\":\"readStates\",\"kind\":\"object\",\"type\":\"TopicReadState\",\"relationName\":\"TopicToTopicReadState\"}],\"dbName\":null},\"MemberBan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"removedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"removedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"IpBan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"removedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"removedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Post\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorHandle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"PostToTopic\"},{\"name\":\"reactions\",\"kind\":\"object\",\"type\":\"PostReaction\",\"relationName\":\"PostToPostReaction\"}],\"dbName\":null},\"PostReaction\":{\"fields\":[{\"name\":\"postId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reaction\",\"kind\":\"enum\",\"type\":\"PostReactionType\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"post\",\"kind\":\"object\",\"type\":\"Post\",\"relationName\":\"PostToPostReaction\"}],\"dbName\":null},\"TopicClosure\":{\"fields\":[{\"name\":\"ancestorTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descendantTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"depth\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"ancestorTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicClosureAncestor\"},{\"name\":\"descendantTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicClosureDescendant\"}],\"dbName\":null},\"TopicWatch\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicToTopicWatch\"}],\"dbName\":null},\"ChallengeForumWatch\":{\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"watching\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"TopicReadState\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastReadAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicToTopicReadState\"}],\"dbName\":null},\"PublicForumCategory\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayAs\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"readRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"replyRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"legacySlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"source\",\"kind\":\"scalar\",\"type\":\"Json\"}],\"dbName\":null},\"PublicForumRoleMember\":{\"fields\":[{\"name\":\"roleName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"PublicForumImportRecord\":{\"fields\":[{\"name\":\"entityType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sourceHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"Topic\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roleName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isAnnouncement\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"locked\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"lockedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"lockedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorHandle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicChildren\"},{\"name\":\"childTopics\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicChildren\"},{\"name\":\"posts\",\"kind\":\"object\",\"type\":\"Post\",\"relationName\":\"PostToTopic\"},{\"name\":\"ancestorClosures\",\"kind\":\"object\",\"type\":\"TopicClosure\",\"relationName\":\"TopicClosureAncestor\"},{\"name\":\"descendantClosures\",\"kind\":\"object\",\"type\":\"TopicClosure\",\"relationName\":\"TopicClosureDescendant\"},{\"name\":\"watches\",\"kind\":\"object\",\"type\":\"TopicWatch\",\"relationName\":\"TopicToTopicWatch\"},{\"name\":\"readStates\",\"kind\":\"object\",\"type\":\"TopicReadState\",\"relationName\":\"TopicToTopicReadState\"}],\"dbName\":null},\"MemberBan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"removedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"removedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"IpBan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"removedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"removedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Post\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorHandle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"PostToTopic\"},{\"name\":\"reactions\",\"kind\":\"object\",\"type\":\"PostReaction\",\"relationName\":\"PostToPostReaction\"}],\"dbName\":null},\"PostReaction\":{\"fields\":[{\"name\":\"postId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reaction\",\"kind\":\"enum\",\"type\":\"PostReactionType\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"post\",\"kind\":\"object\",\"type\":\"Post\",\"relationName\":\"PostToPostReaction\"}],\"dbName\":null},\"TopicClosure\":{\"fields\":[{\"name\":\"ancestorTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descendantTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"depth\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"ancestorTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicClosureAncestor\"},{\"name\":\"descendantTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicClosureDescendant\"}],\"dbName\":null},\"TopicWatch\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"watching\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicToTopicWatch\"}],\"dbName\":null},\"ChallengeForumWatch\":{\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"watching\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"TopicReadState\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastReadAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicToTopicReadState\"}],\"dbName\":null},\"PublicForumCategory\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayAs\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"readRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"replyRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"legacySlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"source\",\"kind\":\"scalar\",\"type\":\"Json\"}],\"dbName\":null},\"PublicForumRoleMember\":{\"fields\":[{\"name\":\"roleName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"PublicForumImportRecord\":{\"fields\":[{\"name\":\"entityType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sourceHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.parameterizationSchema = { strings: JSON.parse("[\"where\",\"parentTopic\",\"orderBy\",\"cursor\",\"childTopics\",\"topic\",\"post\",\"reactions\",\"_count\",\"posts\",\"ancestorTopic\",\"descendantTopic\",\"ancestorClosures\",\"descendantClosures\",\"watches\",\"readStates\",\"Topic.findUnique\",\"Topic.findUniqueOrThrow\",\"Topic.findFirst\",\"Topic.findFirstOrThrow\",\"Topic.findMany\",\"data\",\"Topic.createOne\",\"Topic.createMany\",\"Topic.createManyAndReturn\",\"Topic.updateOne\",\"Topic.updateMany\",\"Topic.updateManyAndReturn\",\"create\",\"update\",\"Topic.upsertOne\",\"Topic.deleteOne\",\"Topic.deleteMany\",\"having\",\"_min\",\"_max\",\"Topic.groupBy\",\"Topic.aggregate\",\"MemberBan.findUnique\",\"MemberBan.findUniqueOrThrow\",\"MemberBan.findFirst\",\"MemberBan.findFirstOrThrow\",\"MemberBan.findMany\",\"MemberBan.createOne\",\"MemberBan.createMany\",\"MemberBan.createManyAndReturn\",\"MemberBan.updateOne\",\"MemberBan.updateMany\",\"MemberBan.updateManyAndReturn\",\"MemberBan.upsertOne\",\"MemberBan.deleteOne\",\"MemberBan.deleteMany\",\"MemberBan.groupBy\",\"MemberBan.aggregate\",\"IpBan.findUnique\",\"IpBan.findUniqueOrThrow\",\"IpBan.findFirst\",\"IpBan.findFirstOrThrow\",\"IpBan.findMany\",\"IpBan.createOne\",\"IpBan.createMany\",\"IpBan.createManyAndReturn\",\"IpBan.updateOne\",\"IpBan.updateMany\",\"IpBan.updateManyAndReturn\",\"IpBan.upsertOne\",\"IpBan.deleteOne\",\"IpBan.deleteMany\",\"IpBan.groupBy\",\"IpBan.aggregate\",\"Post.findUnique\",\"Post.findUniqueOrThrow\",\"Post.findFirst\",\"Post.findFirstOrThrow\",\"Post.findMany\",\"Post.createOne\",\"Post.createMany\",\"Post.createManyAndReturn\",\"Post.updateOne\",\"Post.updateMany\",\"Post.updateManyAndReturn\",\"Post.upsertOne\",\"Post.deleteOne\",\"Post.deleteMany\",\"Post.groupBy\",\"Post.aggregate\",\"PostReaction.findUnique\",\"PostReaction.findUniqueOrThrow\",\"PostReaction.findFirst\",\"PostReaction.findFirstOrThrow\",\"PostReaction.findMany\",\"PostReaction.createOne\",\"PostReaction.createMany\",\"PostReaction.createManyAndReturn\",\"PostReaction.updateOne\",\"PostReaction.updateMany\",\"PostReaction.updateManyAndReturn\",\"PostReaction.upsertOne\",\"PostReaction.deleteOne\",\"PostReaction.deleteMany\",\"PostReaction.groupBy\",\"PostReaction.aggregate\",\"TopicClosure.findUnique\",\"TopicClosure.findUniqueOrThrow\",\"TopicClosure.findFirst\",\"TopicClosure.findFirstOrThrow\",\"TopicClosure.findMany\",\"TopicClosure.createOne\",\"TopicClosure.createMany\",\"TopicClosure.createManyAndReturn\",\"TopicClosure.updateOne\",\"TopicClosure.updateMany\",\"TopicClosure.updateManyAndReturn\",\"TopicClosure.upsertOne\",\"TopicClosure.deleteOne\",\"TopicClosure.deleteMany\",\"_avg\",\"_sum\",\"TopicClosure.groupBy\",\"TopicClosure.aggregate\",\"TopicWatch.findUnique\",\"TopicWatch.findUniqueOrThrow\",\"TopicWatch.findFirst\",\"TopicWatch.findFirstOrThrow\",\"TopicWatch.findMany\",\"TopicWatch.createOne\",\"TopicWatch.createMany\",\"TopicWatch.createManyAndReturn\",\"TopicWatch.updateOne\",\"TopicWatch.updateMany\",\"TopicWatch.updateManyAndReturn\",\"TopicWatch.upsertOne\",\"TopicWatch.deleteOne\",\"TopicWatch.deleteMany\",\"TopicWatch.groupBy\",\"TopicWatch.aggregate\",\"ChallengeForumWatch.findUnique\",\"ChallengeForumWatch.findUniqueOrThrow\",\"ChallengeForumWatch.findFirst\",\"ChallengeForumWatch.findFirstOrThrow\",\"ChallengeForumWatch.findMany\",\"ChallengeForumWatch.createOne\",\"ChallengeForumWatch.createMany\",\"ChallengeForumWatch.createManyAndReturn\",\"ChallengeForumWatch.updateOne\",\"ChallengeForumWatch.updateMany\",\"ChallengeForumWatch.updateManyAndReturn\",\"ChallengeForumWatch.upsertOne\",\"ChallengeForumWatch.deleteOne\",\"ChallengeForumWatch.deleteMany\",\"ChallengeForumWatch.groupBy\",\"ChallengeForumWatch.aggregate\",\"TopicReadState.findUnique\",\"TopicReadState.findUniqueOrThrow\",\"TopicReadState.findFirst\",\"TopicReadState.findFirstOrThrow\",\"TopicReadState.findMany\",\"TopicReadState.createOne\",\"TopicReadState.createMany\",\"TopicReadState.createManyAndReturn\",\"TopicReadState.updateOne\",\"TopicReadState.updateMany\",\"TopicReadState.updateManyAndReturn\",\"TopicReadState.upsertOne\",\"TopicReadState.deleteOne\",\"TopicReadState.deleteMany\",\"TopicReadState.groupBy\",\"TopicReadState.aggregate\",\"PublicForumCategory.findUnique\",\"PublicForumCategory.findUniqueOrThrow\",\"PublicForumCategory.findFirst\",\"PublicForumCategory.findFirstOrThrow\",\"PublicForumCategory.findMany\",\"PublicForumCategory.createOne\",\"PublicForumCategory.createMany\",\"PublicForumCategory.createManyAndReturn\",\"PublicForumCategory.updateOne\",\"PublicForumCategory.updateMany\",\"PublicForumCategory.updateManyAndReturn\",\"PublicForumCategory.upsertOne\",\"PublicForumCategory.deleteOne\",\"PublicForumCategory.deleteMany\",\"PublicForumCategory.groupBy\",\"PublicForumCategory.aggregate\",\"PublicForumRoleMember.findUnique\",\"PublicForumRoleMember.findUniqueOrThrow\",\"PublicForumRoleMember.findFirst\",\"PublicForumRoleMember.findFirstOrThrow\",\"PublicForumRoleMember.findMany\",\"PublicForumRoleMember.createOne\",\"PublicForumRoleMember.createMany\",\"PublicForumRoleMember.createManyAndReturn\",\"PublicForumRoleMember.updateOne\",\"PublicForumRoleMember.updateMany\",\"PublicForumRoleMember.updateManyAndReturn\",\"PublicForumRoleMember.upsertOne\",\"PublicForumRoleMember.deleteOne\",\"PublicForumRoleMember.deleteMany\",\"PublicForumRoleMember.groupBy\",\"PublicForumRoleMember.aggregate\",\"PublicForumImportRecord.findUnique\",\"PublicForumImportRecord.findUniqueOrThrow\",\"PublicForumImportRecord.findFirst\",\"PublicForumImportRecord.findFirstOrThrow\",\"PublicForumImportRecord.findMany\",\"PublicForumImportRecord.createOne\",\"PublicForumImportRecord.createMany\",\"PublicForumImportRecord.createManyAndReturn\",\"PublicForumImportRecord.updateOne\",\"PublicForumImportRecord.updateMany\",\"PublicForumImportRecord.updateManyAndReturn\",\"PublicForumImportRecord.upsertOne\",\"PublicForumImportRecord.deleteOne\",\"PublicForumImportRecord.deleteMany\",\"PublicForumImportRecord.groupBy\",\"PublicForumImportRecord.aggregate\",\"AND\",\"OR\",\"NOT\",\"entityType\",\"sourceId\",\"targetId\",\"sourceHash\",\"targetHash\",\"createdAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"entityType_targetId\",\"entityType_sourceId\",\"roleName\",\"memberId\",\"roleName_memberId\",\"topicId\",\"description\",\"displayAs\",\"sortOrder\",\"readRoles\",\"createRoles\",\"replyRoles\",\"legacyId\",\"legacySlug\",\"source\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"has\",\"hasEvery\",\"hasSome\",\"lastReadAt\",\"updatedAt\",\"challengeId\",\"watching\",\"challengeId_memberId\",\"ancestorTopicId\",\"descendantTopicId\",\"depth\",\"postId\",\"PostReactionType\",\"reaction\",\"id\",\"parentType\",\"parentId\",\"authorMemberId\",\"authorHandle\",\"content\",\"deletedAt\",\"deletedByMemberId\",\"ipAddress\",\"createdByMemberId\",\"removedAt\",\"removedByMemberId\",\"parentTopicId\",\"title\",\"isAnnouncement\",\"locked\",\"lockedAt\",\"lockedByMemberId\",\"topicId_memberId\",\"ancestorTopicId_descendantTopicId\",\"postId_memberId\",\"every\",\"some\",\"none\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"push\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "3QRnwAEZAQAAgwMAIAQAAIQDACAJAACFAwAgDAAAhgMAIA0AAIYDACAOAACHAwAgDwAAiAMAINgBAACCAwAw2QEAAAMAENoBAACCAwAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAAAABkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACEBAAAAAQAgGQEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIQEAAAADACAOAQAArAQAIAQAAK8EACAJAACwBAAgDAAAsQQAIA0AALEEACAOAACyBAAgDwAAswQAIO4BAAC6AwAghgIAALoDACCVAgAAugMAIJYCAAC6AwAgmwIAALoDACCfAgAAugMAIKACAAC6AwAgAwAAAAMAIAIAAAUAMAMAAAEAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAMcCACGQAgEAxwIAIZECAQDHAgAhkgIBAMcCACGTAgEAxwIAIZQCAQDwAgAhlQJAAPECACGWAgEA8AIAIQUFAACsBAAgBwAArgQAIJQCAAC6AwAglQIAALoDACCWAgAAugMAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAAAAAZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhAwAAAAcAIAIAAAgAMAMAAAkAIAkGAAD_AgAg2AEAAP0CADDZAQAACwAQ2gEAAP0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGMAgEAxwIAIY4CAAD-Ao4CIgEGAACtBAAgCgYAAP8CACDYAQAA_QIAMNkBAAALABDaAQAA_QIAMOABQADIAgAh7wEBAMcCACGFAkAAyAIAIYwCAQDHAgAhjgIAAP4CjgIiowIAAPwCACADAAAACwAgAgAADAAwAwAADQAgAQAAAAsAIAgKAAD3AgAgCwAA9wIAINgBAAD7AgAw2QEAABAAENoBAAD7AgAwiQIBAMcCACGKAgEAxwIAIYsCAgDWAgAhAgoAAKwEACALAACsBAAgCQoAAPcCACALAAD3AgAg2AEAAPsCADDZAQAAEAAQ2gEAAPsCADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACGiAgAA-gIAIAMAAAAQACACAAARADADAAASACADAAAAEAAgAgAAEQAwAwAAEgAgBwUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIQEFAACsBAAgCAUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIaECAAD4AgAgAwAAABUAIAIAABYAMAMAABcAIAgFAAD3AgAg2AEAAPYCADDZAQAAGQAQ2gEAAPYCADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIQEFAACsBAAgCQUAAPcCACDYAQAA9gIAMNkBAAAZABDaAQAA9gIAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhoQIAAPUCACADAAAAGQAgAgAAGgAwAwAAGwAgAQAAAAMAIAEAAAAHACABAAAAEAAgAQAAABAAIAEAAAAVACABAAAAGQAgAQAAAAEAIAMAAAADACACAAAFADADAAABACADAAAAAwAgAgAABQAwAwAAAQAgAwAAAAMAIAIAAAUAMAMAAAEAIBYBAACrBAAgBAAApQQAIAkAAKYEACAMAACnBAAgDQAAqAQAIA4AAKkEACAPAACqBAAg4AFAAAAAAe4BAQAAAAGFAkAAAAABhgIBAAAAAY8CAQAAAAGSAgEAAAABkwIBAAAAAZUCQAAAAAGWAgEAAAABmwIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABARUAACcAIA_gAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAEBFQAAKQAwARUAACkAMAEAAAADACAWAQAA2QMAIAQAANoDACAJAADbAwAgDAAA3AMAIA0AAN0DACAOAADeAwAgDwAA3wMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIQIAAAABACAVAAAtACAP4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhAgAAAAMAIBUAAC8AIAIAAAADACAVAAAvACABAAAAAwAgAwAAAAEAIBwAACcAIB0AAC0AIAEAAAABACABAAAAAwAgCggAANYDACAiAADYAwAgIwAA1wMAIO4BAAC6AwAghgIAALoDACCVAgAAugMAIJYCAAC6AwAgmwIAALoDACCfAgAAugMAIKACAAC6AwAgEtgBAAD0AgAw2QEAADcAENoBAAD0AgAw4AFAAMACACHuAQEA5wIAIYUCQADAAgAhhgIBAOcCACGPAgEAvwIAIZICAQC_AgAhkwIBAL8CACGVAkAA6AIAIZYCAQDnAgAhmwIBAOcCACGcAgEAvwIAIZ0CIADaAgAhngIgANoCACGfAkAA6AIAIaACAQDnAgAhAwAAAAMAIAIAADYAMCEAADcAIAMAAAADACACAAAFADADAAABACAJ2AEAAPMCADDZAQAAPQAQ2gEAAPMCADDgAUAAyAIAIe8BAQDHAgAhjwIBAAAAAZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQEAAAA6ACABAAAAOgAgCdgBAADzAgAw2QEAAD0AENoBAADzAgAw4AFAAMgCACHvAQEAxwIAIY8CAQDHAgAhmAIBAPACACGZAkAA8QIAIZoCAQDwAgAhA5gCAAC6AwAgmQIAALoDACCaAgAAugMAIAMAAAA9ACACAAA-ADADAAA6ACADAAAAPQAgAgAAPgAwAwAAOgAgAwAAAD0AIAIAAD4AMAMAADoAIAbgAUAAAAAB7wEBAAAAAY8CAQAAAAGYAgEAAAABmQJAAAAAAZoCAQAAAAEBFQAAQgAgBuABQAAAAAHvAQEAAAABjwIBAAAAAZgCAQAAAAGZAkAAAAABmgIBAAAAAQEVAABEADABFQAARAAwBuABQACNAwAh7wEBAIwDACGPAgEAjAMAIZgCAQC-AwAhmQJAAL8DACGaAgEAvgMAIQIAAAA6ACAVAABHACAG4AFAAI0DACHvAQEAjAMAIY8CAQCMAwAhmAIBAL4DACGZAkAAvwMAIZoCAQC-AwAhAgAAAD0AIBUAAEkAIAIAAAA9ACAVAABJACADAAAAOgAgHAAAQgAgHQAARwAgAQAAADoAIAEAAAA9ACAGCAAA0wMAICIAANUDACAjAADUAwAgmAIAALoDACCZAgAAugMAIJoCAAC6AwAgCdgBAADyAgAw2QEAAFAAENoBAADyAgAw4AFAAMACACHvAQEAvwIAIY8CAQC_AgAhmAIBAOcCACGZAkAA6AIAIZoCAQDnAgAhAwAAAD0AIAIAAE8AMCEAAFAAIAMAAAA9ACACAAA-ADADAAA6ACAJ2AEAAO8CADDZAQAAVgAQ2gEAAO8CADDgAUAAyAIAIY8CAQAAAAGXAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQEAAABTACABAAAAUwAgCdgBAADvAgAw2QEAAFYAENoBAADvAgAw4AFAAMgCACGPAgEAxwIAIZcCAQDHAgAhmAIBAPACACGZAkAA8QIAIZoCAQDwAgAhA5gCAAC6AwAgmQIAALoDACCaAgAAugMAIAMAAABWACACAABXADADAABTACADAAAAVgAgAgAAVwAwAwAAUwAgAwAAAFYAIAIAAFcAMAMAAFMAIAbgAUAAAAABjwIBAAAAAZcCAQAAAAGYAgEAAAABmQJAAAAAAZoCAQAAAAEBFQAAWwAgBuABQAAAAAGPAgEAAAABlwIBAAAAAZgCAQAAAAGZAkAAAAABmgIBAAAAAQEVAABdADABFQAAXQAwBuABQACNAwAhjwIBAIwDACGXAgEAjAMAIZgCAQC-AwAhmQJAAL8DACGaAgEAvgMAIQIAAABTACAVAABgACAG4AFAAI0DACGPAgEAjAMAIZcCAQCMAwAhmAIBAL4DACGZAkAAvwMAIZoCAQC-AwAhAgAAAFYAIBUAAGIAIAIAAABWACAVAABiACADAAAAUwAgHAAAWwAgHQAAYAAgAQAAAFMAIAEAAABWACAGCAAA0AMAICIAANIDACAjAADRAwAgmAIAALoDACCZAgAAugMAIJoCAAC6AwAgCdgBAADuAgAw2QEAAGkAENoBAADuAgAw4AFAAMACACGPAgEAvwIAIZcCAQC_AgAhmAIBAOcCACGZAkAA6AIAIZoCAQDnAgAhAwAAAFYAIAIAAGgAMCEAAGkAIAMAAABWACACAABXADADAABTACABAAAACQAgAQAAAAkAIAMAAAAHACACAAAIADADAAAJACADAAAABwAgAgAACAAwAwAACQAgAwAAAAcAIAIAAAgAMAMAAAkAIA0FAADOAwAgBwAAzwMAIOABQAAAAAHxAQEAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABARUAAHEAIAvgAUAAAAAB8QEBAAAAAYUCQAAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAkAAAAABlgIBAAAAAQEVAABzADABFQAAcwAwDQUAAMADACAHAADBAwAg4AFAAI0DACHxAQEAjAMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIQIAAAAJACAVAAB2ACAL4AFAAI0DACHxAQEAjAMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIQIAAAAHACAVAAB4ACACAAAABwAgFQAAeAAgAwAAAAkAIBwAAHEAIB0AAHYAIAEAAAAJACABAAAABwAgBggAALsDACAiAAC9AwAgIwAAvAMAIJQCAAC6AwAglQIAALoDACCWAgAAugMAIA7YAQAA5gIAMNkBAAB_ABDaAQAA5gIAMOABQADAAgAh8QEBAL8CACGFAkAAwAIAIY8CAQC_AgAhkAIBAL8CACGRAgEAvwIAIZICAQC_AgAhkwIBAL8CACGUAgEA5wIAIZUCQADoAgAhlgIBAOcCACEDAAAABwAgAgAAfgAwIQAAfwAgAwAAAAcAIAIAAAgAMAMAAAkAIAEAAAANACABAAAADQAgAwAAAAsAIAIAAAwAMAMAAA0AIAMAAAALACACAAAMADADAAANACADAAAACwAgAgAADAAwAwAADQAgBgYAALkDACDgAUAAAAAB7wEBAAAAAYUCQAAAAAGMAgEAAAABjgIAAACOAgIBFQAAhwEAIAXgAUAAAAAB7wEBAAAAAYUCQAAAAAGMAgEAAAABjgIAAACOAgIBFQAAiQEAMAEVAACJAQAwBgYAALgDACDgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGMAgEAjAMAIY4CAAC3A44CIgIAAAANACAVAACMAQAgBeABQACNAwAh7wEBAIwDACGFAkAAjQMAIYwCAQCMAwAhjgIAALcDjgIiAgAAAAsAIBUAAI4BACACAAAACwAgFQAAjgEAIAMAAAANACAcAACHAQAgHQAAjAEAIAEAAAANACABAAAACwAgAwgAALQDACAiAAC2AwAgIwAAtQMAIAjYAQAA4gIAMNkBAACVAQAQ2gEAAOICADDgAUAAwAIAIe8BAQC_AgAhhQJAAMACACGMAgEAvwIAIY4CAADjAo4CIgMAAAALACACAACUAQAwIQAAlQEAIAMAAAALACACAAAMADADAAANACABAAAAEgAgAQAAABIAIAMAAAAQACACAAARADADAAASACADAAAAEAAgAgAAEQAwAwAAEgAgAwAAABAAIAIAABEAMAMAABIAIAUKAACyAwAgCwAAswMAIIkCAQAAAAGKAgEAAAABiwICAAAAAQEVAACdAQAgA4kCAQAAAAGKAgEAAAABiwICAAAAAQEVAACfAQAwARUAAJ8BADAFCgAAsAMAIAsAALEDACCJAgEAjAMAIYoCAQCMAwAhiwICAJYDACECAAAAEgAgFQAAogEAIAOJAgEAjAMAIYoCAQCMAwAhiwICAJYDACECAAAAEAAgFQAApAEAIAIAAAAQACAVAACkAQAgAwAAABIAIBwAAJ0BACAdAACiAQAgAQAAABIAIAEAAAAQACAFCAAAqwMAICIAAK4DACAjAACtAwAgdAAArAMAIHUAAK8DACAG2AEAAOECADDZAQAAqwEAENoBAADhAgAwiQIBAL8CACGKAgEAvwIAIYsCAgDPAgAhAwAAABAAIAIAAKoBADAhAACrAQAgAwAAABAAIAIAABEAMAMAABIAIAEAAAAXACABAAAAFwAgAwAAABUAIAIAABYAMAMAABcAIAMAAAAVACACAAAWADADAAAXACADAAAAFQAgAgAAFgAwAwAAFwAgBAUAAKoDACDgAUAAAAAB7wEBAAAAAfEBAQAAAAEBFQAAswEAIAPgAUAAAAAB7wEBAAAAAfEBAQAAAAEBFQAAtQEAMAEVAAC1AQAwBAUAAKkDACDgAUAAjQMAIe8BAQCMAwAh8QEBAIwDACECAAAAFwAgFQAAuAEAIAPgAUAAjQMAIe8BAQCMAwAh8QEBAIwDACECAAAAFQAgFQAAugEAIAIAAAAVACAVAAC6AQAgAwAAABcAIBwAALMBACAdAAC4AQAgAQAAABcAIAEAAAAVACADCAAApgMAICIAAKgDACAjAACnAwAgBtgBAADgAgAw2QEAAMEBABDaAQAA4AIAMOABQADAAgAh7wEBAL8CACHxAQEAvwIAIQMAAAAVACACAADAAQAwIQAAwQEAIAMAAAAVACACAAAWADADAAAXACAJ2AEAAN0CADDZAQAAxwEAENoBAADdAgAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhhgIBAMcCACGHAiAA3gIAIYgCAADfAgAgAQAAAMQBACABAAAAxAEAIAjYAQAA3QIAMNkBAADHAQAQ2gEAAN0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGGAgEAxwIAIYcCIADeAgAhAAMAAADHAQAgAgAAyAEAMAMAAMQBACADAAAAxwEAIAIAAMgBADADAADEAQAgAwAAAMcBACACAADIAQAwAwAAxAEAIAXgAUAAAAAB7wEBAAAAAYUCQAAAAAGGAgEAAAABhwIgAAAAAQEVAADMAQAgBeABQAAAAAHvAQEAAAABhQJAAAAAAYYCAQAAAAGHAiAAAAABARUAAM4BADABFQAAzgEAMAXgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGGAgEAjAMAIYcCIAClAwAhAgAAAMQBACAVAADRAQAgBeABQACNAwAh7wEBAIwDACGFAkAAjQMAIYYCAQCMAwAhhwIgAKUDACECAAAAxwEAIBUAANMBACACAAAAxwEAIBUAANMBACADAAAAxAEAIBwAAMwBACAdAADRAQAgAQAAAMQBACABAAAAxwEAIAMIAACiAwAgIgAApAMAICMAAKMDACAI2AEAANkCADDZAQAA2gEAENoBAADZAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhhgIBAL8CACGHAiAA2gIAIQMAAADHAQAgAgAA2QEAMCEAANoBACADAAAAxwEAIAIAAMgBADADAADEAQAgAQAAABsAIAEAAAAbACADAAAAGQAgAgAAGgAwAwAAGwAgAwAAABkAIAIAABoAMAMAABsAIAMAAAAZACACAAAaADADAAAbACAFBQAAoQMAIO8BAQAAAAHxAQEAAAABhAJAAAAAAYUCQAAAAAEBFQAA4gEAIATvAQEAAAAB8QEBAAAAAYQCQAAAAAGFAkAAAAABARUAAOQBADABFQAA5AEAMAUFAACgAwAg7wEBAIwDACHxAQEAjAMAIYQCQACNAwAhhQJAAI0DACECAAAAGwAgFQAA5wEAIATvAQEAjAMAIfEBAQCMAwAhhAJAAI0DACGFAkAAjQMAIQIAAAAZACAVAADpAQAgAgAAABkAIBUAAOkBACADAAAAGwAgHAAA4gEAIB0AAOcBACABAAAAGwAgAQAAABkAIAMIAACdAwAgIgAAnwMAICMAAJ4DACAH2AEAANgCADDZAQAA8AEAENoBAADYAgAw7wEBAL8CACHxAQEAvwIAIYQCQADAAgAhhQJAAMACACEDAAAAGQAgAgAA7wEAMCEAAPABACADAAAAGQAgAgAAGgAwAwAAGwAgDdgBAADVAgAw2QEAAPYBABDaAQAA1QIAMPEBAQAAAAHyAQEAxwIAIfMBAQDHAgAh9AECANYCACH1AQAA0AIAIPYBAADQAgAg9wEAANACACD4AQIAAAAB-QEBAMcCACH6AQAA1wIAIAEAAADzAQAgAQAAAPMBACAN2AEAANUCADDZAQAA9gEAENoBAADVAgAw8QEBAMcCACHyAQEAxwIAIfMBAQDHAgAh9AECANYCACH1AQAA0AIAIPYBAADQAgAg9wEAANACACD4AQIA1gIAIfkBAQDHAgAh-gEAANcCACAAAwAAAPYBACACAAD3AQAwAwAA8wEAIAMAAAD2AQAgAgAA9wEAMAMAAPMBACADAAAA9gEAIAIAAPcBADADAADzAQAgCvEBAQAAAAHyAQEAAAAB8wEBAAAAAfQBAgAAAAH1AQAAmgMAIPYBAACbAwAg9wEAAJwDACD4AQIAAAAB-QEBAAAAAfoBgAAAAAEBFQAA-wEAIArxAQEAAAAB8gEBAAAAAfMBAQAAAAH0AQIAAAAB9QEAAJoDACD2AQAAmwMAIPcBAACcAwAg-AECAAAAAfkBAQAAAAH6AYAAAAABARUAAP0BADABFQAA_QEAMArxAQEAjAMAIfIBAQCMAwAh8wEBAIwDACH0AQIAlgMAIfUBAACXAwAg9gEAAJgDACD3AQAAmQMAIPgBAgCWAwAh-QEBAIwDACH6AYAAAAABAgAAAPMBACAVAACAAgAgCvEBAQCMAwAh8gEBAIwDACHzAQEAjAMAIfQBAgCWAwAh9QEAAJcDACD2AQAAmAMAIPcBAACZAwAg-AECAJYDACH5AQEAjAMAIfoBgAAAAAECAAAA9gEAIBUAAIICACACAAAA9gEAIBUAAIICACADAAAA8wEAIBwAAPsBACAdAACAAgAgAQAAAPMBACABAAAA9gEAIAUIAACRAwAgIgAAlAMAICMAAJMDACB0AACSAwAgdQAAlQMAIA3YAQAAzgIAMNkBAACJAgAQ2gEAAM4CADDxAQEAvwIAIfIBAQC_AgAh8wEBAL8CACH0AQIAzwIAIfUBAADQAgAg9gEAANACACD3AQAA0AIAIPgBAgDPAgAh-QEBAL8CACH6AQAA0QIAIAMAAAD2AQAgAgAAiAIAMCEAAIkCACADAAAA9gEAIAIAAPcBADADAADzAQAgBtgBAADMAgAw2QEAAI8CABDaAQAAzAIAMO4BAQDHAgAh7wEBAMcCACHwAQAAzQIAIAEAAACMAgAgAQAAAIwCACAF2AEAAMwCADDZAQAAjwIAENoBAADMAgAw7gEBAMcCACHvAQEAxwIAIQADAAAAjwIAIAIAAJACADADAACMAgAgAwAAAI8CACACAACQAgAwAwAAjAIAIAMAAACPAgAgAgAAkAIAMAMAAIwCACAC7gEBAAAAAe8BAQAAAAEBFQAAlAIAIALuAQEAAAAB7wEBAAAAAQEVAACWAgAwARUAAJYCADAC7gEBAIwDACHvAQEAjAMAIQIAAACMAgAgFQAAmQIAIALuAQEAjAMAIe8BAQCMAwAhAgAAAI8CACAVAACbAgAgAgAAAI8CACAVAACbAgAgAwAAAIwCACAcAACUAgAgHQAAmQIAIAEAAACMAgAgAQAAAI8CACADCAAAjgMAICIAAJADACAjAACPAwAgBdgBAADLAgAw2QEAAKICABDaAQAAywIAMO4BAQC_AgAh7wEBAL8CACEDAAAAjwIAIAIAAKECADAhAACiAgAgAwAAAI8CACACAACQAgAwAwAAjAIAIAvYAQAAxgIAMNkBAACoAgAQ2gEAAMYCADDbAQEAxwIAIdwBAQDHAgAh3QEBAMcCACHeAQEAxwIAId8BAQDHAgAh4AFAAMgCACHsAQAAyQIAIO0BAADKAgAgAQAAAKUCACABAAAApQIAIAnYAQAAxgIAMNkBAACoAgAQ2gEAAMYCADDbAQEAxwIAIdwBAQDHAgAh3QEBAMcCACHeAQEAxwIAId8BAQDHAgAh4AFAAMgCACEAAwAAAKgCACACAACpAgAwAwAApQIAIAMAAACoAgAgAgAAqQIAMAMAAKUCACADAAAAqAIAIAIAAKkCADADAAClAgAgBtsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BAQAAAAHfAQEAAAAB4AFAAAAAAQEVAACtAgAgBtsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BAQAAAAHfAQEAAAAB4AFAAAAAAQEVAACvAgAwARUAAK8CADAG2wEBAIwDACHcAQEAjAMAId0BAQCMAwAh3gEBAIwDACHfAQEAjAMAIeABQACNAwAhAgAAAKUCACAVAACyAgAgBtsBAQCMAwAh3AEBAIwDACHdAQEAjAMAId4BAQCMAwAh3wEBAIwDACHgAUAAjQMAIQIAAACoAgAgFQAAtAIAIAIAAACoAgAgFQAAtAIAIAMAAAClAgAgHAAArQIAIB0AALICACABAAAApQIAIAEAAACoAgAgAwgAAIkDACAiAACLAwAgIwAAigMAIAnYAQAAvgIAMNkBAAC7AgAQ2gEAAL4CADDbAQEAvwIAIdwBAQC_AgAh3QEBAL8CACHeAQEAvwIAId8BAQC_AgAh4AFAAMACACEDAAAAqAIAIAIAALoCADAhAAC7AgAgAwAAAKgCACACAACpAgAwAwAApQIAIAnYAQAAvgIAMNkBAAC7AgAQ2gEAAL4CADDbAQEAvwIAIdwBAQC_AgAh3QEBAL8CACHeAQEAvwIAId8BAQC_AgAh4AFAAMACACEOCAAAwgIAICIAAMUCACAjAADFAgAg4QEBAAAAAeIBAQAAAATjAQEAAAAE5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDEAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCwgAAMICACAiAADDAgAgIwAAwwIAIOEBQAAAAAHiAUAAAAAE4wFAAAAABOQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAAwQIAIQsIAADCAgAgIgAAwwIAICMAAMMCACDhAUAAAAAB4gFAAAAABOMBQAAAAATkAUAAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AFAAMECACEI4QECAAAAAeIBAgAAAATjAQIAAAAE5AECAAAAAeUBAgAAAAHmAQIAAAAB5wECAAAAAegBAgDCAgAhCOEBQAAAAAHiAUAAAAAE4wFAAAAABOQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAAwwIAIQ4IAADCAgAgIgAAxQIAICMAAMUCACDhAQEAAAAB4gEBAAAABOMBAQAAAATkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAMQCACHpAQEAAAAB6gEBAAAAAesBAQAAAAEL4QEBAAAAAeIBAQAAAATjAQEAAAAE5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDFAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCdgBAADGAgAw2QEAAKgCABDaAQAAxgIAMNsBAQDHAgAh3AEBAMcCACHdAQEAxwIAId4BAQDHAgAh3wEBAMcCACHgAUAAyAIAIQvhAQEAAAAB4gEBAAAABOMBAQAAAATkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAMUCACHpAQEAAAAB6gEBAAAAAesBAQAAAAEI4QFAAAAAAeIBQAAAAATjAUAAAAAE5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADDAgAhAtsBAQAAAAHdAQEAAAABAtsBAQAAAAHcAQEAAAABBdgBAADLAgAw2QEAAKICABDaAQAAywIAMO4BAQC_AgAh7wEBAL8CACEF2AEAAMwCADDZAQAAjwIAENoBAADMAgAw7gEBAMcCACHvAQEAxwIAIQLuAQEAAAAB7wEBAAAAAQ3YAQAAzgIAMNkBAACJAgAQ2gEAAM4CADDxAQEAvwIAIfIBAQC_AgAh8wEBAL8CACH0AQIAzwIAIfUBAADQAgAg9gEAANACACD3AQAA0AIAIPgBAgDPAgAh-QEBAL8CACH6AQAA0QIAIA0IAADCAgAgIgAAwgIAICMAAMICACB0AADUAgAgdQAAwgIAIOEBAgAAAAHiAQIAAAAE4wECAAAABOQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIA0wIAIQThAQEAAAAFgQIBAAAAAYICAQAAAASDAgEAAAAEDwgAAMICACAiAADSAgAgIwAA0gIAIOEBgAAAAAHkAYAAAAAB5QGAAAAAAeYBgAAAAAHnAYAAAAAB6AGAAAAAAfsBAQAAAAH8AQEAAAAB_QEBAAAAAf4BgAAAAAH_AYAAAAABgAKAAAAAAQzhAYAAAAAB5AGAAAAAAeUBgAAAAAHmAYAAAAAB5wGAAAAAAegBgAAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AYAAAAAB_wGAAAAAAYACgAAAAAENCAAAwgIAICIAAMICACAjAADCAgAgdAAA1AIAIHUAAMICACDhAQIAAAAB4gECAAAABOMBAgAAAATkAQIAAAAB5QECAAAAAeYBAgAAAAHnAQIAAAAB6AECANMCACEI4QEIAAAAAeIBCAAAAATjAQgAAAAE5AEIAAAAAeUBCAAAAAHmAQgAAAAB5wEIAAAAAegBCADUAgAhDdgBAADVAgAw2QEAAPYBABDaAQAA1QIAMPEBAQDHAgAh8gEBAMcCACHzAQEAxwIAIfQBAgDWAgAh9QEAANACACD2AQAA0AIAIPcBAADQAgAg-AECANYCACH5AQEAxwIAIfoBAADXAgAgCOEBAgAAAAHiAQIAAAAE4wECAAAABOQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIAwgIAIQzhAYAAAAAB5AGAAAAAAeUBgAAAAAHmAYAAAAAB5wGAAAAAAegBgAAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AYAAAAAB_wGAAAAAAYACgAAAAAEH2AEAANgCADDZAQAA8AEAENoBAADYAgAw7wEBAL8CACHxAQEAvwIAIYQCQADAAgAhhQJAAMACACEI2AEAANkCADDZAQAA2gEAENoBAADZAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhhgIBAL8CACGHAiAA2gIAIQUIAADCAgAgIgAA3AIAICMAANwCACDhASAAAAAB6AEgANsCACEFCAAAwgIAICIAANwCACAjAADcAgAg4QEgAAAAAegBIADbAgAhAuEBIAAAAAHoASAA3AIAIQjYAQAA3QIAMNkBAADHAQAQ2gEAAN0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGGAgEAxwIAIYcCIADeAgAhAuEBIAAAAAHoASAA3AIAIQLvAQEAAAABhgIBAAAAAQbYAQAA4AIAMNkBAADBAQAQ2gEAAOACADDgAUAAwAIAIe8BAQC_AgAh8QEBAL8CACEG2AEAAOECADDZAQAAqwEAENoBAADhAgAwiQIBAL8CACGKAgEAvwIAIYsCAgDPAgAhCNgBAADiAgAw2QEAAJUBABDaAQAA4gIAMOABQADAAgAh7wEBAL8CACGFAkAAwAIAIYwCAQC_AgAhjgIAAOMCjgIiBwgAAMICACAiAADlAgAgIwAA5QIAIOEBAAAAjgIC4gEAAACOAgjjAQAAAI4CCOgBAADkAo4CIgcIAADCAgAgIgAA5QIAICMAAOUCACDhAQAAAI4CAuIBAAAAjgII4wEAAACOAgjoAQAA5AKOAiIE4QEAAACOAgLiAQAAAI4CCOMBAAAAjgII6AEAAOUCjgIiDtgBAADmAgAw2QEAAH8AENoBAADmAgAw4AFAAMACACHxAQEAvwIAIYUCQADAAgAhjwIBAL8CACGQAgEAvwIAIZECAQC_AgAhkgIBAL8CACGTAgEAvwIAIZQCAQDnAgAhlQJAAOgCACGWAgEA5wIAIQ4IAADqAgAgIgAA7QIAICMAAO0CACDhAQEAAAAB4gEBAAAABeMBAQAAAAXkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAOwCACHpAQEAAAAB6gEBAAAAAesBAQAAAAELCAAA6gIAICIAAOsCACAjAADrAgAg4QFAAAAAAeIBQAAAAAXjAUAAAAAF5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADpAgAhCwgAAOoCACAiAADrAgAgIwAA6wIAIOEBQAAAAAHiAUAAAAAF4wFAAAAABeQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAA6QIAIQjhAQIAAAAB4gECAAAABeMBAgAAAAXkAQIAAAAB5QECAAAAAeYBAgAAAAHnAQIAAAAB6AECAOoCACEI4QFAAAAAAeIBQAAAAAXjAUAAAAAF5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADrAgAhDggAAOoCACAiAADtAgAgIwAA7QIAIOEBAQAAAAHiAQEAAAAF4wEBAAAABeQBAQAAAAHlAQEAAAAB5gEBAAAAAecBAQAAAAHoAQEA7AIAIekBAQAAAAHqAQEAAAAB6wEBAAAAAQvhAQEAAAAB4gEBAAAABeMBAQAAAAXkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAO0CACHpAQEAAAAB6gEBAAAAAesBAQAAAAEJ2AEAAO4CADDZAQAAaQAQ2gEAAO4CADDgAUAAwAIAIY8CAQC_AgAhlwIBAL8CACGYAgEA5wIAIZkCQADoAgAhmgIBAOcCACEJ2AEAAO8CADDZAQAAVgAQ2gEAAO8CADDgAUAAyAIAIY8CAQDHAgAhlwIBAMcCACGYAgEA8AIAIZkCQADxAgAhmgIBAPACACEL4QEBAAAAAeIBAQAAAAXjAQEAAAAF5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDtAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCOEBQAAAAAHiAUAAAAAF4wFAAAAABeQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAA6wIAIQnYAQAA8gIAMNkBAABQABDaAQAA8gIAMOABQADAAgAh7wEBAL8CACGPAgEAvwIAIZgCAQDnAgAhmQJAAOgCACGaAgEA5wIAIQnYAQAA8wIAMNkBAAA9ABDaAQAA8wIAMOABQADIAgAh7wEBAMcCACGPAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIRLYAQAA9AIAMNkBAAA3ABDaAQAA9AIAMOABQADAAgAh7gEBAOcCACGFAkAAwAIAIYYCAQDnAgAhjwIBAL8CACGSAgEAvwIAIZMCAQC_AgAhlQJAAOgCACGWAgEA5wIAIZsCAQDnAgAhnAIBAL8CACGdAiAA2gIAIZ4CIADaAgAhnwJAAOgCACGgAgEA5wIAIQLvAQEAAAAB8QEBAAAAAQgFAAD3AgAg2AEAAPYCADDZAQAAGQAQ2gEAAPYCADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIRsBAACDAwAgBAAAhAMAIAkAAIUDACAMAACGAwAgDQAAhgMAIA4AAIcDACAPAACIAwAg2AEAAIIDADDZAQAAAwAQ2gEAAIIDADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQDHAgAhkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACGnAgAAAwAgqAIAAAMAIALvAQEAAAAB8QEBAAAAAQcFAAD3AgAg2AEAAPkCADDZAQAAFQAQ2gEAAPkCADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACECiQIBAAAAAYoCAQAAAAEICgAA9wIAIAsAAPcCACDYAQAA-wIAMNkBAAAQABDaAQAA-wIAMIkCAQDHAgAhigIBAMcCACGLAgIA1gIAIQLvAQEAAAABjAIBAAAAAQkGAAD_AgAg2AEAAP0CADDZAQAACwAQ2gEAAP0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGMAgEAxwIAIY4CAAD-Ao4CIgThAQAAAI4CAuIBAAAAjgII4wEAAACOAgjoAQAA5QKOAiISBQAA9wIAIAcAAIEDACDYAQAAgAMAMNkBAAAHABDaAQAAgAMAMOABQADIAgAh8QEBAMcCACGFAkAAyAIAIY8CAQDHAgAhkAIBAMcCACGRAgEAxwIAIZICAQDHAgAhkwIBAMcCACGUAgEA8AIAIZUCQADxAgAhlgIBAPACACGnAgAABwAgqAIAAAcAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAMcCACGQAgEAxwIAIZECAQDHAgAhkgIBAMcCACGTAgEAxwIAIZQCAQDwAgAhlQJAAPECACGWAgEA8AIAIQOkAgAACwAgpQIAAAsAIKYCAAALACAZAQAAgwMAIAQAAIQDACAJAACFAwAgDAAAhgMAIA0AAIYDACAOAACHAwAgDwAAiAMAINgBAACCAwAw2QEAAAMAENoBAACCAwAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAxwIAIZICAQDHAgAhkwIBAMcCACGVAkAA8QIAIZYCAQDwAgAhmwIBAPACACGcAgEAxwIAIZ0CIADeAgAhngIgAN4CACGfAkAA8QIAIaACAQDwAgAhGwEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIacCAAADACCoAgAAAwAgA6QCAAADACClAgAAAwAgpgIAAAMAIAOkAgAABwAgpQIAAAcAIKYCAAAHACADpAIAABAAIKUCAAAQACCmAgAAEAAgA6QCAAAVACClAgAAFQAgpgIAABUAIAOkAgAAGQAgpQIAABkAIKYCAAAZACAAAAABrAIBAAAAAQGsAkAAAAABAAAAAAAAAAAFrAICAAAAAbMCAgAAAAG0AgIAAAABtQICAAAAAbYCAgAAAAECrAIBAAAABLICAQAAAAUCrAIBAAAABLICAQAAAAUCrAIBAAAABLICAQAAAAUBrAIBAAAABAGsAgEAAAAEAawCAQAAAAQAAAAFHAAA2QQAIB0AANwEACCpAgAA2gQAIKoCAADbBAAgrwIAAAEAIAMcAADZBAAgqQIAANoEACCvAgAAAQAgAAAAAawCIAAAAAEAAAAFHAAA1AQAIB0AANcEACCpAgAA1QQAIKoCAADWBAAgrwIAAAEAIAMcAADUBAAgqQIAANUEACCvAgAAAQAgAAAAAAAFHAAAzAQAIB0AANIEACCpAgAAzQQAIKoCAADRBAAgrwIAAAEAIAUcAADKBAAgHQAAzwQAIKkCAADLBAAgqgIAAM4EACCvAgAAAQAgAxwAAMwEACCpAgAAzQQAIK8CAAABACADHAAAygQAIKkCAADLBAAgrwIAAAEAIAAAAAGsAgAAAI4CAgUcAADFBAAgHQAAyAQAIKkCAADGBAAgqgIAAMcEACCvAgAACQAgAxwAAMUEACCpAgAAxgQAIK8CAAAJACAAAAAAAawCAQAAAAEBrAJAAAAAAQUcAAC_BAAgHQAAwwQAIKkCAADABAAgqgIAAMIEACCvAgAAAQAgCxwAAMIDADAdAADHAwAwqQIAAMMDADCqAgAAxAMAMKsCAADFAwAgrAIAAMYDADCtAgAAxgMAMK4CAADGAwAwrwIAAMYDADCwAgAAyAMAMLECAADJAwAwBOABQAAAAAHvAQEAAAABhQJAAAAAAY4CAAAAjgICAgAAAA0AIBwAAM0DACADAAAADQAgHAAAzQMAIB0AAMwDACABFQAAwQQAMAoGAAD_AgAg2AEAAP0CADDZAQAACwAQ2gEAAP0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGMAgEAxwIAIY4CAAD-Ao4CIqMCAAD8AgAgAgAAAA0AIBUAAMwDACACAAAAygMAIBUAAMsDACAI2AEAAMkDADDZAQAAygMAENoBAADJAwAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhjAIBAMcCACGOAgAA_gKOAiII2AEAAMkDADDZAQAAygMAENoBAADJAwAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhjAIBAMcCACGOAgAA_gKOAiIE4AFAAI0DACHvAQEAjAMAIYUCQACNAwAhjgIAALcDjgIiBOABQACNAwAh7wEBAIwDACGFAkAAjQMAIY4CAAC3A44CIgTgAUAAAAAB7wEBAAAAAYUCQAAAAAGOAgAAAI4CAgMcAAC_BAAgqQIAAMAEACCvAgAAAQAgBBwAAMIDADCpAgAAwwMAMKsCAADFAwAgrwIAAMYDADAAAAAAAAAAAAAHHAAAtAQAIB0AAL0EACCpAgAAtQQAIKoCAAC8BAAgrQIAAAMAIK4CAAADACCvAgAAAQAgCxwAAJkEADAdAACeBAAwqQIAAJoEADCqAgAAmwQAMKsCAACcBAAgrAIAAJ0EADCtAgAAnQQAMK4CAACdBAAwrwIAAJ0EADCwAgAAnwQAMLECAACgBAAwCxwAAI0EADAdAACSBAAwqQIAAI4EADCqAgAAjwQAMKsCAACQBAAgrAIAAJEEADCtAgAAkQQAMK4CAACRBAAwrwIAAJEEADCwAgAAkwQAMLECAACUBAAwCxwAAIQEADAdAACIBAAwqQIAAIUEADCqAgAAhgQAMKsCAACHBAAgrAIAAPwDADCtAgAA_AMAMK4CAAD8AwAwrwIAAPwDADCwAgAAiQQAMLECAAD_AwAwCxwAAPgDADAdAAD9AwAwqQIAAPkDADCqAgAA-gMAMKsCAAD7AwAgrAIAAPwDADCtAgAA_AMAMK4CAAD8AwAwrwIAAPwDADCwAgAA_gMAMLECAAD_AwAwCxwAAOwDADAdAADxAwAwqQIAAO0DADCqAgAA7gMAMKsCAADvAwAgrAIAAPADADCtAgAA8AMAMK4CAADwAwAwrwIAAPADADCwAgAA8gMAMLECAADzAwAwCxwAAOADADAdAADlAwAwqQIAAOEDADCqAgAA4gMAMKsCAADjAwAgrAIAAOQDADCtAgAA5AMAMK4CAADkAwAwrwIAAOQDADCwAgAA5gMAMLECAADnAwAwA-8BAQAAAAGEAkAAAAABhQJAAAAAAQIAAAAbACAcAADrAwAgAwAAABsAIBwAAOsDACAdAADqAwAgARUAALsEADAJBQAA9wIAINgBAAD2AgAw2QEAABkAENoBAAD2AgAw7wEBAMcCACHxAQEAxwIAIYQCQADIAgAhhQJAAMgCACGhAgAA9QIAIAIAAAAbACAVAADqAwAgAgAAAOgDACAVAADpAwAgB9gBAADnAwAw2QEAAOgDABDaAQAA5wMAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhB9gBAADnAwAw2QEAAOgDABDaAQAA5wMAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhA-8BAQCMAwAhhAJAAI0DACGFAkAAjQMAIQPvAQEAjAMAIYQCQACNAwAhhQJAAI0DACED7wEBAAAAAYQCQAAAAAGFAkAAAAABAuABQAAAAAHvAQEAAAABAgAAABcAIBwAAPcDACADAAAAFwAgHAAA9wMAIB0AAPYDACABFQAAugQAMAgFAAD3AgAg2AEAAPkCADDZAQAAFQAQ2gEAAPkCADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACGhAgAA-AIAIAIAAAAXACAVAAD2AwAgAgAAAPQDACAVAAD1AwAgBtgBAADzAwAw2QEAAPQDABDaAQAA8wMAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIQbYAQAA8wMAMNkBAAD0AwAQ2gEAAPMDADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACEC4AFAAI0DACHvAQEAjAMAIQLgAUAAjQMAIe8BAQCMAwAhAuABQAAAAAHvAQEAAAABAwoAALIDACCJAgEAAAABiwICAAAAAQIAAAASACAcAACDBAAgAwAAABIAIBwAAIMEACAdAACCBAAgARUAALkEADAJCgAA9wIAIAsAAPcCACDYAQAA-wIAMNkBAAAQABDaAQAA-wIAMIkCAQDHAgAhigIBAMcCACGLAgIA1gIAIaICAAD6AgAgAgAAABIAIBUAAIIEACACAAAAgAQAIBUAAIEEACAG2AEAAP8DADDZAQAAgAQAENoBAAD_AwAwiQIBAMcCACGKAgEAxwIAIYsCAgDWAgAhBtgBAAD_AwAw2QEAAIAEABDaAQAA_wMAMIkCAQDHAgAhigIBAMcCACGLAgIA1gIAIQKJAgEAjAMAIYsCAgCWAwAhAwoAALADACCJAgEAjAMAIYsCAgCWAwAhAwoAALIDACCJAgEAAAABiwICAAAAAQMLAACzAwAgigIBAAAAAYsCAgAAAAECAAAAEgAgHAAAjAQAIAMAAAASACAcAACMBAAgHQAAiwQAIAEVAAC4BAAwAgAAABIAIBUAAIsEACACAAAAgAQAIBUAAIoEACACigIBAIwDACGLAgIAlgMAIQMLAACxAwAgigIBAIwDACGLAgIAlgMAIQMLAACzAwAgigIBAAAAAYsCAgAAAAELBwAAzwMAIOABQAAAAAGFAkAAAAABjwIBAAAAAZACAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQJAAAAAAZYCAQAAAAECAAAACQAgHAAAmAQAIAMAAAAJACAcAACYBAAgHQAAlwQAIAEVAAC3BAAwEAUAAPcCACAHAACBAwAg2AEAAIADADDZAQAABwAQ2gEAAIADADDgAUAAyAIAIfEBAQDHAgAhhQJAAMgCACGPAgEAAAABkAIBAMcCACGRAgEAxwIAIZICAQDHAgAhkwIBAMcCACGUAgEA8AIAIZUCQADxAgAhlgIBAPACACECAAAACQAgFQAAlwQAIAIAAACVBAAgFQAAlgQAIA7YAQAAlAQAMNkBAACVBAAQ2gEAAJQEADDgAUAAyAIAIfEBAQDHAgAhhQJAAMgCACGPAgEAxwIAIZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhDtgBAACUBAAw2QEAAJUEABDaAQAAlAQAMOABQADIAgAh8QEBAMcCACGFAkAAyAIAIY8CAQDHAgAhkAIBAMcCACGRAgEAxwIAIZICAQDHAgAhkwIBAMcCACGUAgEA8AIAIZUCQADxAgAhlgIBAPACACEK4AFAAI0DACGFAkAAjQMAIY8CAQCMAwAhkAIBAIwDACGRAgEAjAMAIZICAQCMAwAhkwIBAIwDACGUAgEAvgMAIZUCQAC_AwAhlgIBAL4DACELBwAAwQMAIOABQACNAwAhhQJAAI0DACGPAgEAjAMAIZACAQCMAwAhkQIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlAIBAL4DACGVAkAAvwMAIZYCAQC-AwAhCwcAAM8DACDgAUAAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABFAQAAKUEACAJAACmBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABAgAAAAEAIBwAAKQEACADAAAAAQAgHAAApAQAIB0AAKMEACABFQAAtgQAMBkBAACDAwAgBAAAhAMAIAkAAIUDACAMAACGAwAgDQAAhgMAIA4AAIcDACAPAACIAwAg2AEAAIIDADDZAQAAAwAQ2gEAAIIDADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQAAAAGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIQIAAAABACAVAACjBAAgAgAAAKEEACAVAACiBAAgEtgBAACgBAAw2QEAAKEEABDaAQAAoAQAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIRLYAQAAoAQAMNkBAAChBAAQ2gEAAKAEADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQDHAgAhkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACEO4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRQEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIA8AAN8DACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFAQAAKUEACAJAACmBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABBBwAAJkEADCpAgAAmgQAMKsCAACcBAAgrwIAAJ0EADAEHAAAjQQAMKkCAACOBAAwqwIAAJAEACCvAgAAkQQAMAQcAACEBAAwqQIAAIUEADCrAgAAhwQAIK8CAAD8AwAwBBwAAPgDADCpAgAA-QMAMKsCAAD7AwAgrwIAAPwDADAEHAAA7AMAMKkCAADtAwAwqwIAAO8DACCvAgAA8AMAMAQcAADgAwAwqQIAAOEDADCrAgAA4wMAIK8CAADkAwAwAxwAALQEACCpAgAAtQQAIK8CAAABACAOAQAArAQAIAQAAK8EACAJAACwBAAgDAAAsQQAIA0AALEEACAOAACyBAAgDwAAswQAIO4BAAC6AwAghgIAALoDACCVAgAAugMAIJYCAAC6AwAgmwIAALoDACCfAgAAugMAIKACAAC6AwAgBQUAAKwEACAHAACuBAAglAIAALoDACCVAgAAugMAIJYCAAC6AwAgAAAAAAAAFQEAAKsEACAJAACmBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAAC0BAAgDuABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABCuABQAAAAAGFAkAAAAABjwIBAAAAAZACAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQJAAAAAAZYCAQAAAAECigIBAAAAAYsCAgAAAAECiQIBAAAAAYsCAgAAAAEC4AFAAAAAAe8BAQAAAAED7wEBAAAAAYQCQAAAAAGFAkAAAAABAwAAAAMAIBwAALQEACAdAAC-BAAgFwAAAAMAIAEAANkDACAJAADbAwAgDAAA3AMAIA0AAN0DACAOAADeAwAgDwAA3wMAIBUAAL4EACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAkAANsDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAAKsEACAEAAClBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAAC_BAAgBOABQAAAAAHvAQEAAAABhQJAAAAAAY4CAAAAjgICAwAAAAMAIBwAAL8EACAdAADEBAAgFwAAAAMAIAEAANkDACAEAADaAwAgDAAA3AMAIA0AAN0DACAOAADeAwAgDwAA3wMAIBUAAMQEACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhDAUAAM4DACDgAUAAAAAB8QEBAAAAAYUCQAAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAkAAAAABlgIBAAAAAQIAAAAJACAcAADFBAAgAwAAAAcAIBwAAMUEACAdAADJBAAgDgAAAAcAIAUAAMADACAVAADJBAAg4AFAAI0DACHxAQEAjAMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIQwFAADAAwAg4AFAAI0DACHxAQEAjAMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIRUBAACrBAAgBAAApQQAIAkAAKYEACAMAACnBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAAygQAIBUBAACrBAAgBAAApQQAIAkAAKYEACANAACoBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAAzAQAIAMAAAADACAcAADKBAAgHQAA0AQAIBcAAAADACABAADZAwAgBAAA2gMAIAkAANsDACAMAADcAwAgDgAA3gMAIA8AAN8DACAVAADQBAAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACAOAADeAwAgDwAA3wMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIQMAAAADACAcAADMBAAgHQAA0wQAIBcAAAADACABAADZAwAgBAAA2gMAIAkAANsDACANAADdAwAgDgAA3gMAIA8AAN8DACAVAADTBAAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAANkDACAEAADaAwAgCQAA2wMAIA0AAN0DACAOAADeAwAgDwAA3wMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRUBAACrBAAgBAAApQQAIAkAAKYEACAMAACnBAAgDQAAqAQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAA1AQAIAMAAAADACAcAADUBAAgHQAA2AQAIBcAAAADACABAADZAwAgBAAA2gMAIAkAANsDACAMAADcAwAgDQAA3QMAIA8AAN8DACAVAADYBAAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDwAA3wMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRUBAACrBAAgBAAApQQAIAkAAKYEACAMAACnBAAgDQAAqAQAIA4AAKkEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAA2QQAIAMAAAADACAcAADZBAAgHQAA3QQAIBcAAAADACABAADZAwAgBAAA2gMAIAkAANsDACAMAADcAwAgDQAA3QMAIA4AAN4DACAVAADdBAAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIQgBBAEEBgEIAAgJCgIMEwUNFAUOGAYPHAcDBQABBw4DCAAEAQYAAgEHDwACCgABCwABAQUAAQEFAAEGBB0ACR4ADB8ADSAADiEADyIAAAEBLAEBATIBAwgADSIADiMADwAAAAMIAA0iAA4jAA8AAAADCAAVIgAWIwAXAAAAAwgAFSIAFiMAFwAAAAMIAB0iAB4jAB8AAAADCAAdIgAeIwAfAQUAAQEFAAEDCAAkIgAlIwAmAAAAAwgAJCIAJSMAJgEGAAIBBgACAwgAKyIALCMALQAAAAMIACsiACwjAC0CCgABCwABAgoAAQsAAQUIADIiADUjADZ0ADN1ADQAAAAAAAUIADIiADUjADZ0ADN1ADQBBQABAQUAAQMIADsiADwjAD0AAAADCAA7IgA8IwA9AAAAAwgAQyIARCMARQAAAAMIAEMiAEQjAEUBBQABAQUAAQMIAEoiAEsjAEwAAAADCABKIgBLIwBMAAAABQgAUiIAVSMAVnQAU3UAVAAAAAAABQgAUiIAVSMAVnQAU3UAVAAAAAMIAFwiAF0jAF4AAAADCABcIgBdIwBeAAAAAwgAZCIAZSMAZgAAAAMIAGQiAGUjAGYQAgERIwESJAETJQEUJgEWKAEXKgkYKwoZLgEaMAkbMQseMwEfNAEgNQkkOAwlORAmOxEnPBEoPxEpQBEqQRErQxEsRQktRhIuSBEvSgkwSxMxTBEyTREzTgk0URQ1Uhg2VBk3VRk4WBk5WRk6Whk7XBk8Xgk9Xxo-YRk_YwlAZBtBZRlCZhlDZwlEahxFayBGbAJHbQJIbgJJbwJKcAJLcgJMdAlNdSFOdwJPeQlQeiJRewJSfAJTfQlUgAEjVYEBJ1aCAQNXgwEDWIQBA1mFAQNahgEDW4gBA1yKAQldiwEoXo0BA1-PAQlgkAEpYZEBA2KSAQNjkwEJZJYBKmWXAS5mmAEFZ5kBBWiaAQVpmwEFapwBBWueAQVsoAEJbaEBL26jAQVvpQEJcKYBMHGnAQVyqAEFc6kBCXasATF3rQE3eK4BBnmvAQZ6sAEGe7EBBnyyAQZ9tAEGfrYBCX-3ATiAAbkBBoEBuwEJggG8ATmDAb0BBoQBvgEGhQG_AQmGAcIBOocBwwE-iAHFAT-JAcYBP4oByQE_iwHKAT-MAcsBP40BzQE_jgHPAQmPAdABQJAB0gE_kQHUAQmSAdUBQZMB1gE_lAHXAT-VAdgBCZYB2wFClwHcAUaYAd0BB5kB3gEHmgHfAQebAeABB5wB4QEHnQHjAQeeAeUBCZ8B5gFHoAHoAQehAeoBCaIB6wFIowHsAQekAe0BB6UB7gEJpgHxAUmnAfIBTagB9AFOqQH1AU6qAfgBTqsB-QFOrAH6AU6tAfwBTq4B_gEJrwH_AU-wAYECTrEBgwIJsgGEAlCzAYUCTrQBhgJOtQGHAgm2AYoCUbcBiwJXuAGNAli5AY4CWLoBkQJYuwGSAli8AZMCWL0BlQJYvgGXAgm_AZgCWcABmgJYwQGcAgnCAZ0CWsMBngJYxAGfAljFAaACCcYBowJbxwGkAl_IAaYCYMkBpwJgygGqAmDLAasCYMwBrAJgzQGuAmDOAbACCc8BsQJh0AGzAmDRAbUCCdIBtgJi0wG3AmDUAbgCYNUBuQIJ1gG8AmPXAb0CZw" + graph: "3QRnwAEZAQAAgwMAIAQAAIQDACAJAACFAwAgDAAAhgMAIA0AAIYDACAOAACHAwAgDwAAiAMAINgBAACCAwAw2QEAAAMAENoBAACCAwAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAAAABkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACEBAAAAAQAgGQEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIQEAAAADACAOAQAArAQAIAQAAK8EACAJAACwBAAgDAAAsQQAIA0AALEEACAOAACyBAAgDwAAswQAIO4BAAC6AwAghgIAALoDACCVAgAAugMAIJYCAAC6AwAgmwIAALoDACCfAgAAugMAIKACAAC6AwAgAwAAAAMAIAIAAAUAMAMAAAEAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAMcCACGQAgEAxwIAIZECAQDHAgAhkgIBAMcCACGTAgEAxwIAIZQCAQDwAgAhlQJAAPECACGWAgEA8AIAIQUFAACsBAAgBwAArgQAIJQCAAC6AwAglQIAALoDACCWAgAAugMAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAAAAAZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhAwAAAAcAIAIAAAgAMAMAAAkAIAkGAAD_AgAg2AEAAP0CADDZAQAACwAQ2gEAAP0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGMAgEAxwIAIY4CAAD-Ao4CIgEGAACtBAAgCgYAAP8CACDYAQAA_QIAMNkBAAALABDaAQAA_QIAMOABQADIAgAh7wEBAMcCACGFAkAAyAIAIYwCAQDHAgAhjgIAAP4CjgIiowIAAPwCACADAAAACwAgAgAADAAwAwAADQAgAQAAAAsAIAgKAAD3AgAgCwAA9wIAINgBAAD7AgAw2QEAABAAENoBAAD7AgAwiQIBAMcCACGKAgEAxwIAIYsCAgDWAgAhAgoAAKwEACALAACsBAAgCQoAAPcCACALAAD3AgAg2AEAAPsCADDZAQAAEAAQ2gEAAPsCADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACGiAgAA-gIAIAMAAAAQACACAAARADADAAASACADAAAAEAAgAgAAEQAwAwAAEgAgCAUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIYcCIADeAgAhAQUAAKwEACAJBQAA9wIAINgBAAD5AgAw2QEAABUAENoBAAD5AgAw4AFAAMgCACHvAQEAxwIAIfEBAQDHAgAhhwIgAN4CACGhAgAA-AIAIAMAAAAVACACAAAWADADAAAXACAIBQAA9wIAINgBAAD2AgAw2QEAABkAENoBAAD2AgAw7wEBAMcCACHxAQEAxwIAIYQCQADIAgAhhQJAAMgCACEBBQAArAQAIAkFAAD3AgAg2AEAAPYCADDZAQAAGQAQ2gEAAPYCADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIaECAAD1AgAgAwAAABkAIAIAABoAMAMAABsAIAEAAAADACABAAAABwAgAQAAABAAIAEAAAAQACABAAAAFQAgAQAAABkAIAEAAAABACADAAAAAwAgAgAABQAwAwAAAQAgAwAAAAMAIAIAAAUAMAMAAAEAIAMAAAADACACAAAFADADAAABACAWAQAAqwQAIAQAAKUEACAJAACmBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQEVAAAnACAP4AFAAAAAAe4BAQAAAAGFAkAAAAABhgIBAAAAAY8CAQAAAAGSAgEAAAABkwIBAAAAAZUCQAAAAAGWAgEAAAABmwIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABARUAACkAMAEVAAApADABAAAAAwAgFgEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIA8AAN8DACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACECAAAAAQAgFQAALQAgD-ABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIQIAAAADACAVAAAvACACAAAAAwAgFQAALwAgAQAAAAMAIAMAAAABACAcAAAnACAdAAAtACABAAAAAQAgAQAAAAMAIAoIAADWAwAgIgAA2AMAICMAANcDACDuAQAAugMAIIYCAAC6AwAglQIAALoDACCWAgAAugMAIJsCAAC6AwAgnwIAALoDACCgAgAAugMAIBLYAQAA9AIAMNkBAAA3ABDaAQAA9AIAMOABQADAAgAh7gEBAOcCACGFAkAAwAIAIYYCAQDnAgAhjwIBAL8CACGSAgEAvwIAIZMCAQC_AgAhlQJAAOgCACGWAgEA5wIAIZsCAQDnAgAhnAIBAL8CACGdAiAA2gIAIZ4CIADaAgAhnwJAAOgCACGgAgEA5wIAIQMAAAADACACAAA2ADAhAAA3ACADAAAAAwAgAgAABQAwAwAAAQAgCdgBAADzAgAw2QEAAD0AENoBAADzAgAw4AFAAMgCACHvAQEAxwIAIY8CAQAAAAGYAgEA8AIAIZkCQADxAgAhmgIBAPACACEBAAAAOgAgAQAAADoAIAnYAQAA8wIAMNkBAAA9ABDaAQAA8wIAMOABQADIAgAh7wEBAMcCACGPAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQOYAgAAugMAIJkCAAC6AwAgmgIAALoDACADAAAAPQAgAgAAPgAwAwAAOgAgAwAAAD0AIAIAAD4AMAMAADoAIAMAAAA9ACACAAA-ADADAAA6ACAG4AFAAAAAAe8BAQAAAAGPAgEAAAABmAIBAAAAAZkCQAAAAAGaAgEAAAABARUAAEIAIAbgAUAAAAAB7wEBAAAAAY8CAQAAAAGYAgEAAAABmQJAAAAAAZoCAQAAAAEBFQAARAAwARUAAEQAMAbgAUAAjQMAIe8BAQCMAwAhjwIBAIwDACGYAgEAvgMAIZkCQAC_AwAhmgIBAL4DACECAAAAOgAgFQAARwAgBuABQACNAwAh7wEBAIwDACGPAgEAjAMAIZgCAQC-AwAhmQJAAL8DACGaAgEAvgMAIQIAAAA9ACAVAABJACACAAAAPQAgFQAASQAgAwAAADoAIBwAAEIAIB0AAEcAIAEAAAA6ACABAAAAPQAgBggAANMDACAiAADVAwAgIwAA1AMAIJgCAAC6AwAgmQIAALoDACCaAgAAugMAIAnYAQAA8gIAMNkBAABQABDaAQAA8gIAMOABQADAAgAh7wEBAL8CACGPAgEAvwIAIZgCAQDnAgAhmQJAAOgCACGaAgEA5wIAIQMAAAA9ACACAABPADAhAABQACADAAAAPQAgAgAAPgAwAwAAOgAgCdgBAADvAgAw2QEAAFYAENoBAADvAgAw4AFAAMgCACGPAgEAAAABlwIBAMcCACGYAgEA8AIAIZkCQADxAgAhmgIBAPACACEBAAAAUwAgAQAAAFMAIAnYAQAA7wIAMNkBAABWABDaAQAA7wIAMOABQADIAgAhjwIBAMcCACGXAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQOYAgAAugMAIJkCAAC6AwAgmgIAALoDACADAAAAVgAgAgAAVwAwAwAAUwAgAwAAAFYAIAIAAFcAMAMAAFMAIAMAAABWACACAABXADADAABTACAG4AFAAAAAAY8CAQAAAAGXAgEAAAABmAIBAAAAAZkCQAAAAAGaAgEAAAABARUAAFsAIAbgAUAAAAABjwIBAAAAAZcCAQAAAAGYAgEAAAABmQJAAAAAAZoCAQAAAAEBFQAAXQAwARUAAF0AMAbgAUAAjQMAIY8CAQCMAwAhlwIBAIwDACGYAgEAvgMAIZkCQAC_AwAhmgIBAL4DACECAAAAUwAgFQAAYAAgBuABQACNAwAhjwIBAIwDACGXAgEAjAMAIZgCAQC-AwAhmQJAAL8DACGaAgEAvgMAIQIAAABWACAVAABiACACAAAAVgAgFQAAYgAgAwAAAFMAIBwAAFsAIB0AAGAAIAEAAABTACABAAAAVgAgBggAANADACAiAADSAwAgIwAA0QMAIJgCAAC6AwAgmQIAALoDACCaAgAAugMAIAnYAQAA7gIAMNkBAABpABDaAQAA7gIAMOABQADAAgAhjwIBAL8CACGXAgEAvwIAIZgCAQDnAgAhmQJAAOgCACGaAgEA5wIAIQMAAABWACACAABoADAhAABpACADAAAAVgAgAgAAVwAwAwAAUwAgAQAAAAkAIAEAAAAJACADAAAABwAgAgAACAAwAwAACQAgAwAAAAcAIAIAAAgAMAMAAAkAIAMAAAAHACACAAAIADADAAAJACANBQAAzgMAIAcAAM8DACDgAUAAAAAB8QEBAAAAAYUCQAAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAkAAAAABlgIBAAAAAQEVAABxACAL4AFAAAAAAfEBAQAAAAGFAkAAAAABjwIBAAAAAZACAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQJAAAAAAZYCAQAAAAEBFQAAcwAwARUAAHMAMA0FAADAAwAgBwAAwQMAIOABQACNAwAh8QEBAIwDACGFAkAAjQMAIY8CAQCMAwAhkAIBAIwDACGRAgEAjAMAIZICAQCMAwAhkwIBAIwDACGUAgEAvgMAIZUCQAC_AwAhlgIBAL4DACECAAAACQAgFQAAdgAgC-ABQACNAwAh8QEBAIwDACGFAkAAjQMAIY8CAQCMAwAhkAIBAIwDACGRAgEAjAMAIZICAQCMAwAhkwIBAIwDACGUAgEAvgMAIZUCQAC_AwAhlgIBAL4DACECAAAABwAgFQAAeAAgAgAAAAcAIBUAAHgAIAMAAAAJACAcAABxACAdAAB2ACABAAAACQAgAQAAAAcAIAYIAAC7AwAgIgAAvQMAICMAALwDACCUAgAAugMAIJUCAAC6AwAglgIAALoDACAO2AEAAOYCADDZAQAAfwAQ2gEAAOYCADDgAUAAwAIAIfEBAQC_AgAhhQJAAMACACGPAgEAvwIAIZACAQC_AgAhkQIBAL8CACGSAgEAvwIAIZMCAQC_AgAhlAIBAOcCACGVAkAA6AIAIZYCAQDnAgAhAwAAAAcAIAIAAH4AMCEAAH8AIAMAAAAHACACAAAIADADAAAJACABAAAADQAgAQAAAA0AIAMAAAALACACAAAMADADAAANACADAAAACwAgAgAADAAwAwAADQAgAwAAAAsAIAIAAAwAMAMAAA0AIAYGAAC5AwAg4AFAAAAAAe8BAQAAAAGFAkAAAAABjAIBAAAAAY4CAAAAjgICARUAAIcBACAF4AFAAAAAAe8BAQAAAAGFAkAAAAABjAIBAAAAAY4CAAAAjgICARUAAIkBADABFQAAiQEAMAYGAAC4AwAg4AFAAI0DACHvAQEAjAMAIYUCQACNAwAhjAIBAIwDACGOAgAAtwOOAiICAAAADQAgFQAAjAEAIAXgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGMAgEAjAMAIY4CAAC3A44CIgIAAAALACAVAACOAQAgAgAAAAsAIBUAAI4BACADAAAADQAgHAAAhwEAIB0AAIwBACABAAAADQAgAQAAAAsAIAMIAAC0AwAgIgAAtgMAICMAALUDACAI2AEAAOICADDZAQAAlQEAENoBAADiAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhjAIBAL8CACGOAgAA4wKOAiIDAAAACwAgAgAAlAEAMCEAAJUBACADAAAACwAgAgAADAAwAwAADQAgAQAAABIAIAEAAAASACADAAAAEAAgAgAAEQAwAwAAEgAgAwAAABAAIAIAABEAMAMAABIAIAMAAAAQACACAAARADADAAASACAFCgAAsgMAIAsAALMDACCJAgEAAAABigIBAAAAAYsCAgAAAAEBFQAAnQEAIAOJAgEAAAABigIBAAAAAYsCAgAAAAEBFQAAnwEAMAEVAACfAQAwBQoAALADACALAACxAwAgiQIBAIwDACGKAgEAjAMAIYsCAgCWAwAhAgAAABIAIBUAAKIBACADiQIBAIwDACGKAgEAjAMAIYsCAgCWAwAhAgAAABAAIBUAAKQBACACAAAAEAAgFQAApAEAIAMAAAASACAcAACdAQAgHQAAogEAIAEAAAASACABAAAAEAAgBQgAAKsDACAiAACuAwAgIwAArQMAIHQAAKwDACB1AACvAwAgBtgBAADhAgAw2QEAAKsBABDaAQAA4QIAMIkCAQC_AgAhigIBAL8CACGLAgIAzwIAIQMAAAAQACACAACqAQAwIQAAqwEAIAMAAAAQACACAAARADADAAASACABAAAAFwAgAQAAABcAIAMAAAAVACACAAAWADADAAAXACADAAAAFQAgAgAAFgAwAwAAFwAgAwAAABUAIAIAABYAMAMAABcAIAUFAACqAwAg4AFAAAAAAe8BAQAAAAHxAQEAAAABhwIgAAAAAQEVAACzAQAgBOABQAAAAAHvAQEAAAAB8QEBAAAAAYcCIAAAAAEBFQAAtQEAMAEVAAC1AQAwBQUAAKkDACDgAUAAjQMAIe8BAQCMAwAh8QEBAIwDACGHAiAApQMAIQIAAAAXACAVAAC4AQAgBOABQACNAwAh7wEBAIwDACHxAQEAjAMAIYcCIAClAwAhAgAAABUAIBUAALoBACACAAAAFQAgFQAAugEAIAMAAAAXACAcAACzAQAgHQAAuAEAIAEAAAAXACABAAAAFQAgAwgAAKYDACAiAACoAwAgIwAApwMAIAfYAQAA4AIAMNkBAADBAQAQ2gEAAOACADDgAUAAwAIAIe8BAQC_AgAh8QEBAL8CACGHAiAA2gIAIQMAAAAVACACAADAAQAwIQAAwQEAIAMAAAAVACACAAAWADADAAAXACAJ2AEAAN0CADDZAQAAxwEAENoBAADdAgAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhhgIBAMcCACGHAiAA3gIAIYgCAADfAgAgAQAAAMQBACABAAAAxAEAIAjYAQAA3QIAMNkBAADHAQAQ2gEAAN0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGGAgEAxwIAIYcCIADeAgAhAAMAAADHAQAgAgAAyAEAMAMAAMQBACADAAAAxwEAIAIAAMgBADADAADEAQAgAwAAAMcBACACAADIAQAwAwAAxAEAIAXgAUAAAAAB7wEBAAAAAYUCQAAAAAGGAgEAAAABhwIgAAAAAQEVAADMAQAgBeABQAAAAAHvAQEAAAABhQJAAAAAAYYCAQAAAAGHAiAAAAABARUAAM4BADABFQAAzgEAMAXgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGGAgEAjAMAIYcCIAClAwAhAgAAAMQBACAVAADRAQAgBeABQACNAwAh7wEBAIwDACGFAkAAjQMAIYYCAQCMAwAhhwIgAKUDACECAAAAxwEAIBUAANMBACACAAAAxwEAIBUAANMBACADAAAAxAEAIBwAAMwBACAdAADRAQAgAQAAAMQBACABAAAAxwEAIAMIAACiAwAgIgAApAMAICMAAKMDACAI2AEAANkCADDZAQAA2gEAENoBAADZAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhhgIBAL8CACGHAiAA2gIAIQMAAADHAQAgAgAA2QEAMCEAANoBACADAAAAxwEAIAIAAMgBADADAADEAQAgAQAAABsAIAEAAAAbACADAAAAGQAgAgAAGgAwAwAAGwAgAwAAABkAIAIAABoAMAMAABsAIAMAAAAZACACAAAaADADAAAbACAFBQAAoQMAIO8BAQAAAAHxAQEAAAABhAJAAAAAAYUCQAAAAAEBFQAA4gEAIATvAQEAAAAB8QEBAAAAAYQCQAAAAAGFAkAAAAABARUAAOQBADABFQAA5AEAMAUFAACgAwAg7wEBAIwDACHxAQEAjAMAIYQCQACNAwAhhQJAAI0DACECAAAAGwAgFQAA5wEAIATvAQEAjAMAIfEBAQCMAwAhhAJAAI0DACGFAkAAjQMAIQIAAAAZACAVAADpAQAgAgAAABkAIBUAAOkBACADAAAAGwAgHAAA4gEAIB0AAOcBACABAAAAGwAgAQAAABkAIAMIAACdAwAgIgAAnwMAICMAAJ4DACAH2AEAANgCADDZAQAA8AEAENoBAADYAgAw7wEBAL8CACHxAQEAvwIAIYQCQADAAgAhhQJAAMACACEDAAAAGQAgAgAA7wEAMCEAAPABACADAAAAGQAgAgAAGgAwAwAAGwAgDdgBAADVAgAw2QEAAPYBABDaAQAA1QIAMPEBAQAAAAHyAQEAxwIAIfMBAQDHAgAh9AECANYCACH1AQAA0AIAIPYBAADQAgAg9wEAANACACD4AQIAAAAB-QEBAMcCACH6AQAA1wIAIAEAAADzAQAgAQAAAPMBACAN2AEAANUCADDZAQAA9gEAENoBAADVAgAw8QEBAMcCACHyAQEAxwIAIfMBAQDHAgAh9AECANYCACH1AQAA0AIAIPYBAADQAgAg9wEAANACACD4AQIA1gIAIfkBAQDHAgAh-gEAANcCACAAAwAAAPYBACACAAD3AQAwAwAA8wEAIAMAAAD2AQAgAgAA9wEAMAMAAPMBACADAAAA9gEAIAIAAPcBADADAADzAQAgCvEBAQAAAAHyAQEAAAAB8wEBAAAAAfQBAgAAAAH1AQAAmgMAIPYBAACbAwAg9wEAAJwDACD4AQIAAAAB-QEBAAAAAfoBgAAAAAEBFQAA-wEAIArxAQEAAAAB8gEBAAAAAfMBAQAAAAH0AQIAAAAB9QEAAJoDACD2AQAAmwMAIPcBAACcAwAg-AECAAAAAfkBAQAAAAH6AYAAAAABARUAAP0BADABFQAA_QEAMArxAQEAjAMAIfIBAQCMAwAh8wEBAIwDACH0AQIAlgMAIfUBAACXAwAg9gEAAJgDACD3AQAAmQMAIPgBAgCWAwAh-QEBAIwDACH6AYAAAAABAgAAAPMBACAVAACAAgAgCvEBAQCMAwAh8gEBAIwDACHzAQEAjAMAIfQBAgCWAwAh9QEAAJcDACD2AQAAmAMAIPcBAACZAwAg-AECAJYDACH5AQEAjAMAIfoBgAAAAAECAAAA9gEAIBUAAIICACACAAAA9gEAIBUAAIICACADAAAA8wEAIBwAAPsBACAdAACAAgAgAQAAAPMBACABAAAA9gEAIAUIAACRAwAgIgAAlAMAICMAAJMDACB0AACSAwAgdQAAlQMAIA3YAQAAzgIAMNkBAACJAgAQ2gEAAM4CADDxAQEAvwIAIfIBAQC_AgAh8wEBAL8CACH0AQIAzwIAIfUBAADQAgAg9gEAANACACD3AQAA0AIAIPgBAgDPAgAh-QEBAL8CACH6AQAA0QIAIAMAAAD2AQAgAgAAiAIAMCEAAIkCACADAAAA9gEAIAIAAPcBADADAADzAQAgBtgBAADMAgAw2QEAAI8CABDaAQAAzAIAMO4BAQDHAgAh7wEBAMcCACHwAQAAzQIAIAEAAACMAgAgAQAAAIwCACAF2AEAAMwCADDZAQAAjwIAENoBAADMAgAw7gEBAMcCACHvAQEAxwIAIQADAAAAjwIAIAIAAJACADADAACMAgAgAwAAAI8CACACAACQAgAwAwAAjAIAIAMAAACPAgAgAgAAkAIAMAMAAIwCACAC7gEBAAAAAe8BAQAAAAEBFQAAlAIAIALuAQEAAAAB7wEBAAAAAQEVAACWAgAwARUAAJYCADAC7gEBAIwDACHvAQEAjAMAIQIAAACMAgAgFQAAmQIAIALuAQEAjAMAIe8BAQCMAwAhAgAAAI8CACAVAACbAgAgAgAAAI8CACAVAACbAgAgAwAAAIwCACAcAACUAgAgHQAAmQIAIAEAAACMAgAgAQAAAI8CACADCAAAjgMAICIAAJADACAjAACPAwAgBdgBAADLAgAw2QEAAKICABDaAQAAywIAMO4BAQC_AgAh7wEBAL8CACEDAAAAjwIAIAIAAKECADAhAACiAgAgAwAAAI8CACACAACQAgAwAwAAjAIAIAvYAQAAxgIAMNkBAACoAgAQ2gEAAMYCADDbAQEAxwIAIdwBAQDHAgAh3QEBAMcCACHeAQEAxwIAId8BAQDHAgAh4AFAAMgCACHsAQAAyQIAIO0BAADKAgAgAQAAAKUCACABAAAApQIAIAnYAQAAxgIAMNkBAACoAgAQ2gEAAMYCADDbAQEAxwIAIdwBAQDHAgAh3QEBAMcCACHeAQEAxwIAId8BAQDHAgAh4AFAAMgCACEAAwAAAKgCACACAACpAgAwAwAApQIAIAMAAACoAgAgAgAAqQIAMAMAAKUCACADAAAAqAIAIAIAAKkCADADAAClAgAgBtsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BAQAAAAHfAQEAAAAB4AFAAAAAAQEVAACtAgAgBtsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BAQAAAAHfAQEAAAAB4AFAAAAAAQEVAACvAgAwARUAAK8CADAG2wEBAIwDACHcAQEAjAMAId0BAQCMAwAh3gEBAIwDACHfAQEAjAMAIeABQACNAwAhAgAAAKUCACAVAACyAgAgBtsBAQCMAwAh3AEBAIwDACHdAQEAjAMAId4BAQCMAwAh3wEBAIwDACHgAUAAjQMAIQIAAACoAgAgFQAAtAIAIAIAAACoAgAgFQAAtAIAIAMAAAClAgAgHAAArQIAIB0AALICACABAAAApQIAIAEAAACoAgAgAwgAAIkDACAiAACLAwAgIwAAigMAIAnYAQAAvgIAMNkBAAC7AgAQ2gEAAL4CADDbAQEAvwIAIdwBAQC_AgAh3QEBAL8CACHeAQEAvwIAId8BAQC_AgAh4AFAAMACACEDAAAAqAIAIAIAALoCADAhAAC7AgAgAwAAAKgCACACAACpAgAwAwAApQIAIAnYAQAAvgIAMNkBAAC7AgAQ2gEAAL4CADDbAQEAvwIAIdwBAQC_AgAh3QEBAL8CACHeAQEAvwIAId8BAQC_AgAh4AFAAMACACEOCAAAwgIAICIAAMUCACAjAADFAgAg4QEBAAAAAeIBAQAAAATjAQEAAAAE5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDEAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCwgAAMICACAiAADDAgAgIwAAwwIAIOEBQAAAAAHiAUAAAAAE4wFAAAAABOQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAAwQIAIQsIAADCAgAgIgAAwwIAICMAAMMCACDhAUAAAAAB4gFAAAAABOMBQAAAAATkAUAAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AFAAMECACEI4QECAAAAAeIBAgAAAATjAQIAAAAE5AECAAAAAeUBAgAAAAHmAQIAAAAB5wECAAAAAegBAgDCAgAhCOEBQAAAAAHiAUAAAAAE4wFAAAAABOQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAAwwIAIQ4IAADCAgAgIgAAxQIAICMAAMUCACDhAQEAAAAB4gEBAAAABOMBAQAAAATkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAMQCACHpAQEAAAAB6gEBAAAAAesBAQAAAAEL4QEBAAAAAeIBAQAAAATjAQEAAAAE5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDFAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCdgBAADGAgAw2QEAAKgCABDaAQAAxgIAMNsBAQDHAgAh3AEBAMcCACHdAQEAxwIAId4BAQDHAgAh3wEBAMcCACHgAUAAyAIAIQvhAQEAAAAB4gEBAAAABOMBAQAAAATkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAMUCACHpAQEAAAAB6gEBAAAAAesBAQAAAAEI4QFAAAAAAeIBQAAAAATjAUAAAAAE5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADDAgAhAtsBAQAAAAHdAQEAAAABAtsBAQAAAAHcAQEAAAABBdgBAADLAgAw2QEAAKICABDaAQAAywIAMO4BAQC_AgAh7wEBAL8CACEF2AEAAMwCADDZAQAAjwIAENoBAADMAgAw7gEBAMcCACHvAQEAxwIAIQLuAQEAAAAB7wEBAAAAAQ3YAQAAzgIAMNkBAACJAgAQ2gEAAM4CADDxAQEAvwIAIfIBAQC_AgAh8wEBAL8CACH0AQIAzwIAIfUBAADQAgAg9gEAANACACD3AQAA0AIAIPgBAgDPAgAh-QEBAL8CACH6AQAA0QIAIA0IAADCAgAgIgAAwgIAICMAAMICACB0AADUAgAgdQAAwgIAIOEBAgAAAAHiAQIAAAAE4wECAAAABOQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIA0wIAIQThAQEAAAAFgQIBAAAAAYICAQAAAASDAgEAAAAEDwgAAMICACAiAADSAgAgIwAA0gIAIOEBgAAAAAHkAYAAAAAB5QGAAAAAAeYBgAAAAAHnAYAAAAAB6AGAAAAAAfsBAQAAAAH8AQEAAAAB_QEBAAAAAf4BgAAAAAH_AYAAAAABgAKAAAAAAQzhAYAAAAAB5AGAAAAAAeUBgAAAAAHmAYAAAAAB5wGAAAAAAegBgAAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AYAAAAAB_wGAAAAAAYACgAAAAAENCAAAwgIAICIAAMICACAjAADCAgAgdAAA1AIAIHUAAMICACDhAQIAAAAB4gECAAAABOMBAgAAAATkAQIAAAAB5QECAAAAAeYBAgAAAAHnAQIAAAAB6AECANMCACEI4QEIAAAAAeIBCAAAAATjAQgAAAAE5AEIAAAAAeUBCAAAAAHmAQgAAAAB5wEIAAAAAegBCADUAgAhDdgBAADVAgAw2QEAAPYBABDaAQAA1QIAMPEBAQDHAgAh8gEBAMcCACHzAQEAxwIAIfQBAgDWAgAh9QEAANACACD2AQAA0AIAIPcBAADQAgAg-AECANYCACH5AQEAxwIAIfoBAADXAgAgCOEBAgAAAAHiAQIAAAAE4wECAAAABOQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIAwgIAIQzhAYAAAAAB5AGAAAAAAeUBgAAAAAHmAYAAAAAB5wGAAAAAAegBgAAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AYAAAAAB_wGAAAAAAYACgAAAAAEH2AEAANgCADDZAQAA8AEAENoBAADYAgAw7wEBAL8CACHxAQEAvwIAIYQCQADAAgAhhQJAAMACACEI2AEAANkCADDZAQAA2gEAENoBAADZAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhhgIBAL8CACGHAiAA2gIAIQUIAADCAgAgIgAA3AIAICMAANwCACDhASAAAAAB6AEgANsCACEFCAAAwgIAICIAANwCACAjAADcAgAg4QEgAAAAAegBIADbAgAhAuEBIAAAAAHoASAA3AIAIQjYAQAA3QIAMNkBAADHAQAQ2gEAAN0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGGAgEAxwIAIYcCIADeAgAhAuEBIAAAAAHoASAA3AIAIQLvAQEAAAABhgIBAAAAAQfYAQAA4AIAMNkBAADBAQAQ2gEAAOACADDgAUAAwAIAIe8BAQC_AgAh8QEBAL8CACGHAiAA2gIAIQbYAQAA4QIAMNkBAACrAQAQ2gEAAOECADCJAgEAvwIAIYoCAQC_AgAhiwICAM8CACEI2AEAAOICADDZAQAAlQEAENoBAADiAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhjAIBAL8CACGOAgAA4wKOAiIHCAAAwgIAICIAAOUCACAjAADlAgAg4QEAAACOAgLiAQAAAI4CCOMBAAAAjgII6AEAAOQCjgIiBwgAAMICACAiAADlAgAgIwAA5QIAIOEBAAAAjgIC4gEAAACOAgjjAQAAAI4CCOgBAADkAo4CIgThAQAAAI4CAuIBAAAAjgII4wEAAACOAgjoAQAA5QKOAiIO2AEAAOYCADDZAQAAfwAQ2gEAAOYCADDgAUAAwAIAIfEBAQC_AgAhhQJAAMACACGPAgEAvwIAIZACAQC_AgAhkQIBAL8CACGSAgEAvwIAIZMCAQC_AgAhlAIBAOcCACGVAkAA6AIAIZYCAQDnAgAhDggAAOoCACAiAADtAgAgIwAA7QIAIOEBAQAAAAHiAQEAAAAF4wEBAAAABeQBAQAAAAHlAQEAAAAB5gEBAAAAAecBAQAAAAHoAQEA7AIAIekBAQAAAAHqAQEAAAAB6wEBAAAAAQsIAADqAgAgIgAA6wIAICMAAOsCACDhAUAAAAAB4gFAAAAABeMBQAAAAAXkAUAAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AFAAOkCACELCAAA6gIAICIAAOsCACAjAADrAgAg4QFAAAAAAeIBQAAAAAXjAUAAAAAF5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADpAgAhCOEBAgAAAAHiAQIAAAAF4wECAAAABeQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIA6gIAIQjhAUAAAAAB4gFAAAAABeMBQAAAAAXkAUAAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AFAAOsCACEOCAAA6gIAICIAAO0CACAjAADtAgAg4QEBAAAAAeIBAQAAAAXjAQEAAAAF5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDsAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABC-EBAQAAAAHiAQEAAAAF4wEBAAAABeQBAQAAAAHlAQEAAAAB5gEBAAAAAecBAQAAAAHoAQEA7QIAIekBAQAAAAHqAQEAAAAB6wEBAAAAAQnYAQAA7gIAMNkBAABpABDaAQAA7gIAMOABQADAAgAhjwIBAL8CACGXAgEAvwIAIZgCAQDnAgAhmQJAAOgCACGaAgEA5wIAIQnYAQAA7wIAMNkBAABWABDaAQAA7wIAMOABQADIAgAhjwIBAMcCACGXAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQvhAQEAAAAB4gEBAAAABeMBAQAAAAXkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAO0CACHpAQEAAAAB6gEBAAAAAesBAQAAAAEI4QFAAAAAAeIBQAAAAAXjAUAAAAAF5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADrAgAhCdgBAADyAgAw2QEAAFAAENoBAADyAgAw4AFAAMACACHvAQEAvwIAIY8CAQC_AgAhmAIBAOcCACGZAkAA6AIAIZoCAQDnAgAhCdgBAADzAgAw2QEAAD0AENoBAADzAgAw4AFAAMgCACHvAQEAxwIAIY8CAQDHAgAhmAIBAPACACGZAkAA8QIAIZoCAQDwAgAhEtgBAAD0AgAw2QEAADcAENoBAAD0AgAw4AFAAMACACHuAQEA5wIAIYUCQADAAgAhhgIBAOcCACGPAgEAvwIAIZICAQC_AgAhkwIBAL8CACGVAkAA6AIAIZYCAQDnAgAhmwIBAOcCACGcAgEAvwIAIZ0CIADaAgAhngIgANoCACGfAkAA6AIAIaACAQDnAgAhAu8BAQAAAAHxAQEAAAABCAUAAPcCACDYAQAA9gIAMNkBAAAZABDaAQAA9gIAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhGwEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIacCAAADACCoAgAAAwAgAu8BAQAAAAHxAQEAAAABCAUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIYcCIADeAgAhAokCAQAAAAGKAgEAAAABCAoAAPcCACALAAD3AgAg2AEAAPsCADDZAQAAEAAQ2gEAAPsCADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACEC7wEBAAAAAYwCAQAAAAEJBgAA_wIAINgBAAD9AgAw2QEAAAsAENoBAAD9AgAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhjAIBAMcCACGOAgAA_gKOAiIE4QEAAACOAgLiAQAAAI4CCOMBAAAAjgII6AEAAOUCjgIiEgUAAPcCACAHAACBAwAg2AEAAIADADDZAQAABwAQ2gEAAIADADDgAUAAyAIAIfEBAQDHAgAhhQJAAMgCACGPAgEAxwIAIZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhpwIAAAcAIKgCAAAHACAQBQAA9wIAIAcAAIEDACDYAQAAgAMAMNkBAAAHABDaAQAAgAMAMOABQADIAgAh8QEBAMcCACGFAkAAyAIAIY8CAQDHAgAhkAIBAMcCACGRAgEAxwIAIZICAQDHAgAhkwIBAMcCACGUAgEA8AIAIZUCQADxAgAhlgIBAPACACEDpAIAAAsAIKUCAAALACCmAgAACwAgGQEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIRsBAACDAwAgBAAAhAMAIAkAAIUDACAMAACGAwAgDQAAhgMAIA4AAIcDACAPAACIAwAg2AEAAIIDADDZAQAAAwAQ2gEAAIIDADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQDHAgAhkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACGnAgAAAwAgqAIAAAMAIAOkAgAAAwAgpQIAAAMAIKYCAAADACADpAIAAAcAIKUCAAAHACCmAgAABwAgA6QCAAAQACClAgAAEAAgpgIAABAAIAOkAgAAFQAgpQIAABUAIKYCAAAVACADpAIAABkAIKUCAAAZACCmAgAAGQAgAAAAAawCAQAAAAEBrAJAAAAAAQAAAAAAAAAABawCAgAAAAGzAgIAAAABtAICAAAAAbUCAgAAAAG2AgIAAAABAqwCAQAAAASyAgEAAAAFAqwCAQAAAASyAgEAAAAFAqwCAQAAAASyAgEAAAAFAawCAQAAAAQBrAIBAAAABAGsAgEAAAAEAAAABRwAANkEACAdAADcBAAgqQIAANoEACCqAgAA2wQAIK8CAAABACADHAAA2QQAIKkCAADaBAAgrwIAAAEAIAAAAAGsAiAAAAABAAAABRwAANQEACAdAADXBAAgqQIAANUEACCqAgAA1gQAIK8CAAABACADHAAA1AQAIKkCAADVBAAgrwIAAAEAIAAAAAAABRwAAMwEACAdAADSBAAgqQIAAM0EACCqAgAA0QQAIK8CAAABACAFHAAAygQAIB0AAM8EACCpAgAAywQAIKoCAADOBAAgrwIAAAEAIAMcAADMBAAgqQIAAM0EACCvAgAAAQAgAxwAAMoEACCpAgAAywQAIK8CAAABACAAAAABrAIAAACOAgIFHAAAxQQAIB0AAMgEACCpAgAAxgQAIKoCAADHBAAgrwIAAAkAIAMcAADFBAAgqQIAAMYEACCvAgAACQAgAAAAAAGsAgEAAAABAawCQAAAAAEFHAAAvwQAIB0AAMMEACCpAgAAwAQAIKoCAADCBAAgrwIAAAEAIAscAADCAwAwHQAAxwMAMKkCAADDAwAwqgIAAMQDADCrAgAAxQMAIKwCAADGAwAwrQIAAMYDADCuAgAAxgMAMK8CAADGAwAwsAIAAMgDADCxAgAAyQMAMATgAUAAAAAB7wEBAAAAAYUCQAAAAAGOAgAAAI4CAgIAAAANACAcAADNAwAgAwAAAA0AIBwAAM0DACAdAADMAwAgARUAAMEEADAKBgAA_wIAINgBAAD9AgAw2QEAAAsAENoBAAD9AgAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhjAIBAMcCACGOAgAA_gKOAiKjAgAA_AIAIAIAAAANACAVAADMAwAgAgAAAMoDACAVAADLAwAgCNgBAADJAwAw2QEAAMoDABDaAQAAyQMAMOABQADIAgAh7wEBAMcCACGFAkAAyAIAIYwCAQDHAgAhjgIAAP4CjgIiCNgBAADJAwAw2QEAAMoDABDaAQAAyQMAMOABQADIAgAh7wEBAMcCACGFAkAAyAIAIYwCAQDHAgAhjgIAAP4CjgIiBOABQACNAwAh7wEBAIwDACGFAkAAjQMAIY4CAAC3A44CIgTgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGOAgAAtwOOAiIE4AFAAAAAAe8BAQAAAAGFAkAAAAABjgIAAACOAgIDHAAAvwQAIKkCAADABAAgrwIAAAEAIAQcAADCAwAwqQIAAMMDADCrAgAAxQMAIK8CAADGAwAwAAAAAAAAAAAABxwAALQEACAdAAC9BAAgqQIAALUEACCqAgAAvAQAIK0CAAADACCuAgAAAwAgrwIAAAEAIAscAACZBAAwHQAAngQAMKkCAACaBAAwqgIAAJsEADCrAgAAnAQAIKwCAACdBAAwrQIAAJ0EADCuAgAAnQQAMK8CAACdBAAwsAIAAJ8EADCxAgAAoAQAMAscAACNBAAwHQAAkgQAMKkCAACOBAAwqgIAAI8EADCrAgAAkAQAIKwCAACRBAAwrQIAAJEEADCuAgAAkQQAMK8CAACRBAAwsAIAAJMEADCxAgAAlAQAMAscAACEBAAwHQAAiAQAMKkCAACFBAAwqgIAAIYEADCrAgAAhwQAIKwCAAD8AwAwrQIAAPwDADCuAgAA_AMAMK8CAAD8AwAwsAIAAIkEADCxAgAA_wMAMAscAAD4AwAwHQAA_QMAMKkCAAD5AwAwqgIAAPoDADCrAgAA-wMAIKwCAAD8AwAwrQIAAPwDADCuAgAA_AMAMK8CAAD8AwAwsAIAAP4DADCxAgAA_wMAMAscAADsAwAwHQAA8QMAMKkCAADtAwAwqgIAAO4DADCrAgAA7wMAIKwCAADwAwAwrQIAAPADADCuAgAA8AMAMK8CAADwAwAwsAIAAPIDADCxAgAA8wMAMAscAADgAwAwHQAA5QMAMKkCAADhAwAwqgIAAOIDADCrAgAA4wMAIKwCAADkAwAwrQIAAOQDADCuAgAA5AMAMK8CAADkAwAwsAIAAOYDADCxAgAA5wMAMAPvAQEAAAABhAJAAAAAAYUCQAAAAAECAAAAGwAgHAAA6wMAIAMAAAAbACAcAADrAwAgHQAA6gMAIAEVAAC7BAAwCQUAAPcCACDYAQAA9gIAMNkBAAAZABDaAQAA9gIAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhoQIAAPUCACACAAAAGwAgFQAA6gMAIAIAAADoAwAgFQAA6QMAIAfYAQAA5wMAMNkBAADoAwAQ2gEAAOcDADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIQfYAQAA5wMAMNkBAADoAwAQ2gEAAOcDADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIQPvAQEAjAMAIYQCQACNAwAhhQJAAI0DACED7wEBAIwDACGEAkAAjQMAIYUCQACNAwAhA-8BAQAAAAGEAkAAAAABhQJAAAAAAQPgAUAAAAAB7wEBAAAAAYcCIAAAAAECAAAAFwAgHAAA9wMAIAMAAAAXACAcAAD3AwAgHQAA9gMAIAEVAAC6BAAwCQUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIYcCIADeAgAhoQIAAPgCACACAAAAFwAgFQAA9gMAIAIAAAD0AwAgFQAA9QMAIAfYAQAA8wMAMNkBAAD0AwAQ2gEAAPMDADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACGHAiAA3gIAIQfYAQAA8wMAMNkBAAD0AwAQ2gEAAPMDADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACGHAiAA3gIAIQPgAUAAjQMAIe8BAQCMAwAhhwIgAKUDACED4AFAAI0DACHvAQEAjAMAIYcCIAClAwAhA-ABQAAAAAHvAQEAAAABhwIgAAAAAQMKAACyAwAgiQIBAAAAAYsCAgAAAAECAAAAEgAgHAAAgwQAIAMAAAASACAcAACDBAAgHQAAggQAIAEVAAC5BAAwCQoAAPcCACALAAD3AgAg2AEAAPsCADDZAQAAEAAQ2gEAAPsCADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACGiAgAA-gIAIAIAAAASACAVAACCBAAgAgAAAIAEACAVAACBBAAgBtgBAAD_AwAw2QEAAIAEABDaAQAA_wMAMIkCAQDHAgAhigIBAMcCACGLAgIA1gIAIQbYAQAA_wMAMNkBAACABAAQ2gEAAP8DADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACECiQIBAIwDACGLAgIAlgMAIQMKAACwAwAgiQIBAIwDACGLAgIAlgMAIQMKAACyAwAgiQIBAAAAAYsCAgAAAAEDCwAAswMAIIoCAQAAAAGLAgIAAAABAgAAABIAIBwAAIwEACADAAAAEgAgHAAAjAQAIB0AAIsEACABFQAAuAQAMAIAAAASACAVAACLBAAgAgAAAIAEACAVAACKBAAgAooCAQCMAwAhiwICAJYDACEDCwAAsQMAIIoCAQCMAwAhiwICAJYDACEDCwAAswMAIIoCAQAAAAGLAgIAAAABCwcAAM8DACDgAUAAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABAgAAAAkAIBwAAJgEACADAAAACQAgHAAAmAQAIB0AAJcEACABFQAAtwQAMBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAAAAAZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhAgAAAAkAIBUAAJcEACACAAAAlQQAIBUAAJYEACAO2AEAAJQEADDZAQAAlQQAENoBAACUBAAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAMcCACGQAgEAxwIAIZECAQDHAgAhkgIBAMcCACGTAgEAxwIAIZQCAQDwAgAhlQJAAPECACGWAgEA8AIAIQ7YAQAAlAQAMNkBAACVBAAQ2gEAAJQEADDgAUAAyAIAIfEBAQDHAgAhhQJAAMgCACGPAgEAxwIAIZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhCuABQACNAwAhhQJAAI0DACGPAgEAjAMAIZACAQCMAwAhkQIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlAIBAL4DACGVAkAAvwMAIZYCAQC-AwAhCwcAAMEDACDgAUAAjQMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIQsHAADPAwAg4AFAAAAAAYUCQAAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAkAAAAABlgIBAAAAARQEAAClBAAgCQAApgQAIAwAAKcEACANAACoBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAACkBAAgAwAAAAEAIBwAAKQEACAdAACjBAAgARUAALYEADAZAQAAgwMAIAQAAIQDACAJAACFAwAgDAAAhgMAIA0AAIYDACAOAACHAwAgDwAAiAMAINgBAACCAwAw2QEAAAMAENoBAACCAwAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAAAABkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACECAAAAAQAgFQAAowQAIAIAAAChBAAgFQAAogQAIBLYAQAAoAQAMNkBAAChBAAQ2gEAAKAEADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQDHAgAhkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACES2AEAAKAEADDZAQAAoQQAENoBAACgBAAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAxwIAIZICAQDHAgAhkwIBAMcCACGVAkAA8QIAIZYCAQDwAgAhmwIBAPACACGcAgEAxwIAIZ0CIADeAgAhngIgAN4CACGfAkAA8QIAIaACAQDwAgAhDuABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEUBAAA2gMAIAkAANsDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRQEAAClBAAgCQAApgQAIAwAAKcEACANAACoBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQQcAACZBAAwqQIAAJoEADCrAgAAnAQAIK8CAACdBAAwBBwAAI0EADCpAgAAjgQAMKsCAACQBAAgrwIAAJEEADAEHAAAhAQAMKkCAACFBAAwqwIAAIcEACCvAgAA_AMAMAQcAAD4AwAwqQIAAPkDADCrAgAA-wMAIK8CAAD8AwAwBBwAAOwDADCpAgAA7QMAMKsCAADvAwAgrwIAAPADADAEHAAA4AMAMKkCAADhAwAwqwIAAOMDACCvAgAA5AMAMAMcAAC0BAAgqQIAALUEACCvAgAAAQAgDgEAAKwEACAEAACvBAAgCQAAsAQAIAwAALEEACANAACxBAAgDgAAsgQAIA8AALMEACDuAQAAugMAIIYCAAC6AwAglQIAALoDACCWAgAAugMAIJsCAAC6AwAgnwIAALoDACCgAgAAugMAIAUFAACsBAAgBwAArgQAIJQCAAC6AwAglQIAALoDACCWAgAAugMAIAAAAAAAABUBAACrBAAgCQAApgQAIAwAAKcEACANAACoBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAAtAQAIA7gAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQrgAUAAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABAooCAQAAAAGLAgIAAAABAokCAQAAAAGLAgIAAAABA-ABQAAAAAHvAQEAAAABhwIgAAAAAQPvAQEAAAABhAJAAAAAAYUCQAAAAAEDAAAAAwAgHAAAtAQAIB0AAL4EACAXAAAAAwAgAQAA2QMAIAkAANsDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAgFQAAvgQAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRUBAADZAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIA8AAN8DACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAAqwQAIAQAAKUEACAMAACnBAAgDQAAqAQAIA4AAKkEACAPAACqBAAg4AFAAAAAAe4BAQAAAAGFAkAAAAABhgIBAAAAAY8CAQAAAAGSAgEAAAABkwIBAAAAAZUCQAAAAAGWAgEAAAABmwIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABAgAAAAEAIBwAAL8EACAE4AFAAAAAAe8BAQAAAAGFAkAAAAABjgIAAACOAgIDAAAAAwAgHAAAvwQAIB0AAMQEACAXAAAAAwAgAQAA2QMAIAQAANoDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAgFQAAxAQAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRUBAADZAwAgBAAA2gMAIAwAANwDACANAADdAwAgDgAA3gMAIA8AAN8DACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEMBQAAzgMAIOABQAAAAAHxAQEAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABAgAAAAkAIBwAAMUEACADAAAABwAgHAAAxQQAIB0AAMkEACAOAAAABwAgBQAAwAMAIBUAAMkEACDgAUAAjQMAIfEBAQCMAwAhhQJAAI0DACGPAgEAjAMAIZACAQCMAwAhkQIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlAIBAL4DACGVAkAAvwMAIZYCAQC-AwAhDAUAAMADACDgAUAAjQMAIfEBAQCMAwAhhQJAAI0DACGPAgEAjAMAIZACAQCMAwAhkQIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlAIBAL4DACGVAkAAvwMAIZYCAQC-AwAhFQEAAKsEACAEAAClBAAgCQAApgQAIAwAAKcEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAADKBAAgFQEAAKsEACAEAAClBAAgCQAApgQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAADMBAAgAwAAAAMAIBwAAMoEACAdAADQBAAgFwAAAAMAIAEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACAOAADeAwAgDwAA3wMAIBUAANAEACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAJAADbAwAgDAAA3AMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhAwAAAAMAIBwAAMwEACAdAADTBAAgFwAAAAMAIAEAANkDACAEAADaAwAgCQAA2wMAIA0AAN0DACAOAADeAwAgDwAA3wMAIBUAANMEACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAJAADbAwAgDQAA3QMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAAKsEACAEAAClBAAgCQAApgQAIAwAAKcEACANAACoBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAADUBAAgAwAAAAMAIBwAANQEACAdAADYBAAgFwAAAAMAIAEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDwAA3wMAIBUAANgEACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAJAADbAwAgDAAA3AMAIA0AAN0DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAAKsEACAEAAClBAAgCQAApgQAIAwAAKcEACANAACoBAAgDgAAqQQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAADZBAAgAwAAAAMAIBwAANkEACAdAADdBAAgFwAAAAMAIAEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIBUAAN0EACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAJAADbAwAgDAAA3AMAIA0AAN0DACAOAADeAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhCAEEAQQGAQgACAkKAgwTBQ0UBQ4YBg8cBwMFAAEHDgMIAAQBBgACAQcPAAIKAAELAAEBBQABAQUAAQYEHQAJHgAMHwANIAAOIQAPIgAAAQEsAQEBMgEDCAANIgAOIwAPAAAAAwgADSIADiMADwAAAAMIABUiABYjABcAAAADCAAVIgAWIwAXAAAAAwgAHSIAHiMAHwAAAAMIAB0iAB4jAB8BBQABAQUAAQMIACQiACUjACYAAAADCAAkIgAlIwAmAQYAAgEGAAIDCAArIgAsIwAtAAAAAwgAKyIALCMALQIKAAELAAECCgABCwABBQgAMiIANSMANnQAM3UANAAAAAAABQgAMiIANSMANnQAM3UANAEFAAEBBQABAwgAOyIAPCMAPQAAAAMIADsiADwjAD0AAAADCABDIgBEIwBFAAAAAwgAQyIARCMARQEFAAEBBQABAwgASiIASyMATAAAAAMIAEoiAEsjAEwAAAAFCABSIgBVIwBWdABTdQBUAAAAAAAFCABSIgBVIwBWdABTdQBUAAAAAwgAXCIAXSMAXgAAAAMIAFwiAF0jAF4AAAADCABkIgBlIwBmAAAAAwgAZCIAZSMAZhACAREjARIkARMlARQmARYoARcqCRgrChkuARowCRsxCx4zAR80ASA1CSQ4DCU5ECY7ESc8ESg_ESlAESpBEStDESxFCS1GEi5IES9KCTBLEzFMETJNETNOCTRRFDVSGDZUGTdVGThYGTlZGTpaGTtcGTxeCT1fGj5hGT9jCUBkG0FlGUJmGUNnCURqHEVrIEZsAkdtAkhuAklvAkpwAktyAkx0CU11IU53Ak95CVB6IlF7AlJ8AlN9CVSAASNVgQEnVoIBA1eDAQNYhAEDWYUBA1qGAQNbiAEDXIoBCV2LAShejQEDX48BCWCQASlhkQEDYpIBA2OTAQlklgEqZZcBLmaYAQVnmQEFaJoBBWmbAQVqnAEFa54BBWygAQltoQEvbqMBBW-lAQlwpgEwcacBBXKoAQVzqQEJdqwBMXetATd4rgEGea8BBnqwAQZ7sQEGfLIBBn20AQZ-tgEJf7cBOIABuQEGgQG7AQmCAbwBOYMBvQEGhAG-AQaFAb8BCYYBwgE6hwHDAT6IAcUBP4kBxgE_igHJAT-LAcoBP4wBywE_jQHNAT-OAc8BCY8B0AFAkAHSAT-RAdQBCZIB1QFBkwHWAT-UAdcBP5UB2AEJlgHbAUKXAdwBRpgB3QEHmQHeAQeaAd8BB5sB4AEHnAHhAQedAeMBB54B5QEJnwHmAUegAegBB6EB6gEJogHrAUijAewBB6QB7QEHpQHuAQmmAfEBSacB8gFNqAH0AU6pAfUBTqoB-AFOqwH5AU6sAfoBTq0B_AFOrgH-AQmvAf8BT7ABgQJOsQGDAgmyAYQCULMBhQJOtAGGAk61AYcCCbYBigJRtwGLAle4AY0CWLkBjgJYugGRAli7AZICWLwBkwJYvQGVAli-AZcCCb8BmAJZwAGaAljBAZwCCcIBnQJawwGeAljEAZ8CWMUBoAIJxgGjAlvHAaQCX8gBpgJgyQGnAmDKAaoCYMsBqwJgzAGsAmDNAa4CYM4BsAIJzwGxAmHQAbMCYNEBtQIJ0gG2AmLTAbcCYNQBuAJg1QG5AgnWAbwCY9cBvQJn" } config.compilerWasm = { getRuntime: async () => require('./query_compiler_fast_bg.js'), diff --git a/packages/forums-prisma-client/index-browser.js b/packages/forums-prisma-client/index-browser.js index 3b1e7b2..4ff19d0 100644 --- a/packages/forums-prisma-client/index-browser.js +++ b/packages/forums-prisma-client/index-browser.js @@ -187,6 +187,7 @@ exports.Prisma.TopicClosureScalarFieldEnum = { exports.Prisma.TopicWatchScalarFieldEnum = { topicId: 'topicId', memberId: 'memberId', + watching: 'watching', createdAt: 'createdAt' }; diff --git a/packages/forums-prisma-client/index.d.ts b/packages/forums-prisma-client/index.d.ts index 5865846..c3d5c75 100644 --- a/packages/forums-prisma-client/index.d.ts +++ b/packages/forums-prisma-client/index.d.ts @@ -8752,18 +8752,21 @@ export namespace Prisma { export type TopicWatchMinAggregateOutputType = { topicId: string | null memberId: string | null + watching: boolean | null createdAt: Date | null } export type TopicWatchMaxAggregateOutputType = { topicId: string | null memberId: string | null + watching: boolean | null createdAt: Date | null } export type TopicWatchCountAggregateOutputType = { topicId: number memberId: number + watching: number createdAt: number _all: number } @@ -8772,18 +8775,21 @@ export namespace Prisma { export type TopicWatchMinAggregateInputType = { topicId?: true memberId?: true + watching?: true createdAt?: true } export type TopicWatchMaxAggregateInputType = { topicId?: true memberId?: true + watching?: true createdAt?: true } export type TopicWatchCountAggregateInputType = { topicId?: true memberId?: true + watching?: true createdAt?: true _all?: true } @@ -8863,6 +8869,7 @@ export namespace Prisma { export type TopicWatchGroupByOutputType = { topicId: string memberId: string + watching: boolean createdAt: Date _count: TopicWatchCountAggregateOutputType | null _min: TopicWatchMinAggregateOutputType | null @@ -8886,6 +8893,7 @@ export namespace Prisma { export type TopicWatchSelect = $Extensions.GetSelect<{ topicId?: boolean memberId?: boolean + watching?: boolean createdAt?: boolean topic?: boolean | TopicDefaultArgs }, ExtArgs["result"]["topicWatch"]> @@ -8893,6 +8901,7 @@ export namespace Prisma { export type TopicWatchSelectCreateManyAndReturn = $Extensions.GetSelect<{ topicId?: boolean memberId?: boolean + watching?: boolean createdAt?: boolean topic?: boolean | TopicDefaultArgs }, ExtArgs["result"]["topicWatch"]> @@ -8900,6 +8909,7 @@ export namespace Prisma { export type TopicWatchSelectUpdateManyAndReturn = $Extensions.GetSelect<{ topicId?: boolean memberId?: boolean + watching?: boolean createdAt?: boolean topic?: boolean | TopicDefaultArgs }, ExtArgs["result"]["topicWatch"]> @@ -8907,10 +8917,11 @@ export namespace Prisma { export type TopicWatchSelectScalar = { topicId?: boolean memberId?: boolean + watching?: boolean createdAt?: boolean } - export type TopicWatchOmit = $Extensions.GetOmit<"topicId" | "memberId" | "createdAt", ExtArgs["result"]["topicWatch"]> + export type TopicWatchOmit = $Extensions.GetOmit<"topicId" | "memberId" | "watching" | "createdAt", ExtArgs["result"]["topicWatch"]> export type TopicWatchInclude = { topic?: boolean | TopicDefaultArgs } @@ -8929,6 +8940,7 @@ export namespace Prisma { scalars: $Extensions.GetPayloadResult<{ topicId: string memberId: string + watching: boolean createdAt: Date }, ExtArgs["result"]["topicWatch"]> composites: {} @@ -9356,6 +9368,7 @@ export namespace Prisma { interface TopicWatchFieldRefs { readonly topicId: FieldRef<"TopicWatch", 'String'> readonly memberId: FieldRef<"TopicWatch", 'String'> + readonly watching: FieldRef<"TopicWatch", 'Boolean'> readonly createdAt: FieldRef<"TopicWatch", 'DateTime'> } @@ -14986,6 +14999,7 @@ export namespace Prisma { export const TopicWatchScalarFieldEnum: { topicId: 'topicId', memberId: 'memberId', + watching: 'watching', createdAt: 'createdAt' }; @@ -15626,6 +15640,7 @@ export namespace Prisma { NOT?: TopicWatchWhereInput | TopicWatchWhereInput[] topicId?: StringFilter<"TopicWatch"> | string memberId?: StringFilter<"TopicWatch"> | string + watching?: BoolFilter<"TopicWatch"> | boolean createdAt?: DateTimeFilter<"TopicWatch"> | Date | string topic?: XOR } @@ -15633,6 +15648,7 @@ export namespace Prisma { export type TopicWatchOrderByWithRelationInput = { topicId?: SortOrder memberId?: SortOrder + watching?: SortOrder createdAt?: SortOrder topic?: TopicOrderByWithRelationInput } @@ -15644,6 +15660,7 @@ export namespace Prisma { NOT?: TopicWatchWhereInput | TopicWatchWhereInput[] topicId?: StringFilter<"TopicWatch"> | string memberId?: StringFilter<"TopicWatch"> | string + watching?: BoolFilter<"TopicWatch"> | boolean createdAt?: DateTimeFilter<"TopicWatch"> | Date | string topic?: XOR }, "topicId_memberId"> @@ -15651,6 +15668,7 @@ export namespace Prisma { export type TopicWatchOrderByWithAggregationInput = { topicId?: SortOrder memberId?: SortOrder + watching?: SortOrder createdAt?: SortOrder _count?: TopicWatchCountOrderByAggregateInput _max?: TopicWatchMaxOrderByAggregateInput @@ -15663,6 +15681,7 @@ export namespace Prisma { NOT?: TopicWatchScalarWhereWithAggregatesInput | TopicWatchScalarWhereWithAggregatesInput[] topicId?: StringWithAggregatesFilter<"TopicWatch"> | string memberId?: StringWithAggregatesFilter<"TopicWatch"> | string + watching?: BoolWithAggregatesFilter<"TopicWatch"> | boolean createdAt?: DateTimeWithAggregatesFilter<"TopicWatch"> | Date | string } @@ -16419,6 +16438,7 @@ export namespace Prisma { export type TopicWatchCreateInput = { memberId: string + watching?: boolean createdAt?: Date | string topic: TopicCreateNestedOneWithoutWatchesInput } @@ -16426,11 +16446,13 @@ export namespace Prisma { export type TopicWatchUncheckedCreateInput = { topicId: string memberId: string + watching?: boolean createdAt?: Date | string } export type TopicWatchUpdateInput = { memberId?: StringFieldUpdateOperationsInput | string + watching?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string topic?: TopicUpdateOneRequiredWithoutWatchesNestedInput } @@ -16438,23 +16460,27 @@ export namespace Prisma { export type TopicWatchUncheckedUpdateInput = { topicId?: StringFieldUpdateOperationsInput | string memberId?: StringFieldUpdateOperationsInput | string + watching?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } export type TopicWatchCreateManyInput = { topicId: string memberId: string + watching?: boolean createdAt?: Date | string } export type TopicWatchUpdateManyMutationInput = { memberId?: StringFieldUpdateOperationsInput | string + watching?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } export type TopicWatchUncheckedUpdateManyInput = { topicId?: StringFieldUpdateOperationsInput | string memberId?: StringFieldUpdateOperationsInput | string + watching?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } @@ -17222,18 +17248,21 @@ export namespace Prisma { export type TopicWatchCountOrderByAggregateInput = { topicId?: SortOrder memberId?: SortOrder + watching?: SortOrder createdAt?: SortOrder } export type TopicWatchMaxOrderByAggregateInput = { topicId?: SortOrder memberId?: SortOrder + watching?: SortOrder createdAt?: SortOrder } export type TopicWatchMinOrderByAggregateInput = { topicId?: SortOrder memberId?: SortOrder + watching?: SortOrder createdAt?: SortOrder } @@ -18301,11 +18330,13 @@ export namespace Prisma { export type TopicWatchCreateWithoutTopicInput = { memberId: string + watching?: boolean createdAt?: Date | string } export type TopicWatchUncheckedCreateWithoutTopicInput = { memberId: string + watching?: boolean createdAt?: Date | string } @@ -18531,6 +18562,7 @@ export namespace Prisma { NOT?: TopicWatchScalarWhereInput | TopicWatchScalarWhereInput[] topicId?: StringFilter<"TopicWatch"> | string memberId?: StringFilter<"TopicWatch"> | string + watching?: BoolFilter<"TopicWatch"> | boolean createdAt?: DateTimeFilter<"TopicWatch"> | Date | string } @@ -19265,6 +19297,7 @@ export namespace Prisma { export type TopicWatchCreateManyTopicInput = { memberId: string + watching?: boolean createdAt?: Date | string } @@ -19410,16 +19443,19 @@ export namespace Prisma { export type TopicWatchUpdateWithoutTopicInput = { memberId?: StringFieldUpdateOperationsInput | string + watching?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } export type TopicWatchUncheckedUpdateWithoutTopicInput = { memberId?: StringFieldUpdateOperationsInput | string + watching?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } export type TopicWatchUncheckedUpdateManyWithoutTopicInput = { memberId?: StringFieldUpdateOperationsInput | string + watching?: BoolFieldUpdateOperationsInput | boolean createdAt?: DateTimeFieldUpdateOperationsInput | Date | string } diff --git a/packages/forums-prisma-client/index.js b/packages/forums-prisma-client/index.js index dc73b7b..a070789 100644 --- a/packages/forums-prisma-client/index.js +++ b/packages/forums-prisma-client/index.js @@ -160,6 +160,7 @@ exports.Prisma.TopicClosureScalarFieldEnum = { exports.Prisma.TopicWatchScalarFieldEnum = { topicId: 'topicId', memberId: 'memberId', + watching: 'watching', createdAt: 'createdAt' }; @@ -256,14 +257,14 @@ const config = { "clientVersion": "7.9.0", "engineVersion": "e922089b7d7502aff4249d5da3420f6fa55fc6ad", "activeProvider": "postgresql", - "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/client\"\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/forums-prisma-client\"\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n schemas = [\"forums\"]\n}\n\nenum PostReactionType {\n THUMBS_UP\n THUMBS_DOWN\n\n @@schema(\"forums\")\n}\n\nmodel Topic {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n parentTopicId String? @db.VarChar(14)\n challengeId String? @db.VarChar(64)\n roleName String? @db.VarChar(128)\n title String @db.VarChar(255)\n isAnnouncement Boolean @default(false)\n locked Boolean @default(false)\n lockedAt DateTime?\n lockedByMemberId String? @db.VarChar(64)\n authorMemberId String @db.VarChar(64)\n authorHandle String @db.VarChar(128)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n deletedAt DateTime?\n deletedByMemberId String? @db.VarChar(64)\n\n parentTopic Topic? @relation(\"TopicChildren\", fields: [parentTopicId], references: [id])\n childTopics Topic[] @relation(\"TopicChildren\")\n posts Post[]\n ancestorClosures TopicClosure[] @relation(\"TopicClosureAncestor\")\n descendantClosures TopicClosure[] @relation(\"TopicClosureDescendant\")\n watches TopicWatch[]\n readStates TopicReadState[]\n\n @@index([parentTopicId])\n @@index([challengeId])\n @@index([roleName])\n @@index([deletedAt])\n @@index([isAnnouncement, createdAt])\n @@schema(\"forums\")\n}\n\nmodel MemberBan {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n memberId String @db.VarChar(64)\n createdAt DateTime @default(now())\n createdByMemberId String? @db.VarChar(64)\n removedAt DateTime?\n removedByMemberId String? @db.VarChar(64)\n\n @@index([memberId])\n @@index([removedAt])\n @@schema(\"forums\")\n}\n\nmodel IpBan {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n ipAddress String @db.VarChar(45)\n createdAt DateTime @default(now())\n createdByMemberId String? @db.VarChar(64)\n removedAt DateTime?\n removedByMemberId String? @db.VarChar(64)\n\n @@index([ipAddress])\n @@index([removedAt])\n @@schema(\"forums\")\n}\n\nmodel Post {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n topicId String @db.VarChar(14)\n parentType String @db.VarChar(16)\n parentId String @db.VarChar(14)\n authorMemberId String @db.VarChar(64)\n authorHandle String @db.VarChar(128)\n content String? @db.Text\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n deletedAt DateTime?\n deletedByMemberId String? @db.VarChar(64)\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n reactions PostReaction[]\n\n @@index([topicId, createdAt])\n @@index([topicId, parentType, parentId])\n @@index([deletedAt])\n @@schema(\"forums\")\n}\n\nmodel PostReaction {\n postId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n reaction PostReactionType\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n post Post @relation(fields: [postId], references: [id], onDelete: Cascade)\n\n @@id([postId, memberId])\n @@index([memberId])\n @@index([postId, reaction])\n @@schema(\"forums\")\n}\n\nmodel TopicClosure {\n ancestorTopicId String @db.VarChar(14)\n descendantTopicId String @db.VarChar(14)\n depth Int\n\n ancestorTopic Topic @relation(\"TopicClosureAncestor\", fields: [ancestorTopicId], references: [id], onDelete: Cascade)\n descendantTopic Topic @relation(\"TopicClosureDescendant\", fields: [descendantTopicId], references: [id], onDelete: Cascade)\n\n @@id([ancestorTopicId, descendantTopicId])\n @@index([ancestorTopicId, depth])\n @@index([descendantTopicId, depth])\n @@schema(\"forums\")\n}\n\nmodel TopicWatch {\n topicId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n createdAt DateTime @default(now())\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n\n @@id([topicId, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\n// Explicit challenge-wide preferences override resource-based default watches.\nmodel ChallengeForumWatch {\n challengeId String @db.VarChar(64)\n memberId String @db.VarChar(64)\n watching Boolean\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n @@id([challengeId, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\nmodel TopicReadState {\n topicId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n lastReadAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n\n @@id([topicId, memberId])\n @@index([memberId])\n @@index([lastReadAt])\n @@schema(\"forums\")\n}\n\n// Presentation and access rules for imported public category topics only.\nmodel PublicForumCategory {\n topicId String @id @db.VarChar(14)\n description String @default(\"\") @db.Text\n displayAs String @db.VarChar(16)\n sortOrder Int\n readRoles String[]\n createRoles String[]\n replyRoles String[]\n legacyId Int @unique\n legacySlug String @db.Text\n source Json\n\n @@schema(\"forums\")\n}\n\n// Vanilla-only role assignments never grant identity-wide roles.\nmodel PublicForumRoleMember {\n roleName String @db.VarChar(128)\n memberId String @db.VarChar(64)\n\n @@id([roleName, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\n// Immutable provenance makes imports insert-only and safely repeatable.\nmodel PublicForumImportRecord {\n entityType String @db.VarChar(32)\n sourceId String @db.VarChar(64)\n targetId String @db.VarChar(64)\n sourceHash String @db.VarChar(64)\n targetHash String @db.VarChar(64)\n createdAt DateTime @default(now())\n\n @@id([entityType, sourceId])\n @@unique([entityType, targetId])\n @@schema(\"forums\")\n}\n" + "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/client\"\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/forums-prisma-client\"\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n schemas = [\"forums\"]\n}\n\nenum PostReactionType {\n THUMBS_UP\n THUMBS_DOWN\n\n @@schema(\"forums\")\n}\n\nmodel Topic {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n parentTopicId String? @db.VarChar(14)\n challengeId String? @db.VarChar(64)\n roleName String? @db.VarChar(128)\n title String @db.VarChar(255)\n isAnnouncement Boolean @default(false)\n locked Boolean @default(false)\n lockedAt DateTime?\n lockedByMemberId String? @db.VarChar(64)\n authorMemberId String @db.VarChar(64)\n authorHandle String @db.VarChar(128)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n deletedAt DateTime?\n deletedByMemberId String? @db.VarChar(64)\n\n parentTopic Topic? @relation(\"TopicChildren\", fields: [parentTopicId], references: [id])\n childTopics Topic[] @relation(\"TopicChildren\")\n posts Post[]\n ancestorClosures TopicClosure[] @relation(\"TopicClosureAncestor\")\n descendantClosures TopicClosure[] @relation(\"TopicClosureDescendant\")\n watches TopicWatch[]\n readStates TopicReadState[]\n\n @@index([parentTopicId])\n @@index([challengeId])\n @@index([roleName])\n @@index([deletedAt])\n @@index([isAnnouncement, createdAt])\n @@schema(\"forums\")\n}\n\nmodel MemberBan {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n memberId String @db.VarChar(64)\n createdAt DateTime @default(now())\n createdByMemberId String? @db.VarChar(64)\n removedAt DateTime?\n removedByMemberId String? @db.VarChar(64)\n\n @@index([memberId])\n @@index([removedAt])\n @@schema(\"forums\")\n}\n\nmodel IpBan {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n ipAddress String @db.VarChar(45)\n createdAt DateTime @default(now())\n createdByMemberId String? @db.VarChar(64)\n removedAt DateTime?\n removedByMemberId String? @db.VarChar(64)\n\n @@index([ipAddress])\n @@index([removedAt])\n @@schema(\"forums\")\n}\n\nmodel Post {\n id String @id @default(dbgenerated(\"nanoid()\")) @db.VarChar(14)\n topicId String @db.VarChar(14)\n parentType String @db.VarChar(16)\n parentId String @db.VarChar(14)\n authorMemberId String @db.VarChar(64)\n authorHandle String @db.VarChar(128)\n content String? @db.Text\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n deletedAt DateTime?\n deletedByMemberId String? @db.VarChar(64)\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n reactions PostReaction[]\n\n @@index([topicId, createdAt])\n @@index([topicId, parentType, parentId])\n @@index([deletedAt])\n @@schema(\"forums\")\n}\n\nmodel PostReaction {\n postId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n reaction PostReactionType\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n post Post @relation(fields: [postId], references: [id], onDelete: Cascade)\n\n @@id([postId, memberId])\n @@index([memberId])\n @@index([postId, reaction])\n @@schema(\"forums\")\n}\n\nmodel TopicClosure {\n ancestorTopicId String @db.VarChar(14)\n descendantTopicId String @db.VarChar(14)\n depth Int\n\n ancestorTopic Topic @relation(\"TopicClosureAncestor\", fields: [ancestorTopicId], references: [id], onDelete: Cascade)\n descendantTopic Topic @relation(\"TopicClosureDescendant\", fields: [descendantTopicId], references: [id], onDelete: Cascade)\n\n @@id([ancestorTopicId, descendantTopicId])\n @@index([ancestorTopicId, depth])\n @@index([descendantTopicId, depth])\n @@schema(\"forums\")\n}\n\n// Explicit topic choices override challenge-wide notification preferences.\nmodel TopicWatch {\n topicId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n watching Boolean @default(true)\n createdAt DateTime @default(now())\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n\n @@id([topicId, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\n// Explicit challenge-wide preferences override resource-based default watches.\nmodel ChallengeForumWatch {\n challengeId String @db.VarChar(64)\n memberId String @db.VarChar(64)\n watching Boolean\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n @@id([challengeId, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\nmodel TopicReadState {\n topicId String @db.VarChar(14)\n memberId String @db.VarChar(64)\n lastReadAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n\n topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade)\n\n @@id([topicId, memberId])\n @@index([memberId])\n @@index([lastReadAt])\n @@schema(\"forums\")\n}\n\n// Presentation and access rules for imported public category topics only.\nmodel PublicForumCategory {\n topicId String @id @db.VarChar(14)\n description String @default(\"\") @db.Text\n displayAs String @db.VarChar(16)\n sortOrder Int\n readRoles String[]\n createRoles String[]\n replyRoles String[]\n legacyId Int @unique\n legacySlug String @db.Text\n source Json\n\n @@schema(\"forums\")\n}\n\n// Vanilla-only role assignments never grant identity-wide roles.\nmodel PublicForumRoleMember {\n roleName String @db.VarChar(128)\n memberId String @db.VarChar(64)\n\n @@id([roleName, memberId])\n @@index([memberId])\n @@schema(\"forums\")\n}\n\n// Immutable provenance makes imports insert-only and safely repeatable.\nmodel PublicForumImportRecord {\n entityType String @db.VarChar(32)\n sourceId String @db.VarChar(64)\n targetId String @db.VarChar(64)\n sourceHash String @db.VarChar(64)\n targetHash String @db.VarChar(64)\n createdAt DateTime @default(now())\n\n @@id([entityType, sourceId])\n @@unique([entityType, targetId])\n @@schema(\"forums\")\n}\n" } -config.runtimeDataModel = JSON.parse("{\"models\":{\"Topic\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roleName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isAnnouncement\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"locked\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"lockedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"lockedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorHandle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicChildren\"},{\"name\":\"childTopics\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicChildren\"},{\"name\":\"posts\",\"kind\":\"object\",\"type\":\"Post\",\"relationName\":\"PostToTopic\"},{\"name\":\"ancestorClosures\",\"kind\":\"object\",\"type\":\"TopicClosure\",\"relationName\":\"TopicClosureAncestor\"},{\"name\":\"descendantClosures\",\"kind\":\"object\",\"type\":\"TopicClosure\",\"relationName\":\"TopicClosureDescendant\"},{\"name\":\"watches\",\"kind\":\"object\",\"type\":\"TopicWatch\",\"relationName\":\"TopicToTopicWatch\"},{\"name\":\"readStates\",\"kind\":\"object\",\"type\":\"TopicReadState\",\"relationName\":\"TopicToTopicReadState\"}],\"dbName\":null},\"MemberBan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"removedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"removedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"IpBan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"removedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"removedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Post\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorHandle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"PostToTopic\"},{\"name\":\"reactions\",\"kind\":\"object\",\"type\":\"PostReaction\",\"relationName\":\"PostToPostReaction\"}],\"dbName\":null},\"PostReaction\":{\"fields\":[{\"name\":\"postId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reaction\",\"kind\":\"enum\",\"type\":\"PostReactionType\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"post\",\"kind\":\"object\",\"type\":\"Post\",\"relationName\":\"PostToPostReaction\"}],\"dbName\":null},\"TopicClosure\":{\"fields\":[{\"name\":\"ancestorTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descendantTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"depth\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"ancestorTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicClosureAncestor\"},{\"name\":\"descendantTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicClosureDescendant\"}],\"dbName\":null},\"TopicWatch\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicToTopicWatch\"}],\"dbName\":null},\"ChallengeForumWatch\":{\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"watching\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"TopicReadState\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastReadAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicToTopicReadState\"}],\"dbName\":null},\"PublicForumCategory\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayAs\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"readRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"replyRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"legacySlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"source\",\"kind\":\"scalar\",\"type\":\"Json\"}],\"dbName\":null},\"PublicForumRoleMember\":{\"fields\":[{\"name\":\"roleName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"PublicForumImportRecord\":{\"fields\":[{\"name\":\"entityType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sourceHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"Topic\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roleName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isAnnouncement\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"locked\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"lockedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"lockedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorHandle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicChildren\"},{\"name\":\"childTopics\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicChildren\"},{\"name\":\"posts\",\"kind\":\"object\",\"type\":\"Post\",\"relationName\":\"PostToTopic\"},{\"name\":\"ancestorClosures\",\"kind\":\"object\",\"type\":\"TopicClosure\",\"relationName\":\"TopicClosureAncestor\"},{\"name\":\"descendantClosures\",\"kind\":\"object\",\"type\":\"TopicClosure\",\"relationName\":\"TopicClosureDescendant\"},{\"name\":\"watches\",\"kind\":\"object\",\"type\":\"TopicWatch\",\"relationName\":\"TopicToTopicWatch\"},{\"name\":\"readStates\",\"kind\":\"object\",\"type\":\"TopicReadState\",\"relationName\":\"TopicToTopicReadState\"}],\"dbName\":null},\"MemberBan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"removedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"removedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"IpBan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"removedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"removedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"Post\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"authorHandle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedByMemberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"PostToTopic\"},{\"name\":\"reactions\",\"kind\":\"object\",\"type\":\"PostReaction\",\"relationName\":\"PostToPostReaction\"}],\"dbName\":null},\"PostReaction\":{\"fields\":[{\"name\":\"postId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reaction\",\"kind\":\"enum\",\"type\":\"PostReactionType\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"post\",\"kind\":\"object\",\"type\":\"Post\",\"relationName\":\"PostToPostReaction\"}],\"dbName\":null},\"TopicClosure\":{\"fields\":[{\"name\":\"ancestorTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descendantTopicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"depth\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"ancestorTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicClosureAncestor\"},{\"name\":\"descendantTopic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicClosureDescendant\"}],\"dbName\":null},\"TopicWatch\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"watching\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicToTopicWatch\"}],\"dbName\":null},\"ChallengeForumWatch\":{\"fields\":[{\"name\":\"challengeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"watching\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"TopicReadState\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastReadAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"topic\",\"kind\":\"object\",\"type\":\"Topic\",\"relationName\":\"TopicToTopicReadState\"}],\"dbName\":null},\"PublicForumCategory\":{\"fields\":[{\"name\":\"topicId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayAs\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"readRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"replyRoles\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"legacyId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"legacySlug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"source\",\"kind\":\"scalar\",\"type\":\"Json\"}],\"dbName\":null},\"PublicForumRoleMember\":{\"fields\":[{\"name\":\"roleName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memberId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"PublicForumImportRecord\":{\"fields\":[{\"name\":\"entityType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sourceHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.parameterizationSchema = { strings: JSON.parse("[\"where\",\"parentTopic\",\"orderBy\",\"cursor\",\"childTopics\",\"topic\",\"post\",\"reactions\",\"_count\",\"posts\",\"ancestorTopic\",\"descendantTopic\",\"ancestorClosures\",\"descendantClosures\",\"watches\",\"readStates\",\"Topic.findUnique\",\"Topic.findUniqueOrThrow\",\"Topic.findFirst\",\"Topic.findFirstOrThrow\",\"Topic.findMany\",\"data\",\"Topic.createOne\",\"Topic.createMany\",\"Topic.createManyAndReturn\",\"Topic.updateOne\",\"Topic.updateMany\",\"Topic.updateManyAndReturn\",\"create\",\"update\",\"Topic.upsertOne\",\"Topic.deleteOne\",\"Topic.deleteMany\",\"having\",\"_min\",\"_max\",\"Topic.groupBy\",\"Topic.aggregate\",\"MemberBan.findUnique\",\"MemberBan.findUniqueOrThrow\",\"MemberBan.findFirst\",\"MemberBan.findFirstOrThrow\",\"MemberBan.findMany\",\"MemberBan.createOne\",\"MemberBan.createMany\",\"MemberBan.createManyAndReturn\",\"MemberBan.updateOne\",\"MemberBan.updateMany\",\"MemberBan.updateManyAndReturn\",\"MemberBan.upsertOne\",\"MemberBan.deleteOne\",\"MemberBan.deleteMany\",\"MemberBan.groupBy\",\"MemberBan.aggregate\",\"IpBan.findUnique\",\"IpBan.findUniqueOrThrow\",\"IpBan.findFirst\",\"IpBan.findFirstOrThrow\",\"IpBan.findMany\",\"IpBan.createOne\",\"IpBan.createMany\",\"IpBan.createManyAndReturn\",\"IpBan.updateOne\",\"IpBan.updateMany\",\"IpBan.updateManyAndReturn\",\"IpBan.upsertOne\",\"IpBan.deleteOne\",\"IpBan.deleteMany\",\"IpBan.groupBy\",\"IpBan.aggregate\",\"Post.findUnique\",\"Post.findUniqueOrThrow\",\"Post.findFirst\",\"Post.findFirstOrThrow\",\"Post.findMany\",\"Post.createOne\",\"Post.createMany\",\"Post.createManyAndReturn\",\"Post.updateOne\",\"Post.updateMany\",\"Post.updateManyAndReturn\",\"Post.upsertOne\",\"Post.deleteOne\",\"Post.deleteMany\",\"Post.groupBy\",\"Post.aggregate\",\"PostReaction.findUnique\",\"PostReaction.findUniqueOrThrow\",\"PostReaction.findFirst\",\"PostReaction.findFirstOrThrow\",\"PostReaction.findMany\",\"PostReaction.createOne\",\"PostReaction.createMany\",\"PostReaction.createManyAndReturn\",\"PostReaction.updateOne\",\"PostReaction.updateMany\",\"PostReaction.updateManyAndReturn\",\"PostReaction.upsertOne\",\"PostReaction.deleteOne\",\"PostReaction.deleteMany\",\"PostReaction.groupBy\",\"PostReaction.aggregate\",\"TopicClosure.findUnique\",\"TopicClosure.findUniqueOrThrow\",\"TopicClosure.findFirst\",\"TopicClosure.findFirstOrThrow\",\"TopicClosure.findMany\",\"TopicClosure.createOne\",\"TopicClosure.createMany\",\"TopicClosure.createManyAndReturn\",\"TopicClosure.updateOne\",\"TopicClosure.updateMany\",\"TopicClosure.updateManyAndReturn\",\"TopicClosure.upsertOne\",\"TopicClosure.deleteOne\",\"TopicClosure.deleteMany\",\"_avg\",\"_sum\",\"TopicClosure.groupBy\",\"TopicClosure.aggregate\",\"TopicWatch.findUnique\",\"TopicWatch.findUniqueOrThrow\",\"TopicWatch.findFirst\",\"TopicWatch.findFirstOrThrow\",\"TopicWatch.findMany\",\"TopicWatch.createOne\",\"TopicWatch.createMany\",\"TopicWatch.createManyAndReturn\",\"TopicWatch.updateOne\",\"TopicWatch.updateMany\",\"TopicWatch.updateManyAndReturn\",\"TopicWatch.upsertOne\",\"TopicWatch.deleteOne\",\"TopicWatch.deleteMany\",\"TopicWatch.groupBy\",\"TopicWatch.aggregate\",\"ChallengeForumWatch.findUnique\",\"ChallengeForumWatch.findUniqueOrThrow\",\"ChallengeForumWatch.findFirst\",\"ChallengeForumWatch.findFirstOrThrow\",\"ChallengeForumWatch.findMany\",\"ChallengeForumWatch.createOne\",\"ChallengeForumWatch.createMany\",\"ChallengeForumWatch.createManyAndReturn\",\"ChallengeForumWatch.updateOne\",\"ChallengeForumWatch.updateMany\",\"ChallengeForumWatch.updateManyAndReturn\",\"ChallengeForumWatch.upsertOne\",\"ChallengeForumWatch.deleteOne\",\"ChallengeForumWatch.deleteMany\",\"ChallengeForumWatch.groupBy\",\"ChallengeForumWatch.aggregate\",\"TopicReadState.findUnique\",\"TopicReadState.findUniqueOrThrow\",\"TopicReadState.findFirst\",\"TopicReadState.findFirstOrThrow\",\"TopicReadState.findMany\",\"TopicReadState.createOne\",\"TopicReadState.createMany\",\"TopicReadState.createManyAndReturn\",\"TopicReadState.updateOne\",\"TopicReadState.updateMany\",\"TopicReadState.updateManyAndReturn\",\"TopicReadState.upsertOne\",\"TopicReadState.deleteOne\",\"TopicReadState.deleteMany\",\"TopicReadState.groupBy\",\"TopicReadState.aggregate\",\"PublicForumCategory.findUnique\",\"PublicForumCategory.findUniqueOrThrow\",\"PublicForumCategory.findFirst\",\"PublicForumCategory.findFirstOrThrow\",\"PublicForumCategory.findMany\",\"PublicForumCategory.createOne\",\"PublicForumCategory.createMany\",\"PublicForumCategory.createManyAndReturn\",\"PublicForumCategory.updateOne\",\"PublicForumCategory.updateMany\",\"PublicForumCategory.updateManyAndReturn\",\"PublicForumCategory.upsertOne\",\"PublicForumCategory.deleteOne\",\"PublicForumCategory.deleteMany\",\"PublicForumCategory.groupBy\",\"PublicForumCategory.aggregate\",\"PublicForumRoleMember.findUnique\",\"PublicForumRoleMember.findUniqueOrThrow\",\"PublicForumRoleMember.findFirst\",\"PublicForumRoleMember.findFirstOrThrow\",\"PublicForumRoleMember.findMany\",\"PublicForumRoleMember.createOne\",\"PublicForumRoleMember.createMany\",\"PublicForumRoleMember.createManyAndReturn\",\"PublicForumRoleMember.updateOne\",\"PublicForumRoleMember.updateMany\",\"PublicForumRoleMember.updateManyAndReturn\",\"PublicForumRoleMember.upsertOne\",\"PublicForumRoleMember.deleteOne\",\"PublicForumRoleMember.deleteMany\",\"PublicForumRoleMember.groupBy\",\"PublicForumRoleMember.aggregate\",\"PublicForumImportRecord.findUnique\",\"PublicForumImportRecord.findUniqueOrThrow\",\"PublicForumImportRecord.findFirst\",\"PublicForumImportRecord.findFirstOrThrow\",\"PublicForumImportRecord.findMany\",\"PublicForumImportRecord.createOne\",\"PublicForumImportRecord.createMany\",\"PublicForumImportRecord.createManyAndReturn\",\"PublicForumImportRecord.updateOne\",\"PublicForumImportRecord.updateMany\",\"PublicForumImportRecord.updateManyAndReturn\",\"PublicForumImportRecord.upsertOne\",\"PublicForumImportRecord.deleteOne\",\"PublicForumImportRecord.deleteMany\",\"PublicForumImportRecord.groupBy\",\"PublicForumImportRecord.aggregate\",\"AND\",\"OR\",\"NOT\",\"entityType\",\"sourceId\",\"targetId\",\"sourceHash\",\"targetHash\",\"createdAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"entityType_targetId\",\"entityType_sourceId\",\"roleName\",\"memberId\",\"roleName_memberId\",\"topicId\",\"description\",\"displayAs\",\"sortOrder\",\"readRoles\",\"createRoles\",\"replyRoles\",\"legacyId\",\"legacySlug\",\"source\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"has\",\"hasEvery\",\"hasSome\",\"lastReadAt\",\"updatedAt\",\"challengeId\",\"watching\",\"challengeId_memberId\",\"ancestorTopicId\",\"descendantTopicId\",\"depth\",\"postId\",\"PostReactionType\",\"reaction\",\"id\",\"parentType\",\"parentId\",\"authorMemberId\",\"authorHandle\",\"content\",\"deletedAt\",\"deletedByMemberId\",\"ipAddress\",\"createdByMemberId\",\"removedAt\",\"removedByMemberId\",\"parentTopicId\",\"title\",\"isAnnouncement\",\"locked\",\"lockedAt\",\"lockedByMemberId\",\"topicId_memberId\",\"ancestorTopicId_descendantTopicId\",\"postId_memberId\",\"every\",\"some\",\"none\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"push\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "3QRnwAEZAQAAgwMAIAQAAIQDACAJAACFAwAgDAAAhgMAIA0AAIYDACAOAACHAwAgDwAAiAMAINgBAACCAwAw2QEAAAMAENoBAACCAwAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAAAABkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACEBAAAAAQAgGQEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIQEAAAADACAOAQAArAQAIAQAAK8EACAJAACwBAAgDAAAsQQAIA0AALEEACAOAACyBAAgDwAAswQAIO4BAAC6AwAghgIAALoDACCVAgAAugMAIJYCAAC6AwAgmwIAALoDACCfAgAAugMAIKACAAC6AwAgAwAAAAMAIAIAAAUAMAMAAAEAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAMcCACGQAgEAxwIAIZECAQDHAgAhkgIBAMcCACGTAgEAxwIAIZQCAQDwAgAhlQJAAPECACGWAgEA8AIAIQUFAACsBAAgBwAArgQAIJQCAAC6AwAglQIAALoDACCWAgAAugMAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAAAAAZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhAwAAAAcAIAIAAAgAMAMAAAkAIAkGAAD_AgAg2AEAAP0CADDZAQAACwAQ2gEAAP0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGMAgEAxwIAIY4CAAD-Ao4CIgEGAACtBAAgCgYAAP8CACDYAQAA_QIAMNkBAAALABDaAQAA_QIAMOABQADIAgAh7wEBAMcCACGFAkAAyAIAIYwCAQDHAgAhjgIAAP4CjgIiowIAAPwCACADAAAACwAgAgAADAAwAwAADQAgAQAAAAsAIAgKAAD3AgAgCwAA9wIAINgBAAD7AgAw2QEAABAAENoBAAD7AgAwiQIBAMcCACGKAgEAxwIAIYsCAgDWAgAhAgoAAKwEACALAACsBAAgCQoAAPcCACALAAD3AgAg2AEAAPsCADDZAQAAEAAQ2gEAAPsCADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACGiAgAA-gIAIAMAAAAQACACAAARADADAAASACADAAAAEAAgAgAAEQAwAwAAEgAgBwUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIQEFAACsBAAgCAUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIaECAAD4AgAgAwAAABUAIAIAABYAMAMAABcAIAgFAAD3AgAg2AEAAPYCADDZAQAAGQAQ2gEAAPYCADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIQEFAACsBAAgCQUAAPcCACDYAQAA9gIAMNkBAAAZABDaAQAA9gIAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhoQIAAPUCACADAAAAGQAgAgAAGgAwAwAAGwAgAQAAAAMAIAEAAAAHACABAAAAEAAgAQAAABAAIAEAAAAVACABAAAAGQAgAQAAAAEAIAMAAAADACACAAAFADADAAABACADAAAAAwAgAgAABQAwAwAAAQAgAwAAAAMAIAIAAAUAMAMAAAEAIBYBAACrBAAgBAAApQQAIAkAAKYEACAMAACnBAAgDQAAqAQAIA4AAKkEACAPAACqBAAg4AFAAAAAAe4BAQAAAAGFAkAAAAABhgIBAAAAAY8CAQAAAAGSAgEAAAABkwIBAAAAAZUCQAAAAAGWAgEAAAABmwIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABARUAACcAIA_gAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAEBFQAAKQAwARUAACkAMAEAAAADACAWAQAA2QMAIAQAANoDACAJAADbAwAgDAAA3AMAIA0AAN0DACAOAADeAwAgDwAA3wMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIQIAAAABACAVAAAtACAP4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhAgAAAAMAIBUAAC8AIAIAAAADACAVAAAvACABAAAAAwAgAwAAAAEAIBwAACcAIB0AAC0AIAEAAAABACABAAAAAwAgCggAANYDACAiAADYAwAgIwAA1wMAIO4BAAC6AwAghgIAALoDACCVAgAAugMAIJYCAAC6AwAgmwIAALoDACCfAgAAugMAIKACAAC6AwAgEtgBAAD0AgAw2QEAADcAENoBAAD0AgAw4AFAAMACACHuAQEA5wIAIYUCQADAAgAhhgIBAOcCACGPAgEAvwIAIZICAQC_AgAhkwIBAL8CACGVAkAA6AIAIZYCAQDnAgAhmwIBAOcCACGcAgEAvwIAIZ0CIADaAgAhngIgANoCACGfAkAA6AIAIaACAQDnAgAhAwAAAAMAIAIAADYAMCEAADcAIAMAAAADACACAAAFADADAAABACAJ2AEAAPMCADDZAQAAPQAQ2gEAAPMCADDgAUAAyAIAIe8BAQDHAgAhjwIBAAAAAZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQEAAAA6ACABAAAAOgAgCdgBAADzAgAw2QEAAD0AENoBAADzAgAw4AFAAMgCACHvAQEAxwIAIY8CAQDHAgAhmAIBAPACACGZAkAA8QIAIZoCAQDwAgAhA5gCAAC6AwAgmQIAALoDACCaAgAAugMAIAMAAAA9ACACAAA-ADADAAA6ACADAAAAPQAgAgAAPgAwAwAAOgAgAwAAAD0AIAIAAD4AMAMAADoAIAbgAUAAAAAB7wEBAAAAAY8CAQAAAAGYAgEAAAABmQJAAAAAAZoCAQAAAAEBFQAAQgAgBuABQAAAAAHvAQEAAAABjwIBAAAAAZgCAQAAAAGZAkAAAAABmgIBAAAAAQEVAABEADABFQAARAAwBuABQACNAwAh7wEBAIwDACGPAgEAjAMAIZgCAQC-AwAhmQJAAL8DACGaAgEAvgMAIQIAAAA6ACAVAABHACAG4AFAAI0DACHvAQEAjAMAIY8CAQCMAwAhmAIBAL4DACGZAkAAvwMAIZoCAQC-AwAhAgAAAD0AIBUAAEkAIAIAAAA9ACAVAABJACADAAAAOgAgHAAAQgAgHQAARwAgAQAAADoAIAEAAAA9ACAGCAAA0wMAICIAANUDACAjAADUAwAgmAIAALoDACCZAgAAugMAIJoCAAC6AwAgCdgBAADyAgAw2QEAAFAAENoBAADyAgAw4AFAAMACACHvAQEAvwIAIY8CAQC_AgAhmAIBAOcCACGZAkAA6AIAIZoCAQDnAgAhAwAAAD0AIAIAAE8AMCEAAFAAIAMAAAA9ACACAAA-ADADAAA6ACAJ2AEAAO8CADDZAQAAVgAQ2gEAAO8CADDgAUAAyAIAIY8CAQAAAAGXAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQEAAABTACABAAAAUwAgCdgBAADvAgAw2QEAAFYAENoBAADvAgAw4AFAAMgCACGPAgEAxwIAIZcCAQDHAgAhmAIBAPACACGZAkAA8QIAIZoCAQDwAgAhA5gCAAC6AwAgmQIAALoDACCaAgAAugMAIAMAAABWACACAABXADADAABTACADAAAAVgAgAgAAVwAwAwAAUwAgAwAAAFYAIAIAAFcAMAMAAFMAIAbgAUAAAAABjwIBAAAAAZcCAQAAAAGYAgEAAAABmQJAAAAAAZoCAQAAAAEBFQAAWwAgBuABQAAAAAGPAgEAAAABlwIBAAAAAZgCAQAAAAGZAkAAAAABmgIBAAAAAQEVAABdADABFQAAXQAwBuABQACNAwAhjwIBAIwDACGXAgEAjAMAIZgCAQC-AwAhmQJAAL8DACGaAgEAvgMAIQIAAABTACAVAABgACAG4AFAAI0DACGPAgEAjAMAIZcCAQCMAwAhmAIBAL4DACGZAkAAvwMAIZoCAQC-AwAhAgAAAFYAIBUAAGIAIAIAAABWACAVAABiACADAAAAUwAgHAAAWwAgHQAAYAAgAQAAAFMAIAEAAABWACAGCAAA0AMAICIAANIDACAjAADRAwAgmAIAALoDACCZAgAAugMAIJoCAAC6AwAgCdgBAADuAgAw2QEAAGkAENoBAADuAgAw4AFAAMACACGPAgEAvwIAIZcCAQC_AgAhmAIBAOcCACGZAkAA6AIAIZoCAQDnAgAhAwAAAFYAIAIAAGgAMCEAAGkAIAMAAABWACACAABXADADAABTACABAAAACQAgAQAAAAkAIAMAAAAHACACAAAIADADAAAJACADAAAABwAgAgAACAAwAwAACQAgAwAAAAcAIAIAAAgAMAMAAAkAIA0FAADOAwAgBwAAzwMAIOABQAAAAAHxAQEAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABARUAAHEAIAvgAUAAAAAB8QEBAAAAAYUCQAAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAkAAAAABlgIBAAAAAQEVAABzADABFQAAcwAwDQUAAMADACAHAADBAwAg4AFAAI0DACHxAQEAjAMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIQIAAAAJACAVAAB2ACAL4AFAAI0DACHxAQEAjAMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIQIAAAAHACAVAAB4ACACAAAABwAgFQAAeAAgAwAAAAkAIBwAAHEAIB0AAHYAIAEAAAAJACABAAAABwAgBggAALsDACAiAAC9AwAgIwAAvAMAIJQCAAC6AwAglQIAALoDACCWAgAAugMAIA7YAQAA5gIAMNkBAAB_ABDaAQAA5gIAMOABQADAAgAh8QEBAL8CACGFAkAAwAIAIY8CAQC_AgAhkAIBAL8CACGRAgEAvwIAIZICAQC_AgAhkwIBAL8CACGUAgEA5wIAIZUCQADoAgAhlgIBAOcCACEDAAAABwAgAgAAfgAwIQAAfwAgAwAAAAcAIAIAAAgAMAMAAAkAIAEAAAANACABAAAADQAgAwAAAAsAIAIAAAwAMAMAAA0AIAMAAAALACACAAAMADADAAANACADAAAACwAgAgAADAAwAwAADQAgBgYAALkDACDgAUAAAAAB7wEBAAAAAYUCQAAAAAGMAgEAAAABjgIAAACOAgIBFQAAhwEAIAXgAUAAAAAB7wEBAAAAAYUCQAAAAAGMAgEAAAABjgIAAACOAgIBFQAAiQEAMAEVAACJAQAwBgYAALgDACDgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGMAgEAjAMAIY4CAAC3A44CIgIAAAANACAVAACMAQAgBeABQACNAwAh7wEBAIwDACGFAkAAjQMAIYwCAQCMAwAhjgIAALcDjgIiAgAAAAsAIBUAAI4BACACAAAACwAgFQAAjgEAIAMAAAANACAcAACHAQAgHQAAjAEAIAEAAAANACABAAAACwAgAwgAALQDACAiAAC2AwAgIwAAtQMAIAjYAQAA4gIAMNkBAACVAQAQ2gEAAOICADDgAUAAwAIAIe8BAQC_AgAhhQJAAMACACGMAgEAvwIAIY4CAADjAo4CIgMAAAALACACAACUAQAwIQAAlQEAIAMAAAALACACAAAMADADAAANACABAAAAEgAgAQAAABIAIAMAAAAQACACAAARADADAAASACADAAAAEAAgAgAAEQAwAwAAEgAgAwAAABAAIAIAABEAMAMAABIAIAUKAACyAwAgCwAAswMAIIkCAQAAAAGKAgEAAAABiwICAAAAAQEVAACdAQAgA4kCAQAAAAGKAgEAAAABiwICAAAAAQEVAACfAQAwARUAAJ8BADAFCgAAsAMAIAsAALEDACCJAgEAjAMAIYoCAQCMAwAhiwICAJYDACECAAAAEgAgFQAAogEAIAOJAgEAjAMAIYoCAQCMAwAhiwICAJYDACECAAAAEAAgFQAApAEAIAIAAAAQACAVAACkAQAgAwAAABIAIBwAAJ0BACAdAACiAQAgAQAAABIAIAEAAAAQACAFCAAAqwMAICIAAK4DACAjAACtAwAgdAAArAMAIHUAAK8DACAG2AEAAOECADDZAQAAqwEAENoBAADhAgAwiQIBAL8CACGKAgEAvwIAIYsCAgDPAgAhAwAAABAAIAIAAKoBADAhAACrAQAgAwAAABAAIAIAABEAMAMAABIAIAEAAAAXACABAAAAFwAgAwAAABUAIAIAABYAMAMAABcAIAMAAAAVACACAAAWADADAAAXACADAAAAFQAgAgAAFgAwAwAAFwAgBAUAAKoDACDgAUAAAAAB7wEBAAAAAfEBAQAAAAEBFQAAswEAIAPgAUAAAAAB7wEBAAAAAfEBAQAAAAEBFQAAtQEAMAEVAAC1AQAwBAUAAKkDACDgAUAAjQMAIe8BAQCMAwAh8QEBAIwDACECAAAAFwAgFQAAuAEAIAPgAUAAjQMAIe8BAQCMAwAh8QEBAIwDACECAAAAFQAgFQAAugEAIAIAAAAVACAVAAC6AQAgAwAAABcAIBwAALMBACAdAAC4AQAgAQAAABcAIAEAAAAVACADCAAApgMAICIAAKgDACAjAACnAwAgBtgBAADgAgAw2QEAAMEBABDaAQAA4AIAMOABQADAAgAh7wEBAL8CACHxAQEAvwIAIQMAAAAVACACAADAAQAwIQAAwQEAIAMAAAAVACACAAAWADADAAAXACAJ2AEAAN0CADDZAQAAxwEAENoBAADdAgAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhhgIBAMcCACGHAiAA3gIAIYgCAADfAgAgAQAAAMQBACABAAAAxAEAIAjYAQAA3QIAMNkBAADHAQAQ2gEAAN0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGGAgEAxwIAIYcCIADeAgAhAAMAAADHAQAgAgAAyAEAMAMAAMQBACADAAAAxwEAIAIAAMgBADADAADEAQAgAwAAAMcBACACAADIAQAwAwAAxAEAIAXgAUAAAAAB7wEBAAAAAYUCQAAAAAGGAgEAAAABhwIgAAAAAQEVAADMAQAgBeABQAAAAAHvAQEAAAABhQJAAAAAAYYCAQAAAAGHAiAAAAABARUAAM4BADABFQAAzgEAMAXgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGGAgEAjAMAIYcCIAClAwAhAgAAAMQBACAVAADRAQAgBeABQACNAwAh7wEBAIwDACGFAkAAjQMAIYYCAQCMAwAhhwIgAKUDACECAAAAxwEAIBUAANMBACACAAAAxwEAIBUAANMBACADAAAAxAEAIBwAAMwBACAdAADRAQAgAQAAAMQBACABAAAAxwEAIAMIAACiAwAgIgAApAMAICMAAKMDACAI2AEAANkCADDZAQAA2gEAENoBAADZAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhhgIBAL8CACGHAiAA2gIAIQMAAADHAQAgAgAA2QEAMCEAANoBACADAAAAxwEAIAIAAMgBADADAADEAQAgAQAAABsAIAEAAAAbACADAAAAGQAgAgAAGgAwAwAAGwAgAwAAABkAIAIAABoAMAMAABsAIAMAAAAZACACAAAaADADAAAbACAFBQAAoQMAIO8BAQAAAAHxAQEAAAABhAJAAAAAAYUCQAAAAAEBFQAA4gEAIATvAQEAAAAB8QEBAAAAAYQCQAAAAAGFAkAAAAABARUAAOQBADABFQAA5AEAMAUFAACgAwAg7wEBAIwDACHxAQEAjAMAIYQCQACNAwAhhQJAAI0DACECAAAAGwAgFQAA5wEAIATvAQEAjAMAIfEBAQCMAwAhhAJAAI0DACGFAkAAjQMAIQIAAAAZACAVAADpAQAgAgAAABkAIBUAAOkBACADAAAAGwAgHAAA4gEAIB0AAOcBACABAAAAGwAgAQAAABkAIAMIAACdAwAgIgAAnwMAICMAAJ4DACAH2AEAANgCADDZAQAA8AEAENoBAADYAgAw7wEBAL8CACHxAQEAvwIAIYQCQADAAgAhhQJAAMACACEDAAAAGQAgAgAA7wEAMCEAAPABACADAAAAGQAgAgAAGgAwAwAAGwAgDdgBAADVAgAw2QEAAPYBABDaAQAA1QIAMPEBAQAAAAHyAQEAxwIAIfMBAQDHAgAh9AECANYCACH1AQAA0AIAIPYBAADQAgAg9wEAANACACD4AQIAAAAB-QEBAMcCACH6AQAA1wIAIAEAAADzAQAgAQAAAPMBACAN2AEAANUCADDZAQAA9gEAENoBAADVAgAw8QEBAMcCACHyAQEAxwIAIfMBAQDHAgAh9AECANYCACH1AQAA0AIAIPYBAADQAgAg9wEAANACACD4AQIA1gIAIfkBAQDHAgAh-gEAANcCACAAAwAAAPYBACACAAD3AQAwAwAA8wEAIAMAAAD2AQAgAgAA9wEAMAMAAPMBACADAAAA9gEAIAIAAPcBADADAADzAQAgCvEBAQAAAAHyAQEAAAAB8wEBAAAAAfQBAgAAAAH1AQAAmgMAIPYBAACbAwAg9wEAAJwDACD4AQIAAAAB-QEBAAAAAfoBgAAAAAEBFQAA-wEAIArxAQEAAAAB8gEBAAAAAfMBAQAAAAH0AQIAAAAB9QEAAJoDACD2AQAAmwMAIPcBAACcAwAg-AECAAAAAfkBAQAAAAH6AYAAAAABARUAAP0BADABFQAA_QEAMArxAQEAjAMAIfIBAQCMAwAh8wEBAIwDACH0AQIAlgMAIfUBAACXAwAg9gEAAJgDACD3AQAAmQMAIPgBAgCWAwAh-QEBAIwDACH6AYAAAAABAgAAAPMBACAVAACAAgAgCvEBAQCMAwAh8gEBAIwDACHzAQEAjAMAIfQBAgCWAwAh9QEAAJcDACD2AQAAmAMAIPcBAACZAwAg-AECAJYDACH5AQEAjAMAIfoBgAAAAAECAAAA9gEAIBUAAIICACACAAAA9gEAIBUAAIICACADAAAA8wEAIBwAAPsBACAdAACAAgAgAQAAAPMBACABAAAA9gEAIAUIAACRAwAgIgAAlAMAICMAAJMDACB0AACSAwAgdQAAlQMAIA3YAQAAzgIAMNkBAACJAgAQ2gEAAM4CADDxAQEAvwIAIfIBAQC_AgAh8wEBAL8CACH0AQIAzwIAIfUBAADQAgAg9gEAANACACD3AQAA0AIAIPgBAgDPAgAh-QEBAL8CACH6AQAA0QIAIAMAAAD2AQAgAgAAiAIAMCEAAIkCACADAAAA9gEAIAIAAPcBADADAADzAQAgBtgBAADMAgAw2QEAAI8CABDaAQAAzAIAMO4BAQDHAgAh7wEBAMcCACHwAQAAzQIAIAEAAACMAgAgAQAAAIwCACAF2AEAAMwCADDZAQAAjwIAENoBAADMAgAw7gEBAMcCACHvAQEAxwIAIQADAAAAjwIAIAIAAJACADADAACMAgAgAwAAAI8CACACAACQAgAwAwAAjAIAIAMAAACPAgAgAgAAkAIAMAMAAIwCACAC7gEBAAAAAe8BAQAAAAEBFQAAlAIAIALuAQEAAAAB7wEBAAAAAQEVAACWAgAwARUAAJYCADAC7gEBAIwDACHvAQEAjAMAIQIAAACMAgAgFQAAmQIAIALuAQEAjAMAIe8BAQCMAwAhAgAAAI8CACAVAACbAgAgAgAAAI8CACAVAACbAgAgAwAAAIwCACAcAACUAgAgHQAAmQIAIAEAAACMAgAgAQAAAI8CACADCAAAjgMAICIAAJADACAjAACPAwAgBdgBAADLAgAw2QEAAKICABDaAQAAywIAMO4BAQC_AgAh7wEBAL8CACEDAAAAjwIAIAIAAKECADAhAACiAgAgAwAAAI8CACACAACQAgAwAwAAjAIAIAvYAQAAxgIAMNkBAACoAgAQ2gEAAMYCADDbAQEAxwIAIdwBAQDHAgAh3QEBAMcCACHeAQEAxwIAId8BAQDHAgAh4AFAAMgCACHsAQAAyQIAIO0BAADKAgAgAQAAAKUCACABAAAApQIAIAnYAQAAxgIAMNkBAACoAgAQ2gEAAMYCADDbAQEAxwIAIdwBAQDHAgAh3QEBAMcCACHeAQEAxwIAId8BAQDHAgAh4AFAAMgCACEAAwAAAKgCACACAACpAgAwAwAApQIAIAMAAACoAgAgAgAAqQIAMAMAAKUCACADAAAAqAIAIAIAAKkCADADAAClAgAgBtsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BAQAAAAHfAQEAAAAB4AFAAAAAAQEVAACtAgAgBtsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BAQAAAAHfAQEAAAAB4AFAAAAAAQEVAACvAgAwARUAAK8CADAG2wEBAIwDACHcAQEAjAMAId0BAQCMAwAh3gEBAIwDACHfAQEAjAMAIeABQACNAwAhAgAAAKUCACAVAACyAgAgBtsBAQCMAwAh3AEBAIwDACHdAQEAjAMAId4BAQCMAwAh3wEBAIwDACHgAUAAjQMAIQIAAACoAgAgFQAAtAIAIAIAAACoAgAgFQAAtAIAIAMAAAClAgAgHAAArQIAIB0AALICACABAAAApQIAIAEAAACoAgAgAwgAAIkDACAiAACLAwAgIwAAigMAIAnYAQAAvgIAMNkBAAC7AgAQ2gEAAL4CADDbAQEAvwIAIdwBAQC_AgAh3QEBAL8CACHeAQEAvwIAId8BAQC_AgAh4AFAAMACACEDAAAAqAIAIAIAALoCADAhAAC7AgAgAwAAAKgCACACAACpAgAwAwAApQIAIAnYAQAAvgIAMNkBAAC7AgAQ2gEAAL4CADDbAQEAvwIAIdwBAQC_AgAh3QEBAL8CACHeAQEAvwIAId8BAQC_AgAh4AFAAMACACEOCAAAwgIAICIAAMUCACAjAADFAgAg4QEBAAAAAeIBAQAAAATjAQEAAAAE5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDEAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCwgAAMICACAiAADDAgAgIwAAwwIAIOEBQAAAAAHiAUAAAAAE4wFAAAAABOQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAAwQIAIQsIAADCAgAgIgAAwwIAICMAAMMCACDhAUAAAAAB4gFAAAAABOMBQAAAAATkAUAAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AFAAMECACEI4QECAAAAAeIBAgAAAATjAQIAAAAE5AECAAAAAeUBAgAAAAHmAQIAAAAB5wECAAAAAegBAgDCAgAhCOEBQAAAAAHiAUAAAAAE4wFAAAAABOQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAAwwIAIQ4IAADCAgAgIgAAxQIAICMAAMUCACDhAQEAAAAB4gEBAAAABOMBAQAAAATkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAMQCACHpAQEAAAAB6gEBAAAAAesBAQAAAAEL4QEBAAAAAeIBAQAAAATjAQEAAAAE5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDFAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCdgBAADGAgAw2QEAAKgCABDaAQAAxgIAMNsBAQDHAgAh3AEBAMcCACHdAQEAxwIAId4BAQDHAgAh3wEBAMcCACHgAUAAyAIAIQvhAQEAAAAB4gEBAAAABOMBAQAAAATkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAMUCACHpAQEAAAAB6gEBAAAAAesBAQAAAAEI4QFAAAAAAeIBQAAAAATjAUAAAAAE5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADDAgAhAtsBAQAAAAHdAQEAAAABAtsBAQAAAAHcAQEAAAABBdgBAADLAgAw2QEAAKICABDaAQAAywIAMO4BAQC_AgAh7wEBAL8CACEF2AEAAMwCADDZAQAAjwIAENoBAADMAgAw7gEBAMcCACHvAQEAxwIAIQLuAQEAAAAB7wEBAAAAAQ3YAQAAzgIAMNkBAACJAgAQ2gEAAM4CADDxAQEAvwIAIfIBAQC_AgAh8wEBAL8CACH0AQIAzwIAIfUBAADQAgAg9gEAANACACD3AQAA0AIAIPgBAgDPAgAh-QEBAL8CACH6AQAA0QIAIA0IAADCAgAgIgAAwgIAICMAAMICACB0AADUAgAgdQAAwgIAIOEBAgAAAAHiAQIAAAAE4wECAAAABOQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIA0wIAIQThAQEAAAAFgQIBAAAAAYICAQAAAASDAgEAAAAEDwgAAMICACAiAADSAgAgIwAA0gIAIOEBgAAAAAHkAYAAAAAB5QGAAAAAAeYBgAAAAAHnAYAAAAAB6AGAAAAAAfsBAQAAAAH8AQEAAAAB_QEBAAAAAf4BgAAAAAH_AYAAAAABgAKAAAAAAQzhAYAAAAAB5AGAAAAAAeUBgAAAAAHmAYAAAAAB5wGAAAAAAegBgAAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AYAAAAAB_wGAAAAAAYACgAAAAAENCAAAwgIAICIAAMICACAjAADCAgAgdAAA1AIAIHUAAMICACDhAQIAAAAB4gECAAAABOMBAgAAAATkAQIAAAAB5QECAAAAAeYBAgAAAAHnAQIAAAAB6AECANMCACEI4QEIAAAAAeIBCAAAAATjAQgAAAAE5AEIAAAAAeUBCAAAAAHmAQgAAAAB5wEIAAAAAegBCADUAgAhDdgBAADVAgAw2QEAAPYBABDaAQAA1QIAMPEBAQDHAgAh8gEBAMcCACHzAQEAxwIAIfQBAgDWAgAh9QEAANACACD2AQAA0AIAIPcBAADQAgAg-AECANYCACH5AQEAxwIAIfoBAADXAgAgCOEBAgAAAAHiAQIAAAAE4wECAAAABOQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIAwgIAIQzhAYAAAAAB5AGAAAAAAeUBgAAAAAHmAYAAAAAB5wGAAAAAAegBgAAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AYAAAAAB_wGAAAAAAYACgAAAAAEH2AEAANgCADDZAQAA8AEAENoBAADYAgAw7wEBAL8CACHxAQEAvwIAIYQCQADAAgAhhQJAAMACACEI2AEAANkCADDZAQAA2gEAENoBAADZAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhhgIBAL8CACGHAiAA2gIAIQUIAADCAgAgIgAA3AIAICMAANwCACDhASAAAAAB6AEgANsCACEFCAAAwgIAICIAANwCACAjAADcAgAg4QEgAAAAAegBIADbAgAhAuEBIAAAAAHoASAA3AIAIQjYAQAA3QIAMNkBAADHAQAQ2gEAAN0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGGAgEAxwIAIYcCIADeAgAhAuEBIAAAAAHoASAA3AIAIQLvAQEAAAABhgIBAAAAAQbYAQAA4AIAMNkBAADBAQAQ2gEAAOACADDgAUAAwAIAIe8BAQC_AgAh8QEBAL8CACEG2AEAAOECADDZAQAAqwEAENoBAADhAgAwiQIBAL8CACGKAgEAvwIAIYsCAgDPAgAhCNgBAADiAgAw2QEAAJUBABDaAQAA4gIAMOABQADAAgAh7wEBAL8CACGFAkAAwAIAIYwCAQC_AgAhjgIAAOMCjgIiBwgAAMICACAiAADlAgAgIwAA5QIAIOEBAAAAjgIC4gEAAACOAgjjAQAAAI4CCOgBAADkAo4CIgcIAADCAgAgIgAA5QIAICMAAOUCACDhAQAAAI4CAuIBAAAAjgII4wEAAACOAgjoAQAA5AKOAiIE4QEAAACOAgLiAQAAAI4CCOMBAAAAjgII6AEAAOUCjgIiDtgBAADmAgAw2QEAAH8AENoBAADmAgAw4AFAAMACACHxAQEAvwIAIYUCQADAAgAhjwIBAL8CACGQAgEAvwIAIZECAQC_AgAhkgIBAL8CACGTAgEAvwIAIZQCAQDnAgAhlQJAAOgCACGWAgEA5wIAIQ4IAADqAgAgIgAA7QIAICMAAO0CACDhAQEAAAAB4gEBAAAABeMBAQAAAAXkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAOwCACHpAQEAAAAB6gEBAAAAAesBAQAAAAELCAAA6gIAICIAAOsCACAjAADrAgAg4QFAAAAAAeIBQAAAAAXjAUAAAAAF5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADpAgAhCwgAAOoCACAiAADrAgAgIwAA6wIAIOEBQAAAAAHiAUAAAAAF4wFAAAAABeQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAA6QIAIQjhAQIAAAAB4gECAAAABeMBAgAAAAXkAQIAAAAB5QECAAAAAeYBAgAAAAHnAQIAAAAB6AECAOoCACEI4QFAAAAAAeIBQAAAAAXjAUAAAAAF5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADrAgAhDggAAOoCACAiAADtAgAgIwAA7QIAIOEBAQAAAAHiAQEAAAAF4wEBAAAABeQBAQAAAAHlAQEAAAAB5gEBAAAAAecBAQAAAAHoAQEA7AIAIekBAQAAAAHqAQEAAAAB6wEBAAAAAQvhAQEAAAAB4gEBAAAABeMBAQAAAAXkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAO0CACHpAQEAAAAB6gEBAAAAAesBAQAAAAEJ2AEAAO4CADDZAQAAaQAQ2gEAAO4CADDgAUAAwAIAIY8CAQC_AgAhlwIBAL8CACGYAgEA5wIAIZkCQADoAgAhmgIBAOcCACEJ2AEAAO8CADDZAQAAVgAQ2gEAAO8CADDgAUAAyAIAIY8CAQDHAgAhlwIBAMcCACGYAgEA8AIAIZkCQADxAgAhmgIBAPACACEL4QEBAAAAAeIBAQAAAAXjAQEAAAAF5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDtAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCOEBQAAAAAHiAUAAAAAF4wFAAAAABeQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAA6wIAIQnYAQAA8gIAMNkBAABQABDaAQAA8gIAMOABQADAAgAh7wEBAL8CACGPAgEAvwIAIZgCAQDnAgAhmQJAAOgCACGaAgEA5wIAIQnYAQAA8wIAMNkBAAA9ABDaAQAA8wIAMOABQADIAgAh7wEBAMcCACGPAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIRLYAQAA9AIAMNkBAAA3ABDaAQAA9AIAMOABQADAAgAh7gEBAOcCACGFAkAAwAIAIYYCAQDnAgAhjwIBAL8CACGSAgEAvwIAIZMCAQC_AgAhlQJAAOgCACGWAgEA5wIAIZsCAQDnAgAhnAIBAL8CACGdAiAA2gIAIZ4CIADaAgAhnwJAAOgCACGgAgEA5wIAIQLvAQEAAAAB8QEBAAAAAQgFAAD3AgAg2AEAAPYCADDZAQAAGQAQ2gEAAPYCADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIRsBAACDAwAgBAAAhAMAIAkAAIUDACAMAACGAwAgDQAAhgMAIA4AAIcDACAPAACIAwAg2AEAAIIDADDZAQAAAwAQ2gEAAIIDADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQDHAgAhkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACGnAgAAAwAgqAIAAAMAIALvAQEAAAAB8QEBAAAAAQcFAAD3AgAg2AEAAPkCADDZAQAAFQAQ2gEAAPkCADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACECiQIBAAAAAYoCAQAAAAEICgAA9wIAIAsAAPcCACDYAQAA-wIAMNkBAAAQABDaAQAA-wIAMIkCAQDHAgAhigIBAMcCACGLAgIA1gIAIQLvAQEAAAABjAIBAAAAAQkGAAD_AgAg2AEAAP0CADDZAQAACwAQ2gEAAP0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGMAgEAxwIAIY4CAAD-Ao4CIgThAQAAAI4CAuIBAAAAjgII4wEAAACOAgjoAQAA5QKOAiISBQAA9wIAIAcAAIEDACDYAQAAgAMAMNkBAAAHABDaAQAAgAMAMOABQADIAgAh8QEBAMcCACGFAkAAyAIAIY8CAQDHAgAhkAIBAMcCACGRAgEAxwIAIZICAQDHAgAhkwIBAMcCACGUAgEA8AIAIZUCQADxAgAhlgIBAPACACGnAgAABwAgqAIAAAcAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAMcCACGQAgEAxwIAIZECAQDHAgAhkgIBAMcCACGTAgEAxwIAIZQCAQDwAgAhlQJAAPECACGWAgEA8AIAIQOkAgAACwAgpQIAAAsAIKYCAAALACAZAQAAgwMAIAQAAIQDACAJAACFAwAgDAAAhgMAIA0AAIYDACAOAACHAwAgDwAAiAMAINgBAACCAwAw2QEAAAMAENoBAACCAwAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAxwIAIZICAQDHAgAhkwIBAMcCACGVAkAA8QIAIZYCAQDwAgAhmwIBAPACACGcAgEAxwIAIZ0CIADeAgAhngIgAN4CACGfAkAA8QIAIaACAQDwAgAhGwEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIacCAAADACCoAgAAAwAgA6QCAAADACClAgAAAwAgpgIAAAMAIAOkAgAABwAgpQIAAAcAIKYCAAAHACADpAIAABAAIKUCAAAQACCmAgAAEAAgA6QCAAAVACClAgAAFQAgpgIAABUAIAOkAgAAGQAgpQIAABkAIKYCAAAZACAAAAABrAIBAAAAAQGsAkAAAAABAAAAAAAAAAAFrAICAAAAAbMCAgAAAAG0AgIAAAABtQICAAAAAbYCAgAAAAECrAIBAAAABLICAQAAAAUCrAIBAAAABLICAQAAAAUCrAIBAAAABLICAQAAAAUBrAIBAAAABAGsAgEAAAAEAawCAQAAAAQAAAAFHAAA2QQAIB0AANwEACCpAgAA2gQAIKoCAADbBAAgrwIAAAEAIAMcAADZBAAgqQIAANoEACCvAgAAAQAgAAAAAawCIAAAAAEAAAAFHAAA1AQAIB0AANcEACCpAgAA1QQAIKoCAADWBAAgrwIAAAEAIAMcAADUBAAgqQIAANUEACCvAgAAAQAgAAAAAAAFHAAAzAQAIB0AANIEACCpAgAAzQQAIKoCAADRBAAgrwIAAAEAIAUcAADKBAAgHQAAzwQAIKkCAADLBAAgqgIAAM4EACCvAgAAAQAgAxwAAMwEACCpAgAAzQQAIK8CAAABACADHAAAygQAIKkCAADLBAAgrwIAAAEAIAAAAAGsAgAAAI4CAgUcAADFBAAgHQAAyAQAIKkCAADGBAAgqgIAAMcEACCvAgAACQAgAxwAAMUEACCpAgAAxgQAIK8CAAAJACAAAAAAAawCAQAAAAEBrAJAAAAAAQUcAAC_BAAgHQAAwwQAIKkCAADABAAgqgIAAMIEACCvAgAAAQAgCxwAAMIDADAdAADHAwAwqQIAAMMDADCqAgAAxAMAMKsCAADFAwAgrAIAAMYDADCtAgAAxgMAMK4CAADGAwAwrwIAAMYDADCwAgAAyAMAMLECAADJAwAwBOABQAAAAAHvAQEAAAABhQJAAAAAAY4CAAAAjgICAgAAAA0AIBwAAM0DACADAAAADQAgHAAAzQMAIB0AAMwDACABFQAAwQQAMAoGAAD_AgAg2AEAAP0CADDZAQAACwAQ2gEAAP0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGMAgEAxwIAIY4CAAD-Ao4CIqMCAAD8AgAgAgAAAA0AIBUAAMwDACACAAAAygMAIBUAAMsDACAI2AEAAMkDADDZAQAAygMAENoBAADJAwAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhjAIBAMcCACGOAgAA_gKOAiII2AEAAMkDADDZAQAAygMAENoBAADJAwAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhjAIBAMcCACGOAgAA_gKOAiIE4AFAAI0DACHvAQEAjAMAIYUCQACNAwAhjgIAALcDjgIiBOABQACNAwAh7wEBAIwDACGFAkAAjQMAIY4CAAC3A44CIgTgAUAAAAAB7wEBAAAAAYUCQAAAAAGOAgAAAI4CAgMcAAC_BAAgqQIAAMAEACCvAgAAAQAgBBwAAMIDADCpAgAAwwMAMKsCAADFAwAgrwIAAMYDADAAAAAAAAAAAAAHHAAAtAQAIB0AAL0EACCpAgAAtQQAIKoCAAC8BAAgrQIAAAMAIK4CAAADACCvAgAAAQAgCxwAAJkEADAdAACeBAAwqQIAAJoEADCqAgAAmwQAMKsCAACcBAAgrAIAAJ0EADCtAgAAnQQAMK4CAACdBAAwrwIAAJ0EADCwAgAAnwQAMLECAACgBAAwCxwAAI0EADAdAACSBAAwqQIAAI4EADCqAgAAjwQAMKsCAACQBAAgrAIAAJEEADCtAgAAkQQAMK4CAACRBAAwrwIAAJEEADCwAgAAkwQAMLECAACUBAAwCxwAAIQEADAdAACIBAAwqQIAAIUEADCqAgAAhgQAMKsCAACHBAAgrAIAAPwDADCtAgAA_AMAMK4CAAD8AwAwrwIAAPwDADCwAgAAiQQAMLECAAD_AwAwCxwAAPgDADAdAAD9AwAwqQIAAPkDADCqAgAA-gMAMKsCAAD7AwAgrAIAAPwDADCtAgAA_AMAMK4CAAD8AwAwrwIAAPwDADCwAgAA_gMAMLECAAD_AwAwCxwAAOwDADAdAADxAwAwqQIAAO0DADCqAgAA7gMAMKsCAADvAwAgrAIAAPADADCtAgAA8AMAMK4CAADwAwAwrwIAAPADADCwAgAA8gMAMLECAADzAwAwCxwAAOADADAdAADlAwAwqQIAAOEDADCqAgAA4gMAMKsCAADjAwAgrAIAAOQDADCtAgAA5AMAMK4CAADkAwAwrwIAAOQDADCwAgAA5gMAMLECAADnAwAwA-8BAQAAAAGEAkAAAAABhQJAAAAAAQIAAAAbACAcAADrAwAgAwAAABsAIBwAAOsDACAdAADqAwAgARUAALsEADAJBQAA9wIAINgBAAD2AgAw2QEAABkAENoBAAD2AgAw7wEBAMcCACHxAQEAxwIAIYQCQADIAgAhhQJAAMgCACGhAgAA9QIAIAIAAAAbACAVAADqAwAgAgAAAOgDACAVAADpAwAgB9gBAADnAwAw2QEAAOgDABDaAQAA5wMAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhB9gBAADnAwAw2QEAAOgDABDaAQAA5wMAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhA-8BAQCMAwAhhAJAAI0DACGFAkAAjQMAIQPvAQEAjAMAIYQCQACNAwAhhQJAAI0DACED7wEBAAAAAYQCQAAAAAGFAkAAAAABAuABQAAAAAHvAQEAAAABAgAAABcAIBwAAPcDACADAAAAFwAgHAAA9wMAIB0AAPYDACABFQAAugQAMAgFAAD3AgAg2AEAAPkCADDZAQAAFQAQ2gEAAPkCADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACGhAgAA-AIAIAIAAAAXACAVAAD2AwAgAgAAAPQDACAVAAD1AwAgBtgBAADzAwAw2QEAAPQDABDaAQAA8wMAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIQbYAQAA8wMAMNkBAAD0AwAQ2gEAAPMDADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACEC4AFAAI0DACHvAQEAjAMAIQLgAUAAjQMAIe8BAQCMAwAhAuABQAAAAAHvAQEAAAABAwoAALIDACCJAgEAAAABiwICAAAAAQIAAAASACAcAACDBAAgAwAAABIAIBwAAIMEACAdAACCBAAgARUAALkEADAJCgAA9wIAIAsAAPcCACDYAQAA-wIAMNkBAAAQABDaAQAA-wIAMIkCAQDHAgAhigIBAMcCACGLAgIA1gIAIaICAAD6AgAgAgAAABIAIBUAAIIEACACAAAAgAQAIBUAAIEEACAG2AEAAP8DADDZAQAAgAQAENoBAAD_AwAwiQIBAMcCACGKAgEAxwIAIYsCAgDWAgAhBtgBAAD_AwAw2QEAAIAEABDaAQAA_wMAMIkCAQDHAgAhigIBAMcCACGLAgIA1gIAIQKJAgEAjAMAIYsCAgCWAwAhAwoAALADACCJAgEAjAMAIYsCAgCWAwAhAwoAALIDACCJAgEAAAABiwICAAAAAQMLAACzAwAgigIBAAAAAYsCAgAAAAECAAAAEgAgHAAAjAQAIAMAAAASACAcAACMBAAgHQAAiwQAIAEVAAC4BAAwAgAAABIAIBUAAIsEACACAAAAgAQAIBUAAIoEACACigIBAIwDACGLAgIAlgMAIQMLAACxAwAgigIBAIwDACGLAgIAlgMAIQMLAACzAwAgigIBAAAAAYsCAgAAAAELBwAAzwMAIOABQAAAAAGFAkAAAAABjwIBAAAAAZACAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQJAAAAAAZYCAQAAAAECAAAACQAgHAAAmAQAIAMAAAAJACAcAACYBAAgHQAAlwQAIAEVAAC3BAAwEAUAAPcCACAHAACBAwAg2AEAAIADADDZAQAABwAQ2gEAAIADADDgAUAAyAIAIfEBAQDHAgAhhQJAAMgCACGPAgEAAAABkAIBAMcCACGRAgEAxwIAIZICAQDHAgAhkwIBAMcCACGUAgEA8AIAIZUCQADxAgAhlgIBAPACACECAAAACQAgFQAAlwQAIAIAAACVBAAgFQAAlgQAIA7YAQAAlAQAMNkBAACVBAAQ2gEAAJQEADDgAUAAyAIAIfEBAQDHAgAhhQJAAMgCACGPAgEAxwIAIZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhDtgBAACUBAAw2QEAAJUEABDaAQAAlAQAMOABQADIAgAh8QEBAMcCACGFAkAAyAIAIY8CAQDHAgAhkAIBAMcCACGRAgEAxwIAIZICAQDHAgAhkwIBAMcCACGUAgEA8AIAIZUCQADxAgAhlgIBAPACACEK4AFAAI0DACGFAkAAjQMAIY8CAQCMAwAhkAIBAIwDACGRAgEAjAMAIZICAQCMAwAhkwIBAIwDACGUAgEAvgMAIZUCQAC_AwAhlgIBAL4DACELBwAAwQMAIOABQACNAwAhhQJAAI0DACGPAgEAjAMAIZACAQCMAwAhkQIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlAIBAL4DACGVAkAAvwMAIZYCAQC-AwAhCwcAAM8DACDgAUAAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABFAQAAKUEACAJAACmBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABAgAAAAEAIBwAAKQEACADAAAAAQAgHAAApAQAIB0AAKMEACABFQAAtgQAMBkBAACDAwAgBAAAhAMAIAkAAIUDACAMAACGAwAgDQAAhgMAIA4AAIcDACAPAACIAwAg2AEAAIIDADDZAQAAAwAQ2gEAAIIDADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQAAAAGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIQIAAAABACAVAACjBAAgAgAAAKEEACAVAACiBAAgEtgBAACgBAAw2QEAAKEEABDaAQAAoAQAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIRLYAQAAoAQAMNkBAAChBAAQ2gEAAKAEADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQDHAgAhkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACEO4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRQEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIA8AAN8DACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFAQAAKUEACAJAACmBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABBBwAAJkEADCpAgAAmgQAMKsCAACcBAAgrwIAAJ0EADAEHAAAjQQAMKkCAACOBAAwqwIAAJAEACCvAgAAkQQAMAQcAACEBAAwqQIAAIUEADCrAgAAhwQAIK8CAAD8AwAwBBwAAPgDADCpAgAA-QMAMKsCAAD7AwAgrwIAAPwDADAEHAAA7AMAMKkCAADtAwAwqwIAAO8DACCvAgAA8AMAMAQcAADgAwAwqQIAAOEDADCrAgAA4wMAIK8CAADkAwAwAxwAALQEACCpAgAAtQQAIK8CAAABACAOAQAArAQAIAQAAK8EACAJAACwBAAgDAAAsQQAIA0AALEEACAOAACyBAAgDwAAswQAIO4BAAC6AwAghgIAALoDACCVAgAAugMAIJYCAAC6AwAgmwIAALoDACCfAgAAugMAIKACAAC6AwAgBQUAAKwEACAHAACuBAAglAIAALoDACCVAgAAugMAIJYCAAC6AwAgAAAAAAAAFQEAAKsEACAJAACmBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAAC0BAAgDuABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABCuABQAAAAAGFAkAAAAABjwIBAAAAAZACAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQJAAAAAAZYCAQAAAAECigIBAAAAAYsCAgAAAAECiQIBAAAAAYsCAgAAAAEC4AFAAAAAAe8BAQAAAAED7wEBAAAAAYQCQAAAAAGFAkAAAAABAwAAAAMAIBwAALQEACAdAAC-BAAgFwAAAAMAIAEAANkDACAJAADbAwAgDAAA3AMAIA0AAN0DACAOAADeAwAgDwAA3wMAIBUAAL4EACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAkAANsDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAAKsEACAEAAClBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAAC_BAAgBOABQAAAAAHvAQEAAAABhQJAAAAAAY4CAAAAjgICAwAAAAMAIBwAAL8EACAdAADEBAAgFwAAAAMAIAEAANkDACAEAADaAwAgDAAA3AMAIA0AAN0DACAOAADeAwAgDwAA3wMAIBUAAMQEACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhDAUAAM4DACDgAUAAAAAB8QEBAAAAAYUCQAAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAkAAAAABlgIBAAAAAQIAAAAJACAcAADFBAAgAwAAAAcAIBwAAMUEACAdAADJBAAgDgAAAAcAIAUAAMADACAVAADJBAAg4AFAAI0DACHxAQEAjAMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIQwFAADAAwAg4AFAAI0DACHxAQEAjAMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIRUBAACrBAAgBAAApQQAIAkAAKYEACAMAACnBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAAygQAIBUBAACrBAAgBAAApQQAIAkAAKYEACANAACoBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAAzAQAIAMAAAADACAcAADKBAAgHQAA0AQAIBcAAAADACABAADZAwAgBAAA2gMAIAkAANsDACAMAADcAwAgDgAA3gMAIA8AAN8DACAVAADQBAAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACAOAADeAwAgDwAA3wMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIQMAAAADACAcAADMBAAgHQAA0wQAIBcAAAADACABAADZAwAgBAAA2gMAIAkAANsDACANAADdAwAgDgAA3gMAIA8AAN8DACAVAADTBAAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAANkDACAEAADaAwAgCQAA2wMAIA0AAN0DACAOAADeAwAgDwAA3wMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRUBAACrBAAgBAAApQQAIAkAAKYEACAMAACnBAAgDQAAqAQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAA1AQAIAMAAAADACAcAADUBAAgHQAA2AQAIBcAAAADACABAADZAwAgBAAA2gMAIAkAANsDACAMAADcAwAgDQAA3QMAIA8AAN8DACAVAADYBAAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDwAA3wMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRUBAACrBAAgBAAApQQAIAkAAKYEACAMAACnBAAgDQAAqAQAIA4AAKkEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAA2QQAIAMAAAADACAcAADZBAAgHQAA3QQAIBcAAAADACABAADZAwAgBAAA2gMAIAkAANsDACAMAADcAwAgDQAA3QMAIA4AAN4DACAVAADdBAAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIQgBBAEEBgEIAAgJCgIMEwUNFAUOGAYPHAcDBQABBw4DCAAEAQYAAgEHDwACCgABCwABAQUAAQEFAAEGBB0ACR4ADB8ADSAADiEADyIAAAEBLAEBATIBAwgADSIADiMADwAAAAMIAA0iAA4jAA8AAAADCAAVIgAWIwAXAAAAAwgAFSIAFiMAFwAAAAMIAB0iAB4jAB8AAAADCAAdIgAeIwAfAQUAAQEFAAEDCAAkIgAlIwAmAAAAAwgAJCIAJSMAJgEGAAIBBgACAwgAKyIALCMALQAAAAMIACsiACwjAC0CCgABCwABAgoAAQsAAQUIADIiADUjADZ0ADN1ADQAAAAAAAUIADIiADUjADZ0ADN1ADQBBQABAQUAAQMIADsiADwjAD0AAAADCAA7IgA8IwA9AAAAAwgAQyIARCMARQAAAAMIAEMiAEQjAEUBBQABAQUAAQMIAEoiAEsjAEwAAAADCABKIgBLIwBMAAAABQgAUiIAVSMAVnQAU3UAVAAAAAAABQgAUiIAVSMAVnQAU3UAVAAAAAMIAFwiAF0jAF4AAAADCABcIgBdIwBeAAAAAwgAZCIAZSMAZgAAAAMIAGQiAGUjAGYQAgERIwESJAETJQEUJgEWKAEXKgkYKwoZLgEaMAkbMQseMwEfNAEgNQkkOAwlORAmOxEnPBEoPxEpQBEqQRErQxEsRQktRhIuSBEvSgkwSxMxTBEyTREzTgk0URQ1Uhg2VBk3VRk4WBk5WRk6Whk7XBk8Xgk9Xxo-YRk_YwlAZBtBZRlCZhlDZwlEahxFayBGbAJHbQJIbgJJbwJKcAJLcgJMdAlNdSFOdwJPeQlQeiJRewJSfAJTfQlUgAEjVYEBJ1aCAQNXgwEDWIQBA1mFAQNahgEDW4gBA1yKAQldiwEoXo0BA1-PAQlgkAEpYZEBA2KSAQNjkwEJZJYBKmWXAS5mmAEFZ5kBBWiaAQVpmwEFapwBBWueAQVsoAEJbaEBL26jAQVvpQEJcKYBMHGnAQVyqAEFc6kBCXasATF3rQE3eK4BBnmvAQZ6sAEGe7EBBnyyAQZ9tAEGfrYBCX-3ATiAAbkBBoEBuwEJggG8ATmDAb0BBoQBvgEGhQG_AQmGAcIBOocBwwE-iAHFAT-JAcYBP4oByQE_iwHKAT-MAcsBP40BzQE_jgHPAQmPAdABQJAB0gE_kQHUAQmSAdUBQZMB1gE_lAHXAT-VAdgBCZYB2wFClwHcAUaYAd0BB5kB3gEHmgHfAQebAeABB5wB4QEHnQHjAQeeAeUBCZ8B5gFHoAHoAQehAeoBCaIB6wFIowHsAQekAe0BB6UB7gEJpgHxAUmnAfIBTagB9AFOqQH1AU6qAfgBTqsB-QFOrAH6AU6tAfwBTq4B_gEJrwH_AU-wAYECTrEBgwIJsgGEAlCzAYUCTrQBhgJOtQGHAgm2AYoCUbcBiwJXuAGNAli5AY4CWLoBkQJYuwGSAli8AZMCWL0BlQJYvgGXAgm_AZgCWcABmgJYwQGcAgnCAZ0CWsMBngJYxAGfAljFAaACCcYBowJbxwGkAl_IAaYCYMkBpwJgygGqAmDLAasCYMwBrAJgzQGuAmDOAbACCc8BsQJh0AGzAmDRAbUCCdIBtgJi0wG3AmDUAbgCYNUBuQIJ1gG8AmPXAb0CZw" + graph: "3QRnwAEZAQAAgwMAIAQAAIQDACAJAACFAwAgDAAAhgMAIA0AAIYDACAOAACHAwAgDwAAiAMAINgBAACCAwAw2QEAAAMAENoBAACCAwAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAAAABkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACEBAAAAAQAgGQEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIQEAAAADACAOAQAArAQAIAQAAK8EACAJAACwBAAgDAAAsQQAIA0AALEEACAOAACyBAAgDwAAswQAIO4BAAC6AwAghgIAALoDACCVAgAAugMAIJYCAAC6AwAgmwIAALoDACCfAgAAugMAIKACAAC6AwAgAwAAAAMAIAIAAAUAMAMAAAEAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAMcCACGQAgEAxwIAIZECAQDHAgAhkgIBAMcCACGTAgEAxwIAIZQCAQDwAgAhlQJAAPECACGWAgEA8AIAIQUFAACsBAAgBwAArgQAIJQCAAC6AwAglQIAALoDACCWAgAAugMAIBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAAAAAZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhAwAAAAcAIAIAAAgAMAMAAAkAIAkGAAD_AgAg2AEAAP0CADDZAQAACwAQ2gEAAP0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGMAgEAxwIAIY4CAAD-Ao4CIgEGAACtBAAgCgYAAP8CACDYAQAA_QIAMNkBAAALABDaAQAA_QIAMOABQADIAgAh7wEBAMcCACGFAkAAyAIAIYwCAQDHAgAhjgIAAP4CjgIiowIAAPwCACADAAAACwAgAgAADAAwAwAADQAgAQAAAAsAIAgKAAD3AgAgCwAA9wIAINgBAAD7AgAw2QEAABAAENoBAAD7AgAwiQIBAMcCACGKAgEAxwIAIYsCAgDWAgAhAgoAAKwEACALAACsBAAgCQoAAPcCACALAAD3AgAg2AEAAPsCADDZAQAAEAAQ2gEAAPsCADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACGiAgAA-gIAIAMAAAAQACACAAARADADAAASACADAAAAEAAgAgAAEQAwAwAAEgAgCAUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIYcCIADeAgAhAQUAAKwEACAJBQAA9wIAINgBAAD5AgAw2QEAABUAENoBAAD5AgAw4AFAAMgCACHvAQEAxwIAIfEBAQDHAgAhhwIgAN4CACGhAgAA-AIAIAMAAAAVACACAAAWADADAAAXACAIBQAA9wIAINgBAAD2AgAw2QEAABkAENoBAAD2AgAw7wEBAMcCACHxAQEAxwIAIYQCQADIAgAhhQJAAMgCACEBBQAArAQAIAkFAAD3AgAg2AEAAPYCADDZAQAAGQAQ2gEAAPYCADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIaECAAD1AgAgAwAAABkAIAIAABoAMAMAABsAIAEAAAADACABAAAABwAgAQAAABAAIAEAAAAQACABAAAAFQAgAQAAABkAIAEAAAABACADAAAAAwAgAgAABQAwAwAAAQAgAwAAAAMAIAIAAAUAMAMAAAEAIAMAAAADACACAAAFADADAAABACAWAQAAqwQAIAQAAKUEACAJAACmBAAgDAAApwQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQEVAAAnACAP4AFAAAAAAe4BAQAAAAGFAkAAAAABhgIBAAAAAY8CAQAAAAGSAgEAAAABkwIBAAAAAZUCQAAAAAGWAgEAAAABmwIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABARUAACkAMAEVAAApADABAAAAAwAgFgEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIA8AAN8DACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACECAAAAAQAgFQAALQAgD-ABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIQIAAAADACAVAAAvACACAAAAAwAgFQAALwAgAQAAAAMAIAMAAAABACAcAAAnACAdAAAtACABAAAAAQAgAQAAAAMAIAoIAADWAwAgIgAA2AMAICMAANcDACDuAQAAugMAIIYCAAC6AwAglQIAALoDACCWAgAAugMAIJsCAAC6AwAgnwIAALoDACCgAgAAugMAIBLYAQAA9AIAMNkBAAA3ABDaAQAA9AIAMOABQADAAgAh7gEBAOcCACGFAkAAwAIAIYYCAQDnAgAhjwIBAL8CACGSAgEAvwIAIZMCAQC_AgAhlQJAAOgCACGWAgEA5wIAIZsCAQDnAgAhnAIBAL8CACGdAiAA2gIAIZ4CIADaAgAhnwJAAOgCACGgAgEA5wIAIQMAAAADACACAAA2ADAhAAA3ACADAAAAAwAgAgAABQAwAwAAAQAgCdgBAADzAgAw2QEAAD0AENoBAADzAgAw4AFAAMgCACHvAQEAxwIAIY8CAQAAAAGYAgEA8AIAIZkCQADxAgAhmgIBAPACACEBAAAAOgAgAQAAADoAIAnYAQAA8wIAMNkBAAA9ABDaAQAA8wIAMOABQADIAgAh7wEBAMcCACGPAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQOYAgAAugMAIJkCAAC6AwAgmgIAALoDACADAAAAPQAgAgAAPgAwAwAAOgAgAwAAAD0AIAIAAD4AMAMAADoAIAMAAAA9ACACAAA-ADADAAA6ACAG4AFAAAAAAe8BAQAAAAGPAgEAAAABmAIBAAAAAZkCQAAAAAGaAgEAAAABARUAAEIAIAbgAUAAAAAB7wEBAAAAAY8CAQAAAAGYAgEAAAABmQJAAAAAAZoCAQAAAAEBFQAARAAwARUAAEQAMAbgAUAAjQMAIe8BAQCMAwAhjwIBAIwDACGYAgEAvgMAIZkCQAC_AwAhmgIBAL4DACECAAAAOgAgFQAARwAgBuABQACNAwAh7wEBAIwDACGPAgEAjAMAIZgCAQC-AwAhmQJAAL8DACGaAgEAvgMAIQIAAAA9ACAVAABJACACAAAAPQAgFQAASQAgAwAAADoAIBwAAEIAIB0AAEcAIAEAAAA6ACABAAAAPQAgBggAANMDACAiAADVAwAgIwAA1AMAIJgCAAC6AwAgmQIAALoDACCaAgAAugMAIAnYAQAA8gIAMNkBAABQABDaAQAA8gIAMOABQADAAgAh7wEBAL8CACGPAgEAvwIAIZgCAQDnAgAhmQJAAOgCACGaAgEA5wIAIQMAAAA9ACACAABPADAhAABQACADAAAAPQAgAgAAPgAwAwAAOgAgCdgBAADvAgAw2QEAAFYAENoBAADvAgAw4AFAAMgCACGPAgEAAAABlwIBAMcCACGYAgEA8AIAIZkCQADxAgAhmgIBAPACACEBAAAAUwAgAQAAAFMAIAnYAQAA7wIAMNkBAABWABDaAQAA7wIAMOABQADIAgAhjwIBAMcCACGXAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQOYAgAAugMAIJkCAAC6AwAgmgIAALoDACADAAAAVgAgAgAAVwAwAwAAUwAgAwAAAFYAIAIAAFcAMAMAAFMAIAMAAABWACACAABXADADAABTACAG4AFAAAAAAY8CAQAAAAGXAgEAAAABmAIBAAAAAZkCQAAAAAGaAgEAAAABARUAAFsAIAbgAUAAAAABjwIBAAAAAZcCAQAAAAGYAgEAAAABmQJAAAAAAZoCAQAAAAEBFQAAXQAwARUAAF0AMAbgAUAAjQMAIY8CAQCMAwAhlwIBAIwDACGYAgEAvgMAIZkCQAC_AwAhmgIBAL4DACECAAAAUwAgFQAAYAAgBuABQACNAwAhjwIBAIwDACGXAgEAjAMAIZgCAQC-AwAhmQJAAL8DACGaAgEAvgMAIQIAAABWACAVAABiACACAAAAVgAgFQAAYgAgAwAAAFMAIBwAAFsAIB0AAGAAIAEAAABTACABAAAAVgAgBggAANADACAiAADSAwAgIwAA0QMAIJgCAAC6AwAgmQIAALoDACCaAgAAugMAIAnYAQAA7gIAMNkBAABpABDaAQAA7gIAMOABQADAAgAhjwIBAL8CACGXAgEAvwIAIZgCAQDnAgAhmQJAAOgCACGaAgEA5wIAIQMAAABWACACAABoADAhAABpACADAAAAVgAgAgAAVwAwAwAAUwAgAQAAAAkAIAEAAAAJACADAAAABwAgAgAACAAwAwAACQAgAwAAAAcAIAIAAAgAMAMAAAkAIAMAAAAHACACAAAIADADAAAJACANBQAAzgMAIAcAAM8DACDgAUAAAAAB8QEBAAAAAYUCQAAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAkAAAAABlgIBAAAAAQEVAABxACAL4AFAAAAAAfEBAQAAAAGFAkAAAAABjwIBAAAAAZACAQAAAAGRAgEAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQJAAAAAAZYCAQAAAAEBFQAAcwAwARUAAHMAMA0FAADAAwAgBwAAwQMAIOABQACNAwAh8QEBAIwDACGFAkAAjQMAIY8CAQCMAwAhkAIBAIwDACGRAgEAjAMAIZICAQCMAwAhkwIBAIwDACGUAgEAvgMAIZUCQAC_AwAhlgIBAL4DACECAAAACQAgFQAAdgAgC-ABQACNAwAh8QEBAIwDACGFAkAAjQMAIY8CAQCMAwAhkAIBAIwDACGRAgEAjAMAIZICAQCMAwAhkwIBAIwDACGUAgEAvgMAIZUCQAC_AwAhlgIBAL4DACECAAAABwAgFQAAeAAgAgAAAAcAIBUAAHgAIAMAAAAJACAcAABxACAdAAB2ACABAAAACQAgAQAAAAcAIAYIAAC7AwAgIgAAvQMAICMAALwDACCUAgAAugMAIJUCAAC6AwAglgIAALoDACAO2AEAAOYCADDZAQAAfwAQ2gEAAOYCADDgAUAAwAIAIfEBAQC_AgAhhQJAAMACACGPAgEAvwIAIZACAQC_AgAhkQIBAL8CACGSAgEAvwIAIZMCAQC_AgAhlAIBAOcCACGVAkAA6AIAIZYCAQDnAgAhAwAAAAcAIAIAAH4AMCEAAH8AIAMAAAAHACACAAAIADADAAAJACABAAAADQAgAQAAAA0AIAMAAAALACACAAAMADADAAANACADAAAACwAgAgAADAAwAwAADQAgAwAAAAsAIAIAAAwAMAMAAA0AIAYGAAC5AwAg4AFAAAAAAe8BAQAAAAGFAkAAAAABjAIBAAAAAY4CAAAAjgICARUAAIcBACAF4AFAAAAAAe8BAQAAAAGFAkAAAAABjAIBAAAAAY4CAAAAjgICARUAAIkBADABFQAAiQEAMAYGAAC4AwAg4AFAAI0DACHvAQEAjAMAIYUCQACNAwAhjAIBAIwDACGOAgAAtwOOAiICAAAADQAgFQAAjAEAIAXgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGMAgEAjAMAIY4CAAC3A44CIgIAAAALACAVAACOAQAgAgAAAAsAIBUAAI4BACADAAAADQAgHAAAhwEAIB0AAIwBACABAAAADQAgAQAAAAsAIAMIAAC0AwAgIgAAtgMAICMAALUDACAI2AEAAOICADDZAQAAlQEAENoBAADiAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhjAIBAL8CACGOAgAA4wKOAiIDAAAACwAgAgAAlAEAMCEAAJUBACADAAAACwAgAgAADAAwAwAADQAgAQAAABIAIAEAAAASACADAAAAEAAgAgAAEQAwAwAAEgAgAwAAABAAIAIAABEAMAMAABIAIAMAAAAQACACAAARADADAAASACAFCgAAsgMAIAsAALMDACCJAgEAAAABigIBAAAAAYsCAgAAAAEBFQAAnQEAIAOJAgEAAAABigIBAAAAAYsCAgAAAAEBFQAAnwEAMAEVAACfAQAwBQoAALADACALAACxAwAgiQIBAIwDACGKAgEAjAMAIYsCAgCWAwAhAgAAABIAIBUAAKIBACADiQIBAIwDACGKAgEAjAMAIYsCAgCWAwAhAgAAABAAIBUAAKQBACACAAAAEAAgFQAApAEAIAMAAAASACAcAACdAQAgHQAAogEAIAEAAAASACABAAAAEAAgBQgAAKsDACAiAACuAwAgIwAArQMAIHQAAKwDACB1AACvAwAgBtgBAADhAgAw2QEAAKsBABDaAQAA4QIAMIkCAQC_AgAhigIBAL8CACGLAgIAzwIAIQMAAAAQACACAACqAQAwIQAAqwEAIAMAAAAQACACAAARADADAAASACABAAAAFwAgAQAAABcAIAMAAAAVACACAAAWADADAAAXACADAAAAFQAgAgAAFgAwAwAAFwAgAwAAABUAIAIAABYAMAMAABcAIAUFAACqAwAg4AFAAAAAAe8BAQAAAAHxAQEAAAABhwIgAAAAAQEVAACzAQAgBOABQAAAAAHvAQEAAAAB8QEBAAAAAYcCIAAAAAEBFQAAtQEAMAEVAAC1AQAwBQUAAKkDACDgAUAAjQMAIe8BAQCMAwAh8QEBAIwDACGHAiAApQMAIQIAAAAXACAVAAC4AQAgBOABQACNAwAh7wEBAIwDACHxAQEAjAMAIYcCIAClAwAhAgAAABUAIBUAALoBACACAAAAFQAgFQAAugEAIAMAAAAXACAcAACzAQAgHQAAuAEAIAEAAAAXACABAAAAFQAgAwgAAKYDACAiAACoAwAgIwAApwMAIAfYAQAA4AIAMNkBAADBAQAQ2gEAAOACADDgAUAAwAIAIe8BAQC_AgAh8QEBAL8CACGHAiAA2gIAIQMAAAAVACACAADAAQAwIQAAwQEAIAMAAAAVACACAAAWADADAAAXACAJ2AEAAN0CADDZAQAAxwEAENoBAADdAgAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhhgIBAMcCACGHAiAA3gIAIYgCAADfAgAgAQAAAMQBACABAAAAxAEAIAjYAQAA3QIAMNkBAADHAQAQ2gEAAN0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGGAgEAxwIAIYcCIADeAgAhAAMAAADHAQAgAgAAyAEAMAMAAMQBACADAAAAxwEAIAIAAMgBADADAADEAQAgAwAAAMcBACACAADIAQAwAwAAxAEAIAXgAUAAAAAB7wEBAAAAAYUCQAAAAAGGAgEAAAABhwIgAAAAAQEVAADMAQAgBeABQAAAAAHvAQEAAAABhQJAAAAAAYYCAQAAAAGHAiAAAAABARUAAM4BADABFQAAzgEAMAXgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGGAgEAjAMAIYcCIAClAwAhAgAAAMQBACAVAADRAQAgBeABQACNAwAh7wEBAIwDACGFAkAAjQMAIYYCAQCMAwAhhwIgAKUDACECAAAAxwEAIBUAANMBACACAAAAxwEAIBUAANMBACADAAAAxAEAIBwAAMwBACAdAADRAQAgAQAAAMQBACABAAAAxwEAIAMIAACiAwAgIgAApAMAICMAAKMDACAI2AEAANkCADDZAQAA2gEAENoBAADZAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhhgIBAL8CACGHAiAA2gIAIQMAAADHAQAgAgAA2QEAMCEAANoBACADAAAAxwEAIAIAAMgBADADAADEAQAgAQAAABsAIAEAAAAbACADAAAAGQAgAgAAGgAwAwAAGwAgAwAAABkAIAIAABoAMAMAABsAIAMAAAAZACACAAAaADADAAAbACAFBQAAoQMAIO8BAQAAAAHxAQEAAAABhAJAAAAAAYUCQAAAAAEBFQAA4gEAIATvAQEAAAAB8QEBAAAAAYQCQAAAAAGFAkAAAAABARUAAOQBADABFQAA5AEAMAUFAACgAwAg7wEBAIwDACHxAQEAjAMAIYQCQACNAwAhhQJAAI0DACECAAAAGwAgFQAA5wEAIATvAQEAjAMAIfEBAQCMAwAhhAJAAI0DACGFAkAAjQMAIQIAAAAZACAVAADpAQAgAgAAABkAIBUAAOkBACADAAAAGwAgHAAA4gEAIB0AAOcBACABAAAAGwAgAQAAABkAIAMIAACdAwAgIgAAnwMAICMAAJ4DACAH2AEAANgCADDZAQAA8AEAENoBAADYAgAw7wEBAL8CACHxAQEAvwIAIYQCQADAAgAhhQJAAMACACEDAAAAGQAgAgAA7wEAMCEAAPABACADAAAAGQAgAgAAGgAwAwAAGwAgDdgBAADVAgAw2QEAAPYBABDaAQAA1QIAMPEBAQAAAAHyAQEAxwIAIfMBAQDHAgAh9AECANYCACH1AQAA0AIAIPYBAADQAgAg9wEAANACACD4AQIAAAAB-QEBAMcCACH6AQAA1wIAIAEAAADzAQAgAQAAAPMBACAN2AEAANUCADDZAQAA9gEAENoBAADVAgAw8QEBAMcCACHyAQEAxwIAIfMBAQDHAgAh9AECANYCACH1AQAA0AIAIPYBAADQAgAg9wEAANACACD4AQIA1gIAIfkBAQDHAgAh-gEAANcCACAAAwAAAPYBACACAAD3AQAwAwAA8wEAIAMAAAD2AQAgAgAA9wEAMAMAAPMBACADAAAA9gEAIAIAAPcBADADAADzAQAgCvEBAQAAAAHyAQEAAAAB8wEBAAAAAfQBAgAAAAH1AQAAmgMAIPYBAACbAwAg9wEAAJwDACD4AQIAAAAB-QEBAAAAAfoBgAAAAAEBFQAA-wEAIArxAQEAAAAB8gEBAAAAAfMBAQAAAAH0AQIAAAAB9QEAAJoDACD2AQAAmwMAIPcBAACcAwAg-AECAAAAAfkBAQAAAAH6AYAAAAABARUAAP0BADABFQAA_QEAMArxAQEAjAMAIfIBAQCMAwAh8wEBAIwDACH0AQIAlgMAIfUBAACXAwAg9gEAAJgDACD3AQAAmQMAIPgBAgCWAwAh-QEBAIwDACH6AYAAAAABAgAAAPMBACAVAACAAgAgCvEBAQCMAwAh8gEBAIwDACHzAQEAjAMAIfQBAgCWAwAh9QEAAJcDACD2AQAAmAMAIPcBAACZAwAg-AECAJYDACH5AQEAjAMAIfoBgAAAAAECAAAA9gEAIBUAAIICACACAAAA9gEAIBUAAIICACADAAAA8wEAIBwAAPsBACAdAACAAgAgAQAAAPMBACABAAAA9gEAIAUIAACRAwAgIgAAlAMAICMAAJMDACB0AACSAwAgdQAAlQMAIA3YAQAAzgIAMNkBAACJAgAQ2gEAAM4CADDxAQEAvwIAIfIBAQC_AgAh8wEBAL8CACH0AQIAzwIAIfUBAADQAgAg9gEAANACACD3AQAA0AIAIPgBAgDPAgAh-QEBAL8CACH6AQAA0QIAIAMAAAD2AQAgAgAAiAIAMCEAAIkCACADAAAA9gEAIAIAAPcBADADAADzAQAgBtgBAADMAgAw2QEAAI8CABDaAQAAzAIAMO4BAQDHAgAh7wEBAMcCACHwAQAAzQIAIAEAAACMAgAgAQAAAIwCACAF2AEAAMwCADDZAQAAjwIAENoBAADMAgAw7gEBAMcCACHvAQEAxwIAIQADAAAAjwIAIAIAAJACADADAACMAgAgAwAAAI8CACACAACQAgAwAwAAjAIAIAMAAACPAgAgAgAAkAIAMAMAAIwCACAC7gEBAAAAAe8BAQAAAAEBFQAAlAIAIALuAQEAAAAB7wEBAAAAAQEVAACWAgAwARUAAJYCADAC7gEBAIwDACHvAQEAjAMAIQIAAACMAgAgFQAAmQIAIALuAQEAjAMAIe8BAQCMAwAhAgAAAI8CACAVAACbAgAgAgAAAI8CACAVAACbAgAgAwAAAIwCACAcAACUAgAgHQAAmQIAIAEAAACMAgAgAQAAAI8CACADCAAAjgMAICIAAJADACAjAACPAwAgBdgBAADLAgAw2QEAAKICABDaAQAAywIAMO4BAQC_AgAh7wEBAL8CACEDAAAAjwIAIAIAAKECADAhAACiAgAgAwAAAI8CACACAACQAgAwAwAAjAIAIAvYAQAAxgIAMNkBAACoAgAQ2gEAAMYCADDbAQEAxwIAIdwBAQDHAgAh3QEBAMcCACHeAQEAxwIAId8BAQDHAgAh4AFAAMgCACHsAQAAyQIAIO0BAADKAgAgAQAAAKUCACABAAAApQIAIAnYAQAAxgIAMNkBAACoAgAQ2gEAAMYCADDbAQEAxwIAIdwBAQDHAgAh3QEBAMcCACHeAQEAxwIAId8BAQDHAgAh4AFAAMgCACEAAwAAAKgCACACAACpAgAwAwAApQIAIAMAAACoAgAgAgAAqQIAMAMAAKUCACADAAAAqAIAIAIAAKkCADADAAClAgAgBtsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BAQAAAAHfAQEAAAAB4AFAAAAAAQEVAACtAgAgBtsBAQAAAAHcAQEAAAAB3QEBAAAAAd4BAQAAAAHfAQEAAAAB4AFAAAAAAQEVAACvAgAwARUAAK8CADAG2wEBAIwDACHcAQEAjAMAId0BAQCMAwAh3gEBAIwDACHfAQEAjAMAIeABQACNAwAhAgAAAKUCACAVAACyAgAgBtsBAQCMAwAh3AEBAIwDACHdAQEAjAMAId4BAQCMAwAh3wEBAIwDACHgAUAAjQMAIQIAAACoAgAgFQAAtAIAIAIAAACoAgAgFQAAtAIAIAMAAAClAgAgHAAArQIAIB0AALICACABAAAApQIAIAEAAACoAgAgAwgAAIkDACAiAACLAwAgIwAAigMAIAnYAQAAvgIAMNkBAAC7AgAQ2gEAAL4CADDbAQEAvwIAIdwBAQC_AgAh3QEBAL8CACHeAQEAvwIAId8BAQC_AgAh4AFAAMACACEDAAAAqAIAIAIAALoCADAhAAC7AgAgAwAAAKgCACACAACpAgAwAwAApQIAIAnYAQAAvgIAMNkBAAC7AgAQ2gEAAL4CADDbAQEAvwIAIdwBAQC_AgAh3QEBAL8CACHeAQEAvwIAId8BAQC_AgAh4AFAAMACACEOCAAAwgIAICIAAMUCACAjAADFAgAg4QEBAAAAAeIBAQAAAATjAQEAAAAE5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDEAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCwgAAMICACAiAADDAgAgIwAAwwIAIOEBQAAAAAHiAUAAAAAE4wFAAAAABOQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAAwQIAIQsIAADCAgAgIgAAwwIAICMAAMMCACDhAUAAAAAB4gFAAAAABOMBQAAAAATkAUAAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AFAAMECACEI4QECAAAAAeIBAgAAAATjAQIAAAAE5AECAAAAAeUBAgAAAAHmAQIAAAAB5wECAAAAAegBAgDCAgAhCOEBQAAAAAHiAUAAAAAE4wFAAAAABOQBQAAAAAHlAUAAAAAB5gFAAAAAAecBQAAAAAHoAUAAwwIAIQ4IAADCAgAgIgAAxQIAICMAAMUCACDhAQEAAAAB4gEBAAAABOMBAQAAAATkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAMQCACHpAQEAAAAB6gEBAAAAAesBAQAAAAEL4QEBAAAAAeIBAQAAAATjAQEAAAAE5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDFAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABCdgBAADGAgAw2QEAAKgCABDaAQAAxgIAMNsBAQDHAgAh3AEBAMcCACHdAQEAxwIAId4BAQDHAgAh3wEBAMcCACHgAUAAyAIAIQvhAQEAAAAB4gEBAAAABOMBAQAAAATkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAMUCACHpAQEAAAAB6gEBAAAAAesBAQAAAAEI4QFAAAAAAeIBQAAAAATjAUAAAAAE5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADDAgAhAtsBAQAAAAHdAQEAAAABAtsBAQAAAAHcAQEAAAABBdgBAADLAgAw2QEAAKICABDaAQAAywIAMO4BAQC_AgAh7wEBAL8CACEF2AEAAMwCADDZAQAAjwIAENoBAADMAgAw7gEBAMcCACHvAQEAxwIAIQLuAQEAAAAB7wEBAAAAAQ3YAQAAzgIAMNkBAACJAgAQ2gEAAM4CADDxAQEAvwIAIfIBAQC_AgAh8wEBAL8CACH0AQIAzwIAIfUBAADQAgAg9gEAANACACD3AQAA0AIAIPgBAgDPAgAh-QEBAL8CACH6AQAA0QIAIA0IAADCAgAgIgAAwgIAICMAAMICACB0AADUAgAgdQAAwgIAIOEBAgAAAAHiAQIAAAAE4wECAAAABOQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIA0wIAIQThAQEAAAAFgQIBAAAAAYICAQAAAASDAgEAAAAEDwgAAMICACAiAADSAgAgIwAA0gIAIOEBgAAAAAHkAYAAAAAB5QGAAAAAAeYBgAAAAAHnAYAAAAAB6AGAAAAAAfsBAQAAAAH8AQEAAAAB_QEBAAAAAf4BgAAAAAH_AYAAAAABgAKAAAAAAQzhAYAAAAAB5AGAAAAAAeUBgAAAAAHmAYAAAAAB5wGAAAAAAegBgAAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AYAAAAAB_wGAAAAAAYACgAAAAAENCAAAwgIAICIAAMICACAjAADCAgAgdAAA1AIAIHUAAMICACDhAQIAAAAB4gECAAAABOMBAgAAAATkAQIAAAAB5QECAAAAAeYBAgAAAAHnAQIAAAAB6AECANMCACEI4QEIAAAAAeIBCAAAAATjAQgAAAAE5AEIAAAAAeUBCAAAAAHmAQgAAAAB5wEIAAAAAegBCADUAgAhDdgBAADVAgAw2QEAAPYBABDaAQAA1QIAMPEBAQDHAgAh8gEBAMcCACHzAQEAxwIAIfQBAgDWAgAh9QEAANACACD2AQAA0AIAIPcBAADQAgAg-AECANYCACH5AQEAxwIAIfoBAADXAgAgCOEBAgAAAAHiAQIAAAAE4wECAAAABOQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIAwgIAIQzhAYAAAAAB5AGAAAAAAeUBgAAAAAHmAYAAAAAB5wGAAAAAAegBgAAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AYAAAAAB_wGAAAAAAYACgAAAAAEH2AEAANgCADDZAQAA8AEAENoBAADYAgAw7wEBAL8CACHxAQEAvwIAIYQCQADAAgAhhQJAAMACACEI2AEAANkCADDZAQAA2gEAENoBAADZAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhhgIBAL8CACGHAiAA2gIAIQUIAADCAgAgIgAA3AIAICMAANwCACDhASAAAAAB6AEgANsCACEFCAAAwgIAICIAANwCACAjAADcAgAg4QEgAAAAAegBIADbAgAhAuEBIAAAAAHoASAA3AIAIQjYAQAA3QIAMNkBAADHAQAQ2gEAAN0CADDgAUAAyAIAIe8BAQDHAgAhhQJAAMgCACGGAgEAxwIAIYcCIADeAgAhAuEBIAAAAAHoASAA3AIAIQLvAQEAAAABhgIBAAAAAQfYAQAA4AIAMNkBAADBAQAQ2gEAAOACADDgAUAAwAIAIe8BAQC_AgAh8QEBAL8CACGHAiAA2gIAIQbYAQAA4QIAMNkBAACrAQAQ2gEAAOECADCJAgEAvwIAIYoCAQC_AgAhiwICAM8CACEI2AEAAOICADDZAQAAlQEAENoBAADiAgAw4AFAAMACACHvAQEAvwIAIYUCQADAAgAhjAIBAL8CACGOAgAA4wKOAiIHCAAAwgIAICIAAOUCACAjAADlAgAg4QEAAACOAgLiAQAAAI4CCOMBAAAAjgII6AEAAOQCjgIiBwgAAMICACAiAADlAgAgIwAA5QIAIOEBAAAAjgIC4gEAAACOAgjjAQAAAI4CCOgBAADkAo4CIgThAQAAAI4CAuIBAAAAjgII4wEAAACOAgjoAQAA5QKOAiIO2AEAAOYCADDZAQAAfwAQ2gEAAOYCADDgAUAAwAIAIfEBAQC_AgAhhQJAAMACACGPAgEAvwIAIZACAQC_AgAhkQIBAL8CACGSAgEAvwIAIZMCAQC_AgAhlAIBAOcCACGVAkAA6AIAIZYCAQDnAgAhDggAAOoCACAiAADtAgAgIwAA7QIAIOEBAQAAAAHiAQEAAAAF4wEBAAAABeQBAQAAAAHlAQEAAAAB5gEBAAAAAecBAQAAAAHoAQEA7AIAIekBAQAAAAHqAQEAAAAB6wEBAAAAAQsIAADqAgAgIgAA6wIAICMAAOsCACDhAUAAAAAB4gFAAAAABeMBQAAAAAXkAUAAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AFAAOkCACELCAAA6gIAICIAAOsCACAjAADrAgAg4QFAAAAAAeIBQAAAAAXjAUAAAAAF5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADpAgAhCOEBAgAAAAHiAQIAAAAF4wECAAAABeQBAgAAAAHlAQIAAAAB5gECAAAAAecBAgAAAAHoAQIA6gIAIQjhAUAAAAAB4gFAAAAABeMBQAAAAAXkAUAAAAAB5QFAAAAAAeYBQAAAAAHnAUAAAAAB6AFAAOsCACEOCAAA6gIAICIAAO0CACAjAADtAgAg4QEBAAAAAeIBAQAAAAXjAQEAAAAF5AEBAAAAAeUBAQAAAAHmAQEAAAAB5wEBAAAAAegBAQDsAgAh6QEBAAAAAeoBAQAAAAHrAQEAAAABC-EBAQAAAAHiAQEAAAAF4wEBAAAABeQBAQAAAAHlAQEAAAAB5gEBAAAAAecBAQAAAAHoAQEA7QIAIekBAQAAAAHqAQEAAAAB6wEBAAAAAQnYAQAA7gIAMNkBAABpABDaAQAA7gIAMOABQADAAgAhjwIBAL8CACGXAgEAvwIAIZgCAQDnAgAhmQJAAOgCACGaAgEA5wIAIQnYAQAA7wIAMNkBAABWABDaAQAA7wIAMOABQADIAgAhjwIBAMcCACGXAgEAxwIAIZgCAQDwAgAhmQJAAPECACGaAgEA8AIAIQvhAQEAAAAB4gEBAAAABeMBAQAAAAXkAQEAAAAB5QEBAAAAAeYBAQAAAAHnAQEAAAAB6AEBAO0CACHpAQEAAAAB6gEBAAAAAesBAQAAAAEI4QFAAAAAAeIBQAAAAAXjAUAAAAAF5AFAAAAAAeUBQAAAAAHmAUAAAAAB5wFAAAAAAegBQADrAgAhCdgBAADyAgAw2QEAAFAAENoBAADyAgAw4AFAAMACACHvAQEAvwIAIY8CAQC_AgAhmAIBAOcCACGZAkAA6AIAIZoCAQDnAgAhCdgBAADzAgAw2QEAAD0AENoBAADzAgAw4AFAAMgCACHvAQEAxwIAIY8CAQDHAgAhmAIBAPACACGZAkAA8QIAIZoCAQDwAgAhEtgBAAD0AgAw2QEAADcAENoBAAD0AgAw4AFAAMACACHuAQEA5wIAIYUCQADAAgAhhgIBAOcCACGPAgEAvwIAIZICAQC_AgAhkwIBAL8CACGVAkAA6AIAIZYCAQDnAgAhmwIBAOcCACGcAgEAvwIAIZ0CIADaAgAhngIgANoCACGfAkAA6AIAIaACAQDnAgAhAu8BAQAAAAHxAQEAAAABCAUAAPcCACDYAQAA9gIAMNkBAAAZABDaAQAA9gIAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhGwEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIacCAAADACCoAgAAAwAgAu8BAQAAAAHxAQEAAAABCAUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIYcCIADeAgAhAokCAQAAAAGKAgEAAAABCAoAAPcCACALAAD3AgAg2AEAAPsCADDZAQAAEAAQ2gEAAPsCADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACEC7wEBAAAAAYwCAQAAAAEJBgAA_wIAINgBAAD9AgAw2QEAAAsAENoBAAD9AgAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhjAIBAMcCACGOAgAA_gKOAiIE4QEAAACOAgLiAQAAAI4CCOMBAAAAjgII6AEAAOUCjgIiEgUAAPcCACAHAACBAwAg2AEAAIADADDZAQAABwAQ2gEAAIADADDgAUAAyAIAIfEBAQDHAgAhhQJAAMgCACGPAgEAxwIAIZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhpwIAAAcAIKgCAAAHACAQBQAA9wIAIAcAAIEDACDYAQAAgAMAMNkBAAAHABDaAQAAgAMAMOABQADIAgAh8QEBAMcCACGFAkAAyAIAIY8CAQDHAgAhkAIBAMcCACGRAgEAxwIAIZICAQDHAgAhkwIBAMcCACGUAgEA8AIAIZUCQADxAgAhlgIBAPACACEDpAIAAAsAIKUCAAALACCmAgAACwAgGQEAAIMDACAEAACEAwAgCQAAhQMAIAwAAIYDACANAACGAwAgDgAAhwMAIA8AAIgDACDYAQAAggMAMNkBAAADABDaAQAAggMAMOABQADIAgAh7gEBAPACACGFAkAAyAIAIYYCAQDwAgAhjwIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlQJAAPECACGWAgEA8AIAIZsCAQDwAgAhnAIBAMcCACGdAiAA3gIAIZ4CIADeAgAhnwJAAPECACGgAgEA8AIAIRsBAACDAwAgBAAAhAMAIAkAAIUDACAMAACGAwAgDQAAhgMAIA4AAIcDACAPAACIAwAg2AEAAIIDADDZAQAAAwAQ2gEAAIIDADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQDHAgAhkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACGnAgAAAwAgqAIAAAMAIAOkAgAAAwAgpQIAAAMAIKYCAAADACADpAIAAAcAIKUCAAAHACCmAgAABwAgA6QCAAAQACClAgAAEAAgpgIAABAAIAOkAgAAFQAgpQIAABUAIKYCAAAVACADpAIAABkAIKUCAAAZACCmAgAAGQAgAAAAAawCAQAAAAEBrAJAAAAAAQAAAAAAAAAABawCAgAAAAGzAgIAAAABtAICAAAAAbUCAgAAAAG2AgIAAAABAqwCAQAAAASyAgEAAAAFAqwCAQAAAASyAgEAAAAFAqwCAQAAAASyAgEAAAAFAawCAQAAAAQBrAIBAAAABAGsAgEAAAAEAAAABRwAANkEACAdAADcBAAgqQIAANoEACCqAgAA2wQAIK8CAAABACADHAAA2QQAIKkCAADaBAAgrwIAAAEAIAAAAAGsAiAAAAABAAAABRwAANQEACAdAADXBAAgqQIAANUEACCqAgAA1gQAIK8CAAABACADHAAA1AQAIKkCAADVBAAgrwIAAAEAIAAAAAAABRwAAMwEACAdAADSBAAgqQIAAM0EACCqAgAA0QQAIK8CAAABACAFHAAAygQAIB0AAM8EACCpAgAAywQAIKoCAADOBAAgrwIAAAEAIAMcAADMBAAgqQIAAM0EACCvAgAAAQAgAxwAAMoEACCpAgAAywQAIK8CAAABACAAAAABrAIAAACOAgIFHAAAxQQAIB0AAMgEACCpAgAAxgQAIKoCAADHBAAgrwIAAAkAIAMcAADFBAAgqQIAAMYEACCvAgAACQAgAAAAAAGsAgEAAAABAawCQAAAAAEFHAAAvwQAIB0AAMMEACCpAgAAwAQAIKoCAADCBAAgrwIAAAEAIAscAADCAwAwHQAAxwMAMKkCAADDAwAwqgIAAMQDADCrAgAAxQMAIKwCAADGAwAwrQIAAMYDADCuAgAAxgMAMK8CAADGAwAwsAIAAMgDADCxAgAAyQMAMATgAUAAAAAB7wEBAAAAAYUCQAAAAAGOAgAAAI4CAgIAAAANACAcAADNAwAgAwAAAA0AIBwAAM0DACAdAADMAwAgARUAAMEEADAKBgAA_wIAINgBAAD9AgAw2QEAAAsAENoBAAD9AgAw4AFAAMgCACHvAQEAxwIAIYUCQADIAgAhjAIBAMcCACGOAgAA_gKOAiKjAgAA_AIAIAIAAAANACAVAADMAwAgAgAAAMoDACAVAADLAwAgCNgBAADJAwAw2QEAAMoDABDaAQAAyQMAMOABQADIAgAh7wEBAMcCACGFAkAAyAIAIYwCAQDHAgAhjgIAAP4CjgIiCNgBAADJAwAw2QEAAMoDABDaAQAAyQMAMOABQADIAgAh7wEBAMcCACGFAkAAyAIAIYwCAQDHAgAhjgIAAP4CjgIiBOABQACNAwAh7wEBAIwDACGFAkAAjQMAIY4CAAC3A44CIgTgAUAAjQMAIe8BAQCMAwAhhQJAAI0DACGOAgAAtwOOAiIE4AFAAAAAAe8BAQAAAAGFAkAAAAABjgIAAACOAgIDHAAAvwQAIKkCAADABAAgrwIAAAEAIAQcAADCAwAwqQIAAMMDADCrAgAAxQMAIK8CAADGAwAwAAAAAAAAAAAABxwAALQEACAdAAC9BAAgqQIAALUEACCqAgAAvAQAIK0CAAADACCuAgAAAwAgrwIAAAEAIAscAACZBAAwHQAAngQAMKkCAACaBAAwqgIAAJsEADCrAgAAnAQAIKwCAACdBAAwrQIAAJ0EADCuAgAAnQQAMK8CAACdBAAwsAIAAJ8EADCxAgAAoAQAMAscAACNBAAwHQAAkgQAMKkCAACOBAAwqgIAAI8EADCrAgAAkAQAIKwCAACRBAAwrQIAAJEEADCuAgAAkQQAMK8CAACRBAAwsAIAAJMEADCxAgAAlAQAMAscAACEBAAwHQAAiAQAMKkCAACFBAAwqgIAAIYEADCrAgAAhwQAIKwCAAD8AwAwrQIAAPwDADCuAgAA_AMAMK8CAAD8AwAwsAIAAIkEADCxAgAA_wMAMAscAAD4AwAwHQAA_QMAMKkCAAD5AwAwqgIAAPoDADCrAgAA-wMAIKwCAAD8AwAwrQIAAPwDADCuAgAA_AMAMK8CAAD8AwAwsAIAAP4DADCxAgAA_wMAMAscAADsAwAwHQAA8QMAMKkCAADtAwAwqgIAAO4DADCrAgAA7wMAIKwCAADwAwAwrQIAAPADADCuAgAA8AMAMK8CAADwAwAwsAIAAPIDADCxAgAA8wMAMAscAADgAwAwHQAA5QMAMKkCAADhAwAwqgIAAOIDADCrAgAA4wMAIKwCAADkAwAwrQIAAOQDADCuAgAA5AMAMK8CAADkAwAwsAIAAOYDADCxAgAA5wMAMAPvAQEAAAABhAJAAAAAAYUCQAAAAAECAAAAGwAgHAAA6wMAIAMAAAAbACAcAADrAwAgHQAA6gMAIAEVAAC7BAAwCQUAAPcCACDYAQAA9gIAMNkBAAAZABDaAQAA9gIAMO8BAQDHAgAh8QEBAMcCACGEAkAAyAIAIYUCQADIAgAhoQIAAPUCACACAAAAGwAgFQAA6gMAIAIAAADoAwAgFQAA6QMAIAfYAQAA5wMAMNkBAADoAwAQ2gEAAOcDADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIQfYAQAA5wMAMNkBAADoAwAQ2gEAAOcDADDvAQEAxwIAIfEBAQDHAgAhhAJAAMgCACGFAkAAyAIAIQPvAQEAjAMAIYQCQACNAwAhhQJAAI0DACED7wEBAIwDACGEAkAAjQMAIYUCQACNAwAhA-8BAQAAAAGEAkAAAAABhQJAAAAAAQPgAUAAAAAB7wEBAAAAAYcCIAAAAAECAAAAFwAgHAAA9wMAIAMAAAAXACAcAAD3AwAgHQAA9gMAIAEVAAC6BAAwCQUAAPcCACDYAQAA-QIAMNkBAAAVABDaAQAA-QIAMOABQADIAgAh7wEBAMcCACHxAQEAxwIAIYcCIADeAgAhoQIAAPgCACACAAAAFwAgFQAA9gMAIAIAAAD0AwAgFQAA9QMAIAfYAQAA8wMAMNkBAAD0AwAQ2gEAAPMDADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACGHAiAA3gIAIQfYAQAA8wMAMNkBAAD0AwAQ2gEAAPMDADDgAUAAyAIAIe8BAQDHAgAh8QEBAMcCACGHAiAA3gIAIQPgAUAAjQMAIe8BAQCMAwAhhwIgAKUDACED4AFAAI0DACHvAQEAjAMAIYcCIAClAwAhA-ABQAAAAAHvAQEAAAABhwIgAAAAAQMKAACyAwAgiQIBAAAAAYsCAgAAAAECAAAAEgAgHAAAgwQAIAMAAAASACAcAACDBAAgHQAAggQAIAEVAAC5BAAwCQoAAPcCACALAAD3AgAg2AEAAPsCADDZAQAAEAAQ2gEAAPsCADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACGiAgAA-gIAIAIAAAASACAVAACCBAAgAgAAAIAEACAVAACBBAAgBtgBAAD_AwAw2QEAAIAEABDaAQAA_wMAMIkCAQDHAgAhigIBAMcCACGLAgIA1gIAIQbYAQAA_wMAMNkBAACABAAQ2gEAAP8DADCJAgEAxwIAIYoCAQDHAgAhiwICANYCACECiQIBAIwDACGLAgIAlgMAIQMKAACwAwAgiQIBAIwDACGLAgIAlgMAIQMKAACyAwAgiQIBAAAAAYsCAgAAAAEDCwAAswMAIIoCAQAAAAGLAgIAAAABAgAAABIAIBwAAIwEACADAAAAEgAgHAAAjAQAIB0AAIsEACABFQAAuAQAMAIAAAASACAVAACLBAAgAgAAAIAEACAVAACKBAAgAooCAQCMAwAhiwICAJYDACEDCwAAsQMAIIoCAQCMAwAhiwICAJYDACEDCwAAswMAIIoCAQAAAAGLAgIAAAABCwcAAM8DACDgAUAAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABAgAAAAkAIBwAAJgEACADAAAACQAgHAAAmAQAIB0AAJcEACABFQAAtwQAMBAFAAD3AgAgBwAAgQMAINgBAACAAwAw2QEAAAcAENoBAACAAwAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAAAAAZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhAgAAAAkAIBUAAJcEACACAAAAlQQAIBUAAJYEACAO2AEAAJQEADDZAQAAlQQAENoBAACUBAAw4AFAAMgCACHxAQEAxwIAIYUCQADIAgAhjwIBAMcCACGQAgEAxwIAIZECAQDHAgAhkgIBAMcCACGTAgEAxwIAIZQCAQDwAgAhlQJAAPECACGWAgEA8AIAIQ7YAQAAlAQAMNkBAACVBAAQ2gEAAJQEADDgAUAAyAIAIfEBAQDHAgAhhQJAAMgCACGPAgEAxwIAIZACAQDHAgAhkQIBAMcCACGSAgEAxwIAIZMCAQDHAgAhlAIBAPACACGVAkAA8QIAIZYCAQDwAgAhCuABQACNAwAhhQJAAI0DACGPAgEAjAMAIZACAQCMAwAhkQIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlAIBAL4DACGVAkAAvwMAIZYCAQC-AwAhCwcAAMEDACDgAUAAjQMAIYUCQACNAwAhjwIBAIwDACGQAgEAjAMAIZECAQCMAwAhkgIBAIwDACGTAgEAjAMAIZQCAQC-AwAhlQJAAL8DACGWAgEAvgMAIQsHAADPAwAg4AFAAAAAAYUCQAAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAkAAAAABlgIBAAAAARQEAAClBAAgCQAApgQAIAwAAKcEACANAACoBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAACkBAAgAwAAAAEAIBwAAKQEACAdAACjBAAgARUAALYEADAZAQAAgwMAIAQAAIQDACAJAACFAwAgDAAAhgMAIA0AAIYDACAOAACHAwAgDwAAiAMAINgBAACCAwAw2QEAAAMAENoBAACCAwAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAAAABkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACECAAAAAQAgFQAAowQAIAIAAAChBAAgFQAAogQAIBLYAQAAoAQAMNkBAAChBAAQ2gEAAKAEADDgAUAAyAIAIe4BAQDwAgAhhQJAAMgCACGGAgEA8AIAIY8CAQDHAgAhkgIBAMcCACGTAgEAxwIAIZUCQADxAgAhlgIBAPACACGbAgEA8AIAIZwCAQDHAgAhnQIgAN4CACGeAiAA3gIAIZ8CQADxAgAhoAIBAPACACES2AEAAKAEADDZAQAAoQQAENoBAACgBAAw4AFAAMgCACHuAQEA8AIAIYUCQADIAgAhhgIBAPACACGPAgEAxwIAIZICAQDHAgAhkwIBAMcCACGVAkAA8QIAIZYCAQDwAgAhmwIBAPACACGcAgEAxwIAIZ0CIADeAgAhngIgAN4CACGfAkAA8QIAIaACAQDwAgAhDuABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEUBAAA2gMAIAkAANsDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRQEAAClBAAgCQAApgQAIAwAAKcEACANAACoBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQQcAACZBAAwqQIAAJoEADCrAgAAnAQAIK8CAACdBAAwBBwAAI0EADCpAgAAjgQAMKsCAACQBAAgrwIAAJEEADAEHAAAhAQAMKkCAACFBAAwqwIAAIcEACCvAgAA_AMAMAQcAAD4AwAwqQIAAPkDADCrAgAA-wMAIK8CAAD8AwAwBBwAAOwDADCpAgAA7QMAMKsCAADvAwAgrwIAAPADADAEHAAA4AMAMKkCAADhAwAwqwIAAOMDACCvAgAA5AMAMAMcAAC0BAAgqQIAALUEACCvAgAAAQAgDgEAAKwEACAEAACvBAAgCQAAsAQAIAwAALEEACANAACxBAAgDgAAsgQAIA8AALMEACDuAQAAugMAIIYCAAC6AwAglQIAALoDACCWAgAAugMAIJsCAAC6AwAgnwIAALoDACCgAgAAugMAIAUFAACsBAAgBwAArgQAIJQCAAC6AwAglQIAALoDACCWAgAAugMAIAAAAAAAABUBAACrBAAgCQAApgQAIAwAAKcEACANAACoBAAgDgAAqQQAIA8AAKoEACDgAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGbAgEAAAABnAIBAAAAAZ0CIAAAAAGeAiAAAAABnwJAAAAAAaACAQAAAAECAAAAAQAgHAAAtAQAIA7gAUAAAAAB7gEBAAAAAYUCQAAAAAGGAgEAAAABjwIBAAAAAZICAQAAAAGTAgEAAAABlQJAAAAAAZYCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQrgAUAAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABAooCAQAAAAGLAgIAAAABAokCAQAAAAGLAgIAAAABA-ABQAAAAAHvAQEAAAABhwIgAAAAAQPvAQEAAAABhAJAAAAAAYUCQAAAAAEDAAAAAwAgHAAAtAQAIB0AAL4EACAXAAAAAwAgAQAA2QMAIAkAANsDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAgFQAAvgQAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRUBAADZAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIA8AAN8DACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAAqwQAIAQAAKUEACAMAACnBAAgDQAAqAQAIA4AAKkEACAPAACqBAAg4AFAAAAAAe4BAQAAAAGFAkAAAAABhgIBAAAAAY8CAQAAAAGSAgEAAAABkwIBAAAAAZUCQAAAAAGWAgEAAAABmwIBAAAAAZwCAQAAAAGdAiAAAAABngIgAAAAAZ8CQAAAAAGgAgEAAAABAgAAAAEAIBwAAL8EACAE4AFAAAAAAe8BAQAAAAGFAkAAAAABjgIAAACOAgIDAAAAAwAgHAAAvwQAIB0AAMQEACAXAAAAAwAgAQAA2QMAIAQAANoDACAMAADcAwAgDQAA3QMAIA4AAN4DACAPAADfAwAgFQAAxAQAIOABQACNAwAh7gEBAL4DACGFAkAAjQMAIYYCAQC-AwAhjwIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlQJAAL8DACGWAgEAvgMAIZsCAQC-AwAhnAIBAIwDACGdAiAApQMAIZ4CIAClAwAhnwJAAL8DACGgAgEAvgMAIRUBAADZAwAgBAAA2gMAIAwAANwDACANAADdAwAgDgAA3gMAIA8AAN8DACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEMBQAAzgMAIOABQAAAAAHxAQEAAAABhQJAAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICAQAAAAGTAgEAAAABlAIBAAAAAZUCQAAAAAGWAgEAAAABAgAAAAkAIBwAAMUEACADAAAABwAgHAAAxQQAIB0AAMkEACAOAAAABwAgBQAAwAMAIBUAAMkEACDgAUAAjQMAIfEBAQCMAwAhhQJAAI0DACGPAgEAjAMAIZACAQCMAwAhkQIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlAIBAL4DACGVAkAAvwMAIZYCAQC-AwAhDAUAAMADACDgAUAAjQMAIfEBAQCMAwAhhQJAAI0DACGPAgEAjAMAIZACAQCMAwAhkQIBAIwDACGSAgEAjAMAIZMCAQCMAwAhlAIBAL4DACGVAkAAvwMAIZYCAQC-AwAhFQEAAKsEACAEAAClBAAgCQAApgQAIAwAAKcEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAADKBAAgFQEAAKsEACAEAAClBAAgCQAApgQAIA0AAKgEACAOAACpBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAADMBAAgAwAAAAMAIBwAAMoEACAdAADQBAAgFwAAAAMAIAEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACAOAADeAwAgDwAA3wMAIBUAANAEACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAJAADbAwAgDAAA3AMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhAwAAAAMAIBwAAMwEACAdAADTBAAgFwAAAAMAIAEAANkDACAEAADaAwAgCQAA2wMAIA0AAN0DACAOAADeAwAgDwAA3wMAIBUAANMEACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAJAADbAwAgDQAA3QMAIA4AAN4DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAAKsEACAEAAClBAAgCQAApgQAIAwAAKcEACANAACoBAAgDwAAqgQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAADUBAAgAwAAAAMAIBwAANQEACAdAADYBAAgFwAAAAMAIAEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDwAA3wMAIBUAANgEACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAJAADbAwAgDAAA3AMAIA0AAN0DACAPAADfAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhFQEAAKsEACAEAAClBAAgCQAApgQAIAwAAKcEACANAACoBAAgDgAAqQQAIOABQAAAAAHuAQEAAAABhQJAAAAAAYYCAQAAAAGPAgEAAAABkgIBAAAAAZMCAQAAAAGVAkAAAAABlgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CIAAAAAGfAkAAAAABoAIBAAAAAQIAAAABACAcAADZBAAgAwAAAAMAIBwAANkEACAdAADdBAAgFwAAAAMAIAEAANkDACAEAADaAwAgCQAA2wMAIAwAANwDACANAADdAwAgDgAA3gMAIBUAAN0EACDgAUAAjQMAIe4BAQC-AwAhhQJAAI0DACGGAgEAvgMAIY8CAQCMAwAhkgIBAIwDACGTAgEAjAMAIZUCQAC_AwAhlgIBAL4DACGbAgEAvgMAIZwCAQCMAwAhnQIgAKUDACGeAiAApQMAIZ8CQAC_AwAhoAIBAL4DACEVAQAA2QMAIAQAANoDACAJAADbAwAgDAAA3AMAIA0AAN0DACAOAADeAwAg4AFAAI0DACHuAQEAvgMAIYUCQACNAwAhhgIBAL4DACGPAgEAjAMAIZICAQCMAwAhkwIBAIwDACGVAkAAvwMAIZYCAQC-AwAhmwIBAL4DACGcAgEAjAMAIZ0CIAClAwAhngIgAKUDACGfAkAAvwMAIaACAQC-AwAhCAEEAQQGAQgACAkKAgwTBQ0UBQ4YBg8cBwMFAAEHDgMIAAQBBgACAQcPAAIKAAELAAEBBQABAQUAAQYEHQAJHgAMHwANIAAOIQAPIgAAAQEsAQEBMgEDCAANIgAOIwAPAAAAAwgADSIADiMADwAAAAMIABUiABYjABcAAAADCAAVIgAWIwAXAAAAAwgAHSIAHiMAHwAAAAMIAB0iAB4jAB8BBQABAQUAAQMIACQiACUjACYAAAADCAAkIgAlIwAmAQYAAgEGAAIDCAArIgAsIwAtAAAAAwgAKyIALCMALQIKAAELAAECCgABCwABBQgAMiIANSMANnQAM3UANAAAAAAABQgAMiIANSMANnQAM3UANAEFAAEBBQABAwgAOyIAPCMAPQAAAAMIADsiADwjAD0AAAADCABDIgBEIwBFAAAAAwgAQyIARCMARQEFAAEBBQABAwgASiIASyMATAAAAAMIAEoiAEsjAEwAAAAFCABSIgBVIwBWdABTdQBUAAAAAAAFCABSIgBVIwBWdABTdQBUAAAAAwgAXCIAXSMAXgAAAAMIAFwiAF0jAF4AAAADCABkIgBlIwBmAAAAAwgAZCIAZSMAZhACAREjARIkARMlARQmARYoARcqCRgrChkuARowCRsxCx4zAR80ASA1CSQ4DCU5ECY7ESc8ESg_ESlAESpBEStDESxFCS1GEi5IES9KCTBLEzFMETJNETNOCTRRFDVSGDZUGTdVGThYGTlZGTpaGTtcGTxeCT1fGj5hGT9jCUBkG0FlGUJmGUNnCURqHEVrIEZsAkdtAkhuAklvAkpwAktyAkx0CU11IU53Ak95CVB6IlF7AlJ8AlN9CVSAASNVgQEnVoIBA1eDAQNYhAEDWYUBA1qGAQNbiAEDXIoBCV2LAShejQEDX48BCWCQASlhkQEDYpIBA2OTAQlklgEqZZcBLmaYAQVnmQEFaJoBBWmbAQVqnAEFa54BBWygAQltoQEvbqMBBW-lAQlwpgEwcacBBXKoAQVzqQEJdqwBMXetATd4rgEGea8BBnqwAQZ7sQEGfLIBBn20AQZ-tgEJf7cBOIABuQEGgQG7AQmCAbwBOYMBvQEGhAG-AQaFAb8BCYYBwgE6hwHDAT6IAcUBP4kBxgE_igHJAT-LAcoBP4wBywE_jQHNAT-OAc8BCY8B0AFAkAHSAT-RAdQBCZIB1QFBkwHWAT-UAdcBP5UB2AEJlgHbAUKXAdwBRpgB3QEHmQHeAQeaAd8BB5sB4AEHnAHhAQedAeMBB54B5QEJnwHmAUegAegBB6EB6gEJogHrAUijAewBB6QB7QEHpQHuAQmmAfEBSacB8gFNqAH0AU6pAfUBTqoB-AFOqwH5AU6sAfoBTq0B_AFOrgH-AQmvAf8BT7ABgQJOsQGDAgmyAYQCULMBhQJOtAGGAk61AYcCCbYBigJRtwGLAle4AY0CWLkBjgJYugGRAli7AZICWLwBkwJYvQGVAli-AZcCCb8BmAJZwAGaAljBAZwCCcIBnQJawwGeAljEAZ8CWMUBoAIJxgGjAlvHAaQCX8gBpgJgyQGnAmDKAaoCYMsBqwJgzAGsAmDNAa4CYM4BsAIJzwGxAmHQAbMCYNEBtQIJ0gG2AmLTAbcCYNQBuAJg1QG5AgnWAbwCY9cBvQJn" } config.compilerWasm = { getRuntime: async () => require('./query_compiler_fast_bg.js'), diff --git a/packages/forums-prisma-client/package.json b/packages/forums-prisma-client/package.json index 981f41e..90df309 100644 --- a/packages/forums-prisma-client/package.json +++ b/packages/forums-prisma-client/package.json @@ -1,5 +1,5 @@ { - "name": "prisma-client-891c12951ab78c3fd343b6e40286a01805630d9b94dded161d908245534b7080", + "name": "prisma-client-8b145d316a03460c3572ad5af2d2d6742bd79e4fbf9dcb2b8e29bca301f35781", "main": "index.js", "types": "index.d.ts", "browser": "default.js", diff --git a/packages/forums-prisma-client/schema.prisma b/packages/forums-prisma-client/schema.prisma index 0cb7665..74db76d 100644 --- a/packages/forums-prisma-client/schema.prisma +++ b/packages/forums-prisma-client/schema.prisma @@ -131,9 +131,11 @@ model TopicClosure { @@schema("forums") } +// Explicit topic choices override challenge-wide notification preferences. model TopicWatch { topicId String @db.VarChar(14) memberId String @db.VarChar(64) + watching Boolean @default(true) createdAt DateTime @default(now()) topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade) diff --git a/prisma/migrations/20261020000000_topic_watch_preferences/migration.sql b/prisma/migrations/20261020000000_topic_watch_preferences/migration.sql new file mode 100644 index 0000000..b96fa3b --- /dev/null +++ b/prisma/migrations/20261020000000_topic_watch_preferences/migration.sql @@ -0,0 +1,2 @@ +-- Preserve existing watches; false rows record explicit topic opt-outs. +ALTER TABLE "forums"."TopicWatch" ADD COLUMN "watching" BOOLEAN NOT NULL DEFAULT true; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 67453ac..e84a99b 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -131,9 +131,11 @@ model TopicClosure { @@schema("forums") } +// Explicit topic choices override challenge-wide notification preferences. model TopicWatch { topicId String @db.VarChar(14) memberId String @db.VarChar(64) + watching Boolean @default(true) createdAt DateTime @default(now()) topic Topic @relation(fields: [topicId], references: [id], onDelete: Cascade) diff --git a/src/forums/challenge-forum-watch.service.ts b/src/forums/challenge-forum-watch.service.ts index c2c5889..7438a96 100644 --- a/src/forums/challenge-forum-watch.service.ts +++ b/src/forums/challenge-forum-watch.service.ts @@ -82,21 +82,33 @@ export class ChallengeForumWatchService { update: { watching }, }); } else { - const preference = await this.db.challengeForumWatch.findUnique({ - where, - }); - watching = - preference?.watching ?? - ( - await this.resourceAccessService.getChallengeDefaultWatcherMemberIds( - challengeId, - memberId, - ) - ).includes(memberId); + watching = await this.isWatching(challengeId, memberId); } return { challengeId, memberId, watching }; } + /** + * Resolves a member's forum preference for already-authorized topic reads. + * @param challengeId Effective challenge scope of the visible topics. + * @param memberId Authenticated member whose inherited preference is needed. + * @returns Saved forum preference, or the current resource-based default. + * @throws Propagates preference database and resource lookup errors. + */ + async isWatching(challengeId: string, memberId: string): Promise { + const preference = await this.db.challengeForumWatch.findUnique({ + where: { challengeId_memberId: { challengeId, memberId } }, + }); + return ( + preference?.watching ?? + ( + await this.resourceAccessService.getChallengeDefaultWatcherMemberIds( + challengeId, + memberId, + ) + ).includes(memberId) + ); + } + /** * Resolves forum-wide notification candidates, applying explicit choices to defaults. * The notification publisher still enforces each topic's visibility and bans. diff --git a/src/forums/forums-command.service.spec.ts b/src/forums/forums-command.service.spec.ts index 31fe3f4..57fa007 100644 --- a/src/forums/forums-command.service.spec.ts +++ b/src/forums/forums-command.service.spec.ts @@ -730,6 +730,27 @@ describe('ForumsCommandService post reactions', () => { }); describe('ForumsCommandService member-targeted state commands', () => { + it('persists a challenge-topic opt-out instead of deleting its preference', async () => { + const { service, topicContextService, tx } = createCommandService(); + topicContextService.loadTopicContext.mockResolvedValue({ + ...(await topicContextService.loadTopicContext()), + effectiveChallengeId: 'challenge-1', + }); + await expect( + service.removeTopicWatch('topic-1', undefined, user), + ).resolves.toEqual({ + topicId: 'topic-1', + memberId: '1', + watching: false, + }); + expect(tx.topicWatch.upsert).toHaveBeenCalledWith({ + where: { topicId_memberId: { topicId: 'topic-1', memberId: '1' } }, + create: { topicId: 'topic-1', memberId: '1', watching: false }, + update: { watching: false }, + }); + expect(tx.topicWatch.deleteMany).not.toHaveBeenCalled(); + }); + const commandCases = [ { name: 'addTopicWatch', @@ -746,8 +767,9 @@ describe('ForumsCommandService member-targeted state commands', () => { create: { topicId: 'topic-1', memberId: '2', + watching: true, }, - update: {}, + update: { watching: true }, }); }, }, diff --git a/src/forums/forums-command.service.ts b/src/forums/forums-command.service.ts index a456cf8..73e47a6 100644 --- a/src/forums/forums-command.service.ts +++ b/src/forums/forums-command.service.ts @@ -155,7 +155,9 @@ export class ForumsCommandService { ) {} /** - * Creates a topic and starter post in one transaction. + * Creates a topic and starter post in one transaction. Human authors receive + * read state; only general topics seed a separate author watch. Challenge + * topics inherit the forum preference until explicitly watched or unwatched. * * Child topics are allowed only when the resolved effective restrictions * remain non-challenge. Challenge-scoped child candidates are rejected by the @@ -270,19 +272,21 @@ export class ForumsCommandService { }); if (author.seedMemberState) { - await tx.topicWatch.upsert({ - where: { - topicId_memberId: { + if (!restrictions.effectiveChallengeId) { + await tx.topicWatch.upsert({ + where: { + topicId_memberId: { + topicId: topic.id, + memberId: author.memberId, + }, + }, + create: { topicId: topic.id, memberId: author.memberId, }, - }, - create: { - topicId: topic.id, - memberId: author.memberId, - }, - update: {}, - }); + update: {}, + }); + } await tx.topicReadState.upsert({ where: { @@ -767,7 +771,7 @@ export class ForumsCommandService { } /** - * Adds an explicit watch for a member on a topic. + * Enables an explicit topic watch, replacing any saved topic opt-out. * * @param topicId Topic id to watch. * @param dto Optional target member body; required for scoped M2M callers. @@ -823,14 +827,15 @@ export class ForumsCommandService { create: { topicId, memberId: target.memberId, + watching: true, }, - update: {}, + update: { watching: true }, }); }); } /** - * Removes an explicit watch for a member from a topic. + * Persists a challenge-topic opt-out; removes general-topic watches as before. * * @param topicId Topic id to unwatch. * @param dto Optional target member body; required for scoped M2M callers. @@ -876,12 +881,17 @@ export class ForumsCommandService { return this.db.$transaction(async (tx) => { await this.ensureActiveTopic(tx, topicId); - await tx.topicWatch.deleteMany({ - where: { - topicId, - memberId: target.memberId, - }, - }); + if (context.effectiveChallengeId) { + await tx.topicWatch.upsert({ + where: { topicId_memberId: { topicId, memberId: target.memberId } }, + create: { topicId, memberId: target.memberId, watching: false }, + update: { watching: false }, + }); + } else { + await tx.topicWatch.deleteMany({ + where: { topicId, memberId: target.memberId }, + }); + } return { topicId, diff --git a/src/forums/forums-notification-read.integration.spec.ts b/src/forums/forums-notification-read.integration.spec.ts index aec65c4..4e8e280 100644 --- a/src/forums/forums-notification-read.integration.spec.ts +++ b/src/forums/forums-notification-read.integration.spec.ts @@ -21,6 +21,7 @@ interface TopicClosureSeed { } interface TopicWatchSeed { + watching?: boolean; topicId: string; memberId: string; } @@ -192,6 +193,27 @@ function createSeededForumsDb(seed: SeededForumsData) { return [{ active: Boolean(topicId && isTopicActive(seed, topicId)) }]; } + if ( + queryText.includes('t."parentTopicId" IS NULL') && + queryText.includes('t."challengeId" =') + ) { + const challengeId = values + .map(queryValueToString) + .find((value) => + seed.topics.some((topic) => topic.challengeId === value), + ); + return seed.topics + .filter( + (topic) => + topic.challengeId === challengeId && + !topic.parentTopicId && + isTopicActive(seed, topic.id), + ) + .map((topic) => + buildTopicSummaryRow(seed, topic, queryValueToString(values[0])), + ); + } + if (queryText.includes('FROM "Topic" t') && topicId) { const topic = topicById().get(topicId); @@ -268,8 +290,8 @@ function createSeededForumsDb(seed: SeededForumsData) { authorMemberId: args.data.authorMemberId, authorHandle: args.data.authorHandle, content: args.data.content, - createdAt: new Date(`2026-06-04T00:1${nextPostId}:00.000Z`), - updatedAt: new Date(`2026-06-04T00:1${nextPostId}:00.000Z`), + createdAt: new Date(createdAt.getTime() + (10 + nextPostId) * 60_000), + updatedAt: new Date(createdAt.getTime() + (10 + nextPostId) * 60_000), }); nextPostId += 1; @@ -403,10 +425,11 @@ function createSeededForumsDb(seed: SeededForumsData) { args.where.topicId.in.includes(watch.topicId) && watch.memberId !== args.where.memberId.not, ) - .map((watch) => ({ memberId: watch.memberId })), + .map((watch) => ({ ...watch, watching: watch.watching ?? true })), upsert: (args: { where: { topicId_memberId: TopicWatchSeed }; create: TopicWatchSeed; + update: Partial; }) => { const existing = seed.topicWatches.find( (watch) => @@ -415,6 +438,7 @@ function createSeededForumsDb(seed: SeededForumsData) { ); if (existing) { + Object.assign(existing, args.update); return existing; } @@ -606,9 +630,15 @@ function buildTopicSummaryRow( viewsCount: seed.topicReadStates.filter( (state) => state.topicId === topic.id, ).length, - watching: seed.topicWatches.some( - (watch) => watch.topicId === topic.id && watch.memberId === memberId, - ), + watching: + seed.topicWatches.find( + (watch) => watch.topicId === topic.id && watch.memberId === memberId, + )?.watching ?? + (seed.topicWatches.some( + (watch) => watch.topicId === topic.id && watch.memberId === memberId, + ) + ? true + : null), starterPostExcerpt: posts[0]?.content?.slice(0, 280) ?? null, participantsCount: participants.length, participants: participants.slice(0, 5), @@ -938,6 +968,108 @@ describe('forums notification/read integration', () => { ]); }); + it.each(['2', '6'])( + 'preserves topic overrides across forum toggles for member %s', + async (memberId) => { + defaultWatchers.add(memberId); + const topicIds: string[] = []; + for (const title of [ + 'Inherited discussion', + 'Explicit watch', + 'Explicit opt-out', + 'Inherited announcement', + ]) { + const created = await request(app.getHttpServer()) + .post('/topics') + .set('x-member-id', '6') + .send({ + challengeId: 'challenge-1', + title, + content: title, + isAnnouncement: title.includes('announcement'), + }) + .expect(201); + topicIds.push(created.body.topic.id); + } + expect( + seedData.topicWatches.filter((watch) => + topicIds.includes(watch.topicId), + ), + ).toEqual([]); + await request(app.getHttpServer()) + .put(`/topics/${topicIds[1]}/watch`) + .set('x-member-id', memberId) + .send({}) + .expect(200); + await request(app.getHttpServer()) + .delete(`/topics/${topicIds[2]}/watch`) + .set('x-member-id', memberId) + .expect(200); + + // List, detail and email recipients must agree throughout the full QA sequence. + for (const forumWatching of [true, false, true]) { + if (forumWatching) { + await request(app.getHttpServer()) + .put('/challenges/challenge-1/watch') + .set('x-member-id', memberId) + .send({}) + .expect(200); + } else { + await request(app.getHttpServer()) + .delete('/challenges/challenge-1/watch') + .set('x-member-id', memberId) + .expect(200); + const created = await request(app.getHttpServer()) + .post('/topics') + .set('x-member-id', memberId) + .send({ + challengeId: 'challenge-1', + title: 'Created while unwatched', + content: 'New topic', + }) + .expect(201); + topicIds.push(created.body.topic.id); + } + const list = await request(app.getHttpServer()) + .get('/topics/challenges/challenge-1') + .set('x-member-id', memberId) + .expect(200); + for (const [index, topicId] of topicIds.entries()) { + const expectedWatching = + index === 1 || (index !== 2 && forumWatching); + expect( + list.body.data.find((topic: { id: string }) => topic.id === topicId) + .watching, + ).toBe(expectedWatching); + const detail = await request(app.getHttpServer()) + .get(`/topics/${topicId}`) + .set('x-member-id', memberId) + .expect(200); + expect(detail.body.topic.watching).toBe(expectedWatching); + publishedEvents.length = 0; + await request(app.getHttpServer()) + .post(`/topics/${topicId}/posts`) + .set('x-member-id', '1') + .send({ content: 'Notification check' }) + .expect(201); + expect( + publishedEvents.flatMap((event) => event.payload.recipients), + ).toEqual(expectedWatching ? [emailsByMemberId.get(memberId)] : []); + } + } + await request(app.getHttpServer()) + .put(`/topics/${topicIds[2]}/watch`) + .set('x-member-id', memberId) + .send({}) + .expect(200); + const rewatched = await request(app.getHttpServer()) + .get(`/topics/${topicIds[2]}`) + .set('x-member-id', memberId) + .expect(200); + expect(rewatched.body.topic.watching).toBe(true); + }, + ); + it('rejects inaccessible challenge watch reads and mutations', async () => { await request(app.getHttpServer()) .get('/challenges/challenge-1/watch') @@ -968,7 +1100,7 @@ describe('forums notification/read integration', () => { expect(seedData.topicWatches).toEqual([ { topicId: 'parent-1', memberId: '1' }, - { topicId: 'parent-1', memberId: '2' }, + { topicId: 'parent-1', memberId: '2', watching: true }, ]); expect(publishedEvents).toHaveLength(1); expect(publishedEvents[0]).toEqual({ diff --git a/src/forums/forums-read-query.service.ts b/src/forums/forums-read-query.service.ts index a14a1a4..a1b48a2 100644 --- a/src/forums/forums-read-query.service.ts +++ b/src/forums/forums-read-query.service.ts @@ -6,7 +6,8 @@ import { DbService } from '../db/db.service'; * Database row returned by forum topic summary read queries. * * Lock fields are direct Topic projections. `lockedBy` and `lockedAt` may be - * null even when `locked` is true for imported legacy topics. + * null even when `locked` is true for imported legacy topics. `watching` is the + * explicit topic preference, or null when it inherits the challenge preference. */ export interface ForumsTopicSummaryRow { id: string; @@ -24,7 +25,7 @@ export interface ForumsTopicSummaryRow { updatedAt: Date; postsCount: number; viewsCount: number; - watching: boolean; + watching: boolean | null; starterPostExcerpt: string | null; participantsCount: number; participants: ForumsTopicParticipantRow[]; @@ -363,7 +364,7 @@ export class ForumsReadQueryService { t."updatedAt", post_stats."postsCount", view_stats."viewsCount", - watch_state."topicId" IS NOT NULL AS watching, + watch_state.watching AS watching, starter."starterPostExcerpt", participant_stats."participantsCount", participant_snapshots.participants, diff --git a/src/forums/forums-read.service.ts b/src/forums/forums-read.service.ts index 8cee791..cd00a41 100644 --- a/src/forums/forums-read.service.ts +++ b/src/forums/forums-read.service.ts @@ -6,6 +6,7 @@ import { UnauthorizedException, } from '@nestjs/common'; import { JwtUser } from '../auth/jwt.service'; +import { ChallengeForumWatchService } from './challenge-forum-watch.service'; import { PostReactionType } from '../../prisma/generated/client'; import { ForumsPostTreeNodeDto, @@ -79,6 +80,7 @@ export class ForumsReadService { * @param readQueryService Side-effect-free raw-query reader. * @param moderationService Shared runtime ban and lock gate. * @param resourceAccessService Adapter for challenge copilot assignments. + * @param challengeWatchService Effective forum preferences for inherited topic watches. * @throws Does not throw directly; dependencies are resolved by Nest. */ constructor( @@ -87,6 +89,7 @@ export class ForumsReadService { private readonly readQueryService: ForumsReadQueryService, private readonly moderationService: ForumsModerationService, private readonly resourceAccessService: ResourceAccessService, + private readonly challengeWatchService: ChallengeForumWatchService, ) {} /** @@ -139,6 +142,11 @@ export class ForumsReadService { this.resolveRootRowRestrictions(row), ); + await this.applyChallengeWatch( + visibleRows, + normalizedChallengeId, + principal, + ); return this.paginateRows(visibleRows, query); } @@ -231,6 +239,11 @@ export class ForumsReadService { (row) => this.resolveChildRowRestrictions(parentContext, row), ); + await this.applyChallengeWatch( + visibleRows, + parentContext.effectiveChallengeId, + principal, + ); return visibleRows.map((row) => this.mapTopicSummary(row)); } @@ -282,13 +295,24 @@ export class ForumsReadService { throw new NotFoundException('Topic not found.'); } + await this.applyChallengeWatch( + [detailSnapshot.summaryRow], + context.effectiveChallengeId, + principal, + ); const copilotMemberIds = await this.resolvePostAuthorCopilots( context.effectiveChallengeId, detailSnapshot.postRows, ); return { - permissions: { createPost: topicDecisions.canCreatePost.allowed, createTopic: topicDecisions.canCreateChildTopic.allowed, watch: topicDecisions.canAddWatch.allowed, update: topicDecisions.canUpdateTopic.allowed, delete: topicDecisions.canDeleteTopic.allowed }, + permissions: { + createPost: topicDecisions.canCreatePost.allowed, + createTopic: topicDecisions.canCreateChildTopic.allowed, + watch: topicDecisions.canAddWatch.allowed, + update: topicDecisions.canUpdateTopic.allowed, + delete: topicDecisions.canDeleteTopic.allowed, + }, topic: this.mapTopicSummary(detailSnapshot.summaryRow), posts: this.buildPostTree( topicId, @@ -298,6 +322,29 @@ export class ForumsReadService { }; } + /** + * Applies forum inheritance only to visible topics without an explicit choice. + * @param rows Authorized summary rows updated in place before DTO mapping. + * @param challengeId Effective challenge scope, or null for general forums. + * @param principal Current reader; guests and machines do not inherit watches. + * @returns Nothing after resolving at most one forum preference for the batch. + * @throws Propagates preference database and resource lookup errors. + */ + private async applyChallengeWatch( + rows: ForumsTopicSummaryRow[], + challengeId: string | null, + principal: ForumsPrincipal, + ): Promise { + if (!challengeId || !principal.memberId || principal.isMachine) return; + const inheritedRows = rows.filter((row) => row.watching === null); + if (!inheritedRows.length) return; + const watching = await this.challengeWatchService.isWatching( + challengeId, + principal.memberId, + ); + for (const row of inheritedRows) row.watching = watching; + } + /** * Builds a validated reader or a non-elevated anonymous principal. * @@ -306,7 +353,15 @@ export class ForumsReadService { * @throws Does not throw. */ private readPrincipal(user: JwtUser | undefined): ForumsPrincipal { - return buildForumsPrincipal(user) ?? { memberId: null, roles: [], scopes: [], isAdmin: false, isMachine: false }; + return ( + buildForumsPrincipal(user) ?? { + memberId: null, + roles: [], + scopes: [], + isAdmin: false, + isMachine: false, + } + ); } /** Requires a validated identity for challenge-specific listing. diff --git a/src/forums/forums-watch-notification.service.spec.ts b/src/forums/forums-watch-notification.service.spec.ts index 7e8cac9..781e22a 100644 --- a/src/forums/forums-watch-notification.service.spec.ts +++ b/src/forums/forums-watch-notification.service.spec.ts @@ -74,7 +74,9 @@ function createService(templateId: string | null = 'template-id') { ]), }, topicWatch: { - findMany: jest.fn().mockResolvedValue([{ memberId: '2' }]), + findMany: jest + .fn() + .mockResolvedValue([{ memberId: '2', watching: true }]), }, }; const memberDirectoryService = { @@ -157,7 +159,9 @@ describe('ForumsWatchNotificationService', () => { eventBusService, service, } = createService(); - db.topicWatch.findMany.mockResolvedValue([{ memberId: '2' }]); + db.topicWatch.findMany.mockResolvedValue([ + { memberId: '2', watching: true }, + ]); challengeWatchService.getWatcherMemberIds.mockResolvedValue([ '1', '2', @@ -239,12 +243,34 @@ describe('ForumsWatchNotificationService', () => { ); }); + it('excludes an explicit topic opt-out even when forum and ancestor watches are enabled', async () => { + const { service, db, challengeWatchService, eventBusService } = + createService(); + challengeWatchService.getWatcherMemberIds.mockResolvedValue(['2']); + db.topicWatch.findMany.mockResolvedValue([ + { topicId: 'root-1', memberId: '2', watching: true }, + { topicId: 'topic-1', memberId: '2', watching: false }, + ]); + const result = await service.publishPostNotification({ + topic: makeTopic({ challengeId: 'challenge-1' }), + post: makePost(), + restrictions: { + challengeId: 'challenge-1', + roleName: null, + hasRestrictionConflict: false, + }, + operationName: 'createPost', + }); + expect(result.published).toBe(false); + expect(eventBusService.postEvent).not.toHaveBeenCalled(); + }); + it('dedupes topic and ancestor watches into one recipient email event', async () => { const { challengeApiService, db, eventBusService, service } = createService(); db.topicWatch.findMany.mockResolvedValue([ - { memberId: '2' }, - { memberId: '2' }, + { memberId: '2', watching: true }, + { memberId: '2', watching: true }, ]); const result = await service.publishPostNotification({ @@ -264,7 +290,7 @@ describe('ForumsWatchNotificationService', () => { topicId: { in: ['topic-1', 'root-1'] }, memberId: { not: '1' }, }, - select: { memberId: true }, + select: { topicId: true, memberId: true, watching: true }, }); expect(eventBusService.postEvent).toHaveBeenCalledTimes(1); expect(challengeApiService.getChallengeTitle).not.toHaveBeenCalled(); @@ -284,7 +310,9 @@ describe('ForumsWatchNotificationService', () => { it('excludes the persisted author even when the author watches the topic', async () => { const { db, eventBusService, service } = createService(); - db.topicWatch.findMany.mockResolvedValue([{ memberId: '2' }]); + db.topicWatch.findMany.mockResolvedValue([ + { memberId: '2', watching: true }, + ]); await service.publishPostNotification({ topic: makeTopic(), @@ -356,8 +384,8 @@ describe('ForumsWatchNotificationService', () => { service, } = createService(); db.topicWatch.findMany.mockResolvedValue([ - { memberId: '2' }, - { memberId: '3' }, + { memberId: '2', watching: true }, + { memberId: '3', watching: true }, ]); memberDirectoryService.getMembersByIds.mockResolvedValue([ { memberId: '2', email: 'two@example.com', handle: 'two' }, @@ -408,9 +436,9 @@ describe('ForumsWatchNotificationService', () => { service, } = createService(); db.topicWatch.findMany.mockResolvedValue([ - { memberId: '2' }, - { memberId: '3' }, - { memberId: '4' }, + { memberId: '2', watching: true }, + { memberId: '3', watching: true }, + { memberId: '4', watching: true }, ]); memberDirectoryService.getMembersByIds.mockResolvedValue([ { memberId: '2', email: 'two@example.com', handle: 'two' }, @@ -464,9 +492,9 @@ describe('ForumsWatchNotificationService', () => { }); db.topicWatch.findMany.mockResolvedValue([ - { memberId: '2' }, - { memberId: '3' }, - { memberId: '4' }, + { memberId: '2', watching: true }, + { memberId: '3', watching: true }, + { memberId: '4', watching: true }, ]); memberDirectoryService.getMembersByIds.mockResolvedValue([ { memberId: '2', email: 'two@example.com', handle: 'two' }, @@ -599,8 +627,8 @@ describe('ForumsWatchNotificationService', () => { service, } = createService(); db.topicWatch.findMany.mockResolvedValue([ - { memberId: '2' }, - { memberId: '3' }, + { memberId: '2', watching: true }, + { memberId: '3', watching: true }, ]); memberDirectoryService.getMembersByIds.mockResolvedValue([ { memberId: '2', email: 'two@example.com', handle: 'two' }, diff --git a/src/forums/forums-watch-notification.service.ts b/src/forums/forums-watch-notification.service.ts index 2ce3c85..1fd4810 100644 --- a/src/forums/forums-watch-notification.service.ts +++ b/src/forums/forums-watch-notification.service.ts @@ -198,7 +198,8 @@ export class ForumsWatchNotificationService { } /** - * Resolves topic, ancestor, and challenge-wide watch candidates. + * Resolves topic, ancestor, and challenge-wide watches, excluding explicit + * opt-outs on the receiving topic even when the member watches the forum. * * @param topicId Topic id receiving the newly created post. * @param authorMemberId Persisted author member id to exclude. @@ -226,18 +227,27 @@ export class ForumsWatchNotificationService { topicId: { in: watchedTopicIds }, memberId: { not: authorMemberId }, }, - select: { memberId: true }, + select: { topicId: true, memberId: true, watching: true }, }); const challengeWatchers = challengeId ? await this.challengeWatchService.getWatcherMemberIds(challengeId) : []; + const topicOptOuts = new Set( + watchRows + .filter((watch) => watch.topicId === topicId && !watch.watching) + .map((watch) => watch.memberId), + ); return Array.from( new Set([ - ...watchRows.map((watch) => watch.memberId), + ...watchRows + .filter((watch) => watch.watching) + .map((watch) => watch.memberId), ...challengeWatchers, ]), - ).filter((memberId) => memberId !== authorMemberId); + ).filter( + (memberId) => memberId !== authorMemberId && !topicOptOuts.has(memberId), + ); } /** @@ -412,9 +422,8 @@ export class ForumsWatchNotificationService { const context: ForumsNotificationChallengeContext = {}; try { - context.title = await this.challengeApiService.getChallengeTitle( - challengeId, - ); + context.title = + await this.challengeApiService.getChallengeTitle(challengeId); } catch (error) { const message = error instanceof Error ? error.message : 'unknown error'; this.logger.warn( diff --git a/src/forums/public-forums-query.service.ts b/src/forums/public-forums-query.service.ts index bc551a8..26c1ebf 100644 --- a/src/forums/public-forums-query.service.ts +++ b/src/forums/public-forums-query.service.ts @@ -159,7 +159,7 @@ export class PublicForumsQueryService { ? Prisma.sql`((${this.visibleThreads(principal, categoryIds)}) OR t.id IN (${Prisma.join(categoryIds)}))` : this.visibleThreads(principal, categoryIds); const watchFilter = watching - ? Prisma.sql`AND EXISTS (SELECT 1 FROM "TopicWatch" w WHERE w."topicId" = t.id AND w."memberId" = ${principal.memberId})` + ? Prisma.sql`AND EXISTS (SELECT 1 FROM "TopicWatch" w WHERE w."topicId" = t.id AND w."memberId" = ${principal.memberId} AND w.watching = true)` : Prisma.empty; const searchFilter = search ? Prisma.sql`AND (STRPOS(LOWER(t.title), ${search}) > 0 OR EXISTS ( diff --git a/src/forums/topic-watch-schema.integration.spec.ts b/src/forums/topic-watch-schema.integration.spec.ts new file mode 100644 index 0000000..e09b135 --- /dev/null +++ b/src/forums/topic-watch-schema.integration.spec.ts @@ -0,0 +1,112 @@ +import { ConfigService } from '@nestjs/config'; +import { DbService } from '../db/db.service'; +import { ForumsReadQueryService } from './forums-read-query.service'; + +const databaseUrl = process.env.FORUMS_DATABASE_URL ?? process.env.DATABASE_URL; +const itWithDatabase = databaseUrl ? it : it.skip; +const challengeId = `watch-schema-${process.pid}-${Date.now()}`; + +/** Verifies topic preference persistence and raw SQL projections against migrated PostgreSQL. */ +describe('topic watch schema persistence', () => { + let db: DbService; + let queries: ForumsReadQueryService; + const topicIds: string[] = []; + + beforeAll(async () => { + if (!databaseUrl) return; + const url = new URL(databaseUrl); + url.searchParams.set('options', '-c search_path=forums,public'); + db = new DbService(new ConfigService({ database: { url: url.href } })); + await db.$connect(); + queries = new ForumsReadQueryService(db); + for (const title of ['Inherited', 'Watched', 'Unwatched']) { + const topic = await db.topic.create({ + data: { + challengeId, + title, + authorMemberId: 'watch-author', + authorHandle: 'watch-author', + }, + }); + topicIds.push(topic.id); + await db.topicClosure.create({ + data: { + ancestorTopicId: topic.id, + descendantTopicId: topic.id, + depth: 0, + }, + }); + } + await db.topicWatch.create({ + data: { topicId: topicIds[1], memberId: 'watch-member' }, + }); + await db.topicWatch.create({ + data: { topicId: topicIds[2], memberId: 'watch-member', watching: false }, + }); + }); + + afterAll(async () => { + if (!db) return; + await db.topic.deleteMany({ where: { challengeId } }); + await db.challengeForumWatch.deleteMany({ where: { challengeId } }); + await db.$disconnect(); + }); + + itWithDatabase( + 'distinguishes inherited, explicit watched and explicit unwatched topics in list and detail SQL', + async () => { + for (const watching of [false, true]) { + await db.challengeForumWatch.upsert({ + where: { + challengeId_memberId: { challengeId, memberId: 'watch-member' }, + }, + create: { challengeId, memberId: 'watch-member', watching }, + update: { watching }, + }); + const rows = await queries.findChallengeRootTopicSummaries( + challengeId, + 'watch-member', + ); + expect( + topicIds.map((id) => rows.find((row) => row.id === id)?.watching), + ).toEqual([null, true, false]); + const detail = await queries.findTopicDetailSnapshot( + topicIds[2], + 'watch-member', + ); + expect(detail?.summaryRow.watching).toBe(false); + } + expect( + await db.topicWatch.count({ where: { topicId: { in: topicIds } } }), + ).toBe(2); + const anonymousRows = await queries.findChallengeRootTopicSummaries( + challengeId, + null, + ); + expect(anonymousRows.every((row) => row.watching === null)).toBe(true); + }, + ); + + itWithDatabase( + 'updates the same explicit opt-out row when a topic is watched again', + async () => { + const where = { + topicId_memberId: { topicId: topicIds[2], memberId: 'watch-member' }, + }; + for (const watching of [false, false, true]) { + await db.topicWatch.upsert({ + where, + create: { ...where.topicId_memberId, watching }, + update: { watching }, + }); + } + expect(await db.topicWatch.count({ where: where.topicId_memberId })).toBe( + 1, + ); + expect( + (await queries.findTopicDetailSnapshot(topicIds[2], 'watch-member')) + ?.summaryRow.watching, + ).toBe(true); + }, + ); +}); diff --git a/src/forums/topics.controller.ts b/src/forums/topics.controller.ts index ba7a68d..c6e8c4f 100644 --- a/src/forums/topics.controller.ts +++ b/src/forums/topics.controller.ts @@ -166,7 +166,9 @@ export class TopicsController { type: ForumsTopicSummaryPageDto, }) @ApiBadRequestResponse({ description: 'Invalid pagination query.' }) - @ApiUnauthorizedResponse({ description: 'A supplied bearer token is invalid.' }) + @ApiUnauthorizedResponse({ + description: 'A supplied bearer token is invalid.', + }) @ApiForbiddenResponse({ description: 'Active forums ban.' }) listGeneralRootTopics( @Query() query: ForumsTopicListQueryDto, @@ -260,7 +262,9 @@ export class TopicsController { description: 'Visible direct child topics.', type: [ForumsTopicSummaryDto], }) - @ApiUnauthorizedResponse({ description: 'A supplied bearer token is invalid.' }) + @ApiUnauthorizedResponse({ + description: 'A supplied bearer token is invalid.', + }) @ApiForbiddenResponse({ description: 'Active forums ban or parent topic visibility denied.', }) @@ -300,7 +304,9 @@ export class TopicsController { description: 'Topic detail with embedded post tree.', type: ForumsTopicDetailDto, }) - @ApiUnauthorizedResponse({ description: 'A supplied bearer token is invalid.' }) + @ApiUnauthorizedResponse({ + description: 'A supplied bearer token is invalid.', + }) @ApiForbiddenResponse({ description: 'Active forums ban or topic visibility denied.', }) @@ -484,7 +490,7 @@ export class TopicsController { } /** - * Removes a watch on a topic for a member. + * Unwatches a topic, persisting an opt-out for challenge-scoped topics. * * @param topicId Topic id from the route. * @param dto Optional target member body; required for scoped M2M callers. @@ -501,12 +507,13 @@ export class TopicsController { @ApiOperation({ summary: 'Unwatch a forum topic', description: - 'Command route requiring an authenticated member token or `remove:forums-topic-watch`. Human tokens unwatch for themselves and active member or trusted exact-IP bans return 403. Scoped M2M callers must supply a `memberId` that resolves in external Members and Identity data; active target-member bans return 403 before context loading, and policy evaluates inherited challenge and role visibility for that target member before removing the watch row.', + 'Command route requiring an authenticated member token or `remove:forums-topic-watch`. Human tokens unwatch for themselves and active member or trusted exact-IP bans return 403. Scoped M2M callers must supply a `memberId` that resolves in external Members and Identity data; active target-member bans return 403 before context loading, and policy evaluates inherited challenge and role visibility for that target member before persisting a challenge-topic opt-out or removing a general-topic watch row.', }) @ApiParam({ name: 'topicId', description: 'Topic id.' }) @ApiResponse({ status: 200, - description: 'Topic watch removed.', + description: + 'Topic unwatched; challenge-topic opt-outs override the forum preference.', type: TopicWatchStateCommandResponseDto, }) @ApiBadRequestResponse({ description: 'Invalid member target.' })