@red-hat-developer-hub/backstage-plugin-lightspeed 2.8.1 → 2.8.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 (44) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/alpha/LightspeedFAB.esm.js +5 -2
  3. package/dist/alpha/LightspeedFAB.esm.js.map +1 -1
  4. package/dist/alpha.d.ts +5 -3
  5. package/dist/components/CollapsedHistoryStrip.esm.js +25 -22
  6. package/dist/components/CollapsedHistoryStrip.esm.js.map +1 -1
  7. package/dist/components/LightSpeedChat.esm.js +17 -12
  8. package/dist/components/LightSpeedChat.esm.js.map +1 -1
  9. package/dist/components/LightspeedChatBoxHeader.esm.js +6 -3
  10. package/dist/components/LightspeedChatBoxHeader.esm.js.map +1 -1
  11. package/dist/components/LightspeedChatContainer.esm.js +4 -2
  12. package/dist/components/LightspeedChatContainer.esm.js.map +1 -1
  13. package/dist/components/LightspeedDrawerProvider.esm.js +6 -3
  14. package/dist/components/LightspeedDrawerProvider.esm.js.map +1 -1
  15. package/dist/components/LightspeedFAB.esm.js +5 -2
  16. package/dist/components/LightspeedFAB.esm.js.map +1 -1
  17. package/dist/components/McpSettingsIcon.esm.js +14 -22
  18. package/dist/components/McpSettingsIcon.esm.js.map +1 -1
  19. package/dist/components/Router.esm.js +13 -4
  20. package/dist/components/Router.esm.js.map +1 -1
  21. package/dist/components/notebooks/DeleteDocumentModal.esm.js +131 -0
  22. package/dist/components/notebooks/DeleteDocumentModal.esm.js.map +1 -0
  23. package/dist/components/notebooks/NotebookView.esm.js +46 -29
  24. package/dist/components/notebooks/NotebookView.esm.js.map +1 -1
  25. package/dist/hooks/notebooks/useDocumentStatusPolling.esm.js +2 -1
  26. package/dist/hooks/notebooks/useDocumentStatusPolling.esm.js.map +1 -1
  27. package/dist/index.d.ts +1 -1
  28. package/dist/translations/de.esm.js +229 -229
  29. package/dist/translations/de.esm.js.map +1 -1
  30. package/dist/translations/es.esm.js +229 -231
  31. package/dist/translations/es.esm.js.map +1 -1
  32. package/dist/translations/fr.esm.js +229 -233
  33. package/dist/translations/fr.esm.js.map +1 -1
  34. package/dist/translations/it.esm.js +227 -233
  35. package/dist/translations/it.esm.js.map +1 -1
  36. package/dist/translations/ja.esm.js +227 -231
  37. package/dist/translations/ja.esm.js.map +1 -1
  38. package/dist/translations/ref.esm.js +8 -7
  39. package/dist/translations/ref.esm.js.map +1 -1
  40. package/dist/utils/generateClassName.esm.js +12 -0
  41. package/dist/utils/generateClassName.esm.js.map +1 -0
  42. package/dist/utils/lightspeed-chatbox-utils.esm.js +2 -2
  43. package/dist/utils/lightspeed-chatbox-utils.esm.js.map +1 -1
  44. package/package.json +2 -2
