agent-workbench 0.5.4 → 0.6.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.
- package/README.md +50 -26
- package/dist/server.js +2689 -536
- package/dist/web/assets/de-B1W5R6hb.js +1 -0
- package/dist/web/assets/es-7g4wzPIf.js +1 -0
- package/dist/web/assets/fr-DaY5ttUk.js +1 -0
- package/dist/web/assets/{highlight-BeEbartE.js → highlight-BXBl9DQv.js} +1 -1
- package/dist/web/assets/index-Bk0CUikM.css +32 -0
- package/dist/web/assets/index-D8_sieMX.js +139 -0
- package/dist/web/assets/ja-C1rp47bG.js +1 -0
- package/dist/web/assets/ko-D0Bwy-Ri.js +1 -0
- package/dist/web/assets/pt-BR-BVIxhwAC.js +1 -0
- package/dist/web/assets/ru-CCRfyRi5.js +1 -0
- package/dist/web/assets/zh-CN-CaghDQ5n.js +1 -0
- package/dist/web/index.html +2 -2
- package/package.json +3 -2
- package/dist/web/assets/de-Dn90shDf.js +0 -1
- package/dist/web/assets/es-ssi17uPF.js +0 -1
- package/dist/web/assets/fr-CqnouzuH.js +0 -1
- package/dist/web/assets/index-D4OE_EfT.css +0 -32
- package/dist/web/assets/index-zFKk_FJ_.js +0 -139
- package/dist/web/assets/ja-1U-Ks_ON.js +0 -1
- package/dist/web/assets/ko-Ce2gOy44.js +0 -1
- package/dist/web/assets/pt-BR-BC8Km40N.js +0 -1
- package/dist/web/assets/ru-DFCLMfWY.js +0 -1
- package/dist/web/assets/zh-CN-VwZ7SeiK.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={"agent.composer.imagesRefused":"Cette CLI n'accepte pas d'images depuis la zone de saisie.","agent.continue.discovering":"La session n'est pas encore dans l'historique : elle y apparaît avec le premier message.","agent.continue.noConversation":"Cet onglet n'a pas encore de conversation à continuer.","agent.continue.noMessages":"Cette conversation n'a pas encore de messages à continuer.","agent.continue.title":"Continuer cette conversation avec une autre CLI","agent.dot.idle":"CLI prête, rien en cours","agent.dot.noStatus":"Cette CLI ne publie pas son état","agent.dot.open":"CLI ouverte","agent.dot.statusLineOnly":"Cette CLI ne publie son état qu'avec la status line configurée","agent.dot.statusLinePending":"La status line n'a pas encore publié l'état de cette conversation","agent.handoff.notice":"Suite d'une conversation {{label}} : l'agent repart d'une transcription {{turns}}, et non du contexte qu'il avait. Les résultats des outils sont tronqués et les images ne sont pas transmises.","agent.handoff.prefill.noDelivery":"Le message est dans la zone de saisie : vérifiez-le et envoyez-le avec Enter.","agent.handoff.prefill.notReady":"La CLI n'était pas prête à temps : le message est dans la zone de saisie, à vous de l'envoyer.","agent.handoff.prefill.sendFailed":"L'envoi automatique a échoué : le message est dans la zone de saisie, à vous de l'envoyer.","agent.handoff.sending":"Envoi de la continuation…","agent.handoff.tabLabel":"Suite : {{title}}","agent.handoff.tabLabelNoTitle":"Suite","agent.handoff.turns.all_one":"de {{count}} tour","agent.handoff.turns.all_other":"des {{count}} tours","agent.handoff.turns.lastManyOfMore_one":"des {{included}} derniers tours sur plus de {{count}}","agent.handoff.turns.lastManyOfMore_other":"des {{included}} derniers tours sur plus de {{count}}","agent.handoff.turns.lastMany_one":"des {{included}} derniers tours sur {{count}}","agent.handoff.turns.lastMany_other":"des {{included}} derniers tours sur {{count}}","agent.handoff.turns.lastOne":"du dernier tour sur {{total}}","agent.handoff.turns.lastOneOfMore":"du dernier tour sur plus de {{total}}","agent.handoff.turns.single":"de l'unique tour","agent.meter.idle.noFile":"La session n'a encore mesuré aucune réponse. Le contexte ne part pas de zéro : le prompt système, les outils et le fichier d'instructions du projet en occupent déjà une partie, et le chiffre réel apparaît avec la première réponse.","agent.meter.idle.statusLine":"La status line n'a encore publié aucun token pour cette conversation. Le contexte ne part pas de zéro : le chiffre apparaît quand la CLI exécute la status line, avec le premier message ou à la reprise de la session.","agent.meter.idle.withFile":"La session n'a encore mesuré aucune réponse. Le contexte ne part pas de zéro : le prompt système, les outils et {{file}} en occupent déjà une partie, et le chiffre réel apparaît avec la première réponse.","agent.meter.origin.catalog":"limite issue du catalogue de modèles de la CLI","agent.meter.origin.estimated":"limite déduite des tokens mesurés","agent.meter.setup.disabled":"Cette CLI ne publie ses tokens que via sa status line, et celle de l'application est désactivée. « Configurer » explique comment faire.","agent.meter.setup.missing":"Cette CLI ne publie ses tokens que via sa status line, et celle-ci n'est pas encore configurée. « Configurer » explique comment faire.","agent.meter.setup.otherCommand":"Cette CLI ne publie ses tokens que via sa status line, et vous avez configuré une autre status line. « Configurer » explique comment faire.","agent.meter.setup.unreadable":"Cette CLI ne publie ses tokens que via sa status line, et son settings.json n'a pas pu être lu. « Configurer » explique comment faire.","agent.mode.blocked":"Une confirmation est en attente dans la CLI : changer de mode maintenant l'approuverait. Répondez-y dans l'onglet CLI.","agent.mode.title":"Mode {{mode}} : {{hint}}. Le changer envoie {{key}} à l'onglet CLI","agent.mode.titleBlind":"{{title}}. Sans les données de la status line, l'application ne peut pas savoir si une confirmation est en attente ; changer de mode à ce moment-là l'approuve","agent.note.empty":"La note est vide","agent.note.needsTab":"Ouvrez d'abord un onglet : la conversation s'ouvre dans son projet","agent.note.noReadySignal":"La CLI de cet onglet n'indique pas quand elle est prête : la note ne peut donc pas être envoyée","agent.note.send":"Envoyer la note à l'agent dans une nouvelle conversation ouverte dans {{cwd}}","agent.openBlocked":"Ouverture d'un onglet dans ce projet…","agent.openTool.noLabel":"La CLI a un outil sans résultat : une approbation est peut-être en attente. Répondez-y dans l'onglet CLI.","agent.openTool.withLabel":"{{label}} a un outil sans résultat : une approbation est peut-être en attente. Répondez-y dans l'onglet CLI.","agent.queueReturned.noLabel":"La CLI n'a pas eu le temps de transmettre le message envoyé pendant son travail : l'interruption est arrivée avant. Il est de retour dans la zone de saisie, non envoyé.","agent.queueReturned.withLabel":"{{label}} n'a pas eu le temps de transmettre le message envoyé pendant son travail : l'interruption est arrivée avant. Il est de retour dans la zone de saisie, non envoyé.","agent.serverClosed.noLabel":"Le serveur de la CLI s'est arrêté et cet onglet a perdu sa connexion.","agent.serverClosed.relaunch":"Relancer","agent.serverClosed.relaunching":"Relance en cours…","agent.serverClosed.withLabel":"Le serveur {{label}} s'est arrêté et cet onglet a perdu sa connexion.","agent.session.cliMissing":"{{label}} n'est pas installé.","agent.shortcuts.antigravity.answerPermission":"Répondre à une demande d'autorisation : 1 l'accepte, 4 la refuse","agent.shortcuts.antigravity.cycleMode":"Changer de mode : accept-edits, plan et par défaut (quand le terminal a le focus)","agent.shortcuts.antigravity.help":"Afficher les raccourcis de la CLI","agent.shortcuts.antigravity.interrupt":"Interrompre le tour en cours, ou annuler une demande d'autorisation","agent.shortcuts.claudeCode.cancel":"Annuler","agent.shortcuts.claudeCode.cycleMode":"Changer le mode de permissions (quand le terminal a le focus)","agent.shortcuts.claudeCode.fullOutput":"Afficher la sortie complète","agent.shortcuts.claudeCode.pasteImage":"Coller une image depuis le presse-papiers","agent.shortcuts.claudeCode.pasteText":"Coller du texte depuis le presse-papiers","agent.shortcuts.claudeCode.rewind":"Ouvrir le menu rewind","agent.shortcuts.claudeCode.searchHistory":"Rechercher dans l'historique des commandes","agent.shortcuts.codex.cycleMode":"Basculer entre le mode par défaut et Plan (quand le terminal a le focus)","agent.shortcuts.codex.editPrevious":"Modifier un message précédent","agent.shortcuts.codex.effort":"Baisser / augmenter l'effort","agent.shortcuts.codex.externalEditor":"Modifier le message dans l'éditeur externe","agent.shortcuts.codex.interruptOrExit":"Interrompre, ou quitter s'il n'y a pas de tour en cours","agent.shortcuts.codex.interruptTurn":"Interrompre le tour en cours","agent.shortcuts.codex.mention":"Mentionner un fichier, une skill ou un plugin","agent.shortcuts.codex.note":"Dans Codex, Alt + ← / → changent d'agent, mais ici l'application les utilise pour changer d'onglet.","agent.shortcuts.codex.queue":"Mettre le message en file d'attente pendant que l'agent travaille","agent.shortcuts.codex.searchHistory":"Rechercher dans l'historique des messages","agent.shortcuts.codex.transcript":"Afficher la transcription","agent.shortcuts.commands":"Commandes","agent.shortcuts.composer.newline":"Saut de ligne sans envoyer","agent.shortcuts.composer.pasteText":"Coller du texte","agent.shortcuts.composer.pasteWithImages":"Coller du texte ou une image (elle apparaît en miniature)","agent.shortcuts.composer.send":"Envoyer le message","agent.shortcuts.interruptCli":"Interrompre ce que fait la CLI","agent.shortcuts.leaderThen":"Ctrl + X, puis {{key}}","agent.shortcuts.opencode.clearInput":"Effacer la saisie ; deux fois, quitter","agent.shortcuts.opencode.commandList":"Liste des commandes, avec les variantes du modèle","agent.shortcuts.opencode.cycleAgent":"Changer d'agent, build ou plan (quand le terminal a le focus)","agent.shortcuts.opencode.interrupt":"Interrompre (le premier appui ne fait qu'avertir)","agent.shortcuts.opencode.model":"Choisir un modèle","agent.shortcuts.opencode.newSession":"Nouvelle session : l'onglet reste lié à la session avec laquelle il a été ouvert","agent.shortcuts.opencode.newline":"Saut de ligne","agent.shortcuts.opencode.note":"Dans OpenCode, Ctrl + T change la variante du modèle, mais le navigateur se réserve ce raccourci : la commande est accessible via Ctrl + P.","agent.shortcuts.opencode.paste":"Coller","agent.shortcuts.pi.bash":"Exécuter une commande shell","agent.shortcuts.pi.clearOrExit":"Effacer l'éditeur ; deux fois, quitter","agent.shortcuts.pi.cycleThinking":"Changer le niveau de réflexion (quand le terminal a le focus)","agent.shortcuts.pi.model":"Choisir un modèle","agent.shortcuts.pi.newline":"Saut de ligne","agent.shortcuts.pi.nextModel":"Passer au modèle suivant","agent.shortcuts.pi.toolOutput":"Replier ou déplier la sortie des outils","agent.shortcuts.pi.tree":"Avec l'éditeur vide : ouvrir l'arbre de la session","agent.statusLine.noFragment":"Le dossier de l'application contient des caractères que la console interprète (comme & % ! ou des guillemets) et, avec eux, aucune ligne ne peut être exécutée par la CLI : sous Windows, elle exécute la ligne avec cmd /c et aucun guillemet ne passe. Placer le dossier de configuration dans un chemin sans ces caractères résout le problème.","agent.statusLine.state.active":"Configurée","agent.statusLine.state.disabled":"Désactivée (enabled: false)","agent.statusLine.state.missing":"Non configurée","agent.statusLine.state.otherCommand":"Vous avez une autre status line : coller celle-ci la remplace","agent.statusLine.state.unreadable":"Impossible de lire settings.json","agent.thread.discovering":"La session apparaît dans l'historique avec le premier message.","agent.thread.noTranscript":"Cette conversation provient d'une version de la CLI qui ne laissait pas de transcription lisible. Elle peut être reprise depuis la barre latérale, mais il n'y a rien à afficher ici.","agent.waiting.answer":"La CLI attend une réponse de votre part.","agent.waiting.permission":"La CLI attend que vous autorisiez un outil.","agent.waiting.question":"L'agent vous a posé une question : répondez-y dans le fil.","agentMenu.chooseTitle":"Choisir avec quelle CLI ouvrir","agentMenu.openWith":"Ouvrir avec","agentMenu.titleWithAgent":"{{title}} — avec {{label}}","app.banner.revoked":"L'accès de cet appareil a été révoqué, ou l'accès à distance a été désactivé. Pour revenir, associez-le de nouveau depuis l'ordinateur où tourne Agent Workbench.","app.divider.consoleHeight":"Faites glisser pour modifier la hauteur de la console","app.divider.width":"Faites glisser pour modifier la largeur","app.empty.hint":"Choisissez un projet à gauche, ou ouvrez une session de l'historique pour la reprendre.","app.empty.newSession":"Nouvelle session dans {{cwd}}","app.empty.noTabs":"Aucun onglet ouvert.","app.empty.opening":"Ouverture…","app.header.cliVersion":"CLI {{version}}","app.header.remoteAccess":"Accès à distance","app.header.remoteBadge":"À distance","app.header.remoteBadgeTitle":"Cette fenêtre est connectée depuis un appareil associé. La gestion de l'accès à distance, ainsi que tout ce qui ouvre un fichier avec les applications de l'ordinateur où tourne Agent Workbench, n'est disponible que sur cet ordinateur.","app.header.shortcuts":"Afficher les raccourcis clavier","app.markerNotice":"Ce serveur a été lancé depuis une session de CLI. La variable <code>{{variable}}</code> a été retirée de l'environnement des onglets : elle désactive l'enregistrement de l'historique, et sans lui il n'y aurait ni conversation ni jauge de contexte. Le reste de l'environnement n'est pas modifié.","app.panel.name":"Panneau","app.panel.show":"Afficher le panneau de droite (Alt+P)","app.picker.project.confirm":"Ouvrir ici","app.picker.project.confirmTitle":"Ouvrir un onglet d'agent dans {{path}}","app.picker.project.title":"Nouveau projet","app.picker.vault.confirm":"Utiliser ce dossier","app.picker.vault.confirmTitle":"Déplacer la sauvegarde vers {{path}}. Le dossier actuel reste intact","app.picker.vault.title":"Dossier de la sauvegarde","app.sidebar.name":"Projets","app.sidebar.show":"Afficher la liste des projets","app.status.connecting":"Connexion en cours","app.status.failed":"Pas de connexion","app.status.open":"Connecté","app.status.reconnecting":"Reconnexion en cours","app.status.revoked":"Accès révoqué","archive.allBlocked_one":"Sa seule conversation a un onglet ouvert. Fermez-le d'abord.","archive.allBlocked_other":"Ses {{count}} conversations ont un onglet ouvert. Fermez-les d'abord.","archive.blockedStays_one":"Une autre a un onglet ouvert et ne sera pas archivée.","archive.blockedStays_other":"{{count}} autres ont un onglet ouvert et ne seront pas archivées.","archive.confirm_one":"Archiver {{count}} conversation ?","archive.confirm_other":"Archiver les {{count}} conversations ?","archive.withBlocked":"{{confirm}} {{blocked}}","common.cancel":"Annuler","common.close":"Fermer","common.closeEsc":"Fermer (Esc)","common.copied":"Copié","common.copyCode":"Copier le code","common.dismissNotice":"Fermer l'avis","common.gotIt":"Compris","composer.attach":"Joindre un fichier","composer.attachTitle":"Joindre un fichier : un log, un PDF, un document ou une image","composer.chip.editHint":"Afficher et modifier le texte collé","composer.chip.editorLabel":"Modifier le texte collé #{{number}}","composer.chip.pastedTextEmpty":"#{{number}} · Texte collé · vide, ne sera pas envoyé","composer.chip.pastedText_one":"#{{number}} · Texte collé · {{count}} ligne","composer.chip.pastedText_other":"#{{number}} · Texte collé · {{count}} lignes","composer.chip.remove":"Retirer","composer.pastedImage":"image collée","composer.placeholder.ended":"La session de cet onglet est terminée.","composer.placeholder.ready":"Saisissez votre message.","composer.placeholder.sleeping":"La CLI de cet onglet n'est pas encore ouverte.","composer.problem.draftTooLong":"Ce message est trop long pour être gardé comme brouillon : si vous fermez Agent Workbench avant de l'envoyer, il sera perdu.","composer.problem.empty":"« {{name}} » est vide.","composer.problem.imageTooBig":"L'image fait {{size}} Mo ; le maximum est de {{max}} Mo.","composer.problem.imageUnreadable":"Impossible de lire l'image du presse-papiers.","composer.problem.tooBig":"« {{name}} » fait {{size}} Mo ; le maximum est de {{max}} Mo.","composer.problem.tooManyFiles_one":"Jusqu'à {{count}} fichier par message.","composer.problem.tooManyFiles_other":"Jusqu'à {{count}} fichiers par message.","composer.problem.tooManyImages_one":"Jusqu'à {{count}} image par message.","composer.problem.tooManyImages_other":"Jusqu'à {{count}} images par message.","composer.problem.unreadable":"Impossible de lire « {{name}} ».","composer.resizeTitle":"Faites glisser pour redimensionner la zone de saisie","composer.send":"Envoyer","composer.sendTitle":"Envoyer (Enter)","composer.stop":"Arrêter","composer.stopTitle":"Interrompre ce que fait la CLI (Esc)","console.collapse":"Replier. Les processus continuent de tourner : pour les arrêter, utilisez le × de chaque terminal","console.name":"Console","console.noShell":"Aucune console système n'a été trouvée.","console.openAnother":"Ouvrir un autre {{shell}} dans {{cwd}}","console.openAnyIn":"Ouvrir une console dans {{cwd}}","console.openIn":"Ouvrir {{shell}} dans {{cwd}}","console.tab.close":"Fermer ce terminal et arrêter son processus","console.tab.exited":"Terminé avec le code {{code}}","console.tab.label":"Terminal {{number}}","console.tab.title":"{{shell}} {{number}} dans {{cwd}}","continue.menuLabel":"Continuer avec","controls.effort.high":"Élevé","controls.effort.inUse":"Effort utilisé : {{effort}}. Le changer envoie {{command}} à l'onglet CLI","controls.effort.inUseSaved":"Effort utilisé : {{effort}}. Le changer envoie {{command}} à l'onglet CLI, et la CLI l'enregistre comme valeur par défaut pour les prochains onglets","controls.effort.low":"Faible","controls.effort.max":"Max","controls.effort.medium":"Moyen","controls.effort.minimal":"Minimal","controls.effort.noData":"Effort : aucune donnée. Tous les modèles n'ont pas de niveaux — avec haiku, /effort ne laisse aucune trace","controls.effort.off":"Désactivé","controls.effort.placeholder":"effort — inconnu","controls.effort.provisional":"Effort selon votre configuration : {{effort}}. Aucune réponse ne l'a encore confirmé","controls.effort.xhigh":"Très élevé","controls.model.default":"Par défaut","controls.model.inUse":"Modèle utilisé : {{model}}. Le changer envoie /model à l'onglet CLI","controls.model.inUseSaved":"Modèle utilisé : {{model}}. Le changer envoie /model à l'onglet CLI, et la CLI l'enregistre comme valeur par défaut pour les prochains onglets","controls.model.noData":"Modèle : aucune réponse dans cette session pour l'instant","controls.model.placeholder":"modèle — inconnu","controls.model.provisional":"Modèle selon votre configuration : {{model}}. Aucune réponse ne l'a encore confirmé","conversation.answerUnconfirmed":"La CLI n'a pas confirmé cette réponse. Réessayez, ou répondez dans l'onglet CLI.","diff.binary":"Fichier binaire : aucun diff à afficher.","diff.noChanges":"Aucune modification.","diff.truncated":"Le diff a été tronqué en raison de sa taille. Le fichier complet se lit plus facilement hors de ce panneau.","docs.backToList":"Afficher la liste","docs.failed":"Impossible de lire le document. Réessayez avec ⟳.","docs.mode.formatted":"Mis en forme","docs.mode.label":"Comment afficher ce Markdown","docs.mode.source":"Source","docs.reload":"Relire le document","docs.reloadFailed":"Impossible de relire : voici la dernière version reçue.","docs.search.placeholder":"Rechercher dans ce document","docs.tab.close":"Fermer ce document","files.allHidden":"tout son contenu est masqué","files.empty":"vide","files.hidden.hide":"Masquer à nouveau ce qu'excluent .gitignore et la liste intégrée","files.hidden.show":"Afficher aussi ce qu'excluent .gitignore et la liste intégrée","files.hiddenCount_one":"{{count}} masqué","files.hiddenCount_other":"{{count}} masqués","files.hiddenTitle":"Masqués : .git, node_modules, dist, bin, obj et tout ce qu'indique .gitignore","files.insertFolderPath":"Mettre le chemin de ce dossier dans votre message","files.insertPath":"Mettre le chemin de « {{name}} » dans votre message","files.loading":"chargement…","files.menu.copyAbsolute":"Copier le chemin absolu","files.menu.copyRelative":"Copier le chemin relatif","files.menu.insertMention":"Insérer comme @chemin","files.menu.openWithSystem":"Ouvrir avec l'application par défaut","files.moreEntries":"il y a plus d'éléments que ceux affichés","files.pathInserted":"Ajouté à votre message","files.preview.binary":"Fichier binaire : pas d'aperçu.","files.preview.insertPath":"Mettre le chemin dans votre message","files.preview.truncated":"Le fichier a été tronqué en raison de sa taille. Ouvrez-le avec l'application par défaut pour le voir en entier.","files.readDirFailed":"Impossible de lire le répertoire.","files.readingDir":"Lecture du répertoire…","files.readingFile":"Lecture du fichier…","files.refresh":"Recharger l'arborescence","files.reveal":"Ouvrir « {{name}} » dans l'explorateur de fichiers du système","files.revealFolder":"Ouvrir ce dossier dans l'explorateur de fichiers du système","files.row.alwaysHidden":"toujours masqué : .git, node_modules, dist, bin, obj","files.row.ignored":"masqué par .gitignore","files.search.clear":"Effacer (Esc)","files.search.more":"il y a plus de résultats que ceux affichés","files.search.moreTitle":"Affinez la recherche pour tous les voir","files.search.none":"Aucun fichier de ce nom.","files.search.placeholder":"Rechercher des fichiers par nom…","files.search.prompt":"Tapez pour rechercher.","files.search.searching":"Recherche…","format.bytes.b":"{{value}} o","format.bytes.gb":"{{value}} Go","format.bytes.kb":"{{value}} Ko","format.bytes.mb":"{{value}} Mo","format.duration.minutes":"{{value}} min","format.duration.minutesSeconds":"{{minutes}} min {{seconds}} s","format.duration.ms":"{{value}} ms","format.duration.seconds":"{{value}} s","format.duration.underSecond":"moins de 1 s","git.aheadBehindTitle":"Commits en avance et en retard sur la branche amont","git.backToChanges":"Modifications","git.clean":"L'arbre de travail est propre.","git.detached":"HEAD détachée","git.detachedAt":"HEAD détachée @ {{head}}","git.group.conflict":"En conflit","git.group.conflictHint":"À résoudre avant de continuer","git.group.staged":"Indexés","git.group.stagedHint":"Déjà ajoutés avec git add","git.group.unstaged":"Non indexés","git.group.unstagedHint":"Modifiés dans l'arbre de travail","git.group.untracked":"Non suivis","git.group.untrackedHint":"Nouveaux fichiers que git ne connaît pas","git.kind.added":"ajouté","git.kind.conflict":"en conflit","git.kind.copied":"copié","git.kind.deleted":"supprimé","git.kind.modified":"modifié","git.kind.renamed":"renommé","git.kind.typeChanged":"type modifié","git.kind.untracked":"non suivi","git.newFolderTitle":"{{path}} — nouveau dossier ; son contenu apparaît dans Fichiers","git.readingDiff":"Lecture du diff…","git.refresh":"Actualiser l'état maintenant","git.stagedTag":"indexé","git.truncated":"Il y a plus de modifications que celles affichées. En général, cela signifie qu'il manque une règle dans <code>.gitignore</code>.","git.unknownState":"L'état du dépôt n'est pas encore connu.","git.upstreamTitle":"Branche amont : {{upstream}}","git.worktrees.detached":"HEAD détachée","git.worktrees.heading":"Autres worktrees","git.worktrees.headingTitle":"Autres arbres de travail de ce dépôt","header.locale.auto":"Automatique (navigateur : {{name}})","header.locale.title":"Langue : {{name}}","header.locale.titleAuto":"Langue : {{name}} (automatique, selon le navigateur)","memory.action.appendBlock":"le bloc sera ajouté à la fin","memory.action.appendLines":"des lignes seront ajoutées à la fin","memory.action.copy":"sera copié","memory.action.create":"sera créé","memory.action.replaceBlock":"le bloc sera remplacé","memory.back":"← Mémoire","memory.error.connectionLost":"La connexion a été coupée avant la réponse. Une fois la connexion rétablie, l'état indiquera ce qui a été écrit.","memory.form.copyFromMain":"Copier les notes du worktree principal","memory.form.existingNotes":"Notes existantes","memory.form.files":"Fichiers d'instructions","memory.form.importNative_one":"Importer {{count}} note de la mémoire de Claude Code","memory.form.importNative_other":"Importer {{count}} notes de la mémoire de Claude Code","memory.form.noFiles":"Choisissez au moins un fichier d'instructions","memory.form.planning":"Calcul en cours…","memory.form.preview":"Prévisualiser les modifications","memory.git.alreadyIgnored":"Ce dépôt ignore déjà <code>.agents/memory/</code>. Pour la versionner, il faut retirer cette règle de <code>.gitignore</code> à la main.","memory.git.blocked":"Comme git renvoie une erreur, l'installation n'est possible que sans toucher à .gitignore","memory.git.dontTouch":"Ne pas toucher à <code>.gitignore</code>","memory.git.errorHint":"git a renvoyé une erreur","memory.git.errorWarning":"git a renvoyé une erreur : impossible de savoir si la mémoire est ignorée. Elle peut être installée sans toucher à <code>.gitignore</code>.","memory.git.ignore":"Ignorer la mémoire","memory.git.ignoreHint":"recommandé","memory.git.version":"La versionner","memory.git.versionHint":"pour les dépôts privés","memory.global.copy":"Copier l'extrait","memory.global.intro":"Ce qui s'applique à tous vos projets va dans <code>~/.agents/global.md</code>. L'application ne l'écrit pas : chaque CLI le lit dès que vous ajoutez son extrait.","memory.global.title":"Mémoire globale","memory.index":"Index","memory.intro.what":"La mémoire partagée conserve ce que les agents apprennent sur ce projet — décisions, contraintes, pièges déjà rencontrés — pour la session suivante.","memory.intro.where":"Elle se trouve dans <code>.agents/memory/</code> : une note par fichier et un index, <code>MEMORY.md</code>. Les quatre CLI la lisent grâce à un bloc balisé dans leur fichier d'instructions. Rien n'est écrit tant que vous n'avez pas confirmé les modifications.","memory.list.empty":"Aucune note pour l'instant. Les agents les enregistrent ici quand ils apprennent quelque chose d'utile pour une autre session.","memory.list.notes":"Notes","memory.loading":"Lecture de la mémoire…","memory.native.import_one":"Importer {{count}} note","memory.native.import_other":"Importer {{count}} notes","memory.native.importing":"Importation…","memory.native.pending_one":"La mémoire native de Claude Code contient {{count}} note qui ne figure pas ici.","memory.native.pending_other":"La mémoire native de Claude Code contient {{count}} notes qui ne figurent pas ici.","memory.note.loading":"Lecture de la note…","memory.note.truncated":"La note a été tronquée en raison de sa taille.","memory.plan.back":"Retour","memory.plan.changes":"Modifications","memory.plan.copiedFrom":"Copie de {{path}}","memory.plan.install":"Installer","memory.plan.nothing":"Rien à modifier : le pont est déjà à jour.","memory.plan.update":"Mettre à jour","memory.plan.writing":"Écriture…","memory.problem.brokenBlock":"Ses marqueurs de bloc sont mal formés","memory.problem.brokenBlockWarning":"<code>{{file}}</code> a des marqueurs de bloc de mémoire mal formés : un marqueur sans sa paire, ou le bloc répété. L'application n'y touchera pas tant que vous ne l'aurez pas corrigé à la main.","memory.problem.encoding":"Il n'est pas en UTF-8","memory.problem.encodingWarning":"<code>{{file}}</code> n'est pas en UTF-8 (il semble être en UTF-16, ce qu'écrit <code>></code> dans Windows PowerShell 5.1). Enregistrez-le en UTF-8 : l'application n'y touchera pas d'ici là.","memory.problem.outside":"C'est un lien qui pointe hors du projet","memory.problem.outsideWarning":"<code>{{file}}</code> est un lien qui pointe hors du projet : l'application ne le lit pas et ne l'écrit pas.","memory.reach.adjust":"Ajuster","memory.reach.adjustTitle":"Choisir à nouveau les fichiers d'instructions du pont","memory.reach.doesNotReach":" : n'accède pas à la mémoire, {{via}}","memory.reach.reaches":" : accède à la mémoire via {{via}}","memory.reach.title":"{{label}} : {{via}}","memory.result.imported_one":"{{count}} note importée.","memory.result.imported_other":"{{count}} notes importées.","memory.result.installed_one":"Terminé : {{count}} fichier modifié.","memory.result.installed_other":"Terminé : {{count}} fichiers modifiés.","memory.result.nothingChanged":"Il n'y avait rien à modifier : le pont était déjà à jour.","memory.result.nothingImported":"Il n'y avait aucune nouvelle note à importer.","memory.result.skipped_one":"Fichier non écrasé, car il existait déjà avec un autre contenu : {{files}}.","memory.result.skipped_other":"Fichiers non écrasés, car ils existaient déjà avec un autre contenu : {{files}}.","memory.result.withSkipped":"{{result}} {{skipped}}","memory.update.button":"Mettre à jour le pont","memory.update.missing":"Le bloc manque dans {{files}}.","memory.update.outdatedAndMissing_one":"{{outdated}} a un bloc obsolète ; le bloc manque dans {{missing}}.","memory.update.outdatedAndMissing_other":"{{outdated}} ont un bloc obsolète ; le bloc manque dans {{missing}}.","memory.update.outdated_one":"{{files}} a un bloc obsolète.","memory.update.outdated_other":"{{files}} ont un bloc obsolète.","meter.configure":"Configurer","meter.label":"Contexte","meter.lastResponseTitle":"Dernière réponse du modèle","meter.modelWithOrigin":"{{model}} — {{origin}}","meter.noTokens":"cette CLI ne publie pas de tokens","meter.noTokensTitle":"Cette CLI ne publie pas le nombre de tokens utilisés par chaque réponse : il n'y a donc rien à mesurer.","meter.output":"sortie {{tokens}}","meter.responses_one":"{{count}} réponse","meter.responses_other":"{{count}} réponses","meter.sessionTitle":"Cumul sur toute la session","meter.sessionTotals_one":"session {{output}} sortie · {{cache}} cache · {{count}} réponse","meter.sessionTotals_other":"session {{output}} sortie · {{cache}} cache · {{count}} réponses","meter.unknownModel":"modèle non reconnu : affichage des tokens, sans la taille de la fenêtre","meter.unknownModelShort":"modèle non reconnu : taille de fenêtre inconnue","meter.unmeasured":"non mesuré","meter.windowPercent":"{{percent}} % de la fenêtre","mode.acceptEdits.hint":"Accepte les modifications de fichiers sans demander","mode.acceptEdits.label":"Accepter les modifs","mode.auto.hint":"La CLI décide seule quels outils utiliser, sans demander","mode.auto.label":"Auto","mode.default.hint":"Demande avant chaque outil non autorisé","mode.default.label":"Manuel","mode.plan.hint":"Analyse et propose un plan, sans rien toucher tant que vous ne l'avez pas approuvé","mode.plan.label":"Plan","narrow.keys.ctrlO":"Ctrl+O (dans Claude Code, déplie ce qui est tronqué)","narrow.keys.ctrlX":"Ctrl+X","narrow.keys.down":"Flèche vers le bas","narrow.keys.esc":"Échap","narrow.keys.interrupt":"Ctrl+C : interrompre","narrow.keys.label":"Touches du terminal","narrow.keys.left":"Flèche vers la gauche","narrow.keys.right":"Flèche vers la droite","narrow.keys.shiftTab":"Maj+Tab (dans Claude Code, change le mode de permissions)","narrow.keys.tab":"Tabulation","narrow.keys.up":"Flèche vers le haut","narrow.menu.chimePage":"Cette page","narrow.menu.chimeSystem":"Système","narrow.menu.cli":"CLI","narrow.menu.connection":"Connexion","narrow.menu.folder":"Dossier","narrow.menu.language":"Langue","narrow.menu.notifications":"Notifications système","narrow.menu.phoneAppDisconnect":"Déconnecter","narrow.menu.phoneAppSettings":"Réglages","narrow.menu.shortcuts":"Raccourcis clavier","narrow.menu.sound":"Son de notification","narrow.menu.theme":"Thème","narrow.more":"Plus","narrow.projects":"Projets","narrow.tabs.close":"Fermer l'onglet","narrow.tabs.new":"Nouvel onglet","narrow.tabs.none":"Aucun onglet ouvert.","narrow.tabs.open":"Onglets","narrow.tabs.rename":"Renommer","narrow.view.chat":"Chat","notes.attach":"Joindre une image depuis un fichier","notes.closeConfirm":"Fermer cette note la supprime, ainsi que ses images.","notes.closeNote":"Fermer la note. Elle est supprimée, ainsi que ses images","notes.collapse":"Replier. Les notes ne sont pas perdues : c'est le × de chaque onglet qui les ferme","notes.empty":"Aucune note. Le <b>+</b> en ouvre une ; elles servent à noter une idée sans quitter ce que vous faites.","notes.expand":"Déplier les notes","notes.imageAlt":"image de la note","notes.imageFallbackName":"l'image","notes.imageOnly":"Image","notes.imageTooBig":"« {{name}} » fait {{size}} Mo ; le maximum est de {{max}} Mo.","notes.imageUnavailable":"l'image n'est pas disponible","notes.lightboxClose":"Cliquez pour fermer","notes.name":"Notes","notes.new":"Nouvelle note","notes.placeholder":"Notez une idée. Vous pouvez coller ou faire glisser des images ici.","notes.readFailed":"Impossible de lire l'image.","notes.removeImage":"Retirer l'image","notes.resize":"Faites glisser pour modifier la hauteur","notes.thumbMissing":"introuvable","notes.tooManyImages_one":"Jusqu'à {{count}} image par note.","notes.tooManyImages_other":"Jusqu'à {{count}} images par note.","notes.untitled":"Note","notify.attention":"« {{tab}} » vous attend","notify.done":"« {{tab}} » a terminé","panel.cliUnseen":"La CLI a écrit quelque chose","panel.hide":"Masquer le panneau (Alt+P)","panel.restoreWidth":"Rétablir la largeur de la colonne","panel.tab.cli":"CLI","panel.tab.files":"Fichiers","panel.tab.git":"Modifications","panel.tab.memory":"Mémoire","panel.tab.plans":"Plans","panel.widen":"Élargir la colonne — l'interface de la CLI a besoin de place pour afficher les diffs et les tableaux","picker.create":"Créer","picker.createHere":"Créer un dossier ici","picker.empty":"Il n'y a aucun sous-dossier ici.","picker.goTo":"Aller à {{root}}","picker.loading":"Lecture du disque…","picker.newFolderName":"Nom du dossier","picker.truncated":"Il y a plus de sous-dossiers que la liste ne peut en afficher. Ouvrez-en un pour affiner.","picker.up":"dossier parent","plans.empty":"Cette conversation n'a encore écrit aucun document. Les plans du mode plan apparaissent ici, ainsi que les fichiers <code>.md</code> que l'agent enregistre dans le projet ou dans son dossier temporaire.","plans.loading":"Lecture du plan…","plans.missing":"introuvable","plans.missingTitle":"Le fichier n'est plus sur le disque","plans.truncated":"Le plan a été tronqué en raison de sa taille.","remote.address":"Adresse de cet ordinateur","remote.copied":"Copié","remote.copy":"Copier","remote.device.connected":"Connecté en ce moment","remote.device.lastSeen":"Dernière connexion : {{when}}","remote.device.never":"Jamais connecté","remote.device.paired":"Associé : {{when}}","remote.device.rename":"Renommer","remote.device.revoke":"Révoquer","remote.device.revokeConfirm":"Cliquez de nouveau pour révoquer","remote.devices":"Appareils associés","remote.devices.empty":"Aucun pour le moment.","remote.intro":"Utilisez Agent Workbench depuis un autre ordinateur de votre réseau ou depuis votre téléphone. Rien n'est ouvert au réseau : la connexion passe par un tunnel SSH.","remote.onlyOnHost":"Uniquement sur l'ordinateur où tourne Agent Workbench : cela s'ouvre avec les applications de cet ordinateur.","remote.pair.after":"Ensuite, l'autre ordinateur ouvre simplement {{url}}.","remote.pair.cancel":"Annuler","remote.pair.expires":"Elle ne fonctionne qu'une fois et expire dans {{time}}.","remote.pair.needsActive":"Vous pourrez associer un appareil une fois l'accès à distance activé et en fonctionnement.","remote.pair.open":"Une fois le tunnel lancé, ouvrez cette adresse dans le navigateur de l'autre ordinateur :","remote.pair.start":"Associer un appareil","remote.phone.authorize.admin":"1. Autorisez la clé du téléphone : sur cet ordinateur, collez ceci dans PowerShell en tant qu'administrateur.","remote.phone.authorize.powershell":"1. Autorisez la clé du téléphone : sur cet ordinateur, collez ceci dans PowerShell.","remote.phone.authorize.terminal":"1. Autorisez la clé du téléphone : sur cet ordinateur, collez ceci dans un terminal.","remote.phone.authorizeOnce":"La clé n'ouvre que le tunnel vers Agent Workbench : ni terminal ni commandes. Si vous l'avez déjà collée, inutile de recommencer.","remote.phone.hint":"Avec l'app Android ? Elle n'a besoin que de l'étape 1 : elle ouvre le tunnel et s'associe toute seule.","remote.phone.qrLabel":"Code à scanner avec le téléphone","remote.phone.scan":"2. Dans l'application, touchez « Scanner le code » et visez ici :","remote.phone.secret":"Ne partagez pas ce code ni une photo de celui-ci : il contient la clé du téléphone.","remote.phone.start":"Associer un téléphone","remote.phone.title":"Un téléphone","remote.port":"Port","remote.portInvalid":"Un nombre entre {{min}} et {{max}}.","remote.portSave":"Enregistrer","remote.restartHint":"L'activation, ou le changement de port, prend effet au redémarrage d'Agent Workbench. Le redémarrage ferme les CLI ouvertes : les onglets reviennent en veille.","remote.ssh.linux":"Dans un terminal (Ubuntu ou Debian ; sur d’autres distributions, installez leur serveur OpenSSH) :","remote.ssh.macos":"Réglages Système → Général → Partage → activez « Session à distance ».","remote.ssh.windows":"Ouvrez PowerShell en tant qu’administrateur et collez ceci. La première ligne télécharge et installe le serveur : cela prend quelques minutes et affiche « Running » pendant ce temps. Attendez le retour de l’invite avant de continuer.","remote.state.active":"Activé, port {{port}}","remote.state.off":"Désactivé","remote.state.portBusy":"Le port {{port}} est occupé : l'accès à distance ne fonctionne donc pas lors de cette exécution. Fermez l'autre programme (il peut s'agir d'un autre Agent Workbench) et redémarrez, ou choisissez un autre port.","remote.state.restartNeeded":"Activé, mais cela ne prend effet qu'au redémarrage d'Agent Workbench","remote.step.host":"1. Sur cet ordinateur, une fois : activez SSH","remote.step.hostHint":"C'est un réglage du système qui demande les droits d'administrateur, donc l'app ne le fait pas elle-même. Le système de cet ordinateur est ouvert :","remote.step.pair":"3. Associez-le, une fois par appareil","remote.step.tunnel":"2. Sur l'autre ordinateur, à chaque utilisation","remote.step.tunnelHint":"Collez cette commande dans son terminal et laissez-le ouvert. Elle demande le mot de passe de votre utilisateur sur cet ordinateur.","remote.title":"Accès à distance","remote.trouble":"Ça ne se connecte pas ?","remote.trouble.network":"Sous Windows, vérifiez que le réseau Wi‑Fi de cet ordinateur est défini comme Privé.","remote.turnOff":"Désactiver","remote.turnOffHint":"La désactivation prend effet immédiatement : les appareils associés sont déconnectés, et restent associés.","remote.turnOn":"Activer l'accès à distance","remote.userHint":"Si SSH refuse « {{user}} » : avec un compte Microsoft ou professionnel, essayez le nom de votre dossier utilisateur (C:\\Users\\<nom>) et le mot de passe du compte, pas le code PIN.","remote.vpnHint":"Un VPN professionnel qui bloque le réseau local coupe la connexion tant qu'il est actif. L'app n'y peut rien.","search.found":"{{hits}} dans {{sessions}}","search.hits_one":"{{count}} résultat","search.hits_other":"{{count}} résultats","search.mode.conversations":"Dans les conversations","search.mode.conversationsTitle":"Recherche dans le texte des conversations enregistrées dans la sauvegarde, sans tenir compte de la casse ni des accents","search.mode.titles":"Dans les titres","search.off":"La sauvegarde est désactivée : la recherche porte sur ce qu'elle a enregistré lorsqu'elle était activée.","search.placeholder.conversations":"Rechercher dans les conversations (Enter)","search.placeholder.titles":"Filtrer les projets et les sessions","search.role.assistant":"Réponse","search.role.title":"Titre","search.role.user":"Demande","search.sessions_one":"{{count}} session","search.sessions_other":"{{count}} sessions","search.status.done":"{{found}}.","search.status.none":"Aucun résultat","search.status.noneIn":"Aucun résultat dans {{sessions}}.","search.status.progressFound_one":"Recherche… {{scanned}} sur {{count}} session, {{found}} pour l'instant.","search.status.progressFound_other":"Recherche… {{scanned}} sur {{count}} sessions, {{found}} pour l'instant.","search.status.progress_one":"Recherche… {{scanned}} sur {{count}} session.","search.status.progress_other":"Recherche… {{scanned}} sur {{count}} sessions.","search.status.searching":"Recherche…","search.status.truncatedResults":"{{found}} : voici les premiers, affinez la recherche pour voir le reste.","search.status.truncatedTime":"{{found}} : la recherche s'est arrêtée au bout de {{seconds}} s, sans examiner {{left}}.","search.tooShort":"Saisissez au moins {{min}} caractères et appuyez sur Enter.","searchHook.connectionLost":"La connexion au serveur a été perdue : relancez la recherche.","server.agentUnknown":"Ce serveur ne sait pas lancer cette CLI.","server.answerInterrupted":"La réponse n'a pas été envoyée en entier : l'interruption l'a coupée.","server.answerInvalid":"La réponse ne correspond pas à la question.","server.answerNoFreeText":"Cette question n'accepte pas de réponse libre : choisissez l'une des options.","server.answerNotPending":"Cette question n'attend plus de réponse.","server.answerSendFailed":"Impossible d'envoyer la réponse : répondez dans l'onglet CLI.","server.answersUnsupported":"Cette CLI n'accepte pas de réponses depuis la conversation. Répondez dans l'onglet CLI.","server.archiveOpenTab":"Les sessions ayant un onglet ouvert ne sont pas archivées. Fermez-le d'abord.","server.attachmentEmpty":"« {{name}} » est arrivé vide.","server.attachmentExecutable":"Les exécutables ne peuvent pas être joints : « {{name}} ».","server.attachmentSaveFailed":"Impossible d'enregistrer le fichier joint.","server.attachmentTooLarge":"« {{name}} » fait {{size}} Mo ; le maximum est de {{max}} Mo.","server.badMessage":"Message non reconnu par le protocole.","server.cliMissing":"La commande « {{command}} » est introuvable dans le PATH. Agent Workbench utilise la CLI que vous avez déjà installée : il ne l'inclut pas et ne la télécharge pas. Installez-la depuis {{url}}, puis relancez l'application.","server.cliNotFound":"La CLI n'est pas installée ou est introuvable dans le PATH.","server.cliNotInstalled":"{{label}} est introuvable : la CLI n'est pas installée ou n'est pas dans le PATH.","server.cliOpenFailed":"Impossible d'ouvrir la CLI de l'onglet.","server.continueFailed":"Impossible de préparer la continuation.","server.continueHistoryMissing":"L'historique de cette conversation est introuvable.","server.continueNoFolder":"Cette conversation n'indique pas dans quel dossier elle s'est déroulée.","server.continueNotInHistory":"Cette conversation n'est pas dans l'historique : si elle vient de commencer, réessayez dans quelques secondes.","server.continueReadFailed":"Impossible de lire cette conversation.","server.continueSameCli":"Cette conversation appartient déjà à cette CLI : pour la poursuivre, ouvrez-la depuis la barre latérale.","server.continueTabFailed":"Impossible d'ouvrir l'onglet de la continuation.","server.continueTranscriptFailed":"Impossible d'enregistrer la transcription de la continuation.","server.conversationNotFollowed":"Cette conversation n'est plus suivie.","server.cwdMissing":"Le répertoire n'existe pas : {{cwd}}","server.cwdNotDir":"Ce n'est pas un répertoire : {{cwd}}","server.diffBinaryUntracked":"Fichier binaire non suivi.","server.diffNewEmpty":"Nouveau fichier vide.","server.diffNoStaged":"Aucune modification indexée pour ce fichier.","server.diffNoUnstaged":"Aucune modification non indexée pour ce fichier.","server.diffReadFailed":"Impossible de lire le diff.","server.dirReadFailed":"Impossible de lire le répertoire.","server.dirSearchFailed":"Impossible de rechercher dans le répertoire.","server.fileReadFailed":"Impossible de lire le fichier.","server.filesPerMessage":"Vous pouvez joindre jusqu'à {{max}} fichiers par message.","server.gitCommandFailed":"git {{command}} a échoué.","server.gitMissing":"git est introuvable dans le PATH. Le panneau Modifications a besoin de git ; le reste de l'application fonctionne normalement.","server.gitNotFound":"git est introuvable dans le PATH.","server.gitNotRepo":"Ce dossier ne se trouve pas dans un dépôt git.","server.gitRunFailed":"Impossible d'exécuter git pour lire l'état du dépôt.","server.gitStatusUnknown":"L'état du dépôt n'est pas encore connu.","server.gitUnexpected":"Réponse inattendue de git {{command}}.","server.handoffEmpty":"Cette conversation n'a aucun message à continuer.","server.handoffNoTranscript":"Cette conversation n'a aucun message à continuer : cette CLI n'a pas laissé de transcription lisible.","server.imageEmpty":"L'image est arrivée vide.","server.imageTooLarge":"L'image fait {{size}} Mo ; le maximum est de {{max}} Mo.","server.imageTypeUnsupported":"Type d'image non pris en charge : {{type}}","server.imageUnknownFormat":"Le contenu n'est pas une image dans un format connu.","server.imagesPerMessage":"Vous pouvez joindre jusqu'à {{max}} images par message.","server.imagesUnsupported":"Cette CLI n'accepte pas d'images depuis la zone de saisie.","server.memoryAppeared":"{{file}} est apparu pendant l'installation. Vérifiez à nouveau les modifications.","server.memoryBrokenBlock":"{{file}} a des marqueurs de bloc de mémoire mal formés (un marqueur sans sa paire, ou le bloc répété). Corrigez-le à la main : l'application ne touchera pas à ce fichier d'ici là.","server.memoryChooseFile":"Choisissez au moins un fichier d'instructions.","server.memoryGitFailed":"Impossible d'interroger git ({{detail}}). Sans cela, on ne peut pas savoir si .gitignore doit être modifié.","server.memoryHardLinks":"{{file}} a des liens physiques : l'application ne le modifie pas, car l'écrire casserait le lien. Ajoutez le bloc à la main.","server.memoryLinkOutside":"{{path}} pointe hors du projet (un lien ou une jonction) : l'application n'y écrit pas.","server.memoryNotAFile":"{{label}} existe mais n'est pas un fichier.","server.memoryNotInstalled":"Installez d'abord le pont : le dossier .agents/memory est absent.","server.memoryNotUtf8":"{{file}} n'est pas en UTF-8 (il semble être en UTF-16, ce que produit `>` dans Windows PowerShell 5.1). Enregistrez-le en UTF-8 : l'application n'y touchera pas d'ici là.","server.memoryNoteClaude":"Ajoutez cette ligne à la fin. Claude Code importe le fichier au démarrage.","server.memoryNoteGone":"Cette note n'existe plus.","server.memoryNoteHardLink":"Lien physique. `~/{{path}}` doit exister au préalable, et le fichier de la CLI non : s'il existe, déplacez son contenu dans `global.md` puis supprimez-le. Si votre éditeur enregistre en remplaçant le fichier, le lien se rompt : dans ce cas, copiez le contenu.","server.memoryNoteHardLinkCmd":"Lien physique, dans cmd. `~/{{path}}` doit exister au préalable, et le fichier de la CLI non : s'il existe, déplacez son contenu dans `global.md` puis supprimez-le. Si votre éditeur enregistre en remplaçant le fichier, le lien se rompt : dans ce cas, copiez le contenu.","server.memoryNoteName":"Ce nom n'est pas une note de la mémoire.","server.memoryNoteOpenCode":"Dans l'objet racine. Chemin absolu : OpenCode ne développe pas `~` dans cette clé (non vérifié).","server.memorySameFile":"{{other}} et {{file}} sont le même fichier (un lien). N'en choisissez qu'un.","server.memoryViaEncoding":"{{file}} n'est pas en UTF-8","server.memoryViaFallback":"CLAUDE.md (fichier de repli)","server.memoryViaFile":"{{file}}","server.memoryViaNoBlock":"{{file}} ne contient pas le bloc","server.memoryViaNoBlockEither":"ni AGENTS.md ni CLAUDE.md ne contiennent le bloc","server.memoryViaNoFolder":"le dossier .agents/memory est absent","server.memoryViaNoIndex":".agents/memory/MEMORY.md est absent","server.memoryViaOutside":"{{file}} pointe hors du projet","server.modePendingConfirmation":"Une confirmation est en attente dans la CLI : changer de mode maintenant l'approuverait. Répondez-y dans l'onglet CLI.","server.modeUnreachable":"Ce mode n'est pas accessible depuis le mode actuel. Changez-le avec {{key}} dans l'onglet CLI.","server.modesUnsupported":"Cette CLI n'a pas de modes de permissions à changer d'ici.","server.noteCliNotStarted":"La CLI de cet onglet n'a pas réussi à démarrer ; la note n'a pas été envoyée.","server.noteEmpty":"La note est vide.","server.noteExists":"Cette note existe déjà.","server.noteGone":"La note n'existe plus.","server.noteIdInvalid":"L'identifiant de la note n'est pas valide.","server.noteImageFailed":"Impossible de joindre une image de la note.","server.noteImagesMax":"Jusqu'à {{max}} images par note.","server.noteImagesUnsupported":"Cette CLI n'accepte pas d'images ; la note n'a pas été envoyée.","server.noteInterrupted":"La note n'a pas été envoyée en entier : l'interruption l'a coupée.","server.noteNoAgent":"Cet onglet n'a pas d'agent à qui envoyer la note.","server.noteNoReadySignal":"Cette CLI n'indique pas quand elle est prête ; la note n'a pas été envoyée.","server.noteSaveFailed":"Impossible d'enregistrer la note.","server.noteTooLong":"Une note peut contenir jusqu'à {{max}} caractères.","server.notesMax":"Jusqu'à {{max}} notes ouvertes. Fermez-en une d'abord.","server.openToolSubmit":"{{label}} a un outil sans résultat : une approbation est peut-être en attente. Répondez-y dans l'onglet CLI.","server.operationFailed":"L'opération n'a pas pu aboutir : {{detail}}","server.pasteImageFailed":"Impossible d'enregistrer l'image collée.","server.pathMissing":"Le chemin n'existe pas.","server.pathNotRelative":"Seuls les chemins relatifs au répertoire de l'onglet sont acceptés.","server.pathNullByte":"Le chemin contient un octet nul.","server.pathOpenFailed":"Impossible d'ouvrir le chemin.","server.pathOutside":"Le chemin sort du répertoire de l'onglet.","server.pendingSubmitAnswer":"{{label}} attend une réponse : la touche Enter qui envoie le message y répondrait. Répondez-y dans l'onglet CLI.","server.pendingSubmitPermission":"{{label}} attend que vous autorisiez un outil : la touche Enter qui envoie le message l'approuverait. Répondez-y dans l'onglet CLI.","server.pickerCliFolder":"Ce dossier appartient à la CLI et ne peut pas être ouvert d'ici.","server.pickerClosed":"Ce sélecteur de dossier n'est plus ouvert.","server.pickerCreateFailed":"Impossible de créer le dossier à cet endroit.","server.pickerFolderExists":"Un dossier portant ce nom existe déjà.","server.pickerListFailed":"Impossible de lister ce dossier.","server.pickerNameChars":"Le nom contient des caractères non autorisés.","server.pickerNameInvalid":"Le nom du dossier n'est pas valide.","server.pickerNoProjectsHere":"Impossible de créer un projet ici : c'est le dossier de la CLI.","server.pickerNotListed":"Ce dossier ne figure pas dans la liste actuelle.","server.pickerRootMissing":"Cette racine n'existe pas.","server.pickerTooMany":"Trop de sélecteurs de dossier sont ouverts.","server.planReadFailed":"Impossible de lire le plan.","server.raw":"{{text}}","server.relaunchCloseFailed":"Impossible de fermer la CLI de l'onglet pour la relancer.","server.remoteDeviceGone":"Cet appareil n'est plus associé.","server.remoteFailed":"La modification de l'accès à distance n'a pas pu être effectuée.","server.remoteHostOnly":"L'accès à distance ne se gère que depuis l'ordinateur où tourne Agent Workbench.","server.remoteNotActive":"L'accès à distance n'est pas encore activé et en fonctionnement. Activez-le et redémarrez Agent Workbench.","server.remoteOpensOnHost":"Cela ouvre une fenêtre sur l'ordinateur où tourne Agent Workbench : ce n'est donc pas disponible depuis un appareil distant.","server.remotePortInvalid":"Le port doit être un nombre compris entre {{min}} et {{max}}.","server.remoteTooManyDevices":"Il y a déjà {{max}} appareils associés. Révoquez-en un d'abord.","server.searchFailed":"Impossible de rechercher dans la sauvegarde.","server.settingsFailed":"Impossible d'enregistrer les réglages.","server.settingsHostOnly":"Ces réglages ne se modifient que sur l'ordinateur où tourne Agent Workbench.","server.settingsShellMissing":"Cette console n'est plus installée.","server.shellNotFound":"Aucune console système n'a été trouvée.","server.submitInterrupted":"Le message n'a pas été envoyé en entier : l'interruption l'a coupé.","server.submitStoppedTool":"Le message n'a pas été envoyé en entier : {{label}} a ouvert un outil pendant la saisie et attend peut-être une approbation. Vérifiez l'onglet CLI.","server.submitStoppedToolNoLabel":"Le message n'a pas été envoyé en entier : la CLI a ouvert un outil pendant la saisie et attend peut-être une approbation. Vérifiez l'onglet CLI.","server.submitStoppedWaiting":"Le message n'a pas été envoyé en entier : {{label}} a commencé à attendre une réponse pendant la saisie. Répondez-y avant d'envoyer un autre message.","server.submitStoppedWaitingNoLabel":"Le message n'a pas été envoyé en entier : la CLI a commencé à attendre une réponse pendant la saisie. Répondez-y avant d'envoyer un autre message.","server.tabClosedWhileOpening":"L'onglet s'est fermé pendant son ouverture.","server.tabDirGone":"Le répertoire de l'onglet n'existe plus.","server.tabOpenFailed":"Impossible d'ouvrir l'onglet.","server.terminalAsleep":"La CLI de cet onglet n'est pas ouverte. Ouvrez-la pour écrire à l'agent.","server.terminalGone":"Le terminal n'existe plus.","server.terminalOpenFailed":"Impossible d'ouvrir le terminal.","server.tooManyTabs":"Vous ne pouvez pas ouvrir plus de {{max}} onglets à la fois.","server.vaultBusyMeasuring":"La sauvegarde est occupée à mesurer. Réessayez quand ce sera terminé.","server.vaultBusyMoving":"La sauvegarde est occupée à changer de dossier. Réessayez quand ce sera terminé.","server.vaultBusyWriting":"La sauvegarde est occupée à copier. Réessayez quand ce sera terminé.","server.vaultCannotWrite":"Impossible d'écrire dans ce dossier.","server.vaultCurrentInsideTarget":"La sauvegarde actuelle ne peut pas se retrouver dans le nouveau dossier.","server.vaultDiskFull":"Disque plein : la passe s'est arrêtée ({{detail}})","server.vaultFailed":"L'opération de la sauvegarde n'a pas pu aboutir.","server.vaultIndexNotReady":"L'historique est encore en cours de lecture. Mesurez quand ce sera terminé.","server.vaultMeasureFirst":"Mesurez d'abord l'espace nécessaire.","server.vaultMemoryFailed":"mémoire de {{cwd}} : {{detail}}","server.vaultMoveFailed":"Impossible de déplacer la sauvegarde : {{detail}}","server.vaultMoving":"La sauvegarde est en cours de déplacement vers un autre dossier. Réessayez quand ce sera terminé.","server.vaultNoCopyYet":"Il n'y a pas encore de sauvegarde.","server.vaultNotLoaded":"La sauvegarde n'est pas chargée.","server.vaultProjectGone":"Ce projet n'est plus dans la barre latérale.","server.vaultReasonNewerFormat":"la copie existante est dans un format plus récent","server.vaultReasonOriginMissing":"la source est introuvable","server.vaultReasonUnsafeId":"un identifiant de session qui ne peut pas être copié","server.vaultSessionFailed":"{{agent}}/{{session}}: {{detail}}","server.vaultSessionMissing":"Cette session n'est pas dans la sauvegarde.","server.vaultTargetCliFolder":"Ce dossier appartient à une CLI : la sauvegarde n'y est pas conservée.","server.vaultTargetInsideCurrent":"Le nouveau dossier ne peut pas se trouver dans la sauvegarde actuelle.","server.vaultTargetNotAbsolute":"Le dossier de la sauvegarde doit être un chemin absolu.","server.waitingSubmit":"{{label}} attend une réponse : répondez-y avant d'envoyer un autre message.","session.untitled":"Session sans titre","settings.cli.disabled":"Désactivée","settings.cli.hint":"Une CLI décochée n'apparaît ni dans le menu ni dans la barre latérale, et son historique n'est pas lu.","settings.cli.install":"Comment l'installer","settings.cli.notInstalled":"Non installée","settings.cli.restart":"Les changements des CLI s'appliquent au redémarrage de l'app.","settings.console.auto":"Automatique","settings.console.autoWith":"Automatique ({{shell}})","settings.console.hint":"S'applique aux consoles ouvertes à partir de maintenant ; celles déjà ouvertes restent telles quelles.","settings.hiddenHint":"Masqué : {{name}}. Vous pouvez l'afficher à nouveau depuis ⚙ Réglages.","settings.hide.console":"Masquer la console (elle revient depuis ⚙ Réglages)","settings.hide.notes":"Masquer les notes (elles reviennent depuis ⚙ Réglages)","settings.hostOnly":"La console et les CLI ne se modifient que sur l'ordinateur où tourne Agent Workbench.","settings.language":"Langue","settings.more.open":"{{name}}…","settings.oldServer":"Le serveur est d'une version antérieure : redémarrez-le pour choisir la console et les CLI.","settings.open":"Réglages","settings.panels.cliAlways":"L'onglet CLI est toujours affiché : les autorisations et les questions de l'agent y apparaissent.","settings.panels.consoleConfirmYes":"Masquer et fermer","settings.panels.consoleConfirm_one":"Masquer la console ferme {{count}} terminal ouvert.","settings.panels.consoleConfirm_other":"Masquer la console ferme {{count}} terminaux ouverts.","settings.section.appearance":"Apparence","settings.section.clis":"CLI","settings.section.console":"Console","settings.section.more":"Plus","settings.section.panels":"Panneaux","settings.terminalTheme":"Thème du terminal","settings.terminalTheme.dark":"Toujours sombre","settings.terminalTheme.follow":"Suivre le thème de l'app","settings.terminalTheme.hint":"Les CLI choisissent leurs couleurs pour un terminal sombre : sur un terminal clair, certains textes se lisent mal.","settings.title":"Réglages","shortcuts.altNumber":"<strong>Alt + chiffre</strong> n'est pas utilisé non plus, et c'est voulu : sous Windows, Alt avec le pavé numérique sert à saisir les caractères absents du clavier (<kbd>Alt + 164</kbd> = ñ). L'intercepter empêcherait de saisir les caractères accentués. Pour changer d'onglet, il y a <kbd>Alt + ←</kbd> et <kbd>Alt + →</kbd>.","shortcuts.app.closeTab":"Fermer l'onglet actif","shortcuts.app.newTab":"Nouvel onglet dans le répertoire de l'onglet actuel","shortcuts.app.previousTab":"Revenir à l'onglet précédent (hors du terminal : dans le terminal, le raccourci va à la CLI)","shortcuts.app.switchTab":"Onglet précédent / suivant (aussi Alt + PgUp / PgDn)","shortcuts.app.togglePanel":"Afficher ou masquer le panneau de droite","shortcuts.ariaLabel":"Raccourcis clavier","shortcuts.browserReserved":"<strong>Ctrl+T</strong>, <strong>Ctrl+W</strong> et <strong>Ctrl+Tab</strong> ne peuvent pas être utilisés : le navigateur les réserve à ses propres onglets et l'événement n'atteint jamais la page.","shortcuts.cliHint":"C'est la CLI qui les gère. L'application ne les intercepte pas : ils lui parviennent tels quels. Dans le terminal, le saut de ligne reste <kbd>Ctrl + J</kbd> et les images se collent avec <kbd>Alt + V</kbd> ; c'est la zone de saisie qui utilise les touches ci-dessus.","shortcuts.section.app":"Application","shortcuts.section.cli":"CLI, dans le terminal","shortcuts.section.composer":"Dans la zone de saisie","shortcuts.title":"Raccourcis","sidebar.action.archive":"Archiver","sidebar.action.restore":"Restaurer","sidebar.action.undo":"Annuler","sidebar.archived.hide_one":"Masquer {{count}} archivée","sidebar.archived.hide_other":"Masquer {{count}} archivées","sidebar.archived.show_one":"Afficher {{count}} archivée","sidebar.archived.show_other":"Afficher {{count}} archivées","sidebar.archived.toggleTitle":"Les sessions archivées restent sur le disque ; ce bouton ne fait que les afficher ou les masquer","sidebar.empty.noMatch":"Rien ne correspond au filtre.","sidebar.empty.noProjects":"Aucun projet trouvé dans l'historique.","sidebar.hide":"Masquer les projets","sidebar.history.button":"Archiver l'historique…","sidebar.history.buttonTitle":"Masquer d'un coup les sessions d'une CLI antérieures à aujourd'hui. Rien n'est supprimé","sidebar.history.confirm_one":"{{count}} session {{label}} sera masquée ; rien n'est supprimé","sidebar.history.confirm_other":"{{count}} sessions {{label}} seront masquées ; rien n'est supprimé","sidebar.history.count_one":"{{count}} session antérieure à aujourd'hui","sidebar.history.count_other":"{{count}} sessions antérieures à aujourd'hui","sidebar.history.heading":"Archiver tout ce qui précède aujourd'hui","sidebar.history.region":"Archiver l'historique","sidebar.indexing":"Indexation {{scanned}} / {{total}}","sidebar.newProject":"Nouveau projet : choisir ou créer un dossier","sidebar.project.archive":"Archiver le projet","sidebar.project.archiveTitle":"Archiver le projet : masque ses conversations dans la barre latérale. Rien n'est supprimé","sidebar.project.export":"Exporter en Markdown","sidebar.project.folderGone":"Le dossier n'existe plus sur le disque","sidebar.project.missing":"dossier introuvable","sidebar.project.newSession":"Nouvelle session dans ce projet","sidebar.reindex":"Réindexer l'historique","sidebar.searchMode.label":"Où rechercher","sidebar.searchMode.titlesTitle":"Filtre la liste par nom de projet et titre de session","sidebar.selection.count_one":"{{count}} sélectionnée","sidebar.selection.count_other":"{{count}} sélectionnées","sidebar.session.archive":"Archiver — la retire de la liste, rien n'est supprimé","sidebar.session.blocked":"Elle a un onglet ouvert. Fermez-le d'abord.","sidebar.session.restore":"Remettre dans la liste","sidebar.undo.dismissTitle":"Fermer l'avis ; les sessions restent archivées","sidebar.undo.text_one":"{{count}} session archivée ({{what}})","sidebar.undo.text_other":"{{count}} sessions archivées ({{what}})","sidebar.vaultLine.lastError":"Dernière erreur : {{error}}","sidebar.vaultLine.title":"Voir l'état et le dossier de la sauvegarde","sound.notify.blocked":"Le navigateur bloque les notifications de cette page. Autorisez-les dans les paramètres du site, puis cliquez de nouveau.","sound.notify.off":"Notifications système désactivées — cliquez pour les activer","sound.notify.on":"Notifications système activées — cliquez pour les désactiver. Elles ne s'affichent que lorsque cette fenêtre n'est pas visible.","sound.off":"Son de notification coupé — cliquez pour l'activer","sound.on":"Son de notification activé — cliquez pour le couper","sound.volume":"Volume du son de notification","statusLine.benefit":"Avec la status line configurée, les onglets de cette CLI affichent leur état, la barre « en attente » quand elle demande l'autorisation d'utiliser un outil, et la jauge de contexte avec la fenêtre exacte. Sans elle, impossible de le savoir : la CLI ne l'écrit dans aucun autre fichier.","statusLine.check":"Vérifier","statusLine.checkHint":"L'application s'en aperçoit aussi d'elle-même en quelques secondes.","statusLine.checking":"Vérification…","statusLine.copied":"Copiée","statusLine.copy":"Copier","statusLine.copyTitle":"Copier la ligne dans le presse-papiers","statusLine.lineSection":"La ligne","statusLine.mergeHint":"Fusionnez-la avec le contenu actuel du fichier ci-dessous, sans le remplacer : s'il contient déjà des accolades, ajoutez seulement la clé <kbd>statusLine</kbd>.","statusLine.runsEverywhere":"Une fois la ligne en place, chaque session de la CLI l'exécute, y compris celles que vous ouvrez hors de l'application, et elle nécessite <kbd>node</kbd> dans le PATH.","statusLine.scriptHint":"Il n'enregistre que l'état, le modèle et les tokens de chaque conversation, dans le dossier de l'application. Il n'enregistre ni votre e-mail, ni votre quota, ni le coût, que la CLI lui transmet aussi, et il n'affiche rien : la ligne propre à la CLI reste telle quelle.","statusLine.scriptSection":"Ce que fait le script","statusLine.title":"Status line pour {{agent}}","statusLine.whereHint":"L'application ne touche pas à ce fichier : c'est vous qui le modifiez.","statusLine.whereSection":"Où","summary.alsoWorksWith":"Fonctionne aussi avec : {{names}}","summary.newerServer":"Le serveur est d'une version plus récente que cette page (protocole {{server}}, cette page utilise le {{page}}). Rechargez la page avec F5.","summary.outdatedServer":"Le serveur en cours d'exécution est d'une version plus ancienne que cette page (protocole {{server}}, cette page utilise le {{page}}). Redémarrez-le et rechargez la page.","support.dismiss":"Pas maintenant","support.link":"Soutenir","support.notice":"Si Agent Workbench vous est utile, pensez à soutenir le projet.","tabs.aria.opening":"ouverture en cours","tabs.aria.working":"l'agent travaille","tabs.close":"Fermer (Alt+W)","tabs.dot.busy":"L'agent travaille","tabs.dot.exited":"La CLI de cet onglet s'est fermée","tabs.dot.sleeping":"En veille : lisible, sans CLI ouverte","tabs.dot.waiting":"La CLI attend une réponse de votre part","tabs.new":"Nouvel onglet (Alt+T)","tabs.state.alive":"actif","tabs.state.exited":"terminé (code {{code}})","tabs.state.opening":"ouverture…","tabs.state.sleeping":"en veille","terminal.exited":"le processus s'est terminé (code {{code}})","terminal.replayTruncated":"sortie antérieure tronquée","theme.dark":"Thème sombre","theme.light":"Thème clair","theme.system":"Thème du système","theme.title":"{{theme}} — cliquez pour changer","thread.continueWith":"↪ Continuer avec…","thread.copyMessage":"Copier le texte de ce message","thread.empty.noMessages":"La session ne contient encore aucun message.","thread.empty.unavailable":"Cet onglet n'a pas de répertoire connu : il n'y a donc aucun fichier de session à suivre.","thread.empty.waiting":"En attente du premier message. Le fichier de session est créé au début de la conversation.","thread.fold.less":"afficher moins","thread.fold.more_one":"afficher {{count}} ligne","thread.fold.more_other":"afficher les {{count}} lignes","thread.goToCli":"Aller à l'onglet CLI","thread.image.alt":"image du message","thread.image.gone":"l'image n'est plus dans le fichier","thread.image.loading":"chargement de l'image…","thread.image.openTitle":"Cliquez pour l'afficher en taille réelle","thread.jumpToEnd":"Aller à la fin","thread.jumpToEndNew_one":"Aller à la fin : {{count}} nouveau message","thread.jumpToEndNew_other":"Aller à la fin : {{count}} nouveaux messages","thread.jumpToOwn":"Aller à votre message précédent","thread.loadEarlier":"Charger les messages précédents","thread.loadingMore":"Chargement…","thread.notice.compacted":"Contexte compacté","thread.notice.compactedAuto":"Contexte compacté automatiquement","thread.notice.error":"La CLI a renvoyé une erreur : {{detail}}","thread.notice.errorNoDetail":"La CLI a renvoyé une erreur","thread.notice.interrupted":"Interrompu","thread.openInFiles":"Ouvrir {{path}} dans l'onglet Fichiers","thread.pasted_one":"Texte collé #{{number}} · {{count}} ligne","thread.pasted_other":"Texte collé #{{number}} · {{count}} lignes","thread.question.answerInCli":"Répondez dans l'onglet CLI","thread.question.answered":"Réponse donnée","thread.question.multi":"choix multiple","thread.question.pickEach":"Choisissez une option pour chaque question · vous pouvez aussi répondre dans l'onglet CLI","thread.question.pickOne":"Choisissez une option · vous pouvez aussi répondre dans l'onglet CLI","thread.question.placeholder":"Écrivez votre réponse","thread.question.send":"Envoyer","thread.question.sendAnswers":"Envoyer les réponses","thread.question.useText":"Utiliser ce texte","thread.question.writeOther":"Écrire une autre réponse…","thread.question.writeOtherHint":"Pour proposer une alternative ou donner plus de contexte","thread.rewind":"Revenir ici — ouvre le menu rewind de la CLI dans l'onglet CLI (Esc Esc)","thread.search.next":"Suivant","thread.search.none":"aucun résultat","thread.search.placeholder":"Rechercher dans la conversation","thread.search.previous":"Précédent","thread.status.awaitingReply":"Remis à la CLI · pas encore de réponse · {{elapsed}}","thread.status.delivered":"Remis à la CLI","thread.status.sending":"Envoi à la CLI…","thread.status.subagent":"{{name}} ({{elapsed}})","thread.status.subagentUnnamed":"sans nom","thread.status.subagentsMore_one":"{{count}} autre","thread.status.subagentsMore_other":"{{count}} autres","thread.status.subagents_one":"{{count}} sous-agent travaille encore : {{list}}","thread.status.subagents_other":"{{count}} sous-agents travaillent encore : {{list}}","thread.status.working":"L'agent travaille…","thread.status.workingDelivered":"L'agent travaille · message remis","thread.status.workingFor":"L'agent travaille · {{elapsed}}","thread.status.workingForDelivered":"L'agent travaille · {{elapsed}} · message remis","thread.tool.error":"erreur","thread.tool.imagesNotSent_one":"({{count}} image : non transmise au panneau)","thread.tool.imagesNotSent_other":"({{count}} images : non transmises au panneau)","thread.tool.images_one":"{{count}} image","thread.tool.images_other":"{{count}} images","thread.tool.input":"entrée","thread.tool.noOutput":"(aucune sortie)","thread.tool.orphanResult":"résultat orphelin","thread.tool.result":"résultat","thread.truncated":"… (tronqué)","thread.turn.effort":"effort {{effort}}","thread.turn.queued":"envoyé pendant que l'agent travaillait","thread.turn.queuedTitle":"Vous l'avez écrit pendant que l'agent travaillait : il a rejoint le tour déjà en cours","thread.turn.you":"Vous","thread.wake.exited":"La CLI de cet onglet s'est fermée.","thread.wake.exitedWithCode":"La CLI de cet onglet s'est fermée (code de sortie {{code}}).","thread.wake.open":"Ouvrir la CLI","thread.wake.opening":"Ouverture…","thread.wake.sleeping":"Vous lisez cette conversation sans que la CLI soit ouverte. Ouvrez-la pour écrire à l'agent.","threadFont.size.l":"grande","threadFont.size.m":"normale","threadFont.size.s":"petite","threadFont.title":"Taille du texte : {{current}} (clic : {{next}})","time.daysAgo":"il y a {{count}} j","time.hoursAgo":"il y a {{count}} h","time.justNow":"à l'instant","time.minutesAgo":"il y a {{count}} min","tools.run.agent_one":"{{count}} sous-agent","tools.run.agent_other":"{{count}} sous-agents","tools.run.callsTo_one":"{{count}} appel à {{name}}","tools.run.callsTo_other":"{{count}} appels à {{name}}","tools.run.edit_one":"{{count}} modification","tools.run.edit_other":"{{count}} modifications","tools.run.find_one":"{{count}} recherche dans le projet","tools.run.find_other":"{{count}} recherches dans le projet","tools.run.read_one":"{{count}} fichier lu","tools.run.read_other":"{{count}} fichiers lus","tools.run.shell_one":"{{count}} commande de console","tools.run.shell_other":"{{count}} commandes de console","tools.run.todo_one":"{{count}} liste de tâches","tools.run.todo_other":"{{count}} listes de tâches","tools.run.web_one":"{{count}} recherche","tools.run.web_other":"{{count}} recherches","vault.archived":"Les sessions archivées ne sont pas copiées, et archiver une session déjà copiée ne supprime pas sa copie. L'application ne supprime jamais rien dans ce dossier.","vault.busy":"Une opération de la sauvegarde est en cours. Attendez qu'elle se termine.","vault.button.off":"Sauvegarde : désactivée. La configurer","vault.button.on":"Sauvegarde : activée. Voir l'état et le dossier","vault.dialog.activate":"Activer","vault.dialog.activateExistingHint":"Le dossier contient déjà une sauvegarde. Une fois activée, l'app la complète et la tient à jour.","vault.dialog.activateExistingTitle":"Le dossier contient déjà une sauvegarde : l'activation la complète","vault.dialog.activateMeasuredHint":"Copie tout ce qui a été mesuré, puis chaque session qui change, après une minute de calme.","vault.dialog.activateMeasuredTitle":"Copie maintenant ce qui a été mesuré, puis chaque session qui change","vault.dialog.changeDir":"Changer de dossier…","vault.dialog.changeDirTitle":"Choisir un autre dossier. Ce qui a été copié y est recopié ; celui-ci reste intact","vault.dialog.defaultDir":"C'est le dossier par défaut, dans celui de l'application.","vault.dialog.folderSection":"Dossier","vault.dialog.inFolder":"Dans le dossier","vault.dialog.lastError":"Dernière erreur","vault.dialog.lastPass":"dernière passe : {{when}}","vault.dialog.measure":"Mesurer","vault.dialog.measureAgain":"Mesurer à nouveau","vault.dialog.measureTitle":"Lit tout l'historique sans rien écrire, pas même le dossier","vault.dialog.needsMeasure":"Mesurez d'abord l'espace nécessaire : le bouton « {{activate}} » apparaîtra ensuite.","vault.dialog.openFolder":"Ouvrir le dossier","vault.dialog.openFolderTitle":"Ouvrir le dossier dans l'explorateur de fichiers du système","vault.dialog.pendingCalm_one":"{{count}} en attente de sa minute de calme","vault.dialog.pendingCalm_other":"{{count}} en attente de leur minute de calme","vault.dialog.sizeSection":"Espace nécessaire","vault.dialog.table.archived":"Archivées","vault.dialog.table.archivedTitle":"Les sessions archivées ne sont pas copiées","vault.dialog.table.images":"Images","vault.dialog.table.memory_one":"Mémoire de {{count}} projet","vault.dialog.table.memory_other":"Mémoire de {{count}} projets","vault.dialog.table.sessions":"Sessions","vault.dialog.table.size":"Taille","vault.dialog.table.total":"Total","vault.dialog.turnOff":"Désactiver","vault.dialog.turnOffHint":"La désactiver ne supprime rien : ce qui a été copié reste dans le dossier.","vault.dialog.waiting":"En attente de l'état du serveur…","vault.export.done":"Exporté : le dossier a été ouvert","vault.export.exporting":"Export en Markdown…","vault.export.idle":"Exporter les sessions de ce projet en Markdown","vault.indexNotReady":"L'historique est encore en cours de lecture. Mesurez quand ce sera terminé.","vault.line.copying":"copie en cours","vault.line.copyingProgress":"copie {{done}} / {{total}}","vault.line.measuring":"mesure en cours","vault.line.moving":"déplacement vers un autre dossier","vault.line.neverCopied":"pas encore de copie","vault.line.pending_one":"{{count}} en attente","vault.line.pending_other":"{{count}} en attente","vault.mark.copy":"sauvegarde","vault.mark.copyTitle":"L'historique de la CLI ne contient plus cette session. C'est la sauvegarde qui s'ouvre, en Markdown.","vault.mark.partial":"partielle","vault.mark.partialTitle":"Seuls le résumé et les documents ont été récupérés : le contenu de la conversation est chiffré.","vault.measure.summary":"Mesure effectuée {{when}}, en {{duration}}","vault.measure.summaryNoWhen":"Mesure effectuée en {{duration}}","vault.name":"Sauvegarde","vault.note.empty_one":"{{count}} vide","vault.note.empty_other":"{{count}} vides","vault.note.failedWithReasons_one":"{{count}} en échec ({{reasons}})","vault.note.failedWithReasons_other":"{{count}} en échec ({{reasons}})","vault.note.failed_one":"{{count}} en échec","vault.note.failed_other":"{{count}} en échec","vault.note.notCopied":"Sessions non copiées : {{parts}}","vault.note.unsupported_one":"{{count}} sans lecture complète","vault.note.unsupported_other":"{{count}} sans lecture complète","vault.previousDir":"L'ancien dossier est resté intact : {{dir}}","vault.privacy":"La sauvegarde conserve la même chose que l'historique de chaque CLI — messages, entrées et résultats des outils, images — dans un dossier à vous. Si vous la placez dans un dossier synchronisé ou dans un dépôt, tout cela voyage avec elle.","vault.sessions_one":"{{count}} session","vault.sessions_other":"{{count}} sessions","vault.state.measuring":"Mesure en cours…","vault.state.measuringProgress":"Mesure en cours… {{done}} / {{total}}","vault.state.moving":"Déplacement vers un autre dossier…","vault.state.off":"Désactivée","vault.state.on":"Activée","vault.state.writing":"Copie en cours…","vault.state.writingProgress":"Copie en cours… {{done}} / {{total}}","workspace.connectFailed":"Impossible de se connecter au serveur local. Rouvrez l'URL qu'il a affichée au démarrage."};export{e as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{g as vt}from"./index-zFKk_FJ_.js";var dn,kn;function Mt(){if(kn)return dn;kn=1;function e(n){return n instanceof Map?n.clear=n.delete=n.set=function(){throw new Error("map is read-only")}:n instanceof Set&&(n.add=n.clear=n.delete=function(){throw new Error("set is read-only")}),Object.freeze(n),Object.getOwnPropertyNames(n).forEach(a=>{const c=n[a],w=typeof c;(w==="object"||w==="function")&&!Object.isFrozen(c)&&e(c)}),n}class t{constructor(a){a.data===void 0&&(a.data={}),this.data=a.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function i(n){return n.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function r(n,...a){const c=Object.create(null);for(const w in n)c[w]=n[w];return a.forEach(function(w){for(const Z in w)c[Z]=w[Z]}),c}const d="</span>",y=n=>!!n.scope,l=(n,{prefix:a})=>{if(n.startsWith("language:"))return n.replace("language:","language-");if(n.includes(".")){const c=n.split(".");return[`${a}${c.shift()}`,...c.map((w,Z)=>`${w}${"_".repeat(Z+1)}`)].join(" ")}return`${a}${n}`};class o{constructor(a,c){this.buffer="",this.classPrefix=c.classPrefix,a.walk(this)}addText(a){this.buffer+=i(a)}openNode(a){if(!y(a))return;const c=l(a.scope,{prefix:this.classPrefix});this.span(c)}closeNode(a){y(a)&&(this.buffer+=d)}value(){return this.buffer}span(a){this.buffer+=`<span class="${a}">`}}const _=(n={})=>{const a={children:[]};return Object.assign(a,n),a};class u{constructor(){this.rootNode=_(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(a){this.top.children.push(a)}openNode(a){const c=_({scope:a});this.add(c),this.stack.push(c)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(a){return this.constructor._walk(a,this.rootNode)}static _walk(a,c){return typeof c=="string"?a.addText(c):c.children&&(a.openNode(c),c.children.forEach(w=>this._walk(a,w)),a.closeNode(c)),a}static _collapse(a){typeof a!="string"&&a.children&&(a.children.every(c=>typeof c=="string")?a.children=[a.children.join("")]:a.children.forEach(c=>{u._collapse(c)}))}}class b extends u{constructor(a){super(),this.options=a}addText(a){a!==""&&this.add(a)}startScope(a){this.openNode(a)}endScope(){this.closeNode()}__addSublanguage(a,c){const w=a.root;c&&(w.scope=`language:${c}`),this.add(w)}toHTML(){return new o(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function h(n){return n?typeof n=="string"?n:n.source:null}function f(n){return S("(?=",n,")")}function N(n){return S("(?:",n,")*")}function A(n){return S("(?:",n,")?")}function S(...n){return n.map(c=>h(c)).join("")}function M(n){const a=n[n.length-1];return typeof a=="object"&&a.constructor===Object?(n.splice(n.length-1,1),a):{}}function v(...n){return"("+(M(n).capture?"":"?:")+n.map(w=>h(w)).join("|")+")"}function D(n){return new RegExp(n.toString()+"|").exec("").length-1}function U(n,a){const c=n&&n.exec(a);return c&&c.index===0}const k=new RegExp(v(/\[(?:[^\\\]]|\\.)*\]/,/\(\?<(?![=!])[^>]+>/,/\(\?'[^']+'/,/\(\??/,/\\([1-9][0-9]*)/,/\\./));function C(n,{joinWith:a}){let c=0;return n.map(w=>{c+=1;const Z=c;let q=h(w),E="";for(;q.length>0;){const p=k.exec(q);if(!p){E+=q;break}E+=q.substring(0,p.index),q=q.substring(p.index+p[0].length),p[0][0]==="\\"&&p[1]?E+="\\"+String(Number(p[1])+Z):(E+=p[0],(p[0]==="("||/^\(\?[<']/.test(p[0]))&&c++)}return E}).map(w=>`(${w})`).join(a)}const x=/\b\B/,P="[a-zA-Z]\\w*",W="[a-zA-Z_]\\w*",$="\\b\\d+(\\.\\d+)?",te="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",ce="\\b(0b[01]+)",de="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",ue=(n={})=>{const a=/^#![ ]*\//;return n.binary&&(n.begin=S(a,/.*\b/,n.binary,/\b.*/)),r({scope:"meta",begin:a,end:/$/,relevance:0,"on:begin":(c,w)=>{c.index!==0&&w.ignoreMatch()}},n)},Y={begin:"\\\\[\\s\\S]",relevance:0},V={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[Y]},se={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[Y]},Ee={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},B=function(n,a,c={}){const w=r({scope:"comment",begin:n,end:a,contains:[]},c);w.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const Z=v("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return w.contains.push({begin:S(/[ ]+/,"(",Z,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),w},j=B("//","$"),oe=B("/\\*","\\*/"),ie=B("#","$"),ee={scope:"number",begin:$,relevance:0},fe={scope:"number",begin:te,relevance:0},qe={scope:"number",begin:ce,relevance:0},xe={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[Y,{begin:/\[/,end:/\]/,relevance:0,contains:[Y]}]},Ce={scope:"title",begin:P,relevance:0},Xe={scope:"title",begin:W,relevance:0},De={begin:"\\.\\s*"+W,relevance:0};var Oe=Object.freeze({__proto__:null,APOS_STRING_MODE:V,BACKSLASH_ESCAPE:Y,BINARY_NUMBER_MODE:qe,BINARY_NUMBER_RE:ce,COMMENT:B,C_BLOCK_COMMENT_MODE:oe,C_LINE_COMMENT_MODE:j,C_NUMBER_MODE:fe,C_NUMBER_RE:te,END_SAME_AS_BEGIN:function(n){return Object.assign(n,{"on:begin":(a,c)=>{c.data._beginMatch=a[1]},"on:end":(a,c)=>{c.data._beginMatch!==a[1]&&c.ignoreMatch()}})},HASH_COMMENT_MODE:ie,IDENT_RE:P,MATCH_NOTHING_RE:x,METHOD_GUARD:De,NUMBER_MODE:ee,NUMBER_RE:$,PHRASAL_WORDS_MODE:Ee,QUOTE_STRING_MODE:se,REGEXP_MODE:xe,RE_STARTERS_RE:de,SHEBANG:ue,TITLE_MODE:Ce,UNDERSCORE_IDENT_RE:W,UNDERSCORE_TITLE_MODE:Xe});function Ve(n,a){n.input[n.index-1]==="."&&a.ignoreMatch()}function Qe(n,a){n.className!==void 0&&(n.scope=n.className,delete n.className)}function Je(n,a){a&&n.beginKeywords&&(n.begin="\\b("+n.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",n.__beforeBegin=Ve,n.keywords=n.keywords||n.beginKeywords,delete n.beginKeywords,n.relevance===void 0&&(n.relevance=0))}function je(n,a){Array.isArray(n.illegal)&&(n.illegal=v(...n.illegal))}function en(n,a){if(n.match){if(n.begin||n.end)throw new Error("begin & end are not supported with match");n.begin=n.match,delete n.match}}function z(n,a){n.relevance===void 0&&(n.relevance=1)}const Ae=(n,a)=>{if(!n.beforeMatch)return;if(n.starts)throw new Error("beforeMatch cannot be used with starts");const c=Object.assign({},n);Object.keys(n).forEach(w=>{delete n[w]}),n.keywords=c.keywords,n.begin=S(c.beforeMatch,f(c.begin)),n.starts={relevance:0,contains:[Object.assign(c,{endsParent:!0})]},n.relevance=0,delete c.beforeMatch},Te=["of","and","for","in","not","or","if","then","parent","list","value"],nn="keyword";function En(n,a,c=nn){const w=Object.create(null);return typeof n=="string"?Z(c,n.split(" ")):Array.isArray(n)?Z(c,n):Object.keys(n).forEach(function(q){Object.assign(w,En(n[q],a,q))}),w;function Z(q,E){a&&(E=E.map(p=>p.toLowerCase())),E.forEach(function(p){const O=p.split("|");w[O[0]]=[q,jn(O[0],O[1])]})}}function jn(n,a){return a?Number(a):et(n)?0:1}function et(n){return Te.includes(n.toLowerCase())}const fn={},Se=n=>{console.error(n)},mn=(n,...a)=>{console.log(`WARN: ${n}`,...a)},we=(n,a)=>{fn[`${n}/${a}`]||(console.log(`Deprecated as of ${n}. ${a}`),fn[`${n}/${a}`]=!0)},Le=new Error;function hn(n,a,{key:c}){let w=0;const Z=n[c],q={},E={};for(let p=1;p<=a.length;p++)E[p+w]=Z[p],q[p+w]=!0,w+=D(a[p-1]);n[c]=E,n[c]._emit=q,n[c]._multi=!0}function nt(n){if(Array.isArray(n.begin)){if(n.skip||n.excludeBegin||n.returnBegin)throw Se("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),Le;if(typeof n.beginScope!="object"||n.beginScope===null)throw Se("beginScope must be object"),Le;hn(n,n.begin,{key:"beginScope"}),n.begin=C(n.begin,{joinWith:""})}}function tt(n){if(Array.isArray(n.end)){if(n.skip||n.excludeEnd||n.returnEnd)throw Se("skip, excludeEnd, returnEnd not compatible with endScope: {}"),Le;if(typeof n.endScope!="object"||n.endScope===null)throw Se("endScope must be object"),Le;hn(n,n.end,{key:"endScope"}),n.end=C(n.end,{joinWith:""})}}function it(n){n.scope&&typeof n.scope=="object"&&n.scope!==null&&(n.beginScope=n.scope,delete n.scope)}function at(n){it(n),typeof n.beginScope=="string"&&(n.beginScope={_wrap:n.beginScope}),typeof n.endScope=="string"&&(n.endScope={_wrap:n.endScope}),nt(n),tt(n)}function rt(n){function a(E,p){return new RegExp(h(E),"m"+(n.case_insensitive?"i":"")+(n.unicodeRegex?"u":"")+(p?"g":""))}class c{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(p,O){O.position=this.position++,this.matchIndexes[this.matchAt]=O,this.regexes.push([O,p]),this.matchAt+=D(p)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const p=this.regexes.map(O=>O[1]);this.matcherRe=a(C(p,{joinWith:"|"}),!0),this.lastIndex=0}exec(p){this.matcherRe.lastIndex=this.lastIndex;const O=this.matcherRe.exec(p);if(!O)return null;const J=O.findIndex((Ie,an)=>an>0&&Ie!==void 0),X=this.matchIndexes[J];return O.splice(0,J),Object.assign(O,X)}}class w{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(p){if(this.multiRegexes[p])return this.multiRegexes[p];const O=new c;return this.rules.slice(p).forEach(([J,X])=>O.addRule(J,X)),O.compile(),this.multiRegexes[p]=O,O}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(p,O){this.rules.push([p,O]),O.type==="begin"&&this.count++}exec(p){const O=this.getMatcher(this.regexIndex);O.lastIndex=this.lastIndex;let J=O.exec(p);if(this.resumingScanAtSamePosition()&&!(J&&J.index===this.lastIndex)){const X=this.getMatcher(0);X.lastIndex=this.lastIndex+1,J=X.exec(p)}return J&&(this.regexIndex+=J.position+1,this.regexIndex===this.count&&this.considerAll()),J}}function Z(E){const p=new w;return E.contains.forEach(O=>p.addRule(O.begin,{rule:O,type:"begin"})),E.terminatorEnd&&p.addRule(E.terminatorEnd,{type:"end"}),E.illegal&&p.addRule(E.illegal,{type:"illegal"}),p}function q(E,p){const O=E;if(E.isCompiled)return O;[Qe,en,at,Ae].forEach(X=>X(E,p)),n.compilerExtensions.forEach(X=>X(E,p)),E.__beforeBegin=null,[Je,je,z].forEach(X=>X(E,p)),E.isCompiled=!0;let J=null;return typeof E.keywords=="object"&&E.keywords.$pattern&&(E.keywords=Object.assign({},E.keywords),J=E.keywords.$pattern,delete E.keywords.$pattern),J=J||/\w+/,E.keywords&&(E.keywords=En(E.keywords,n.case_insensitive)),O.keywordPatternRe=a(J,!0),p&&(E.begin||(E.begin=/\B|\b/),O.beginRe=a(O.begin),!E.end&&!E.endsWithParent&&(E.end=/\B|\b/),E.end&&(O.endRe=a(O.end)),O.terminatorEnd=h(O.end)||"",E.endsWithParent&&p.terminatorEnd&&(O.terminatorEnd+=(E.end?"|":"")+p.terminatorEnd)),E.illegal&&(O.illegalRe=a(E.illegal)),E.contains||(E.contains=[]),E.contains=[].concat(...E.contains.map(function(X){return st(X==="self"?E:X)})),E.contains.forEach(function(X){q(X,O)}),E.starts&&q(E.starts,p),O.matcher=Z(O),O}if(n.compilerExtensions||(n.compilerExtensions=[]),n.contains&&n.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return n.classNameAliases=r(n.classNameAliases||{}),q(n)}function Nn(n){return n?n.endsWithParent||Nn(n.starts):!1}function st(n){return n.variants&&!n.cachedVariants&&(n.cachedVariants=n.variants.map(function(a){return r(n,{variants:null},a)})),n.cachedVariants?n.cachedVariants:Nn(n)?r(n,{starts:n.starts?r(n.starts):null}):Object.isFrozen(n)?r(n):n}var ot="11.12.0";class ct extends Error{constructor(a,c){super(a),this.name="HTMLInjectionError",this.html=c}}const tn=i,Tn=r,Sn=Symbol("nomatch"),lt=7,yn=function(n){const a=Object.create(null),c=Object.create(null),w=[];let Z=!0;const q="Could not find the language '{}', did you forget to load/include a language module?",E={disableAutodetect:!0,name:"Plain text",contains:[]};let p={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:b};function O(s){return p.noHighlightRe.test(s)}function J(s){let T=s.className+" ";T+=s.parentNode?s.parentNode.className:"";const L=p.languageDetectRe.exec(T);if(L){const G=he(L[1]);return G||(mn(q.replace("{}",L[1])),mn("Falling back to no-highlight mode for this block.",s)),G?L[1]:"no-highlight"}return T.split(/\s+/).find(G=>O(G)||he(G))}function X(s,T,L){let G="",Q="";typeof T=="object"?(G=s,L=T.ignoreIllegals,Q=T.language):(we("10.7.0","highlight(lang, code, ...args) has been deprecated."),we("10.7.0",`Please use highlight(code, options) instead.
|
|
1
|
+
import{g as vt}from"./index-D8_sieMX.js";var dn,kn;function Mt(){if(kn)return dn;kn=1;function e(n){return n instanceof Map?n.clear=n.delete=n.set=function(){throw new Error("map is read-only")}:n instanceof Set&&(n.add=n.clear=n.delete=function(){throw new Error("set is read-only")}),Object.freeze(n),Object.getOwnPropertyNames(n).forEach(a=>{const c=n[a],w=typeof c;(w==="object"||w==="function")&&!Object.isFrozen(c)&&e(c)}),n}class t{constructor(a){a.data===void 0&&(a.data={}),this.data=a.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function i(n){return n.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function r(n,...a){const c=Object.create(null);for(const w in n)c[w]=n[w];return a.forEach(function(w){for(const Z in w)c[Z]=w[Z]}),c}const d="</span>",y=n=>!!n.scope,l=(n,{prefix:a})=>{if(n.startsWith("language:"))return n.replace("language:","language-");if(n.includes(".")){const c=n.split(".");return[`${a}${c.shift()}`,...c.map((w,Z)=>`${w}${"_".repeat(Z+1)}`)].join(" ")}return`${a}${n}`};class o{constructor(a,c){this.buffer="",this.classPrefix=c.classPrefix,a.walk(this)}addText(a){this.buffer+=i(a)}openNode(a){if(!y(a))return;const c=l(a.scope,{prefix:this.classPrefix});this.span(c)}closeNode(a){y(a)&&(this.buffer+=d)}value(){return this.buffer}span(a){this.buffer+=`<span class="${a}">`}}const _=(n={})=>{const a={children:[]};return Object.assign(a,n),a};class u{constructor(){this.rootNode=_(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(a){this.top.children.push(a)}openNode(a){const c=_({scope:a});this.add(c),this.stack.push(c)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(a){return this.constructor._walk(a,this.rootNode)}static _walk(a,c){return typeof c=="string"?a.addText(c):c.children&&(a.openNode(c),c.children.forEach(w=>this._walk(a,w)),a.closeNode(c)),a}static _collapse(a){typeof a!="string"&&a.children&&(a.children.every(c=>typeof c=="string")?a.children=[a.children.join("")]:a.children.forEach(c=>{u._collapse(c)}))}}class b extends u{constructor(a){super(),this.options=a}addText(a){a!==""&&this.add(a)}startScope(a){this.openNode(a)}endScope(){this.closeNode()}__addSublanguage(a,c){const w=a.root;c&&(w.scope=`language:${c}`),this.add(w)}toHTML(){return new o(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function h(n){return n?typeof n=="string"?n:n.source:null}function f(n){return S("(?=",n,")")}function N(n){return S("(?:",n,")*")}function A(n){return S("(?:",n,")?")}function S(...n){return n.map(c=>h(c)).join("")}function M(n){const a=n[n.length-1];return typeof a=="object"&&a.constructor===Object?(n.splice(n.length-1,1),a):{}}function v(...n){return"("+(M(n).capture?"":"?:")+n.map(w=>h(w)).join("|")+")"}function D(n){return new RegExp(n.toString()+"|").exec("").length-1}function U(n,a){const c=n&&n.exec(a);return c&&c.index===0}const k=new RegExp(v(/\[(?:[^\\\]]|\\.)*\]/,/\(\?<(?![=!])[^>]+>/,/\(\?'[^']+'/,/\(\??/,/\\([1-9][0-9]*)/,/\\./));function C(n,{joinWith:a}){let c=0;return n.map(w=>{c+=1;const Z=c;let q=h(w),E="";for(;q.length>0;){const p=k.exec(q);if(!p){E+=q;break}E+=q.substring(0,p.index),q=q.substring(p.index+p[0].length),p[0][0]==="\\"&&p[1]?E+="\\"+String(Number(p[1])+Z):(E+=p[0],(p[0]==="("||/^\(\?[<']/.test(p[0]))&&c++)}return E}).map(w=>`(${w})`).join(a)}const x=/\b\B/,P="[a-zA-Z]\\w*",W="[a-zA-Z_]\\w*",$="\\b\\d+(\\.\\d+)?",te="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",ce="\\b(0b[01]+)",de="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",ue=(n={})=>{const a=/^#![ ]*\//;return n.binary&&(n.begin=S(a,/.*\b/,n.binary,/\b.*/)),r({scope:"meta",begin:a,end:/$/,relevance:0,"on:begin":(c,w)=>{c.index!==0&&w.ignoreMatch()}},n)},Y={begin:"\\\\[\\s\\S]",relevance:0},V={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[Y]},se={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[Y]},Ee={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},B=function(n,a,c={}){const w=r({scope:"comment",begin:n,end:a,contains:[]},c);w.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const Z=v("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return w.contains.push({begin:S(/[ ]+/,"(",Z,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),w},j=B("//","$"),oe=B("/\\*","\\*/"),ie=B("#","$"),ee={scope:"number",begin:$,relevance:0},fe={scope:"number",begin:te,relevance:0},qe={scope:"number",begin:ce,relevance:0},xe={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[Y,{begin:/\[/,end:/\]/,relevance:0,contains:[Y]}]},Ce={scope:"title",begin:P,relevance:0},Xe={scope:"title",begin:W,relevance:0},De={begin:"\\.\\s*"+W,relevance:0};var Oe=Object.freeze({__proto__:null,APOS_STRING_MODE:V,BACKSLASH_ESCAPE:Y,BINARY_NUMBER_MODE:qe,BINARY_NUMBER_RE:ce,COMMENT:B,C_BLOCK_COMMENT_MODE:oe,C_LINE_COMMENT_MODE:j,C_NUMBER_MODE:fe,C_NUMBER_RE:te,END_SAME_AS_BEGIN:function(n){return Object.assign(n,{"on:begin":(a,c)=>{c.data._beginMatch=a[1]},"on:end":(a,c)=>{c.data._beginMatch!==a[1]&&c.ignoreMatch()}})},HASH_COMMENT_MODE:ie,IDENT_RE:P,MATCH_NOTHING_RE:x,METHOD_GUARD:De,NUMBER_MODE:ee,NUMBER_RE:$,PHRASAL_WORDS_MODE:Ee,QUOTE_STRING_MODE:se,REGEXP_MODE:xe,RE_STARTERS_RE:de,SHEBANG:ue,TITLE_MODE:Ce,UNDERSCORE_IDENT_RE:W,UNDERSCORE_TITLE_MODE:Xe});function Ve(n,a){n.input[n.index-1]==="."&&a.ignoreMatch()}function Qe(n,a){n.className!==void 0&&(n.scope=n.className,delete n.className)}function Je(n,a){a&&n.beginKeywords&&(n.begin="\\b("+n.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",n.__beforeBegin=Ve,n.keywords=n.keywords||n.beginKeywords,delete n.beginKeywords,n.relevance===void 0&&(n.relevance=0))}function je(n,a){Array.isArray(n.illegal)&&(n.illegal=v(...n.illegal))}function en(n,a){if(n.match){if(n.begin||n.end)throw new Error("begin & end are not supported with match");n.begin=n.match,delete n.match}}function z(n,a){n.relevance===void 0&&(n.relevance=1)}const Ae=(n,a)=>{if(!n.beforeMatch)return;if(n.starts)throw new Error("beforeMatch cannot be used with starts");const c=Object.assign({},n);Object.keys(n).forEach(w=>{delete n[w]}),n.keywords=c.keywords,n.begin=S(c.beforeMatch,f(c.begin)),n.starts={relevance:0,contains:[Object.assign(c,{endsParent:!0})]},n.relevance=0,delete c.beforeMatch},Te=["of","and","for","in","not","or","if","then","parent","list","value"],nn="keyword";function En(n,a,c=nn){const w=Object.create(null);return typeof n=="string"?Z(c,n.split(" ")):Array.isArray(n)?Z(c,n):Object.keys(n).forEach(function(q){Object.assign(w,En(n[q],a,q))}),w;function Z(q,E){a&&(E=E.map(p=>p.toLowerCase())),E.forEach(function(p){const O=p.split("|");w[O[0]]=[q,jn(O[0],O[1])]})}}function jn(n,a){return a?Number(a):et(n)?0:1}function et(n){return Te.includes(n.toLowerCase())}const fn={},Se=n=>{console.error(n)},mn=(n,...a)=>{console.log(`WARN: ${n}`,...a)},we=(n,a)=>{fn[`${n}/${a}`]||(console.log(`Deprecated as of ${n}. ${a}`),fn[`${n}/${a}`]=!0)},Le=new Error;function hn(n,a,{key:c}){let w=0;const Z=n[c],q={},E={};for(let p=1;p<=a.length;p++)E[p+w]=Z[p],q[p+w]=!0,w+=D(a[p-1]);n[c]=E,n[c]._emit=q,n[c]._multi=!0}function nt(n){if(Array.isArray(n.begin)){if(n.skip||n.excludeBegin||n.returnBegin)throw Se("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),Le;if(typeof n.beginScope!="object"||n.beginScope===null)throw Se("beginScope must be object"),Le;hn(n,n.begin,{key:"beginScope"}),n.begin=C(n.begin,{joinWith:""})}}function tt(n){if(Array.isArray(n.end)){if(n.skip||n.excludeEnd||n.returnEnd)throw Se("skip, excludeEnd, returnEnd not compatible with endScope: {}"),Le;if(typeof n.endScope!="object"||n.endScope===null)throw Se("endScope must be object"),Le;hn(n,n.end,{key:"endScope"}),n.end=C(n.end,{joinWith:""})}}function it(n){n.scope&&typeof n.scope=="object"&&n.scope!==null&&(n.beginScope=n.scope,delete n.scope)}function at(n){it(n),typeof n.beginScope=="string"&&(n.beginScope={_wrap:n.beginScope}),typeof n.endScope=="string"&&(n.endScope={_wrap:n.endScope}),nt(n),tt(n)}function rt(n){function a(E,p){return new RegExp(h(E),"m"+(n.case_insensitive?"i":"")+(n.unicodeRegex?"u":"")+(p?"g":""))}class c{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(p,O){O.position=this.position++,this.matchIndexes[this.matchAt]=O,this.regexes.push([O,p]),this.matchAt+=D(p)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const p=this.regexes.map(O=>O[1]);this.matcherRe=a(C(p,{joinWith:"|"}),!0),this.lastIndex=0}exec(p){this.matcherRe.lastIndex=this.lastIndex;const O=this.matcherRe.exec(p);if(!O)return null;const J=O.findIndex((Ie,an)=>an>0&&Ie!==void 0),X=this.matchIndexes[J];return O.splice(0,J),Object.assign(O,X)}}class w{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(p){if(this.multiRegexes[p])return this.multiRegexes[p];const O=new c;return this.rules.slice(p).forEach(([J,X])=>O.addRule(J,X)),O.compile(),this.multiRegexes[p]=O,O}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(p,O){this.rules.push([p,O]),O.type==="begin"&&this.count++}exec(p){const O=this.getMatcher(this.regexIndex);O.lastIndex=this.lastIndex;let J=O.exec(p);if(this.resumingScanAtSamePosition()&&!(J&&J.index===this.lastIndex)){const X=this.getMatcher(0);X.lastIndex=this.lastIndex+1,J=X.exec(p)}return J&&(this.regexIndex+=J.position+1,this.regexIndex===this.count&&this.considerAll()),J}}function Z(E){const p=new w;return E.contains.forEach(O=>p.addRule(O.begin,{rule:O,type:"begin"})),E.terminatorEnd&&p.addRule(E.terminatorEnd,{type:"end"}),E.illegal&&p.addRule(E.illegal,{type:"illegal"}),p}function q(E,p){const O=E;if(E.isCompiled)return O;[Qe,en,at,Ae].forEach(X=>X(E,p)),n.compilerExtensions.forEach(X=>X(E,p)),E.__beforeBegin=null,[Je,je,z].forEach(X=>X(E,p)),E.isCompiled=!0;let J=null;return typeof E.keywords=="object"&&E.keywords.$pattern&&(E.keywords=Object.assign({},E.keywords),J=E.keywords.$pattern,delete E.keywords.$pattern),J=J||/\w+/,E.keywords&&(E.keywords=En(E.keywords,n.case_insensitive)),O.keywordPatternRe=a(J,!0),p&&(E.begin||(E.begin=/\B|\b/),O.beginRe=a(O.begin),!E.end&&!E.endsWithParent&&(E.end=/\B|\b/),E.end&&(O.endRe=a(O.end)),O.terminatorEnd=h(O.end)||"",E.endsWithParent&&p.terminatorEnd&&(O.terminatorEnd+=(E.end?"|":"")+p.terminatorEnd)),E.illegal&&(O.illegalRe=a(E.illegal)),E.contains||(E.contains=[]),E.contains=[].concat(...E.contains.map(function(X){return st(X==="self"?E:X)})),E.contains.forEach(function(X){q(X,O)}),E.starts&&q(E.starts,p),O.matcher=Z(O),O}if(n.compilerExtensions||(n.compilerExtensions=[]),n.contains&&n.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return n.classNameAliases=r(n.classNameAliases||{}),q(n)}function Nn(n){return n?n.endsWithParent||Nn(n.starts):!1}function st(n){return n.variants&&!n.cachedVariants&&(n.cachedVariants=n.variants.map(function(a){return r(n,{variants:null},a)})),n.cachedVariants?n.cachedVariants:Nn(n)?r(n,{starts:n.starts?r(n.starts):null}):Object.isFrozen(n)?r(n):n}var ot="11.12.0";class ct extends Error{constructor(a,c){super(a),this.name="HTMLInjectionError",this.html=c}}const tn=i,Tn=r,Sn=Symbol("nomatch"),lt=7,yn=function(n){const a=Object.create(null),c=Object.create(null),w=[];let Z=!0;const q="Could not find the language '{}', did you forget to load/include a language module?",E={disableAutodetect:!0,name:"Plain text",contains:[]};let p={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:b};function O(s){return p.noHighlightRe.test(s)}function J(s){let T=s.className+" ";T+=s.parentNode?s.parentNode.className:"";const L=p.languageDetectRe.exec(T);if(L){const G=he(L[1]);return G||(mn(q.replace("{}",L[1])),mn("Falling back to no-highlight mode for this block.",s)),G?L[1]:"no-highlight"}return T.split(/\s+/).find(G=>O(G)||he(G))}function X(s,T,L){let G="",Q="";typeof T=="object"?(G=s,L=T.ignoreIllegals,Q=T.language):(we("10.7.0","highlight(lang, code, ...args) has been deprecated."),we("10.7.0",`Please use highlight(code, options) instead.
|
|
2
2
|
https://github.com/highlightjs/highlight.js/issues/2277`),Q=s,G=T),L===void 0&&(L=!0);const ge={code:G,language:Q};Pe("before:highlight",ge);const Ne=ge.result?ge.result:Ie(ge.language,ge.code,L);return Ne.code=ge.code,Pe("after:highlight",Ne),Ne}function Ie(s,T,L,G){const Q=Object.create(null);function ge(g,m){return g.keywords[m]}function Ne(){if(!R.keywords){ne.addText(H);return}let g=0;R.keywordPatternRe.lastIndex=0;let m=R.keywordPatternRe.exec(H),I="";for(;m;){I+=H.substring(g,m.index);const F=pe.case_insensitive?m[0].toLowerCase():m[0],ae=ge(R,F);if(ae){const[me,wt]=ae;if(ne.addText(I),I="",Q[F]=(Q[F]||0)+1,Q[F]<=lt&&($e+=wt),me.startsWith("_"))I+=m[0];else{const Rt=pe.classNameAliases[me]||me;be(m[0],Rt)}}else I+=m[0];g=R.keywordPatternRe.lastIndex,m=R.keywordPatternRe.exec(H)}I+=H.substring(g),ne.addText(I)}function Ue(){if(H==="")return;let g=null;if(typeof R.subLanguage=="string"){if(!a[R.subLanguage]){ne.addText(H);return}g=Ie(R.subLanguage,H,!0,In[R.subLanguage]),In[R.subLanguage]=g._top}else g=rn(H,R.subLanguage.length?R.subLanguage:null);R.relevance>0&&($e+=g.relevance),ne.__addSublanguage(g._emitter,g.language)}function le(){R.subLanguage!=null?Ue():Ne(),H=""}function be(g,m){g!==""&&(ne.startScope(m),ne.addText(g),ne.endScope())}function Rn(g,m){let I=1;const F=m.length-1;for(;I<=F;){if(!g._emit[I]){I++;continue}const ae=pe.classNameAliases[g[I]]||g[I],me=m[I];ae?be(me,ae):(H=me,Ne(),H=""),I++}}function vn(g,m){return g.scope&&typeof g.scope=="string"&&ne.openNode(pe.classNameAliases[g.scope]||g.scope),g.beginScope&&(g.beginScope._wrap?(be(H,pe.classNameAliases[g.beginScope._wrap]||g.beginScope._wrap),H=""):g.beginScope._multi&&(Rn(g.beginScope,m),H="")),R=Object.create(g,{parent:{value:R}}),R}function Mn(g,m,I){let F=U(g.endRe,I);if(F){if(g["on:end"]){const ae=new t(g);g["on:end"](m,ae),ae.isMatchIgnored&&(F=!1)}if(F){for(;g.endsParent&&g.parent;)g=g.parent;return g}}if(g.endsWithParent)return Mn(g.parent,m,I)}function Tt(g){return R.matcher.regexIndex===0?(H+=g[0],1):(ln=!0,0)}function St(g){const m=g[0],I=g.rule,F=new t(I),ae=[I.__beforeBegin,I["on:begin"]];for(const me of ae)if(me&&(me(g,F),F.isMatchIgnored))return Tt(m);return I.skip?H+=m:(I.excludeBegin&&(H+=m),le(),!I.returnBegin&&!I.excludeBegin&&(H=m)),vn(I,g),I.returnBegin?0:m.length}function yt(g){const m=g[0],I=T.substring(g.index),F=Mn(R,g,I);if(!F)return Sn;const ae=R;R.endScope&&R.endScope._wrap?(le(),be(m,R.endScope._wrap)):R.endScope&&R.endScope._multi?(le(),Rn(R.endScope,g)):ae.skip?H+=m:(ae.returnEnd||ae.excludeEnd||(H+=m),le(),ae.excludeEnd&&(H=m));do R.scope&&ne.closeNode(),!R.skip&&!R.subLanguage&&($e+=R.relevance),R=R.parent;while(R!==F.parent);return F.starts&&vn(F.starts,g),ae.returnEnd?0:m.length}function Ot(){const g=[];for(let m=R;m!==pe;m=m.parent)m.scope&&g.unshift(m.scope);g.forEach(m=>ne.openNode(m))}let Fe={};function Cn(g,m){const I=m&&m[0];if(H+=g,I==null)return le(),0;if(Fe.type==="begin"&&m.type==="end"&&Fe.index===m.index&&I===""){if(H+=T.slice(m.index,m.index+1),!Z){const F=new Error(`0 width match regex (${s})`);throw F.languageName=s,F.badRule=Fe.rule,F}return 1}if(Fe=m,m.type==="begin")return St(m);if(m.type==="illegal"&&!L){const F=new Error('Illegal lexeme "'+I+'" for mode "'+(R.scope||"<unnamed>")+'"');throw F.mode=R,F}else if(m.type==="end"){const F=yt(m);if(F!==Sn)return F}if(m.type==="illegal"&&I==="")return m.index===T.length||(H+=`
|
|
3
3
|
`),1;if(cn>1e5&&cn>m.index*3)throw new Error("potential infinite loop, way more iterations than matches");return H+=I,I.length}const pe=he(s);if(!pe)throw Se(q.replace("{}",s)),new Error('Unknown language: "'+s+'"');const At=rt(pe);let on="",R=G||At;const In={},ne=new p.__emitter(p);Ot();let H="",$e=0,ye=0,cn=0,ln=!1;try{if(pe.__emitTokens)pe.__emitTokens(T,ne);else{for(R.matcher.considerAll();;){cn++,ln?ln=!1:R.matcher.considerAll(),R.matcher.lastIndex=ye;const g=R.matcher.exec(T);if(!g)break;const m=T.substring(ye,g.index),I=Cn(m,g);ye=g.index+I}Cn(T.substring(ye))}return ne.finalize(),on=ne.toHTML(),{language:s,value:on,relevance:$e,illegal:!1,_emitter:ne,_top:R}}catch(g){if(g.message&&g.message.includes("Illegal"))return{language:s,value:tn(T),illegal:!0,relevance:0,_illegalBy:{message:g.message,index:ye,context:T.slice(ye-100,ye+100),mode:g.mode,resultSoFar:on},_emitter:ne};if(Z)return{language:s,value:tn(T),illegal:!1,relevance:0,errorRaised:g,_emitter:ne,_top:R};throw g}}function an(s){const T={value:tn(s),illegal:!1,relevance:0,_top:E,_emitter:new p.__emitter(p)};return T._emitter.addText(s),T}function rn(s,T){T=T||p.languages||Object.keys(a);const L=an(s),G=T.filter(he).filter(wn).map(le=>Ie(le,s,!1));G.unshift(L);const Q=G.sort((le,be)=>{if(le.relevance!==be.relevance)return be.relevance-le.relevance;if(le.language&&be.language){if(he(le.language).supersetOf===be.language)return 1;if(he(be.language).supersetOf===le.language)return-1}return 0}),[ge,Ne]=Q,Ue=ge;return Ue.secondBest=Ne,Ue}function dt(s,T,L){const G=T&&c[T]||L;s.classList.add("hljs"),s.classList.add(`language-${G}`)}function sn(s){let T=null;const L=J(s);if(O(L))return;if(Pe("before:highlightElement",{el:s,language:L}),s.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",s);return}if(s.children.length>0&&(p.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(s)),p.throwUnescapedHTML))throw new ct("One of your code blocks includes unescaped HTML.",s.innerHTML);T=s;const G=T.textContent,Q=L?X(G,{language:L,ignoreIllegals:!0}):rn(G);s.innerHTML=Q.value,s.dataset.highlighted="yes",dt(s,L,Q.language),s.result={language:Q.language,re:Q.relevance,relevance:Q.relevance},Q.secondBest&&(s.secondBest={language:Q.secondBest.language,relevance:Q.secondBest.relevance}),Pe("after:highlightElement",{el:s,result:Q,text:G})}function ut(s){p=Tn(p,s)}const gt=()=>{Be(),we("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function bt(){Be(),we("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let On=!1;function Be(){function s(){Be()}if(document.readyState==="loading"){On||window.addEventListener("DOMContentLoaded",s,!1),On=!0;return}document.querySelectorAll(p.cssSelector).forEach(sn)}function pt(s,T){let L=null;try{L=T(n)}catch(G){if(Se("Language definition for '{}' could not be registered.".replace("{}",s)),Z)Se(G);else throw G;L=E}L.name||(L.name=s),a[s]=L,L.rawDefinition=T.bind(null,n),L.aliases&&An(L.aliases,{languageName:s})}function _t(s){delete a[s];for(const T of Object.keys(c))c[T]===s&&delete c[T]}function Et(){return Object.keys(a)}function he(s){return s=(s||"").toLowerCase(),a[s]||a[c[s]]}function An(s,{languageName:T}){typeof s=="string"&&(s=[s]),s.forEach(L=>{c[L.toLowerCase()]=T})}function wn(s){const T=he(s);return T&&!T.disableAutodetect}function ft(s){s["before:highlightBlock"]&&!s["before:highlightElement"]&&(s["before:highlightElement"]=T=>{s["before:highlightBlock"](Object.assign({block:T.el},T))}),s["after:highlightBlock"]&&!s["after:highlightElement"]&&(s["after:highlightElement"]=T=>{s["after:highlightBlock"](Object.assign({block:T.el},T))})}function mt(s){ft(s),w.push(s)}function ht(s){const T=w.indexOf(s);T!==-1&&w.splice(T,1)}function Pe(s,T){const L=s;w.forEach(function(G){G[L]&&G[L](T)})}function Nt(s){return we("10.7.0","highlightBlock will be removed entirely in v12.0"),we("10.7.0","Please use highlightElement now."),sn(s)}Object.assign(n,{highlight:X,highlightAuto:rn,highlightAll:Be,highlightElement:sn,highlightBlock:Nt,configure:ut,initHighlighting:gt,initHighlightingOnLoad:bt,registerLanguage:pt,unregisterLanguage:_t,listLanguages:Et,getLanguage:he,registerAliases:An,autoDetection:wn,inherit:Tn,addPlugin:mt,removePlugin:ht}),n.debugMode=function(){Z=!1},n.safeMode=function(){Z=!0},n.versionString=ot,n.regex={concat:S,lookahead:f,either:v,optional:A,anyNumberOfTimes:N};for(const s in Oe)typeof Oe[s]=="object"&&e(Oe[s]);return Object.assign(n,Oe),n},Re=yn({});return Re.newInstance=()=>yn({}),dn=Re,Re.HighlightJS=Re,Re.default=Re,dn}var Ct=Mt();const bn=vt(Ct);function It(e){const t=e.regex,i={},r={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[i]}]};Object.assign(i,{className:"variable",variants:[{begin:t.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},r]});const d={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},y=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),l={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},o={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,i,d]};d.contains.push(o);const _={match:/\\"/},u={className:"string",begin:/'/,end:/'/},b={match:/\\'/},h={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,i]},f=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],N=e.SHEBANG({binary:`(${f.join("|")})`,relevance:10}),A={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},S=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],M=["true","false"],v={match:/(\/[a-z._-]+)+/},D=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],U=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],k=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],C=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:S,literal:M,built_in:[...D,...U,"set","shopt",...k,...C]},contains:[N,e.SHEBANG(),A,h,y,l,v,o,_,u,b,i]}}function kt(e){const t=e.regex,i=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),r="decltype\\(auto\\)",d="[a-zA-Z_]\\w*::",l="("+r+"|"+t.optional(d)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",o=t.concat(/\batomic_/,t.either("bool","char","schar","uchar","short","ushort","int","uint","long","ulong","llong","ullong","char16_t","char32_t","wchar_t","int_least8_t","uint_least8_t","int_least16_t","uint_least16_t","int_least32_t","uint_least32_t","int_least64_t","uint_least64_t","int_fast8_t","uint_fast8_t","int_fast16_t","uint_fast16_t","int_fast32_t","uint_fast32_t","int_fast64_t","uint_fast64_t","intptr_t","uintptr_t","size_t","ptrdiff_t","intmax_t","uintmax_t"),/\b/),_={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:o}]},b={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\\s"]{0,16})\(/,end:/\)([^()\\\s"]{0,16})"/})]},h={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},f={scope:"meta",begin:/#\s*include\b/,end:/$/,keywords:{keyword:"include"},contains:[{begin:/\\\n/},b,{scope:"string",begin:/<.*?>/},i,e.C_BLOCK_COMMENT_MODE]},N={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(b,{className:"string"}),i,e.C_BLOCK_COMMENT_MODE]},A=[f,N],S={className:"title",begin:t.optional(d)+e.IDENT_RE,relevance:0},M=t.optional(d)+e.IDENT_RE+"\\s*\\(",v=12,k={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},C=[...A,_,i,e.C_BLOCK_COMMENT_MODE,h,b],x={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:k,contains:C.concat([{begin:/\(/,end:/\)/,keywords:k,contains:C.concat(["self"]),relevance:0}]),relevance:0},P={begin:"("+l+"[\\*&\\s]+){1,"+v+"}"+M,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:k,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:r,keywords:k,relevance:0},{begin:M,returnBegin:!0,contains:[e.inherit(S,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:k,relevance:0,contains:[i,e.C_BLOCK_COMMENT_MODE,b,h,_,{begin:/\(/,end:/\)/,keywords:k,relevance:0,contains:["self",i,e.C_BLOCK_COMMENT_MODE,b,h,_]}]},_,i,e.C_BLOCK_COMMENT_MODE,...A]};return{name:"C",aliases:["h"],keywords:k,disableAutodetect:!0,illegal:"</",contains:[].concat(x,P,C,[...A,{begin:e.IDENT_RE+"::",keywords:k},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:N,strings:b,keywords:k}}}function xt(e){const t=e.regex,i=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),r="decltype\\(auto\\)",d="[a-zA-Z_]\\w*::",l="(?!struct)("+r+"|"+t.optional(d)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",o={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},u={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\\s"]{0,16})\(/,end:/\)([^()\\\s"]{0,16})"/})]},b={className:"number",variants:[{begin:"[+-]?(?:(?:\\b[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|\\b[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|\\b0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},h={scope:"meta",begin:/#\s*include\b/,end:/$/,keywords:{keyword:"include"},contains:[{begin:/\\\n/},u,{scope:"string",begin:/<.*?>/},i,e.C_BLOCK_COMMENT_MODE]},f={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(u,{className:"string"}),i,e.C_BLOCK_COMMENT_MODE]},N=[h,f],A={className:"title",begin:t.optional(d)+e.IDENT_RE,relevance:0},S=t.optional(d)+e.IDENT_RE+"\\s*\\(",M=12,v=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],D=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],U=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],k=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],P={type:D,keyword:v,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:U},W={className:"function.dispatch",relevance:0,keywords:{_hint:k},begin:t.concat(/\b/,`(?!${v.join("|")})`,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/))},$=[W,...N,o,i,e.C_BLOCK_COMMENT_MODE,b,u],te={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:P,contains:$.concat([{begin:/\(/,end:/\)/,keywords:P,contains:$.concat(["self"]),relevance:0}]),relevance:0},ce={className:"function",begin:"("+l+"[\\*&\\s]+){1,"+M+"}"+S,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:P,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:r,keywords:P,relevance:0},{begin:S,returnBegin:!0,contains:[A],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[u,b]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:P,relevance:0,contains:[i,e.C_BLOCK_COMMENT_MODE,u,b,o,{begin:/\(/,end:/\)/,keywords:P,relevance:0,contains:["self",i,e.C_BLOCK_COMMENT_MODE,u,b,o]}]},o,i,e.C_BLOCK_COMMENT_MODE,...N]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:P,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(te,ce,W,$,[...N,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:P,contains:["self",o]},{begin:e.IDENT_RE+"::",keywords:P},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}function Dt(e){const t=["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],i=["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"],r=["default","false","null","true"],d=["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"],y=["add","alias","and","ascending","args","async","await","by","descending","dynamic","equals","file","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","record","remove","required","scoped","select","set","unmanaged","value|0","var","when","where","with","yield"],l={keyword:d.concat(y),built_in:t,literal:r},o=e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),_="\\d(_*\\d)*",u="([uU][lL]?|[lL][uU]?)?",h={className:"number",variants:[{begin:"\\b0[bB]_*[01](_*[01])*"+u},{begin:"(-?)\\b0[xX]_*[a-fA-F0-9](_*[a-fA-F0-9])*"+u},{begin:"(-?)(\\b"+_+"(\\.("+_+")?)?|\\."+_+")([eE][-+]?"+_+")?"+"([fFdDmM]|[uU][lL]?|[lL][uU]?)?"}],relevance:0},f={className:"string",begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1},N={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},A=e.inherit(N,{illegal:/\n/}),S={className:"subst",begin:/\{/,end:/\}/,keywords:l},M=e.inherit(S,{illegal:/\n/}),v={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},e.BACKSLASH_ESCAPE,M]},D={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},S]},U=e.inherit(D,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},M]});S.contains=[D,v,N,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,h,e.C_BLOCK_COMMENT_MODE],M.contains=[U,v,A,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,h,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];const k={variants:[f,D,v,N,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},C={begin:"<",end:">",contains:[{beginKeywords:"in out"},o]},x=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",P={begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:l,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"<!--|-->"},{begin:"</?",end:">"}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},k,h,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},o,C,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[o,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[o,C,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+x+"\\s+)+"+e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:l,contains:[{beginKeywords:i.join(" "),relevance:0},{begin:e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[e.TITLE_MODE,C],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,relevance:0,contains:[k,h,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},P]}}const Lt=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},UNICODE_RANGE:{scope:"number",begin:/\b[Uu]\+[0-9A-Fa-f][0-9A-Fa-f?]{0,5}(-[0-9A-Fa-f][0-9A-Fa-f]{0,5})?/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),Bt=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],Pt=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],Ut=[...Bt,...Pt],Ft=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),$t=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),zt=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Kt=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","corner-bottom-left-shape","corner-bottom-right-shape","corner-shape","corner-top-left-shape","corner-top-right-shape","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","unicode-range","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function Gt(e){const t=e.regex,i=Lt(e),r={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},d="and or not only",y=/@-?\w[\w]*(-\w+)*/,l="[a-zA-Z-][a-zA-Z0-9_-]*",o=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[i.BLOCK_COMMENT,r,i.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+l,relevance:0},i.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+$t.join("|")+")"},{begin:":(:)?("+zt.join("|")+")"}]},i.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Kt.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[i.BLOCK_COMMENT,i.HEXCOLOR,i.IMPORTANT,i.CSS_NUMBER_MODE,i.UNICODE_RANGE,...o,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...o,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},i.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:y},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:d,attribute:Ft.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...o,i.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+Ut.join("|")+")\\b"}]}}function Ht(e){return{name:"Dockerfile",aliases:["docker"],case_insensitive:!0,keywords:["from","maintainer","expose","env","arg","user","onbuild","stopsignal"],contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell",starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"</"}}function Wt(e){const y={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:y,illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\b0[bB](_?[01])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:y,illegal:/["']/}]}]}}function Yt(e){const t=e.regex,i={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},r=e.COMMENT();r.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const d={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},y={className:"literal",begin:/\bon|off|true|false|yes|no\b/},l={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},o={begin:/\[/,end:/\]/,contains:[r,y,d,l,i,"self"],relevance:0},_=/[A-Za-z0-9_-]+/,u=/"(\\"|[^"])*"/,b=/'[^']*'/,h=t.either(_,u,b),f=t.concat(h,"(\\s*\\.\\s*",h,")*",t.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[r,{className:"section",begin:/\[+/,end:/\]+/},{begin:f,className:"attr",starts:{end:/$/,contains:[r,o,y,d,l,i]}}]}}var ve="[0-9](_*[0-9])*",ze=`\\.(${ve})`,Ke="[0-9a-fA-F](_*[0-9a-fA-F])*",xn={className:"number",variants:[{begin:`(\\b(${ve})((${ze})|\\.)?|(${ze}))[eE][+-]?(${ve})[fFdD]?\\b`},{begin:`\\b(${ve})((${ze})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${ze})[fFdD]?\\b`},{begin:`\\b(${ve})[fFdD]\\b`},{begin:`\\b0[xX]((${Ke})\\.?|(${Ke})?\\.(${Ke}))[pP][+-]?(${ve})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${Ke})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function Un(e,t,i){return i===-1?"":e.replace(t,r=>Un(e,t,i-1))}function Zt(e){const t=e.regex,i="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",r="(?:(?:\\s*\\[\\s*])+)?",d=i+"<@@@>"+r,l="(?:"+("\\?(?:\\s+(?:extends|super)\\s+"+d+")?")+"|"+d+")",o=Un("(?:\\s*<\\s*"+l+"(?:\\s*,\\s*"+l+")*\\s*>)?",/<@@@>/g,2),f={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},N={className:"meta",begin:"@"+i,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},A={className:"params",begin:/\(/,end:/\)/,keywords:f,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:f,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,i],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{beginKeywords:"new throw return else yield assert",relevance:0},{begin:[i,t.concat(o,r,/\s+/),i,r,/\s*/,/=(?!=)/],className:{1:"type",3:"variable",6:"operator"}},{begin:[/record/,/\s+/,i],className:{1:"keyword",3:"title.class"},contains:[A,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{begin:[i,t.concat(o,r,/\s+/),i,/\s*(?=\()/],className:{1:"type",3:"title.function"},keywords:f,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:f,relevance:0,contains:[N,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,xn,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},xn,N]}}const Dn="[A-Za-z$_][0-9A-Za-z$_]*",qt=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],Xt=["true","false","null","undefined","NaN","Infinity"],Fn=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],$n=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],zn=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Vt=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","self","global"],Qt=[].concat(zn,Fn,$n);function Jt(e){const t=e.regex,i=(B,{after:j})=>{const oe="</"+B[0].slice(1);return B.input.indexOf(oe,j)!==-1},r=Dn,d={begin:"<>",end:"</>"},y=/<[A-Za-z0-9\\._:-]+\s*\/>/,l={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(B,j)=>{const oe=B[0].length+B.index,ie=B.input[oe];if(ie==="<"||ie===","){j.ignoreMatch();return}ie===">"&&(i(B,{after:oe})||j.ignoreMatch());let ee;const fe=B.input.substring(oe);if(ee=fe.match(/^\s*=/)){j.ignoreMatch();return}if((ee=fe.match(/^\s+extends\s+/))&&ee.index===0){j.ignoreMatch();return}}},o={$pattern:Dn,keyword:qt,literal:Xt,built_in:Qt,"variable.language":Vt},_="[0-9](_?[0-9])*",u=`\\.(${_})`,b="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",h={className:"number",variants:[{begin:`(\\b(${b})((${u})|\\.)?|(${u}))[eE][+-]?(${_})\\b`},{begin:`\\b(${b})\\b((${u})\\b|\\.)?|(${u})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},f={className:"subst",begin:"\\$\\{",end:"\\}",keywords:o,contains:[]},N={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:"xml"}},A={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:"css"}},S={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:"graphql"}},M={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,f]},D={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:r+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},U=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,N,A,S,M,{match:/\$\d+/},h];f.contains=U.concat({begin:/\{/,end:/\}/,keywords:o,contains:["self"].concat(U)});const k=[].concat(D,f.contains),C=k.concat([{begin:/(\s*)\(/,end:/\)/,keywords:o,contains:["self"].concat(k)}]),x={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:o,contains:C},P={variants:[{match:[/class/,/\s+/,r,/\s+/,/extends/,/\s+/,t.concat(r,"(",t.concat(/\./,r),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,r],scope:{1:"keyword",3:"title.class"}}]},W={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...Fn,...$n]}},$={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},te={variants:[{match:[/function/,/\s+/,r,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[x],illegal:/%/},ce={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function de(B){return t.concat("(?!",B.join("|"),")")}const ue={match:t.concat(/\b/,de([...zn,"super","import","await"].map(B=>`${B}\\s*\\(`)),r,t.lookahead(/\s*\(/)),className:"title.function",relevance:0},Y={begin:t.concat(/\./,t.lookahead(t.concat(r,/(?![0-9A-Za-z$_(])/))),end:r,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},V={match:[/get|set/,/\s+/,r,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},x]},se="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",Ee={match:[/const|var|let/,/\s+/,r,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(se)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[x]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:o,exports:{PARAMS_CONTAINS:C,CLASS_REFERENCE:W},illegal:/#(?![$_A-Za-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),$,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,N,A,S,M,D,{match:/\$\d+/},h,W,{scope:"attr",match:r+t.lookahead(":"),relevance:0},Ee,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[D,e.REGEXP_MODE,{className:"function",begin:se,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:o,contains:C}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:d.begin,end:d.end},{match:y},{begin:l.begin,"on:begin":l.isTrulyOpeningTag,end:l.end}],subLanguage:"xml",contains:[{begin:l.begin,end:l.end,skip:!0,contains:["self"]}]}]},te,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[x,e.inherit(e.TITLE_MODE,{begin:r,className:"title.function"})]},{match:/\.\.\./,relevance:0},Y,{match:"\\$"+r,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[x]},ue,ce,P,V,{match:/\$[(.]/}]}}const jt="([-+]?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)|NaN|[-+]?Infinity",ei={scope:"number",match:jt,relevance:0};function ni(e){const t={className:"attr",begin:/(("(\\.|[^\\"\r\n])*")|('(\\.|[^\\'\r\n])*'))(?=\s*:)/,relevance:1.01},i={match:/[{}[\],:]/,className:"punctuation",relevance:0},r=["true","false","null"],d={scope:"literal",beginKeywords:r.join(" ")};return{name:"JSON",aliases:["jsonc","json5"],keywords:{literal:r},contains:[t,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,d,ei,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}var Me="[0-9](_*[0-9])*",Ge=`\\.(${Me})`,He="[0-9a-fA-F](_*[0-9a-fA-F])*",ti={className:"number",variants:[{begin:`(\\b(${Me})((${Ge})|\\.)?|(${Ge}))[eE][+-]?(${Me})[fFdD]?\\b`},{begin:`\\b(${Me})((${Ge})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${Ge})[fFdD]?\\b`},{begin:`\\b(${Me})[fFdD]\\b`},{begin:`\\b0[xX]((${He})\\.?|(${He})?\\.(${He}))[pP][+-]?(${Me})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${He})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function ii(e){const t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},i={className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},r={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},d={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},y={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},l={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[y,d]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,y,d]}]};d.contains.push(l);const o={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},_={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(l,{className:"string"}),"self"]}]},u=ti,b=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),h={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},f=h;return f.variants[1].contains=[h],h.variants[1].contains=[f],{name:"Kotlin",aliases:["kt","kts","ktm","ktx"],keywords:t,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,b,i,r,o,_,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:t,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[h,e.C_LINE_COMMENT_MODE,b],relevance:0},e.C_LINE_COMMENT_MODE,b,o,_,l,e.C_NUMBER_MODE]},b]},{begin:[/class|interface|trait/,/\s+/,e.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},o,_]},l,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
|
|
4
4
|
`},u]}}function ai(e){const t={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},i={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t]},r={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[t,i]},d={begin:"^"+e.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},y={className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},l={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[t]};return{name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/,keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"},contains:[e.HASH_COMMENT_MODE,t,i,r,d,y,l]}}function ri(e){const t=e.regex,i={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},r={match:/^ {0,3}([-*_])[ \t]*(?:\1[ \t]*){2,}$/},d={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},y={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},l={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},o=/[A-Za-z][A-Za-z0-9+.-]*/,_={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:t.concat(/\[.+?\]\(/,o,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},u={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},b={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},h=e.inherit(u,{contains:[]}),f=e.inherit(b,{contains:[]});u.contains.push(f),b.contains.push(h);let N=[i,_];return[u,b,h,f].forEach(v=>{v.contains=v.contains.concat(N)}),N=N.concat(u,b),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:N},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:N}]}]},i,y,r,u,b,{className:"quote",begin:"^>\\s+",contains:N,end:"$"},d,_,l,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function si(e){const t=e.regex,i=/(?![A-Za-z0-9])(?![$])/,r=t.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,i),d=t.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,i),y=t.concat(/[A-Z]+/,i),l={scope:"variable",match:"\\$+"+r},o={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},_={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},u=e.inherit(e.APOS_STRING_MODE,{illegal:null}),b=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(_)}),h={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(_),"on:begin":(Y,V)=>{V.data._beginMatch=Y[1]||Y[2]},"on:end":(Y,V)=>{V.data._beginMatch!==Y[1]&&V.ignoreMatch()}},f=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),N=`[
|