@studious-lms/server 1.11.0 → 1.13.0

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 (188) hide show
  1. package/.env.example +3 -0
  2. package/dist/index.js +40 -4
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/config/cors.d.ts.map +1 -1
  5. package/dist/lib/config/cors.js +7 -2
  6. package/dist/lib/config/cors.js.map +1 -1
  7. package/dist/lib/config/env.d.ts +8 -0
  8. package/dist/lib/config/env.d.ts.map +1 -1
  9. package/dist/lib/config/env.js +5 -2
  10. package/dist/lib/config/env.js.map +1 -1
  11. package/dist/lib/pusher.d.ts +2 -1
  12. package/dist/lib/pusher.d.ts.map +1 -1
  13. package/dist/lib/pusher.js +4 -3
  14. package/dist/lib/pusher.js.map +1 -1
  15. package/dist/models/agenda.d.ts +6 -0
  16. package/dist/models/agenda.d.ts.map +1 -1
  17. package/dist/models/announcement.d.ts +3 -0
  18. package/dist/models/announcement.d.ts.map +1 -1
  19. package/dist/models/assignment.d.ts +61 -0
  20. package/dist/models/assignment.d.ts.map +1 -1
  21. package/dist/models/auth.d.ts +6 -0
  22. package/dist/models/auth.d.ts.map +1 -1
  23. package/dist/models/class.d.ts +28 -0
  24. package/dist/models/class.d.ts.map +1 -1
  25. package/dist/models/class.js +12 -3
  26. package/dist/models/class.js.map +1 -1
  27. package/dist/models/comment.d.ts +13 -0
  28. package/dist/models/comment.d.ts.map +1 -1
  29. package/dist/models/comment.js +3 -2
  30. package/dist/models/comment.js.map +1 -1
  31. package/dist/models/conversation.d.ts +17 -0
  32. package/dist/models/conversation.d.ts.map +1 -1
  33. package/dist/models/conversation.js +13 -2
  34. package/dist/models/conversation.js.map +1 -1
  35. package/dist/models/event.d.ts +12 -0
  36. package/dist/models/event.d.ts.map +1 -1
  37. package/dist/models/file.d.ts +38 -0
  38. package/dist/models/file.d.ts.map +1 -1
  39. package/dist/models/folder.d.ts +6 -0
  40. package/dist/models/folder.d.ts.map +1 -1
  41. package/dist/models/labChat.d.ts +6 -0
  42. package/dist/models/labChat.d.ts.map +1 -1
  43. package/dist/models/newtonChat.d.ts +3 -0
  44. package/dist/models/newtonChat.d.ts.map +1 -1
  45. package/dist/models/school.d.ts +3 -0
  46. package/dist/models/school.d.ts.map +1 -1
  47. package/dist/models/section.d.ts +3 -0
  48. package/dist/models/section.d.ts.map +1 -1
  49. package/dist/models/worksheet.d.ts +62 -0
  50. package/dist/models/worksheet.d.ts.map +1 -1
  51. package/dist/models/worksheet.js +37 -7
  52. package/dist/models/worksheet.js.map +1 -1
  53. package/dist/pipelines/gradeWorksheet.d.ts.map +1 -1
  54. package/dist/pipelines/gradeWorksheet.js +59 -14
  55. package/dist/pipelines/gradeWorksheet.js.map +1 -1
  56. package/dist/routers/_app.d.ts +4641 -2285
  57. package/dist/routers/_app.d.ts.map +1 -1
  58. package/dist/routers/_app.js +6 -2
  59. package/dist/routers/_app.js.map +1 -1
  60. package/dist/routers/admin.d.ts +190 -0
  61. package/dist/routers/admin.d.ts.map +1 -0
  62. package/dist/routers/admin.js +50 -0
  63. package/dist/routers/admin.js.map +1 -0
  64. package/dist/routers/agenda.d.ts +6 -0
  65. package/dist/routers/agenda.d.ts.map +1 -1
  66. package/dist/routers/announcement.d.ts +6 -0
  67. package/dist/routers/announcement.d.ts.map +1 -1
  68. package/dist/routers/announcement.js +6 -5
  69. package/dist/routers/announcement.js.map +1 -1
  70. package/dist/routers/assignment.d.ts +58 -0
  71. package/dist/routers/assignment.d.ts.map +1 -1
  72. package/dist/routers/assignment.js +4 -4
  73. package/dist/routers/assignment.js.map +1 -1
  74. package/dist/routers/class.d.ts +54 -0
  75. package/dist/routers/class.d.ts.map +1 -1
  76. package/dist/routers/class.js +5 -2
  77. package/dist/routers/class.js.map +1 -1
  78. package/dist/routers/comment.d.ts +26 -0
  79. package/dist/routers/comment.d.ts.map +1 -1
  80. package/dist/routers/comment.js +6 -3
  81. package/dist/routers/comment.js.map +1 -1
  82. package/dist/routers/discussion.d.ts +823 -0
  83. package/dist/routers/discussion.d.ts.map +1 -0
  84. package/dist/routers/discussion.js +151 -0
  85. package/dist/routers/discussion.js.map +1 -0
  86. package/dist/routers/event.d.ts +3 -0
  87. package/dist/routers/event.d.ts.map +1 -1
  88. package/dist/routers/file.d.ts +4 -0
  89. package/dist/routers/file.d.ts.map +1 -1
  90. package/dist/routers/school.d.ts +6 -0
  91. package/dist/routers/school.d.ts.map +1 -1
  92. package/dist/routers/worksheet.d.ts +6 -0
  93. package/dist/routers/worksheet.d.ts.map +1 -1
  94. package/dist/routers/worksheet.js +4 -2
  95. package/dist/routers/worksheet.js.map +1 -1
  96. package/dist/seedDatabase.d.ts.map +1 -1
  97. package/dist/seedDatabase.js +1490 -1307
  98. package/dist/seedDatabase.js.map +1 -1
  99. package/dist/services/adminInstitution.d.ts +102 -0
  100. package/dist/services/adminInstitution.d.ts.map +1 -0
  101. package/dist/services/adminInstitution.js +117 -0
  102. package/dist/services/adminInstitution.js.map +1 -0
  103. package/dist/services/adminRunJob.d.ts +45 -0
  104. package/dist/services/adminRunJob.d.ts.map +1 -0
  105. package/dist/services/adminRunJob.js +41 -0
  106. package/dist/services/adminRunJob.js.map +1 -0
  107. package/dist/services/agenda.d.ts +6 -0
  108. package/dist/services/agenda.d.ts.map +1 -1
  109. package/dist/services/assignment.d.ts +50 -0
  110. package/dist/services/assignment.d.ts.map +1 -1
  111. package/dist/services/assignment.js +16 -9
  112. package/dist/services/assignment.js.map +1 -1
  113. package/dist/services/class.d.ts +54 -0
  114. package/dist/services/class.d.ts.map +1 -1
  115. package/dist/services/class.js +20 -3
  116. package/dist/services/class.js.map +1 -1
  117. package/dist/services/comment.d.ts +20 -0
  118. package/dist/services/comment.d.ts.map +1 -1
  119. package/dist/services/comment.js +23 -2
  120. package/dist/services/comment.js.map +1 -1
  121. package/dist/services/conversation.d.ts.map +1 -1
  122. package/dist/services/conversation.js +9 -7
  123. package/dist/services/conversation.js.map +1 -1
  124. package/dist/services/discussion.d.ts +762 -0
  125. package/dist/services/discussion.d.ts.map +1 -0
  126. package/dist/services/discussion.js +625 -0
  127. package/dist/services/discussion.js.map +1 -0
  128. package/dist/services/event.d.ts +3 -0
  129. package/dist/services/event.d.ts.map +1 -1
  130. package/dist/services/file.d.ts +8 -0
  131. package/dist/services/file.d.ts.map +1 -1
  132. package/dist/services/school.d.ts +6 -0
  133. package/dist/services/school.d.ts.map +1 -1
  134. package/dist/services/studentProgress.d.ts.map +1 -1
  135. package/dist/services/studentProgress.js +27 -5
  136. package/dist/services/studentProgress.js.map +1 -1
  137. package/dist/services/studentProgressInferenceCache.d.ts +16 -0
  138. package/dist/services/studentProgressInferenceCache.d.ts.map +1 -0
  139. package/dist/services/studentProgressInferenceCache.js +43 -0
  140. package/dist/services/studentProgressInferenceCache.js.map +1 -0
  141. package/dist/services/worksheet.d.ts +6 -0
  142. package/dist/services/worksheet.d.ts.map +1 -1
  143. package/dist/services/worksheet.js +5 -5
  144. package/dist/services/worksheet.js.map +1 -1
  145. package/dist/trpc.d.ts +12 -0
  146. package/dist/trpc.d.ts.map +1 -1
  147. package/dist/trpc.js +16 -3
  148. package/dist/trpc.js.map +1 -1
  149. package/dist/utils/adminPanelAccess.d.ts +8 -0
  150. package/dist/utils/adminPanelAccess.d.ts.map +1 -0
  151. package/dist/utils/adminPanelAccess.js +44 -0
  152. package/dist/utils/adminPanelAccess.js.map +1 -0
  153. package/package.json +1 -1
  154. package/prisma/migrations/20260510183000_add_discussions/migration.sql +151 -0
  155. package/prisma/schema.prisma +98 -0
  156. package/src/index.ts +39 -2
  157. package/src/lib/config/cors.ts +5 -0
  158. package/src/lib/config/env.ts +3 -0
  159. package/src/lib/pusher.ts +2 -1
  160. package/src/models/class.ts +10 -1
  161. package/src/models/comment.ts +1 -0
  162. package/src/models/conversation.ts +12 -0
  163. package/src/models/worksheet.ts +39 -5
  164. package/src/pipelines/gradeWorksheet.ts +66 -15
  165. package/src/routers/_app.ts +4 -0
  166. package/src/routers/admin.ts +70 -0
  167. package/src/routers/announcement.ts +4 -3
  168. package/src/routers/assignment.ts +2 -2
  169. package/src/routers/class.ts +3 -0
  170. package/src/routers/comment.ts +5 -0
  171. package/src/routers/discussion.ts +205 -0
  172. package/src/routers/worksheet.ts +2 -0
  173. package/src/seedDatabase.ts +1713 -1361
  174. package/src/services/adminInstitution.ts +140 -0
  175. package/src/services/adminRunJob.ts +46 -0
  176. package/src/services/assignment.ts +19 -8
  177. package/src/services/class.ts +28 -1
  178. package/src/services/comment.ts +22 -0
  179. package/src/services/conversation.ts +9 -4
  180. package/src/services/discussion.ts +701 -0
  181. package/src/services/studentProgress.ts +80 -3
  182. package/src/services/studentProgressInferenceCache.ts +64 -0
  183. package/src/services/worksheet.ts +5 -2
  184. package/src/trpc.ts +15 -0
  185. package/src/utils/adminPanelAccess.ts +46 -0
  186. package/tests/integration/routers/conversation.test.ts +9 -7
  187. package/tests/integration/routers/discussion.test.ts +253 -0
  188. package/tests/unit/services/discussion.test.ts +356 -0