@@ -4,271 +4,267 @@ import { lightspeedTranslationRef } from './ref.esm.js';
4
4
  const lightspeedTranslationFr = createTranslationMessages({
5
5
  ref: lightspeedTranslationRef,
6
6
  messages: {
7
- "page.title": "Lightspeed",
8
- "page.subtitle": "Assistant de d\xE9veloppement AI-POWERED",
9
- "tabs.ariaLabel": "Vues Lightspeed",
10
- "tabs.chat": "Chat",
11
- "tabs.notebooks": "Carnets",
12
- "tabs.notebooks.devPreview": "Aper\xE7u d\xE9veloppeur",
13
- "tabs.notebooks.empty": "Le contenu des carnets s\u2019affichera ici.",
14
- "notebooks.title": "Mes carnets",
15
- "notebooks.empty.title": "Aucun carnet cr\xE9\xE9",
16
- "notebooks.empty.description": "Cr\xE9ez un nouveau carnet pour organiser vos sources et g\xE9n\xE9rer des informations aliment\xE9es par l\u2019IA.",
17
- "notebooks.empty.action": "Cr\xE9er un nouveau carnet",
18
- "notebooks.documents": "Documents",
19
- "notebooks.actions.rename": "Renommer",
20
- "notebooks.actions.delete": "Supprimer",
21
- "notebooks.rename.title": "Renommer {{name}} ?",
22
- "notebooks.rename.description": "Veuillez saisir le nouveau nom de ce carnet et cliquer sur Envoyer pour continuer.",
23
- "notebooks.rename.label": "Nouveau nom",
24
- "notebooks.rename.placeholder": "Nouveau nom",
25
- "notebooks.rename.action": "Envoyer",
26
- "notebooks.delete.title": "Supprimer {{name}} ?",
27
- "notebooks.delete.message": "Vous ne verrez plus ce carnet ici. Cela supprimera \xE9galement l\u2019activit\xE9 associ\xE9e comme les requ\xEAtes, r\xE9ponses et retours depuis votre activit\xE9 Lightspeed.",
28
- "notebooks.delete.action": "Supprimer",
29
- "notebooks.delete.toast": "Carnet supprim\xE9\xA0!",
30
- "notebooks.updated.today": "Mis \xE0 jour aujourd\u2019hui",
31
- "notebooks.updated.yesterday": "Mis \xE0 jour il y a 1 jour",
32
- "notebooks.updated.days": "Mis \xE0 jour il y a {{days}} jours",
33
- "notebooks.updated.on": "Mis \xE0 jour le",
34
- "notebooks.card.openAria": "Ouvrir le carnet {{name}}",
35
- // Notebook sample prompts
36
- "notebooks.prompts.coreConcepts.title": "Quels sont les concepts fondamentaux ?",
37
- "notebooks.prompts.vulnerabilities.title": "Afficher mes vuln\xE9rabilit\xE9s critiques",
38
- "notebooks.prompts.accessIssue.title": "Aidez-moi avec un probl\xE8me d'acc\xE8s",
39
- // Notebook view
40
- "notebook.view.title": "Carnet sans titre",
41
- "notebook.view.close": "Fermer le carnet",
42
- "notebook.view.documents.count": "{{count}} Documents",
43
- "notebook.view.documents.add": "Ajouter",
44
- "notebook.view.upload.heading": "Chargez une ressource pour commencer",
45
- "notebook.view.upload.action": "Charger une ressource",
46
- "notebook.view.input.placeholder": "Posez des questions sur vos documents...",
47
- "notebook.view.input.disabledTooltip": "S\xE9lectionnez au moins une ressource charg\xE9e pour commencer \xE0 discuter",
48
- "notebook.view.sidebar.collapse": "R\xE9duire la barre lat\xE9rale",
49
- "notebook.view.sidebar.expand": "D\xE9velopper la barre lat\xE9rale",
50
- "notebook.view.sidebar.resize": "Redimensionner la barre lat\xE9rale",
51
- "notebook.view.documents.uploading": "Chargement du document",
52
- "notebook.view.documents.maxReached": "Maximum 10 documents autoris\xE9s. Supprimez un document pour en charger un nouveau.",
53
- "notebook.upload.success": "{{fileName}} charg\xE9 avec succ\xE8s.",
54
- "notebook.upload.failed": "\xC9chec du chargement de {{fileName}}.",
55
- // Notebook upload modal
56
- "notebook.upload.modal.title": "Ajouter un document au carnet",
57
- "notebook.upload.modal.dragDropTitle": "Glissez-d\xE9posez les fichiers ici",
58
- "notebook.upload.modal.browseButton": "Charger",
59
- "notebook.upload.modal.separator": "ou",
60
- "notebook.upload.modal.infoText": "Types de fichiers accept\xE9s : .md, .txt, .pdf, .json, .yaml, .log",
61
- "notebook.upload.modal.selectedFiles": "{{count}} sur {{max}} fichiers s\xE9lectionn\xE9s",
62
- "notebook.upload.modal.addButton": "Ajouter ({{count}})",
63
- "notebook.upload.modal.removeFile": "Supprimer {{fileName}}",
64
- "notebook.upload.error.unsupportedType": "Erreur de chargement : type(s) de fichier non pris en charge. Veuillez charger uniquement des types de fichiers pris en charge.",
65
- "notebook.upload.error.fileTooLarge": "Erreur de chargement : la taille du fichier d\xE9passe la limite de 25 Mo.",
66
- "notebook.upload.error.tooManyFiles": "Erreur de chargement : {{max}} fichiers maximum autoris\xE9s.",
67
- // Notebook overwrite modal
68
- "notebook.overwrite.modal.title": "\xC9craser les fichiers ?",
69
- "notebook.overwrite.modal.description": "Les fichiers suivants existent d\xE9j\xE0 dans ce carnet. Voulez-vous les \xE9craser avec les nouvelles versions ?",
70
- "notebook.overwrite.modal.action": "\xC9craser",
71
- "notebook.document.delete": "Supprimer",
72
- "prompts.codeReadability.title": "Obtenir de l\u2019aide pour D\xE9crypter le Code",
73
- "prompts.codeReadability.message": "Pourriez-vous me sugg\xE9rer des techniques qui puissent rendre mon code plus lisible et facile d\u2019entretien?",
74
- "prompts.debugging.title": "Aide D\xE9bogage",
75
- "prompts.debugging.message": "Mon application me renvoie une erreur lorsque j\u2019essaie de me connecter \xE0 la base de donn\xE9es. Pouvez-vous m\u2019aider \xE0 identifier le probl\xE8me?",
76
- "prompts.developmentConcept.title": "Expliquer un Concept de d\xE9veloppement",
77
- "prompts.developmentConcept.message": "Pourriez-vous m\u2019expliquer comment l\u2019architecture des microservices fonctionne et quels sont ses avantages par rapport \xE0 un design monolithic ?",
78
- "prompts.codeOptimization.title": "Suggestions d\u2019Optmisation de Code",
79
- "prompts.codeOptimization.message": "Pourriez-vous me sugg\xE9rer les fa\xE7ons d\u2019optimiser le code pour le rendre plus performant ?",
80
- "prompts.documentation.title": "R\xE9capitulatif de la documentation",
81
- "prompts.documentation.message": "Pourriez-vous r\xE9sumer la documentation d\u2019impl\xE9mentation de l\u2019authentification 2.0 dans un app web ?",
82
- "prompts.gitWorkflows.title": "Flux de travail dans Git",
83
- "prompts.gitWorkflows.message": "Je souhaite changer le code sur une autre branche sans perdre mon travail existant. Quelle est la proc\xE9dure pour ce faire sans utiliser Git ?",
84
- "prompts.testingStrategies.title": "Suggestions de Strat\xE9gies pour Tester",
85
- "prompts.testingStrategies.message": "Pourriez-vous me conseiller des strat\xE9gies communes pour tester qui puissent rendre mon application robuste et sans erreurs?",
86
- "prompts.sortingAlgorithms.title": "D\xE9mystification les Algorithmes de triage",
87
- "prompts.sortingAlgorithms.message": "Pourriez-vous m\u2019expliquer quelle est la diff\xE9rence entre un triage rapide (quicksort) et un triage de regroupement (mergesort), et quand utiliser quoi?",
88
- "prompts.eventDriven.title": "Comprendre l\u2019Architecture bas\xE9e-\xE9v\xE9nement",
89
- "prompts.eventDriven.message": "Pourriez-vous m\u2019expliquer l\u2019architecture bas\xE9e-\xE9v\xE9nement et quand il faut l\u2019utiliser pour le d\xE9veloppement des logiciels?",
90
- "prompts.tekton.title": "D\xE9ployer avec Tekton",
91
- "prompts.tekton.message": "Pourriez-vous m\u2019aider \xE0 automatiser le d\xE9ploiement de mon application en utilisant les pipelines Tekton ?",
92
- "prompts.openshift.title": "Cr\xE9er un D\xE9ploiement Openshift",
93
- "prompts.openshift.message": "Pourriez-vous me guider sur la fa\xE7on de cr\xE9er un nouveau d\xE9veloppement Openshift pour une application conteneuris\xE9e ?",
94
- "prompts.rhdh.title": "Guide de D\xE9marrage de Red Hat Developer Hub",
95
- "prompts.rhdh.message": "Pourriez-vous me guider pour les premi\xE8res \xE9tapes de d\xE9marrage avec Developer Hub en tant que d\xE9veloppeur, comme explorer le Software Catalog et ajouter mon service ?",
96
- "conversation.delete.confirm.title": "Supprimer cette conversation ?",
97
- "conversation.delete.confirm.message": "Vous ne verrez plus cette conversation ici. Cela supprimera \xE9galement les activit\xE9s associ\xE9es comme les prompts, r\xE9ponses, et commentaires de votre activit\xE9 Lightspeed.",
98
- "conversation.delete.confirm.action": "Supprimer",
99
- "conversation.rename.confirm.title": "Renommer la conversation ?",
100
- "conversation.rename.confirm.action": "Renommer",
101
- "conversation.rename.placeholder": "Nom de la conversation",
102
- "permission.required.title": "Autorisations manquantes",
103
- "permission.subject.plugin": "le plugin Lightspeed",
104
- "permission.subject.notebooks": "les carnets Lightspeed",
105
- "permission.notebooks.goBack": "Retour",
106
- "lcore.notConfigured.title": "Connectez un LLM pour commencer",
107
- "lcore.notConfigured.description": "Lightspeed n\xE9cessite un LLM enregistr\xE9. Contactez l'administrateur de la plateforme de votre organisation pour finaliser la configuration.",
108
- "lcore.notConfigured.developerLightspeedDocs": "Configuration de Developer Lightspeed",
109
- "lcore.notConfigured.backendDocs": "Configuration du backend Lightspeed",
110
- "lcore.loadError.title": "Impossible de charger les mod\xE8les",
111
- "lcore.loadError.description": "Le backend Lightspeed n'a pas renvoy\xE9 de liste de mod\xE8les. V\xE9rifiez que le service est d\xE9marr\xE9 et joignable, puis r\xE9essayez.",
112
- "permission.required.description": "Pour afficher <subject/>, veuillez contacter votre administrateur pour qu'il vous donne la permission <permissions/>.",
113
- "disclaimer.withValidation": "Cette fonctionnalit\xE9 utilise la technologie AI. Ne pas inclure d\u2019informations personnelles ou toute autre information sensible dans vos entr\xE9es de donn\xE9es. Des interactions pourront \xEAtre utilis\xE9es pour am\xE9liorer les produits ou services de Red Hat.",
114
- "disclaimer.withoutValidation": "Cette fonctionnalit\xE9 utilise la technologie AI. Ne pas inclure d\u2019informations personnelles ou toute autre information sensible dans vos entr\xE9es de donn\xE9es. Des interactions pourront \xEAtre utilis\xE9es pour am\xE9liorer les produits ou services de Red Hat.",
115
- "footer.accuracy.label": "Toujours v\xE9rifier le contenu AI g\xE9n\xE9r\xE9 avant utilisation.",
116
- "common.cancel": "Annuler",
117
- "common.close": "Fermer",
118
- "common.readMore": "En savoir plus",
119
- "common.retry": "R\xE9essayer",
120
- "common.loading": "Chargement",
121
- "common.noSearchResults": "Aucun r\xE9sultat ne correspond \xE0 cette demande",
122
- "menu.newConversation": "Nouvelle Conversation",
123
- "chatbox.header.title": "Developer Lightspeed",
124
- "chatbox.search.placeholder": "Recherche",
125
- "chatbox.provider.other": "Autre",
126
- "chatbox.emptyState.noPinnedChats": "Aucune conversation \xE9pingl\xE9e",
127
- "chatbox.emptyState.noRecentChats": "Aucune conversation r\xE9cente",
128
- "chatbox.emptyState.noResults.title": "Aucun r\xE9sultat trouv\xE9",
129
- "chatbox.emptyState.noResults.body": "Ajuster votre recherche et essayer \xE0 nouveau. V\xE9rifier votre orthographe et essayez un terme plus g\xE9n\xE9ral.",
130
- "chatbox.welcome.greeting": "Hello, {{userName}}",
131
- "chatbox.welcome.description": "Comment puis-je vous aider ?",
132
- "chatbox.message.placeholder": "Entrez une invite pour Lightspeed",
133
- "chatbox.fileUpload.failed": "Le chargement de fichiers a \xE9chou\xE9",
134
- "chatbox.fileUpload.infoText": "Types de fichiers pris en charge: .txt, .yaml, and .json. La taille maximale est de 25 MB.",
135
- "aria.chatbotSelector": "S\xE9lecteur Chatbot",
136
- "aria.important": "Important",
137
7
  "aria.chatHistoryMenu": "Menu de l\u2019historique de conversations",
8
+ "aria.chatbotSelector": "S\xE9lecteur Chatbot",
9
+ "aria.close": "Fermer le chatbot",
138
10
  "aria.closeDrawerPanel": "Fermer le panneau de tiroirs",
139
- "aria.search.placeholder": "Recherche",
140
- "aria.searchPreviousConversations": "Recherche des anciennes conversations",
141
- "aria.resize": "Redimensionnement",
11
+ "aria.important": "Important",
142
12
  "aria.options.label": "Options",
13
+ "aria.resize": "Redimensionnement",
143
14
  "aria.scroll.down": "De haut en bas",
144
15
  "aria.scroll.up": "De bas en haut",
16
+ "aria.search.placeholder": "Recherche",
17
+ "aria.searchPreviousConversations": "Recherche des anciennes conversations",
145
18
  "aria.settings.label": "Options Chatbot",
146
- "aria.close": "Fermer le chatbot",
147
- "modal.edit": "Modifier",
148
- "modal.save": "Sauvegarder",
149
- "modal.close": "Fermer",
150
- "modal.cancel": "Annuler",
151
- "conversation.delete": "Supprimer",
152
- "conversation.rename": "Renommer",
19
+ "attach.menu.description": "Attacher un fichier JSON, YAML ou TXT",
20
+ "attach.menu.title": "Attacher",
21
+ "button.newChat": "Nouvelle Conversation",
22
+ "chatbox.emptyState.noPinnedChats": "Aucune conversation \xE9pingl\xE9e",
23
+ "chatbox.emptyState.noRecentChats": "Aucune conversation r\xE9cente",
24
+ "chatbox.emptyState.noResults.body": "Ajuster votre recherche et essayer \xE0 nouveau. V\xE9rifier votre orthographe et essayez un terme plus g\xE9n\xE9ral.",
25
+ "chatbox.emptyState.noResults.title": "Aucun r\xE9sultat trouv\xE9",
26
+ "chatbox.fileUpload.failed": "Le chargement de fichiers a \xE9chou\xE9",
27
+ "chatbox.fileUpload.infoText": "Types de fichiers pris en charge: .txt, .yaml, and .json. La taille maximale est de 25 MB.",
28
+ "chatbox.header.title": "Developer Lightspeed",
29
+ "chatbox.message.placeholder": "Entrez une invite pour Lightspeed",
30
+ "chatbox.provider.other": "Autre",
31
+ "chatbox.search.placeholder": "Recherche",
32
+ "chatbox.welcome.description": "Comment puis-je vous aider ?",
33
+ "chatbox.welcome.greeting": "Hello, {{userName}}",
34
+ "common.cancel": "Annuler",
35
+ "common.close": "Fermer",
36
+ "common.loading": "Chargement",
37
+ "common.noSearchResults": "Aucun r\xE9sultat ne correspond \xE0 cette demande",
38
+ "common.readMore": "En savoir plus",
39
+ "common.retry": "R\xE9essayer",
153
40
  "conversation.addToPinnedChats": "\xC9pingler",
154
- "conversation.removeFromPinnedChats": "D\xE9tacher",
155
- "conversation.announcement.userMessage": "Message en provenance de l\u2019utilisateur: {{prompt}}. Message en provenance du Bot en cours de chargement.",
156
41
  "conversation.announcement.responseStopped": "R\xE9ponse arr\xEAt\xE9e.",
157
- "user.guest": "Invit\xE9",
158
- "user.loading": "...",
159
- "tooltip.attach": "Attacher",
160
- "tooltip.send": "Envoyer",
161
- "tooltip.microphone.active": "Cessez d\u2019\xE9couter",
162
- "tooltip.microphone.inactive": "Utilisez le micro",
163
- "tooltip.expandHistoryPanel": "D\xE9velopper l'historique du chat",
164
- "tooltip.collapseHistoryPanel": "R\xE9duire l'historique du chat",
165
- "tooltip.quickNewChat": "Nouveau chat",
166
- "button.newChat": "Nouvelle Conversation",
167
- "tooltip.chatHistoryMenu": "Menu de l\u2019historique de conversations",
168
- "tooltip.responseRecorded": "R\xE9ponse enregistr\xE9e",
169
- "tooltip.backToTop": "De bas en haut",
170
- "tooltip.backToBottom": "De haut en bas",
171
- "tooltip.settings": "Options Chatbot",
172
- "tooltip.close": "Fermer",
173
- "tooltip.fab.open": "Ouvrir Lightspeed",
174
- "tooltip.fab.close": "Fermer Lightspeed",
175
- "attach.menu.title": "Attacher",
176
- "attach.menu.description": "Attacher un fichier JSON, YAML ou TXT",
177
- "modal.title.preview": "Aper\xE7u de la pi\xE8ce jointe",
178
- "modal.title.edit": "Modifier la pi\xE8ce jointe",
179
- "icon.lightspeed.alt": "Ic\xF4ne Lightspeed",
180
- "icon.permissionRequired.alt": "ic\xF4ne d\u2019autorisation requise",
181
- "message.options.label": "Options",
182
- "file.upload.error.alreadyExists": "Le fichier existe d\xE9j\xE0",
183
- "file.upload.error.multipleFiles": "T\xE9l\xE9charger plus d\u2019un fichier.",
184
- "file.upload.error.unsupportedType": "Type de fichier non pris en charge. Types de fichiers pris en charge: .txt, .yaml, and .json.",
185
- "file.upload.error.fileTooLarge": "Votre taille de fichier est trop grande. Veuillez vous assurer que votre fichier soit inf\xE9rieur \xE0 25MB.",
186
- "file.upload.error.readFailed": "Impossible de lire le fichier : {{errorMessage}}",
42
+ "conversation.announcement.userMessage": "Message en provenance de l\u2019utilisateur: {{prompt}}. Message en provenance du Bot en cours de chargement.",
43
+ "conversation.category.pinnedChats": "Chats \xE9pingl\xE9s",
44
+ "conversation.category.recent": "Chats",
45
+ "conversation.delete": "Supprimer",
46
+ "conversation.delete.confirm.action": "Supprimer",
47
+ "conversation.delete.confirm.message": "Vous ne verrez plus cette conversation ici. Cela supprimera \xE9galement les activit\xE9s associ\xE9es comme les prompts, r\xE9ponses, et commentaires de votre activit\xE9 Lightspeed.",
48
+ "conversation.delete.confirm.title": "Supprimer cette conversation ?",
49
+ "conversation.removeFromPinnedChats": "D\xE9tacher",
50
+ "conversation.rename": "Renommer",
51
+ "conversation.rename.confirm.action": "Renommer",
52
+ "conversation.rename.confirm.title": "Renommer la conversation ?",
53
+ "conversation.rename.placeholder": "Nom de la conversation",
54
+ "disclaimer.withValidation": "Cette fonctionnalit\xE9 utilise la technologie AI. Ne pas inclure d\u2019informations personnelles ou toute autre information sensible dans vos entr\xE9es de donn\xE9es. Des interactions pourront \xEAtre utilis\xE9es pour am\xE9liorer les produits ou services de Red Hat.",
55
+ "disclaimer.withoutValidation": "Cette fonctionnalit\xE9 utilise la technologie AI. Ne pas inclure d\u2019informations personnelles ou toute autre information sensible dans vos entr\xE9es de donn\xE9es. Des interactions pourront \xEAtre utilis\xE9es pour am\xE9liorer les produits ou services de Red Hat.",
187
56
  "error.context.fileAttachment": "useFileAttachmentContext doit \xEAtre dans un FileAttachmentContextProvider",
188
- "feedback.form.title": "Pourquoi avez-vous s\xE9lectionn\xE9e cette estimation ?",
189
- "feedback.form.textAreaPlaceholder": "Veuillez-nous offrir des commentaires suppl\xE9mentaires ?",
57
+ "feedback.completion.body": "Nous avons re\xE7u votre r\xE9ponse. Merci de partager vos commentaires avec nous !",
58
+ "feedback.completion.title": "Commentaire soumis",
190
59
  "feedback.form.submitWord": "Soumettre",
191
- "feedback.tooltips.goodResponse": "Bonne r\xE9ponse",
60
+ "feedback.form.textAreaPlaceholder": "Veuillez-nous offrir des commentaires suppl\xE9mentaires ?",
61
+ "feedback.form.title": "Pourquoi avez-vous s\xE9lectionn\xE9e cette estimation ?",
62
+ "feedback.quickResponses.negative.didntAnswer": "N\u2019a pas r\xE9pondu \xE0 ma question",
63
+ "feedback.quickResponses.negative.hardToUnderstand": "Difficile \xE0 comprendre",
64
+ "feedback.quickResponses.negative.notHelpful": "Peu utile",
65
+ "feedback.quickResponses.positive.easyToUnderstand": "Facile \xE0 comprendre",
66
+ "feedback.quickResponses.positive.helpful": "Information utile",
67
+ "feedback.quickResponses.positive.resolvedIssue": "A pu r\xE9soudre mon probl\xE8me",
192
68
  "feedback.tooltips.badResponse": "Mauvaise r\xE9ponse",
193
69
  "feedback.tooltips.copied": "Copi\xE9",
194
70
  "feedback.tooltips.copy": "Copier",
195
- "feedback.tooltips.listening": "En cours d\u2019\xE9coute",
71
+ "feedback.tooltips.goodResponse": "Bonne r\xE9ponse",
196
72
  "feedback.tooltips.listen": "\xC9couter",
197
- "feedback.quickResponses.positive.helpful": "Information utile",
198
- "feedback.quickResponses.positive.easyToUnderstand": "Facile \xE0 comprendre",
199
- "feedback.quickResponses.positive.resolvedIssue": "A pu r\xE9soudre mon probl\xE8me",
200
- "feedback.quickResponses.negative.didntAnswer": "N\u2019a pas r\xE9pondu \xE0 ma question",
201
- "feedback.quickResponses.negative.hardToUnderstand": "Difficile \xE0 comprendre",
202
- "feedback.quickResponses.negative.notHelpful": "Peu utile",
203
- "feedback.completion.title": "Commentaire soumis",
204
- "feedback.completion.body": "Nous avons re\xE7u votre r\xE9ponse. Merci de partager vos commentaires avec nous !",
205
- "conversation.category.pinnedChats": "\xC9pingl\xE9",
206
- "conversation.category.recent": "R\xE9cent",
207
- "settings.pinned.enable": "Activer les conversations \xE9pingl\xE9es",
208
- "settings.pinned.disable": "D\xE9sactiver les conversations \xE9pingl\xE9es",
209
- "settings.pinned.enabled.description": "Les conversation \xE9pingl\xE9es sont actuellement activ\xE9es",
210
- "settings.pinned.disabled.description": "Les conversations \xE9pingl\xE9es sont actuellement d\xE9sactiv\xE9es",
211
- "settings.mcp.label": "Param\xE8tres MCP",
212
- "mcp.settings.title": "Serveurs MCP",
213
- "mcp.settings.selectedCount": "{{selectedCount}} sur {{totalCount}} s\xE9lectionn\xE9s",
73
+ "feedback.tooltips.listening": "En cours d\u2019\xE9coute",
74
+ "file.upload.error.alreadyExists": "Le fichier existe d\xE9j\xE0",
75
+ "file.upload.error.fileTooLarge": "Votre taille de fichier est trop grande. Veuillez vous assurer que votre fichier soit inf\xE9rieur \xE0 25MB.",
76
+ "file.upload.error.multipleFiles": "T\xE9l\xE9charger plus d\u2019un fichier.",
77
+ "file.upload.error.readFailed": "Impossible de lire le fichier : {{errorMessage}}",
78
+ "file.upload.error.unsupportedType": "Type de fichier non pris en charge. Types de fichiers pris en charge: .txt, .yaml, and .json.",
79
+ "footer.accuracy.label": "Toujours v\xE9rifier le contenu AI g\xE9n\xE9r\xE9 avant utilisation.",
80
+ "icon.lightspeed.alt": "Ic\xF4ne Lightspeed",
81
+ "icon.permissionRequired.alt": "ic\xF4ne d\u2019autorisation requise",
82
+ "lcore.loadError.description": "Le backend Lightspeed n'a pas renvoy\xE9 de liste de mod\xE8les. V\xE9rifiez que le service est d\xE9marr\xE9 et joignable, puis r\xE9essayez.",
83
+ "lcore.loadError.title": "Impossible de charger les mod\xE8les",
84
+ "lcore.notConfigured.backendDocs": "Configuration du backend Lightspeed",
85
+ "lcore.notConfigured.description": "Lightspeed n\xE9cessite un LLM enregistr\xE9. Contactez l'administrateur de la plateforme de votre organisation pour finaliser la configuration.",
86
+ "lcore.notConfigured.developerLightspeedDocs": "Configuration de Developer Lightspeed",
87
+ "lcore.notConfigured.title": "Connectez un LLM pour commencer",
214
88
  "mcp.settings.closeAriaLabel": "Fermer les param\xE8tres MCP",
215
- "mcp.settings.readOnlyAccess": "Vous disposez d\u2019un acc\xE8s en lecture seule aux serveurs MCP.",
216
- "mcp.settings.tableAriaLabel": "Tableau des serveurs MCP",
217
- "mcp.settings.enabled": "Activ\xE9",
218
- "mcp.settings.name": "Nom",
219
- "mcp.settings.status": "Statut",
89
+ "mcp.settings.closeConfigureModalAriaLabel": "Fermer la fen\xEAtre de configuration",
90
+ "mcp.settings.configureServerTitle": "Configurer le serveur {{serverName}}",
220
91
  "mcp.settings.edit": "Modifier",
92
+ "mcp.settings.editServerAriaLabel": "Modifier {{serverName}}",
93
+ "mcp.settings.enabled": "Activ\xE9",
94
+ "mcp.settings.enterToken": "Saisissez votre jeton",
221
95
  "mcp.settings.loading": "Chargement des serveurs MCP...",
96
+ "mcp.settings.modalDescription": "Les identifiants sont chiffr\xE9s au repos et limit\xE9s \xE0 votre profil. Lightspeed fonctionnera avec exactement vos autorisations.",
97
+ "mcp.settings.name": "Nom",
222
98
  "mcp.settings.noneAvailable": "Aucun serveur MCP disponible.",
99
+ "mcp.settings.personalAccessToken": "Jeton d'acc\xE8s personnel",
100
+ "mcp.settings.readOnlyAccess": "Vous disposez d\u2019un acc\xE8s en lecture seule aux serveurs MCP.",
101
+ "mcp.settings.removePersonalToken": "Supprimer le jeton personnel",
102
+ "mcp.settings.savedToken": "Jeton enregistr\xE9",
103
+ "mcp.settings.selectedCount": "{{selectedCount}} sur {{totalCount}} s\xE9lectionn\xE9s",
104
+ "mcp.settings.status": "Statut",
223
105
  "mcp.settings.status.disabled": "D\xE9sactiv\xE9",
224
- "mcp.settings.status.tokenRequired": "Jeton requis",
225
106
  "mcp.settings.status.failed": "\xC9chec",
226
- "mcp.settings.status.oneTool": "{{count}} outil",
227
107
  "mcp.settings.status.manyTools": "{{count}} outils",
108
+ "mcp.settings.status.oneTool": "{{count}} outil",
109
+ "mcp.settings.status.tokenRequired": "Jeton requis",
228
110
  "mcp.settings.status.unknown": "Inconnu",
111
+ "mcp.settings.tableAriaLabel": "Tableau des serveurs MCP",
112
+ "mcp.settings.title": "Serveurs MCP",
229
113
  "mcp.settings.toggleServerAriaLabel": "Basculer {{serverName}}",
230
- "mcp.settings.editServerAriaLabel": "Modifier {{serverName}}",
231
- "mcp.settings.configureServerTitle": "Configurer le serveur {{serverName}}",
232
- "mcp.settings.closeConfigureModalAriaLabel": "Fermer la fen\xEAtre de configuration",
233
- "mcp.settings.modalDescription": "Les identifiants sont chiffr\xE9s au repos et limit\xE9s \xE0 votre profil. Lightspeed fonctionnera avec exactement vos autorisations.",
234
- "mcp.settings.savedToken": "Jeton enregistr\xE9",
235
- "mcp.settings.personalAccessToken": "Jeton d'acc\xE8s personnel",
236
- "mcp.settings.usingAdminCredential": "Les identifiants fournis par l\u2019administrateur sont utilis\xE9s. Saisissez un jeton personnel pour les remplacer pour votre compte.",
237
- "mcp.settings.enterToken": "Saisissez votre jeton",
238
- "mcp.settings.removePersonalToken": "Supprimer le jeton personnel",
239
114
  "mcp.settings.token.clearAriaLabel": "Effacer la saisie du jeton",
240
- "mcp.settings.token.validating": "Validation du jeton...",
115
+ "mcp.settings.token.connectionSuccessful": "Connexion r\xE9ussie",
116
+ "mcp.settings.token.invalidCredentials": "Identifiants invalides. V\xE9rifiez l\u2019URL du serveur et le jeton.",
241
117
  "mcp.settings.token.savingAndValidating": "Enregistrement et validation du jeton...",
242
118
  "mcp.settings.token.urlUnavailableForValidation": "Impossible de valider le jeton car l\u2019URL du serveur n\u2019est pas disponible.",
243
- "mcp.settings.token.invalidCredentials": "Identifiants invalides. V\xE9rifiez l\u2019URL du serveur et le jeton.",
119
+ "mcp.settings.token.validating": "Validation du jeton...",
244
120
  "mcp.settings.token.validationFailed": "\xC9chec de la validation. V\xE9rifiez l\u2019URL du serveur et le jeton.",
245
- "mcp.settings.token.connectionSuccessful": "Connexion r\xE9ussie",
246
- // Tool calling
247
- "toolCall.header": "R\xE9ponse de l'outil : {{toolName}}",
248
- "toolCall.thinking": "A r\xE9fl\xE9chi pendant {{seconds}} secondes",
249
- "toolCall.executionTime": "Temps d'ex\xE9cution : ",
250
- "toolCall.parameters": "Param\xE8tres",
251
- "toolCall.response": "R\xE9ponse",
252
- "toolCall.showMore": "afficher plus",
253
- "toolCall.showLess": "afficher moins",
254
- "toolCall.loading": "Ex\xE9cution de l'outil...",
255
- "toolCall.executing": "Ex\xE9cution de l'outil...",
256
- "toolCall.copyResponse": "Copier la r\xE9ponse",
257
- "toolCall.summary": "Voici un r\xE9sum\xE9 de votre r\xE9ponse",
258
- "toolCall.mcpServer": "Serveur MCP",
259
- // Display modes
260
- "settings.displayMode.label": "Mode d'affichage",
261
- "settings.displayMode.overlay": "Superposition",
121
+ "mcp.settings.usingAdminCredential": "Les identifiants fournis par l\u2019administrateur sont utilis\xE9s. Saisissez un jeton personnel pour les remplacer pour votre compte.",
122
+ "menu.newConversation": "Nouvelle Conversation",
123
+ "message.options.label": "Options",
124
+ "modal.cancel": "Annuler",
125
+ "modal.close": "Fermer",
126
+ "modal.edit": "Modifier",
127
+ "modal.save": "Sauvegarder",
128
+ "modal.title.edit": "Modifier la pi\xE8ce jointe",
129
+ "modal.title.preview": "Aper\xE7u de la pi\xE8ce jointe",
130
+ "notebook.document.delete": "Supprimer",
131
+ "notebook.document.delete.action": "Supprimer",
132
+ "notebook.document.delete.description": "\xCAtes-vous s\xFBr de vouloir supprimer <documentName/> de ce carnet ? Cette action est irr\xE9versible.",
133
+ "notebook.document.delete.success": "\xAB {{documentName}} \xBB supprim\xE9 avec succ\xE8s.",
134
+ "notebook.document.delete.title": "Supprimer la ressource ?",
135
+ "notebook.overwrite.modal.action": "\xC9craser",
136
+ "notebook.overwrite.modal.description": "Les fichiers suivants existent d\xE9j\xE0 dans ce carnet. Voulez-vous les \xE9craser avec les nouvelles versions ?",
137
+ "notebook.overwrite.modal.title": "\xC9craser les fichiers ?",
138
+ "notebook.upload.error.fileTooLarge": "Erreur de chargement : la taille du fichier d\xE9passe la limite de 25 Mo.",
139
+ "notebook.upload.error.tooManyFiles": "Erreur de chargement : {{max}} fichiers maximum autoris\xE9s.",
140
+ "notebook.upload.error.unsupportedType": "Erreur de chargement : type(s) de fichier non pris en charge. Veuillez charger uniquement des types de fichiers pris en charge.",
141
+ "notebook.upload.failed": '\xC9chec du chargement de "{{fileName}}".',
142
+ "notebook.upload.modal.addButton": "Ajouter ({{count}})",
143
+ "notebook.upload.modal.browseButton": "Charger",
144
+ "notebook.upload.modal.dragDropTitle": "Glissez-d\xE9posez les fichiers ici",
145
+ "notebook.upload.modal.infoText": "Types de fichiers accept\xE9s : .md, .txt, .pdf, .json, .yaml, .log",
146
+ "notebook.upload.modal.removeFile": "Supprimer {{fileName}}",
147
+ "notebook.upload.modal.selectedFiles": "{{count}} sur {{max}} fichiers s\xE9lectionn\xE9s",
148
+ "notebook.upload.modal.separator": "ou",
149
+ "notebook.upload.modal.title": "Ajouter un document au carnet",
150
+ "notebook.view.close": "Fermer le carnet",
151
+ "notebook.view.documents.add": "Ajouter",
152
+ "notebook.view.documents.count": "{{count}} Documents",
153
+ "notebook.view.documents.maxReached": "Maximum 10 documents autoris\xE9s. Supprimez un document pour en charger un nouveau.",
154
+ "notebook.view.documents.uploading": "Chargement du document",
155
+ "notebook.view.input.disabledTooltip": "S\xE9lectionnez au moins une ressource charg\xE9e pour commencer \xE0 discuter",
156
+ "notebook.view.input.placeholder": "Posez des questions sur vos documents...",
157
+ "notebook.view.sidebar.collapse": "R\xE9duire la barre lat\xE9rale",
158
+ "notebook.view.sidebar.expand": "D\xE9velopper la barre lat\xE9rale",
159
+ "notebook.view.sidebar.resize": "Redimensionner la barre lat\xE9rale",
160
+ "notebook.view.title": "Carnet sans titre",
161
+ "notebook.view.upload.action": "Charger une ressource",
162
+ "notebook.view.upload.heading": "Chargez une ressource pour commencer",
163
+ "notebooks.actions.delete": "Supprimer",
164
+ "notebooks.actions.rename": "Renommer",
165
+ "notebooks.card.openAria": "Ouvrir le carnet {{name}}",
166
+ "notebooks.delete.action": "Supprimer",
167
+ "notebooks.delete.message": "Vous ne verrez plus ce carnet ici. Cela supprimera \xE9galement l\u2019activit\xE9 associ\xE9e comme les requ\xEAtes, r\xE9ponses et retours depuis votre activit\xE9 Lightspeed.",
168
+ "notebooks.delete.title": "Supprimer {{name}} ?",
169
+ "notebooks.delete.toast": "Carnet supprim\xE9\xA0!",
170
+ "notebooks.documents": "Documents",
171
+ "notebooks.empty.action": "Cr\xE9er un nouveau carnet",
172
+ "notebooks.empty.description": "Cr\xE9ez un nouveau carnet pour organiser vos sources et g\xE9n\xE9rer des informations aliment\xE9es par l\u2019IA.",
173
+ "notebooks.empty.title": "Aucun carnet cr\xE9\xE9",
174
+ "notebooks.prompts.accessIssue.title": "Aidez-moi avec un probl\xE8me d'acc\xE8s",
175
+ "notebooks.prompts.coreConcepts.title": "Quels sont les concepts fondamentaux ?",
176
+ "notebooks.prompts.vulnerabilities.title": "Afficher mes vuln\xE9rabilit\xE9s critiques",
177
+ "notebooks.rename.action": "Envoyer",
178
+ "notebooks.rename.description": "Veuillez saisir le nouveau nom de ce carnet et cliquer sur Envoyer pour continuer.",
179
+ "notebooks.rename.label": "Nouveau nom",
180
+ "notebooks.rename.placeholder": "Nouveau nom",
181
+ "notebooks.rename.title": "Renommer {{name}} ?",
182
+ "notebooks.title": "Mes carnets",
183
+ "notebooks.updated.days": "Mis \xE0 jour il y a {{days}} jours",
184
+ "notebooks.updated.on": "Mis \xE0 jour le",
185
+ "notebooks.updated.today": "Mis \xE0 jour aujourd\u2019hui",
186
+ "notebooks.updated.yesterday": "Mis \xE0 jour il y a 1 jour",
187
+ "page.subtitle": "Assistant de d\xE9veloppement AI-POWERED",
188
+ "page.title": "Lightspeed",
189
+ "permission.notebooks.goBack": "Retour",
190
+ "permission.required.description": "Pour afficher <subject/>, veuillez contacter votre administrateur pour qu'il vous donne la permission <permissions/>.",
191
+ "permission.required.title": "Autorisations manquantes",
192
+ "permission.subject.notebooks": "les carnets Lightspeed",
193
+ "permission.subject.plugin": "le plugin Lightspeed",
194
+ "prompts.codeOptimization.message": "Pourriez-vous me sugg\xE9rer les fa\xE7ons d\u2019optimiser le code pour le rendre plus performant ?",
195
+ "prompts.codeOptimization.title": "Suggestions d\u2019Optmisation de Code",
196
+ "prompts.codeReadability.message": "Pourriez-vous me sugg\xE9rer des techniques qui puissent rendre mon code plus lisible et facile d\u2019entretien?",
197
+ "prompts.codeReadability.title": "Obtenir de l\u2019aide pour D\xE9crypter le Code",
198
+ "prompts.debugging.message": "Mon application me renvoie une erreur lorsque j\u2019essaie de me connecter \xE0 la base de donn\xE9es. Pouvez-vous m\u2019aider \xE0 identifier le probl\xE8me?",
199
+ "prompts.debugging.title": "Aide D\xE9bogage",
200
+ "prompts.developmentConcept.message": "Pourriez-vous m\u2019expliquer comment l\u2019architecture des microservices fonctionne et quels sont ses avantages par rapport \xE0 un design monolithic ?",
201
+ "prompts.developmentConcept.title": "Expliquer un Concept de d\xE9veloppement",
202
+ "prompts.documentation.message": "Pourriez-vous r\xE9sumer la documentation d\u2019impl\xE9mentation de l\u2019authentification 2.0 dans un app web ?",
203
+ "prompts.documentation.title": "R\xE9capitulatif de la documentation",
204
+ "prompts.eventDriven.message": "Pourriez-vous m\u2019expliquer l\u2019architecture bas\xE9e-\xE9v\xE9nement et quand il faut l\u2019utiliser pour le d\xE9veloppement des logiciels?",
205
+ "prompts.eventDriven.title": "Comprendre l\u2019Architecture bas\xE9e-\xE9v\xE9nement",
206
+ "prompts.gitWorkflows.message": "Je souhaite changer le code sur une autre branche sans perdre mon travail existant. Quelle est la proc\xE9dure pour ce faire sans utiliser Git ?",
207
+ "prompts.gitWorkflows.title": "Flux de travail dans Git",
208
+ "prompts.openshift.message": "Pourriez-vous me guider sur la fa\xE7on de cr\xE9er un nouveau d\xE9veloppement Openshift pour une application conteneuris\xE9e ?",
209
+ "prompts.openshift.title": "Cr\xE9er un D\xE9ploiement Openshift",
210
+ "prompts.rhdh.message": "Pourriez-vous me guider pour les premi\xE8res \xE9tapes de d\xE9marrage avec Developer Hub en tant que d\xE9veloppeur, comme explorer le Software Catalog et ajouter mon service ?",
211
+ "prompts.rhdh.title": "Guide de D\xE9marrage de Red Hat Developer Hub",
212
+ "prompts.sortingAlgorithms.message": "Pourriez-vous m\u2019expliquer quelle est la diff\xE9rence entre un triage rapide (quicksort) et un triage de regroupement (mergesort), et quand utiliser quoi?",
213
+ "prompts.sortingAlgorithms.title": "D\xE9mystification les Algorithmes de triage",
214
+ "prompts.tekton.message": "Pourriez-vous m\u2019aider \xE0 automatiser le d\xE9ploiement de mon application en utilisant les pipelines Tekton ?",
215
+ "prompts.tekton.title": "D\xE9ployer avec Tekton",
216
+ "prompts.testingStrategies.message": "Pourriez-vous me conseiller des strat\xE9gies communes pour tester qui puissent rendre mon application robuste et sans erreurs?",
217
+ "prompts.testingStrategies.title": "Suggestions de Strat\xE9gies pour Tester",
218
+ "reasoning.thinking": "Afficher la r\xE9flexion",
262
219
  "settings.displayMode.docked": "Ancrer \xE0 la fen\xEAtre",
263
220
  "settings.displayMode.fullscreen": "Plein \xE9cran",
264
- // Sort options
221
+ "settings.displayMode.label": "Mode d'affichage",
222
+ "settings.displayMode.overlay": "Superposition",
223
+ "settings.mcp.badge": "Nouveau",
224
+ "settings.mcp.label": "Param\xE8tres MCP",
225
+ "settings.pinned.disable": "D\xE9sactiver les conversations \xE9pingl\xE9es",
226
+ "settings.pinned.disabled.description": "Les conversations \xE9pingl\xE9es sont actuellement d\xE9sactiv\xE9es",
227
+ "settings.pinned.enable": "Activer les conversations \xE9pingl\xE9es",
228
+ "settings.pinned.enabled.description": "Les conversation \xE9pingl\xE9es sont actuellement activ\xE9es",
229
+ "sort.alphabeticalAsc": "Nom (A-Z)",
230
+ "sort.alphabeticalDesc": "Nom (Z-A)",
265
231
  "sort.label": "Trier les conversations",
266
232
  "sort.newest": "Date (plus r\xE9cent en premier)",
267
233
  "sort.oldest": "Date (plus ancien en premier)",
268
- "sort.alphabeticalAsc": "Nom (A-Z)",
269
- "sort.alphabeticalDesc": "Nom (Z-A)",
270
- // Deep thinking
271
- "reasoning.thinking": "Afficher la r\xE9flexion"
234
+ "tabs.ariaLabel": "Vues Lightspeed",
235
+ "tabs.chat": "Chat",
236
+ "tabs.notebooks": "Carnets",
237
+ "tabs.notebooks.devPreview": "Aper\xE7u d\xE9veloppeur",
238
+ "tabs.notebooks.empty": "Le contenu des carnets s\u2019affichera ici.",
239
+ "toolCall.copyResponse": "Copier la r\xE9ponse",
240
+ "toolCall.executing": "Ex\xE9cution de l'outil...",
241
+ "toolCall.executionTime": "Temps d'ex\xE9cution : ",
242
+ "toolCall.header": "R\xE9ponse de l'outil : {{toolName}}",
243
+ "toolCall.loading": "Ex\xE9cution de l'outil...",
244
+ "toolCall.mcpServer": "Serveur MCP",
245
+ "toolCall.parameters": "Param\xE8tres",
246
+ "toolCall.response": "R\xE9ponse",
247
+ "toolCall.showLess": "afficher moins",
248
+ "toolCall.showMore": "afficher plus",
249
+ "toolCall.summary": "Voici un r\xE9sum\xE9 de votre r\xE9ponse",
250
+ "toolCall.thinking": "A r\xE9fl\xE9chi pendant {{seconds}} secondes",
251
+ "tooltip.attach": "Attacher",
252
+ "tooltip.backToBottom": "De haut en bas",
253
+ "tooltip.backToTop": "De bas en haut",
254
+ "tooltip.chatHistoryMenu": "Menu de l\u2019historique de conversations",
255
+ "tooltip.close": "Fermer",
256
+ "tooltip.collapseHistoryPanel": "R\xE9duire l'historique du chat",
257
+ "tooltip.expandHistoryPanel": "D\xE9velopper l'historique du chat",
258
+ "tooltip.fab.close": "Fermer Lightspeed",
259
+ "tooltip.fab.open": "Ouvrir Lightspeed",
260
+ "tooltip.microphone.active": "Cessez d\u2019\xE9couter",
261
+ "tooltip.microphone.inactive": "Utilisez le micro",
262
+ "tooltip.quickNewChat": "Nouveau chat",
263
+ "tooltip.responseRecorded": "R\xE9ponse enregistr\xE9e",
264
+ "tooltip.send": "Envoyer",
265
+ "tooltip.settings": "Options Chatbot",
266
+ "user.guest": "Invit\xE9",
267
+ "user.loading": "..."
272
268
  }
273
269
  });
274
270