fcad-core-dragon 2.0.0-beta.2 → 2.0.0-beta.3

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 (103) hide show
  1. package/.editorconfig +33 -33
  2. package/.eslintignore +29 -29
  3. package/.eslintrc.cjs +81 -81
  4. package/CHANGELOG +364 -364
  5. package/README.md +71 -71
  6. package/bk.scss +117 -117
  7. package/package.json +61 -47
  8. package/src/$locales/en.json +143 -193
  9. package/src/$locales/fr.json +105 -194
  10. package/src/assets/data/onboardingMessages.json +47 -47
  11. package/src/components/AppBase.vue +1054 -1049
  12. package/src/components/AppBaseButton.vue +87 -91
  13. package/src/components/AppBaseErrorDisplay.vue +438 -428
  14. package/src/components/AppBaseFlipCard.vue +84 -83
  15. package/src/components/AppBaseModule.vue +1673 -1666
  16. package/src/components/AppBasePage.vue +779 -324
  17. package/src/components/AppBasePopover.vue +41 -0
  18. package/src/components/AppCompAudio.vue +234 -266
  19. package/src/components/AppCompBranchButtons.vue +552 -571
  20. package/src/components/AppCompButtonProgress.vue +126 -132
  21. package/src/components/AppCompCarousel.vue +298 -196
  22. package/src/components/{AppCompInputCheckBox.vue → AppCompInputCheckBoxNext.vue} +195 -233
  23. package/src/components/AppCompInputDropdownNext.vue +159 -0
  24. package/src/components/{AppCompInputRadio.vue → AppCompInputRadioNext.vue} +152 -162
  25. package/src/components/{AppCompInputTextBox.vue → AppCompInputTextNext.vue} +106 -91
  26. package/src/components/AppCompInputTextTableNext.vue +141 -0
  27. package/src/components/AppCompInputTextToFillDropdownNext.vue +230 -0
  28. package/src/components/{AppCompInputTextToFillText.vue → AppCompInputTextToFillNext.vue} +171 -164
  29. package/src/components/AppCompJauge.vue +74 -67
  30. package/src/components/AppCompMenu.vue +413 -402
  31. package/src/components/AppCompMenuItem.vue +228 -191
  32. package/src/components/AppCompNavigation.vue +960 -945
  33. package/src/components/AppCompNoteCall.vue +133 -141
  34. package/src/components/AppCompNoteCredit.vue +292 -267
  35. package/src/components/AppCompPlayBar.vue +1218 -1271
  36. package/src/components/AppCompPlayBarNext.vue +2052 -0
  37. package/src/components/AppCompPlayBarProgress.vue +82 -73
  38. package/src/components/AppCompPopUpNext.vue +503 -0
  39. package/src/components/{AppCompQuiz.vue → AppCompQuizNext.vue} +2904 -2975
  40. package/src/components/AppCompQuizRecall.vue +276 -277
  41. package/src/components/{AppCompSVG.vue → AppCompSVGNext.vue} +347 -335
  42. package/src/components/AppCompSettingsMenu.vue +172 -169
  43. package/src/components/AppCompTableOfContent.vue +387 -385
  44. package/src/components/AppCompTranscript.vue +24 -19
  45. package/src/components/AppCompVideoPlayer.vue +368 -380
  46. package/src/components/AppCompViewDisplay.vue +6 -6
  47. package/src/components/BaseModule.vue +72 -71
  48. package/src/composables/useQuiz.js +206 -0
  49. package/src/externalComps/ModuleView.vue +22 -0
  50. package/src/externalComps/SummaryView.vue +91 -0
  51. package/src/main.js +272 -263
  52. package/src/mixins/$mediaMixins.js +819 -827
  53. package/src/mixins/timerMixin.js +155 -155
  54. package/src/module/stores/appStore.js +893 -0
  55. package/src/module/xapi/ADL.js +376 -376
  56. package/src/module/xapi/Crypto/Hasher.js +241 -241
  57. package/src/module/xapi/Crypto/WordArray.js +278 -278
  58. package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +103 -103
  59. package/src/module/xapi/Crypto/algorithms/C_algo.js +315 -315
  60. package/src/module/xapi/Crypto/algorithms/HMAC.js +9 -9
  61. package/src/module/xapi/Crypto/algorithms/SHA1.js +9 -9
  62. package/src/module/xapi/Crypto/encoders/Base.js +105 -105
  63. package/src/module/xapi/Crypto/encoders/Base64.js +99 -99
  64. package/src/module/xapi/Crypto/encoders/Hex.js +61 -61
  65. package/src/module/xapi/Crypto/encoders/Latin1.js +61 -61
  66. package/src/module/xapi/Crypto/encoders/Utf8.js +45 -45
  67. package/src/module/xapi/Crypto/index.js +53 -53
  68. package/src/module/xapi/Statement/activity.js +47 -47
  69. package/src/module/xapi/Statement/agent.js +55 -55
  70. package/src/module/xapi/Statement/group.js +26 -26
  71. package/src/module/xapi/Statement/index.js +259 -259
  72. package/src/module/xapi/Statement/statement.js +253 -253
  73. package/src/module/xapi/Statement/statementRef.js +23 -23
  74. package/src/module/xapi/Statement/substatement.js +22 -22
  75. package/src/module/xapi/Statement/verb.js +36 -36
  76. package/src/module/xapi/activitytypes.js +17 -17
  77. package/src/module/xapi/launch.js +157 -157
  78. package/src/module/xapi/utils.js +167 -167
  79. package/src/module/xapi/verbs.js +294 -294
  80. package/src/module/xapi/wrapper.js +1963 -1963
  81. package/src/module/xapi/xapiStatement.js +444 -444
  82. package/src/plugins/bus.js +8 -3
  83. package/src/plugins/gsap.js +14 -17
  84. package/src/plugins/helper.js +308 -294
  85. package/src/plugins/i18n.js +44 -44
  86. package/src/plugins/idb.js +219 -212
  87. package/src/plugins/save.js +37 -37
  88. package/src/plugins/scorm.js +287 -287
  89. package/src/plugins/xapi.js +11 -11
  90. package/src/public/index.html +33 -21
  91. package/src/router/index.js +43 -40
  92. package/src/router/routes.js +312 -317
  93. package/src/shared/generalfuncs.js +210 -195
  94. package/src/shared/validators.js +1069 -959
  95. package/vite.config.js +27 -0
  96. package/src/components/AppCompInputDropdown.vue +0 -182
  97. package/src/components/AppCompInputTextTable.vue +0 -158
  98. package/src/components/AppCompInputTextToFillDropdown.vue +0 -257
  99. package/src/components/AppCompPopUp.vue +0 -583
  100. package/src/components/AppCompPopover.vue +0 -27
  101. package/src/mixins/$pageMixins.js +0 -415
  102. package/src/mixins/$quizMixins.js +0 -442
  103. package/src/module/store.js +0 -1014