@@ -42,6 +42,7 @@ export declare const commentRouter: import("@trpc/server").TRPCBuiltRouter<{
42
42
  modifiedAt: Date | null;
43
43
  content: string;
44
44
  parentCommentId: string | null;
45
+ isPinned: boolean;
45
46
  author: {
46
47
  id: string;
47
48
  username: string;
@@ -78,6 +79,7 @@ export declare const commentRouter: import("@trpc/server").TRPCBuiltRouter<{
78
79
  content: string;
79
80
  authorId: string;
80
81
  parentCommentId: string | null;
82
+ isPinned: boolean;
81
83
  studentQuestionProgressId: string | null;
82
84
  })[];
83
85
  meta: object;
@@ -97,6 +99,7 @@ export declare const commentRouter: import("@trpc/server").TRPCBuiltRouter<{
97
99
  content: string;
98
100
  authorId: string;
99
101
  parentCommentId: string | null;
102
+ isPinned: boolean;
100
103
  studentQuestionProgressId: string | null;
101
104
  };
102
105
  meta: object;
@@ -116,6 +119,7 @@ export declare const commentRouter: import("@trpc/server").TRPCBuiltRouter<{
116
119
  content: string;
117
120
  authorId: string;
118
121
  parentCommentId: string | null;
122
+ isPinned: boolean;
119
123
  studentQuestionProgressId: string | null;
120
124
  };
121
125
  meta: object;
@@ -129,6 +133,26 @@ export declare const commentRouter: import("@trpc/server").TRPCBuiltRouter<{
129
133
  };
130
134
  meta: object;
131
135
  }>;
