@hed-hog/lms 0.0.275 → 0.0.278
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.
- package/README.md +78 -2
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
```markdown
|
|
2
1
|
# @hed-hog/lms
|
|
3
2
|
|
|
4
3
|
## 1. Visão geral do módulo
|
|
@@ -64,6 +63,9 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
64
63
|
- `verification_url` (varchar 500, nullable)
|
|
65
64
|
- `pdf_url` (varchar 500, nullable)
|
|
66
65
|
- `created_at`, `updated_at`
|
|
66
|
+
- **Defaults:** Não possui defaults além dos timestamps.
|
|
67
|
+
- **Nulabilidade:** Campos opcionais indicados.
|
|
68
|
+
- **Integridade:** Chaves estrangeiras com regras onDelete conforme descrito.
|
|
67
69
|
- **Índices:** único em `verification_code`.
|
|
68
70
|
|
|
69
71
|
### certificate_template
|
|
@@ -77,6 +79,9 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
77
79
|
- `template_content` (text)
|
|
78
80
|
- `status` (enum: `draft`, `active`, `inactive`, default `draft`)
|
|
79
81
|
- `created_at`, `updated_at`
|
|
82
|
+
- **Defaults:** `status` default `draft`.
|
|
83
|
+
- **Nulabilidade:** `description` nullable.
|
|
84
|
+
- **Integridade:** -
|
|
80
85
|
- **Índices:** único em `slug`.
|
|
81
86
|
|
|
82
87
|
### course
|
|
@@ -96,6 +101,9 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
96
101
|
- `certificate_template_id` (FK opcional para `certificate_template.id`, onDelete SET NULL)
|
|
97
102
|
- `requirements`, `objectives`, `target_audience` (text, nullable)
|
|
98
103
|
- `created_at`, `updated_at`
|
|
104
|
+
- **Defaults:** `level` default `beginner`, `duration_hours` default 0, `status` default `draft`.
|
|
105
|
+
- **Nulabilidade:** Campos opcionais indicados.
|
|
106
|
+
- **Integridade:** FK para `certificate_template` com onDelete SET NULL.
|
|
99
107
|
- **Índices:** único em `slug`.
|
|
100
108
|
|
|
101
109
|
### course_category
|
|
@@ -106,6 +114,9 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
106
114
|
- `course_id` (FK para `course.id`, onDelete CASCADE)
|
|
107
115
|
- `category_id` (FK para `category.id`, onDelete CASCADE)
|
|
108
116
|
- `created_at`, `updated_at`
|
|
117
|
+
- **Defaults:** -
|
|
118
|
+
- **Nulabilidade:** -
|
|
119
|
+
- **Integridade:** FK com onDelete CASCADE.
|
|
109
120
|
- **Índices:** único em combinação `course_id` + `category_id`.
|
|
110
121
|
|
|
111
122
|
### course_class_attendance
|
|
@@ -119,6 +130,9 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
119
130
|
- `justification` (text, nullable)
|
|
120
131
|
- `recorded_by_id` (FK opcional para `person.id`, onDelete SET NULL)
|
|
121
132
|
- `created_at`, `updated_at`
|
|
133
|
+
- **Defaults:** `present` default false.
|
|
134
|
+
- **Nulabilidade:** `justification` e `recorded_by_id` opcionais.
|
|
135
|
+
- **Integridade:** FK com onDelete conforme descrito.
|
|
122
136
|
- **Índices:** único em combinação `course_class_session_id` + `student_id`.
|
|
123
137
|
|
|
124
138
|
### course_class_group
|
|
@@ -141,6 +155,9 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
141
155
|
- `location` (text, nullable)
|
|
142
156
|
- `virtual_room_url` (varchar 500, nullable)
|
|
143
157
|
- `created_at`, `updated_at`
|
|
158
|
+
- **Defaults:** `status` default `open`, `capacity` default 30.
|
|
159
|
+
- **Nulabilidade:** Campos opcionais indicados.
|
|
160
|
+
- **Integridade:** FK com onDelete CASCADE.
|
|
144
161
|
- **Índices:** único em `code`.
|
|
145
162
|
|
|
146
163
|
### course_class_session
|
|
@@ -158,6 +175,9 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
158
175
|
- `meeting_url` (varchar 500, nullable)
|
|
159
176
|
- `status` (enum: `scheduled`, `completed`, `cancelled`, default `scheduled`)
|
|
160
177
|
- `created_at`, `updated_at`
|
|
178
|
+
- **Defaults:** `status` default `scheduled`.
|
|
179
|
+
- **Nulabilidade:** Campos opcionais indicados.
|
|
180
|
+
- **Integridade:** FK com onDelete CASCADE.
|
|
161
181
|
- **Índices:** combinação `course_class_group_id` + `session_date`.
|
|
162
182
|
|
|
163
183
|
### course_class_session_instructor
|
|
@@ -169,6 +189,8 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
169
189
|
- `instructor_id` (FK para `instructor.id`, onDelete CASCADE)
|
|
170
190
|
- `role` (enum: `lead`, `assistant`, default `assistant`)
|
|
171
191
|
- `created_at`, `updated_at`
|
|
192
|
+
- **Defaults:** `role` default `assistant`.
|
|
193
|
+
- **Integridade:** FK com onDelete CASCADE.
|
|
172
194
|
- **Índices:** único em combinação `course_class_session_id` + `instructor_id`.
|
|
173
195
|
|
|
174
196
|
### course_enrollment
|
|
@@ -185,6 +207,9 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
185
207
|
- `progress_percent` (int, default 0)
|
|
186
208
|
- `final_score` (int, nullable)
|
|
187
209
|
- `created_at`, `updated_at`
|
|
210
|
+
- **Defaults:** `status` default `active`, `progress_percent` default 0.
|
|
211
|
+
- **Nulabilidade:** Campos opcionais indicados.
|
|
212
|
+
- **Integridade:** FK com onDelete conforme descrito.
|
|
188
213
|
- **Índices:** único em combinação `person_id` + `course_class_group_id`.
|
|
189
214
|
|
|
190
215
|
### course_image
|
|
@@ -198,6 +223,8 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
198
223
|
- `order` (int)
|
|
199
224
|
- `is_primary` (boolean, default false)
|
|
200
225
|
- `created_at`, `updated_at`
|
|
226
|
+
- **Defaults:** `is_primary` default false.
|
|
227
|
+
- **Integridade:** FK com onDelete CASCADE.
|
|
201
228
|
- **Índices:** único em combinação `course_id` + `image_type_id` + `order`.
|
|
202
229
|
|
|
203
230
|
### course_lesson
|
|
@@ -214,6 +241,8 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
214
241
|
- `order` (int)
|
|
215
242
|
- `is_released` (boolean, default true)
|
|
216
243
|
- `created_at`, `updated_at`
|
|
244
|
+
- **Defaults:** `type` default `video`, `duration_seconds` default 0, `is_released` default true.
|
|
245
|
+
- **Integridade:** FK com onDelete CASCADE.
|
|
217
246
|
- **Índices:** único em combinação `course_module_id` + `order`.
|
|
218
247
|
|
|
219
248
|
### course_lesson_file
|
|
@@ -225,6 +254,8 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
225
254
|
- `file_id` (FK opcional para `file.id`, onDelete SET NULL)
|
|
226
255
|
- `title` (varchar 255)
|
|
227
256
|
- `created_at`, `updated_at`
|
|
257
|
+
- **Nulabilidade:** `file_id` opcional.
|
|
258
|
+
- **Integridade:** FK com onDelete conforme descrito.
|
|
228
259
|
- **Índices:** em `course_lesson_id`.
|
|
229
260
|
|
|
230
261
|
### course_lesson_instructor
|
|
@@ -236,6 +267,8 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
236
267
|
- `instructor_id` (FK para `instructor.id`, onDelete CASCADE)
|
|
237
268
|
- `role` (enum: `lead`, `assistant`, default `assistant`)
|
|
238
269
|
- `created_at`, `updated_at`
|
|
270
|
+
- **Defaults:** `role` default `assistant`.
|
|
271
|
+
- **Integridade:** FK com onDelete CASCADE.
|
|
239
272
|
- **Índices:** único em combinação `course_lesson_id` + `instructor_id`.
|
|
240
273
|
|
|
241
274
|
### course_lesson_progress
|
|
@@ -252,6 +285,9 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
252
285
|
- `completed_at` (datetime, nullable)
|
|
253
286
|
- `time_spent_seconds` (int, default 0)
|
|
254
287
|
- `created_at`, `updated_at`
|
|
288
|
+
- **Defaults:** `status` default `not_started`, `progress_percent` default 0, `video_progress_seconds` default 0, `time_spent_seconds` default 0.
|
|
289
|
+
- **Nulabilidade:** `started_at` e `completed_at` opcionais.
|
|
290
|
+
- **Integridade:** FK com onDelete CASCADE.
|
|
255
291
|
- **Índices:** único em combinação `course_enrollment_id` + `course_lesson_id`.
|
|
256
292
|
|
|
257
293
|
### course_lesson_question
|
|
@@ -263,6 +299,7 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
263
299
|
- `question_id` (FK para `question.id`, onDelete CASCADE)
|
|
264
300
|
- `order` (int)
|
|
265
301
|
- `created_at`, `updated_at`
|
|
302
|
+
- **Integridade:** FK com onDelete CASCADE.
|
|
266
303
|
- **Índices:** únicos em combinações `course_lesson_id` + `question_id` e `course_lesson_id` + `order`.
|
|
267
304
|
|
|
268
305
|
### course_module
|
|
@@ -276,6 +313,8 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
276
313
|
- `order` (int)
|
|
277
314
|
- `duration_minutes` (int, default 0)
|
|
278
315
|
- `created_at`, `updated_at`
|
|
316
|
+
- **Defaults:** `duration_minutes` default 0.
|
|
317
|
+
- **Integridade:** FK com onDelete CASCADE.
|
|
279
318
|
- **Índices:** único em combinação `course_id` + `order`.
|
|
280
319
|
|
|
281
320
|
### course_prerequisite
|
|
@@ -289,6 +328,8 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
289
328
|
- `prerequisite_learning_path_id` (FK opcional para `learning_path.id`, onDelete CASCADE)
|
|
290
329
|
- `prerequisite_exam_id` (FK opcional para `exam.id`, onDelete CASCADE)
|
|
291
330
|
- `created_at`, `updated_at`
|
|
331
|
+
- **Defaults:** `prerequisite_type` default `course`.
|
|
332
|
+
- **Integridade:** FK com onDelete CASCADE.
|
|
292
333
|
- **Índices:** únicos para combinações de curso e pré-requisitos.
|
|
293
334
|
|
|
294
335
|
### evaluation_rating
|
|
@@ -301,6 +342,8 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
301
342
|
- `score` (decimal 2,1)
|
|
302
343
|
- `comment` (text, nullable)
|
|
303
344
|
- `created_at`, `updated_at`
|
|
345
|
+
- **Nulabilidade:** `evaluator_id` e `comment` opcionais.
|
|
346
|
+
- **Integridade:** FK com onDelete conforme descrito.
|
|
304
347
|
- **Índices:** único em combinação `evaluation_topic_id` + `evaluator_id`.
|
|
305
348
|
|
|
306
349
|
### evaluation_topic
|
|
@@ -319,6 +362,9 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
319
362
|
- `order` (int)
|
|
320
363
|
- `is_active` (boolean, default true)
|
|
321
364
|
- `created_at`, `updated_at`
|
|
365
|
+
- **Defaults:** `is_active` default true.
|
|
366
|
+
- **Nulabilidade:** Campos opcionais indicados.
|
|
367
|
+
- **Integridade:** FK com onDelete SET NULL.
|
|
322
368
|
- **Índices:** únicos para combinações de alvo e ordem.
|
|
323
369
|
|
|
324
370
|
### exam
|
|
@@ -347,6 +393,9 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
347
393
|
- `show_explanation_after_answer` (boolean, default false)
|
|
348
394
|
- `require_all_questions_answered_to_finish` (boolean, default false)
|
|
349
395
|
- `created_at`, `updated_at`
|
|
396
|
+
- **Defaults:** `status` default `draft`, `attempts_allowed` 1, `min_score` 60, `max_score` 100, boolean flags default conforme descrito.
|
|
397
|
+
- **Nulabilidade:** Campos opcionais indicados.
|
|
398
|
+
- **Integridade:** FK com onDelete SET NULL.
|
|
350
399
|
- **Índices:** em `course_id`, `course_class_group_id` e `status`.
|
|
351
400
|
|
|
352
401
|
### exam_answer
|
|
@@ -362,6 +411,9 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
362
411
|
- `points_awarded` (int, default 0)
|
|
363
412
|
- `teacher_feedback` (text, nullable)
|
|
364
413
|
- `created_at`, `updated_at`
|
|
414
|
+
- **Defaults:** `points_awarded` default 0.
|
|
415
|
+
- **Nulabilidade:** Campos opcionais indicados.
|
|
416
|
+
- **Integridade:** FK com onDelete conforme descrito.
|
|
365
417
|
- **Índices:** único em combinação `exam_attempt_id` + `question_id`.
|
|
366
418
|
|
|
367
419
|
### exam_attempt
|
|
@@ -380,6 +432,9 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
380
432
|
- `status` (enum: `in_progress`, `completed`, `abandoned`, `voided`, default `in_progress`)
|
|
381
433
|
- `ip_address` (varchar 45, nullable)
|
|
382
434
|
- `created_at`, `updated_at`
|
|
435
|
+
- **Defaults:** `attempt_number` default 1, `status` default `in_progress`.
|
|
436
|
+
- **Nulabilidade:** Campos opcionais indicados.
|
|
437
|
+
- **Integridade:** FK com onDelete conforme descrito.
|
|
383
438
|
- **Índices:** único em combinação `exam_id` + `student_id` + `attempt_number`.
|
|
384
439
|
|
|
385
440
|
### exam_image
|
|
@@ -393,6 +448,8 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
393
448
|
- `order` (int)
|
|
394
449
|
- `is_primary` (boolean, default false)
|
|
395
450
|
- `created_at`, `updated_at`
|
|
451
|
+
- **Defaults:** `is_primary` default false.
|
|
452
|
+
- **Integridade:** FK com onDelete CASCADE.
|
|
396
453
|
- **Índices:** único em combinação `exam_id` + `image_type_id` + `order`.
|
|
397
454
|
|
|
398
455
|
### exam_option
|
|
@@ -406,6 +463,9 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
406
463
|
- `position` (int, default 0)
|
|
407
464
|
- `feedback` (text, nullable)
|
|
408
465
|
- `created_at`, `updated_at`
|
|
466
|
+
- **Defaults:** `is_correct` default false, `position` default 0.
|
|
467
|
+
- **Nulabilidade:** `feedback` opcional.
|
|
468
|
+
- **Integridade:** FK com onDelete CASCADE.
|
|
409
469
|
- **Índices:** único em combinação `question_id` + `position`.
|
|
410
470
|
|
|
411
471
|
### exam_question
|
|
@@ -417,6 +477,7 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
417
477
|
- `question_id` (FK para `question.id`, onDelete CASCADE)
|
|
418
478
|
- `order` (int)
|
|
419
479
|
- `created_at`, `updated_at`
|
|
480
|
+
- **Integridade:** FK com onDelete CASCADE.
|
|
420
481
|
- **Índices:** únicos em combinações `exam_id` + `question_id` e `exam_id` + `order`.
|
|
421
482
|
|
|
422
483
|
### image_type
|
|
@@ -431,6 +492,8 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
431
492
|
- `applies_to_learning_path` (boolean, default false)
|
|
432
493
|
- `status` (enum: `active`, `inactive`, default `active`)
|
|
433
494
|
- `created_at`, `updated_at`
|
|
495
|
+
- **Defaults:** booleanos default false, `status` default `active`.
|
|
496
|
+
- **Integridade:** -
|
|
434
497
|
- **Índices:** único em `slug`.
|
|
435
498
|
|
|
436
499
|
### instructor
|
|
@@ -442,6 +505,8 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
442
505
|
- `status` (enum: `active`, `inactive`, default `active`)
|
|
443
506
|
- `can_teach_courses` (boolean, default true)
|
|
444
507
|
- `created_at`, `updated_at`
|
|
508
|
+
- **Defaults:** `status` default `active`, `can_teach_courses` default true.
|
|
509
|
+
- **Integridade:** FK único com onDelete CASCADE.
|
|
445
510
|
- **Índices:** único em `person_id`.
|
|
446
511
|
|
|
447
512
|
### learning_path
|
|
@@ -458,6 +523,9 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
458
523
|
- `status` (enum: `draft`, `active`, `archived`, default `draft`)
|
|
459
524
|
- `primary_color`, `primary_contrast_color`, `secondary_color`, `secondary_contrast_color` (varchar 9, nullable)
|
|
460
525
|
- `created_at`, `updated_at`
|
|
526
|
+
- **Defaults:** `level` default `beginner`, `duration_hours` default 0, `status` default `draft`.
|
|
527
|
+
- **Nulabilidade:** Campos opcionais indicados.
|
|
528
|
+
- **Integridade:** -
|
|
461
529
|
- **Índices:** único em `slug`.
|
|
462
530
|
|
|
463
531
|
### learning_path_enrollment
|
|
@@ -472,6 +540,9 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
472
540
|
- `enrolled_at` (datetime)
|
|
473
541
|
- `completed_at` (datetime, nullable)
|
|
474
542
|
- `created_at`, `updated_at`
|
|
543
|
+
- **Defaults:** `status` default `active`, `progress_percent` default 0.
|
|
544
|
+
- **Nulabilidade:** `completed_at` opcional.
|
|
545
|
+
- **Integridade:** FK com onDelete CASCADE.
|
|
475
546
|
- **Índices:** único em combinação `learning_path_id` + `person_id`.
|
|
476
547
|
|
|
477
548
|
### learning_path_image
|
|
@@ -485,6 +556,8 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
485
556
|
- `order` (int)
|
|
486
557
|
- `is_primary` (boolean, default false)
|
|
487
558
|
- `created_at`, `updated_at`
|
|
559
|
+
- **Defaults:** `is_primary` default false.
|
|
560
|
+
- **Integridade:** FK com onDelete CASCADE.
|
|
488
561
|
- **Índices:** único em combinação `learning_path_id` + `image_type_id` + `order`.
|
|
489
562
|
|
|
490
563
|
### learning_path_step
|
|
@@ -499,6 +572,8 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
499
572
|
- `order` (int)
|
|
500
573
|
- `is_required` (boolean, default true)
|
|
501
574
|
- `created_at`, `updated_at`
|
|
575
|
+
- **Defaults:** `is_required` default true.
|
|
576
|
+
- **Integridade:** FK com onDelete CASCADE.
|
|
502
577
|
- **Índices:** únicos para combinações de trilha e ordem, curso ou exame.
|
|
503
578
|
|
|
504
579
|
### question
|
|
@@ -511,6 +586,8 @@ O módulo `@hed-hog/lms` é responsável pela gestão do sistema de Learning Man
|
|
|
511
586
|
- `explanation` (text, nullable)
|
|
512
587
|
- `points` (int, default 1)
|
|
513
588
|
- `created_at`, `updated_at`
|
|
589
|
+
- **Defaults:** `points` default 1.
|
|
590
|
+
- **Nulabilidade:** `explanation` opcional.
|
|
514
591
|
|
|
515
592
|
## 8. Regras de negócio relevantes
|
|
516
593
|
|
|
@@ -599,4 +676,3 @@ const certificado = await prisma.certificate.create({
|
|
|
599
676
|
---
|
|
600
677
|
|
|
601
678
|
Para mais detalhes sobre integração e uso, consulte a documentação geral do HedHog e os serviços que consomem o módulo `@hed-hog/lms`.
|
|
602
|
-
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hed-hog/lms",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.278",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"dependencies": {
|
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
"@nestjs/core": "^11",
|
|
10
10
|
"@nestjs/jwt": "^11",
|
|
11
11
|
"@nestjs/mapped-types": "*",
|
|
12
|
-
"@hed-hog/core": "0.0.275",
|
|
13
12
|
"@hed-hog/api": "0.0.4",
|
|
14
|
-
"@hed-hog/finance": "0.0.275",
|
|
15
|
-
"@hed-hog/api-types": "0.0.1",
|
|
16
13
|
"@hed-hog/api-pagination": "0.0.6",
|
|
17
|
-
"@hed-hog/contact": "0.0.
|
|
14
|
+
"@hed-hog/contact": "0.0.278",
|
|
15
|
+
"@hed-hog/core": "0.0.278",
|
|
16
|
+
"@hed-hog/api-types": "0.0.1",
|
|
18
17
|
"@hed-hog/api-prisma": "0.0.5",
|
|
19
|
-
"@hed-hog/
|
|
20
|
-
"@hed-hog/
|
|
18
|
+
"@hed-hog/category": "0.0.278",
|
|
19
|
+
"@hed-hog/finance": "0.0.278",
|
|
20
|
+
"@hed-hog/api-locale": "0.0.13"
|
|
21
21
|
},
|
|
22
22
|
"exports": {
|
|
23
23
|
".": {
|