@@ -1,194 +1,105 @@
1
- {
2
- "button": {
3
- "accessibility":"Sous-titres et version texte",
4
- "alert_close":"Fermer cette fenêtre",
5
- "back_to_branching":"Retourner à la page d’origine",
6
- "back_to_menu": "Retour au sommaire",
7
- "btn_branch":"Approfondir ce sujet",
8
- "cancel_pop": "Annuler",
9
- "carousel_next": "Suivant",
10
- "carousel_prev": "Précédent",
11
- "confirm_pop": "Confirmer",
12
- "copyright": "Droit d'auteur",
13
- "download_transcript": "Télécharger une version texte",
14
- "full_screen_on": "Plein-écran",
15
- "full_screen_off": "Quitter le mode plein-écran",
16
- "go_to_conclusion": "Aller à la conclusion de la leçon",
17
- "go_to_first_page": "Aller à la première page",
18
- "go_to_next_page": "Aller à la page suivante",
19
- "go_to_previous_page": "Aller à la page précédente",
20
- "go_to_introduction": "Aller à l'introduction de la leçon",
21
- "go_to_branch":"Aller au sujet suivant",
22
- "go_to_module_conclusion":"Aller à la conclusion du module",
23
- "go_to_lesson" : "Aller à la leçon suivante",
24
- "go_to_menu": "Aller au sommaire de la leçon",
25
- "go_to_first_page": "Aller à la première page",
26
- "hide_nav_bar": "Masquer la barre de navigation",
27
- "instructions": "consigne technique",
28
- "info": "Info",
29
- "menu": "Début",
30
- "menu_anchor": "Menu des ancres",
31
- "menu_item": {
32
- "end": "Reprendre où j’étais",
33
- "middle": "Reprendre là où j’étais",
34
- "start": "Commencer la leçon"
35
- },
36
- "mute": "Désactiver le son",
37
- "next": "Suivant",
38
- "next_activity": "Aller à l’activité suivante",
39
- "note_call":"Revenir plus haut",
40
- "note_call_in_page":"Atteindre la note de bas de page",
41
- "pause": "Pause",
42
- "play": "Jouer",
43
- "previous": "Précédent",
44
- "previous_activity": "Aller à l’activité précédente",
45
- "quiz_close_no_answer": "Rester et faire cet exercice",
46
- "quiz_confirm": "Confirmer",
47
- "quiz_multiple": "mes réponses",
48
- "quiz_save": "Enregistrer",
49
- "quiz_single": "ma réponse",
50
- "quiz_verify": "Vérifier",
51
- "replay": "Rejouer",
52
- "reset": "Réinitialiser",
53
- "return_to_branch":"Retour au résumé",
54
- "save": "Enregistrer",
55
- "setting": "Paramètres",
56
- "skip_nav_content": "Passer au contenu principal",
57
- "subtitle_off": "Masquer les sous-titres",
58
- "subtitle_on": "Afficher les sous-titres",
59
- "submit": "Valider",
60
- "stay_on_page":"Rester sur cette page",
61
- "switch_off": "off",
62
- "switch_on": "on",
63
- "toc":"Progression",
64
- "transcript_off": "Fermer la transcription",
65
- "transcript_on": "Afficher la transcription",
66
- "unmute": "Activer le son",
67
- "volume":"Volume",
68
- "closePopUp": "Fermer"
69
- },
70
- "instruction": {
71
- "branch": "Cliquez sur l’élément pour découvrir l’information supplémentaire.",
72
- "bif": "Sélectionnez le chemin que vous souhaitez découvrir.",
73
- "choix_mult": "Sélectionnez une ou plusieurs réponses, puis vérifiez votre choix.",
74
- "choix_mult_no_validation": "Sélectionnez une ou plusieurs réponses, puis confirmez votre choix.",
75
- "choix_unique": "Sélectionnez votre réponse, puis vérifiez-la.",
76
- "choix_unique_no_validation": "Sélectionnez une réponse, puis confirmez-la.",
77
- "click_show": "Cliquez sur l’élément pour découvrir l’information supplémentaire.",
78
- "dropdown": "Associez les bonnes réponses aux énoncés correspondants, puis vérifiez vos réponses.",
79
- "dropdown_no_validation": "Associez une réponse à chaque énoncé, puis confirmez vos réponses.",
80
- "pop_over": "Survolez l’élément pour afficher l'information.",
81
- "reponse_ouverte": "Rédigez votre réponse, puis enregistrez-la.",
82
- "reponse_ouverte_no_validation": "Rédigez votre réponse, puis enregistrez-la.",
83
- "texte_tableau": {
84
- "multi":"Écrivez vos réponses, puis vérifiez-les.",
85
- "single":"Écrivez votre réponse, puis vérifiez-la."
86
- },
87
- "texte_tableau_no_validation": {
88
- "multi":"Écrivez vos réponses, puis enregistrez-les.",
89
- "single":"Rédigez votre réponse, puis enregistrez-la."
90
- },
91
- "texte_troue": {
92
- "multi":"Écrivez vos réponses, puis vérifiez-les.",
93
- "single":"Écrivez votre réponse, puis vérifiez-la."
94
- },
95
- "texte_troue_no_validation": {
96
- "multi":"Écrivez vos réponses, puis enregistrez-les.",
97
- "single":"Rédigez votre réponse, puis enregistrez-la."
98
- },
99
- "texte_troue_select":{
100
- "multi":"Sélectionnez des réponses, puis vérifiez-les.",
101
- "single":"Sélectionnez une réponse, puis vérifiez-la."
102
- },
103
- "texte_troue_select_no_validation": {
104
- "multi":"Sélectionnez des réponses, puis enregistrez-les.",
105
- "single":"Sélectionnez une réponse, puis enregistrez-la."
106
- }
107
- },
108
- "label": {
109
- "for_pagination": "page",
110
- "for_volume_level": "volume",
111
- "section":"Aller à la section intitulée",
112
- "timer":"temps estimé"
113
- },
114
- "message": {
115
- "bad_orientation_msg": "Veuillez retourner votre appareil pour une meilleur expérience.",
116
- "bad_orientation_title": "Attention",
117
- "err_download_file": "Le téléchargement de ce fichier a échoué.",
118
- "err_download_transcript":"Impossible de télécharger le fichier de transcription",
119
- "first_option_dropdown": "Choisir une option",
120
- "no_answer": "Vous n'avez pas répondu.",
121
- "no_attempts": "Vous n'avez plus d'essai.",
122
- "loading_state_msg":"Chargement. Veuillez patienter...",
123
- "progress_card":"État d’avancement:",
124
- "recall_done":"Vous avez répondu précédemment à la question :",
125
- "recall_undone":"Vous n'avez pas répondu à la question concernée.",
126
- "skip_content":"Passer au contenu principal"
127
- },
128
- "popup": {
129
- "text_congratulation": "Félicitation",
130
- "text_noanswer_back_root": "Vous n’avez pas entré de réponse. Voulez-vous tout de même retourner à la page d’origine?",
131
- "text_noanswer_next_activity": "Vous n’avez pas entré de réponse. Voulez-vous tout de même aller à l’activité suivante?",
132
- "text_noanswer_go_to_branch": "Vous n’avez pas entré de réponse. Voulez-vous tout de même aller au sujet suivant?",
133
- "text_noanswer_next_page": "Vous n’avez pas entré de réponse. Voulez-vous tout de même aller à la page suivante?",
134
- "text_what_to_do": "Que voulez-vous faire?",
135
- "title_warning": "Attention!"
136
-
137
- },
138
- "text": {
139
- "activity": "Activité",
140
- "activity_title": "Mes activités",
141
- "activity_progress":"État d’avancement :",
142
- "anchors":"Section",
143
- "carousel":"Carrousel",
144
- "conclusion": "Conclusion",
145
- "complete":"Terminé",
146
- "introduction": "Introduction",
147
- "lesson": "Leçon",
148
- "quiz": "Mot complétant la phrase",
149
- "place_holder": {
150
- "for_branch_title": "Titre de la branche",
151
- "for_lesson_title": "Titre de la leçon",
152
- "for_textarea": "Écrivez ici.",
153
- "for_download_file_name": "fichier",
154
- "for_title_btn_progress": "Cliquer pour découvrir le contenu"
155
- },
156
- "of":"de",
157
- "no_note": "Il n'y a pas de note.",
158
- "no_credit": "Il n'y a pas de crédit.",
159
- "slide":"Diapositive",
160
- "title_note": "Note(s)",
161
- "title_credit": "Source(s)",
162
- "err_credit": "Le texte de la page ne comporte pas d’appel de note correspondant à cette note-ci. Un appel de note doit être ajouté.",
163
- "title_end_activity": "Que souhaitez-vous faire?",
164
- "title_link_bas": "Revenir au texte",
165
- "title_link_call": "Accéder à la note",
166
- "title_content_view":"sommaire des activités",
167
- "toc":"Table des matières",
168
- "transcript": "Transcription",
169
- "you_are_here":"Vous êtes dans : "
170
- },
171
- "user_settings": {
172
- "autoplay": "Lecture automatique du contenu multimédia",
173
- "close": "Fermer cette fenêtre",
174
- "onboarding": "Activer la visite guidée",
175
- "subtitles":"Activer le soutitrage par défault",
176
- "title": "Paramètres"
177
- },
178
- "quizState":{
179
- "selected":"Réponse sélectionnée",
180
- "goodAnswer":"Bonne réponse",
181
- "badAnswer":"Mauvaise réponse",
182
- "neutralAnswer":"Réponse neutre",
183
- "answers" : "Choix de réponses"
184
- },
185
- "a11y_sr":{
186
- "time": {
187
- "hours":"heure | heures",
188
- "minute":"minute | minutes",
189
- "second":"seconde |secondes"
190
- },
191
- "seek_slider":"Barre de lecture",
192
- "range_expression":"à {x} sur {y}."
193
- }
194
- }
1
+ {
2
+ "button": {
3
+ "alert_close":"Fermer cette fenêtre",
4
+ "cancel_pop": "Annuler",
5
+ "carousel_next": "Suivant",
6
+ "carousel_prev": "Précédent",
7
+ "confirm_pop": "Confirmer",
8
+ "full_screen_on": "Plein-écran",
9
+ "full_screen_off": "Quitter le mode plein-écran",
10
+ "go_to_first_page": "Aller à la première page",
11
+ "go_to_next_page": "Aller à la page suivante",
12
+ "go_to_previous_page": "Aller à la page précédente",
13
+ "go_to_lesson" : "Aller à la leçon suivante",
14
+ "go_to_menu": "Aller au sommaire de la leçon",
15
+ "go_to_first_page": "Aller à la première page",
16
+ "info": "Info",
17
+ "menu": "Début",
18
+ "menu_item": {
19
+ "end": "Reprendre j’étais",
20
+ "start": "Commencer la leçon"
21
+ },
22
+ "mute": "Désactiver le son",
23
+ "next": "Suivant",
24
+ "next_activity": "Aller à l’activité suivante",
25
+ "pause": "Pause",
26
+ "play": "Jouer",
27
+ "previous": "Précédent",
28
+ "quiz_verify": "Vérifier",
29
+ "replay": "Rejouer",
30
+ "save": "Enregistrer",
31
+ "subtitle_off": "Masquer les sous-titres",
32
+ "subtitle_on": "Afficher les sous-titres",
33
+ "submit": "Valider",
34
+ "toc":"Progression",
35
+ "transcript_off": "Fermer la transcription",
36
+ "transcript_on": "Afficher la transcription",
37
+ "unmute": "Activer le son",
38
+ "volume": "Volume",
39
+ "closePopUp": "Fermer"
40
+ },
41
+ "label": {
42
+ "timer":"temps estimé"
43
+ },
44
+ "message": {
45
+ "err_download_file": "Le téléchargement de ce fichier a échoué.",
46
+ "first_option_dropdown": "Choisir une option",
47
+ "no_attempts": "Vous n'avez plus d'essai.",
48
+ "loading_state_msg": "Chargement. Veuillez patienter...",
49
+ "progress_card": "État d’avancement:",
50
+ "recall_done": "Vous avez répondu précédemment à la question :",
51
+ "recall_undone": "Vous n'avez pas répondu à la question concernée.",
52
+ "skip_content": "Passer au contenu principal"
53
+ },
54
+ "popup": {
55
+ "text_what_to_do": "Que voulez-vous faire?"
56
+ },
57
+ "text": {
58
+ "activity": "Activité",
59
+ "activity_title": "Mes activités",
60
+ "activity_progress":"État d’avancement :",
61
+ "carousel":"Carrousel",
62
+ "conclusion": "Conclusion",
63
+ "complete": "Terminé",
64
+ "introduction": "Introduction",
65
+ "lesson": "Leçon",
66
+ "quiz": "Mot complétant la phrase",
67
+ "place_holder": {
68
+ "for_lesson_title": "Titre de la leçon",
69
+ "for_textarea": "Écrivez ici.",
70
+ "for_title_btn_progress": "Cliquer pour découvrir le contenu"
71
+ },
72
+ "of":"de",
73
+ "slide":"Diapositive",
74
+ "title_note": "Note(s)",
75
+ "title_credit": "Source(s)",
76
+ "err_credit": "Le texte de la page ne comporte pas d’appel de note correspondant à cette note-ci. Un appel de note doit être ajouté.",
77
+ "title_link_bas": "Revenir au texte",
78
+ "title_link_call": "Accéder à la note",
79
+ "title_content_view":"Sommaire des activités",
80
+ "toc":"Table des matières",
81
+ "transcript": "Transcription"
82
+ },
83
+ "user_settings": {
84
+ "autoplay": "Lecture automatique du contenu multimédia",
85
+ "close": "Fermer cette fenêtre",
86
+ "onboarding": "Activer la visite guidée",
87
+ "subtitles": "Activer le soutitrage par défault",
88
+ "title": "Paramètres"
89
+ },
90
+ "quizState":{
91
+ "goodAnswer":"Bonne réponse",
92
+ "badAnswer":"Mauvaise réponse",
93
+ "neutralAnswer":"Réponse neutre",
94
+ "answers" : "Choix de réponses"
95
+ },
96
+ "a11y_sr": {
97
+ "time": {
98
+ "hours": "heure | heures",
99
+ "minute": "minute | minutes",
100
+ "second": "seconde |secondes"
101
+ },
102
+ "seek_slider": "Barre de lecture",
103
+ "range_expression": "à %x sur %y."
104
+ }
105
+ }
@@ -1,47 +1,47 @@
1
- {
2
- "message_1": {
3
- "type": "popup-avert",
4
- "value": {
5
- "title": "Bienvenue dans la visite guidée du FCAD !",
6
- "hypertext_1": "<p>Le bouton Confirmer vous fera passer à la prochaine étape de la visite.</p><p>Vous pouvez y mettre fin en tout temps avec le bouton Annuler.</p>"
7
- }
8
- },
9
- "message_2": {
10
- "type": "tooltip",
11
- "value": {
12
- "target": "activity_progress",
13
- "title": "Navigation secondaire",
14
- "content": "<p>Les flèches permettent de passer à la page précédente ou suivante de l'activité.</p><p>Les rectangles représentent une section de l'activité.</p>"
15
- }
16
- },
17
- "message_3": {
18
- "type": "tooltip",
19
- "value": {
20
- "target": "btn_back_summary",
21
- "title": "Navigation secondaire",
22
- "content": "<p>Ce bouton permet de retourner au sommaire de l'activité en tout temps.</p>"
23
- }
24
- },
25
- "message_4": {
26
- "type": "tooltip",
27
- "value": {
28
- "target":"primary_activity",
29
- "title": "Navigation principale",
30
- "content": "<p>La navigation principale permet de valider ses réponses de quiz et de passer à la page suivante.</p>"
31
- }
32
- },
33
- "message_5": {
34
- "type": "popup-avert",
35
- "value": {
36
- "title": "Visite guidée",
37
- "hypertext_1": "<p>Message pour la barre de lecture.</p>"
38
- }
39
- },
40
- "message_6": {
41
- "type": "popup-avert",
42
- "value": {
43
- "title": "Visite guidée",
44
- "hypertext_1": "<p>Message pour les Paramètres.</p>"
45
- }
46
- }
47
- }
1
+ {
2
+ "message_1": {
3
+ "type": "popup-avert",
4
+ "value": {
5
+ "title": "Bienvenue dans la visite guidée du FCAD !",
6
+ "hypertext_1": "<p>Le bouton Confirmer vous fera passer à la prochaine étape de la visite.</p><p>Vous pouvez y mettre fin en tout temps avec le bouton Annuler.</p>"
7
+ }
8
+ },
9
+ "message_2": {
10
+ "type": "tooltip",
11
+ "value": {
12
+ "target": "activity_progress",
13
+ "title": "Navigation secondaire",
14
+ "content": "<p>Les flèches permettent de passer à la page précédente ou suivante de l'activité.</p><p>Les rectangles représentent une section de l'activité.</p>"
15
+ }
16
+ },
17
+ "message_3": {
18
+ "type": "tooltip",
19
+ "value": {
20
+ "target": "btn_back_summary",
21
+ "title": "Navigation secondaire",
22
+ "content": "<p>Ce bouton permet de retourner au sommaire de l'activité en tout temps.</p>"
23
+ }
24
+ },
25
+ "message_4": {
26
+ "type": "tooltip",
27
+ "value": {
28
+ "target": "primary_activity",
29
+ "title": "Navigation principale",
30
+ "content": "<p>La navigation principale permet de valider ses réponses de quiz et de passer à la page suivante.</p>"
31
+ }
32
+ },
33
+ "message_5": {
34
+ "type": "popup-avert",
35
+ "value": {
36
+ "title": "Visite guidée",
37
+ "hypertext_1": "<p>Message pour la barre de lecture.</p>"
38
+ }
39
+ },
40
+ "message_6": {
41
+ "type": "popup-avert",
42
+ "value": {
43
+ "title": "Visite guidée",
44
+ "hypertext_1": "<p>Message pour les Paramètres.</p>"
45
+ }
46
+ }
47
+ }