136
+ pin: import("@trpc/server").TRPCMutationProcedure<{
137
+ input: {
138
+ id: string;
139
+ isPinned: boolean;
140
+ };
141
+ output: {
142
+ id: string;
143
+ createdAt: Date;
144
+ assignmentId: string | null;
145
+ submissionId: string | null;
146
+ announcementId: string | null;
147
+ modifiedAt: Date | null;
148
+ content: string;
149
+ authorId: string;
150
+ parentCommentId: string | null;
151
+ isPinned: boolean;
152
+ studentQuestionProgressId: string | null;
153
+ };
154
+ meta: object;
155
+ }>;
132
156
  addReaction: import("@trpc/server").TRPCMutationProcedure<{
133
157
  input: {
134
158
  type: "THUMBSUP" | "CELEBRATE" | "CARE" | "HEART" | "IDEA" | "HAPPY";
@@ -151,6 +175,8 @@ export declare const commentRouter: import("@trpc/server").TRPCBuiltRouter<{
151
175
  createdAt: Date;
152
176
  userId: string;
153
177
  announcementId: string | null;
178
+ discussionId: string | null;
179
+ discussionReplyId: string | null;
154
180
  commentId: string | null;
155
181
  };
156
182
  };
@@ -1 +1 @@
1
- {"version":3,"file":"comment.d.ts","sourceRoot":"/","sources":["routers/comment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4ExB,CAAC"}
1
+ {"version":3,"file":"comment.d.ts","sourceRoot":"/","sources":["routers/comment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFxB,CAAC"}
@@ -1,9 +1,9 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="59f36e4f-e4ab-5c6a-8d53-facfca1e1a45")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="363ddf0d-26ce-5c94-a056-cc0b16faa0db")}catch(e){}}();
3
3
  import { createTRPCRouter, protectedProcedure } from "../trpc.js";
