@studious-lms/server 1.2.44 → 1.2.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/.env.example +45 -0
  2. package/.env.test.example +37 -0
  3. package/README.md +34 -7
  4. package/coverage/base.css +224 -0
  5. package/coverage/block-navigation.js +87 -0
  6. package/coverage/clover.xml +12110 -0
  7. package/coverage/coverage-final.json +44 -0
  8. package/coverage/favicon.png +0 -0
  9. package/coverage/index.html +221 -0
  10. package/coverage/prettify.css +1 -0
  11. package/coverage/prettify.js +2 -0
  12. package/coverage/server/index.html +116 -0
  13. package/coverage/server/src/exportType.ts.html +109 -0
  14. package/coverage/server/src/index.html +161 -0
  15. package/coverage/server/src/index.ts.html +1702 -0
  16. package/coverage/server/src/instrument.ts.html +130 -0
  17. package/coverage/server/src/lib/config/env.ts.html +448 -0
  18. package/coverage/server/src/lib/config/index.html +116 -0
  19. package/coverage/server/src/lib/fileUpload.ts.html +1138 -0
  20. package/coverage/server/src/lib/googleCloudStorage.ts.html +334 -0
  21. package/coverage/server/src/lib/index.html +206 -0
  22. package/coverage/server/src/lib/jsonConversion.ts.html +2323 -0
  23. package/coverage/server/src/lib/jsonStyles.ts.html +193 -0
  24. package/coverage/server/src/lib/notificationHandler.ts.html +193 -0
  25. package/coverage/server/src/lib/pusher.ts.html +121 -0
  26. package/coverage/server/src/lib/thumbnailGenerator.ts.html +592 -0
  27. package/coverage/server/src/middleware/auth.ts.html +646 -0
  28. package/coverage/server/src/middleware/index.html +146 -0
  29. package/coverage/server/src/middleware/logging.ts.html +244 -0
  30. package/coverage/server/src/middleware/security.ts.html +271 -0
  31. package/coverage/server/src/routers/_app.ts.html +232 -0
  32. package/coverage/server/src/routers/agenda.ts.html +319 -0
  33. package/coverage/server/src/routers/announcement.ts.html +3481 -0
  34. package/coverage/server/src/routers/assignment.ts.html +7633 -0
  35. package/coverage/server/src/routers/attendance.ts.html +1030 -0
  36. package/coverage/server/src/routers/auth.ts.html +1081 -0
  37. package/coverage/server/src/routers/class.ts.html +3535 -0
  38. package/coverage/server/src/routers/comment.ts.html +991 -0
  39. package/coverage/server/src/routers/conversation.ts.html +982 -0
  40. package/coverage/server/src/routers/event.ts.html +1609 -0
  41. package/coverage/server/src/routers/file.ts.html +1144 -0
  42. package/coverage/server/src/routers/folder.ts.html +2797 -0
  43. package/coverage/server/src/routers/index.html +386 -0
  44. package/coverage/server/src/routers/labChat.ts.html +3073 -0
  45. package/coverage/server/src/routers/marketing.ts.html +340 -0
  46. package/coverage/server/src/routers/message.ts.html +1912 -0
  47. package/coverage/server/src/routers/notifications.ts.html +364 -0
  48. package/coverage/server/src/routers/section.ts.html +1120 -0
  49. package/coverage/server/src/routers/user.ts.html +862 -0
  50. package/coverage/server/src/routers/worksheet.ts.html +1729 -0
  51. package/coverage/server/src/trpc.ts.html +397 -0
  52. package/coverage/server/src/types/index.html +116 -0
  53. package/coverage/server/src/types/trpc.ts.html +127 -0
  54. package/coverage/server/src/utils/aiUser.ts.html +280 -0
  55. package/coverage/server/src/utils/email.ts.html +121 -0
  56. package/coverage/server/src/utils/generateInviteCode.ts.html +106 -0
  57. package/coverage/server/src/utils/index.html +206 -0
  58. package/coverage/server/src/utils/inference.ts.html +709 -0
  59. package/coverage/server/src/utils/logger.ts.html +664 -0
  60. package/coverage/server/src/utils/prismaErrorHandler.ts.html +907 -0
  61. package/coverage/server/src/utils/prismaWrapper.ts.html +355 -0
  62. package/coverage/server/vitest.config.ts.html +196 -0
  63. package/coverage/sort-arrow-sprite.png +0 -0
  64. package/coverage/sorter.js +210 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +83 -52
  67. package/dist/index.js.map +1 -1
  68. package/dist/instrument.js +15 -8
  69. package/dist/instrument.js.map +1 -1
  70. package/dist/lib/config/env.d.ts +169 -0
  71. package/dist/lib/config/env.d.ts.map +1 -0
  72. package/dist/lib/config/env.js +115 -0
  73. package/dist/lib/config/env.js.map +1 -0
  74. package/dist/lib/fileUpload.d.ts.map +1 -1
  75. package/dist/lib/fileUpload.js +5 -4
  76. package/dist/lib/fileUpload.js.map +1 -1
  77. package/dist/lib/googleCloudStorage.d.ts.map +1 -1
  78. package/dist/lib/googleCloudStorage.js +7 -8
  79. package/dist/lib/googleCloudStorage.js.map +1 -1
  80. package/dist/lib/jsonConversion.d.ts.map +1 -1
  81. package/dist/lib/jsonConversion.js +14 -16
  82. package/dist/lib/jsonConversion.js.map +1 -1
  83. package/dist/lib/notificationHandler.d.ts +2 -2
  84. package/dist/lib/prisma.d.ts +2 -2
  85. package/dist/lib/prisma.d.ts.map +1 -1
  86. package/dist/lib/prisma.js +22 -3
  87. package/dist/lib/prisma.js.map +1 -1
  88. package/dist/lib/pusher.d.ts.map +1 -1
  89. package/dist/lib/pusher.js +8 -7
  90. package/dist/lib/pusher.js.map +1 -1
  91. package/dist/middleware/auth.d.ts.map +1 -1
  92. package/dist/middleware/auth.js +6 -5
  93. package/dist/middleware/auth.js.map +1 -1
  94. package/dist/middleware/security.d.ts +5 -0
  95. package/dist/middleware/security.d.ts.map +1 -0
  96. package/dist/middleware/security.js +77 -0
  97. package/dist/middleware/security.js.map +1 -0
  98. package/dist/routers/_app.d.ts +304 -98
  99. package/dist/routers/_app.d.ts.map +1 -1
  100. package/dist/routers/_app.js +4 -2
  101. package/dist/routers/_app.js.map +1 -1
  102. package/dist/routers/agenda.d.ts.map +1 -1
  103. package/dist/routers/agenda.js +12 -9
  104. package/dist/routers/agenda.js.map +1 -1
  105. package/dist/routers/announcement.d.ts +8 -0
  106. package/dist/routers/announcement.d.ts.map +1 -1
  107. package/dist/routers/announcement.js +6 -4
  108. package/dist/routers/announcement.js.map +1 -1
  109. package/dist/routers/assignment.d.ts +7 -4
  110. package/dist/routers/assignment.d.ts.map +1 -1
  111. package/dist/routers/assignment.js +35 -18
  112. package/dist/routers/assignment.js.map +1 -1
  113. package/dist/routers/attendance.d.ts +1 -0
  114. package/dist/routers/attendance.d.ts.map +1 -1
  115. package/dist/routers/attendance.js +4 -4
  116. package/dist/routers/attendance.js.map +1 -1
  117. package/dist/routers/auth.d.ts +20 -0
  118. package/dist/routers/auth.d.ts.map +1 -1
  119. package/dist/routers/auth.js +132 -15
  120. package/dist/routers/auth.js.map +1 -1
  121. package/dist/routers/class.d.ts +10 -0
  122. package/dist/routers/class.d.ts.map +1 -1
  123. package/dist/routers/class.js +49 -5
  124. package/dist/routers/class.js.map +1 -1
  125. package/dist/routers/comment.d.ts +7 -0
  126. package/dist/routers/comment.d.ts.map +1 -1
  127. package/dist/routers/comment.js +9 -2
  128. package/dist/routers/comment.js.map +1 -1
  129. package/dist/routers/conversation.d.ts +1 -0
  130. package/dist/routers/conversation.d.ts.map +1 -1
  131. package/dist/routers/conversation.js +46 -31
  132. package/dist/routers/conversation.js.map +1 -1
  133. package/dist/routers/file.d.ts.map +1 -1
  134. package/dist/routers/file.js +30 -7
  135. package/dist/routers/file.js.map +1 -1
  136. package/dist/routers/labChat.d.ts +1 -0
  137. package/dist/routers/labChat.d.ts.map +1 -1
  138. package/dist/routers/labChat.js +2 -3
  139. package/dist/routers/labChat.js.map +1 -1
  140. package/dist/routers/marketing.d.ts +1 -1
  141. package/dist/routers/newtonChat.d.ts +55 -0
  142. package/dist/routers/newtonChat.d.ts.map +1 -0
  143. package/dist/routers/newtonChat.js +438 -0
  144. package/dist/routers/newtonChat.js.map +1 -0
  145. package/dist/routers/notifications.d.ts +4 -4
  146. package/dist/routers/section.d.ts +9 -4
  147. package/dist/routers/section.d.ts.map +1 -1
  148. package/dist/routers/section.js +8 -8
  149. package/dist/routers/section.js.map +1 -1
  150. package/dist/routers/user.d.ts.map +1 -1
  151. package/dist/routers/user.js +5 -4
  152. package/dist/routers/user.js.map +1 -1
  153. package/dist/routers/worksheet.d.ts +30 -36
  154. package/dist/routers/worksheet.d.ts.map +1 -1
  155. package/dist/routers/worksheet.js +11 -33
  156. package/dist/routers/worksheet.js.map +1 -1
  157. package/dist/seedDatabase.d.ts +1 -1
  158. package/dist/seedDatabase.js +275 -284
  159. package/dist/seedDatabase.js.map +1 -1
  160. package/dist/server/pipelines/aiLabChat.d.ts +10 -0
  161. package/dist/server/pipelines/aiLabChat.d.ts.map +1 -0
  162. package/dist/server/pipelines/aiLabChat.js +83 -0
  163. package/dist/server/pipelines/aiLabChat.js.map +1 -0
  164. package/dist/server/pipelines/gradeWorksheet.d.ts +2 -0
  165. package/dist/server/pipelines/gradeWorksheet.d.ts.map +1 -0
  166. package/dist/server/pipelines/gradeWorksheet.js +138 -0
  167. package/dist/server/pipelines/gradeWorksheet.js.map +1 -0
  168. package/dist/trpc.d.ts.map +1 -1
  169. package/dist/trpc.js +2 -2
  170. package/dist/trpc.js.map +1 -1
  171. package/dist/utils/email.d.ts +9 -1
  172. package/dist/utils/email.d.ts.map +1 -1
  173. package/dist/utils/email.js +20 -5
  174. package/dist/utils/email.js.map +1 -1
  175. package/dist/utils/inference.d.ts +3 -0
  176. package/dist/utils/inference.d.ts.map +1 -1
  177. package/dist/utils/inference.js +41 -7
  178. package/dist/utils/inference.js.map +1 -1
  179. package/dist/utils/logger.d.ts.map +1 -1
  180. package/dist/utils/logger.js +3 -3
  181. package/dist/utils/logger.js.map +1 -1
  182. package/docker-compose.yml +14 -0
  183. package/package.json +13 -4
  184. package/prisma/schema.prisma +32 -5
  185. package/scripts/test-pre-push.ts +14 -0
  186. package/src/index.ts +98 -54
  187. package/src/instrument.ts +13 -6
  188. package/src/lib/config/env.ts +126 -0
  189. package/src/lib/fileUpload.ts +3 -2
  190. package/src/lib/googleCloudStorage.ts +6 -6
  191. package/src/lib/jsonConversion.ts +12 -14
  192. package/src/lib/prisma.ts +23 -2
  193. package/src/lib/pusher.ts +6 -5
  194. package/src/middleware/auth.ts +4 -3
  195. package/src/middleware/security.ts +80 -0
  196. package/src/routers/_app.ts +2 -0
  197. package/src/routers/agenda.ts +10 -7
  198. package/src/routers/announcement.ts +4 -2
  199. package/src/routers/assignment.ts +58 -40
  200. package/src/routers/attendance.ts +2 -2
  201. package/src/routers/auth.ts +143 -14
  202. package/src/routers/class.ts +52 -3
  203. package/src/routers/comment.ts +7 -0
  204. package/src/routers/conversation.ts +49 -29
  205. package/src/routers/file.ts +29 -5
  206. package/src/routers/labChat.ts +0 -1
  207. package/src/routers/newtonChat.ts +520 -0
  208. package/src/routers/section.ts +6 -6
  209. package/src/routers/user.ts +3 -2
  210. package/src/routers/worksheet.ts +9 -37
  211. package/src/seedDatabase.ts +290 -283
  212. package/src/server/pipelines/aiLabChat.ts +92 -0
  213. package/src/server/pipelines/gradeWorksheet.ts +152 -0
  214. package/src/trpc.ts +2 -0
  215. package/src/utils/email.ts +30 -3
  216. package/src/utils/inference.ts +50 -5
  217. package/src/utils/logger.ts +2 -1
  218. package/tests/announcement.test.ts +164 -0
  219. package/tests/assignment.test.ts +296 -0
  220. package/tests/attendance.test.ts +168 -0
  221. package/tests/auth.test.ts +33 -10
  222. package/tests/class.test.ts +34 -9
  223. package/tests/event.test.ts +228 -0
  224. package/tests/section.test.ts +216 -0
  225. package/tests/setup.ts +70 -16
  226. package/tests/user.test.ts +158 -0
  227. package/vitest.config.ts +26 -0
  228. package/API_SPECIFICATION.md +0 -1597
  229. package/BASE64_REMOVAL_SUMMARY.md +0 -164
  230. package/CHAT_API_SPEC.md +0 -579
  231. package/LAB_CHAT_API_SPEC.md +0 -518
  232. package/dist/routers/school.d.ts +0 -208
  233. package/dist/routers/school.d.ts.map +0 -1
  234. package/dist/routers/school.js +0 -483