4
4
  import { z } from "zod";
5
5
  import { TRPCError } from "@trpc/server";
6
- import { getComment, getReplies, replyToComment, updateComment, deleteComment, addReaction, removeReaction, getReactions, } from "../services/comment.js";
6
+ import { getComment, getReplies, replyToComment, updateComment, deleteComment, pinComment, addReaction, removeReaction, getReactions, } from "../services/comment.js";
7
7
  export { commentSelect } from "../models/comment.js";
8
8
  export const commentRouter = createTRPCRouter({
9
9
  get: protectedProcedure
@@ -27,6 +27,9 @@ export const commentRouter = createTRPCRouter({
27
27
  delete: protectedProcedure
28
28
  .input(z.object({ id: z.string() }))
29
29
  .mutation(({ ctx, input }) => deleteComment(ctx.user.id, input.id)),
30
+ pin: protectedProcedure
31
+ .input(z.object({ id: z.string(), isPinned: z.boolean() }))
32
+ .mutation(({ ctx, input }) => pinComment(ctx.user.id, input.id, input.isPinned)),
30
33
  addReaction: protectedProcedure
31
34
  .input(z.object({
32
35
  id: z.string(),
@@ -64,4 +67,4 @@ export const commentRouter = createTRPCRouter({
64
67
  }),
65
68
  });
66
69
  //# sourceMappingURL=comment.js.map
67
- //# debugId=59f36e4f-e4ab-5c6a-8d53-facfca1e1a45
70
+ //# debugId=363ddf0d-26ce-5c94-a056-cc0b16faa0db
@@ -1 +1 @@
1
- {"version":3,"file":"comment.js","sources":["routers/comment.ts"],"sourceRoot":"/","sourcesContent":["import { createTRPCRouter, protectedProcedure } from \"../trpc.js\";\nimport { z } from \"zod\";\nimport { TRPCError } from \"@trpc/server\";\nimport {\n getComment,\n getReplies,\n replyToComment,\n updateComment,\n deleteComment,\n addReaction,\n removeReaction,\n getReactions,\n} from \"../services/comment.js\";\n\nexport { commentSelect } from \"../models/comment.js\";\n\nexport const commentRouter = createTRPCRouter({\n get: protectedProcedure\n .input(z.object({ id: z.string() }))\n .query(({ ctx, input }) => getComment(ctx.user!.id, input.id)),\n\n getReplies: protectedProcedure\n .input(z.object({ commentId: z.string() }))\n .query(({ ctx, input }) => getReplies(ctx.user!.id, input.commentId)),\n\n replyToComment: protectedProcedure\n .input(\n z.object({\n parentCommentId: z.string(),\n content: z.string(),\n })\n )\n .mutation(({ ctx, input }) =>\n replyToComment(ctx.user!.id, input.parentCommentId, input.content)\n ),\n\n update: protectedProcedure\n .input(\n z.object({\n id: z.string(),\n content: z.string().min(1, \"Comment cannot be empty\"),\n })\n )\n .mutation(({ ctx, input }) =>\n updateComment(ctx.user!.id, input.id, input.content)\n ),\n\n delete: protectedProcedure\n .input(z.object({ id: z.string() }))\n .mutation(({ ctx, input }) => deleteComment(ctx.user!.id, input.id)),\n\n addReaction: protectedProcedure\n .input(\n z.object({\n id: z.string(),\n type: z.enum([\n \"THUMBSUP\",\n \"CELEBRATE\",\n \"CARE\",\n \"HEART\",\n \"IDEA\",\n \"HAPPY\",\n ]),\n })\n )\n .mutation(({ ctx, input }) =>\n addReaction(ctx.user!.id, input.id, input.type)\n ),\n\n removeReaction: protectedProcedure\n .input(z.object({ commentId: z.string().optional() }))\n .mutation(({ ctx, input }) => {\n if (!input.commentId) {\n throw new TRPCError({\n code: \"BAD_REQUEST\",\n message: \"Either announcementId or commentId must be provided\",\n });\n }\n return removeReaction(ctx.user!.id, input.commentId);\n }),\n\n getReactions: protectedProcedure\n .input(z.object({ commentId: z.string().optional() }))\n .query(({ ctx, input }) => {\n if (!input.commentId) {\n throw new TRPCError({\n code: \"BAD_REQUEST\",\n message: \"Either announcementId or commentId must be provided\",\n });\n }\n return getReactions(ctx.user!.id, input.commentId);\n }),\n});\n"],"names":[],"mappings":"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","debug_id":"59f36e4f-e4ab-5c6a-8d53-facfca1e1a45"}
1
+ {"version":3,"file":"comment.js","sources":["routers/comment.ts"],"sourceRoot":"/","sourcesContent":["import { createTRPCRouter, protectedProcedure } from \"../trpc.js\";\nimport { z } from \"zod\";\nimport { TRPCError } from \"@trpc/server\";\nimport {\n getComment,\n getReplies,\n replyToComment,\n updateComment,\n deleteComment,\n pinComment,\n addReaction,\n removeReaction,\n getReactions,\n} from \"../services/comment.js\";\n\nexport { commentSelect } from \"../models/comment.js\";\n\nexport const commentRouter = createTRPCRouter({\n get: protectedProcedure\n .input(z.object({ id: z.string() }))\n .query(({ ctx, input }) => getComment(ctx.user!.id, input.id)),\n\n getReplies: protectedProcedure\n .input(z.object({ commentId: z.string() }))\n .query(({ ctx, input }) => getReplies(ctx.user!.id, input.commentId)),\n\n replyToComment: protectedProcedure\n .input(\n z.object({\n parentCommentId: z.string(),\n content: z.string(),\n })\n )\n .mutation(({ ctx, input }) =>\n replyToComment(ctx.user!.id, input.parentCommentId, input.content)\n ),\n\n update: protectedProcedure\n .input(\n z.object({\n id: z.string(),\n content: z.string().min(1, \"Comment cannot be empty\"),\n })\n )\n .mutation(({ ctx, input }) =>\n updateComment(ctx.user!.id, input.id, input.content)\n ),\n\n delete: protectedProcedure\n .input(z.object({ id: z.string() }))\n .mutation(({ ctx, input }) => deleteComment(ctx.user!.id, input.id)),\n\n pin: protectedProcedure\n .input(z.object({ id: z.string(), isPinned: z.boolean() }))\n .mutation(({ ctx, input }) => pinComment(ctx.user!.id, input.id, input.isPinned)),\n\n addReaction: protectedProcedure\n .input(\n z.object({\n id: z.string(),\n type: z.enum([\n \"THUMBSUP\",\n \"CELEBRATE\",\n \"CARE\",\n \"HEART\",\n \"IDEA\",\n \"HAPPY\",\n ]),\n })\n )\n .mutation(({ ctx, input }) =>\n addReaction(ctx.user!.id, input.id, input.type)\n ),\n\n removeReaction: protectedProcedure\n .input(z.object({ commentId: z.string().optional() }))\n .mutation(({ ctx, input }) => {\n if (!input.commentId) {\n throw new TRPCError({\n code: \"BAD_REQUEST\",\n message: \"Either announcementId or commentId must be provided\",\n });\n }\n return removeReaction(ctx.user!.id, input.commentId);\n }),\n\n getReactions: protectedProcedure\n .input(z.object({ commentId: z.string().optional() }))\n .query(({ ctx, input }) => {\n if (!input.commentId) {\n throw new TRPCError({\n code: \"BAD_REQUEST\",\n message: \"Either announcementId or commentId must be provided\",\n });\n }\n return getReactions(ctx.user!.id, input.commentId);\n }),\n});\n"],"names":[],"mappings":";;AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,UAAU,EACV,UAAU,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,UAAU,EACV,WAAW,EACX,cAAc,EACd,YAAY,GACb,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC;IAC5C,GAAG,EAAE,kBAAkB;SACpB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SACnC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAEhE,UAAU,EAAE,kBAAkB;SAC3B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SAC1C,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAEvE,cAAc,EAAE,kBAAkB;SAC/B,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;QAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB,CAAC,CACH;SACA,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAC3B,cAAc,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,CACnE;IAEH,MAAM,EAAE,kBAAkB;SACvB,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,yBAAyB,CAAC;KACtD,CAAC,CACH;SACA,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAC3B,aAAa,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CACrD;IAEH,MAAM,EAAE,kBAAkB;SACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SACnC,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAEtE,GAAG,EAAE,kBAAkB;SACpB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;SAC1D,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEnF,WAAW,EAAE,kBAAkB;SAC5B,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;YACX,UAAU;YACV,WAAW;YACX,MAAM;YACN,OAAO;YACP,MAAM;YACN,OAAO;SACR,CAAC;KACH,CAAC,CACH;SACA,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAC3B,WAAW,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAChD;IAEH,cAAc,EAAE,kBAAkB;SAC/B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SACrD,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;QAC3B,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,IAAI,SAAS,CAAC;gBAClB,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,qDAAqD;aAC/D,CAAC,CAAC;QACL,CAAC;QACD,OAAO,cAAc,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC,CAAC;IAEJ,YAAY,EAAE,kBAAkB;SAC7B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SACrD,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;QACxB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,IAAI,SAAS,CAAC;gBAClB,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,qDAAqD;aAC/D,CAAC,CAAC;QACL,CAAC;QACD,OAAO,YAAY,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC,CAAC;CACL,CAAC,CAAC","debug_id":"363ddf0d-26ce-5c94-a056-cc0b16faa0db"}