@@ -1 +1 @@
1
- {"version":3,"file":"seedDatabase.js","sources":["seedDatabase.ts"],"sourceRoot":"/","sourcesContent":["import { prisma } from \"./lib/prisma.js\";\nimport { hash } from \"bcryptjs\";\nimport { logger } from \"./utils/logger.js\";\n\nexport async function clearDatabase() {\n // Delete in order to respect foreign key constraints\n // Delete notifications first (they reference users)\n logger.info('Clearing database');\n await prisma.notification.deleteMany();\n \n // Delete chat-related records\n await prisma.mention.deleteMany();\n await prisma.message.deleteMany();\n await prisma.conversationMember.deleteMany();\n await prisma.labChat.deleteMany();\n await prisma.conversation.deleteMany();\n \n // Delete other records that reference users\n await prisma.submission.deleteMany();\n await prisma.assignment.deleteMany();\n await prisma.announcement.deleteMany();\n await prisma.event.deleteMany();\n await prisma.attendance.deleteMany();\n \n // Delete class-related records\n await prisma.section.deleteMany();\n await prisma.markScheme.deleteMany();\n await prisma.gradingBoundary.deleteMany();\n await prisma.folder.deleteMany();\n await prisma.class.deleteMany();\n \n // Delete user-related records\n await prisma.session.deleteMany();\n await prisma.userProfile.deleteMany();\n \n // Delete users first\n await prisma.user.deleteMany();\n \n // Delete schools (which reference files for logos) - this will cascade delete the file references\n await prisma.school.deleteMany();\n \n // Finally delete all files\n await prisma.file.deleteMany();\n}\n\nexport async function createUser(email: string, password: string, username: string) {\n logger.debug(\"Creating user\", { email, username, password });\n\n const hashedPassword = await hash(password, 10);\n return await prisma.user.create({\n data: { email, password: hashedPassword, username, verified: true },\n });\n}\n\nexport async function addNotification(userId: string, title: string, content: string) {\n return await prisma.notification.create({\n data: {\n receiverId: userId,\n title,\n content,\n },\n });\n}\n\nexport const seedDatabase = async () => {\n await clearDatabase();\n logger.info('Cleared database');\n\n // Create comprehensive demo data for teacher demo video\n \n // 1. Create School\n const demoFile = await prisma.file.create({\n data: {\n name: 'school_logo.png',\n path: 'logos/demo_school.png',\n type: 'image/png',\n size: 15000,\n }\n });\n\n const school = await prisma.school.create({\n data: {\n name: 'Riverside High School',\n logoId: demoFile.id,\n subdomain: 'riverside',\n }\n });\n\n // 2. Create Teachers\n const teachers = await Promise.all([\n createUser('sarah.johnson@riverside.edu', 'demo123', 'sarah.johnson'),\n createUser('michael.chen@riverside.edu', 'demo123', 'michael.chen'),\n createUser('emma.davis@riverside.edu', 'demo123', 'emma.davis'),\n ]);\n\n // 3. Create Students (realistic names)\n const students = await Promise.all([\n createUser('alex.martinez@student.rverside.eidu', 'student123', 'alex.martinez'),\n createUser('sophia.williams@student.riverside.edu', 'student123', 'sophia.williams'),\n createUser('james.brown@student.riverside.edu', 'student123', 'james.brown'),\n createUser('olivia.taylor@student.riverside.edu', 'student123', 'olivia.taylor'),\n createUser('ethan.anderson@student.riverside.edu', 'student123', 'ethan.anderson'),\n createUser('ava.thomas@student.riverside.edu', 'student123', 'ava.thomas'),\n createUser('noah.jackson@student.riverside.edu', 'student123', 'noah.jackson'),\n createUser('isabella.white@student.riverside.edu', 'student123', 'isabella.white'),\n createUser('liam.harris@student.riverside.edu', 'student123', 'liam.harris'),\n createUser('mia.clark@student.riverside.edu', 'student123', 'mia.clark'),\n createUser('lucas.lewis@student.riverside.edu', 'student123', 'lucas.lewis'),\n createUser('charlotte.walker@student.riverside.edu', 'student123', 'charlotte.walker'),\n ]);\n\n // 4. Create User Profiles\n await Promise.all([\n prisma.userProfile.create({\n data: {\n userId: teachers[0].id,\n displayName: 'Dr. Sarah Johnson',\n bio: 'Biology teacher with 15 years of experience. Passionate about making science accessible to all students.',\n location: 'Riverside, CA',\n website: 'https://sarahjohnson-bio.com',\n }\n }),\n prisma.userProfile.create({\n data: {\n userId: teachers[1].id,\n displayName: 'Mr. Michael Chen',\n bio: 'Mathematics teacher and department head. Specializes in AP Calculus and Statistics.',\n location: 'Riverside, CA',\n }\n }),\n prisma.userProfile.create({\n data: {\n userId: teachers[2].id,\n displayName: 'Ms. Emma Davis',\n bio: 'English Literature teacher. Loves fostering creative writing and critical thinking.',\n location: 'Riverside, CA',\n }\n }),\n ]);\n\n // Add profiles for some students\n await Promise.all(students.slice(0, 6).map((student, index) => {\n const names = ['Alex Martinez', 'Sophia Williams', 'James Brown', 'Olivia Taylor', 'Ethan Anderson', 'Ava Thomas'];\n return prisma.userProfile.create({\n data: {\n userId: student.id,\n displayName: names[index],\n bio: `Grade 11 student at Riverside High School.`,\n }\n });\n }));\n\n // 5. Create Classes with realistic subjects\n const biologyClass = await prisma.class.create({\n data: {\n name: 'AP Biology',\n subject: 'Biology',\n section: 'Period 3',\n color: '#10B981',\n syllabus: 'Advanced Placement Biology covering molecular biology, genetics, evolution, ecology, and more.',\n schoolId: school.id,\n teachers: { connect: { id: teachers[0].id } },\n students: { connect: students.slice(0, 8).map(s => ({ id: s.id })) },\n },\n });\n\n const mathClass = await prisma.class.create({\n data: {\n name: 'AP Calculus BC',\n subject: 'Mathematics',\n section: 'Period 2',\n color: '#3B82F6',\n syllabus: 'Advanced calculus including limits, derivatives, integrals, and series.',\n schoolId: school.id,\n teachers: { connect: { id: teachers[1].id } },\n students: { connect: students.slice(4, 12).map(s => ({ id: s.id })) },\n },\n });\n\n const englishClass = await prisma.class.create({\n data: {\n name: 'English Literature',\n subject: 'English',\n section: 'Period 1',\n color: '#8B5CF6',\n syllabus: 'Study of classic and contemporary literature with focus on analysis and writing.',\n schoolId: school.id,\n teachers: { connect: { id: teachers[2].id } },\n students: { connect: students.slice(0, 10).map(s => ({ id: s.id })) },\n },\n });\n\n // 6. Create Sections for organization\n const bioSections = await Promise.all([\n prisma.section.create({\n data: { name: 'Unit 1: Chemistry of Life', classId: biologyClass.id, color: '#EF4444', order: 1 }\n }),\n prisma.section.create({\n data: { name: 'Unit 2: Cell Structure', classId: biologyClass.id, color: '#F97316', order: 2 }\n }),\n prisma.section.create({\n data: { name: 'Unit 3: Cellular Processes', classId: biologyClass.id, color: '#EAB308', order: 3 }\n }),\n prisma.section.create({\n data: { name: 'Unit 4: Genetics', classId: biologyClass.id, color: '#22C55E', order: 4 }\n }),\n ]);\n\n const mathSections = await Promise.all([\n prisma.section.create({\n data: { name: 'Limits and Continuity', classId: mathClass.id, color: '#3B82F6', order: 1 }\n }),\n prisma.section.create({\n data: { name: 'Derivatives', classId: mathClass.id, color: '#6366F1', order: 2 }\n }),\n prisma.section.create({\n data: { name: 'Integrals', classId: mathClass.id, color: '#8B5CF6', order: 3 }\n }),\n ]);\n\n // 7. Create mark schemes first\n const bioMarkScheme = await prisma.markScheme.create({\n data: {\n classId: biologyClass.id,\n structured: JSON.stringify({\n name: 'Biology Assessment Rubric',\n criteria: [\n {\n id: 'scientific-accuracy',\n title: 'Scientific Accuracy',\n description: 'Correct use of scientific terminology and concepts',\n levels: [\n {\n id: 'excellent',\n name: 'Excellent',\n description: 'All scientific terms and concepts used correctly with precision',\n points: 4,\n color: '#10B981'\n },\n {\n id: 'proficient',\n name: 'Proficient',\n description: 'Most scientific terms and concepts used correctly',\n points: 3,\n color: '#3B82F6'\n },\n {\n id: 'developing',\n name: 'Developing',\n description: 'Some scientific terms used correctly, minor errors present',\n points: 2,\n color: '#F59E0B'\n },\n {\n id: 'beginning',\n name: 'Beginning',\n description: 'Limited use of scientific terminology, significant errors',\n points: 1,\n color: '#EF4444'\n }\n ]\n },\n {\n id: 'analysis-reasoning',\n title: 'Analysis & Reasoning',\n description: 'Quality of analysis and logical reasoning',\n levels: [\n {\n id: 'excellent',\n name: 'Excellent',\n description: 'Clear, sophisticated analysis with logical connections',\n points: 4,\n color: '#10B981'\n },\n {\n id: 'proficient',\n name: 'Proficient',\n description: 'Good analysis with mostly logical reasoning',\n points: 3,\n color: '#3B82F6'\n },\n {\n id: 'developing',\n name: 'Developing',\n description: 'Basic analysis with some logical gaps',\n points: 2,\n color: '#F59E0B'\n },\n {\n id: 'beginning',\n name: 'Beginning',\n description: 'Limited analysis, unclear reasoning',\n points: 1,\n color: '#EF4444'\n }\n ]\n },\n {\n id: 'communication',\n title: 'Communication',\n description: 'Clear writing and proper formatting',\n levels: [\n {\n id: 'excellent',\n name: 'Excellent',\n description: 'Clear, well-organized writing with proper format',\n points: 4,\n color: '#10B981'\n },\n {\n id: 'proficient',\n name: 'Proficient',\n description: 'Generally clear writing with good organization',\n points: 3,\n color: '#3B82F6'\n },\n {\n id: 'developing',\n name: 'Developing',\n description: 'Adequate writing with some organizational issues',\n points: 2,\n color: '#F59E0B'\n },\n {\n id: 'beginning',\n name: 'Beginning',\n description: 'Unclear writing, poor organization',\n points: 1,\n color: '#EF4444'\n }\n ]\n },\n {\n id: 'evidence-examples',\n title: 'Evidence & Examples',\n description: 'Use of relevant examples and evidence',\n levels: [\n {\n id: 'excellent',\n name: 'Excellent',\n description: 'Strong, relevant examples that enhance understanding',\n points: 4,\n color: '#10B981'\n },\n {\n id: 'proficient',\n name: 'Proficient',\n description: 'Good examples that support main points',\n points: 3,\n color: '#3B82F6'\n },\n {\n id: 'developing',\n name: 'Developing',\n description: 'Some examples provided, may lack relevance',\n points: 2,\n color: '#F59E0B'\n },\n {\n id: 'beginning',\n name: 'Beginning',\n description: 'Few or no relevant examples provided',\n points: 1,\n color: '#EF4444'\n }\n ]\n }\n ]\n })\n }\n });\n\n const mathMarkScheme = await prisma.markScheme.create({\n data: {\n classId: mathClass.id,\n structured: JSON.stringify({\n name: 'Mathematics Assessment Rubric',\n criteria: [\n {\n id: 'mathematical-accuracy',\n title: 'Mathematical Accuracy',\n description: 'Correct calculations and mathematical procedures',\n levels: [\n {\n id: 'excellent',\n name: 'Excellent',\n description: 'All calculations correct, proper mathematical procedures',\n points: 4,\n color: '#10B981'\n },\n {\n id: 'proficient',\n name: 'Proficient',\n description: 'Most calculations correct, minor computational errors',\n points: 3,\n color: '#3B82F6'\n },\n {\n id: 'developing',\n name: 'Developing',\n description: 'Some calculations correct, several errors present',\n points: 2,\n color: '#F59E0B'\n },\n {\n id: 'beginning',\n name: 'Beginning',\n description: 'Many calculation errors, incorrect procedures',\n points: 1,\n color: '#EF4444'\n }\n ]\n },\n {\n id: 'problem-solving',\n title: 'Problem-Solving Strategy',\n description: 'Appropriate method selection and setup',\n levels: [\n {\n id: 'excellent',\n name: 'Excellent',\n description: 'Optimal strategy chosen, excellent problem setup',\n points: 4,\n color: '#10B981'\n },\n {\n id: 'proficient',\n name: 'Proficient',\n description: 'Good strategy, appropriate problem approach',\n points: 3,\n color: '#3B82F6'\n },\n {\n id: 'developing',\n name: 'Developing',\n description: 'Adequate strategy, some setup issues',\n points: 2,\n color: '#F59E0B'\n },\n {\n id: 'beginning',\n name: 'Beginning',\n description: 'Poor strategy choice, unclear setup',\n points: 1,\n color: '#EF4444'\n }\n ]\n },\n {\n id: 'work-shown',\n title: 'Work Shown',\n description: 'Clear step-by-step work and explanations',\n levels: [\n {\n id: 'excellent',\n name: 'Excellent',\n description: 'All work clearly shown with detailed explanations',\n points: 4,\n color: '#10B981'\n },\n {\n id: 'proficient',\n name: 'Proficient',\n description: 'Most work shown, good explanations',\n points: 3,\n color: '#3B82F6'\n },\n {\n id: 'developing',\n name: 'Developing',\n description: 'Some work shown, limited explanations',\n points: 2,\n color: '#F59E0B'\n },\n {\n id: 'beginning',\n name: 'Beginning',\n description: 'Little work shown, unclear process',\n points: 1,\n color: '#EF4444'\n }\n ]\n },\n {\n id: 'final-answer',\n title: 'Final Answer',\n description: 'Correct final answer with proper units/notation',\n levels: [\n {\n id: 'excellent',\n name: 'Excellent',\n description: 'Correct answer with proper units and notation',\n points: 4,\n color: '#10B981'\n },\n {\n id: 'proficient',\n name: 'Proficient',\n description: 'Correct answer, minor notation issues',\n points: 3,\n color: '#3B82F6'\n },\n {\n id: 'developing',\n name: 'Developing',\n description: 'Answer close to correct, some notation errors',\n points: 2,\n color: '#F59E0B'\n },\n {\n id: 'beginning',\n name: 'Beginning',\n description: 'Incorrect answer or missing units',\n points: 1,\n color: '#EF4444'\n }\n ]\n }\n ]\n })\n }\n });\n\n // 8. Create grading boundaries\n const mathGradingBoundary = await prisma.gradingBoundary.create({\n data: {\n classId: mathClass.id,\n structured: JSON.stringify({\n name: 'AP Calculus BC Grading Scale',\n boundaries: [\n {\n id: 'a-plus',\n grade: 'A+',\n minPercentage: 97,\n maxPercentage: 100,\n description: 'Exceptional mastery of all concepts',\n color: '#059669'\n },\n {\n id: 'a',\n grade: 'A',\n minPercentage: 93,\n maxPercentage: 96,\n description: 'Strong mastery of concepts',\n color: '#10B981'\n },\n {\n id: 'a-minus',\n grade: 'A-',\n minPercentage: 90,\n maxPercentage: 92,\n description: 'Good mastery with minor gaps',\n color: '#34D399'\n },\n {\n id: 'b-plus',\n grade: 'B+',\n minPercentage: 87,\n maxPercentage: 89,\n description: 'Above average understanding',\n color: '#1D4ED8'\n },\n {\n id: 'b',\n grade: 'B',\n minPercentage: 83,\n maxPercentage: 86,\n description: 'Solid understanding of most concepts',\n color: '#3B82F6'\n },\n {\n id: 'b-minus',\n grade: 'B-',\n minPercentage: 80,\n maxPercentage: 82,\n description: 'Adequate understanding with some gaps',\n color: '#60A5FA'\n },\n {\n id: 'c-plus',\n grade: 'C+',\n minPercentage: 77,\n maxPercentage: 79,\n description: 'Basic understanding, needs improvement',\n color: '#D97706'\n },\n {\n id: 'c',\n grade: 'C',\n minPercentage: 73,\n maxPercentage: 76,\n description: 'Minimal acceptable understanding',\n color: '#F59E0B'\n },\n {\n id: 'c-minus',\n grade: 'C-',\n minPercentage: 70,\n maxPercentage: 72,\n description: 'Below average, significant gaps',\n color: '#FBBF24'\n },\n {\n id: 'd',\n grade: 'D',\n minPercentage: 60,\n maxPercentage: 69,\n description: 'Poor understanding, major deficiencies',\n color: '#F87171'\n },\n {\n id: 'f',\n grade: 'F',\n minPercentage: 0,\n maxPercentage: 59,\n description: 'Inadequate understanding, does not meet standards',\n color: '#EF4444'\n }\n ]\n })\n }\n });\n\n // 9. Create realistic assignments (more for Calc BC)\n const now = new Date();\n const yesterday = new Date(now.getTime() - 24 * 60 * 60 * 1000);\n const tomorrow = new Date(now.getTime() + 24 * 60 * 60 * 1000);\n const nextWeek = new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000);\n const nextMonth = new Date(now.getTime() + 30 * 24 * 60 * 60 * 1000);\n const lastWeek = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);\n\n const assignments = await Promise.all([\n // Biology assignments\n prisma.assignment.create({\n data: {\n title: 'Cell Structure Lab Report',\n instructions: 'Complete the microscopy lab and write a detailed report on your observations of plant and animal cells. Include labeled diagrams and compare/contrast the structures you observed.',\n dueDate: nextWeek,\n teacherId: teachers[0].id,\n classId: biologyClass.id,\n sectionId: bioSections[1].id,\n type: 'LAB',\n maxGrade: 100,\n weight: 1.5,\n markSchemeId: bioMarkScheme.id,\n }\n }),\n prisma.assignment.create({\n data: {\n title: 'Genetics Problem Set',\n instructions: 'Solve the genetics problems on pages 234-237. Show all work including Punnett squares and probability calculations.',\n dueDate: tomorrow,\n teacherId: teachers[0].id,\n classId: biologyClass.id,\n sectionId: bioSections[3].id,\n type: 'HOMEWORK',\n maxGrade: 50,\n weight: 1.0,\n markSchemeId: bioMarkScheme.id,\n }\n }),\n prisma.assignment.create({\n data: {\n title: 'Evolution Essay',\n instructions: 'Write a 5-page essay on the evidence for evolution. Use at least 5 scientific sources and cite them properly.',\n dueDate: nextMonth,\n teacherId: teachers[0].id,\n classId: biologyClass.id,\n type: 'ESSAY',\n maxGrade: 100,\n weight: 2.0,\n markSchemeId: bioMarkScheme.id,\n }\n }),\n \n // Math assignments (expanded for demo)\n prisma.assignment.create({\n data: {\n title: 'Limits and Continuity Test',\n instructions: 'Comprehensive test covering limits, continuity, and the Intermediate Value Theorem. Calculators allowed for Section B only.',\n dueDate: lastWeek, // Already completed\n teacherId: teachers[1].id,\n classId: mathClass.id,\n sectionId: mathSections[0].id,\n type: 'TEST',\n maxGrade: 100,\n weight: 2.5,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n graded: true,\n }\n }),\n prisma.assignment.create({\n data: {\n title: 'Limits Practice Problems',\n instructions: 'Complete problems 1-25 on page 89. Focus on algebraic manipulation and graphical analysis.',\n dueDate: yesterday, // Just submitted\n teacherId: teachers[1].id,\n classId: mathClass.id,\n sectionId: mathSections[0].id,\n type: 'HOMEWORK',\n maxGrade: 25,\n weight: 1.0,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n }\n }),\n prisma.assignment.create({\n data: {\n title: 'Derivative Applications Quiz',\n instructions: 'Quiz covering related rates, optimization, and curve sketching.',\n dueDate: new Date(now.getTime() + 5 * 24 * 60 * 60 * 1000),\n teacherId: teachers[1].id,\n classId: mathClass.id,\n sectionId: mathSections[1].id,\n type: 'QUIZ',\n maxGrade: 75,\n weight: 1.5,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n }\n }),\n prisma.assignment.create({\n data: {\n title: 'Integration Techniques Homework',\n instructions: 'Complete problems 1-30 on pages 156-158. Practice integration by parts, substitution, and partial fractions.',\n dueDate: new Date(now.getTime() + 3 * 24 * 60 * 60 * 1000),\n teacherId: teachers[1].id,\n classId: mathClass.id,\n sectionId: mathSections[2].id,\n type: 'HOMEWORK',\n maxGrade: 30,\n weight: 1.0,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n }\n }),\n prisma.assignment.create({\n data: {\n title: 'AP Practice Test - Derivatives',\n instructions: 'Complete this practice AP exam focusing on derivatives and their applications. Time limit: 90 minutes.',\n dueDate: new Date(now.getTime() + 10 * 24 * 60 * 60 * 1000),\n teacherId: teachers[1].id,\n classId: mathClass.id,\n sectionId: mathSections[1].id,\n type: 'TEST',\n maxGrade: 108, // AP style scoring\n weight: 2.5,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n }\n }),\n prisma.assignment.create({\n data: {\n title: 'Calculus Project: Real-World Applications',\n instructions: 'Choose a real-world scenario and create a presentation showing how calculus is used. Include derivatives, integrals, and optimization. 10-minute presentation required.',\n dueDate: new Date(now.getTime() + 21 * 24 * 60 * 60 * 1000),\n teacherId: teachers[1].id,\n classId: mathClass.id,\n type: 'PROJECT',\n maxGrade: 150,\n weight: 3.0,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n }\n }),\n ]);\n\n // 10. Create comprehensive submissions for all students and assignments\n const submissionsToCreate: any[] = [];\n \n // Helper function to generate realistic grades based on assignment type and student performance\n const generateGrade = (maxGrade: number, studentIndex: number, assignmentType: string) => {\n // Create some variation in student performance\n const basePerformance = [0.92, 0.88, 0.85, 0.90, 0.82, 0.87, 0.91, 0.84, 0.89, 0.86, 0.83, 0.88]; // Different performance levels\n const performance = basePerformance[studentIndex % basePerformance.length];\n \n // Adjust based on assignment type\n let multiplier = performance;\n if (assignmentType === 'TEST') multiplier -= 0.05; // Tests are harder\n if (assignmentType === 'QUIZ') multiplier -= 0.02; // Quizzes slightly harder\n if (assignmentType === 'HOMEWORK') multiplier += 0.03; // Homework gets better grades\n \n // Add some randomness\n const randomFactor = (Math.random() - 0.5) * 0.1; // ±5%\n const finalGrade = Math.round(maxGrade * (multiplier + randomFactor));\n \n return Math.max(0, Math.min(maxGrade, finalGrade)); // Clamp between 0 and maxGrade\n };\n\n // Generate teacher comments based on grade\n const generateComment = (grade: number, maxGrade: number, assignmentType: string) => {\n const percentage = (grade / maxGrade) * 100;\n const comments = {\n excellent: [\n 'Excellent work! Your understanding of the concepts is clear.',\n 'Outstanding performance. Keep up the great work!',\n 'Impressive analysis and problem-solving approach.',\n 'Perfect execution. Your work demonstrates mastery of the material.'\n ],\n good: [\n 'Good work overall. Minor areas for improvement noted.',\n 'Solid understanding demonstrated. Watch calculation accuracy.',\n 'Well done! A few small errors but good conceptual grasp.',\n 'Nice job. Consider reviewing the highlighted sections.'\n ],\n average: [\n 'Adequate work. Please review the concepts we discussed in class.',\n 'Shows basic understanding but needs more practice.',\n 'Fair attempt. Come see me during office hours for extra help.',\n 'Meets expectations. Focus on showing more detailed work.'\n ],\n needs_improvement: [\n 'Needs significant improvement. Please schedule a meeting to discuss.',\n 'Below expectations. Additional practice and review required.',\n 'Struggling with key concepts. Let\\'s work together to improve.',\n 'Requires more effort and attention to detail.'\n ]\n };\n\n let category: keyof typeof comments;\n if (percentage >= 90) category = 'excellent';\n else if (percentage >= 80) category = 'good';\n else if (percentage >= 70) category = 'average';\n else category = 'needs_improvement';\n\n return comments[category][Math.floor(Math.random() * comments[category].length)];\n };\n\n // Create submissions for Biology assignments (students 0-7)\n for (let i = 0; i < 3; i++) { // First 3 assignments are Biology\n const assignment = assignments[i];\n const maxGrade = assignment.maxGrade || 100; // Default to 100 if null\n for (let j = 0; j < 8; j++) { // 8 students in Biology\n const student = students[j];\n const grade = generateGrade(maxGrade, j, assignment.type);\n const isSubmitted = Math.random() > 0.1; // 90% submission rate\n const isGraded = i < 2; // First 2 assignments are graded\n \n submissionsToCreate.push({\n assignmentId: assignment.id,\n studentId: student.id,\n submitted: isSubmitted,\n submittedAt: isSubmitted ? new Date(assignment.dueDate.getTime() - Math.random() * 24 * 60 * 60 * 1000) : null,\n gradeReceived: isGraded && isSubmitted ? grade : null,\n teacherComments: isGraded && isSubmitted ? generateComment(grade, maxGrade, assignment.type) : null,\n returned: isGraded && isSubmitted,\n });\n }\n }\n\n // Create submissions for Math assignments (students 4-11) - 8 students\n for (let i = 3; i < assignments.length; i++) { // Math assignments start at index 3\n const assignment = assignments[i];\n const maxGrade = assignment.maxGrade || 100; // Default to 100 if null\n for (let j = 4; j < 12; j++) { // Students 4-11 are in Math class\n const student = students[j];\n const grade = generateGrade(maxGrade, j, assignment.type);\n \n // Determine submission and grading status based on due date\n const isOverdue = assignment.dueDate < now;\n const isDueSoon = assignment.dueDate < tomorrow;\n const isSubmitted = isOverdue || (isDueSoon && Math.random() > 0.2) || Math.random() > 0.15; // Higher submission rate for math\n const isGraded = isOverdue && assignment.graded; // Only grade overdue assignments\n \n submissionsToCreate.push({\n assignmentId: assignment.id,\n studentId: student.id,\n submitted: isSubmitted,\n submittedAt: isSubmitted ? new Date(assignment.dueDate.getTime() - Math.random() * 48 * 60 * 60 * 1000) : null,\n gradeReceived: isGraded && isSubmitted ? grade : null,\n teacherComments: isGraded && isSubmitted ? generateComment(grade, maxGrade, assignment.type) : null,\n returned: isGraded && isSubmitted,\n rubricState: isGraded && isSubmitted ? JSON.stringify({\n criteria: [\n { name: 'Mathematical Accuracy', score: Math.round(grade * 0.5), maxScore: Math.round(maxGrade * 0.5) },\n { name: 'Problem-Solving Strategy', score: Math.round(grade * 0.25), maxScore: Math.round(maxGrade * 0.25) },\n { name: 'Work Shown', score: Math.round(grade * 0.15), maxScore: Math.round(maxGrade * 0.15) },\n { name: 'Final Answer', score: Math.round(grade * 0.1), maxScore: Math.round(maxGrade * 0.1) }\n ]\n }) : null,\n });\n }\n }\n\n // Create all submissions\n await Promise.all(submissionsToCreate.map(submission => \n prisma.submission.create({ data: submission })\n ));\n\n // 11. Create announcements\n await Promise.all([\n prisma.announcement.create({\n data: {\n remarks: 'Reminder: Lab safety quiz next Tuesday. Please review the safety protocols we discussed in class.',\n teacherId: teachers[0].id,\n classId: biologyClass.id,\n createdAt: new Date(now.getTime() - 24 * 60 * 60 * 1000),\n }\n }),\n prisma.announcement.create({\n data: {\n remarks: 'Great job on the recent quiz, everyone! The class average was 87%. Keep up the excellent work!',\n teacherId: teachers[1].id,\n classId: mathClass.id,\n createdAt: new Date(now.getTime() - 6 * 60 * 60 * 1000),\n }\n }),\n prisma.announcement.create({\n data: {\n remarks: 'Don\\'t forget: Parent-teacher conferences are next week. Sign-up sheets are available in the main office.',\n teacherId: teachers[2].id,\n classId: englishClass.id,\n createdAt: new Date(now.getTime() - 12 * 60 * 60 * 1000),\n }\n }),\n ]);\n\n // 12. Create events/calendar items (lots for Michael Chen's week of Oct 7)\n const oct7 = new Date('2025-10-07T08:00:00');\n const oct8 = new Date('2025-10-08T08:00:00');\n const oct9 = new Date('2025-10-09T08:00:00');\n const oct10 = new Date('2025-10-10T08:00:00');\n const oct11 = new Date('2025-10-11T08:00:00');\n \n await Promise.all([\n // Monday Oct 7 - Michael Chen's busy day\n prisma.event.create({\n data: {\n name: 'AP Calculus BC - Period 2',\n startTime: new Date('2025-10-07T09:15:00'),\n endTime: new Date('2025-10-07T10:05:00'),\n location: 'Room 156',\n remarks: 'Derivatives unit test review',\n userId: teachers[1].id,\n classId: mathClass.id,\n color: '#3B82F6',\n }\n }),\n prisma.event.create({\n data: {\n name: 'Department Head Meeting',\n startTime: new Date('2025-10-07T10:30:00'),\n endTime: new Date('2025-10-07T11:30:00'),\n location: 'Conference Room A',\n remarks: 'Monthly math department meeting - curriculum planning',\n userId: teachers[1].id,\n color: '#8B5CF6',\n }\n }),\n prisma.event.create({\n data: {\n name: 'AP Statistics - Period 5',\n startTime: new Date('2025-10-07T13:45:00'),\n endTime: new Date('2025-10-07T14:35:00'),\n location: 'Room 156',\n remarks: 'Hypothesis testing introduction',\n userId: teachers[1].id,\n color: '#3B82F6',\n }\n }),\n prisma.event.create({\n data: {\n name: 'Parent Conference - Williams Family',\n startTime: new Date('2025-10-07T15:00:00'),\n endTime: new Date('2025-10-07T15:30:00'),\n location: 'Room 156',\n remarks: 'Discuss Sophia\\'s progress in AP Calculus',\n userId: teachers[1].id,\n color: '#F59E0B',\n }\n }),\n prisma.event.create({\n data: {\n name: 'Math Tutoring Session',\n startTime: new Date('2025-10-07T15:45:00'),\n endTime: new Date('2025-10-07T16:45:00'),\n location: 'Room 156',\n remarks: 'Extra help for struggling students',\n userId: teachers[1].id,\n color: '#10B981',\n }\n }),\n\n // Tuesday Oct 8\n prisma.event.create({\n data: {\n name: 'AP Calculus BC - Period 2',\n startTime: new Date('2025-10-08T09:15:00'),\n endTime: new Date('2025-10-08T10:05:00'),\n location: 'Room 156',\n remarks: 'Derivatives unit test',\n userId: teachers[1].id,\n classId: mathClass.id,\n color: '#3B82F6',\n }\n }),\n prisma.event.create({\n data: {\n name: 'Faculty Meeting',\n startTime: new Date('2025-10-08T12:00:00'),\n endTime: new Date('2025-10-08T13:00:00'),\n location: 'Main Auditorium',\n remarks: 'All-school faculty meeting',\n userId: teachers[1].id,\n color: '#6B7280',\n }\n }),\n prisma.event.create({\n data: {\n name: 'AP Statistics - Period 5',\n startTime: new Date('2025-10-08T13:45:00'),\n endTime: new Date('2025-10-08T14:35:00'),\n location: 'Room 156',\n remarks: 'Hypothesis testing practice problems',\n userId: teachers[1].id,\n color: '#3B82F6',\n }\n }),\n prisma.event.create({\n data: {\n name: 'Grade Level Team Meeting',\n startTime: new Date('2025-10-08T15:00:00'),\n endTime: new Date('2025-10-08T16:00:00'),\n location: 'Room 201',\n remarks: '11th grade team coordination',\n userId: teachers[1].id,\n color: '#8B5CF6',\n }\n }),\n\n // Wednesday Oct 9\n prisma.event.create({\n data: {\n name: 'AP Calculus BC - Period 2',\n startTime: new Date('2025-10-09T09:15:00'),\n endTime: new Date('2025-10-09T10:05:00'),\n location: 'Room 156',\n remarks: 'Integration introduction',\n userId: teachers[1].id,\n classId: mathClass.id,\n color: '#3B82F6',\n }\n }),\n prisma.event.create({\n data: {\n name: 'Professional Development',\n startTime: new Date('2025-10-09T11:00:00'),\n endTime: new Date('2025-10-09T12:30:00'),\n location: 'Library Conference Room',\n remarks: 'Technology in Mathematics Education workshop',\n userId: teachers[1].id,\n color: '#059669',\n }\n }),\n prisma.event.create({\n data: {\n name: 'AP Statistics - Period 5',\n startTime: new Date('2025-10-09T13:45:00'),\n endTime: new Date('2025-10-09T14:35:00'),\n location: 'Room 156',\n remarks: 'Chi-square tests',\n userId: teachers[1].id,\n color: '#3B82F6',\n }\n }),\n prisma.event.create({\n data: {\n name: 'Student Council Advisory',\n startTime: new Date('2025-10-09T15:00:00'),\n endTime: new Date('2025-10-09T16:00:00'),\n location: 'Room 105',\n remarks: 'Advisor meeting for student council',\n userId: teachers[1].id,\n color: '#DC2626',\n }\n }),\n\n // Thursday Oct 10\n prisma.event.create({\n data: {\n name: 'AP Calculus BC - Period 2',\n startTime: new Date('2025-10-10T09:15:00'),\n endTime: new Date('2025-10-10T10:05:00'),\n location: 'Room 156',\n remarks: 'Integration by substitution',\n userId: teachers[1].id,\n classId: mathClass.id,\n color: '#3B82F6',\n }\n }),\n prisma.event.create({\n data: {\n name: 'Curriculum Committee',\n startTime: new Date('2025-10-10T11:00:00'),\n endTime: new Date('2025-10-10T12:00:00'),\n location: 'Principal\\'s Office',\n remarks: 'Review new AP curriculum standards',\n userId: teachers[1].id,\n color: '#8B5CF6',\n }\n }),\n prisma.event.create({\n data: {\n name: 'AP Statistics - Period 5',\n startTime: new Date('2025-10-10T13:45:00'),\n endTime: new Date('2025-10-10T14:35:00'),\n location: 'Room 156',\n remarks: 'ANOVA introduction',\n userId: teachers[1].id,\n color: '#3B82F6',\n }\n }),\n prisma.event.create({\n data: {\n name: 'Parent Conference - Anderson Family',\n startTime: new Date('2025-10-10T15:00:00'),\n endTime: new Date('2025-10-10T15:30:00'),\n location: 'Room 156',\n remarks: 'Discuss Ethan\\'s improvement strategies',\n userId: teachers[1].id,\n color: '#F59E0B',\n }\n }),\n prisma.event.create({\n data: {\n name: 'Math Club Meeting',\n startTime: new Date('2025-10-10T15:45:00'),\n endTime: new Date('2025-10-10T16:45:00'),\n location: 'Room 156',\n remarks: 'Preparing for state math competition',\n userId: teachers[1].id,\n color: '#10B981',\n }\n }),\n\n // Friday Oct 11\n prisma.event.create({\n data: {\n name: 'AP Calculus BC - Period 2',\n startTime: new Date('2025-10-11T09:15:00'),\n endTime: new Date('2025-10-11T10:05:00'),\n location: 'Room 156',\n remarks: 'Integration by parts',\n userId: teachers[1].id,\n classId: mathClass.id,\n color: '#3B82F6',\n }\n }),\n prisma.event.create({\n data: {\n name: 'IEP Meeting - Student Support',\n startTime: new Date('2025-10-11T10:30:00'),\n endTime: new Date('2025-10-11T11:30:00'),\n location: 'Special Services Office',\n remarks: 'Individualized Education Plan review',\n userId: teachers[1].id,\n color: '#F59E0B',\n }\n }),\n prisma.event.create({\n data: {\n name: 'AP Statistics - Period 5',\n startTime: new Date('2025-10-11T13:45:00'),\n endTime: new Date('2025-10-11T14:35:00'),\n location: 'Room 156',\n remarks: 'ANOVA practice and review',\n userId: teachers[1].id,\n color: '#3B82F6',\n }\n }),\n prisma.event.create({\n data: {\n name: 'Weekend Prep Session',\n startTime: new Date('2025-10-11T15:00:00'),\n endTime: new Date('2025-10-11T17:00:00'),\n location: 'Room 156',\n remarks: 'Voluntary AP exam prep session',\n userId: teachers[1].id,\n color: '#059669',\n }\n }),\n\n // Some events for other teachers too\n prisma.event.create({\n data: {\n name: 'Cell Biology Lab',\n startTime: new Date(now.getTime() + 2 * 24 * 60 * 60 * 1000),\n endTime: new Date(now.getTime() + 2 * 24 * 60 * 60 * 1000 + 90 * 60 * 1000), // 90 minutes\n location: 'Science Lab Room 204',\n remarks: 'Bring lab notebooks and safety goggles',\n userId: teachers[0].id,\n classId: biologyClass.id,\n color: '#10B981',\n }\n }),\n prisma.event.create({\n data: {\n name: 'Poetry Reading',\n startTime: new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000),\n endTime: new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000 + 60 * 60 * 1000),\n location: 'Library',\n remarks: 'Students will present their original poetry',\n userId: teachers[2].id,\n classId: englishClass.id,\n color: '#8B5CF6',\n }\n }),\n ]);\n\n // 13. Create attendance records\n const attendanceDate = new Date(now.getTime() - 24 * 60 * 60 * 1000);\n await Promise.all([\n prisma.attendance.create({\n data: {\n date: attendanceDate,\n classId: biologyClass.id,\n present: { connect: students.slice(0, 6).map(s => ({ id: s.id })) },\n late: { connect: [{ id: students[6].id }] },\n absent: { connect: [{ id: students[7].id }] },\n }\n }),\n prisma.attendance.create({\n data: {\n date: attendanceDate,\n classId: mathClass.id,\n present: { connect: students.slice(4, 11).map(s => ({ id: s.id })) },\n late: { connect: [{ id: students[11].id }] },\n }\n }),\n ]);\n\n // 14. Create notifications for realistic teacher experience\n await Promise.all([\n // For main teacher (Sarah Johnson)\n addNotification(teachers[0].id, 'New Submission', 'Alex Martinez submitted Genetics Problem Set'),\n addNotification(teachers[0].id, 'Grade Reminder', 'You have 3 assignments pending grading'),\n addNotification(teachers[0].id, 'Lab Equipment', 'Microscopes for tomorrow\\'s lab are ready in Room 204'),\n addNotification(teachers[0].id, 'Parent Contact', 'Mrs. Williams requested a meeting about Sophia\\'s progress'),\n \n // For students\n addNotification(students[0].id, 'Assignment Graded', 'Your Genetics Problem Set has been graded: 45/50'),\n addNotification(students[1].id, 'Assignment Graded', 'Your Genetics Problem Set has been graded: 48/50'),\n addNotification(students[2].id, 'Assignment Due', 'Cell Structure Lab Report is due in 3 days'),\n addNotification(students[3].id, 'Class Announcement', 'New announcement in AP Biology'),\n ]);\n\n // 15. Create some lab chats for AI demo\n const labChatContext = JSON.stringify({\n subject: 'Biology',\n topic: 'Cell Structure and Function',\n gradeLevel: '11th Grade AP',\n difficulty: 'Advanced',\n objectives: [\n 'Understand prokaryotic vs eukaryotic cell structures',\n 'Identify organelles and their functions',\n 'Compare plant and animal cells'\n ],\n standards: ['NGSS HS-LS1-1', 'NGSS HS-LS1-2'],\n duration: '2 weeks',\n assessmentType: 'Lab report and quiz'\n });\n\n // Create conversation for lab chat\n const labConversation = await prisma.conversation.create({\n data: {\n type: 'GROUP',\n name: 'Lab: Cell Structure Materials',\n displayInChat: false,\n }\n });\n\n // Add teacher to conversation\n await prisma.conversationMember.create({\n data: {\n userId: teachers[0].id,\n conversationId: labConversation.id,\n role: 'ADMIN',\n }\n });\n\n // Create lab chat\n await prisma.labChat.create({\n data: {\n title: 'Cell Structure Teaching Materials',\n context: labChatContext,\n classId: biologyClass.id,\n conversationId: labConversation.id,\n createdById: teachers[0].id,\n }\n });\n\n // 16. Create chat conversations and messages\n // Teacher-to-teacher conversations\n const teacherConversation1 = await prisma.conversation.create({\n data: {\n type: 'GROUP',\n name: 'Math Department Chat',\n displayInChat: true,\n }\n });\n\n // Add all teachers to department chat\n await Promise.all([\n prisma.conversationMember.create({\n data: {\n userId: teachers[0].id, // Sarah (Biology)\n conversationId: teacherConversation1.id,\n role: 'MEMBER',\n }\n }),\n prisma.conversationMember.create({\n data: {\n userId: teachers[1].id, // Michael (Math)\n conversationId: teacherConversation1.id,\n role: 'ADMIN',\n }\n }),\n prisma.conversationMember.create({\n data: {\n userId: teachers[2].id, // Emma (English)\n conversationId: teacherConversation1.id,\n role: 'MEMBER',\n }\n }),\n ]);\n\n // Teacher-student conversations\n const studentConversation1 = await prisma.conversation.create({\n data: {\n type: 'DM',\n name: null,\n displayInChat: true,\n }\n });\n\n await Promise.all([\n prisma.conversationMember.create({\n data: {\n userId: teachers[1].id, // Michael Chen\n conversationId: studentConversation1.id,\n role: 'MEMBER',\n }\n }),\n prisma.conversationMember.create({\n data: {\n userId: students[4].id, // Ethan Anderson\n conversationId: studentConversation1.id,\n role: 'MEMBER',\n }\n }),\n ]);\n\n const studentConversation2 = await prisma.conversation.create({\n data: {\n type: 'DM',\n name: null,\n displayInChat: true,\n }\n });\n\n await Promise.all([\n prisma.conversationMember.create({\n data: {\n userId: teachers[1].id, // Michael Chen\n conversationId: studentConversation2.id,\n role: 'MEMBER',\n }\n }),\n prisma.conversationMember.create({\n data: {\n userId: students[1].id, // Sophia Williams\n conversationId: studentConversation2.id,\n role: 'MEMBER',\n }\n }),\n ]);\n\n // Create messages in conversations\n const chatMessages = [\n // Teacher department chat messages\n {\n content: 'Hey everyone! Hope you all had a great weekend. Quick reminder about the faculty meeting tomorrow at noon.',\n senderId: teachers[1].id,\n conversationId: teacherConversation1.id,\n createdAt: new Date('2024-10-07T07:30:00'),\n },\n {\n content: 'Thanks for the reminder, Michael! I\\'ll be there. Are we discussing the new curriculum standards?',\n senderId: teachers[0].id,\n conversationId: teacherConversation1.id,\n createdAt: new Date('2024-10-07T07:45:00'),\n },\n {\n content: 'Yes, among other things. Also wanted to coordinate on the parent-teacher conferences next week.',\n senderId: teachers[1].id,\n conversationId: teacherConversation1.id,\n createdAt: new Date('2024-10-07T08:00:00'),\n },\n {\n content: 'Perfect timing! I have several parents asking about their kids\\' progress in my English classes.',\n senderId: teachers[2].id,\n conversationId: teacherConversation1.id,\n createdAt: new Date('2024-10-07T08:15:00'),\n },\n {\n content: 'The integration unit is going well in AP Calc. Students seem to be grasping the concepts better this year.',\n senderId: teachers[1].id,\n conversationId: teacherConversation1.id,\n createdAt: new Date('2024-10-08T16:30:00'),\n },\n {\n content: 'That\\'s great to hear! I\\'ve been incorporating more hands-on labs in biology and seeing similar improvements.',\n senderId: teachers[0].id,\n conversationId: teacherConversation1.id,\n createdAt: new Date('2024-10-08T16:45:00'),\n },\n {\n content: 'Anyone free for coffee after school tomorrow? Would love to chat about cross-curricular projects.',\n senderId: teachers[2].id,\n conversationId: teacherConversation1.id,\n createdAt: new Date('2024-10-09T14:00:00'),\n },\n {\n content: 'I\\'m in! Math Club ends at 4:45, so anytime after 5 works for me.',\n senderId: teachers[1].id,\n conversationId: teacherConversation1.id,\n createdAt: new Date('2024-10-09T14:15:00'),\n },\n\n // Michael Chen with Ethan Anderson (struggling student)\n {\n content: 'Hi Mr. Chen, I\\'m really struggling with the integration problems from today\\'s class. Could you help explain substitution method again?',\n senderId: students[4].id,\n conversationId: studentConversation1.id,\n createdAt: new Date('2024-10-09T15:30:00'),\n },\n {\n content: 'Of course, Ethan! I\\'m glad you reached out. The key is identifying what to substitute. Can you tell me which problem you\\'re stuck on specifically?',\n senderId: teachers[1].id,\n conversationId: studentConversation1.id,\n createdAt: new Date('2024-10-09T15:45:00'),\n },\n {\n content: 'Problem #7 from the homework. I don\\'t know how to choose what u should equal.',\n senderId: students[4].id,\n conversationId: studentConversation1.id,\n createdAt: new Date('2024-10-09T16:00:00'),\n },\n {\n content: 'Great question! For u-substitution, look for a function whose derivative also appears in the integral. In #7, try setting u equal to the expression inside the parentheses. What do you get when you differentiate that?',\n senderId: teachers[1].id,\n conversationId: studentConversation1.id,\n createdAt: new Date('2024-10-09T16:15:00'),\n },\n {\n content: 'Oh! So u = 2x + 1, and du = 2dx? That means I need to adjust for the 2...',\n senderId: students[4].id,\n conversationId: studentConversation1.id,\n createdAt: new Date('2024-10-09T17:00:00'),\n },\n {\n content: 'Exactly! You\\'ve got it. Remember to substitute back at the end. Feel free to come to tutoring tomorrow if you need more practice.',\n senderId: teachers[1].id,\n conversationId: studentConversation1.id,\n createdAt: new Date('2024-10-09T17:15:00'),\n },\n {\n content: 'Thank you so much! This makes way more sense now. I\\'ll definitely come to tutoring.',\n senderId: students[4].id,\n conversationId: studentConversation1.id,\n createdAt: new Date('2024-10-09T17:30:00'),\n },\n\n // Michael Chen with Sophia Williams (high-achieving student)\n {\n content: 'Hi Mr. Chen! I finished the integration homework early. Are there any extra challenge problems I could work on?',\n senderId: students[1].id,\n conversationId: studentConversation2.id,\n createdAt: new Date('2024-10-10T19:00:00'),\n },\n {\n content: 'Sophia, I love your enthusiasm! Try problems 45-50 from chapter 6. They involve integration by parts, which we\\'ll cover next week.',\n senderId: teachers[1].id,\n conversationId: studentConversation2.id,\n createdAt: new Date('2024-10-10T19:30:00'),\n },\n {\n content: 'Perfect! I looked ahead in the textbook and the integration by parts formula looks interesting. Is it similar to the product rule for derivatives?',\n senderId: students[1].id,\n conversationId: studentConversation2.id,\n createdAt: new Date('2024-10-10T20:00:00'),\n },\n {\n content: 'You\\'re absolutely right! Integration by parts is essentially the reverse of the product rule. You have a great mathematical intuition.',\n senderId: teachers[1].id,\n conversationId: studentConversation2.id,\n createdAt: new Date('2024-10-10T20:15:00'),\n },\n {\n content: 'Also, I wanted to ask about the Math Club competition. What topics should I focus on for preparation?',\n senderId: students[1].id,\n conversationId: studentConversation2.id,\n createdAt: new Date('2024-10-11T12:00:00'),\n },\n {\n content: 'Great question! Focus on algebra, geometry, and basic calculus. I\\'ll have practice problems ready for tomorrow\\'s Math Club meeting.',\n senderId: teachers[1].id,\n conversationId: studentConversation2.id,\n createdAt: new Date('2024-10-11T12:30:00'),\n },\n ];\n\n // Create all messages\n await Promise.all(chatMessages.map(message => \n prisma.message.create({ data: message })\n ));\n\n // 16. Create file structure for classes\n await Promise.all([\n prisma.folder.create({\n data: {\n name: 'Class Files',\n classId: biologyClass.id,\n color: '#10B981',\n }\n }),\n prisma.folder.create({\n data: {\n name: 'Class Files',\n classId: mathClass.id,\n color: '#3B82F6',\n }\n }),\n prisma.folder.create({\n data: {\n name: 'Class Files',\n classId: englishClass.id,\n color: '#8B5CF6',\n }\n }),\n ]);\n\n logger.info('✅ Comprehensive demo database seeded successfully!');\n logger.info('📚 Created:');\n logger.info(' - 1 School (Riverside High School)');\n logger.info(' - 3 Teachers with detailed profiles');\n logger.info(' - 12 Students with profiles');\n logger.info(' - 3 Classes (AP Biology, AP Calculus BC, English Literature)');\n logger.info(' - 7 Course sections with color coding');\n logger.info(' - 2 Mark schemes with detailed rubrics');\n logger.info(' - 1 Grading boundary with weighted categories');\n logger.info(' - 9 Assignments (6 for Calc BC demo class)');\n logger.info(' - 64+ Student submissions with realistic grades & comments');\n logger.info(' - 3 Announcements from different teachers');\n logger.info(' - 3 Calendar events');\n logger.info(' - Attendance records with present/late/absent tracking');\n logger.info(' - 1 Lab chat for AI demo');\n logger.info(' - Multiple realistic notifications');\n logger.info(' - File organization structure');\n logger.info('');\n logger.info('🎯 AP Calculus BC Class (Demo Focus):');\n logger.info(' - 6 assignments with varied due dates');\n logger.info(' - Complete mark scheme & grading boundaries');\n logger.info(' - All 8 students have submissions to all assignments');\n logger.info(' - Realistic grade distribution & teacher feedback');\n logger.info(' - Rubric-based grading with detailed breakdowns');\n logger.info('');\n logger.info('🎬 Demo accounts:');\n logger.info(' Main Teacher: sarah.johnson@riverside.edu / demo123');\n logger.info(' Math Teacher: michael.chen@riverside.edu / demo123');\n logger.info(' English Teacher: emma.davis@riverside.edu / demo123');\n logger.info(' Student: alex.martinez@student.riverside.edu / student123');\n};\n\n(async () => {\n logger.info('Seeding database');\n await seedDatabase();\n logger.info('Database seeded');\n})();"],"names":[],"mappings":"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","debug_id":"98db11d4-da3a-5c7c-8f67-c604c660ab92"}
1
+ {"version":3,"file":"seedDatabase.js","sources":["seedDatabase.ts"],"sourceRoot":"/","sourcesContent":["import { prisma } from \"./lib/prisma.js\";\nimport { hash } from \"bcryptjs\";\nimport { logger } from \"./utils/logger.js\";\n\nexport async function clearDatabase() {\n // Delete in order to respect foreign key constraints\n // Delete notifications first (they reference users)\n logger.info('Clearing database');\n await prisma.notification.deleteMany();\n \n // Delete chat-related records\n await prisma.mention.deleteMany();\n await prisma.message.deleteMany();\n await prisma.conversationMember.deleteMany();\n await prisma.labChat.deleteMany();\n await prisma.conversation.deleteMany();\n \n // Delete other records that reference users\n await prisma.submission.deleteMany();\n await prisma.assignment.deleteMany();\n await prisma.announcement.deleteMany();\n await prisma.event.deleteMany();\n await prisma.attendance.deleteMany();\n \n // Delete class-related records\n await prisma.section.deleteMany();\n await prisma.markScheme.deleteMany();\n await prisma.gradingBoundary.deleteMany();\n await prisma.folder.deleteMany();\n await prisma.class.deleteMany();\n \n // Delete user-related records\n await prisma.session.deleteMany();\n await prisma.userProfile.deleteMany();\n \n // Delete users first\n await prisma.user.deleteMany();\n \n // Delete schools (which reference files for logos) - this will cascade delete the file references\n await prisma.school.deleteMany();\n \n // Finally delete all files\n await prisma.file.deleteMany();\n}\n\nexport async function createUser(email: string, password: string, username: string) {\n logger.debug(\"Creating user\", { email, username, password });\n\n const hashedPassword = await hash(password, 10);\n return await prisma.user.create({\n data: { email, password: hashedPassword, username, verified: true },\n });\n}\n\nexport async function addNotification(userId: string, title: string, content: string) {\n return await prisma.notification.create({\n data: {\n receiverId: userId,\n title,\n content,\n },\n });\n}\n\nexport const seedDatabase = async () => {\n await clearDatabase();\n logger.info('Cleared database');\n\n // Create comprehensive demo data for teacher demo video\n \n // 1. Create School\n const demoFile = await prisma.file.create({\n data: {\n name: 'school_logo.png',\n path: 'logos/demo_school.png',\n type: 'image/png',\n size: 15000,\n }\n });\n\n const school = await prisma.school.create({\n data: {\n name: 'Riverside High School',\n logoId: demoFile.id,\n subdomain: 'riverside',\n }\n });\n\n // 2. Create Teachers\n const teachers = await Promise.all([\n createUser('sarah.johnson@riverside.edu', 'demo123', 'sarah.johnson'),\n createUser('michael.chen@riverside.edu', 'demo123', 'michael.chen'),\n createUser('emma.davis@riverside.edu', 'demo123', 'emma.davis'),\n ]);\n\n // 3. Create Students (realistic names)\n const students = await Promise.all([\n createUser('alex.martinez@student.rverside.eidu', 'student123', 'alex.martinez'),\n createUser('sophia.williams@student.riverside.edu', 'student123', 'sophia.williams'),\n createUser('james.brown@student.riverside.edu', 'student123', 'james.brown'),\n createUser('olivia.taylor@student.riverside.edu', 'student123', 'olivia.taylor'),\n createUser('ethan.anderson@student.riverside.edu', 'student123', 'ethan.anderson'),\n createUser('ava.thomas@student.riverside.edu', 'student123', 'ava.thomas'),\n createUser('noah.jackson@student.riverside.edu', 'student123', 'noah.jackson'),\n createUser('isabella.white@student.riverside.edu', 'student123', 'isabella.white'),\n createUser('liam.harris@student.riverside.edu', 'student123', 'liam.harris'),\n createUser('mia.clark@student.riverside.edu', 'student123', 'mia.clark'),\n createUser('lucas.lewis@student.riverside.edu', 'student123', 'lucas.lewis'),\n createUser('charlotte.walker@student.riverside.edu', 'student123', 'charlotte.walker'),\n ]);\n\n // 4. Create User Profiles\n await Promise.all([\n prisma.userProfile.create({\n data: {\n userId: teachers[0].id,\n displayName: 'Dr. Sarah Johnson',\n bio: 'Biology teacher with 15 years of experience. Passionate about making science accessible to all students.',\n location: 'Riverside, CA',\n website: 'https://sarahjohnson-bio.com',\n }\n }),\n prisma.userProfile.create({\n data: {\n userId: teachers[1].id,\n displayName: 'Mr. Michael Chen',\n bio: 'Mathematics teacher and department head. Specializes in AP Calculus and Statistics.',\n location: 'Riverside, CA',\n }\n }),\n prisma.userProfile.create({\n data: {\n userId: teachers[2].id,\n displayName: 'Ms. Emma Davis',\n bio: 'English Literature teacher. Loves fostering creative writing and critical thinking.',\n location: 'Riverside, CA',\n }\n }),\n ]);\n\n // Add profiles for some students\n await Promise.all(students.slice(0, 6).map((student, index) => {\n const names = ['Alex Martinez', 'Sophia Williams', 'James Brown', 'Olivia Taylor', 'Ethan Anderson', 'Ava Thomas'];\n return prisma.userProfile.create({\n data: {\n userId: student.id,\n displayName: names[index],\n bio: `Grade 11 student at Riverside High School.`,\n }\n });\n }));\n\n // 5. Create Classes with realistic subjects\n const biologyClass = await prisma.class.create({\n data: {\n name: 'AP Biology',\n subject: 'Biology',\n section: 'Period 3',\n color: '#10B981',\n syllabus: 'Advanced Placement Biology covering molecular biology, genetics, evolution, ecology, and more.',\n schoolId: school.id,\n teachers: { connect: { id: teachers[0].id } },\n students: { connect: students.slice(0, 8).map(s => ({ id: s.id })) },\n },\n });\n\n const mathClass = await prisma.class.create({\n data: {\n name: 'AP Calculus BC',\n subject: 'Mathematics',\n section: 'Period 2',\n color: '#3B82F6',\n syllabus: 'Advanced calculus including limits, derivatives, integrals, and series.',\n schoolId: school.id,\n teachers: { connect: { id: teachers[1].id } },\n students: { connect: students.slice(4, 12).map(s => ({ id: s.id })) },\n },\n });\n\n const englishClass = await prisma.class.create({\n data: {\n name: 'English Literature',\n subject: 'English',\n section: 'Period 1',\n color: '#8B5CF6',\n syllabus: 'Study of classic and contemporary literature with focus on analysis and writing.',\n schoolId: school.id,\n teachers: { connect: { id: teachers[2].id } },\n students: { connect: students.slice(0, 10).map(s => ({ id: s.id })) },\n },\n });\n\n // 6. Create Sections for organization\n const bioSections = await Promise.all([\n prisma.section.create({\n data: { name: 'Unit 1: Chemistry of Life', classId: biologyClass.id, color: '#EF4444', order: 1 }\n }),\n prisma.section.create({\n data: { name: 'Unit 2: Cell Structure', classId: biologyClass.id, color: '#F97316', order: 2 }\n }),\n prisma.section.create({\n data: { name: 'Unit 3: Cellular Processes', classId: biologyClass.id, color: '#EAB308', order: 3 }\n }),\n prisma.section.create({\n data: { name: 'Unit 4: Genetics', classId: biologyClass.id, color: '#22C55E', order: 4 }\n }),\n ]);\n\n const mathSections = await Promise.all([\n prisma.section.create({\n data: { name: 'Limits and Continuity', classId: mathClass.id, color: '#3B82F6', order: 1 }\n }),\n prisma.section.create({\n data: { name: 'Derivatives', classId: mathClass.id, color: '#6366F1', order: 2 }\n }),\n prisma.section.create({\n data: { name: 'Integrals', classId: mathClass.id, color: '#8B5CF6', order: 3 }\n }),\n ]);\n\n // 7. Create mark schemes first\n const bioMarkScheme = await prisma.markScheme.create({\n data: {\n classId: biologyClass.id,\n structured: JSON.stringify({\n name: 'Biology Assessment Rubric',\n criteria: [\n {\n id: 'scientific-accuracy',\n title: 'Scientific Accuracy',\n description: 'Correct use of scientific terminology and concepts',\n levels: [\n {\n id: 'excellent',\n name: 'Excellent',\n description: 'All scientific terms and concepts used correctly with precision',\n points: 4,\n color: '#10B981'\n },\n {\n id: 'proficient',\n name: 'Proficient',\n description: 'Most scientific terms and concepts used correctly',\n points: 3,\n color: '#3B82F6'\n },\n {\n id: 'developing',\n name: 'Developing',\n description: 'Some scientific terms used correctly, minor errors present',\n points: 2,\n color: '#F59E0B'\n },\n {\n id: 'beginning',\n name: 'Beginning',\n description: 'Limited use of scientific terminology, significant errors',\n points: 1,\n color: '#EF4444'\n }\n ]\n },\n {\n id: 'analysis-reasoning',\n title: 'Analysis & Reasoning',\n description: 'Quality of analysis and logical reasoning',\n levels: [\n {\n id: 'excellent',\n name: 'Excellent',\n description: 'Clear, sophisticated analysis with logical connections',\n points: 4,\n color: '#10B981'\n },\n {\n id: 'proficient',\n name: 'Proficient',\n description: 'Good analysis with mostly logical reasoning',\n points: 3,\n color: '#3B82F6'\n },\n {\n id: 'developing',\n name: 'Developing',\n description: 'Basic analysis with some logical gaps',\n points: 2,\n color: '#F59E0B'\n },\n {\n id: 'beginning',\n name: 'Beginning',\n description: 'Limited analysis, unclear reasoning',\n points: 1,\n color: '#EF4444'\n }\n ]\n },\n {\n id: 'communication',\n title: 'Communication',\n description: 'Clear writing and proper formatting',\n levels: [\n {\n id: 'excellent',\n name: 'Excellent',\n description: 'Clear, well-organized writing with proper format',\n points: 4,\n color: '#10B981'\n },\n {\n id: 'proficient',\n name: 'Proficient',\n description: 'Generally clear writing with good organization',\n points: 3,\n color: '#3B82F6'\n },\n {\n id: 'developing',\n name: 'Developing',\n description: 'Adequate writing with some organizational issues',\n points: 2,\n color: '#F59E0B'\n },\n {\n id: 'beginning',\n name: 'Beginning',\n description: 'Unclear writing, poor organization',\n points: 1,\n color: '#EF4444'\n }\n ]\n },\n {\n id: 'evidence-examples',\n title: 'Evidence & Examples',\n description: 'Use of relevant examples and evidence',\n levels: [\n {\n id: 'excellent',\n name: 'Excellent',\n description: 'Strong, relevant examples that enhance understanding',\n points: 4,\n color: '#10B981'\n },\n {\n id: 'proficient',\n name: 'Proficient',\n description: 'Good examples that support main points',\n points: 3,\n color: '#3B82F6'\n },\n {\n id: 'developing',\n name: 'Developing',\n description: 'Some examples provided, may lack relevance',\n points: 2,\n color: '#F59E0B'\n },\n {\n id: 'beginning',\n name: 'Beginning',\n description: 'Few or no relevant examples provided',\n points: 1,\n color: '#EF4444'\n }\n ]\n }\n ]\n })\n }\n });\n\n const mathMarkScheme = await prisma.markScheme.create({\n data: {\n classId: mathClass.id,\n structured: JSON.stringify({\n name: 'Mathematics Assessment Rubric',\n criteria: [\n {\n id: 'mathematical-accuracy',\n title: 'Mathematical Accuracy',\n description: 'Correct calculations and mathematical procedures',\n levels: [\n {\n id: 'excellent',\n name: 'Excellent',\n description: 'All calculations correct, proper mathematical procedures',\n points: 4,\n color: '#10B981'\n },\n {\n id: 'proficient',\n name: 'Proficient',\n description: 'Most calculations correct, minor computational errors',\n points: 3,\n color: '#3B82F6'\n },\n {\n id: 'developing',\n name: 'Developing',\n description: 'Some calculations correct, several errors present',\n points: 2,\n color: '#F59E0B'\n },\n {\n id: 'beginning',\n name: 'Beginning',\n description: 'Many calculation errors, incorrect procedures',\n points: 1,\n color: '#EF4444'\n }\n ]\n },\n {\n id: 'problem-solving',\n title: 'Problem-Solving Strategy',\n description: 'Appropriate method selection and setup',\n levels: [\n {\n id: 'excellent',\n name: 'Excellent',\n description: 'Optimal strategy chosen, excellent problem setup',\n points: 4,\n color: '#10B981'\n },\n {\n id: 'proficient',\n name: 'Proficient',\n description: 'Good strategy, appropriate problem approach',\n points: 3,\n color: '#3B82F6'\n },\n {\n id: 'developing',\n name: 'Developing',\n description: 'Adequate strategy, some setup issues',\n points: 2,\n color: '#F59E0B'\n },\n {\n id: 'beginning',\n name: 'Beginning',\n description: 'Poor strategy choice, unclear setup',\n points: 1,\n color: '#EF4444'\n }\n ]\n },\n {\n id: 'work-shown',\n title: 'Work Shown',\n description: 'Clear step-by-step work and explanations',\n levels: [\n {\n id: 'excellent',\n name: 'Excellent',\n description: 'All work clearly shown with detailed explanations',\n points: 4,\n color: '#10B981'\n },\n {\n id: 'proficient',\n name: 'Proficient',\n description: 'Most work shown, good explanations',\n points: 3,\n color: '#3B82F6'\n },\n {\n id: 'developing',\n name: 'Developing',\n description: 'Some work shown, limited explanations',\n points: 2,\n color: '#F59E0B'\n },\n {\n id: 'beginning',\n name: 'Beginning',\n description: 'Little work shown, unclear process',\n points: 1,\n color: '#EF4444'\n }\n ]\n },\n {\n id: 'final-answer',\n title: 'Final Answer',\n description: 'Correct final answer with proper units/notation',\n levels: [\n {\n id: 'excellent',\n name: 'Excellent',\n description: 'Correct answer with proper units and notation',\n points: 4,\n color: '#10B981'\n },\n {\n id: 'proficient',\n name: 'Proficient',\n description: 'Correct answer, minor notation issues',\n points: 3,\n color: '#3B82F6'\n },\n {\n id: 'developing',\n name: 'Developing',\n description: 'Answer close to correct, some notation errors',\n points: 2,\n color: '#F59E0B'\n },\n {\n id: 'beginning',\n name: 'Beginning',\n description: 'Incorrect answer or missing units',\n points: 1,\n color: '#EF4444'\n }\n ]\n }\n ]\n })\n }\n });\n\n // 8. Create grading boundaries\n const mathGradingBoundary = await prisma.gradingBoundary.create({\n data: {\n classId: mathClass.id,\n structured: JSON.stringify({\n name: 'AP Calculus BC Grading Scale',\n boundaries: [\n {\n id: 'a-plus',\n grade: 'A+',\n minPercentage: 97,\n maxPercentage: 100,\n description: 'Exceptional mastery of all concepts',\n color: '#059669'\n },\n {\n id: 'a',\n grade: 'A',\n minPercentage: 93,\n maxPercentage: 96,\n description: 'Strong mastery of concepts',\n color: '#10B981'\n },\n {\n id: 'a-minus',\n grade: 'A-',\n minPercentage: 90,\n maxPercentage: 92,\n description: 'Good mastery with minor gaps',\n color: '#34D399'\n },\n {\n id: 'b-plus',\n grade: 'B+',\n minPercentage: 87,\n maxPercentage: 89,\n description: 'Above average understanding',\n color: '#1D4ED8'\n },\n {\n id: 'b',\n grade: 'B',\n minPercentage: 83,\n maxPercentage: 86,\n description: 'Solid understanding of most concepts',\n color: '#3B82F6'\n },\n {\n id: 'b-minus',\n grade: 'B-',\n minPercentage: 80,\n maxPercentage: 82,\n description: 'Adequate understanding with some gaps',\n color: '#60A5FA'\n },\n {\n id: 'c-plus',\n grade: 'C+',\n minPercentage: 77,\n maxPercentage: 79,\n description: 'Basic understanding, needs improvement',\n color: '#D97706'\n },\n {\n id: 'c',\n grade: 'C',\n minPercentage: 73,\n maxPercentage: 76,\n description: 'Minimal acceptable understanding',\n color: '#F59E0B'\n },\n {\n id: 'c-minus',\n grade: 'C-',\n minPercentage: 70,\n maxPercentage: 72,\n description: 'Below average, significant gaps',\n color: '#FBBF24'\n },\n {\n id: 'd',\n grade: 'D',\n minPercentage: 60,\n maxPercentage: 69,\n description: 'Poor understanding, major deficiencies',\n color: '#F87171'\n },\n {\n id: 'f',\n grade: 'F',\n minPercentage: 0,\n maxPercentage: 59,\n description: 'Inadequate understanding, does not meet standards',\n color: '#EF4444'\n }\n ]\n })\n }\n });\n\n // 9. Create realistic assignments (more for Calc BC)\n const now = new Date();\n const yesterday = new Date(now.getTime() - 24 * 60 * 60 * 1000);\n const tomorrow = new Date(now.getTime() + 24 * 60 * 60 * 1000);\n const nextWeek = new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000);\n const nextMonth = new Date(now.getTime() + 30 * 24 * 60 * 60 * 1000);\n const lastWeek = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);\n\n const assignments = await Promise.all([\n // Biology assignments\n prisma.assignment.create({\n data: {\n title: 'Cell Structure Lab Report',\n instructions: 'Complete the microscopy lab and write a detailed report on your observations of plant and animal cells. Include labeled diagrams and compare/contrast the structures you observed.',\n dueDate: nextWeek,\n teacherId: teachers[0].id,\n classId: biologyClass.id,\n sectionId: bioSections[1].id,\n type: 'LAB',\n maxGrade: 100,\n weight: 1.5,\n markSchemeId: bioMarkScheme.id,\n }\n }),\n prisma.assignment.create({\n data: {\n title: 'Genetics Problem Set',\n instructions: 'Solve the genetics problems on pages 234-237. Show all work including Punnett squares and probability calculations.',\n dueDate: tomorrow,\n teacherId: teachers[0].id,\n classId: biologyClass.id,\n sectionId: bioSections[3].id,\n type: 'HOMEWORK',\n maxGrade: 50,\n weight: 1.0,\n markSchemeId: bioMarkScheme.id,\n }\n }),\n prisma.assignment.create({\n data: {\n title: 'Evolution Essay',\n instructions: 'Write a 5-page essay on the evidence for evolution. Use at least 5 scientific sources and cite them properly.',\n dueDate: nextMonth,\n teacherId: teachers[0].id,\n classId: biologyClass.id,\n type: 'ESSAY',\n maxGrade: 100,\n weight: 2.0,\n markSchemeId: bioMarkScheme.id,\n }\n }),\n \n // Math assignments (expanded for demo)\n prisma.assignment.create({\n data: {\n title: 'Limits and Continuity Test',\n instructions: 'Comprehensive test covering limits, continuity, and the Intermediate Value Theorem. Calculators allowed for Section B only.',\n dueDate: lastWeek, // Already completed\n teacherId: teachers[1].id,\n classId: mathClass.id,\n sectionId: mathSections[0].id,\n type: 'TEST',\n maxGrade: 100,\n weight: 2.5,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n graded: true,\n }\n }),\n prisma.assignment.create({\n data: {\n title: 'Limits Practice Problems',\n instructions: 'Complete problems 1-25 on page 89. Focus on algebraic manipulation and graphical analysis.',\n dueDate: yesterday, // Just submitted\n teacherId: teachers[1].id,\n classId: mathClass.id,\n sectionId: mathSections[0].id,\n type: 'HOMEWORK',\n maxGrade: 25,\n weight: 1.0,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n }\n }),\n prisma.assignment.create({\n data: {\n title: 'Derivative Applications Quiz',\n instructions: 'Quiz covering related rates, optimization, and curve sketching.',\n dueDate: new Date(now.getTime() + 5 * 24 * 60 * 60 * 1000),\n teacherId: teachers[1].id,\n classId: mathClass.id,\n sectionId: mathSections[1].id,\n type: 'QUIZ',\n maxGrade: 75,\n weight: 1.5,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n }\n }),\n prisma.assignment.create({\n data: {\n title: 'Integration Techniques Homework',\n instructions: 'Complete problems 1-30 on pages 156-158. Practice integration by parts, substitution, and partial fractions.',\n dueDate: new Date(now.getTime() + 3 * 24 * 60 * 60 * 1000),\n teacherId: teachers[1].id,\n classId: mathClass.id,\n sectionId: mathSections[2].id,\n type: 'HOMEWORK',\n maxGrade: 30,\n weight: 1.0,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n }\n }),\n prisma.assignment.create({\n data: {\n title: 'AP Practice Test - Derivatives',\n instructions: 'Complete this practice AP exam focusing on derivatives and their applications. Time limit: 90 minutes.',\n dueDate: new Date(now.getTime() + 10 * 24 * 60 * 60 * 1000),\n teacherId: teachers[1].id,\n classId: mathClass.id,\n sectionId: mathSections[1].id,\n type: 'TEST',\n maxGrade: 108, // AP style scoring\n weight: 2.5,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n }\n }),\n prisma.assignment.create({\n data: {\n title: 'Calculus Project: Real-World Applications',\n instructions: 'Choose a real-world scenario and create a presentation showing how calculus is used. Include derivatives, integrals, and optimization. 10-minute presentation required.',\n dueDate: new Date(now.getTime() + 21 * 24 * 60 * 60 * 1000),\n teacherId: teachers[1].id,\n classId: mathClass.id,\n type: 'PROJECT',\n maxGrade: 150,\n weight: 3.0,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n }\n }),\n ]);\n\n // 10. Create comprehensive submissions for all students and assignments\n const submissionsToCreate: any[] = [];\n \n // Helper function to generate realistic grades based on assignment type and student performance\n const generateGrade = (maxGrade: number, studentIndex: number, assignmentType: string) => {\n // Create some variation in student performance\n const basePerformance = [0.92, 0.88, 0.85, 0.90, 0.82, 0.87, 0.91, 0.84, 0.89, 0.86, 0.83, 0.88]; // Different performance levels\n const performance = basePerformance[studentIndex % basePerformance.length];\n \n // Adjust based on assignment type\n let multiplier = performance;\n if (assignmentType === 'TEST') multiplier -= 0.05; // Tests are harder\n if (assignmentType === 'QUIZ') multiplier -= 0.02; // Quizzes slightly harder\n if (assignmentType === 'HOMEWORK') multiplier += 0.03; // Homework gets better grades\n \n // Add some randomness\n const randomFactor = (Math.random() - 0.5) * 0.1; // ±5%\n const finalGrade = Math.round(maxGrade * (multiplier + randomFactor));\n \n return Math.max(0, Math.min(maxGrade, finalGrade)); // Clamp between 0 and maxGrade\n };\n\n // Generate teacher comments based on grade\n const generateComment = (grade: number, maxGrade: number, assignmentType: string) => {\n const percentage = (grade / maxGrade) * 100;\n const comments = {\n excellent: [\n 'Excellent work! Your understanding of the concepts is clear.',\n 'Outstanding performance. Keep up the great work!',\n 'Impressive analysis and problem-solving approach.',\n 'Perfect execution. Your work demonstrates mastery of the material.'\n ],\n good: [\n 'Good work overall. Minor areas for improvement noted.',\n 'Solid understanding demonstrated. Watch calculation accuracy.',\n 'Well done! A few small errors but good conceptual grasp.',\n 'Nice job. Consider reviewing the highlighted sections.'\n ],\n average: [\n 'Adequate work. Please review the concepts we discussed in class.',\n 'Shows basic understanding but needs more practice.',\n 'Fair attempt. Come see me during office hours for extra help.',\n 'Meets expectations. Focus on showing more detailed work.'\n ],\n needs_improvement: [\n 'Needs significant improvement. Please schedule a meeting to discuss.',\n 'Below expectations. Additional practice and review required.',\n 'Struggling with key concepts. Let\\'s work together to improve.',\n 'Requires more effort and attention to detail.'\n ]\n };\n\n let category: keyof typeof comments;\n if (percentage >= 90) category = 'excellent';\n else if (percentage >= 80) category = 'good';\n else if (percentage >= 70) category = 'average';\n else category = 'needs_improvement';\n\n return comments[category][Math.floor(Math.random() * comments[category].length)];\n };\n\n // Create submissions for Biology assignments (students 0-7)\n for (let i = 0; i < 3; i++) { // First 3 assignments are Biology\n const assignment = assignments[i];\n const maxGrade = assignment.maxGrade || 100; // Default to 100 if null\n for (let j = 0; j < 8; j++) { // 8 students in Biology\n const student = students[j];\n const grade = generateGrade(maxGrade, j, assignment.type);\n const isSubmitted = Math.random() > 0.1; // 90% submission rate\n const isGraded = i < 2; // First 2 assignments are graded\n \n submissionsToCreate.push({\n assignmentId: assignment.id,\n studentId: student.id,\n submitted: isSubmitted,\n submittedAt: isSubmitted ? new Date(assignment.dueDate.getTime() - Math.random() * 24 * 60 * 60 * 1000) : null,\n gradeReceived: isGraded && isSubmitted ? grade : null,\n teacherComments: isGraded && isSubmitted ? generateComment(grade, maxGrade, assignment.type) : null,\n returned: isGraded && isSubmitted,\n });\n }\n }\n\n // Create submissions for Math assignments (students 4-11) - 8 students\n for (let i = 3; i < assignments.length; i++) { // Math assignments start at index 3\n const assignment = assignments[i];\n const maxGrade = assignment.maxGrade || 100; // Default to 100 if null\n for (let j = 4; j < 12; j++) { // Students 4-11 are in Math class\n const student = students[j];\n const grade = generateGrade(maxGrade, j, assignment.type);\n \n // Determine submission and grading status based on due date\n const isOverdue = assignment.dueDate < now;\n const isDueSoon = assignment.dueDate < tomorrow;\n const isSubmitted = isOverdue || (isDueSoon && Math.random() > 0.2) || Math.random() > 0.15; // Higher submission rate for math\n const isGraded = isOverdue && assignment.graded; // Only grade overdue assignments\n \n submissionsToCreate.push({\n assignmentId: assignment.id,\n studentId: student.id,\n submitted: isSubmitted,\n submittedAt: isSubmitted ? new Date(assignment.dueDate.getTime() - Math.random() * 48 * 60 * 60 * 1000) : null,\n gradeReceived: isGraded && isSubmitted ? grade : null,\n teacherComments: isGraded && isSubmitted ? generateComment(grade, maxGrade, assignment.type) : null,\n returned: isGraded && isSubmitted,\n rubricState: isGraded && isSubmitted ? JSON.stringify({\n criteria: [\n { name: 'Mathematical Accuracy', score: Math.round(grade * 0.5), maxScore: Math.round(maxGrade * 0.5) },\n { name: 'Problem-Solving Strategy', score: Math.round(grade * 0.25), maxScore: Math.round(maxGrade * 0.25) },\n { name: 'Work Shown', score: Math.round(grade * 0.15), maxScore: Math.round(maxGrade * 0.15) },\n { name: 'Final Answer', score: Math.round(grade * 0.1), maxScore: Math.round(maxGrade * 0.1) }\n ]\n }) : null,\n });\n }\n }\n\n // Create all submissions in batches to avoid connection pool exhaustion\n const BATCH_SIZE = 15; // Create 15 at a time to avoid overwhelming Supabase connection pool\n \n logger.info(`Creating ${submissionsToCreate.length} submissions in batches of ${BATCH_SIZE}`);\n \n for (let i = 0; i < submissionsToCreate.length; i += BATCH_SIZE) {\n const batch = submissionsToCreate.slice(i, i + BATCH_SIZE);\n await Promise.all(batch.map(submission => \n prisma.submission.create({ data: submission })\n ));\n \n // Small delay between batches to avoid overwhelming the connection pool\n if (i + BATCH_SIZE < submissionsToCreate.length) {\n await new Promise(resolve => setTimeout(resolve, 100)); // 100ms delay\n }\n \n // Log progress every 30 submissions or at the end\n if ((i + BATCH_SIZE) % 30 === 0 || i + BATCH_SIZE >= submissionsToCreate.length) {\n logger.info(`Created ${Math.min(i + BATCH_SIZE, submissionsToCreate.length)}/${submissionsToCreate.length} submissions`);\n }\n }\n \n logger.info(`Successfully created all ${submissionsToCreate.length} submissions`);\n\n // 11. Create announcements\n await Promise.all([\n prisma.announcement.create({\n data: {\n remarks: 'Reminder: Lab safety quiz next Tuesday. Please review the safety protocols we discussed in class.',\n teacherId: teachers[0].id,\n classId: biologyClass.id,\n createdAt: new Date(now.getTime() - 24 * 60 * 60 * 1000),\n }\n }),\n prisma.announcement.create({\n data: {\n remarks: 'Great job on the recent quiz, everyone! The class average was 87%. Keep up the excellent work!',\n teacherId: teachers[1].id,\n classId: mathClass.id,\n createdAt: new Date(now.getTime() - 6 * 60 * 60 * 1000),\n }\n }),\n prisma.announcement.create({\n data: {\n remarks: 'Don\\'t forget: Parent-teacher conferences are next week. Sign-up sheets are available in the main office.',\n teacherId: teachers[2].id,\n classId: englishClass.id,\n createdAt: new Date(now.getTime() - 12 * 60 * 60 * 1000),\n }\n }),\n ]);\n\n // 12. Create events/calendar items (lots for Michael Chen's week of Oct 7)\n const oct7 = new Date('2025-10-07T08:00:00');\n const oct8 = new Date('2025-10-08T08:00:00');\n const oct9 = new Date('2025-10-09T08:00:00');\n const oct10 = new Date('2025-10-10T08:00:00');\n const oct11 = new Date('2025-10-11T08:00:00');\n \n // Build events array first, then batch create them\n const eventsToCreate = [\n // Monday Oct 7 - Michael Chen's busy day\n {\n name: 'AP Calculus BC - Period 2',\n startTime: new Date('2025-10-07T09:15:00'),\n endTime: new Date('2025-10-07T10:05:00'),\n location: 'Room 156',\n remarks: 'Derivatives unit test review',\n userId: teachers[1].id,\n classId: mathClass.id,\n color: '#3B82F6',\n },\n {\n name: 'Department Head Meeting',\n startTime: new Date('2025-10-07T10:30:00'),\n endTime: new Date('2025-10-07T11:30:00'),\n location: 'Conference Room A',\n remarks: 'Monthly math department meeting - curriculum planning',\n userId: teachers[1].id,\n color: '#8B5CF6',\n },\n {\n name: 'AP Statistics - Period 5',\n startTime: new Date('2025-10-07T13:45:00'),\n endTime: new Date('2025-10-07T14:35:00'),\n location: 'Room 156',\n remarks: 'Hypothesis testing introduction',\n userId: teachers[1].id,\n color: '#3B82F6',\n },\n {\n name: 'Parent Conference - Williams Family',\n startTime: new Date('2025-10-07T15:00:00'),\n endTime: new Date('2025-10-07T15:30:00'),\n location: 'Room 156',\n remarks: 'Discuss Sophia\\'s progress in AP Calculus',\n userId: teachers[1].id,\n color: '#F59E0B',\n },\n {\n name: 'Math Tutoring Session',\n startTime: new Date('2025-10-07T15:45:00'),\n endTime: new Date('2025-10-07T16:45:00'),\n location: 'Room 156',\n remarks: 'Extra help for struggling students',\n userId: teachers[1].id,\n color: '#10B981',\n },\n\n // Tuesday Oct 8\n {\n name: 'AP Calculus BC - Period 2',\n startTime: new Date('2025-10-08T09:15:00'),\n endTime: new Date('2025-10-08T10:05:00'),\n location: 'Room 156',\n remarks: 'Derivatives unit test',\n userId: teachers[1].id,\n classId: mathClass.id,\n color: '#3B82F6',\n },\n {\n name: 'Faculty Meeting',\n startTime: new Date('2025-10-08T12:00:00'),\n endTime: new Date('2025-10-08T13:00:00'),\n location: 'Main Auditorium',\n remarks: 'All-school faculty meeting',\n userId: teachers[1].id,\n color: '#6B7280',\n },\n {\n name: 'AP Statistics - Period 5',\n startTime: new Date('2025-10-08T13:45:00'),\n endTime: new Date('2025-10-08T14:35:00'),\n location: 'Room 156',\n remarks: 'Hypothesis testing practice problems',\n userId: teachers[1].id,\n color: '#3B82F6',\n },\n {\n name: 'Grade Level Team Meeting',\n startTime: new Date('2025-10-08T15:00:00'),\n endTime: new Date('2025-10-08T16:00:00'),\n location: 'Room 201',\n remarks: '11th grade team coordination',\n userId: teachers[1].id,\n color: '#8B5CF6',\n },\n\n // Wednesday Oct 9\n {\n name: 'AP Calculus BC - Period 2',\n startTime: new Date('2025-10-09T09:15:00'),\n endTime: new Date('2025-10-09T10:05:00'),\n location: 'Room 156',\n remarks: 'Integration introduction',\n userId: teachers[1].id,\n classId: mathClass.id,\n color: '#3B82F6',\n },\n {\n name: 'Professional Development',\n startTime: new Date('2025-10-09T11:00:00'),\n endTime: new Date('2025-10-09T12:30:00'),\n location: 'Library Conference Room',\n remarks: 'Technology in Mathematics Education workshop',\n userId: teachers[1].id,\n color: '#059669',\n },\n {\n name: 'AP Statistics - Period 5',\n startTime: new Date('2025-10-09T13:45:00'),\n endTime: new Date('2025-10-09T14:35:00'),\n location: 'Room 156',\n remarks: 'Chi-square tests',\n userId: teachers[1].id,\n color: '#3B82F6',\n },\n {\n name: 'Student Council Advisory',\n startTime: new Date('2025-10-09T15:00:00'),\n endTime: new Date('2025-10-09T16:00:00'),\n location: 'Room 105',\n remarks: 'Advisor meeting for student council',\n userId: teachers[1].id,\n color: '#DC2626',\n },\n\n // Thursday Oct 10\n {\n name: 'AP Calculus BC - Period 2',\n startTime: new Date('2025-10-10T09:15:00'),\n endTime: new Date('2025-10-10T10:05:00'),\n location: 'Room 156',\n remarks: 'Integration by substitution',\n userId: teachers[1].id,\n classId: mathClass.id,\n color: '#3B82F6',\n },\n {\n name: 'Curriculum Committee',\n startTime: new Date('2025-10-10T11:00:00'),\n endTime: new Date('2025-10-10T12:00:00'),\n location: 'Principal\\'s Office',\n remarks: 'Review new AP curriculum standards',\n userId: teachers[1].id,\n color: '#8B5CF6',\n },\n {\n name: 'AP Statistics - Period 5',\n startTime: new Date('2025-10-10T13:45:00'),\n endTime: new Date('2025-10-10T14:35:00'),\n location: 'Room 156',\n remarks: 'ANOVA introduction',\n userId: teachers[1].id,\n color: '#3B82F6',\n },\n {\n name: 'Parent Conference - Anderson Family',\n startTime: new Date('2025-10-10T15:00:00'),\n endTime: new Date('2025-10-10T15:30:00'),\n location: 'Room 156',\n remarks: 'Discuss Ethan\\'s improvement strategies',\n userId: teachers[1].id,\n color: '#F59E0B',\n },\n {\n name: 'Math Club Meeting',\n startTime: new Date('2025-10-10T15:45:00'),\n endTime: new Date('2025-10-10T16:45:00'),\n location: 'Room 156',\n remarks: 'Preparing for state math competition',\n userId: teachers[1].id,\n color: '#10B981',\n },\n\n // Friday Oct 11\n {\n name: 'AP Calculus BC - Period 2',\n startTime: new Date('2025-10-11T09:15:00'),\n endTime: new Date('2025-10-11T10:05:00'),\n location: 'Room 156',\n remarks: 'Integration by parts',\n userId: teachers[1].id,\n classId: mathClass.id,\n color: '#3B82F6',\n },\n {\n name: 'IEP Meeting - Student Support',\n startTime: new Date('2025-10-11T10:30:00'),\n endTime: new Date('2025-10-11T11:30:00'),\n location: 'Special Services Office',\n remarks: 'Individualized Education Plan review',\n userId: teachers[1].id,\n color: '#F59E0B',\n },\n {\n name: 'AP Statistics - Period 5',\n startTime: new Date('2025-10-11T13:45:00'),\n endTime: new Date('2025-10-11T14:35:00'),\n location: 'Room 156',\n remarks: 'ANOVA practice and review',\n userId: teachers[1].id,\n color: '#3B82F6',\n },\n {\n name: 'Weekend Prep Session',\n startTime: new Date('2025-10-11T15:00:00'),\n endTime: new Date('2025-10-11T17:00:00'),\n location: 'Room 156',\n remarks: 'Voluntary AP exam prep session',\n userId: teachers[1].id,\n color: '#059669',\n },\n\n // Some events for other teachers too\n {\n name: 'Cell Biology Lab',\n startTime: new Date(now.getTime() + 2 * 24 * 60 * 60 * 1000),\n endTime: new Date(now.getTime() + 2 * 24 * 60 * 60 * 1000 + 90 * 60 * 1000), // 90 minutes\n location: 'Science Lab Room 204',\n remarks: 'Bring lab notebooks and safety goggles',\n userId: teachers[0].id,\n classId: biologyClass.id,\n color: '#10B981',\n },\n {\n name: 'Poetry Reading',\n startTime: new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000),\n endTime: new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000 + 60 * 60 * 1000),\n location: 'Library',\n remarks: 'Students will present their original poetry',\n userId: teachers[2].id,\n classId: englishClass.id,\n color: '#8B5CF6',\n },\n ];\n\n // Create events in batches to avoid connection pool exhaustion\n const EVENT_BATCH_SIZE = 10;\n \n logger.info(`Creating ${eventsToCreate.length} events in batches of ${EVENT_BATCH_SIZE}`);\n \n for (let i = 0; i < eventsToCreate.length; i += EVENT_BATCH_SIZE) {\n const batch = eventsToCreate.slice(i, i + EVENT_BATCH_SIZE);\n await Promise.all(batch.map(event => \n prisma.event.create({ data: event })\n ));\n \n // Small delay between batches\n if (i + EVENT_BATCH_SIZE < eventsToCreate.length) {\n await new Promise(resolve => setTimeout(resolve, 100));\n }\n }\n \n logger.info(`Successfully created all ${eventsToCreate.length} events`);\n\n // 13. Create attendance records\n const attendanceDate = new Date(now.getTime() - 24 * 60 * 60 * 1000);\n await Promise.all([\n prisma.attendance.create({\n data: {\n date: attendanceDate,\n classId: biologyClass.id,\n present: { connect: students.slice(0, 6).map(s => ({ id: s.id })) },\n late: { connect: [{ id: students[6].id }] },\n absent: { connect: [{ id: students[7].id }] },\n }\n }),\n prisma.attendance.create({\n data: {\n date: attendanceDate,\n classId: mathClass.id,\n present: { connect: students.slice(4, 11).map(s => ({ id: s.id })) },\n late: { connect: [{ id: students[11].id }] },\n }\n }),\n ]);\n\n // 14. Create notifications for realistic teacher experience\n await Promise.all([\n // For main teacher (Sarah Johnson)\n addNotification(teachers[0].id, 'New Submission', 'Alex Martinez submitted Genetics Problem Set'),\n addNotification(teachers[0].id, 'Grade Reminder', 'You have 3 assignments pending grading'),\n addNotification(teachers[0].id, 'Lab Equipment', 'Microscopes for tomorrow\\'s lab are ready in Room 204'),\n addNotification(teachers[0].id, 'Parent Contact', 'Mrs. Williams requested a meeting about Sophia\\'s progress'),\n \n // For students\n addNotification(students[0].id, 'Assignment Graded', 'Your Genetics Problem Set has been graded: 45/50'),\n addNotification(students[1].id, 'Assignment Graded', 'Your Genetics Problem Set has been graded: 48/50'),\n addNotification(students[2].id, 'Assignment Due', 'Cell Structure Lab Report is due in 3 days'),\n addNotification(students[3].id, 'Class Announcement', 'New announcement in AP Biology'),\n ]);\n\n // 15. Create some lab chats for AI demo\n const labChatContext = JSON.stringify({\n subject: 'Biology',\n topic: 'Cell Structure and Function',\n gradeLevel: '11th Grade AP',\n difficulty: 'Advanced',\n objectives: [\n 'Understand prokaryotic vs eukaryotic cell structures',\n 'Identify organelles and their functions',\n 'Compare plant and animal cells'\n ],\n standards: ['NGSS HS-LS1-1', 'NGSS HS-LS1-2'],\n duration: '2 weeks',\n assessmentType: 'Lab report and quiz'\n });\n\n // Create conversation for lab chat\n const labConversation = await prisma.conversation.create({\n data: {\n type: 'GROUP',\n name: 'Lab: Cell Structure Materials',\n displayInChat: false,\n }\n });\n\n // Add teacher to conversation\n await prisma.conversationMember.create({\n data: {\n userId: teachers[0].id,\n conversationId: labConversation.id,\n role: 'ADMIN',\n }\n });\n\n // Create lab chat\n await prisma.labChat.create({\n data: {\n title: 'Cell Structure Teaching Materials',\n context: labChatContext,\n classId: biologyClass.id,\n conversationId: labConversation.id,\n createdById: teachers[0].id,\n }\n });\n\n // 16. Create chat conversations and messages\n // Teacher-to-teacher conversations\n const teacherConversation1 = await prisma.conversation.create({\n data: {\n type: 'GROUP',\n name: 'Math Department Chat',\n displayInChat: true,\n }\n });\n\n // Add all teachers to department chat\n await Promise.all([\n prisma.conversationMember.create({\n data: {\n userId: teachers[0].id, // Sarah (Biology)\n conversationId: teacherConversation1.id,\n role: 'MEMBER',\n }\n }),\n prisma.conversationMember.create({\n data: {\n userId: teachers[1].id, // Michael (Math)\n conversationId: teacherConversation1.id,\n role: 'ADMIN',\n }\n }),\n prisma.conversationMember.create({\n data: {\n userId: teachers[2].id, // Emma (English)\n conversationId: teacherConversation1.id,\n role: 'MEMBER',\n }\n }),\n ]);\n\n // Teacher-student conversations\n const studentConversation1 = await prisma.conversation.create({\n data: {\n type: 'DM',\n name: null,\n displayInChat: true,\n }\n });\n\n await Promise.all([\n prisma.conversationMember.create({\n data: {\n userId: teachers[1].id, // Michael Chen\n conversationId: studentConversation1.id,\n role: 'MEMBER',\n }\n }),\n prisma.conversationMember.create({\n data: {\n userId: students[4].id, // Ethan Anderson\n conversationId: studentConversation1.id,\n role: 'MEMBER',\n }\n }),\n ]);\n\n const studentConversation2 = await prisma.conversation.create({\n data: {\n type: 'DM',\n name: null,\n displayInChat: true,\n }\n });\n\n await Promise.all([\n prisma.conversationMember.create({\n data: {\n userId: teachers[1].id, // Michael Chen\n conversationId: studentConversation2.id,\n role: 'MEMBER',\n }\n }),\n prisma.conversationMember.create({\n data: {\n userId: students[1].id, // Sophia Williams\n conversationId: studentConversation2.id,\n role: 'MEMBER',\n }\n }),\n ]);\n\n // Create messages in conversations\n const chatMessages = [\n // Teacher department chat messages\n {\n content: 'Hey everyone! Hope you all had a great weekend. Quick reminder about the faculty meeting tomorrow at noon.',\n senderId: teachers[1].id,\n conversationId: teacherConversation1.id,\n createdAt: new Date('2024-10-07T07:30:00'),\n },\n {\n content: 'Thanks for the reminder, Michael! I\\'ll be there. Are we discussing the new curriculum standards?',\n senderId: teachers[0].id,\n conversationId: teacherConversation1.id,\n createdAt: new Date('2024-10-07T07:45:00'),\n },\n {\n content: 'Yes, among other things. Also wanted to coordinate on the parent-teacher conferences next week.',\n senderId: teachers[1].id,\n conversationId: teacherConversation1.id,\n createdAt: new Date('2024-10-07T08:00:00'),\n },\n {\n content: 'Perfect timing! I have several parents asking about their kids\\' progress in my English classes.',\n senderId: teachers[2].id,\n conversationId: teacherConversation1.id,\n createdAt: new Date('2024-10-07T08:15:00'),\n },\n {\n content: 'The integration unit is going well in AP Calc. Students seem to be grasping the concepts better this year.',\n senderId: teachers[1].id,\n conversationId: teacherConversation1.id,\n createdAt: new Date('2024-10-08T16:30:00'),\n },\n {\n content: 'That\\'s great to hear! I\\'ve been incorporating more hands-on labs in biology and seeing similar improvements.',\n senderId: teachers[0].id,\n conversationId: teacherConversation1.id,\n createdAt: new Date('2024-10-08T16:45:00'),\n },\n {\n content: 'Anyone free for coffee after school tomorrow? Would love to chat about cross-curricular projects.',\n senderId: teachers[2].id,\n conversationId: teacherConversation1.id,\n createdAt: new Date('2024-10-09T14:00:00'),\n },\n {\n content: 'I\\'m in! Math Club ends at 4:45, so anytime after 5 works for me.',\n senderId: teachers[1].id,\n conversationId: teacherConversation1.id,\n createdAt: new Date('2024-10-09T14:15:00'),\n },\n\n // Michael Chen with Ethan Anderson (struggling student)\n {\n content: 'Hi Mr. Chen, I\\'m really struggling with the integration problems from today\\'s class. Could you help explain substitution method again?',\n senderId: students[4].id,\n conversationId: studentConversation1.id,\n createdAt: new Date('2024-10-09T15:30:00'),\n },\n {\n content: 'Of course, Ethan! I\\'m glad you reached out. The key is identifying what to substitute. Can you tell me which problem you\\'re stuck on specifically?',\n senderId: teachers[1].id,\n conversationId: studentConversation1.id,\n createdAt: new Date('2024-10-09T15:45:00'),\n },\n {\n content: 'Problem #7 from the homework. I don\\'t know how to choose what u should equal.',\n senderId: students[4].id,\n conversationId: studentConversation1.id,\n createdAt: new Date('2024-10-09T16:00:00'),\n },\n {\n content: 'Great question! For u-substitution, look for a function whose derivative also appears in the integral. In #7, try setting u equal to the expression inside the parentheses. What do you get when you differentiate that?',\n senderId: teachers[1].id,\n conversationId: studentConversation1.id,\n createdAt: new Date('2024-10-09T16:15:00'),\n },\n {\n content: 'Oh! So u = 2x + 1, and du = 2dx? That means I need to adjust for the 2...',\n senderId: students[4].id,\n conversationId: studentConversation1.id,\n createdAt: new Date('2024-10-09T17:00:00'),\n },\n {\n content: 'Exactly! You\\'ve got it. Remember to substitute back at the end. Feel free to come to tutoring tomorrow if you need more practice.',\n senderId: teachers[1].id,\n conversationId: studentConversation1.id,\n createdAt: new Date('2024-10-09T17:15:00'),\n },\n {\n content: 'Thank you so much! This makes way more sense now. I\\'ll definitely come to tutoring.',\n senderId: students[4].id,\n conversationId: studentConversation1.id,\n createdAt: new Date('2024-10-09T17:30:00'),\n },\n\n // Michael Chen with Sophia Williams (high-achieving student)\n {\n content: 'Hi Mr. Chen! I finished the integration homework early. Are there any extra challenge problems I could work on?',\n senderId: students[1].id,\n conversationId: studentConversation2.id,\n createdAt: new Date('2024-10-10T19:00:00'),\n },\n {\n content: 'Sophia, I love your enthusiasm! Try problems 45-50 from chapter 6. They involve integration by parts, which we\\'ll cover next week.',\n senderId: teachers[1].id,\n conversationId: studentConversation2.id,\n createdAt: new Date('2024-10-10T19:30:00'),\n },\n {\n content: 'Perfect! I looked ahead in the textbook and the integration by parts formula looks interesting. Is it similar to the product rule for derivatives?',\n senderId: students[1].id,\n conversationId: studentConversation2.id,\n createdAt: new Date('2024-10-10T20:00:00'),\n },\n {\n content: 'You\\'re absolutely right! Integration by parts is essentially the reverse of the product rule. You have a great mathematical intuition.',\n senderId: teachers[1].id,\n conversationId: studentConversation2.id,\n createdAt: new Date('2024-10-10T20:15:00'),\n },\n {\n content: 'Also, I wanted to ask about the Math Club competition. What topics should I focus on for preparation?',\n senderId: students[1].id,\n conversationId: studentConversation2.id,\n createdAt: new Date('2024-10-11T12:00:00'),\n },\n {\n content: 'Great question! Focus on algebra, geometry, and basic calculus. I\\'ll have practice problems ready for tomorrow\\'s Math Club meeting.',\n senderId: teachers[1].id,\n conversationId: studentConversation2.id,\n createdAt: new Date('2024-10-11T12:30:00'),\n },\n ];\n\n // Create all messages in batches to avoid connection pool exhaustion\n const MESSAGE_BATCH_SIZE = 10;\n \n logger.info(`Creating ${chatMessages.length} chat messages in batches of ${MESSAGE_BATCH_SIZE}`);\n \n for (let i = 0; i < chatMessages.length; i += MESSAGE_BATCH_SIZE) {\n const batch = chatMessages.slice(i, i + MESSAGE_BATCH_SIZE);\n await Promise.all(batch.map(message => \n prisma.message.create({ data: message })\n ));\n }\n \n logger.info(`Successfully created all ${chatMessages.length} chat messages`);\n\n // 16. Create file structure for classes\n await Promise.all([\n prisma.folder.create({\n data: {\n name: 'Class Files',\n classId: biologyClass.id,\n color: '#10B981',\n }\n }),\n prisma.folder.create({\n data: {\n name: 'Class Files',\n classId: mathClass.id,\n color: '#3B82F6',\n }\n }),\n prisma.folder.create({\n data: {\n name: 'Class Files',\n classId: englishClass.id,\n color: '#8B5CF6',\n }\n }),\n ]);\n\n logger.info('✅ Comprehensive demo database seeded successfully!');\n logger.info('📚 Created:');\n logger.info(' - 1 School (Riverside High School)');\n logger.info(' - 3 Teachers with detailed profiles');\n logger.info(' - 12 Students with profiles');\n logger.info(' - 3 Classes (AP Biology, AP Calculus BC, English Literature)');\n logger.info(' - 7 Course sections with color coding');\n logger.info(' - 2 Mark schemes with detailed rubrics');\n logger.info(' - 1 Grading boundary with weighted categories');\n logger.info(' - 9 Assignments (6 for Calc BC demo class)');\n logger.info(' - 64+ Student submissions with realistic grades & comments');\n logger.info(' - 3 Announcements from different teachers');\n logger.info(' - 3 Calendar events');\n logger.info(' - Attendance records with present/late/absent tracking');\n logger.info(' - 1 Lab chat for AI demo');\n logger.info(' - Multiple realistic notifications');\n logger.info(' - File organization structure');\n logger.info('');\n logger.info('🎯 AP Calculus BC Class (Demo Focus):');\n logger.info(' - 6 assignments with varied due dates');\n logger.info(' - Complete mark scheme & grading boundaries');\n logger.info(' - All 8 students have submissions to all assignments');\n logger.info(' - Realistic grade distribution & teacher feedback');\n logger.info(' - Rubric-based grading with detailed breakdowns');\n logger.info('');\n logger.info('🎬 Demo accounts:');\n logger.info(' Main Teacher: sarah.johnson@riverside.edu / demo123');\n logger.info(' Math Teacher: michael.chen@riverside.edu / demo123');\n logger.info(' English Teacher: emma.davis@riverside.edu / demo123');\n logger.info(' Student: alex.martinez@student.riverside.edu / student123');\n};\n\n// Only run seedDatabase when executed directly (npm run seed)\n// Not when imported by other modules\nconst isSeedScript = process.argv[1]?.includes('seedDatabase') || \n process.argv.includes('seed');\n\nif (isSeedScript) {\n (async () => {\n logger.info('Seeding database');\n await seedDatabase();\n logger.info('Database seeded');\n })();\n}"],"names":[],"mappings":";;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,aAAa;IAC/B,qDAAqD;IACrD,oDAAoD;IACpD,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjC,MAAM,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;IAEvC,8BAA8B;IAC9B,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IAClC,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IAClC,MAAM,MAAM,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IAClC,MAAM,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;IAEvC,4CAA4C;IAC5C,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;IACrC,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;IACrC,MAAM,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;IACvC,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;IAChC,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;IAErC,+BAA+B;IAC/B,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IAClC,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;IACrC,MAAM,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;IAC1C,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACjC,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;IAEhC,8BAA8B;IAC9B,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IAClC,MAAM,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;IAEtC,qBAAqB;IACrB,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IAE/B,kGAAkG;IAClG,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAEjC,2BAA2B;IAC3B,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAa,EAAE,QAAgB,EAAE,QAAgB;IAC9E,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE7D,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAChD,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5B,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;KACtE,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,KAAa,EAAE,OAAe;IAChF,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;QACpC,IAAI,EAAE;YACF,UAAU,EAAE,MAAM;YAClB,KAAK;YACL,OAAO;SACV;KACJ,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;IACnC,MAAM,aAAa,EAAE,CAAC;IACtB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAEhC,wDAAwD;IAExD,mBAAmB;IACnB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,EAAE;YACF,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,uBAAuB;YAC7B,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,KAAK;SACd;KACJ,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QACtC,IAAI,EAAE;YACF,IAAI,EAAE,uBAAuB;YAC7B,MAAM,EAAE,QAAQ,CAAC,EAAE;YACnB,SAAS,EAAE,WAAW;SACzB;KACJ,CAAC,CAAC;IAEH,qBAAqB;IACrB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC/B,UAAU,CAAC,6BAA6B,EAAE,SAAS,EAAE,eAAe,CAAC;QACrE,UAAU,CAAC,4BAA4B,EAAE,SAAS,EAAE,cAAc,CAAC;QACnE,UAAU,CAAC,0BAA0B,EAAE,SAAS,EAAE,YAAY,CAAC;KAClE,CAAC,CAAC;IAEH,uCAAuC;IACvC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC/B,UAAU,CAAC,qCAAqC,EAAE,YAAY,EAAE,eAAe,CAAC;QAChF,UAAU,CAAC,uCAAuC,EAAE,YAAY,EAAE,iBAAiB,CAAC;QACpF,UAAU,CAAC,mCAAmC,EAAE,YAAY,EAAE,aAAa,CAAC;QAC5E,UAAU,CAAC,qCAAqC,EAAE,YAAY,EAAE,eAAe,CAAC;QAChF,UAAU,CAAC,sCAAsC,EAAE,YAAY,EAAE,gBAAgB,CAAC;QAClF,UAAU,CAAC,kCAAkC,EAAE,YAAY,EAAE,YAAY,CAAC;QAC1E,UAAU,CAAC,oCAAoC,EAAE,YAAY,EAAE,cAAc,CAAC;QAC9E,UAAU,CAAC,sCAAsC,EAAE,YAAY,EAAE,gBAAgB,CAAC;QAClF,UAAU,CAAC,mCAAmC,EAAE,YAAY,EAAE,aAAa,CAAC;QAC5E,UAAU,CAAC,iCAAiC,EAAE,YAAY,EAAE,WAAW,CAAC;QACxE,UAAU,CAAC,mCAAmC,EAAE,YAAY,EAAE,aAAa,CAAC;QAC5E,UAAU,CAAC,wCAAwC,EAAE,YAAY,EAAE,kBAAkB,CAAC;KACzF,CAAC,CAAC;IAEH,0BAA0B;IAC1B,MAAM,OAAO,CAAC,GAAG,CAAC;QACd,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE;gBACF,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACtB,WAAW,EAAE,mBAAmB;gBAChC,GAAG,EAAE,0GAA0G;gBAC/G,QAAQ,EAAE,eAAe;gBACzB,OAAO,EAAE,8BAA8B;aAC1C;SACJ,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE;gBACF,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACtB,WAAW,EAAE,kBAAkB;gBAC/B,GAAG,EAAE,qFAAqF;gBAC1F,QAAQ,EAAE,eAAe;aAC5B;SACJ,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE;gBACF,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACtB,WAAW,EAAE,gBAAgB;gBAC7B,GAAG,EAAE,qFAAqF;gBAC1F,QAAQ,EAAE,eAAe;aAC5B;SACJ,CAAC;KACL,CAAC,CAAC;IAEH,iCAAiC;IACjC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QAC1D,MAAM,KAAK,GAAG,CAAC,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC;QACnH,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;YAC7B,IAAI,EAAE;gBACF,MAAM,EAAE,OAAO,CAAC,EAAE;gBAClB,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC;gBACzB,GAAG,EAAE,4CAA4C;aACpD;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC,CAAC;IAEJ,4CAA4C;IAC5C,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3C,IAAI,EAAE;YACF,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,gGAAgG;YAC1G,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;YAC7C,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;SACvE;KACJ,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QACxC,IAAI,EAAE;YACF,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,yEAAyE;YACnF,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;YAC7C,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;SACxE;KACJ,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3C,IAAI,EAAE;YACF,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,kFAAkF;YAC5F,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;YAC7C,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;SACxE;KACJ,CAAC,CAAC;IAEH,sCAAsC;IACtC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE;SACpG,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE;SACjG,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE;SACrG,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE;SAC3F,CAAC;KACL,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE;SAC7F,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE;SACnF,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE;SACjF,CAAC;KACL,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;QACjD,IAAI,EAAE;YACF,OAAO,EAAE,YAAY,CAAC,EAAE;YACxB,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;gBACvB,IAAI,EAAE,2BAA2B;gBACjC,QAAQ,EAAE;oBACN;wBACI,EAAE,EAAE,qBAAqB;wBACzB,KAAK,EAAE,qBAAqB;wBAC5B,WAAW,EAAE,oDAAoD;wBACjE,MAAM,EAAE;4BACJ;gCACI,EAAE,EAAE,WAAW;gCACf,IAAI,EAAE,WAAW;gCACjB,WAAW,EAAE,iEAAiE;gCAC9E,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,YAAY;gCAChB,IAAI,EAAE,YAAY;gCAClB,WAAW,EAAE,mDAAmD;gCAChE,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,YAAY;gCAChB,IAAI,EAAE,YAAY;gCAClB,WAAW,EAAE,4DAA4D;gCACzE,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,WAAW;gCACf,IAAI,EAAE,WAAW;gCACjB,WAAW,EAAE,2DAA2D;gCACxE,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;yBACJ;qBACJ;oBACD;wBACI,EAAE,EAAE,oBAAoB;wBACxB,KAAK,EAAE,sBAAsB;wBAC7B,WAAW,EAAE,2CAA2C;wBACxD,MAAM,EAAE;4BACJ;gCACI,EAAE,EAAE,WAAW;gCACf,IAAI,EAAE,WAAW;gCACjB,WAAW,EAAE,wDAAwD;gCACrE,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,YAAY;gCAChB,IAAI,EAAE,YAAY;gCAClB,WAAW,EAAE,6CAA6C;gCAC1D,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,YAAY;gCAChB,IAAI,EAAE,YAAY;gCAClB,WAAW,EAAE,uCAAuC;gCACpD,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,WAAW;gCACf,IAAI,EAAE,WAAW;gCACjB,WAAW,EAAE,qCAAqC;gCAClD,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;yBACJ;qBACJ;oBACD;wBACI,EAAE,EAAE,eAAe;wBACnB,KAAK,EAAE,eAAe;wBACtB,WAAW,EAAE,qCAAqC;wBAClD,MAAM,EAAE;4BACJ;gCACI,EAAE,EAAE,WAAW;gCACf,IAAI,EAAE,WAAW;gCACjB,WAAW,EAAE,kDAAkD;gCAC/D,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,YAAY;gCAChB,IAAI,EAAE,YAAY;gCAClB,WAAW,EAAE,gDAAgD;gCAC7D,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,YAAY;gCAChB,IAAI,EAAE,YAAY;gCAClB,WAAW,EAAE,kDAAkD;gCAC/D,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,WAAW;gCACf,IAAI,EAAE,WAAW;gCACjB,WAAW,EAAE,oCAAoC;gCACjD,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;yBACJ;qBACJ;oBACD;wBACI,EAAE,EAAE,mBAAmB;wBACvB,KAAK,EAAE,qBAAqB;wBAC5B,WAAW,EAAE,uCAAuC;wBACpD,MAAM,EAAE;4BACJ;gCACI,EAAE,EAAE,WAAW;gCACf,IAAI,EAAE,WAAW;gCACjB,WAAW,EAAE,sDAAsD;gCACnE,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,YAAY;gCAChB,IAAI,EAAE,YAAY;gCAClB,WAAW,EAAE,wCAAwC;gCACrD,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,YAAY;gCAChB,IAAI,EAAE,YAAY;gCAClB,WAAW,EAAE,4CAA4C;gCACzD,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,WAAW;gCACf,IAAI,EAAE,WAAW;gCACjB,WAAW,EAAE,sCAAsC;gCACnD,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;yBACJ;qBACJ;iBACJ;aACJ,CAAC;SACL;KACJ,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;QAClD,IAAI,EAAE;YACF,OAAO,EAAE,SAAS,CAAC,EAAE;YACrB,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;gBACvB,IAAI,EAAE,+BAA+B;gBACrC,QAAQ,EAAE;oBACN;wBACI,EAAE,EAAE,uBAAuB;wBAC3B,KAAK,EAAE,uBAAuB;wBAC9B,WAAW,EAAE,kDAAkD;wBAC/D,MAAM,EAAE;4BACJ;gCACI,EAAE,EAAE,WAAW;gCACf,IAAI,EAAE,WAAW;gCACjB,WAAW,EAAE,0DAA0D;gCACvE,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,YAAY;gCAChB,IAAI,EAAE,YAAY;gCAClB,WAAW,EAAE,uDAAuD;gCACpE,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,YAAY;gCAChB,IAAI,EAAE,YAAY;gCAClB,WAAW,EAAE,mDAAmD;gCAChE,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,WAAW;gCACf,IAAI,EAAE,WAAW;gCACjB,WAAW,EAAE,+CAA+C;gCAC5D,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;yBACJ;qBACJ;oBACD;wBACI,EAAE,EAAE,iBAAiB;wBACrB,KAAK,EAAE,0BAA0B;wBACjC,WAAW,EAAE,wCAAwC;wBACrD,MAAM,EAAE;4BACJ;gCACI,EAAE,EAAE,WAAW;gCACf,IAAI,EAAE,WAAW;gCACjB,WAAW,EAAE,kDAAkD;gCAC/D,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,YAAY;gCAChB,IAAI,EAAE,YAAY;gCAClB,WAAW,EAAE,6CAA6C;gCAC1D,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,YAAY;gCAChB,IAAI,EAAE,YAAY;gCAClB,WAAW,EAAE,sCAAsC;gCACnD,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,WAAW;gCACf,IAAI,EAAE,WAAW;gCACjB,WAAW,EAAE,qCAAqC;gCAClD,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;yBACJ;qBACJ;oBACD;wBACI,EAAE,EAAE,YAAY;wBAChB,KAAK,EAAE,YAAY;wBACnB,WAAW,EAAE,0CAA0C;wBACvD,MAAM,EAAE;4BACJ;gCACI,EAAE,EAAE,WAAW;gCACf,IAAI,EAAE,WAAW;gCACjB,WAAW,EAAE,mDAAmD;gCAChE,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,YAAY;gCAChB,IAAI,EAAE,YAAY;gCAClB,WAAW,EAAE,oCAAoC;gCACjD,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,YAAY;gCAChB,IAAI,EAAE,YAAY;gCAClB,WAAW,EAAE,uCAAuC;gCACpD,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,WAAW;gCACf,IAAI,EAAE,WAAW;gCACjB,WAAW,EAAE,oCAAoC;gCACjD,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;yBACJ;qBACJ;oBACD;wBACI,EAAE,EAAE,cAAc;wBAClB,KAAK,EAAE,cAAc;wBACrB,WAAW,EAAE,iDAAiD;wBAC9D,MAAM,EAAE;4BACJ;gCACI,EAAE,EAAE,WAAW;gCACf,IAAI,EAAE,WAAW;gCACjB,WAAW,EAAE,+CAA+C;gCAC5D,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,YAAY;gCAChB,IAAI,EAAE,YAAY;gCAClB,WAAW,EAAE,uCAAuC;gCACpD,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,YAAY;gCAChB,IAAI,EAAE,YAAY;gCAClB,WAAW,EAAE,+CAA+C;gCAC5D,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;4BACD;gCACI,EAAE,EAAE,WAAW;gCACf,IAAI,EAAE,WAAW;gCACjB,WAAW,EAAE,mCAAmC;gCAChD,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;6BACnB;yBACJ;qBACJ;iBACJ;aACJ,CAAC;SACL;KACJ,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,mBAAmB,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;QAC5D,IAAI,EAAE;YACF,OAAO,EAAE,SAAS,CAAC,EAAE;YACrB,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;gBACvB,IAAI,EAAE,8BAA8B;gBACpC,UAAU,EAAE;oBACR;wBACI,EAAE,EAAE,QAAQ;wBACZ,KAAK,EAAE,IAAI;wBACX,aAAa,EAAE,EAAE;wBACjB,aAAa,EAAE,GAAG;wBAClB,WAAW,EAAE,qCAAqC;wBAClD,KAAK,EAAE,SAAS;qBACnB;oBACD;wBACI,EAAE,EAAE,GAAG;wBACP,KAAK,EAAE,GAAG;wBACV,aAAa,EAAE,EAAE;wBACjB,aAAa,EAAE,EAAE;wBACjB,WAAW,EAAE,4BAA4B;wBACzC,KAAK,EAAE,SAAS;qBACnB;oBACD;wBACI,EAAE,EAAE,SAAS;wBACb,KAAK,EAAE,IAAI;wBACX,aAAa,EAAE,EAAE;wBACjB,aAAa,EAAE,EAAE;wBACjB,WAAW,EAAE,8BAA8B;wBAC3C,KAAK,EAAE,SAAS;qBACnB;oBACD;wBACI,EAAE,EAAE,QAAQ;wBACZ,KAAK,EAAE,IAAI;wBACX,aAAa,EAAE,EAAE;wBACjB,aAAa,EAAE,EAAE;wBACjB,WAAW,EAAE,6BAA6B;wBAC1C,KAAK,EAAE,SAAS;qBACnB;oBACD;wBACI,EAAE,EAAE,GAAG;wBACP,KAAK,EAAE,GAAG;wBACV,aAAa,EAAE,EAAE;wBACjB,aAAa,EAAE,EAAE;wBACjB,WAAW,EAAE,sCAAsC;wBACnD,KAAK,EAAE,SAAS;qBACnB;oBACD;wBACI,EAAE,EAAE,SAAS;wBACb,KAAK,EAAE,IAAI;wBACX,aAAa,EAAE,EAAE;wBACjB,aAAa,EAAE,EAAE;wBACjB,WAAW,EAAE,uCAAuC;wBACpD,KAAK,EAAE,SAAS;qBACnB;oBACD;wBACI,EAAE,EAAE,QAAQ;wBACZ,KAAK,EAAE,IAAI;wBACX,aAAa,EAAE,EAAE;wBACjB,aAAa,EAAE,EAAE;wBACjB,WAAW,EAAE,wCAAwC;wBACrD,KAAK,EAAE,SAAS;qBACnB;oBACD;wBACI,EAAE,EAAE,GAAG;wBACP,KAAK,EAAE,GAAG;wBACV,aAAa,EAAE,EAAE;wBACjB,aAAa,EAAE,EAAE;wBACjB,WAAW,EAAE,kCAAkC;wBAC/C,KAAK,EAAE,SAAS;qBACnB;oBACD;wBACI,EAAE,EAAE,SAAS;wBACb,KAAK,EAAE,IAAI;wBACX,aAAa,EAAE,EAAE;wBACjB,aAAa,EAAE,EAAE;wBACjB,WAAW,EAAE,iCAAiC;wBAC9C,KAAK,EAAE,SAAS;qBACnB;oBACD;wBACI,EAAE,EAAE,GAAG;wBACP,KAAK,EAAE,GAAG;wBACV,aAAa,EAAE,EAAE;wBACjB,aAAa,EAAE,EAAE;wBACjB,WAAW,EAAE,wCAAwC;wBACrD,KAAK,EAAE,SAAS;qBACnB;oBACD;wBACI,EAAE,EAAE,GAAG;wBACP,KAAK,EAAE,GAAG;wBACV,aAAa,EAAE,CAAC;wBAChB,aAAa,EAAE,EAAE;wBACjB,WAAW,EAAE,mDAAmD;wBAChE,KAAK,EAAE,SAAS;qBACnB;iBACJ;aACJ,CAAC;SACL;KACJ,CAAC,CAAC;IAEH,qDAAqD;IACrD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAEnE,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAClC,sBAAsB;QACtB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE;gBACF,KAAK,EAAE,2BAA2B;gBAClC,YAAY,EAAE,oLAAoL;gBAClM,OAAO,EAAE,QAAQ;gBACjB,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzB,OAAO,EAAE,YAAY,CAAC,EAAE;gBACxB,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC5B,IAAI,EAAE,KAAK;gBACX,QAAQ,EAAE,GAAG;gBACb,MAAM,EAAE,GAAG;gBACX,YAAY,EAAE,aAAa,CAAC,EAAE;aACjC;SACJ,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE;gBACF,KAAK,EAAE,sBAAsB;gBAC7B,YAAY,EAAE,qHAAqH;gBACnI,OAAO,EAAE,QAAQ;gBACjB,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzB,OAAO,EAAE,YAAY,CAAC,EAAE;gBACxB,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC5B,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,GAAG;gBACX,YAAY,EAAE,aAAa,CAAC,EAAE;aACjC;SACJ,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE;gBACF,KAAK,EAAE,iBAAiB;gBACxB,YAAY,EAAE,+GAA+G;gBAC7H,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzB,OAAO,EAAE,YAAY,CAAC,EAAE;gBACxB,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,GAAG;gBACb,MAAM,EAAE,GAAG;gBACX,YAAY,EAAE,aAAa,CAAC,EAAE;aACjC;SACJ,CAAC;QAEF,uCAAuC;QACvC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE;gBACF,KAAK,EAAE,4BAA4B;gBACnC,YAAY,EAAE,6HAA6H;gBAC3I,OAAO,EAAE,QAAQ,EAAE,oBAAoB;gBACvC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzB,OAAO,EAAE,SAAS,CAAC,EAAE;gBACrB,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC7B,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,GAAG;gBACb,MAAM,EAAE,GAAG;gBACX,YAAY,EAAE,cAAc,CAAC,EAAE;gBAC/B,iBAAiB,EAAE,mBAAmB,CAAC,EAAE;gBACzC,MAAM,EAAE,IAAI;aACf;SACJ,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE;gBACF,KAAK,EAAE,0BAA0B;gBACjC,YAAY,EAAE,4FAA4F;gBAC1G,OAAO,EAAE,SAAS,EAAE,iBAAiB;gBACrC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzB,OAAO,EAAE,SAAS,CAAC,EAAE;gBACrB,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC7B,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,GAAG;gBACX,YAAY,EAAE,cAAc,CAAC,EAAE;gBAC/B,iBAAiB,EAAE,mBAAmB,CAAC,EAAE;aAC5C;SACJ,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE;gBACF,KAAK,EAAE,8BAA8B;gBACrC,YAAY,EAAE,iEAAiE;gBAC/E,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;gBAC1D,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzB,OAAO,EAAE,SAAS,CAAC,EAAE;gBACrB,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC7B,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,GAAG;gBACX,YAAY,EAAE,cAAc,CAAC,EAAE;gBAC/B,iBAAiB,EAAE,mBAAmB,CAAC,EAAE;aAC5C;SACJ,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE;gBACF,KAAK,EAAE,iCAAiC;gBACxC,YAAY,EAAE,8GAA8G;gBAC5H,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;gBAC1D,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzB,OAAO,EAAE,SAAS,CAAC,EAAE;gBACrB,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC7B,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,GAAG;gBACX,YAAY,EAAE,cAAc,CAAC,EAAE;gBAC/B,iBAAiB,EAAE,mBAAmB,CAAC,EAAE;aAC5C;SACJ,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE;gBACF,KAAK,EAAE,gCAAgC;gBACvC,YAAY,EAAE,wGAAwG;gBACtH,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;gBAC3D,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzB,OAAO,EAAE,SAAS,CAAC,EAAE;gBACrB,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC7B,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,GAAG,EAAE,mBAAmB;gBAClC,MAAM,EAAE,GAAG;gBACX,YAAY,EAAE,cAAc,CAAC,EAAE;gBAC/B,iBAAiB,EAAE,mBAAmB,CAAC,EAAE;aAC5C;SACJ,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE;gBACF,KAAK,EAAE,2CAA2C;gBAClD,YAAY,EAAE,yKAAyK;gBACvL,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;gBAC3D,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzB,OAAO,EAAE,SAAS,CAAC,EAAE;gBACrB,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,GAAG;gBACb,MAAM,EAAE,GAAG;gBACX,YAAY,EAAE,cAAc,CAAC,EAAE;gBAC/B,iBAAiB,EAAE,mBAAmB,CAAC,EAAE;aAC5C;SACJ,CAAC;KACL,CAAC,CAAC;IAEH,wEAAwE;IACxE,MAAM,mBAAmB,GAAU,EAAE,CAAC;IAEtC,gGAAgG;IAChG,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAE,YAAoB,EAAE,cAAsB,EAAE,EAAE;QACrF,+CAA+C;QAC/C,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,+BAA+B;QACjI,MAAM,WAAW,GAAG,eAAe,CAAC,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAE3E,kCAAkC;QAClC,IAAI,UAAU,GAAG,WAAW,CAAC;QAC7B,IAAI,cAAc,KAAK,MAAM;YAAE,UAAU,IAAI,IAAI,CAAC,CAAC,mBAAmB;QACtE,IAAI,cAAc,KAAK,MAAM;YAAE,UAAU,IAAI,IAAI,CAAC,CAAC,0BAA0B;QAC7E,IAAI,cAAc,KAAK,UAAU;YAAE,UAAU,IAAI,IAAI,CAAC,CAAC,8BAA8B;QAErF,sBAAsB;QACtB,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC;QAEtE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,+BAA+B;IACvF,CAAC,CAAC;IAEF,2CAA2C;IAC3C,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAE,cAAsB,EAAE,EAAE;QAChF,MAAM,UAAU,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC;QAC5C,MAAM,QAAQ,GAAG;YACb,SAAS,EAAE;gBACP,8DAA8D;gBAC9D,kDAAkD;gBAClD,mDAAmD;gBACnD,oEAAoE;aACvE;YACD,IAAI,EAAE;gBACF,uDAAuD;gBACvD,+DAA+D;gBAC/D,0DAA0D;gBAC1D,wDAAwD;aAC3D;YACD,OAAO,EAAE;gBACL,kEAAkE;gBAClE,oDAAoD;gBACpD,+DAA+D;gBAC/D,0DAA0D;aAC7D;YACD,iBAAiB,EAAE;gBACf,sEAAsE;gBACtE,8DAA8D;gBAC9D,gEAAgE;gBAChE,+CAA+C;aAClD;SACJ,CAAC;QAEF,IAAI,QAA+B,CAAC;QACpC,IAAI,UAAU,IAAI,EAAE;YAAE,QAAQ,GAAG,WAAW,CAAC;aACxC,IAAI,UAAU,IAAI,EAAE;YAAE,QAAQ,GAAG,MAAM,CAAC;aACxC,IAAI,UAAU,IAAI,EAAE;YAAE,QAAQ,GAAG,SAAS,CAAC;;YAC3C,QAAQ,GAAG,mBAAmB,CAAC;QAEpC,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC;IAEF,4DAA4D;IAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,kCAAkC;QAC5D,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,yBAAyB;QACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAwB;YAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,sBAAsB;YAC/D,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,iCAAiC;YAEzD,mBAAmB,CAAC,IAAI,CAAC;gBACrB,YAAY,EAAE,UAAU,CAAC,EAAE;gBAC3B,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,SAAS,EAAE,WAAW;gBACtB,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC9G,aAAa,EAAE,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBACrD,eAAe,EAAE,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;gBACnG,QAAQ,EAAE,QAAQ,IAAI,WAAW;aACpC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,uEAAuE;IACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,oCAAoC;QAC/E,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,yBAAyB;QACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,kCAAkC;YAC7D,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;YAE1D,4DAA4D;YAC5D,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;YAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,GAAG,QAAQ,CAAC;YAChD,MAAM,WAAW,GAAG,SAAS,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,kCAAkC;YAC/H,MAAM,QAAQ,GAAG,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,iCAAiC;YAElF,mBAAmB,CAAC,IAAI,CAAC;gBACrB,YAAY,EAAE,UAAU,CAAC,EAAE;gBAC3B,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,SAAS,EAAE,WAAW;gBACtB,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC9G,aAAa,EAAE,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBACrD,eAAe,EAAE,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;gBACnG,QAAQ,EAAE,QAAQ,IAAI,WAAW;gBACjC,WAAW,EAAE,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;oBAClD,QAAQ,EAAE;wBACN,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,EAAE;wBACvG,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE;wBAC5G,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE;wBAC9F,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,EAAE;qBACjG;iBACJ,CAAC,CAAC,CAAC,CAAC,IAAI;aACZ,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,wEAAwE;IACxE,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,qEAAqE;IAE5F,MAAM,CAAC,IAAI,CAAC,YAAY,mBAAmB,CAAC,MAAM,8BAA8B,UAAU,EAAE,CAAC,CAAC;IAE9F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;QAC3D,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CACrC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CACjD,CAAC,CAAC;QAEH,wEAAwE;QACxE,IAAI,CAAC,GAAG,UAAU,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC;YAC9C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc;QAC1E,CAAC;QAED,kDAAkD;QAClD,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,mBAAmB,CAAC,MAAM,EAAE,CAAC;YAC9E,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,mBAAmB,CAAC,MAAM,cAAc,CAAC,CAAC;QAC7H,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,4BAA4B,mBAAmB,CAAC,MAAM,cAAc,CAAC,CAAC;IAElF,2BAA2B;IAC3B,MAAM,OAAO,CAAC,GAAG,CAAC;QACd,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;YACvB,IAAI,EAAE;gBACF,OAAO,EAAE,mGAAmG;gBAC5G,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzB,OAAO,EAAE,YAAY,CAAC,EAAE;gBACxB,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;aAC3D;SACJ,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;YACvB,IAAI,EAAE;gBACF,OAAO,EAAE,gGAAgG;gBACzG,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzB,OAAO,EAAE,SAAS,CAAC,EAAE;gBACrB,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;aAC1D;SACJ,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;YACvB,IAAI,EAAE;gBACF,OAAO,EAAE,2GAA2G;gBACpH,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzB,OAAO,EAAE,YAAY,CAAC,EAAE;gBACxB,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;aAC3D;SACJ,CAAC;KACL,CAAC,CAAC;IAEH,2EAA2E;IAC3E,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAE9C,mDAAmD;IACnD,MAAM,cAAc,GAAG;QACnB,yCAAyC;QACzC;YACI,IAAI,EAAE,2BAA2B;YACjC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,8BAA8B;YACvC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,OAAO,EAAE,SAAS,CAAC,EAAE;YACrB,KAAK,EAAE,SAAS;SACnB;QACD;YACI,IAAI,EAAE,yBAAyB;YAC/B,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,mBAAmB;YAC7B,OAAO,EAAE,uDAAuD;YAChE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,KAAK,EAAE,SAAS;SACnB;QACD;YACI,IAAI,EAAE,0BAA0B;YAChC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,iCAAiC;YAC1C,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,KAAK,EAAE,SAAS;SACnB;QACD;YACI,IAAI,EAAE,qCAAqC;YAC3C,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,2CAA2C;YACpD,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,KAAK,EAAE,SAAS;SACnB;QACD;YACI,IAAI,EAAE,uBAAuB;YAC7B,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,oCAAoC;YAC7C,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,KAAK,EAAE,SAAS;SACnB;QAED,gBAAgB;QAChB;YACI,IAAI,EAAE,2BAA2B;YACjC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,uBAAuB;YAChC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,OAAO,EAAE,SAAS,CAAC,EAAE;YACrB,KAAK,EAAE,SAAS;SACnB;QACD;YACI,IAAI,EAAE,iBAAiB;YACvB,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,iBAAiB;YAC3B,OAAO,EAAE,4BAA4B;YACrC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,KAAK,EAAE,SAAS;SACnB;QACD;YACI,IAAI,EAAE,0BAA0B;YAChC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,sCAAsC;YAC/C,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,KAAK,EAAE,SAAS;SACnB;QACD;YACI,IAAI,EAAE,0BAA0B;YAChC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,8BAA8B;YACvC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,KAAK,EAAE,SAAS;SACnB;QAED,kBAAkB;QAClB;YACI,IAAI,EAAE,2BAA2B;YACjC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,0BAA0B;YACnC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,OAAO,EAAE,SAAS,CAAC,EAAE;YACrB,KAAK,EAAE,SAAS;SACnB;QACD;YACI,IAAI,EAAE,0BAA0B;YAChC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,yBAAyB;YACnC,OAAO,EAAE,8CAA8C;YACvD,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,KAAK,EAAE,SAAS;SACnB;QACD;YACI,IAAI,EAAE,0BAA0B;YAChC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,kBAAkB;YAC3B,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,KAAK,EAAE,SAAS;SACnB;QACD;YACI,IAAI,EAAE,0BAA0B;YAChC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,qCAAqC;YAC9C,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,KAAK,EAAE,SAAS;SACnB;QAED,kBAAkB;QAClB;YACI,IAAI,EAAE,2BAA2B;YACjC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,6BAA6B;YACtC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,OAAO,EAAE,SAAS,CAAC,EAAE;YACrB,KAAK,EAAE,SAAS;SACnB;QACD;YACI,IAAI,EAAE,sBAAsB;YAC5B,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,qBAAqB;YAC/B,OAAO,EAAE,oCAAoC;YAC7C,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,KAAK,EAAE,SAAS;SACnB;QACD;YACI,IAAI,EAAE,0BAA0B;YAChC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,oBAAoB;YAC7B,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,KAAK,EAAE,SAAS;SACnB;QACD;YACI,IAAI,EAAE,qCAAqC;YAC3C,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,yCAAyC;YAClD,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,KAAK,EAAE,SAAS;SACnB;QACD;YACI,IAAI,EAAE,mBAAmB;YACzB,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,sCAAsC;YAC/C,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,KAAK,EAAE,SAAS;SACnB;QAED,gBAAgB;QAChB;YACI,IAAI,EAAE,2BAA2B;YACjC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,sBAAsB;YAC/B,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,OAAO,EAAE,SAAS,CAAC,EAAE;YACrB,KAAK,EAAE,SAAS;SACnB;QACD;YACI,IAAI,EAAE,+BAA+B;YACrC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,yBAAyB;YACnC,OAAO,EAAE,sCAAsC;YAC/C,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,KAAK,EAAE,SAAS;SACnB;QACD;YACI,IAAI,EAAE,0BAA0B;YAChC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,2BAA2B;YACpC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,KAAK,EAAE,SAAS;SACnB;QACD;YACI,IAAI,EAAE,sBAAsB;YAC5B,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC1C,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACxC,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,gCAAgC;YACzC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,KAAK,EAAE,SAAS;SACnB;QAED,qCAAqC;QACrC;YACI,IAAI,EAAE,kBAAkB;YACxB,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAC5D,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,aAAa;YAC1F,QAAQ,EAAE,sBAAsB;YAChC,OAAO,EAAE,wCAAwC;YACjD,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,OAAO,EAAE,YAAY,CAAC,EAAE;YACxB,KAAK,EAAE,SAAS;SACnB;QACD;YACI,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAC5D,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAC3E,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,6CAA6C;YACtD,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,OAAO,EAAE,YAAY,CAAC,EAAE;YACxB,KAAK,EAAE,SAAS;SACnB;KACJ,CAAC;IAEF,+DAA+D;IAC/D,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAE5B,MAAM,CAAC,IAAI,CAAC,YAAY,cAAc,CAAC,MAAM,yBAAyB,gBAAgB,EAAE,CAAC,CAAC;IAE1F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,gBAAgB,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC;QAC5D,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAChC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CACvC,CAAC,CAAC;QAEH,8BAA8B;QAC9B,IAAI,CAAC,GAAG,gBAAgB,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC;YAC/C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,4BAA4B,cAAc,CAAC,MAAM,SAAS,CAAC,CAAC;IAExE,gCAAgC;IAChC,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACrE,MAAM,OAAO,CAAC,GAAG,CAAC;QACd,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE;gBACF,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,YAAY,CAAC,EAAE;gBACxB,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACnE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;gBAC3C,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;aAChD;SACJ,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE;gBACF,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,SAAS,CAAC,EAAE;gBACrB,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACpE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;aAC/C;SACJ,CAAC;KACL,CAAC,CAAC;IAEH,4DAA4D;IAC5D,MAAM,OAAO,CAAC,GAAG,CAAC;QACd,mCAAmC;QACnC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,gBAAgB,EAAE,8CAA8C,CAAC;QACjG,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,gBAAgB,EAAE,wCAAwC,CAAC;QAC3F,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,eAAe,EAAE,uDAAuD,CAAC;QACzG,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,gBAAgB,EAAE,4DAA4D,CAAC;QAE/G,eAAe;QACf,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,mBAAmB,EAAE,kDAAkD,CAAC;QACxG,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,mBAAmB,EAAE,kDAAkD,CAAC;QACxG,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,gBAAgB,EAAE,4CAA4C,CAAC;QAC/F,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,oBAAoB,EAAE,gCAAgC,CAAC;KAC1F,CAAC,CAAC;IAEH,wCAAwC;IACxC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,6BAA6B;QACpC,UAAU,EAAE,eAAe;QAC3B,UAAU,EAAE,UAAU;QACtB,UAAU,EAAE;YACR,sDAAsD;YACtD,yCAAyC;YACzC,gCAAgC;SACnC;QACD,SAAS,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC;QAC7C,QAAQ,EAAE,SAAS;QACnB,cAAc,EAAE,qBAAqB;KACxC,CAAC,CAAC;IAEH,mCAAmC;IACnC,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;QACrD,IAAI,EAAE;YACF,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,+BAA+B;YACrC,aAAa,EAAE,KAAK;SACvB;KACJ,CAAC,CAAC;IAEH,8BAA8B;IAC9B,MAAM,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC;QACnC,IAAI,EAAE;YACF,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACtB,cAAc,EAAE,eAAe,CAAC,EAAE;YAClC,IAAI,EAAE,OAAO;SAChB;KACJ,CAAC,CAAC;IAEH,kBAAkB;IAClB,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QACxB,IAAI,EAAE;YACF,KAAK,EAAE,mCAAmC;YAC1C,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,YAAY,CAAC,EAAE;YACxB,cAAc,EAAE,eAAe,CAAC,EAAE;YAClC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;SAC9B;KACJ,CAAC,CAAC;IAEH,6CAA6C;IAC7C,mCAAmC;IACnC,MAAM,oBAAoB,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;QAC1D,IAAI,EAAE;YACF,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,sBAAsB;YAC5B,aAAa,EAAE,IAAI;SACtB;KACJ,CAAC,CAAC;IAEH,sCAAsC;IACtC,MAAM,OAAO,CAAC,GAAG,CAAC;QACd,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC;YAC7B,IAAI,EAAE;gBACF,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,kBAAkB;gBAC1C,cAAc,EAAE,oBAAoB,CAAC,EAAE;gBACvC,IAAI,EAAE,QAAQ;aACjB;SACJ,CAAC;QACF,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC;YAC7B,IAAI,EAAE;gBACF,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,iBAAiB;gBACzC,cAAc,EAAE,oBAAoB,CAAC,EAAE;gBACvC,IAAI,EAAE,OAAO;aAChB;SACJ,CAAC;QACF,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC;YAC7B,IAAI,EAAE;gBACF,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,iBAAiB;gBACzC,cAAc,EAAE,oBAAoB,CAAC,EAAE;gBACvC,IAAI,EAAE,QAAQ;aACjB;SACJ,CAAC;KACL,CAAC,CAAC;IAEH,gCAAgC;IAChC,MAAM,oBAAoB,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;QAC1D,IAAI,EAAE;YACF,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;YACV,aAAa,EAAE,IAAI;SACtB;KACJ,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,GAAG,CAAC;QACd,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC;YAC7B,IAAI,EAAE;gBACF,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,eAAe;gBACvC,cAAc,EAAE,oBAAoB,CAAC,EAAE;gBACvC,IAAI,EAAE,QAAQ;aACjB;SACJ,CAAC;QACF,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC;YAC7B,IAAI,EAAE;gBACF,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,iBAAiB;gBACzC,cAAc,EAAE,oBAAoB,CAAC,EAAE;gBACvC,IAAI,EAAE,QAAQ;aACjB;SACJ,CAAC;KACL,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;QAC1D,IAAI,EAAE;YACF,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;YACV,aAAa,EAAE,IAAI;SACtB;KACJ,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,GAAG,CAAC;QACd,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC;YAC7B,IAAI,EAAE;gBACF,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,eAAe;gBACvC,cAAc,EAAE,oBAAoB,CAAC,EAAE;gBACvC,IAAI,EAAE,QAAQ;aACjB;SACJ,CAAC;QACF,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC;YAC7B,IAAI,EAAE;gBACF,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,kBAAkB;gBAC1C,cAAc,EAAE,oBAAoB,CAAC,EAAE;gBACvC,IAAI,EAAE,QAAQ;aACjB;SACJ,CAAC;KACL,CAAC,CAAC;IAEH,mCAAmC;IACnC,MAAM,YAAY,GAAG;QACjB,mCAAmC;QACnC;YACI,OAAO,EAAE,4GAA4G;YACrH,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QACD;YACI,OAAO,EAAE,mGAAmG;YAC5G,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QACD;YACI,OAAO,EAAE,iGAAiG;YAC1G,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QACD;YACI,OAAO,EAAE,kGAAkG;YAC3G,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QACD;YACI,OAAO,EAAE,4GAA4G;YACrH,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QACD;YACI,OAAO,EAAE,gHAAgH;YACzH,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QACD;YACI,OAAO,EAAE,mGAAmG;YAC5G,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QACD;YACI,OAAO,EAAE,mEAAmE;YAC5E,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QAED,wDAAwD;QACxD;YACI,OAAO,EAAE,0IAA0I;YACnJ,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QACD;YACI,OAAO,EAAE,sJAAsJ;YAC/J,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QACD;YACI,OAAO,EAAE,gFAAgF;YACzF,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QACD;YACI,OAAO,EAAE,0NAA0N;YACnO,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QACD;YACI,OAAO,EAAE,2EAA2E;YACpF,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QACD;YACI,OAAO,EAAE,oIAAoI;YAC7I,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QACD;YACI,OAAO,EAAE,sFAAsF;YAC/F,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QAED,6DAA6D;QAC7D;YACI,OAAO,EAAE,iHAAiH;YAC1H,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QACD;YACI,OAAO,EAAE,qIAAqI;YAC9I,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QACD;YACI,OAAO,EAAE,oJAAoJ;YAC7J,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QACD;YACI,OAAO,EAAE,yIAAyI;YAClJ,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QACD;YACI,OAAO,EAAE,uGAAuG;YAChH,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;QACD;YACI,OAAO,EAAE,uIAAuI;YAChJ,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,cAAc,EAAE,oBAAoB,CAAC,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;SAC7C;KACJ,CAAC;IAEF,qEAAqE;IACrE,MAAM,kBAAkB,GAAG,EAAE,CAAC;IAE9B,MAAM,CAAC,IAAI,CAAC,YAAY,YAAY,CAAC,MAAM,gCAAgC,kBAAkB,EAAE,CAAC,CAAC;IAEjG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,kBAAkB,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,CAAC;QAC5D,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAClC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAC3C,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,4BAA4B,YAAY,CAAC,MAAM,gBAAgB,CAAC,CAAC;IAE7E,wCAAwC;IACxC,MAAM,OAAO,CAAC,GAAG,CAAC;QACd,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE;gBACF,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,YAAY,CAAC,EAAE;gBACxB,KAAK,EAAE,SAAS;aACnB;SACJ,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE;gBACF,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,SAAS,CAAC,EAAE;gBACrB,KAAK,EAAE,SAAS;aACnB;SACJ,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE;gBACF,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,YAAY,CAAC,EAAE;gBACxB,KAAK,EAAE,SAAS;aACnB;SACJ,CAAC;KACL,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IAClE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3B,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACpD,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACrD,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC7C,MAAM,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAC9E,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACvD,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACxD,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAC/D,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC5D,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC5E,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC3D,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACrC,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IACxE,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC1C,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACpD,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC/C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACrD,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACvD,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC7D,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACtE,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IACnE,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACjE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACrE,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACpE,MAAM,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACrE,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;AAC/E,CAAC,CAAC;AAEF,8DAA8D;AAC9D,qCAAqC;AACrC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAEnD,IAAI,YAAY,EAAE,CAAC;IACjB,CAAC,KAAK,IAAI,EAAE;QACV,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,MAAM,YAAY,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC;AACP,CAAC","debug_id":"09930a12-9a9b-58e3-b149-ce107a08a4b0"}
@@ -0,0 +1,10 @@
1
+ export {};
2
+ /**
3
+ * Generate labchat responses
4
+ * Allow for the generation of the following:
5
+ * - Assignment(s) either individual or bulk as an lesson / course plan.
6
+ * - Worksheet(s) either individual or bulk as an lesson / course plan.
7
+ * - Files (PDFs)
8
+ * @param labChatId
9
+ */
10
+ //# sourceMappingURL=aiLabChat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aiLabChat.d.ts","sourceRoot":"/","sources":["server/pipelines/aiLabChat.ts"],"names":[],"mappings":";AAmEA;;;;;;;GAOG"}