codex-chatgpt-control 0.5.1-alpha.4 → 0.5.1-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/contracts/v1/fixtures/doctor-scenario-preflight.json +2 -2
  3. package/dist/codex-chatgpt-control-backend.mjs +576 -289
  4. package/dist/codex-chatgpt-control-live-smoke.bundle.mjs +592 -295
  5. package/dist/codex-chatgpt-control-release-canary.bundle.mjs +592 -295
  6. package/dist/codex-chatgpt-control.bundle.mjs +576 -289
  7. package/dist/src/browser/attach.js +8 -0
  8. package/dist/src/commands/chat-popover.d.ts +3 -0
  9. package/dist/src/commands/chat-popover.js +144 -27
  10. package/dist/src/commands/configuration.js +91 -19
  11. package/dist/src/commands/experience.d.ts +2 -0
  12. package/dist/src/commands/experience.js +52 -9
  13. package/dist/src/commands/files.js +14 -6
  14. package/dist/src/commands/messages.js +49 -3
  15. package/dist/src/commands/modes.js +6 -2
  16. package/dist/src/dom/generation-state.js +19 -4
  17. package/dist/src/dom/locale/am.d.ts +2 -0
  18. package/dist/src/dom/locale/am.js +7 -5
  19. package/dist/src/dom/locale/ar.d.ts +2 -0
  20. package/dist/src/dom/locale/ar.js +4 -2
  21. package/dist/src/dom/locale/bg.d.ts +2 -0
  22. package/dist/src/dom/locale/bg.js +4 -2
  23. package/dist/src/dom/locale/bn.d.ts +2 -0
  24. package/dist/src/dom/locale/bn.js +4 -2
  25. package/dist/src/dom/locale/bs.d.ts +3 -0
  26. package/dist/src/dom/locale/bs.js +10 -7
  27. package/dist/src/dom/locale/ca.d.ts +3 -0
  28. package/dist/src/dom/locale/ca.js +4 -1
  29. package/dist/src/dom/locale/cs.d.ts +3 -0
  30. package/dist/src/dom/locale/cs.js +7 -4
  31. package/dist/src/dom/locale/da.d.ts +3 -0
  32. package/dist/src/dom/locale/da.js +7 -4
  33. package/dist/src/dom/locale/de.d.ts +2 -0
  34. package/dist/src/dom/locale/de.js +4 -2
  35. package/dist/src/dom/locale/el.d.ts +2 -0
  36. package/dist/src/dom/locale/el.js +7 -5
  37. package/dist/src/dom/locale/en.d.ts +4 -3
  38. package/dist/src/dom/locale/en.js +4 -3
  39. package/dist/src/dom/locale/es-419.d.ts +2 -0
  40. package/dist/src/dom/locale/es-419.js +4 -2
  41. package/dist/src/dom/locale/es-ES.d.ts +2 -0
  42. package/dist/src/dom/locale/es-ES.js +4 -2
  43. package/dist/src/dom/locale/et.d.ts +2 -0
  44. package/dist/src/dom/locale/et.js +7 -5
  45. package/dist/src/dom/locale/fa.d.ts +2 -0
  46. package/dist/src/dom/locale/fa.js +4 -2
  47. package/dist/src/dom/locale/fi.d.ts +2 -0
  48. package/dist/src/dom/locale/fi.js +4 -2
  49. package/dist/src/dom/locale/fr-CA.d.ts +6 -0
  50. package/dist/src/dom/locale/fr-CA.js +7 -1
  51. package/dist/src/dom/locale/fr-FR.d.ts +2 -0
  52. package/dist/src/dom/locale/fr-FR.js +9 -7
  53. package/dist/src/dom/locale/gu.d.ts +2 -0
  54. package/dist/src/dom/locale/gu.js +7 -5
  55. package/dist/src/dom/locale/hi.d.ts +2 -0
  56. package/dist/src/dom/locale/hi.js +9 -7
  57. package/dist/src/dom/locale/hr.d.ts +3 -0
  58. package/dist/src/dom/locale/hr.js +4 -1
  59. package/dist/src/dom/locale/hu.d.ts +2 -0
  60. package/dist/src/dom/locale/hu.js +4 -2
  61. package/dist/src/dom/locale/hy.d.ts +2 -0
  62. package/dist/src/dom/locale/hy.js +4 -2
  63. package/dist/src/dom/locale/id.d.ts +3 -0
  64. package/dist/src/dom/locale/id.js +4 -1
  65. package/dist/src/dom/locale/index.d.ts +11 -0
  66. package/dist/src/dom/locale/index.js +19 -0
  67. package/dist/src/dom/locale/is.d.ts +2 -0
  68. package/dist/src/dom/locale/is.js +4 -2
  69. package/dist/src/dom/locale/it.d.ts +2 -0
  70. package/dist/src/dom/locale/it.js +7 -5
  71. package/dist/src/dom/locale/ja.d.ts +2 -0
  72. package/dist/src/dom/locale/ja.js +8 -6
  73. package/dist/src/dom/locale/ka.d.ts +2 -0
  74. package/dist/src/dom/locale/ka.js +4 -2
  75. package/dist/src/dom/locale/kk.d.ts +2 -0
  76. package/dist/src/dom/locale/kk.js +8 -6
  77. package/dist/src/dom/locale/kn.d.ts +3 -0
  78. package/dist/src/dom/locale/kn.js +8 -5
  79. package/dist/src/dom/locale/ko.d.ts +2 -0
  80. package/dist/src/dom/locale/ko.js +4 -2
  81. package/dist/src/dom/locale/lt.d.ts +2 -0
  82. package/dist/src/dom/locale/lt.js +5 -3
  83. package/dist/src/dom/locale/lv.d.ts +2 -0
  84. package/dist/src/dom/locale/lv.js +4 -2
  85. package/dist/src/dom/locale/mk.d.ts +2 -0
  86. package/dist/src/dom/locale/mk.js +4 -2
  87. package/dist/src/dom/locale/ml.d.ts +2 -0
  88. package/dist/src/dom/locale/ml.js +7 -5
  89. package/dist/src/dom/locale/mn.d.ts +2 -0
  90. package/dist/src/dom/locale/mn.js +4 -2
  91. package/dist/src/dom/locale/mr.d.ts +2 -0
  92. package/dist/src/dom/locale/mr.js +7 -5
  93. package/dist/src/dom/locale/ms.d.ts +3 -0
  94. package/dist/src/dom/locale/ms.js +4 -1
  95. package/dist/src/dom/locale/my.d.ts +2 -0
  96. package/dist/src/dom/locale/my.js +4 -2
  97. package/dist/src/dom/locale/nb.d.ts +2 -0
  98. package/dist/src/dom/locale/nb.js +4 -2
  99. package/dist/src/dom/locale/nl.d.ts +3 -0
  100. package/dist/src/dom/locale/nl.js +4 -1
  101. package/dist/src/dom/locale/pa.d.ts +2 -0
  102. package/dist/src/dom/locale/pa.js +4 -2
  103. package/dist/src/dom/locale/pl.d.ts +3 -0
  104. package/dist/src/dom/locale/pl.js +4 -1
  105. package/dist/src/dom/locale/pt-BR.d.ts +2 -0
  106. package/dist/src/dom/locale/pt-BR.js +11 -9
  107. package/dist/src/dom/locale/pt-PT.d.ts +2 -0
  108. package/dist/src/dom/locale/pt-PT.js +7 -5
  109. package/dist/src/dom/locale/ro.d.ts +3 -0
  110. package/dist/src/dom/locale/ro.js +4 -1
  111. package/dist/src/dom/locale/ru.d.ts +2 -0
  112. package/dist/src/dom/locale/ru.js +4 -2
  113. package/dist/src/dom/locale/sk.d.ts +3 -0
  114. package/dist/src/dom/locale/sk.js +4 -1
  115. package/dist/src/dom/locale/sl.d.ts +3 -0
  116. package/dist/src/dom/locale/sl.js +4 -1
  117. package/dist/src/dom/locale/so.d.ts +2 -0
  118. package/dist/src/dom/locale/so.js +4 -2
  119. package/dist/src/dom/locale/sq.d.ts +2 -0
  120. package/dist/src/dom/locale/sq.js +4 -2
  121. package/dist/src/dom/locale/sr.d.ts +2 -0
  122. package/dist/src/dom/locale/sr.js +4 -2
  123. package/dist/src/dom/locale/sv.d.ts +2 -0
  124. package/dist/src/dom/locale/sv.js +4 -2
  125. package/dist/src/dom/locale/sw.d.ts +2 -0
  126. package/dist/src/dom/locale/sw.js +5 -3
  127. package/dist/src/dom/locale/ta.d.ts +2 -0
  128. package/dist/src/dom/locale/ta.js +8 -6
  129. package/dist/src/dom/locale/te.d.ts +2 -0
  130. package/dist/src/dom/locale/te.js +7 -5
  131. package/dist/src/dom/locale/th.d.ts +2 -0
  132. package/dist/src/dom/locale/th.js +4 -2
  133. package/dist/src/dom/locale/tl.d.ts +3 -0
  134. package/dist/src/dom/locale/tl.js +4 -1
  135. package/dist/src/dom/locale/tr.d.ts +3 -0
  136. package/dist/src/dom/locale/tr.js +4 -1
  137. package/dist/src/dom/locale/types.d.ts +6 -0
  138. package/dist/src/dom/locale/uk.d.ts +2 -0
  139. package/dist/src/dom/locale/uk.js +7 -5
  140. package/dist/src/dom/locale/ur.d.ts +2 -0
  141. package/dist/src/dom/locale/ur.js +4 -2
  142. package/dist/src/dom/locale/vi.d.ts +2 -0
  143. package/dist/src/dom/locale/vi.js +4 -2
  144. package/dist/src/dom/locale/zh-HK.d.ts +2 -0
  145. package/dist/src/dom/locale/zh-HK.js +4 -2
  146. package/dist/src/dom/locale/zh-Hans.d.ts +2 -0
  147. package/dist/src/dom/locale/zh-Hans.js +7 -5
  148. package/dist/src/dom/locale/zh-TW.d.ts +2 -0
  149. package/dist/src/dom/locale/zh-TW.js +6 -4
  150. package/dist/src/dom/locale-labels.d.ts +1 -1
  151. package/dist/src/dom/locale-labels.js +1 -1
  152. package/dist/src/dom/message-format.js +17 -2
  153. package/dist/src/dom/messages.js +38 -11
  154. package/dist/src/dom/selectors.d.ts +3 -2
  155. package/dist/src/dom/selectors.js +5 -7
  156. package/dist/src/dom/wait-snapshot.js +24 -5
  157. package/dist/src/safety/blockers.js +1 -1
  158. package/dist/src/scripts/apply-intelligence-locale-captures.js +15 -6
  159. package/dist/src/scripts/capture-intelligence-locales.d.ts +5 -3
  160. package/dist/src/scripts/capture-intelligence-locales.js +185 -2
  161. package/dist/src/scripts/live-smoke/scenarios.d.ts +1 -0
  162. package/dist/src/scripts/live-smoke/scenarios.js +22 -6
  163. package/dist/src/scripts/locale-capture/slider-label.d.ts +1 -0
  164. package/dist/src/scripts/locale-capture/slider-label.js +14 -0
  165. package/dist/src/types.d.ts +2 -0
  166. package/package.json +1 -1
  167. package/references/backend-protocol.md +23 -0
  168. package/references/localization.md +15 -0
  169. package/references/python-parity.md +11 -0
@@ -189,7 +189,7 @@ var RULES = [
189
189
  {
190
190
  kind: "not_found",
191
191
  message: "The requested ChatGPT conversation or page was not found.",
192
- patterns: [/conversation not found/i, /404/i, /page not found/i]
192
+ patterns: [/conversation not found/i, /\b404\b/i, /page not found/i]
193
193
  }
194
194
  ];
195
195
  function classifyVisibleText(text) {
@@ -215,9 +215,10 @@ function classifyVisibleText(text) {
215
215
  var en = {
216
216
  // --- Primary interaction path (accessible names) ---
217
217
  composerTextbox: ["Chat with ChatGPT", "Ask ChatGPT"],
218
- workComposerTextbox: ["Work on anything", "Work on something"],
218
+ workComposerTextbox: ["Work on anything", "Work on something", "Work with ChatGPT"],
219
+ projectComposerPrefixes: ["New chat in"],
219
220
  newWork: ["Work on something else", "New work", "New task"],
220
- sendButton: ["Send prompt"],
221
+ sendButton: ["Send prompt", "Send"],
221
222
  searchChatsButton: ["Search chats"],
222
223
  searchChatsPlaceholder: ["Search chats..."],
223
224
  newChat: ["New chat"],
@@ -290,7 +291,7 @@ var en = {
290
291
  /** Exact-match transient assistant placeholders filtered out of captured responses. */
291
292
  transientAssistant: ["thinking", "reasoning", "searching", "searching the web"],
292
293
  /** Streaming "stop" control text, matched while a response generates. */
293
- stopControl: ["stop generating", "stop streaming", "stop answering"],
294
+ stopControl: ["stop generating", "stop streaming", "stop answering", "stop"],
294
295
  /** Interrupted generation markers shown after the assistant stops before completion. */
295
296
  stoppedAssistant: ["stopped thinking", "stopped answering", "generation stopped"],
296
297
  /** Response-action affordance text (fallback to the structural copy-button locator). */
@@ -308,8 +309,8 @@ var en = {
308
309
  var de = {
309
310
  configurationAxes: {
310
311
  power: ["Leistung"],
311
- model: ["Modell"],
312
- effort: ["Aufwand", "Denkaufwand"],
312
+ model: ["Modell", "Modell ausw\xE4hlen"],
313
+ effort: ["Aufwand", "Denkaufwand", "Leistung"],
313
314
  speed: ["Tempo"],
314
315
  advanced: ["Erweitert"]
315
316
  },
@@ -351,8 +352,8 @@ var de = {
351
352
  var esES = {
352
353
  configurationAxes: {
353
354
  power: ["Potencia"],
354
- model: ["Modelo"],
355
- effort: ["Esfuerzo"],
355
+ model: ["Modelo", "Seleccionar modelo"],
356
+ effort: ["Esfuerzo", "Potencia"],
356
357
  speed: ["Velocidad"],
357
358
  advanced: ["Avanzadas"]
358
359
  },
@@ -397,17 +398,17 @@ var esES = {
397
398
  var frFR = {
398
399
  configurationAxes: {
399
400
  power: ["Puissance"],
400
- model: ["Mod\xE8le"],
401
- effort: ["Niveau"],
401
+ model: ["Mod\xE8le", "S\xE9lectionner le mod\xE8le"],
402
+ effort: ["Niveau", "Puissance"],
402
403
  speed: ["Vitesse"],
403
404
  advanced: ["Avanc\xE9"]
404
405
  },
405
406
  configurationOptions: {
406
407
  instant: ["Instantan\xE9"],
407
408
  light: ["Minimal"],
408
- medium: ["Moyenne"],
409
- high: ["\xC9lev\xE9e"],
410
- extraHigh: ["Tr\xE8s \xE9lev\xE9e"],
409
+ medium: ["Moyenne", "Moyen"],
410
+ high: ["\xC9lev\xE9e", "\xC9lev\xE9"],
411
+ extraHigh: ["Tr\xE8s \xE9lev\xE9e", "Tr\xE8s \xE9lev\xE9"],
411
412
  max: ["Maximum"],
412
413
  fast: ["Rapide"]
413
414
  },
@@ -420,11 +421,11 @@ var frFR = {
420
421
  addFilesOpenerCandidates: ["Ajouter des fichiers et plus encore"],
421
422
  addPhotosFilesMenuItem: ["Ajouter des photos et fichiers"],
422
423
  copyResponse: ["Copier la r\xE9ponse"],
423
- modeLabels: ["Moyen", "Avanc\xE9", "Tr\xE8s \xE9lev\xE9", "Instantan\xE9e", "Moyenne", "\xC9lev\xE9e", "Tr\xE8s \xE9lev\xE9e", "Instantan\xE9"],
424
+ modeLabels: ["Moyen", "Avanc\xE9", "Tr\xE8s \xE9lev\xE9", "Instantan\xE9e", "Moyenne", "\xC9lev\xE9e", "Tr\xE8s \xE9lev\xE9e", "Instantan\xE9", "\xC9lev\xE9"],
424
425
  modeOptions: {
425
426
  instant: ["Instantan\xE9e", "Instantan\xE9"],
426
427
  medium: ["Moyen", "Moyenne"],
427
- high: ["Avanc\xE9", "\xC9lev\xE9e"],
428
+ high: ["Avanc\xE9", "\xC9lev\xE9e", "\xC9lev\xE9"],
428
429
  extraHigh: ["Tr\xE8s \xE9lev\xE9", "Tr\xE8s \xE9lev\xE9e"]
429
430
  },
430
431
  modeOpenerExtra: ["Configurer"],
@@ -442,8 +443,8 @@ var frFR = {
442
443
  var zhHK = {
443
444
  configurationAxes: {
444
445
  power: ["\u667A\u80FD\u5F37\u5EA6"],
445
- model: ["\u6A21\u578B"],
446
- effort: ["\u63A8\u7406\u5F37\u5EA6"],
446
+ model: ["\u6A21\u578B", "\u9078\u64C7\u6A21\u578B"],
447
+ effort: ["\u63A8\u7406\u5F37\u5EA6", "\u667A\u80FD\u5F37\u5EA6"],
447
448
  speed: ["\u56DE\u61C9\u901F\u5EA6"],
448
449
  advanced: ["\u9032\u968E"]
449
450
  },
@@ -492,8 +493,8 @@ var zhHK = {
492
493
  var zhTW = {
493
494
  configurationAxes: {
494
495
  power: ["\u80FD\u529B"],
495
- model: ["\u6A21\u578B"],
496
- effort: ["\u63A8\u7406\u5F37\u5EA6"],
496
+ model: ["\u6A21\u578B", "\u9078\u53D6\u6A21\u578B"],
497
+ effort: ["\u63A8\u7406\u5F37\u5EA6", "\u80FD\u529B"],
497
498
  speed: ["\u901F\u5EA6"],
498
499
  advanced: ["\u9032\u968E"]
499
500
  },
@@ -517,12 +518,12 @@ var zhTW = {
517
518
  addFilesOpenerCandidates: ["\u65B0\u589E\u6A94\u6848\u7B49\u66F4\u591A\u529F\u80FD"],
518
519
  addPhotosFilesMenuItem: ["\u65B0\u589E\u7167\u7247\u548C\u6A94\u6848"],
519
520
  copyResponse: ["\u8907\u88FD\u56DE\u61C9"],
520
- modeLabels: ["\u5373\u6642", "\u4E2D\u7B49", "\u9AD8", "\u8D85\u9AD8", "\u5C08\u696D", "\u4E2D"],
521
+ modeLabels: ["\u5373\u6642", "\u4E2D\u7B49", "\u9AD8", "\u8D85\u9AD8", "\u5C08\u696D", "\u4E2D", "\u6975\u9AD8"],
521
522
  modeOptions: {
522
523
  instant: ["\u5373\u6642"],
523
524
  medium: ["\u4E2D\u7B49", "\u4E2D"],
524
525
  high: ["\u9AD8"],
525
- extraHigh: ["\u8D85\u9AD8"],
526
+ extraHigh: ["\u8D85\u9AD8", "\u6975\u9AD8"],
526
527
  pro: ["\u5C08\u696D"]
527
528
  },
528
529
  modeOpenerExtra: ["\u8A2D\u5B9A"],
@@ -544,8 +545,8 @@ var zhTW = {
544
545
  var ja = {
545
546
  configurationAxes: {
546
547
  power: ["\u30D1\u30EF\u30FC"],
547
- model: ["\u30E2\u30C7\u30EB"],
548
- effort: ["\u601D\u8003\u30EC\u30D9\u30EB", "\u63A8\u8AD6\u30EC\u30D9\u30EB"],
548
+ model: ["\u30E2\u30C7\u30EB", "\u30E2\u30C7\u30EB\u3092\u9078\u629E"],
549
+ effort: ["\u601D\u8003\u30EC\u30D9\u30EB", "\u63A8\u8AD6\u30EC\u30D9\u30EB", "\u30D1\u30EF\u30FC"],
549
550
  speed: ["\u901F\u5EA6"],
550
551
  advanced: ["\u8A73\u7D30\u8A2D\u5B9A"]
551
552
  },
@@ -553,8 +554,8 @@ var ja = {
553
554
  instant: ["\u6700\u901F"],
554
555
  light: ["\u8EFD"],
555
556
  medium: ["\u4E2D\u7A0B\u5EA6"],
556
- high: ["\u9AD8\u3044"],
557
- extraHigh: ["\u975E\u5E38\u306B\u9AD8\u3044"],
557
+ high: ["\u9AD8\u3044", "\u9AD8"],
558
+ extraHigh: ["\u975E\u5E38\u306B\u9AD8\u3044", "\u6975\u9AD8"],
558
559
  max: ["\u6700\u5927"],
559
560
  ultra: ["\u30A6\u30EB\u30C8\u30E9"],
560
561
  standard: ["\u6A19\u6E96"],
@@ -569,12 +570,12 @@ var ja = {
569
570
  addFilesOpenerCandidates: ["\u30D5\u30A1\u30A4\u30EB\u306E\u8FFD\u52A0\u306A\u3069"],
570
571
  addPhotosFilesMenuItem: ["\u5199\u771F\u3068\u30D5\u30A1\u30A4\u30EB\u3092\u8FFD\u52A0"],
571
572
  copyResponse: ["\u56DE\u7B54\u3092\u30B3\u30D4\u30FC\u3059\u308B"],
572
- modeLabels: ["\u6700\u901F", "\u6A19\u6E96", "\u9AD8", "\u6700\u9AD8", "\u4E2D\u7A0B\u5EA6", "\u9AD8\u3044", "\u975E\u5E38\u306B\u9AD8\u3044"],
573
+ modeLabels: ["\u6700\u901F", "\u6A19\u6E96", "\u9AD8", "\u6700\u9AD8", "\u4E2D\u7A0B\u5EA6", "\u9AD8\u3044", "\u975E\u5E38\u306B\u9AD8\u3044", "\u6975\u9AD8"],
573
574
  modeOptions: {
574
575
  instant: ["\u6700\u901F"],
575
576
  medium: ["\u6A19\u6E96", "\u4E2D\u7A0B\u5EA6"],
576
577
  high: ["\u9AD8", "\u9AD8\u3044"],
577
- extraHigh: ["\u6700\u9AD8", "\u975E\u5E38\u306B\u9AD8\u3044"]
578
+ extraHigh: ["\u6700\u9AD8", "\u975E\u5E38\u306B\u9AD8\u3044", "\u6975\u9AD8"]
578
579
  },
579
580
  modeOpenerExtra: ["\u8A2D\u5B9A\u3059\u308B"],
580
581
  tools: {
@@ -590,13 +591,13 @@ var ja = {
590
591
  var it = {
591
592
  configurationAxes: {
592
593
  power: ["Potenza"],
593
- model: ["Modello"],
594
- effort: ["Sforzo"],
594
+ model: ["Modello", "Seleziona modello"],
595
+ effort: ["Sforzo", "Potenza"],
595
596
  speed: ["Velocit\xE0"],
596
597
  advanced: ["Avanzate"]
597
598
  },
598
599
  configurationOptions: {
599
- instant: ["Istantaneo"],
600
+ instant: ["Istantaneo", "Immediato"],
600
601
  medium: ["Medio"],
601
602
  high: ["Alto"],
602
603
  extraHigh: ["Molto alto"],
@@ -611,9 +612,9 @@ var it = {
611
612
  addFilesOpenerCandidates: ["Aggiungi file e altro"],
612
613
  addPhotosFilesMenuItem: ["Aggiungi foto e file"],
613
614
  copyResponse: ["Copia risposta"],
614
- modeLabels: ["Istantanea", "Media", "Alta", "Extra elevata", "Medio", "Alto", "Molto alto", "Istantaneo"],
615
+ modeLabels: ["Istantanea", "Media", "Alta", "Extra elevata", "Medio", "Alto", "Molto alto", "Istantaneo", "Immediato"],
615
616
  modeOptions: {
616
- instant: ["Istantanea", "Istantaneo"],
617
+ instant: ["Istantanea", "Istantaneo", "Immediato"],
617
618
  medium: ["Media", "Medio"],
618
619
  high: ["Alta", "Alto"],
619
620
  extraHigh: ["Extra elevata", "Molto alto"]
@@ -632,8 +633,8 @@ var it = {
632
633
  var vi = {
633
634
  configurationAxes: {
634
635
  power: ["S\u1EE9c m\u1EA1nh"],
635
- model: ["M\xF4 h\xECnh"],
636
- effort: ["M\u1EE9c \u0111\u1ED9", "M\u1EE9c suy lu\u1EADn"],
636
+ model: ["M\xF4 h\xECnh", "Ch\u1ECDn m\xF4 h\xECnh"],
637
+ effort: ["M\u1EE9c \u0111\u1ED9", "M\u1EE9c suy lu\u1EADn", "S\u1EE9c m\u1EA1nh"],
637
638
  speed: ["T\u1ED1c \u0111\u1ED9"],
638
639
  advanced: ["N\xE2ng cao"]
639
640
  },
@@ -682,13 +683,13 @@ var vi = {
682
683
  var am = {
683
684
  configurationAxes: {
684
685
  power: ["\u12A0\u1245\u121D"],
685
- model: ["\u121E\u12F4\u120D"],
686
- effort: ["\u1325\u1228\u1275"],
686
+ model: ["\u121E\u12F4\u120D", "\u121E\u12F4\u120D \u12ED\u121D\u1228\u1321"],
687
+ effort: ["\u1325\u1228\u1275", "\u12A0\u1245\u121D"],
687
688
  speed: ["\u134D\u1325\u1290\u1275"],
688
689
  advanced: ["\u12E8\u120B\u1240"]
689
690
  },
690
691
  configurationOptions: {
691
- instant: ["\u1348\u1323\u1295"],
692
+ instant: ["\u1348\u1323\u1295", "\u1245\u133D\u1260\u1273\u12CA"],
692
693
  light: ["\u1240\u120B\u120D"],
693
694
  medium: ["\u1218\u12AB\u12A8\u1208\u129B"],
694
695
  high: ["\u12A8\u134D\u1270\u129B"],
@@ -707,9 +708,9 @@ var am = {
707
708
  addFilesOpenerCandidates: ["\u134B\u12ED\u120E\u127D\u1295 \u12EB\u12AD\u1209 \u12A5\u1293 \u120C\u120E\u127D\u121D"],
708
709
  addPhotosFilesMenuItem: ["\u134E\u1276\u12CE\u127D\u1295 \u12A5\u1293 \u134B\u12ED\u120E\u127D\u1295 \u12EB\u12AD\u1209"],
709
710
  copyResponse: ["\u121D\u120B\u1239\u1295 \u12ED\u1245\u12F1"],
710
- modeLabels: ["\u1348\u1323\u1295", "\u1218\u12AB\u12A8\u1208\u129B", "\u12A8\u134D\u1270\u129B", "\u12A5\u1305\u130D \u12A8\u134D\u1270\u129B"],
711
+ modeLabels: ["\u1348\u1323\u1295", "\u1218\u12AB\u12A8\u1208\u129B", "\u12A8\u134D\u1270\u129B", "\u12A5\u1305\u130D \u12A8\u134D\u1270\u129B", "\u1245\u133D\u1260\u1273\u12CA"],
711
712
  modeOptions: {
712
- instant: ["\u1348\u1323\u1295"],
713
+ instant: ["\u1348\u1323\u1295", "\u1245\u133D\u1260\u1273\u12CA"],
713
714
  medium: ["\u1218\u12AB\u12A8\u1208\u129B"],
714
715
  high: ["\u12A8\u134D\u1270\u129B"],
715
716
  extraHigh: ["\u12A5\u1305\u130D \u12A8\u134D\u1270\u129B"]
@@ -733,8 +734,8 @@ var am = {
733
734
  var ar = {
734
735
  configurationAxes: {
735
736
  power: ["\u0627\u0644\u0642\u062F\u0631\u0629"],
736
- model: ["\u0627\u0644\u0646\u0645\u0648\u0630\u062C"],
737
- effort: ["\u0627\u0644\u062C\u0647\u062F"],
737
+ model: ["\u0627\u0644\u0646\u0645\u0648\u0630\u062C", "\u0627\u062E\u062A\u0631 \u0627\u0644\u0646\u0645\u0648\u0630\u062C"],
738
+ effort: ["\u0627\u0644\u062C\u0647\u062F", "\u0627\u0644\u0642\u062F\u0631\u0629"],
738
739
  speed: ["\u0627\u0644\u0633\u0631\u0639\u0629"],
739
740
  advanced: ["\u0645\u062A\u0642\u062F\u0645"]
740
741
  },
@@ -783,8 +784,8 @@ var ar = {
783
784
  var bg = {
784
785
  configurationAxes: {
785
786
  power: ["\u041C\u043E\u0449\u043D\u043E\u0441\u0442"],
786
- model: ["\u041C\u043E\u0434\u0435\u043B"],
787
- effort: ["\u0423\u0441\u0438\u043B\u0438\u0435"],
787
+ model: ["\u041C\u043E\u0434\u0435\u043B", "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043C\u043E\u0434\u0435\u043B"],
788
+ effort: ["\u0423\u0441\u0438\u043B\u0438\u0435", "\u041C\u043E\u0449\u043D\u043E\u0441\u0442"],
788
789
  speed: ["\u0421\u043A\u043E\u0440\u043E\u0441\u0442"],
789
790
  advanced: ["\u0420\u0430\u0437\u0448\u0438\u0440\u0435\u043D\u0438"]
790
791
  },
@@ -831,16 +832,17 @@ var bg = {
831
832
  var bs = {
832
833
  configurationAxes: {
833
834
  power: ["Snaga"],
834
- effort: ["Napor"],
835
+ model: ["Odaberi model"],
836
+ effort: ["Napor", "Snaga"],
835
837
  speed: ["Brzina"],
836
838
  advanced: ["Napredno"]
837
839
  },
838
840
  configurationOptions: {
839
841
  instant: ["Brzo"],
840
842
  light: ["Lagano"],
841
- medium: ["Srednja"],
842
- high: ["Visoka"],
843
- extraHigh: ["Veoma visoka"],
843
+ medium: ["Srednja", "Srednji"],
844
+ high: ["Visoka", "Visoki"],
845
+ extraHigh: ["Veoma visoka", "Veoma visoki"],
844
846
  max: ["Maks."],
845
847
  standard: ["Standardno"],
846
848
  fast: ["Brzo"]
@@ -854,12 +856,12 @@ var bs = {
854
856
  addFilesOpenerCandidates: ["Otpremite datoteke i jo\u0161 mnogo toga"],
855
857
  addPhotosFilesMenuItem: ["Dodaj slike i datoteke"],
856
858
  copyResponse: ["Kopiraj odgovor"],
857
- modeLabels: ["Brzo", "Srednji", "Visoko", "Vrlo visoko", "Srednja", "Visoka", "Veoma visoka"],
859
+ modeLabels: ["Brzo", "Srednji", "Visoko", "Vrlo visoko", "Srednja", "Visoka", "Veoma visoka", "Visoki", "Veoma visoki"],
858
860
  modeOptions: {
859
861
  instant: ["Brzo"],
860
862
  medium: ["Srednji", "Srednja"],
861
- high: ["Visoko", "Visoka"],
862
- extraHigh: ["Vrlo visoko", "Veoma visoka"]
863
+ high: ["Visoko", "Visoka", "Visoki"],
864
+ extraHigh: ["Vrlo visoko", "Veoma visoka", "Veoma visoki"]
863
865
  },
864
866
  modeOpenerExtra: ["Podesi"],
865
867
  tools: {
@@ -876,7 +878,8 @@ var bs = {
876
878
  var ca = {
877
879
  configurationAxes: {
878
880
  power: ["Pot\xE8ncia"],
879
- effort: ["Esfor\xE7"],
881
+ model: ["Selecciona un model"],
882
+ effort: ["Esfor\xE7", "Pot\xE8ncia"],
880
883
  speed: ["Velocitat"],
881
884
  advanced: ["Avan\xE7ades"]
882
885
  },
@@ -924,12 +927,13 @@ var ca = {
924
927
  var cs = {
925
928
  configurationAxes: {
926
929
  power: ["V\xFDkon"],
927
- effort: ["\xDAsil\xED", "M\xEDra \xFAsil\xED"],
930
+ model: ["Vyberte model"],
931
+ effort: ["\xDAsil\xED", "M\xEDra \xFAsil\xED", "V\xFDkon"],
928
932
  speed: ["Rychlost"],
929
933
  advanced: ["Pokro\u010Dil\xE9"]
930
934
  },
931
935
  configurationOptions: {
932
- instant: ["Okam\u017Eit\xE1"],
936
+ instant: ["Okam\u017Eit\xE1", "Instantn\xED"],
933
937
  light: ["N\xEDzk\xE1"],
934
938
  medium: ["St\u0159edn\xED"],
935
939
  high: ["Vysok\xE1"],
@@ -947,9 +951,9 @@ var cs = {
947
951
  addFilesOpenerCandidates: ["P\u0159id\xE1v\xE1n\xED soubor\u016F a dal\u0161\xED"],
948
952
  addPhotosFilesMenuItem: ["P\u0159idat fotografie a soubory"],
949
953
  copyResponse: ["Zkop\xEDrovat odpov\u011B\u010F"],
950
- modeLabels: ["Okam\u017Eit\xE1", "St\u0159edn\xED", "Vysok\xE1", "Velmi vysok\xE1"],
954
+ modeLabels: ["Okam\u017Eit\xE1", "St\u0159edn\xED", "Vysok\xE1", "Velmi vysok\xE1", "Instantn\xED"],
951
955
  modeOptions: {
952
- instant: ["Okam\u017Eit\xE1"],
956
+ instant: ["Okam\u017Eit\xE1", "Instantn\xED"],
953
957
  medium: ["St\u0159edn\xED"],
954
958
  high: ["Vysok\xE1"],
955
959
  extraHigh: ["Velmi vysok\xE1"]
@@ -969,12 +973,13 @@ var cs = {
969
973
  var da = {
970
974
  configurationAxes: {
971
975
  power: ["Styrke"],
972
- effort: ["Indsats", "T\xE6nkeindsats"],
976
+ model: ["V\xE6lg model"],
977
+ effort: ["Indsats", "T\xE6nkeindsats", "Styrke"],
973
978
  speed: ["Hastighed"],
974
979
  advanced: ["Avanceret"]
975
980
  },
976
981
  configurationOptions: {
977
- instant: ["\xD8jeblikkeligt"],
982
+ instant: ["\xD8jeblikkeligt", "\xD8jeblikkelig"],
978
983
  light: ["Let"],
979
984
  medium: ["Mellem"],
980
985
  high: ["H\xF8j"],
@@ -991,9 +996,9 @@ var da = {
991
996
  addFilesOpenerCandidates: ["Tilf\xF8j filer og mere"],
992
997
  addPhotosFilesMenuItem: ["Tilf\xF8j billeder og filer"],
993
998
  copyResponse: ["Kopi\xE9r svar"],
994
- modeLabels: ["\xD8jeblikkeligt", "H\xF8j", "Ekstra h\xF8j", "Mellem"],
999
+ modeLabels: ["\xD8jeblikkeligt", "H\xF8j", "Ekstra h\xF8j", "Mellem", "\xD8jeblikkelig"],
995
1000
  modeOptions: {
996
- instant: ["\xD8jeblikkeligt"],
1001
+ instant: ["\xD8jeblikkeligt", "\xD8jeblikkelig"],
997
1002
  medium: ["Mellem"],
998
1003
  high: ["H\xF8j"],
999
1004
  extraHigh: ["Ekstra h\xF8j"]
@@ -1013,13 +1018,13 @@ var da = {
1013
1018
  var el = {
1014
1019
  configurationAxes: {
1015
1020
  power: ["\u0399\u03C3\u03C7\u03CD\u03C2"],
1016
- model: ["\u039C\u03BF\u03BD\u03C4\u03AD\u03BB\u03BF"],
1017
- effort: ["\u03A0\u03C1\u03BF\u03C3\u03C0\u03AC\u03B8\u03B5\u03B9\u03B1", "\u0395\u03C0\u03AF\u03C0\u03B5\u03B4\u03BF \u03C3\u03C5\u03BB\u03BB\u03BF\u03B3\u03B9\u03C3\u03BC\u03BF\u03CD"],
1021
+ model: ["\u039C\u03BF\u03BD\u03C4\u03AD\u03BB\u03BF", "\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03BC\u03BF\u03BD\u03C4\u03AD\u03BB\u03BF\u03C5"],
1022
+ effort: ["\u03A0\u03C1\u03BF\u03C3\u03C0\u03AC\u03B8\u03B5\u03B9\u03B1", "\u0395\u03C0\u03AF\u03C0\u03B5\u03B4\u03BF \u03C3\u03C5\u03BB\u03BB\u03BF\u03B3\u03B9\u03C3\u03BC\u03BF\u03CD", "\u0399\u03C3\u03C7\u03CD\u03C2"],
1018
1023
  speed: ["\u03A4\u03B1\u03C7\u03CD\u03C4\u03B7\u03C4\u03B1"],
1019
1024
  advanced: ["\u0393\u03B9\u03B1 \u03C0\u03C1\u03BF\u03C7\u03C9\u03C1\u03B7\u03BC\u03AD\u03BD\u03BF\u03C5\u03C2"]
1020
1025
  },
1021
1026
  configurationOptions: {
1022
- instant: ["\u0386\u03BC\u03B5\u03C3\u03B7"],
1027
+ instant: ["\u0386\u03BC\u03B5\u03C3\u03B7", "\u0393\u03C1\u03AE\u03B3\u03BF\u03C1\u03BF"],
1023
1028
  light: ["\u0395\u03BB\u03B1\u03C6\u03C1\u03B9\u03AC"],
1024
1029
  medium: ["\u039C\u03B5\u03C3\u03B1\u03AF\u03BF"],
1025
1030
  high: ["\u03A5\u03C8\u03B7\u03BB\u03CC"],
@@ -1037,9 +1042,9 @@ var el = {
1037
1042
  addFilesOpenerCandidates: ["\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD \u03BA\u03B1\u03B9 \u03AC\u03BB\u03BB\u03B1"],
1038
1043
  addPhotosFilesMenuItem: ["\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C6\u03C9\u03C4\u03BF\u03B3\u03C1\u03B1\u03C6\u03B9\u03CE\u03BD & \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD"],
1039
1044
  copyResponse: ["\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03B1\u03C0\u03AC\u03BD\u03C4\u03B7\u03C3\u03B7\u03C2"],
1040
- modeLabels: ["\u0386\u03BC\u03B5\u03C3\u03B7", "\u039C\u03B5\u03C3\u03B1\u03AF\u03B1", "\u03A5\u03C8\u03B7\u03BB\u03AE", "\u03A0\u03BF\u03BB\u03CD \u03C5\u03C8\u03B7\u03BB\u03CC", "\u039C\u03B5\u03C3\u03B1\u03AF\u03BF", "\u03A5\u03C8\u03B7\u03BB\u03CC"],
1045
+ modeLabels: ["\u0386\u03BC\u03B5\u03C3\u03B7", "\u039C\u03B5\u03C3\u03B1\u03AF\u03B1", "\u03A5\u03C8\u03B7\u03BB\u03AE", "\u03A0\u03BF\u03BB\u03CD \u03C5\u03C8\u03B7\u03BB\u03CC", "\u039C\u03B5\u03C3\u03B1\u03AF\u03BF", "\u03A5\u03C8\u03B7\u03BB\u03CC", "\u0393\u03C1\u03AE\u03B3\u03BF\u03C1\u03BF"],
1041
1046
  modeOptions: {
1042
- instant: ["\u0386\u03BC\u03B5\u03C3\u03B7"],
1047
+ instant: ["\u0386\u03BC\u03B5\u03C3\u03B7", "\u0393\u03C1\u03AE\u03B3\u03BF\u03C1\u03BF"],
1043
1048
  medium: ["\u039C\u03B5\u03C3\u03B1\u03AF\u03B1", "\u039C\u03B5\u03C3\u03B1\u03AF\u03BF"],
1044
1049
  high: ["\u03A5\u03C8\u03B7\u03BB\u03AE", "\u03A5\u03C8\u03B7\u03BB\u03CC"],
1045
1050
  extraHigh: ["\u03A0\u03BF\u03BB\u03CD \u03C5\u03C8\u03B7\u03BB\u03CC"]
@@ -1059,8 +1064,8 @@ var el = {
1059
1064
  var es419 = {
1060
1065
  configurationAxes: {
1061
1066
  power: ["Potencia"],
1062
- model: ["Modelo"],
1063
- effort: ["Esfuerzo"],
1067
+ model: ["Modelo", "Seleccionar modelo"],
1068
+ effort: ["Esfuerzo", "Potencia"],
1064
1069
  speed: ["Velocidad"],
1065
1070
  advanced: ["Avanzado"]
1066
1071
  },
@@ -1105,13 +1110,13 @@ var es419 = {
1105
1110
  var et = {
1106
1111
  configurationAxes: {
1107
1112
  power: ["V\xF5imsus"],
1108
- model: ["Mudel"],
1109
- effort: ["Pingutus", "P\xF5hjalikkus"],
1113
+ model: ["Mudel", "Vali mudel"],
1114
+ effort: ["Pingutus", "P\xF5hjalikkus", "V\xF5imsus"],
1110
1115
  speed: ["Kiirus"],
1111
1116
  advanced: ["T\xE4psemad seaded"]
1112
1117
  },
1113
1118
  configurationOptions: {
1114
- instant: ["Kohene"],
1119
+ instant: ["Kohene", "Kiire"],
1115
1120
  light: ["Kerge"],
1116
1121
  medium: ["Keskmine"],
1117
1122
  high: ["K\xF5rge"],
@@ -1127,9 +1132,9 @@ var et = {
1127
1132
  addFilesOpenerCandidates: ["Failide lisamine ja muud"],
1128
1133
  addPhotosFilesMenuItem: ["Lisa fotosid ja faile"],
1129
1134
  copyResponse: ["Kopeeri vastus"],
1130
- modeLabels: ["Kohene", "Keskmine", "K\xF5rge", "V\xE4ga k\xF5rge"],
1135
+ modeLabels: ["Kohene", "Keskmine", "K\xF5rge", "V\xE4ga k\xF5rge", "Kiire"],
1131
1136
  modeOptions: {
1132
- instant: ["Kohene"],
1137
+ instant: ["Kohene", "Kiire"],
1133
1138
  medium: ["Keskmine"],
1134
1139
  high: ["K\xF5rge"],
1135
1140
  extraHigh: ["V\xE4ga k\xF5rge"]
@@ -1149,8 +1154,8 @@ var et = {
1149
1154
  var fa = {
1150
1155
  configurationAxes: {
1151
1156
  power: ["\u062A\u0648\u0627\u0646"],
1152
- model: ["\u0645\u062F\u0644"],
1153
- effort: ["\u0633\u0637\u062D \u062A\u0644\u0627\u0634", "\u0645\u06CC\u0632\u0627\u0646 \u0627\u0633\u062A\u062F\u0644\u0627\u0644"],
1157
+ model: ["\u0645\u062F\u0644", "\u0627\u0646\u062A\u062E\u0627\u0628 \u0645\u062F\u0644"],
1158
+ effort: ["\u0633\u0637\u062D \u062A\u0644\u0627\u0634", "\u0645\u06CC\u0632\u0627\u0646 \u0627\u0633\u062A\u062F\u0644\u0627\u0644", "\u062A\u0648\u0627\u0646"],
1154
1159
  speed: ["\u0633\u0631\u0639\u062A"],
1155
1160
  advanced: ["\u067E\u06CC\u0634\u0631\u0641\u062A\u0647"]
1156
1161
  },
@@ -1199,8 +1204,8 @@ var fa = {
1199
1204
  var fi = {
1200
1205
  configurationAxes: {
1201
1206
  power: ["Teho"],
1202
- model: ["Malli"],
1203
- effort: ["M\xE4\xE4r\xE4", "P\xE4\xE4ttelytaso"],
1207
+ model: ["Malli", "Valitse malli"],
1208
+ effort: ["M\xE4\xE4r\xE4", "P\xE4\xE4ttelytaso", "Teho"],
1204
1209
  speed: ["Nopeus"],
1205
1210
  advanced: ["Lis\xE4asetukset"]
1206
1211
  },
@@ -1245,7 +1250,8 @@ var fi = {
1245
1250
  var frCA = {
1246
1251
  configurationAxes: {
1247
1252
  power: ["Puissance"],
1248
- model: ["Mod\xE8le"],
1253
+ model: ["Mod\xE8le", "S\xE9lectionner un mod\xE8le"],
1254
+ effort: ["Puissance"],
1249
1255
  speed: ["Vitesse"],
1250
1256
  advanced: ["Avanc\xE9"]
1251
1257
  },
@@ -1274,6 +1280,9 @@ var frCA = {
1274
1280
  extraHigh: ["Tr\xE8s \xE9lev\xE9"]
1275
1281
  },
1276
1282
  modeOpenerExtra: ["Configurer..."],
1283
+ experienceOptions: {
1284
+ chat: ["Clavardage"]
1285
+ },
1277
1286
  tools: {
1278
1287
  web_search: ["Recherche sur Internet"],
1279
1288
  deep_research: ["Recherche approfondie"],
@@ -1288,13 +1297,13 @@ var frCA = {
1288
1297
  var gu = {
1289
1298
  configurationAxes: {
1290
1299
  power: ["\u0A95\u0ACD\u0AB7\u0AAE\u0AA4\u0ABE"],
1291
- model: ["\u0AAE\u0ACB\u0AA1\u0AC7\u0AB2"],
1292
- effort: ["\u0AAA\u0ACD\u0AB0\u0AAF\u0ABE\u0AB8"],
1300
+ model: ["\u0AAE\u0ACB\u0AA1\u0AC7\u0AB2", "\u0AAE\u0ACB\u0AA1\u0AC7\u0AB2 \u0AAA\u0AB8\u0A82\u0AA6 \u0A95\u0AB0\u0ACB"],
1301
+ effort: ["\u0AAA\u0ACD\u0AB0\u0AAF\u0ABE\u0AB8", "\u0A95\u0ACD\u0AB7\u0AAE\u0AA4\u0ABE"],
1293
1302
  speed: ["\u0A9D\u0AA1\u0AAA"],
1294
1303
  advanced: ["\u0A8F\u0AA1\u0AB5\u0ABE\u0AA8\u0ACD\u0AB8\u0ACD\u0AA1"]
1295
1304
  },
1296
1305
  configurationOptions: {
1297
- instant: ["\u0AA4\u0AB0\u0AA4"],
1306
+ instant: ["\u0AA4\u0AB0\u0AA4", "\u0A87\u0AA8\u0ACD\u0AB8\u0ACD\u0A9F\u0AA8\u0ACD\u0A9F"],
1298
1307
  light: ["\u0AB2\u0ABE\u0A87\u0A9F"],
1299
1308
  medium: ["\u0AAE\u0AC0\u0AA1\u0ABF\u0AAF\u0AAE"],
1300
1309
  high: ["\u0AB9\u0ABE\u0A87"],
@@ -1313,9 +1322,9 @@ var gu = {
1313
1322
  addFilesOpenerCandidates: ["\u0AAB\u0ABE\u0A87\u0AB2\u0ACB \u0A85\u0AA8\u0AC7 \u0AB5\u0AA7\u0AC1 \u0A89\u0AAE\u0AC7\u0AB0\u0ACB"],
1314
1323
  addPhotosFilesMenuItem: ["\u0AAB\u0ACB\u0A9F\u0ABE \u0A85\u0AA8\u0AC7 \u0AAB\u0ABE\u0A87\u0AB2\u0ACB \u0A89\u0AAE\u0AC7\u0AB0\u0ACB"],
1315
1324
  copyResponse: ["\u0AAA\u0ACD\u0AB0\u0AA4\u0ABF\u0AAD\u0ABE\u0AB5 \u0A95\u0AC9\u0AAA\u0ABF \u0A95\u0AB0\u0ACB"],
1316
- modeLabels: ["\u0AA4\u0AB0\u0AA4", "\u0AAE\u0AA7\u0ACD\u0AAF\u0AAE", "\u0A89\u0A9A\u0ACD\u0A9A", "\u0A85\u0AA4\u0ABF \u0A89\u0A9A\u0ACD\u0A9A", "\u0AAE\u0AC0\u0AA1\u0ABF\u0AAF\u0AAE", "\u0AB9\u0ABE\u0A87", "\u0A8F\u0A95\u0ACD\u0AB8\u0ACD\u0A9F\u0ACD\u0AB0\u0ABE \u0AB9\u0ABE\u0A87"],
1325
+ modeLabels: ["\u0AA4\u0AB0\u0AA4", "\u0AAE\u0AA7\u0ACD\u0AAF\u0AAE", "\u0A89\u0A9A\u0ACD\u0A9A", "\u0A85\u0AA4\u0ABF \u0A89\u0A9A\u0ACD\u0A9A", "\u0AAE\u0AC0\u0AA1\u0ABF\u0AAF\u0AAE", "\u0AB9\u0ABE\u0A87", "\u0A8F\u0A95\u0ACD\u0AB8\u0ACD\u0A9F\u0ACD\u0AB0\u0ABE \u0AB9\u0ABE\u0A87", "\u0A87\u0AA8\u0ACD\u0AB8\u0ACD\u0A9F\u0AA8\u0ACD\u0A9F"],
1317
1326
  modeOptions: {
1318
- instant: ["\u0AA4\u0AB0\u0AA4"],
1327
+ instant: ["\u0AA4\u0AB0\u0AA4", "\u0A87\u0AA8\u0ACD\u0AB8\u0ACD\u0A9F\u0AA8\u0ACD\u0A9F"],
1319
1328
  medium: ["\u0AAE\u0AA7\u0ACD\u0AAF\u0AAE", "\u0AAE\u0AC0\u0AA1\u0ABF\u0AAF\u0AAE"],
1320
1329
  high: ["\u0A89\u0A9A\u0ACD\u0A9A", "\u0AB9\u0ABE\u0A87"],
1321
1330
  extraHigh: ["\u0A85\u0AA4\u0ABF \u0A89\u0A9A\u0ACD\u0A9A", "\u0A8F\u0A95\u0ACD\u0AB8\u0ACD\u0A9F\u0ACD\u0AB0\u0ABE \u0AB9\u0ABE\u0A87"]
@@ -1339,16 +1348,16 @@ var gu = {
1339
1348
  var hi = {
1340
1349
  configurationAxes: {
1341
1350
  power: ["\u092A\u093E\u0935\u0930"],
1342
- model: ["\u092E\u0949\u0921\u0932"],
1343
- effort: ["\u092A\u094D\u0930\u092F\u093E\u0938", "\u0938\u094B\u091A\u0928\u0947 \u0915\u093E \u0938\u094D\u0924\u0930"],
1351
+ model: ["\u092E\u0949\u0921\u0932", "\u092E\u0949\u0921\u0932 \u091A\u0941\u0928\u0947\u0902"],
1352
+ effort: ["\u092A\u094D\u0930\u092F\u093E\u0938", "\u0938\u094B\u091A\u0928\u0947 \u0915\u093E \u0938\u094D\u0924\u0930", "\u092A\u093E\u0935\u0930"],
1344
1353
  speed: ["\u0917\u0924\u093F"],
1345
1354
  advanced: ["\u090F\u0921\u0935\u093E\u0902\u0938\u094D\u0921"]
1346
1355
  },
1347
1356
  configurationOptions: {
1348
- instant: ["\u0924\u0941\u0930\u0902\u0924"],
1357
+ instant: ["\u0924\u0941\u0930\u0902\u0924", "\u0907\u0902\u0938\u094D\u091F\u0947\u0902\u091F"],
1349
1358
  light: ["\u0932\u093E\u0907\u091F"],
1350
1359
  medium: ["\u092E\u0927\u094D\u092F\u092E"],
1351
- high: ["\u0909\u091A\u094D\u091A"],
1360
+ high: ["\u0909\u091A\u094D\u091A", "\u0939\u093E\u0908"],
1352
1361
  extraHigh: ["\u090F\u0915\u094D\u0938\u094D\u091F\u094D\u0930\u093E \u0939\u093E\u0908"],
1353
1362
  max: ["\u0905\u0927\u093F\u0915\u0924\u092E"],
1354
1363
  ultra: ["\u0905\u0932\u094D\u091F\u094D\u0930\u093E"],
@@ -1364,11 +1373,11 @@ var hi = {
1364
1373
  addFilesOpenerCandidates: ["\u092B\u093C\u093E\u0907\u0932\u094B\u0902 \u0915\u094B \u091C\u094B\u0921\u093C\u0947\u0902 \u0914\u0930 \u092D\u0940 \u092C\u0939\u0941\u0924 \u0915\u0941\u091B \u0915\u0930\u0947\u0902"],
1365
1374
  addPhotosFilesMenuItem: ["\u092B\u093C\u094B\u091F\u094B \u0914\u0930 \u092B\u093C\u093E\u0907\u0932\u0947\u0902 \u091C\u094B\u0921\u093C\u0947\u0902"],
1366
1375
  copyResponse: ["\u091C\u0935\u093E\u092C \u0915\u094B \u0915\u0949\u092A\u0940 \u0915\u0930\u0947\u0902"],
1367
- modeLabels: ["\u0924\u0941\u0930\u0902\u0924", "\u092E\u0927\u094D\u092F\u092E", "\u0909\u091A\u094D\u091A", "\u092C\u0939\u0941\u0924 \u0909\u091A\u094D\u091A", "\u090F\u0915\u094D\u0938\u094D\u091F\u094D\u0930\u093E \u0939\u093E\u0908"],
1376
+ modeLabels: ["\u0924\u0941\u0930\u0902\u0924", "\u092E\u0927\u094D\u092F\u092E", "\u0909\u091A\u094D\u091A", "\u092C\u0939\u0941\u0924 \u0909\u091A\u094D\u091A", "\u090F\u0915\u094D\u0938\u094D\u091F\u094D\u0930\u093E \u0939\u093E\u0908", "\u0907\u0902\u0938\u094D\u091F\u0947\u0902\u091F", "\u0939\u093E\u0908"],
1368
1377
  modeOptions: {
1369
- instant: ["\u0924\u0941\u0930\u0902\u0924"],
1378
+ instant: ["\u0924\u0941\u0930\u0902\u0924", "\u0907\u0902\u0938\u094D\u091F\u0947\u0902\u091F"],
1370
1379
  medium: ["\u092E\u0927\u094D\u092F\u092E"],
1371
- high: ["\u0909\u091A\u094D\u091A"],
1380
+ high: ["\u0909\u091A\u094D\u091A", "\u0939\u093E\u0908"],
1372
1381
  extraHigh: ["\u092C\u0939\u0941\u0924 \u0909\u091A\u094D\u091A", "\u090F\u0915\u094D\u0938\u094D\u091F\u094D\u0930\u093E \u0939\u093E\u0908"]
1373
1382
  },
1374
1383
  modeOpenerExtra: ["\u0915\u0949\u0928\u094D\u092B\u093C\u093F\u0917\u0930 \u0915\u0930\u0947\u0902..."],
@@ -1390,7 +1399,8 @@ var hi = {
1390
1399
  var hr = {
1391
1400
  configurationAxes: {
1392
1401
  power: ["Snaga"],
1393
- effort: ["Razina napora"],
1402
+ model: ["Odaberite model"],
1403
+ effort: ["Razina napora", "Snaga"],
1394
1404
  speed: ["Brzina"],
1395
1405
  advanced: ["Napredno"]
1396
1406
  },
@@ -1433,8 +1443,8 @@ var hr = {
1433
1443
  var hu = {
1434
1444
  configurationAxes: {
1435
1445
  power: ["Teljes\xEDtm\xE9ny"],
1436
- model: ["Modell"],
1437
- effort: ["R\xE1ford\xEDt\xE1s", "Er\u0151fesz\xEDt\xE9s"],
1446
+ model: ["Modell", "Modell kiv\xE1laszt\xE1sa"],
1447
+ effort: ["R\xE1ford\xEDt\xE1s", "Er\u0151fesz\xEDt\xE9s", "Teljes\xEDtm\xE9ny"],
1438
1448
  speed: ["Sebess\xE9g"],
1439
1449
  advanced: ["Speci\xE1lis"]
1440
1450
  },
@@ -1478,8 +1488,8 @@ var hu = {
1478
1488
  var hy = {
1479
1489
  configurationAxes: {
1480
1490
  power: ["\u0540\u0566\u0578\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576"],
1481
- model: ["\u0544\u0578\u0564\u0565\u056C"],
1482
- effort: ["\u054B\u0561\u0576\u0584", "\u0544\u057F\u0561\u056E\u0578\u0572\u0578\u0582\u0569\u0575\u0561\u0576 \u0574\u0561\u056F\u0561\u0580\u0564\u0561\u056F"],
1491
+ model: ["\u0544\u0578\u0564\u0565\u056C", "\u0538\u0576\u057F\u0580\u0565\u056C \u0574\u0578\u0564\u0565\u056C\u0568"],
1492
+ effort: ["\u054B\u0561\u0576\u0584", "\u0544\u057F\u0561\u056E\u0578\u0572\u0578\u0582\u0569\u0575\u0561\u0576 \u0574\u0561\u056F\u0561\u0580\u0564\u0561\u056F", "\u0540\u0566\u0578\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576"],
1483
1493
  speed: ["\u0531\u0580\u0561\u0563\u0578\u0582\u0569\u0575\u0578\u0582\u0576"],
1484
1494
  advanced: ["\u0538\u0576\u0564\u056C\u0561\u0575\u0576\u057E\u0561\u056E"]
1485
1495
  },
@@ -1530,7 +1540,8 @@ var hy = {
1530
1540
  var id = {
1531
1541
  configurationAxes: {
1532
1542
  power: ["Daya"],
1533
- effort: ["Upaya"],
1543
+ model: ["Pilih model"],
1544
+ effort: ["Upaya", "Daya"],
1534
1545
  speed: ["Kecepatan"],
1535
1546
  advanced: ["Tingkat lanjut"]
1536
1547
  },
@@ -1575,8 +1586,8 @@ var id = {
1575
1586
  var is = {
1576
1587
  configurationAxes: {
1577
1588
  power: ["Afl"],
1578
- model: ["L\xEDkan"],
1579
- effort: ["\xC1reynsla", "Vinnsla"],
1589
+ model: ["L\xEDkan", "Velja l\xEDkan"],
1590
+ effort: ["\xC1reynsla", "Vinnsla", "Afl"],
1580
1591
  speed: ["Hra\xF0i"],
1581
1592
  advanced: ["\xCDtarlegt"]
1582
1593
  },
@@ -1624,8 +1635,8 @@ var is = {
1624
1635
  var ka = {
1625
1636
  configurationAxes: {
1626
1637
  power: ["\u10E1\u10D8\u10DB\u10EB\u10DA\u10D0\u10D5\u10E0\u10D4"],
1627
- model: ["\u10DB\u10DD\u10D3\u10D4\u10DA\u10D8"],
1628
- effort: ["\u10EB\u10D0\u10DA\u10D8\u10E1\u10EE\u10DB\u10D4\u10D5\u10D0", "\u10DB\u10E1\u10EF\u10D4\u10DA\u10DD\u10D1\u10D8\u10E1 \u10D3\u10DD\u10DC\u10D4"],
1638
+ model: ["\u10DB\u10DD\u10D3\u10D4\u10DA\u10D8", "\u10DB\u10DD\u10D3\u10D4\u10DA\u10D8\u10E1 \u10D0\u10E0\u10E9\u10D4\u10D5\u10D0"],
1639
+ effort: ["\u10EB\u10D0\u10DA\u10D8\u10E1\u10EE\u10DB\u10D4\u10D5\u10D0", "\u10DB\u10E1\u10EF\u10D4\u10DA\u10DD\u10D1\u10D8\u10E1 \u10D3\u10DD\u10DC\u10D4", "\u10E1\u10D8\u10DB\u10EB\u10DA\u10D0\u10D5\u10E0\u10D4"],
1629
1640
  speed: ["\u10E1\u10D8\u10E9\u10E5\u10D0\u10E0\u10D4"],
1630
1641
  advanced: ["\u10D2\u10D0\u10E4\u10D0\u10E0\u10D7\u10DD\u10D4\u10D1\u10E3\u10DA\u10D8"]
1631
1642
  },
@@ -1675,18 +1686,18 @@ var ka = {
1675
1686
  var kk = {
1676
1687
  configurationAxes: {
1677
1688
  power: ["\u049A\u0443\u0430\u0442"],
1678
- model: ["\u041C\u043E\u0434\u0435\u043B\u044C"],
1679
- effort: ["\u041A\u04AF\u0448-\u0436\u0456\u0433\u0435\u0440", "\u041E\u0439\u043B\u0430\u043D\u0443 \u0434\u0435\u04A3\u0433\u0435\u0439\u0456"],
1689
+ model: ["\u041C\u043E\u0434\u0435\u043B\u044C", "\u041C\u043E\u0434\u0435\u043B\u044C\u0434\u0456 \u0442\u0430\u04A3\u0434\u0430\u04A3\u044B\u0437"],
1690
+ effort: ["\u041A\u04AF\u0448-\u0436\u0456\u0433\u0435\u0440", "\u041E\u0439\u043B\u0430\u043D\u0443 \u0434\u0435\u04A3\u0433\u0435\u0439\u0456", "\u049A\u0443\u0430\u0442"],
1680
1691
  speed: ["\u0416\u044B\u043B\u0434\u0430\u043C\u0434\u044B\u049B"],
1681
1692
  advanced: ["\u041A\u0435\u04A3\u0435\u0439\u0442\u0456\u043B\u0433\u0435\u043D"]
1682
1693
  },
1683
1694
  configurationOptions: {
1684
- instant: ["\u0416\u0435\u0434\u0435\u043B"],
1695
+ instant: ["\u0416\u0435\u0434\u0435\u043B", "\u0422\u0435\u0437"],
1685
1696
  light: ["\u0416\u0435\u04A3\u0456\u043B"],
1686
1697
  medium: ["\u041E\u0440\u0442\u0430\u0448\u0430"],
1687
1698
  high: ["\u0416\u043E\u0493\u0430\u0440\u044B"],
1688
1699
  extraHigh: ["\u04E8\u0442\u0435 \u0436\u043E\u0493\u0430\u0440\u044B"],
1689
- max: ["\u041C\u0430\u043A\u0441"],
1700
+ max: ["\u041C\u0430\u043A\u0441", "\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u0434\u044B"],
1690
1701
  ultra: ["\u0423\u043B\u044C\u0442\u0440\u0430"],
1691
1702
  standard: ["\u0421\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u0442\u044B"],
1692
1703
  fast: ["\u0416\u044B\u043B\u0434\u0430\u043C"]
@@ -1700,9 +1711,9 @@ var kk = {
1700
1711
  addFilesOpenerCandidates: ["\u0424\u0430\u0439\u043B\u0434\u0430\u0440\u0434\u044B \u0436\u04D9\u043D\u0435 \u0431\u0430\u0441\u049B\u0430 \u0434\u0435\u0440\u0435\u043A\u0442\u0435\u0440\u0434\u0456 \u049B\u043E\u0441\u0443"],
1701
1712
  addPhotosFilesMenuItem: ["\u0424\u043E\u0442\u043E\u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 \u043C\u0435\u043D \u0444\u0430\u0439\u043B\u0434\u0430\u0440 \u049B\u043E\u0441\u0443"],
1702
1713
  copyResponse: ["\u0416\u0430\u0443\u0430\u043F\u0442\u044B \u043A\u04E9\u0448\u0456\u0440\u0443"],
1703
- modeLabels: ["\u0416\u0435\u0434\u0435\u043B", "\u041E\u0440\u0442\u0430\u0448\u0430", "\u0416\u043E\u0493\u0430\u0440\u044B", "\u0410\u0441\u0430 \u0436\u043E\u0493\u0430\u0440\u044B", "\u04E8\u0442\u0435 \u0436\u043E\u0493\u0430\u0440\u044B"],
1714
+ modeLabels: ["\u0416\u0435\u0434\u0435\u043B", "\u041E\u0440\u0442\u0430\u0448\u0430", "\u0416\u043E\u0493\u0430\u0440\u044B", "\u0410\u0441\u0430 \u0436\u043E\u0493\u0430\u0440\u044B", "\u04E8\u0442\u0435 \u0436\u043E\u0493\u0430\u0440\u044B", "\u0422\u0435\u0437"],
1704
1715
  modeOptions: {
1705
- instant: ["\u0416\u0435\u0434\u0435\u043B"],
1716
+ instant: ["\u0416\u0435\u0434\u0435\u043B", "\u0422\u0435\u0437"],
1706
1717
  medium: ["\u041E\u0440\u0442\u0430\u0448\u0430"],
1707
1718
  high: ["\u0416\u043E\u0493\u0430\u0440\u044B"],
1708
1719
  extraHigh: ["\u0410\u0441\u0430 \u0436\u043E\u0493\u0430\u0440\u044B", "\u04E8\u0442\u0435 \u0436\u043E\u0493\u0430\u0440\u044B"]
@@ -1726,13 +1737,13 @@ var kk = {
1726
1737
  var kn = {
1727
1738
  configurationAxes: {
1728
1739
  power: ["\u0CAA\u0CB5\u0CB0\u0CCD"],
1729
- model: ["\u0CAE\u0CBE\u0CA1\u0CC6\u0CB2\u0CCD"],
1730
- effort: ["\u0C8E\u0CAB\u0CB0\u0CCD\u0C9F\u0CCD", "\u0CAA\u0CCD\u0CB0\u0CAF\u0CA4\u0CCD\u0CA8"],
1740
+ model: ["\u0CAE\u0CBE\u0CA1\u0CC6\u0CB2\u0CCD", "\u0CAE\u0CBE\u0CA6\u0CB0\u0CBF\u0CAF\u0CA8\u0CCD\u0CA8\u0CC1 \u0C86\u0CAF\u0CCD\u0C95\u0CC6\u0CAE\u0CBE\u0CA1\u0CBF"],
1741
+ effort: ["\u0C8E\u0CAB\u0CB0\u0CCD\u0C9F\u0CCD", "\u0CAA\u0CCD\u0CB0\u0CAF\u0CA4\u0CCD\u0CA8", "\u0CAA\u0CB5\u0CB0\u0CCD"],
1731
1742
  speed: ["\u0CB5\u0CC7\u0C97"],
1732
1743
  advanced: ["\u0CB8\u0CC1\u0CA7\u0CBE\u0CB0\u0CBF\u0CA4"]
1733
1744
  },
1734
1745
  configurationOptions: {
1735
- instant: ["\u0CA4\u0C95\u0CCD\u0CB7\u0CA3"],
1746
+ instant: ["\u0CA4\u0C95\u0CCD\u0CB7\u0CA3", "\u0C87\u0CA8\u0CCD\u200C\u0CB8\u0CCD\u0C9F\u0C82\u0C9F\u0CCD"],
1736
1747
  light: ["\u0CB2\u0CC8\u0C9F\u0CCD"],
1737
1748
  medium: ["\u0CAE\u0CC0\u0CA1\u0CBF\u0CAF\u0C82"],
1738
1749
  high: ["\u0CB9\u0CC8"],
@@ -1751,9 +1762,9 @@ var kn = {
1751
1762
  addFilesOpenerCandidates: ["\u0CAB\u0CC8\u0CB2\u0CCD\u200C\u0C97\u0CB3\u0CC1 \u0CAE\u0CA4\u0CCD\u0CA4\u0CC1 \u0CB9\u0CC6\u0C9A\u0CCD\u0C9A\u0CBF\u0CA8\u0CB5\u0CC1\u0C97\u0CB3\u0CA8\u0CCD\u0CA8\u0CC1 \u0CB8\u0CC7\u0CB0\u0CBF\u0CB8\u0CBF"],
1752
1763
  addPhotosFilesMenuItem: ["\u0CAB\u0CCB\u0C9F\u0CCA \u0CAE\u0CA4\u0CCD\u0CA4\u0CC1 \u0CAB\u0CC8\u0CB2\u0CCD\u200C\u0C97\u0CB3\u0CA8\u0CCD\u0CA8\u0CC1 \u0CB8\u0CC7\u0CB0\u0CBF\u0CB8\u0CBF"],
1753
1764
  copyResponse: ["\u0CAA\u0CCD\u0CB0\u0CA4\u0CBF\u0C95\u0CCD\u0CB0\u0CBF\u0CAF\u0CC6\u0CAF\u0CA8\u0CCD\u0CA8\u0CC1 \u0CA8\u0C95\u0CB2\u0CBF\u0CB8\u0CBF"],
1754
- modeLabels: ["\u0CA4\u0C95\u0CCD\u0CB7\u0CA3", "\u0CAE\u0CA7\u0CCD\u0CAF\u0CAE", "\u0C89\u0CA8\u0CCD\u0CA8\u0CA4", "\u0C85\u0CA4\u0CBF \u0CB9\u0CC6\u0C9A\u0CCD\u0C9A\u0CC1", "\u0CAA\u0CCD\u0CB0\u0CCA", "\u0CAE\u0CC0\u0CA1\u0CBF\u0CAF\u0C82", "\u0CB9\u0CC8", "\u0C8E\u0C95\u0CCD\u0CB8\u0CCD\u200C\u0C9F\u0CCD\u0CB0\u0CBE \u0CB9\u0CC8"],
1765
+ modeLabels: ["\u0CA4\u0C95\u0CCD\u0CB7\u0CA3", "\u0CAE\u0CA7\u0CCD\u0CAF\u0CAE", "\u0C89\u0CA8\u0CCD\u0CA8\u0CA4", "\u0C85\u0CA4\u0CBF \u0CB9\u0CC6\u0C9A\u0CCD\u0C9A\u0CC1", "\u0CAA\u0CCD\u0CB0\u0CCA", "\u0CAE\u0CC0\u0CA1\u0CBF\u0CAF\u0C82", "\u0CB9\u0CC8", "\u0C8E\u0C95\u0CCD\u0CB8\u0CCD\u200C\u0C9F\u0CCD\u0CB0\u0CBE \u0CB9\u0CC8", "\u0C87\u0CA8\u0CCD\u200C\u0CB8\u0CCD\u0C9F\u0C82\u0C9F\u0CCD"],
1755
1766
  modeOptions: {
1756
- instant: ["\u0CA4\u0C95\u0CCD\u0CB7\u0CA3"],
1767
+ instant: ["\u0CA4\u0C95\u0CCD\u0CB7\u0CA3", "\u0C87\u0CA8\u0CCD\u200C\u0CB8\u0CCD\u0C9F\u0C82\u0C9F\u0CCD"],
1757
1768
  medium: ["\u0CAE\u0CA7\u0CCD\u0CAF\u0CAE", "\u0CAE\u0CC0\u0CA1\u0CBF\u0CAF\u0C82"],
1758
1769
  high: ["\u0C89\u0CA8\u0CCD\u0CA8\u0CA4", "\u0CB9\u0CC8"],
1759
1770
  extraHigh: ["\u0C85\u0CA4\u0CBF \u0CB9\u0CC6\u0C9A\u0CCD\u0C9A\u0CC1", "\u0C8E\u0C95\u0CCD\u0CB8\u0CCD\u200C\u0C9F\u0CCD\u0CB0\u0CBE \u0CB9\u0CC8"],
@@ -1761,7 +1772,8 @@ var kn = {
1761
1772
  },
1762
1773
  modeOpenerExtra: ["\u0C95\u0CBE\u0CA8\u0CCD\u0CAB\u0CBF\u0C97\u0CB0\u0CCD \u0CAE\u0CBE\u0CA1\u0CBF..."],
1763
1774
  experienceOptions: {
1764
- chat: ["\u0C9A\u0CBE\u0C9F\u0CCD"]
1775
+ chat: ["\u0C9A\u0CBE\u0C9F\u0CCD"],
1776
+ work: ["\u0CB5\u0CB0\u0CCD\u0C95\u0CCD"]
1765
1777
  },
1766
1778
  tools: {
1767
1779
  web_search: ["\u0CB5\u0CC6\u0CAC\u0CCD \u0CB8\u0CB0\u0CCD\u0C9A\u0CCD"],
@@ -1777,8 +1789,8 @@ var kn = {
1777
1789
  var ko = {
1778
1790
  configurationAxes: {
1779
1791
  power: ["\uC131\uB2A5"],
1780
- model: ["\uBAA8\uB378"],
1781
- effort: ["\uCD94\uB860 \uC218\uC900", "\uCD94\uB860 \uAC15\uB3C4"],
1792
+ model: ["\uBAA8\uB378", "\uBAA8\uB378 \uC120\uD0DD"],
1793
+ effort: ["\uCD94\uB860 \uC218\uC900", "\uCD94\uB860 \uAC15\uB3C4", "\uC131\uB2A5"],
1782
1794
  speed: ["\uC18D\uB3C4"],
1783
1795
  advanced: ["\uACE0\uAE09"]
1784
1796
  },
@@ -1822,8 +1834,8 @@ var ko = {
1822
1834
  var lt = {
1823
1835
  configurationAxes: {
1824
1836
  power: ["Paj\u0117gumas"],
1825
- model: ["Modelis"],
1826
- effort: ["Pastangos", "M\u0105stymo lygis"],
1837
+ model: ["Modelis", "Pasirinkti model\u012F"],
1838
+ effort: ["Pastangos", "M\u0105stymo lygis", "Paj\u0117gumas"],
1827
1839
  speed: ["Greitis"],
1828
1840
  advanced: ["I\u0161pl\u0117stiniai"]
1829
1841
  },
@@ -1832,7 +1844,7 @@ var lt = {
1832
1844
  light: ["Lengvas"],
1833
1845
  medium: ["Vidutinis"],
1834
1846
  high: ["Auk\u0161tas"],
1835
- extraHigh: ["Labai auk\u0161tas"],
1847
+ extraHigh: ["Labai auk\u0161tas", "Ypa\u010D didel\u0117s"],
1836
1848
  max: ["Maks."],
1837
1849
  standard: ["Standartinis"],
1838
1850
  fast: ["Greitas"]
@@ -1869,13 +1881,13 @@ var lt = {
1869
1881
  var zhHans = {
1870
1882
  configurationAxes: {
1871
1883
  power: ["\u80FD\u529B"],
1872
- model: ["\u6A21\u578B"],
1873
- effort: ["\u63A8\u7406\u5F3A\u5EA6", "\u601D\u8003\u5F3A\u5EA6"],
1884
+ model: ["\u6A21\u578B", "\u9009\u62E9\u6A21\u578B"],
1885
+ effort: ["\u63A8\u7406\u5F3A\u5EA6", "\u601D\u8003\u5F3A\u5EA6", "\u80FD\u529B"],
1874
1886
  speed: ["\u901F\u5EA6"],
1875
1887
  advanced: ["\u9AD8\u7EA7"]
1876
1888
  },
1877
1889
  configurationOptions: {
1878
- instant: ["\u6781\u901F"],
1890
+ instant: ["\u6781\u901F", "\u5373\u65F6"],
1879
1891
  light: ["\u8F7B\u5EA6"],
1880
1892
  medium: ["\u4E2D"],
1881
1893
  high: ["\u9AD8"],
@@ -1894,9 +1906,9 @@ var zhHans = {
1894
1906
  addFilesOpenerCandidates: ["\u6DFB\u52A0\u6587\u4EF6\u7B49"],
1895
1907
  addPhotosFilesMenuItem: ["\u6DFB\u52A0\u7167\u7247\u548C\u6587\u4EF6"],
1896
1908
  copyResponse: ["\u590D\u5236\u56DE\u590D"],
1897
- modeLabels: ["\u6781\u901F", "\u5747\u8861", "\u9AD8\u7EA7", "\u8D85\u9AD8", "\u4E13\u4E1A", "\u4E2D", "\u9AD8", "\u6781\u9AD8"],
1909
+ modeLabels: ["\u6781\u901F", "\u5747\u8861", "\u9AD8\u7EA7", "\u8D85\u9AD8", "\u4E13\u4E1A", "\u4E2D", "\u9AD8", "\u6781\u9AD8", "\u5373\u65F6"],
1898
1910
  modeOptions: {
1899
- instant: ["\u6781\u901F"],
1911
+ instant: ["\u6781\u901F", "\u5373\u65F6"],
1900
1912
  medium: ["\u5747\u8861", "\u4E2D"],
1901
1913
  high: ["\u9AD8\u7EA7", "\u9AD8"],
1902
1914
  extraHigh: ["\u8D85\u9AD8", "\u6781\u9AD8"],
@@ -1920,8 +1932,8 @@ var zhHans = {
1920
1932
  // src/dom/locale/ur.ts
1921
1933
  var ur = {
1922
1934
  configurationAxes: {
1923
- model: ["\u0645\u0627\u0688\u0644"],
1924
- effort: ["\u06A9\u0648\u0634\u0634"],
1935
+ model: ["\u0645\u0627\u0688\u0644", "\u0645\u0627\u0688\u0644 \u0645\u0646\u062A\u062E\u0628 \u06A9\u0631\u06CC\u06BA"],
1936
+ effort: ["\u06A9\u0648\u0634\u0634", "Power"],
1925
1937
  speed: ["\u0631\u0641\u062A\u0627\u0631"],
1926
1938
  advanced: ["\u0627\u06CC\u0688\u0648\u0627\u0646\u0633\u0688"]
1927
1939
  },
@@ -1971,13 +1983,13 @@ var ur = {
1971
1983
  var uk = {
1972
1984
  configurationAxes: {
1973
1985
  power: ["\u041F\u043E\u0442\u0443\u0436\u043D\u0456\u0441\u0442\u044C"],
1974
- model: ["\u041C\u043E\u0434\u0435\u043B\u044C"],
1975
- effort: ["\u0417\u0443\u0441\u0438\u043B\u043B\u044F", "\u041C\u0456\u0440\u043A\u0443\u0432\u0430\u043D\u043D\u044F"],
1986
+ model: ["\u041C\u043E\u0434\u0435\u043B\u044C", "\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u043C\u043E\u0434\u0435\u043B\u044C"],
1987
+ effort: ["\u0417\u0443\u0441\u0438\u043B\u043B\u044F", "\u041C\u0456\u0440\u043A\u0443\u0432\u0430\u043D\u043D\u044F", "\u041F\u043E\u0442\u0443\u0436\u043D\u0456\u0441\u0442\u044C"],
1976
1988
  speed: ["\u0428\u0432\u0438\u0434\u043A\u0456\u0441\u0442\u044C"],
1977
1989
  advanced: ["\u0414\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u043E"]
1978
1990
  },
1979
1991
  configurationOptions: {
1980
- instant: ["\u041C\u0438\u0442\u0442\u0454\u0432\u0438\u0439"],
1992
+ instant: ["\u041C\u0438\u0442\u0442\u0454\u0432\u0438\u0439", "\u041C\u0438\u0442\u0442\u0454\u0432\u0435"],
1981
1993
  light: ["\u041D\u0438\u0437\u044C\u043A\u0438\u0439"],
1982
1994
  medium: ["\u0421\u0435\u0440\u0435\u0434\u043D\u0456\u0439"],
1983
1995
  high: ["\u0412\u0438\u0441\u043E\u043A\u0438\u0439"],
@@ -1996,9 +2008,9 @@ var uk = {
1996
2008
  addFilesOpenerCandidates: ["\u0414\u043E\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043B\u0438 \u0439 \u0432\u0438\u043A\u043E\u043D\u0443\u0439\u0442\u0435 \u0456\u043D\u0448\u0456 \u0434\u0456\u0457"],
1997
2009
  addPhotosFilesMenuItem: ["\u0414\u043E\u0434\u0430\u0442\u0438 \u0441\u0432\u0456\u0442\u043B\u0438\u043D\u0438 \u0442\u0430 \u0444\u0430\u0439\u043B\u0438"],
1998
2010
  copyResponse: ["\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u044C"],
1999
- modeLabels: ["\u041C\u0438\u0442\u0442\u0454\u0432\u0438\u0439", "\u0421\u0435\u0440\u0435\u0434\u043D\u0456\u0439", "\u0412\u0438\u0441\u043E\u043A\u0438\u0439", "\u0414\u0443\u0436\u0435 \u0432\u0438\u0441\u043E\u043A\u0438\u0439", "\u041D\u0430\u0439\u0432\u0438\u0449\u0438\u0439"],
2011
+ modeLabels: ["\u041C\u0438\u0442\u0442\u0454\u0432\u0438\u0439", "\u0421\u0435\u0440\u0435\u0434\u043D\u0456\u0439", "\u0412\u0438\u0441\u043E\u043A\u0438\u0439", "\u0414\u0443\u0436\u0435 \u0432\u0438\u0441\u043E\u043A\u0438\u0439", "\u041D\u0430\u0439\u0432\u0438\u0449\u0438\u0439", "\u041C\u0438\u0442\u0442\u0454\u0432\u0435"],
2000
2012
  modeOptions: {
2001
- instant: ["\u041C\u0438\u0442\u0442\u0454\u0432\u0438\u0439"],
2013
+ instant: ["\u041C\u0438\u0442\u0442\u0454\u0432\u0438\u0439", "\u041C\u0438\u0442\u0442\u0454\u0432\u0435"],
2002
2014
  medium: ["\u0421\u0435\u0440\u0435\u0434\u043D\u0456\u0439"],
2003
2015
  high: ["\u0412\u0438\u0441\u043E\u043A\u0438\u0439"],
2004
2016
  extraHigh: ["\u0414\u0443\u0436\u0435 \u0432\u0438\u0441\u043E\u043A\u0438\u0439", "\u041D\u0430\u0439\u0432\u0438\u0449\u0438\u0439"]
@@ -2022,16 +2034,16 @@ var uk = {
2022
2034
  var ptBR = {
2023
2035
  configurationAxes: {
2024
2036
  power: ["Pot\xEAncia"],
2025
- model: ["Modelo"],
2026
- effort: ["Esfor\xE7o", "N\xEDvel de racioc\xEDnio"],
2037
+ model: ["Modelo", "Selecionar modelo"],
2038
+ effort: ["Esfor\xE7o", "N\xEDvel de racioc\xEDnio", "Pot\xEAncia"],
2027
2039
  speed: ["Velocidade"],
2028
2040
  advanced: ["Avan\xE7ado"]
2029
2041
  },
2030
2042
  configurationOptions: {
2031
- instant: ["Instant\xE2neo"],
2043
+ instant: ["Instant\xE2neo", "Instant\xE2nea"],
2032
2044
  light: ["Leve"],
2033
- medium: ["M\xE9dio"],
2034
- high: ["Alto"],
2045
+ medium: ["M\xE9dio", "M\xE9dia"],
2046
+ high: ["Alto", "Alta"],
2035
2047
  extraHigh: ["Extra alto"],
2036
2048
  max: ["M\xE1ximo"],
2037
2049
  standard: ["Padr\xE3o"],
@@ -2046,11 +2058,11 @@ var ptBR = {
2046
2058
  addFilesOpenerCandidates: ["Adicionar arquivos e mais"],
2047
2059
  addPhotosFilesMenuItem: ["Carregar fotos e arquivos"],
2048
2060
  copyResponse: ["Copiar resposta"],
2049
- modeLabels: ["Instant\xE2neo", "M\xE9dio", "Alto", "Muito alta", "Extra alto"],
2061
+ modeLabels: ["Instant\xE2neo", "M\xE9dio", "Alto", "Muito alta", "Extra alto", "Instant\xE2nea", "M\xE9dia", "Alta"],
2050
2062
  modeOptions: {
2051
- instant: ["Instant\xE2neo"],
2052
- medium: ["M\xE9dio"],
2053
- high: ["Alto"],
2063
+ instant: ["Instant\xE2neo", "Instant\xE2nea"],
2064
+ medium: ["M\xE9dio", "M\xE9dia"],
2065
+ high: ["Alto", "Alta"],
2054
2066
  extraHigh: ["Muito alta", "Extra alto"]
2055
2067
  },
2056
2068
  modeOpenerExtra: ["Configurar\u2026"],
@@ -2068,8 +2080,8 @@ var ptBR = {
2068
2080
  var ptPT = {
2069
2081
  configurationAxes: {
2070
2082
  power: ["Capacidade"],
2071
- model: ["Modelo"],
2072
- effort: ["Esfor\xE7o"],
2083
+ model: ["Modelo", "Selecionar modelo"],
2084
+ effort: ["Esfor\xE7o", "Capacidade"],
2073
2085
  speed: ["Velocidade"],
2074
2086
  advanced: ["Avan\xE7ado"]
2075
2087
  },
@@ -2077,7 +2089,7 @@ var ptPT = {
2077
2089
  instant: ["Instant\xE2neo"],
2078
2090
  light: ["Leve"],
2079
2091
  medium: ["M\xE9dio"],
2080
- high: ["Elevado"],
2092
+ high: ["Elevado", "Elevada"],
2081
2093
  extraHigh: ["Muito elevado"],
2082
2094
  max: ["M\xE1x."],
2083
2095
  standard: ["Padr\xE3o"],
@@ -2092,11 +2104,11 @@ var ptPT = {
2092
2104
  addFilesOpenerCandidates: ["Adicionar ficheiros e mais"],
2093
2105
  addPhotosFilesMenuItem: ["Carregar fotos e ficheiros"],
2094
2106
  copyResponse: ["Copiar resposta"],
2095
- modeLabels: ["Instant\xE2neo", "M\xE9dia", "Alta", "M\xE1ximo", "M\xE9dio", "Elevado", "Muito elevado"],
2107
+ modeLabels: ["Instant\xE2neo", "M\xE9dia", "Alta", "M\xE1ximo", "M\xE9dio", "Elevado", "Muito elevado", "Elevada"],
2096
2108
  modeOptions: {
2097
2109
  instant: ["Instant\xE2neo"],
2098
2110
  medium: ["M\xE9dia", "M\xE9dio"],
2099
- high: ["Alta", "Elevado"],
2111
+ high: ["Alta", "Elevado", "Elevada"],
2100
2112
  extraHigh: ["M\xE1ximo", "Muito elevado"]
2101
2113
  },
2102
2114
  modeOpenerExtra: ["Configurar..."],
@@ -2114,7 +2126,8 @@ var ptPT = {
2114
2126
  var pl = {
2115
2127
  configurationAxes: {
2116
2128
  power: ["Moc"],
2117
- effort: ["Nak\u0142ad pracy", "Wysi\u0142ek"],
2129
+ model: ["Wybierz model"],
2130
+ effort: ["Nak\u0142ad pracy", "Wysi\u0142ek", "Moc"],
2118
2131
  speed: ["Szybko\u015B\u0107"],
2119
2132
  advanced: ["Zaawansowane"]
2120
2133
  },
@@ -2159,7 +2172,8 @@ var pl = {
2159
2172
  var sk = {
2160
2173
  configurationAxes: {
2161
2174
  power: ["V\xFDkon"],
2162
- effort: ["\xDAsilie"],
2175
+ model: ["Vyberte model"],
2176
+ effort: ["\xDAsilie", "V\xFDkon"],
2163
2177
  speed: ["R\xFDchlos\u0165"],
2164
2178
  advanced: ["Roz\u0161\xEDren\xE9"]
2165
2179
  },
@@ -2204,7 +2218,8 @@ var sk = {
2204
2218
  var ro = {
2205
2219
  configurationAxes: {
2206
2220
  power: ["Capacitate"],
2207
- effort: ["Efort"],
2221
+ model: ["Selecteaz\u0103 modelul"],
2222
+ effort: ["Efort", "Capacitate"],
2208
2223
  speed: ["Vitez\u0103"],
2209
2224
  advanced: ["Avansat"]
2210
2225
  },
@@ -2246,8 +2261,8 @@ var ro = {
2246
2261
  var nb = {
2247
2262
  configurationAxes: {
2248
2263
  power: ["Styrke"],
2249
- model: ["Modell"],
2250
- effort: ["Innsats", "Resonneringsniv\xE5"],
2264
+ model: ["Modell", "Velg modell"],
2265
+ effort: ["Innsats", "Resonneringsniv\xE5", "Styrke"],
2251
2266
  speed: ["Hastighet"],
2252
2267
  advanced: ["Avansert"]
2253
2268
  },
@@ -2291,13 +2306,13 @@ var nb = {
2291
2306
  var ml = {
2292
2307
  configurationAxes: {
2293
2308
  power: ["\u0D2A\u0D35\u0D7C"],
2294
- model: ["\u0D2E\u0D4B\u0D21\u0D7D"],
2295
- effort: ["\u0D36\u0D4D\u0D30\u0D2E\u0D02"],
2309
+ model: ["\u0D2E\u0D4B\u0D21\u0D7D", "\u0D2E\u0D4B\u0D21\u0D7D \u0D24\u0D3F\u0D30\u0D1E\u0D4D\u0D1E\u0D46\u0D1F\u0D41\u0D15\u0D4D\u0D15\u0D41\u0D15"],
2310
+ effort: ["\u0D36\u0D4D\u0D30\u0D2E\u0D02", "\u0D2A\u0D35\u0D7C"],
2296
2311
  speed: ["\u0D35\u0D47\u0D17\u0D24"],
2297
2312
  advanced: ["\u0D35\u0D3F\u0D2A\u0D41\u0D32\u0D2E\u0D3E\u0D2F\u0D24\u0D4D"]
2298
2313
  },
2299
2314
  configurationOptions: {
2300
- instant: ["\u0D24\u0D7D\u0D15\u0D4D\u0D37\u0D23\u0D02"],
2315
+ instant: ["\u0D24\u0D7D\u0D15\u0D4D\u0D37\u0D23\u0D02", "\u0D07\u0D7B\u0D38\u0D4D\u0D31\u0D4D\u0D31\u0D7B\u0D4D\u0D31\u0D4D"],
2301
2316
  light: ["\u0D32\u0D33\u0D3F\u0D24\u0D02"],
2302
2317
  medium: ["\u0D07\u0D1F\u0D24\u0D4D\u0D24\u0D30\u0D02"],
2303
2318
  high: ["\u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D"],
@@ -2316,9 +2331,9 @@ var ml = {
2316
2331
  addFilesOpenerCandidates: ["\u0D2B\u0D2F\u0D32\u0D41\u0D15\u0D33\u0D41\u0D02 \u0D2E\u0D31\u0D4D\u0D31\u0D41\u0D02 \u0D1A\u0D47\u0D7C\u0D15\u0D4D\u0D15\u0D41\u0D15"],
2317
2332
  addPhotosFilesMenuItem: ["\u0D2B\u0D4B\u0D1F\u0D4D\u0D1F\u0D4B\u0D15\u0D33\u0D41\u0D02 \u0D2B\u0D2F\u0D32\u0D41\u0D15\u0D33\u0D41\u0D02 \u0D05\u0D2A\u0D4D\u200C\u0D32\u0D4B\u0D21\u0D4D \u0D1A\u0D46\u0D2F\u0D4D\u0D2F\u0D41\u0D15"],
2318
2333
  copyResponse: ["\u0D2E\u0D31\u0D41\u0D2A\u0D1F\u0D3F \u0D15\u0D4B\u0D2A\u0D4D\u0D2A\u0D3F \u0D1A\u0D46\u0D2F\u0D4D\u0D2F\u0D41\u0D15"],
2319
- modeLabels: ["\u0D24\u0D7D\u0D15\u0D4D\u0D37\u0D23\u0D02", "\u0D07\u0D1F\u0D24\u0D4D\u0D24\u0D30\u0D02", "\u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D", "\u0D35\u0D33\u0D30\u0D46 \u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28", "\u0D2A\u0D4D\u0D30\u0D4B", "\u0D05\u0D24\u0D4D\u0D2F\u0D27\u0D3F\u0D15\u0D02 \u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D"],
2334
+ modeLabels: ["\u0D24\u0D7D\u0D15\u0D4D\u0D37\u0D23\u0D02", "\u0D07\u0D1F\u0D24\u0D4D\u0D24\u0D30\u0D02", "\u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D", "\u0D35\u0D33\u0D30\u0D46 \u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28", "\u0D2A\u0D4D\u0D30\u0D4B", "\u0D05\u0D24\u0D4D\u0D2F\u0D27\u0D3F\u0D15\u0D02 \u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D", "\u0D07\u0D7B\u0D38\u0D4D\u0D31\u0D4D\u0D31\u0D7B\u0D4D\u0D31\u0D4D"],
2320
2335
  modeOptions: {
2321
- instant: ["\u0D24\u0D7D\u0D15\u0D4D\u0D37\u0D23\u0D02"],
2336
+ instant: ["\u0D24\u0D7D\u0D15\u0D4D\u0D37\u0D23\u0D02", "\u0D07\u0D7B\u0D38\u0D4D\u0D31\u0D4D\u0D31\u0D7B\u0D4D\u0D31\u0D4D"],
2322
2337
  medium: ["\u0D07\u0D1F\u0D24\u0D4D\u0D24\u0D30\u0D02"],
2323
2338
  high: ["\u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D"],
2324
2339
  extraHigh: ["\u0D35\u0D33\u0D30\u0D46 \u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28", "\u0D05\u0D24\u0D4D\u0D2F\u0D27\u0D3F\u0D15\u0D02 \u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D"],
@@ -2342,8 +2357,8 @@ var ml = {
2342
2357
  // src/dom/locale/ru.ts
2343
2358
  var ru = {
2344
2359
  configurationAxes: {
2345
- model: ["\u041C\u043E\u0434\u0435\u043B\u044C"],
2346
- effort: ["\u0423\u0440\u043E\u0432\u0435\u043D\u044C", "\u0423\u0440\u043E\u0432\u0435\u043D\u044C \u043F\u0440\u043E\u0440\u0430\u0431\u043E\u0442\u043A\u0438"],
2360
+ model: ["\u041C\u043E\u0434\u0435\u043B\u044C", "\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u043C\u043E\u0434\u0435\u043B\u044C"],
2361
+ effort: ["\u0423\u0440\u043E\u0432\u0435\u043D\u044C", "\u0423\u0440\u043E\u0432\u0435\u043D\u044C \u043F\u0440\u043E\u0440\u0430\u0431\u043E\u0442\u043A\u0438", "Power"],
2347
2362
  speed: ["\u0421\u043A\u043E\u0440\u043E\u0441\u0442\u044C"],
2348
2363
  advanced: ["\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u043D\u044B\u0435"]
2349
2364
  },
@@ -2391,8 +2406,8 @@ var ru = {
2391
2406
  var pa = {
2392
2407
  configurationAxes: {
2393
2408
  power: ["\u0A2A\u0A3E\u0A35\u0A30"],
2394
- model: ["\u0A2E\u0A3E\u0A21\u0A32"],
2395
- effort: ["\u0A15\u0A4B\u0A38\u0A3C\u0A3F\u0A38\u0A3C"],
2409
+ model: ["\u0A2E\u0A3E\u0A21\u0A32", "\u0A2E\u0A3E\u0A21\u0A32 \u0A1A\u0A41\u0A23\u0A4B"],
2410
+ effort: ["\u0A15\u0A4B\u0A38\u0A3C\u0A3F\u0A38\u0A3C", "\u0A2A\u0A3E\u0A35\u0A30"],
2396
2411
  speed: ["\u0A17\u0A24\u0A40"],
2397
2412
  advanced: ["\u0A09\u0A71\u0A28\u0A24"]
2398
2413
  },
@@ -2443,13 +2458,13 @@ var pa = {
2443
2458
  var mr = {
2444
2459
  configurationAxes: {
2445
2460
  power: ["\u092A\u0949\u0935\u0930"],
2446
- model: ["\u092E\u0949\u0921\u0947\u0932"],
2447
- effort: ["\u092A\u094D\u0930\u092F\u0924\u094D\u0928"],
2461
+ model: ["\u092E\u0949\u0921\u0947\u0932", "\u092E\u0949\u0921\u0947\u0932 \u0928\u093F\u0935\u0921\u093E"],
2462
+ effort: ["\u092A\u094D\u0930\u092F\u0924\u094D\u0928", "\u092A\u0949\u0935\u0930"],
2448
2463
  speed: ["\u0935\u0947\u0917"],
2449
2464
  advanced: ["\u092A\u094D\u0930\u0917\u0924"]
2450
2465
  },
2451
2466
  configurationOptions: {
2452
- instant: ["\u091D\u091F\u092A\u091F"],
2467
+ instant: ["\u091D\u091F\u092A\u091F", "\u0907\u0928\u094D\u0938\u094D\u091F\u0902\u091F"],
2453
2468
  light: ["\u0939\u0932\u0915\u093E"],
2454
2469
  medium: ["\u092E\u0927\u094D\u092F\u092E"],
2455
2470
  high: ["\u0909\u091A\u094D\u091A"],
@@ -2468,9 +2483,9 @@ var mr = {
2468
2483
  addFilesOpenerCandidates: ["\u092B\u093E\u0907\u0932\u094D\u0938 \u091C\u094B\u0921\u093E \u0906\u0923\u093F \u0907\u0924\u0930 \u0905\u0928\u0947\u0915 \u0917\u094B\u0937\u094D\u091F\u0940 \u0915\u0930\u093E"],
2469
2484
  addPhotosFilesMenuItem: ["\u092B\u094B\u091F\u094B \u0906\u0923\u093F \u092B\u093E\u0907\u0932\u094D\u0938 \u0905\u092A\u0932\u094B\u0921 \u0915\u0930\u093E"],
2470
2485
  copyResponse: ["\u092A\u094D\u0930\u0924\u093F\u0938\u093E\u0926 \u0915\u0949\u092A\u0940 \u0915\u0930\u093E"],
2471
- modeLabels: ["\u091D\u091F\u092A\u091F", "\u092E\u0927\u094D\u092F\u092E", "\u0909\u091A\u094D\u091A", "\u0905\u0924\u093F\u0909\u091A\u094D\u091A", "\u092A\u094D\u0930\u094B", "\u0905\u0924\u094D\u092F\u0941\u091A\u094D\u091A"],
2486
+ modeLabels: ["\u091D\u091F\u092A\u091F", "\u092E\u0927\u094D\u092F\u092E", "\u0909\u091A\u094D\u091A", "\u0905\u0924\u093F\u0909\u091A\u094D\u091A", "\u092A\u094D\u0930\u094B", "\u0905\u0924\u094D\u092F\u0941\u091A\u094D\u091A", "\u0907\u0928\u094D\u0938\u094D\u091F\u0902\u091F"],
2472
2487
  modeOptions: {
2473
- instant: ["\u091D\u091F\u092A\u091F"],
2488
+ instant: ["\u091D\u091F\u092A\u091F", "\u0907\u0928\u094D\u0938\u094D\u091F\u0902\u091F"],
2474
2489
  medium: ["\u092E\u0927\u094D\u092F\u092E"],
2475
2490
  high: ["\u0909\u091A\u094D\u091A"],
2476
2491
  extraHigh: ["\u0905\u0924\u093F\u0909\u091A\u094D\u091A", "\u0905\u0924\u094D\u092F\u0941\u091A\u094D\u091A"],
@@ -2495,7 +2510,8 @@ var mr = {
2495
2510
  var tr = {
2496
2511
  configurationAxes: {
2497
2512
  power: ["G\xFC\xE7"],
2498
- effort: ["D\xFCzey", "\xC7aba"],
2513
+ model: ["Model se\xE7"],
2514
+ effort: ["D\xFCzey", "\xC7aba", "G\xFC\xE7"],
2499
2515
  speed: ["H\u0131z"],
2500
2516
  advanced: ["Geli\u015Fmi\u015F"]
2501
2517
  },
@@ -2544,8 +2560,8 @@ var tr = {
2544
2560
  var sw = {
2545
2561
  configurationAxes: {
2546
2562
  power: ["Umahiri"],
2547
- model: ["Modeli", "Mfumo"],
2548
- effort: ["Juhudi", "Kiwango cha uchambuzi"],
2563
+ model: ["Modeli", "Mfumo", "Chagua muundo"],
2564
+ effort: ["Juhudi", "Kiwango cha uchambuzi", "Umahiri"],
2549
2565
  speed: ["Kasi"],
2550
2566
  advanced: ["Za kina"]
2551
2567
  },
@@ -2554,7 +2570,7 @@ var sw = {
2554
2570
  light: ["Nyepesi"],
2555
2571
  medium: ["Wastani"],
2556
2572
  high: ["Juu"],
2557
- extraHigh: ["Juu Zaidi"],
2573
+ extraHigh: ["Juu Zaidi", "Juu Sana"],
2558
2574
  max: ["Juu kabisa"],
2559
2575
  standard: ["Kawaida"],
2560
2576
  fast: ["Haraka"]
@@ -2590,13 +2606,13 @@ var sw = {
2590
2606
  var te = {
2591
2607
  configurationAxes: {
2592
2608
  power: ["\u0C2A\u0C35\u0C30\u0C4D"],
2593
- model: ["\u0C2E\u0C4B\u0C21\u0C32\u0C4D"],
2594
- effort: ["\u0C2A\u0C4D\u0C30\u0C2F\u0C24\u0C4D\u0C28\u0C02", "\u0C06\u0C32\u0C4B\u0C1A\u0C28"],
2609
+ model: ["\u0C2E\u0C4B\u0C21\u0C32\u0C4D", "\u0C2E\u0C4B\u0C21\u0C32\u0C4D\u200C\u0C28\u0C41 \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B\u0C02\u0C21\u0C3F"],
2610
+ effort: ["\u0C2A\u0C4D\u0C30\u0C2F\u0C24\u0C4D\u0C28\u0C02", "\u0C06\u0C32\u0C4B\u0C1A\u0C28", "\u0C2A\u0C35\u0C30\u0C4D"],
2595
2611
  speed: ["\u0C35\u0C47\u0C17\u0C02"],
2596
2612
  advanced: ["\u0C05\u0C27\u0C41\u0C28\u0C3E\u0C24\u0C28\u0C02"]
2597
2613
  },
2598
2614
  configurationOptions: {
2599
- instant: ["\u0C24\u0C15\u0C4D\u0C37\u0C23\u0C02"],
2615
+ instant: ["\u0C24\u0C15\u0C4D\u0C37\u0C23\u0C02", "\u0C07\u0C28\u0C4D\u200C\u0C38\u0C4D\u0C1F\u0C46\u0C02\u0C1F\u0C4D\u200C\u0C17\u0C3E"],
2600
2616
  light: ["\u0C32\u0C48\u0C1F\u0C4D"],
2601
2617
  medium: ["\u0C2E\u0C40\u0C21\u0C3F\u0C2F\u0C02"],
2602
2618
  high: ["\u0C39\u0C48"],
@@ -2615,9 +2631,9 @@ var te = {
2615
2631
  addFilesOpenerCandidates: ["\u0C2B\u0C48\u0C32\u0C4D\u200C\u0C32\u0C28\u0C41 \u0C2E\u0C30\u0C3F\u0C2F\u0C41 \u0C2E\u0C30\u0C3F\u0C28\u0C4D\u0C28\u0C3F \u0C1C\u0C4B\u0C21\u0C3F\u0C02\u0C1A\u0C02\u0C21\u0C3F"],
2616
2632
  addPhotosFilesMenuItem: ["\u0C2B\u0C4B\u0C1F\u0C4B\u0C32\u0C41 & \u0C2B\u0C48\u0C32\u0C4D\u200C\u0C32\u0C28\u0C41 \u0C05\u0C2A\u0C4D\u200C\u0C32\u0C4B\u0C21\u0C4D \u0C1A\u0C47\u0C2F\u0C02\u0C21\u0C3F"],
2617
2633
  copyResponse: ["\u0C2A\u0C4D\u0C30\u0C24\u0C3F\u0C38\u0C4D\u0C2A\u0C02\u0C26\u0C28\u0C28\u0C41 \u0C15\u0C3E\u0C2A\u0C40 \u0C1A\u0C47\u0C2F\u0C02\u0C21\u0C3F"],
2618
- modeLabels: ["\u0C24\u0C15\u0C4D\u0C37\u0C23\u0C02", "\u0C2E\u0C27\u0C4D\u0C2F\u0C38\u0C4D\u0C25", "\u0C05\u0C27\u0C3F\u0C15", "\u0C05\u0C24\u0C4D\u0C2F\u0C27\u0C3F\u0C15", "\u0C2A\u0C4D\u0C30\u0C4B", "\u0C2E\u0C40\u0C21\u0C3F\u0C2F\u0C02", "\u0C39\u0C48", "\u0C0E\u0C15\u0C4D\u0C38\u0C4D\u200C\u0C1F\u0C4D\u0C30\u0C3E \u0C39\u0C48"],
2634
+ modeLabels: ["\u0C24\u0C15\u0C4D\u0C37\u0C23\u0C02", "\u0C2E\u0C27\u0C4D\u0C2F\u0C38\u0C4D\u0C25", "\u0C05\u0C27\u0C3F\u0C15", "\u0C05\u0C24\u0C4D\u0C2F\u0C27\u0C3F\u0C15", "\u0C2A\u0C4D\u0C30\u0C4B", "\u0C2E\u0C40\u0C21\u0C3F\u0C2F\u0C02", "\u0C39\u0C48", "\u0C0E\u0C15\u0C4D\u0C38\u0C4D\u200C\u0C1F\u0C4D\u0C30\u0C3E \u0C39\u0C48", "\u0C07\u0C28\u0C4D\u200C\u0C38\u0C4D\u0C1F\u0C46\u0C02\u0C1F\u0C4D\u200C\u0C17\u0C3E"],
2619
2635
  modeOptions: {
2620
- instant: ["\u0C24\u0C15\u0C4D\u0C37\u0C23\u0C02"],
2636
+ instant: ["\u0C24\u0C15\u0C4D\u0C37\u0C23\u0C02", "\u0C07\u0C28\u0C4D\u200C\u0C38\u0C4D\u0C1F\u0C46\u0C02\u0C1F\u0C4D\u200C\u0C17\u0C3E"],
2621
2637
  medium: ["\u0C2E\u0C27\u0C4D\u0C2F\u0C38\u0C4D\u0C25", "\u0C2E\u0C40\u0C21\u0C3F\u0C2F\u0C02"],
2622
2638
  high: ["\u0C05\u0C27\u0C3F\u0C15", "\u0C39\u0C48"],
2623
2639
  extraHigh: ["\u0C05\u0C24\u0C4D\u0C2F\u0C27\u0C3F\u0C15", "\u0C0E\u0C15\u0C4D\u0C38\u0C4D\u200C\u0C1F\u0C4D\u0C30\u0C3E \u0C39\u0C48"],
@@ -2641,7 +2657,8 @@ var te = {
2641
2657
  // src/dom/locale/tl.ts
2642
2658
  var tl = {
2643
2659
  configurationAxes: {
2644
- effort: ["Pagsisikap", "Pag-iisip"],
2660
+ model: ["Mag-select ng model"],
2661
+ effort: ["Pagsisikap", "Pag-iisip", "Power"],
2645
2662
  speed: ["Bilis"]
2646
2663
  },
2647
2664
  configurationOptions: {
@@ -2670,8 +2687,8 @@ var tl = {
2670
2687
  var th = {
2671
2688
  configurationAxes: {
2672
2689
  power: ["\u0E23\u0E30\u0E14\u0E31\u0E1A\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16"],
2673
- model: ["\u0E42\u0E21\u0E40\u0E14\u0E25"],
2674
- effort: ["\u0E23\u0E30\u0E14\u0E31\u0E1A\u0E01\u0E32\u0E23\u0E04\u0E34\u0E14"],
2690
+ model: ["\u0E42\u0E21\u0E40\u0E14\u0E25", "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E42\u0E21\u0E40\u0E14\u0E25"],
2691
+ effort: ["\u0E23\u0E30\u0E14\u0E31\u0E1A\u0E01\u0E32\u0E23\u0E04\u0E34\u0E14", "\u0E23\u0E30\u0E14\u0E31\u0E1A\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16"],
2675
2692
  speed: ["\u0E04\u0E27\u0E32\u0E21\u0E40\u0E23\u0E47\u0E27"],
2676
2693
  advanced: ["\u0E02\u0E31\u0E49\u0E19\u0E2A\u0E39\u0E07"]
2677
2694
  },
@@ -2709,8 +2726,8 @@ var th = {
2709
2726
  var bn = {
2710
2727
  configurationAxes: {
2711
2728
  power: ["\u0995\u09CD\u09B7\u09AE\u09A4\u09BE"],
2712
- model: ["\u09AE\u09A1\u09C7\u09B2"],
2713
- effort: ["\u09AA\u09CD\u09B0\u099A\u09C7\u09B7\u09CD\u099F\u09BE"],
2729
+ model: ["\u09AE\u09A1\u09C7\u09B2", "\u09AE\u09A1\u09C7\u09B2 \u09AC\u09C7\u099B\u09C7 \u09A8\u09BF\u09A8"],
2730
+ effort: ["\u09AA\u09CD\u09B0\u099A\u09C7\u09B7\u09CD\u099F\u09BE", "\u0995\u09CD\u09B7\u09AE\u09A4\u09BE"],
2714
2731
  speed: ["\u0997\u09A4\u09BF"],
2715
2732
  advanced: ["\u0989\u09A8\u09CD\u09A8\u09A4"]
2716
2733
  },
@@ -2761,7 +2778,8 @@ var bn = {
2761
2778
  var ms = {
2762
2779
  configurationAxes: {
2763
2780
  power: ["Kuasa"],
2764
- effort: ["Usaha"],
2781
+ model: ["Pilih model"],
2782
+ effort: ["Usaha", "Kuasa"],
2765
2783
  speed: ["Kelajuan"],
2766
2784
  advanced: ["Lanjutan"]
2767
2785
  },
@@ -2809,8 +2827,8 @@ var ms = {
2809
2827
  var so = {
2810
2828
  configurationAxes: {
2811
2829
  power: ["Awood"],
2812
- model: ["Moodel"],
2813
- effort: ["Dadaal"],
2830
+ model: ["Moodel", "Dooro moodelka"],
2831
+ effort: ["Dadaal", "Awood"],
2814
2832
  speed: ["Xawaare"],
2815
2833
  advanced: ["Horumarsan"]
2816
2834
  },
@@ -2859,7 +2877,8 @@ var so = {
2859
2877
  var nl = {
2860
2878
  configurationAxes: {
2861
2879
  power: ["Rekenkracht"],
2862
- effort: ["Inspanning"],
2880
+ model: ["Model selecteren"],
2881
+ effort: ["Inspanning", "Rekenkracht"],
2863
2882
  speed: ["Snelheid"],
2864
2883
  advanced: ["Geavanceerd"]
2865
2884
  },
@@ -2902,8 +2921,8 @@ var nl = {
2902
2921
  var sv = {
2903
2922
  configurationAxes: {
2904
2923
  power: ["Prestanda"],
2905
- model: ["Modell"],
2906
- effort: ["Resonemangsniv\xE5"],
2924
+ model: ["Modell", "V\xE4lj modell"],
2925
+ effort: ["Resonemangsniv\xE5", "Prestanda"],
2907
2926
  speed: ["Hastighet"],
2908
2927
  advanced: ["Avancerat"]
2909
2928
  },
@@ -2946,8 +2965,8 @@ var sv = {
2946
2965
  var lv = {
2947
2966
  configurationAxes: {
2948
2967
  power: ["Jauda"],
2949
- model: ["Modelis"],
2950
- effort: ["P\u016Bles"],
2968
+ model: ["Modelis", "Izv\u0113l\u0113ties modeli"],
2969
+ effort: ["P\u016Bles", "Jauda"],
2951
2970
  speed: ["\u0100trums"],
2952
2971
  advanced: ["Papildu"]
2953
2972
  },
@@ -2992,8 +3011,8 @@ var lv = {
2992
3011
  var mk = {
2993
3012
  configurationAxes: {
2994
3013
  power: ["\u041C\u043E\u045C\u043D\u043E\u0441\u0442"],
2995
- model: ["\u041C\u043E\u0434\u0435\u043B"],
2996
- effort: ["\u041D\u0430\u043F\u043E\u0440"],
3014
+ model: ["\u041C\u043E\u0434\u0435\u043B", "\u0418\u0437\u0431\u0435\u0440\u0438 \u043C\u043E\u0434\u0435\u043B"],
3015
+ effort: ["\u041D\u0430\u043F\u043E\u0440", "\u041C\u043E\u045C\u043D\u043E\u0441\u0442"],
2997
3016
  speed: ["\u0411\u0440\u0437\u0438\u043D\u0430"],
2998
3017
  advanced: ["\u041D\u0430\u043F\u0440\u0435\u0434\u043D\u043E"]
2999
3018
  },
@@ -3041,8 +3060,8 @@ var mk = {
3041
3060
  var sq = {
3042
3061
  configurationAxes: {
3043
3062
  power: ["Fuqia"],
3044
- model: ["Modeli"],
3045
- effort: ["P\xEBrpjekje", "Arsyetim"],
3063
+ model: ["Modeli", "Zgjidh modelin"],
3064
+ effort: ["P\xEBrpjekje", "Arsyetim", "Fuqia"],
3046
3065
  speed: ["Shpejt\xEBsi"],
3047
3066
  advanced: ["T\xEB avancuara"]
3048
3067
  },
@@ -3090,7 +3109,8 @@ var sq = {
3090
3109
  var sl = {
3091
3110
  configurationAxes: {
3092
3111
  power: ["Mo\u010D"],
3093
- effort: ["Napor"],
3112
+ model: ["Izberite model"],
3113
+ effort: ["Napor", "Mo\u010D"],
3094
3114
  speed: ["Hitrost"],
3095
3115
  advanced: ["Napredno"]
3096
3116
  },
@@ -3139,8 +3159,8 @@ var sl = {
3139
3159
  var sr = {
3140
3160
  configurationAxes: {
3141
3161
  power: ["\u0421\u043D\u0430\u0433\u0430"],
3142
- model: ["\u041C\u043E\u0434\u0435\u043B"],
3143
- effort: ["\u041D\u0438\u0432\u043E", "\u041D\u0430\u043F\u043E\u0440"],
3162
+ model: ["\u041C\u043E\u0434\u0435\u043B", "\u0418\u0437\u0430\u0431\u0435\u0440\u0438 \u043C\u043E\u0434\u0435\u043B"],
3163
+ effort: ["\u041D\u0438\u0432\u043E", "\u041D\u0430\u043F\u043E\u0440", "\u0421\u043D\u0430\u0433\u0430"],
3144
3164
  speed: ["\u0411\u0440\u0437\u0438\u043D\u0430"],
3145
3165
  advanced: ["\u041D\u0430\u043F\u0440\u0435\u0434\u043D\u043E"]
3146
3166
  },
@@ -3188,8 +3208,8 @@ var sr = {
3188
3208
  var mn = {
3189
3209
  configurationAxes: {
3190
3210
  power: ["\u0427\u0430\u0434\u0430\u043B"],
3191
- model: ["\u0417\u0430\u0433\u0432\u0430\u0440"],
3192
- effort: ["\u0425\u04AF\u0447\u0438\u043D \u0447\u0430\u0440\u043C\u0430\u0439\u043B\u0442", "\u0422\u043E\u043E\u0446\u043E\u043E\u043B\u043E\u043B"],
3211
+ model: ["\u0417\u0430\u0433\u0432\u0430\u0440", "\u0417\u0430\u0433\u0432\u0430\u0440 \u0441\u043E\u043D\u0433\u043E\u0445"],
3212
+ effort: ["\u0425\u04AF\u0447\u0438\u043D \u0447\u0430\u0440\u043C\u0430\u0439\u043B\u0442", "\u0422\u043E\u043E\u0446\u043E\u043E\u043B\u043E\u043B", "\u0427\u0430\u0434\u0430\u043B"],
3193
3213
  speed: ["\u0425\u0443\u0440\u0434"],
3194
3214
  advanced: ["\u0414\u044D\u0432\u0448\u0438\u043B\u0442\u044D\u0442"]
3195
3215
  },
@@ -3240,8 +3260,8 @@ var mn = {
3240
3260
  var my = {
3241
3261
  configurationAxes: {
3242
3262
  power: ["\u1005\u103D\u1019\u103A\u1038\u1021\u102C\u1038"],
3243
- model: ["\u1019\u1031\u102C\u103A\u1012\u101A\u103A"],
3244
- effort: ["\u1021\u102C\u1038\u1011\u102F\u1010\u103A\u1019\u103E\u102F"],
3263
+ model: ["\u1019\u1031\u102C\u103A\u1012\u101A\u103A", "\u1019\u1031\u102C\u103A\u1012\u101A\u103A \u101B\u103D\u1031\u1038\u1001\u103B\u101A\u103A\u101B\u1014\u103A"],
3264
+ effort: ["\u1021\u102C\u1038\u1011\u102F\u1010\u103A\u1019\u103E\u102F", "\u1005\u103D\u1019\u103A\u1038\u1021\u102C\u1038"],
3245
3265
  speed: ["\u1021\u1019\u103C\u1014\u103A\u1014\u103E\u102F\u1014\u103A\u1038"],
3246
3266
  advanced: ["\u1021\u1006\u1004\u1037\u103A\u1019\u103C\u1004\u1037\u103A"]
3247
3267
  },
@@ -3290,8 +3310,8 @@ var my = {
3290
3310
  var ta = {
3291
3311
  configurationAxes: {
3292
3312
  power: ["\u0BA4\u0BBF\u0BB1\u0BA9\u0BCD"],
3293
- model: ["\u0BAE\u0BBE\u0BA4\u0BBF\u0BB0\u0BBF", "\u0BAE\u0BBE\u0B9F\u0BB2\u0BCD"],
3294
- effort: ["\u0BAE\u0BC1\u0BAF\u0BB1\u0BCD\u0B9A\u0BBF", "\u0B9A\u0BBF\u0BA8\u0BCD\u0BA4\u0BA9\u0BC8 \u0B85\u0BB3\u0BB5\u0BC1"],
3313
+ model: ["\u0BAE\u0BBE\u0BA4\u0BBF\u0BB0\u0BBF", "\u0BAE\u0BBE\u0B9F\u0BB2\u0BCD", "\u0BAE\u0BBE\u0B9F\u0BB2\u0BC8\u0BA4\u0BCD \u0BA4\u0BC7\u0BB0\u0BCD\u0BB5\u0BC1\u0B9A\u0BC6\u0BAF\u0BCD"],
3314
+ effort: ["\u0BAE\u0BC1\u0BAF\u0BB1\u0BCD\u0B9A\u0BBF", "\u0B9A\u0BBF\u0BA8\u0BCD\u0BA4\u0BA9\u0BC8 \u0B85\u0BB3\u0BB5\u0BC1", "\u0BA4\u0BBF\u0BB1\u0BA9\u0BCD"],
3295
3315
  speed: ["\u0BB5\u0BC7\u0B95\u0BAE\u0BCD"],
3296
3316
  advanced: ["\u0BAE\u0BC7\u0BAE\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F"]
3297
3317
  },
@@ -3299,8 +3319,8 @@ var ta = {
3299
3319
  instant: ["\u0B89\u0B9F\u0BA9\u0B9F\u0BBF"],
3300
3320
  light: ["\u0B95\u0BC1\u0BB1\u0BC8\u0BB5\u0BC1"],
3301
3321
  medium: ["\u0BAE\u0BBF\u0BA4\u0BAE\u0BBE\u0BA9"],
3302
- high: ["\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9"],
3303
- extraHigh: ["\u0BAE\u0BBF\u0B95 \u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9"],
3322
+ high: ["\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BCD"],
3323
+ extraHigh: ["\u0BAE\u0BBF\u0B95 \u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9", "\u0BAE\u0BBF\u0B95 \u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BCD"],
3304
3324
  max: ["\u0B85\u0BA4\u0BBF\u0B95\u0BAA\u0B9F\u0BCD\u0B9A\u0BAE\u0BCD"],
3305
3325
  ultra: ["\u0B85\u0BB2\u0BCD\u0B9F\u0BCD\u0BB0\u0BBE"],
3306
3326
  standard: ["\u0BB5\u0BB4\u0B95\u0BCD\u0B95\u0BAE\u0BBE\u0BA9"],
@@ -3315,11 +3335,11 @@ var ta = {
3315
3335
  addFilesOpenerCandidates: ["\u0B95\u0BCB\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BC8\u0BAF\u0BC1\u0BAE\u0BCD \u0BAE\u0BC7\u0BB2\u0BC1\u0BAE\u0BCD \u0BAA\u0BB2\u0BB5\u0BB1\u0BCD\u0BB1\u0BC8\u0BAF\u0BC1\u0BAE\u0BCD \u0B9A\u0BC7\u0BB0\u0BCD"],
3316
3336
  addPhotosFilesMenuItem: ["\u0BAA\u0B9F\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0BAE\u0BB1\u0BCD\u0BB1\u0BC1\u0BAE\u0BCD \u0B83\u0BAA\u0BC8\u0BB2\u0BCD\u0B95\u0BB3\u0BC8\u0BAA\u0BCD \u0BAA\u0BA4\u0BBF\u0BB5\u0BC7\u0BB1\u0BCD\u0BB1\u0BC1"],
3317
3337
  copyResponse: ["\u0BAA\u0BA4\u0BBF\u0BB2\u0BC8 \u0BA8\u0B95\u0BB2\u0BC6\u0B9F\u0BC1\u0B95\u0BCD\u0B95\u0BB2\u0BBE\u0BAE\u0BCD"],
3318
- modeLabels: ["\u0B89\u0B9F\u0BA9\u0B9F\u0BBF", "\u0BA8\u0B9F\u0BC1\u0BA4\u0BCD\u0BA4\u0BB0", "\u0B89\u0BAF\u0BB0\u0BCD", "\u0BAE\u0BBF\u0B95 \u0B89\u0BAF\u0BB0\u0BCD\u0BB5\u0BC1", "\u0BAA\u0BCD\u0BB0\u0BCB", "\u0BAE\u0BBF\u0BA4\u0BAE\u0BBE\u0BA9", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9", "\u0BAE\u0BBF\u0B95 \u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9"],
3338
+ modeLabels: ["\u0B89\u0B9F\u0BA9\u0B9F\u0BBF", "\u0BA8\u0B9F\u0BC1\u0BA4\u0BCD\u0BA4\u0BB0", "\u0B89\u0BAF\u0BB0\u0BCD", "\u0BAE\u0BBF\u0B95 \u0B89\u0BAF\u0BB0\u0BCD\u0BB5\u0BC1", "\u0BAA\u0BCD\u0BB0\u0BCB", "\u0BAE\u0BBF\u0BA4\u0BAE\u0BBE\u0BA9", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9", "\u0BAE\u0BBF\u0B95 \u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BCD"],
3319
3339
  modeOptions: {
3320
3340
  instant: ["\u0B89\u0B9F\u0BA9\u0B9F\u0BBF"],
3321
3341
  medium: ["\u0BA8\u0B9F\u0BC1\u0BA4\u0BCD\u0BA4\u0BB0", "\u0BAE\u0BBF\u0BA4\u0BAE\u0BBE\u0BA9"],
3322
- high: ["\u0B89\u0BAF\u0BB0\u0BCD", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9"],
3342
+ high: ["\u0B89\u0BAF\u0BB0\u0BCD", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BCD"],
3323
3343
  extraHigh: ["\u0BAE\u0BBF\u0B95 \u0B89\u0BAF\u0BB0\u0BCD\u0BB5\u0BC1", "\u0BAE\u0BBF\u0B95 \u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9"],
3324
3344
  pro: ["\u0BAA\u0BCD\u0BB0\u0BCB"]
3325
3345
  },
@@ -3462,6 +3482,7 @@ function flattenNestedLabel(localeList, group, id2) {
3462
3482
  var nonToolKeys = [
3463
3483
  "composerTextbox",
3464
3484
  "workComposerTextbox",
3485
+ "projectComposerPrefixes",
3465
3486
  "newWork",
3466
3487
  "sendButton",
3467
3488
  "searchChatsButton",
@@ -3522,6 +3543,15 @@ function escapeRegExp(value) {
3522
3543
  function anyLabelPattern(candidates) {
3523
3544
  return new RegExp(candidates.map(escapeRegExp).join("|"), "i");
3524
3545
  }
3546
+ function labelOrPrefixPattern(candidates, prefixes) {
3547
+ const sources = candidates.map(escapeRegExp);
3548
+ for (const prefix of prefixes) {
3549
+ if (prefix.length > 0) {
3550
+ sources.push(`^${escapeRegExp(prefix)}\\s+\\S`);
3551
+ }
3552
+ }
3553
+ return new RegExp(sources.join("|"), "i");
3554
+ }
3525
3555
 
3526
3556
  // src/commands/timeouts.ts
3527
3557
  async function withTimeout(promise, timeoutMs, message) {
@@ -6403,6 +6433,13 @@ function normalizePage(pageOrTab) {
6403
6433
  const value = providerValue(primary, property) ?? providerValue(maybe, property);
6404
6434
  if (isProviderRecord(value)) normalized[property] = value;
6405
6435
  }
6436
+ const rawAx = providerValue(maybe, "ax");
6437
+ if (normalized.keyboard === void 0 && isProviderRecord(rawAx)) {
6438
+ const pressKey = providerCallable(rawAx, "pressKey");
6439
+ if (pressKey !== void 0) normalized.keyboard = { press: async (key) => {
6440
+ await pressKey(null, key);
6441
+ } };
6442
+ }
6406
6443
  if (isProviderRecord(embedded)) normalized.playwright = embedded;
6407
6444
  for (const method of [
6408
6445
  "url",
@@ -6859,10 +6896,19 @@ function extractRoleMessageHtml(html) {
6859
6896
  const root = parseHtmlFragment(html);
6860
6897
  const messages = [];
6861
6898
  walkElementsWithAncestors(root, [], (element, ancestors) => {
6862
- const role = element.attrs["data-message-author-role"];
6899
+ const current = element.attrs["data-message-author-role"] === void 0 && element.attrs["data-chatgpt-search-message-ids"] !== void 0;
6900
+ if (current && !ancestors.some((ancestor) => ancestor.tag === "main")) return;
6901
+ const role = element.attrs["data-message-author-role"] ?? (current ? element.attrs["data-chatgpt-search-unit-key"]?.split(":").at(-1) : void 0);
6863
6902
  if (role === "user" || role === "assistant") {
6864
6903
  const metadataElement = [...ancestors].reverse().find((ancestor) => ancestor.attrs["data-testid"]?.startsWith("conversation-turn")) ?? element;
6865
- messages.push({ role, html: serializeChildren(element), metadataHtml: serializeNode(metadataElement) });
6904
+ let content = element;
6905
+ if (current) {
6906
+ walkElements(element, (child) => {
6907
+ if (role === "user" && child.attrs["data-user-message-bubble"] === "true" || role === "assistant" && child.attrs["data-markdown-text-style"] === "assistant-message" && child.children.length > 0) content = child;
6908
+ });
6909
+ }
6910
+ const messageHtml = serializeChildren(content).replace(/<h4\b[^>]*data-conversation-role=["']assistant["'][^>]*>[\s\S]*?<\/h4>/i, "");
6911
+ messages.push({ role, html: messageHtml, metadataHtml: serializeNode(metadataElement) });
6866
6912
  }
6867
6913
  });
6868
6914
  return messages;
@@ -7397,15 +7443,19 @@ function extractMessagesFromHtml(html, args = {}) {
7397
7443
  async function readMessages(page, args = {}) {
7398
7444
  if (typeof page.evaluate === "function") {
7399
7445
  const messages = await page.evaluate(() => {
7400
- const nodes = Array.from(document.querySelectorAll("[data-message-author-role]"));
7446
+ const legacy = Array.from(document.querySelectorAll("[data-message-author-role]"));
7447
+ const nodes = legacy.length > 0 ? legacy : Array.from(document.querySelectorAll(
7448
+ "main [data-chatgpt-search-unit-key][data-chatgpt-search-message-ids]"
7449
+ ));
7401
7450
  return nodes.map((node) => {
7402
- const role = node.getAttribute("data-message-author-role");
7451
+ const role = node.getAttribute("data-message-author-role") ?? node.getAttribute("data-chatgpt-search-unit-key")?.split(":").at(-1);
7403
7452
  if (role !== "user" && role !== "assistant") {
7404
7453
  return void 0;
7405
7454
  }
7455
+ const content = role === "user" ? node.querySelector?.('[data-user-message-bubble="true"]') : node.querySelector?.('[data-markdown-text-style="assistant-message"]');
7406
7456
  return {
7407
7457
  role,
7408
- html: node.innerHTML,
7458
+ html: content?.innerHTML || node.innerHTML.replace(/<h4\b[^>]*data-conversation-role=["']assistant["'][^>]*>[\s\S]*?<\/h4>/i, ""),
7409
7459
  metadataHtml: node.closest("[data-testid^='conversation-turn']")?.outerHTML ?? node.outerHTML
7410
7460
  };
7411
7461
  }).filter(Boolean);
@@ -7421,12 +7471,16 @@ async function readMessages(page, args = {}) {
7421
7471
  async function readLatestMessage(page, role = "assistant", format = "markdown", maxChars) {
7422
7472
  if (typeof page.evaluate === "function") {
7423
7473
  const message = await page.evaluate((wantedRole) => {
7424
- const nodes = Array.from(document.querySelectorAll(`[data-message-author-role="${wantedRole}"]`));
7474
+ const legacy = Array.from(document.querySelectorAll(`[data-message-author-role="${wantedRole}"]`));
7475
+ const nodes = legacy.length > 0 ? legacy : Array.from(document.querySelectorAll(
7476
+ `main [data-chatgpt-search-unit-key$=":${wantedRole}"][data-chatgpt-search-message-ids]`
7477
+ ));
7425
7478
  const node = nodes.at(-1);
7426
7479
  if (node === void 0) return void 0;
7480
+ const content = wantedRole === "user" ? node.querySelector?.('[data-user-message-bubble="true"]') : node.querySelector?.('[data-markdown-text-style="assistant-message"]');
7427
7481
  return {
7428
7482
  role: wantedRole,
7429
- html: node.innerHTML,
7483
+ html: content?.innerHTML || node.innerHTML.replace(/<h4\b[^>]*data-conversation-role=["']assistant["'][^>]*>[\s\S]*?<\/h4>/i, ""),
7430
7484
  metadataHtml: node.closest("[data-testid^='conversation-turn']")?.outerHTML ?? node.outerHTML
7431
7485
  };
7432
7486
  }, role).catch(() => void 0);
@@ -7445,9 +7499,15 @@ async function readLatestMessage(page, role = "assistant", format = "markdown",
7445
7499
  async function readLatestMessageText(page, role = "assistant") {
7446
7500
  if (typeof page.evaluate === "function") {
7447
7501
  return page.evaluate((wantedRole) => {
7448
- const nodes = Array.from(document.querySelectorAll(`[data-message-author-role="${wantedRole}"]`));
7502
+ const legacy = Array.from(document.querySelectorAll(`[data-message-author-role="${wantedRole}"]`));
7503
+ const nodes = legacy.length > 0 ? legacy : Array.from(document.querySelectorAll(
7504
+ `main [data-chatgpt-search-unit-key$=":${wantedRole}"][data-chatgpt-search-message-ids]`
7505
+ ));
7449
7506
  const node = nodes.at(-1);
7450
- return node?.innerText ?? node?.textContent ?? void 0;
7507
+ if (node?.getAttribute("data-chatgpt-search-unit-key") === null) return node?.innerText ?? node?.textContent ?? void 0;
7508
+ if (node === void 0) return void 0;
7509
+ const content = wantedRole === "user" ? node.querySelector?.('[data-user-message-bubble="true"]') : node.querySelector?.('[data-markdown-text-style="assistant-message"]');
7510
+ return content?.innerText || content?.textContent || (node.innerText ?? node.textContent ?? "").replace(node.querySelector?.('[data-conversation-role="assistant"]')?.textContent ?? "", "").trim();
7451
7511
  }, role).catch(() => void 0);
7452
7512
  }
7453
7513
  return readLatestMessage(page, role, "normalized_text").then((message) => message?.text).catch(() => void 0);
@@ -7455,10 +7515,14 @@ async function readLatestMessageText(page, role = "assistant") {
7455
7515
  async function readLatestMessageTextSnapshot(page, role) {
7456
7516
  if (typeof page.evaluate === "function") {
7457
7517
  return page.evaluate((wantedRole) => {
7458
- const allNodes = Array.from(document.querySelectorAll("[data-message-author-role]"));
7459
- const roleNodes = allNodes.filter((node) => node.getAttribute("data-message-author-role") === wantedRole);
7518
+ const legacy = Array.from(document.querySelectorAll("[data-message-author-role]"));
7519
+ const allNodes = legacy.length > 0 ? legacy : Array.from(document.querySelectorAll(
7520
+ "main [data-chatgpt-search-unit-key][data-chatgpt-search-message-ids]"
7521
+ )).filter((node) => /:(?:user|assistant)$/.test(node.getAttribute("data-chatgpt-search-unit-key") ?? ""));
7522
+ const roleNodes = allNodes.filter((node) => (node.getAttribute("data-message-author-role") ?? node.getAttribute("data-chatgpt-search-unit-key")?.split(":").at(-1)) === wantedRole);
7460
7523
  const latest = roleNodes.at(-1);
7461
- const latestText2 = latest?.innerText ?? latest?.textContent ?? void 0;
7524
+ const content = wantedRole === "user" ? latest?.querySelector?.('[data-user-message-bubble="true"]') : latest?.querySelector?.('[data-markdown-text-style="assistant-message"]');
7525
+ const latestText2 = content?.innerText || content?.textContent || (latest === void 0 ? void 0 : (latest.innerText ?? latest.textContent ?? "").replace(latest.querySelector?.('[data-conversation-role="assistant"]')?.textContent ?? "", "").trim());
7462
7526
  const snapshot2 = { turnCount: allNodes.length };
7463
7527
  if (latestText2 !== void 0) snapshot2.latestText = latestText2;
7464
7528
  return snapshot2;
@@ -7482,7 +7546,10 @@ async function countPageMessages(page, role) {
7482
7546
  if (typeof page.evaluate === "function") {
7483
7547
  return page.evaluate((wantedRole) => {
7484
7548
  const selector = wantedRole === void 0 ? "[data-message-author-role]" : `[data-message-author-role="${wantedRole}"]`;
7485
- return document.querySelectorAll(selector).length;
7549
+ const legacyCount = document.querySelectorAll(selector).length;
7550
+ if (legacyCount > 0) return legacyCount;
7551
+ const currentSelector = wantedRole === void 0 ? 'main [data-chatgpt-search-unit-key$=":user"][data-chatgpt-search-message-ids], main [data-chatgpt-search-unit-key$=":assistant"][data-chatgpt-search-message-ids]' : `main [data-chatgpt-search-unit-key$=":${wantedRole}"][data-chatgpt-search-message-ids]`;
7552
+ return document.querySelectorAll(currentSelector).length;
7486
7553
  }, role);
7487
7554
  }
7488
7555
  return countMessages(await readMessages(page), role);
@@ -7690,8 +7757,9 @@ var generatedArtifactDownloadClauses = [
7690
7757
  ];
7691
7758
  var cssSelectors = {
7692
7759
  assistantMessages: "[data-message-author-role='assistant']",
7693
- userMessages: "[data-message-author-role='user']",
7694
- roleMessages: "[data-message-author-role]",
7760
+ currentAssistantMessages: "main [data-chatgpt-search-unit-key$=':assistant'][data-chatgpt-search-message-ids]",
7761
+ userMessages: "[data-message-author-role='user'], main [data-chatgpt-search-unit-key$=':user'][data-chatgpt-search-message-ids]",
7762
+ roleMessages: "[data-message-author-role], main [data-chatgpt-search-unit-key$=':user'][data-chatgpt-search-message-ids], main [data-chatgpt-search-unit-key$=':assistant'][data-chatgpt-search-message-ids]",
7695
7763
  conversationTurns: "[data-testid^='conversation-turn']",
7696
7764
  hiddenFileInputs: "input[type='file']",
7697
7765
  downloadControls: downloadControlClauses.join(", "),
@@ -7702,10 +7770,10 @@ function composerTextbox(page) {
7702
7770
  return requiredLocator(page, "[contenteditable='true'], textarea");
7703
7771
  }
7704
7772
  return page.getByRole("textbox", {
7705
- name: anyLabelPattern([
7706
- ...localeLabels.composerTextbox,
7707
- ...localeLabels.workComposerTextbox
7708
- ])
7773
+ name: labelOrPrefixPattern(
7774
+ [...localeLabels.composerTextbox, ...localeLabels.workComposerTextbox],
7775
+ localeLabels.projectComposerPrefixes
7776
+ )
7709
7777
  });
7710
7778
  }
7711
7779
  function sendButton(page) {
@@ -8728,8 +8796,11 @@ async function readAssistantGenerationState(page, options = {}) {
8728
8796
  const visibleStopButtons = Array.from(document.querySelectorAll("button")).filter((button) => isVisible(button) && button.disabled !== true && button.getAttribute("aria-disabled") !== "true" && isScopedStopControl(button) && matchingLabels2(button, args.send).length === 0 && matchingLabels2(button, args.stop).length > 0);
8729
8797
  const activeSignals = [...new Set(visibleStopButtons.flatMap((button) => matchingLabels2(button, args.stop)))];
8730
8798
  const turns = Array.from(document.querySelectorAll("[data-testid^='conversation-turn']"));
8731
- const latestAssistant = Array.from(document.querySelectorAll("[data-message-author-role='assistant']")).at(-1);
8732
- const latestTurn = latestAssistant?.closest("[data-testid^='conversation-turn']") ?? turns.at(-1);
8799
+ const legacyAssistants = Array.from(document.querySelectorAll("[data-message-author-role='assistant']"));
8800
+ const latestAssistant = (legacyAssistants.length > 0 ? legacyAssistants : Array.from(document.querySelectorAll(
8801
+ 'main [data-chatgpt-search-unit-key$=":assistant"][data-chatgpt-search-message-ids]'
8802
+ ))).at(-1);
8803
+ const latestTurn = latestAssistant?.closest("[data-testid^='conversation-turn']") ?? turns.at(-1) ?? (latestAssistant?.hasAttribute?.("data-chatgpt-search-unit-key") === true ? latestAssistant : void 0);
8733
8804
  const stoppedSignals = latestTurn === void 0 ? [] : [...new Set(Array.from(latestTurn.querySelectorAll(
8734
8805
  "button, [role='status'], [aria-label], [title], p, span, div"
8735
8806
  )).filter((element) => isVisible(element)).flatMap((element) => matchingLabels2(element, args.stopped)))];
@@ -8767,7 +8838,17 @@ async function latestAssistantTurnHasResponseActions(page) {
8767
8838
  if (typeof page.evaluate === "function") {
8768
8839
  const scoped = await page.evaluate((phrases) => {
8769
8840
  const turns = Array.from(document.querySelectorAll("[data-testid^='conversation-turn']"));
8770
- if (turns.length === 0) return void 0;
8841
+ if (turns.length === 0) {
8842
+ const latest = Array.from(document.querySelectorAll('main [data-chatgpt-search-unit-key$=":assistant"][data-chatgpt-search-message-ids]')).at(-1);
8843
+ if (latest === void 0) return void 0;
8844
+ let owner = latest;
8845
+ for (let depth = 0; owner !== null && depth < 6 && owner.tagName !== "MAIN"; depth += 1, owner = owner.parentElement) {
8846
+ const assistants = Array.from(owner.querySelectorAll('[data-chatgpt-search-unit-key$=":assistant"][data-chatgpt-search-message-ids]'));
8847
+ if (owner !== latest && (assistants.length !== 1 || assistants[0] !== latest)) break;
8848
+ if (Array.from(owner.querySelectorAll("button")).some((button) => phrases.some((phrase) => [button.innerText, button.textContent, button.getAttribute("aria-label"), button.getAttribute("title")].some((value) => (value ?? "").trim().toLowerCase() === phrase.trim().toLowerCase())))) return true;
8849
+ }
8850
+ return false;
8851
+ }
8771
8852
  const latestTurn = turns.reverse().find(
8772
8853
  (turn) => turn.querySelector("[data-message-author-role='assistant']") !== null
8773
8854
  );
@@ -8937,11 +9018,15 @@ async function readWaitDomSnapshot(page) {
8937
9018
  void __combinedWaitSnapshot;
8938
9019
  const normalizeWs = (value) => value.replace(/\s+/g, " ").trim();
8939
9020
  const normalizeLower = (value) => (value ?? "").trim().toLowerCase();
8940
- const nodes = Array.from(document.querySelectorAll("[data-message-author-role]"));
8941
- const assistantNodes = nodes.filter((node) => node.getAttribute("data-message-author-role") === "assistant");
9021
+ const legacy = Array.from(document.querySelectorAll("[data-message-author-role]"));
9022
+ const nodes = legacy.length > 0 ? legacy : Array.from(document.querySelectorAll(
9023
+ "main [data-chatgpt-search-unit-key][data-chatgpt-search-message-ids]"
9024
+ )).filter((node) => /:(?:user|assistant)$/.test(node.getAttribute("data-chatgpt-search-unit-key") ?? ""));
9025
+ const assistantNodes = nodes.filter((node) => (node.getAttribute("data-message-author-role") ?? node.getAttribute("data-chatgpt-search-unit-key")?.split(":").at(-1)) === "assistant");
8942
9026
  const latestAssistant = assistantNodes.at(-1);
8943
9027
  const latestAssistantTurnIndex = latestAssistant === void 0 ? void 0 : nodes.indexOf(latestAssistant) + 1;
8944
- const normalizedText = normalizeWs(latestAssistant?.innerText ?? latestAssistant?.textContent ?? "");
9028
+ const content = latestAssistant?.querySelector?.('[data-markdown-text-style="assistant-message"]');
9029
+ const normalizedText = normalizeWs(content?.innerText || content?.textContent || (latestAssistant?.innerText ?? latestAssistant?.textContent ?? "").replace(latestAssistant?.querySelector?.('[data-conversation-role="assistant"]')?.textContent ?? "", ""));
8945
9030
  let hash = 2166136261;
8946
9031
  for (let index = 0; index < normalizedText.length; index += 1) {
8947
9032
  hash ^= normalizedText.charCodeAt(index);
@@ -8979,7 +9064,7 @@ async function readWaitDomSnapshot(page) {
8979
9064
  };
8980
9065
  const visibleStopButtons = Array.from(document.querySelectorAll("button")).filter((button) => isVisible(button) && button.disabled !== true && button.getAttribute("aria-disabled") !== "true" && isScopedStopControl(button) && matchingLabels2(button, args.send).length === 0 && matchingLabels2(button, args.stop).length > 0);
8981
9066
  const activeSignals = [...new Set(visibleStopButtons.flatMap((button) => matchingLabels2(button, args.stop)))];
8982
- const latestAssistantTurn = latestAssistant?.closest("[data-testid^='conversation-turn']") ?? Array.from(document.querySelectorAll("[data-testid^='conversation-turn']")).at(-1);
9067
+ const latestAssistantTurn = latestAssistant?.closest("[data-testid^='conversation-turn']") ?? Array.from(document.querySelectorAll("[data-testid^='conversation-turn']")).at(-1) ?? (latestAssistant?.hasAttribute?.("data-chatgpt-search-unit-key") === true ? latestAssistant : void 0);
8983
9068
  const stoppedSignals = latestAssistantTurn === void 0 ? [] : [...new Set(Array.from(latestAssistantTurn.querySelectorAll(
8984
9069
  "button, [role='status'], [aria-label], [title], p, span, div"
8985
9070
  )).filter((element) => isVisible(element)).flatMap((element) => matchingLabels2(element, args.stopped)))];
@@ -8992,7 +9077,18 @@ async function readWaitDomSnapshot(page) {
8992
9077
  const turns = Array.from(document.querySelectorAll("[data-testid^='conversation-turn']"));
8993
9078
  let hasResponseActions;
8994
9079
  if (turns.length === 0) {
8995
- hasResponseActions = void 0;
9080
+ if (latestAssistant?.hasAttribute?.("data-chatgpt-search-unit-key") === true) {
9081
+ hasResponseActions = false;
9082
+ let owner = latestAssistant;
9083
+ for (let depth = 0; owner !== null && depth < 6 && owner.tagName !== "MAIN"; depth += 1, owner = owner.parentElement) {
9084
+ const assistants = Array.from(owner.querySelectorAll('[data-chatgpt-search-unit-key$=":assistant"][data-chatgpt-search-message-ids]'));
9085
+ if (owner !== latestAssistant && (assistants.length !== 1 || assistants[0] !== latestAssistant)) break;
9086
+ if (Array.from(owner.querySelectorAll("button")).some((button) => args.actions.some((phrase) => [button.getAttribute("aria-label"), button.getAttribute("title"), button.textContent].some((value) => (value ?? "").trim().toLowerCase() === phrase.trim().toLowerCase())))) {
9087
+ hasResponseActions = true;
9088
+ break;
9089
+ }
9090
+ }
9091
+ }
8996
9092
  } else {
8997
9093
  const latestTurn = [...turns].reverse().find(
8998
9094
  (turn) => turn.querySelector("[data-message-author-role='assistant']") !== null
@@ -9133,6 +9229,9 @@ var ProbeTimeoutError = class extends Error {
9133
9229
  };
9134
9230
 
9135
9231
  // src/commands/messages.ts
9232
+ var COMPOSER_SETTLE_TIMEOUT_MS = 2e3;
9233
+ var COMPOSER_SETTLE_INTERVAL_MS = 100;
9234
+ var COMPOSER_SETTLE_ATTEMPTS = 20;
9136
9235
  function isResponseComplete(snapshot) {
9137
9236
  return snapshot.latestText.trim().length > 0 && !isTransientAssistantText(snapshot.latestText) && snapshot.textStableForMs >= snapshot.stableMs && snapshot.generation.observed && !snapshot.generation.active && !snapshot.generation.stopped && snapshot.hasResponseActions;
9138
9237
  }
@@ -9147,9 +9246,9 @@ async function composeMessage(env, args) {
9147
9246
  const text = args.mode === "append" ? `${await readLocatorText(textbox)}${args.text}` : args.text;
9148
9247
  await textbox.click?.();
9149
9248
  await textbox.fill?.(text);
9150
- const actual = normalizeWhitespace(await readLocatorText(textbox));
9151
9249
  const wanted = normalizeWhitespace(text);
9152
- if (actual !== wanted && actual.length > 0) {
9250
+ const actual = await settleComposerText(page, textbox, wanted, args.timeoutMs);
9251
+ if (actual !== wanted) {
9153
9252
  return {
9154
9253
  ok: false,
9155
9254
  status: "error",
@@ -10185,13 +10284,35 @@ function waitTargetReached(args, snapshot) {
10185
10284
  }
10186
10285
  async function readLocatorText(locator) {
10187
10286
  if (typeof locator.innerText === "function") {
10188
- return locator.innerText().catch(() => "");
10287
+ const text = await locator.innerText().catch(() => "");
10288
+ if (text.length > 0) {
10289
+ return text;
10290
+ }
10291
+ }
10292
+ if (typeof locator.inputValue === "function") {
10293
+ const value = await locator.inputValue().catch(() => "");
10294
+ if (value.length > 0) {
10295
+ return value;
10296
+ }
10189
10297
  }
10190
10298
  if (typeof locator.textContent === "function") {
10191
10299
  return locator.textContent().then((text) => text ?? "").catch(() => "");
10192
10300
  }
10193
10301
  return "";
10194
10302
  }
10303
+ async function settleComposerText(page, textbox, wanted, timeoutMs) {
10304
+ const budgetMs = Math.min(timeoutMs ?? COMPOSER_SETTLE_TIMEOUT_MS, COMPOSER_SETTLE_TIMEOUT_MS);
10305
+ const deadline = Date.now() + budgetMs;
10306
+ let actual = normalizeWhitespace(await readLocatorText(textbox));
10307
+ for (let attempt = 0; attempt < COMPOSER_SETTLE_ATTEMPTS && actual !== wanted; attempt += 1) {
10308
+ if (Date.now() >= deadline) {
10309
+ break;
10310
+ }
10311
+ await sleep(page, COMPOSER_SETTLE_INTERVAL_MS);
10312
+ actual = normalizeWhitespace(await readLocatorText(textbox));
10313
+ }
10314
+ return actual;
10315
+ }
10195
10316
  async function sleep(page, ms2) {
10196
10317
  if (typeof page.waitForTimeout === "function") {
10197
10318
  await page.waitForTimeout(ms2);
@@ -11445,13 +11566,16 @@ function detectExperienceFromSnapshot(snapshot) {
11445
11566
  if (workConfigurationOpener) {
11446
11567
  evidence.push({ source: "control", label: "Work configuration opener" });
11447
11568
  }
11569
+ if (snapshot.workPopoverOpen === true) {
11570
+ evidence.push({ source: "control", label: "Work configuration popover" });
11571
+ }
11448
11572
  if (/\/work(?:\/|$|\?)/.test(url)) {
11449
11573
  evidence.push({ source: "url", label: snapshot.url });
11450
11574
  }
11451
11575
  if (containsAny(mainText, ["work on something else", "work on anything"])) {
11452
11576
  evidence.push({ source: "heading", label: "Work composer copy" });
11453
11577
  }
11454
- const workScore = workComposer.length * 4 + (workSurfaceSelected ? 10 : 0) + (workAxes ? 6 : 0) + (workConfigurationOpener ? 6 : 0) + (/\/work(?:\/|$|\?)/.test(url) ? 3 : 0) + (containsAny(mainText, ["work on something else", "work on anything"]) ? 2 : 0);
11578
+ const workScore = workComposer.length * 4 + (workSurfaceSelected ? 10 : 0) + (workAxes ? 6 : 0) + (workConfigurationOpener ? 6 : 0) + (snapshot.workPopoverOpen === true ? 10 : 0) + (/\/work(?:\/|$|\?)/.test(url) ? 3 : 0) + (containsAny(mainText, ["work on something else", "work on anything"]) ? 2 : 0);
11455
11579
  const chatScore = chatComposer.length * 4 + (chatSurfaceSelected ? 10 : 0);
11456
11580
  let experience = "unknown";
11457
11581
  let confidence = "low";
@@ -11494,8 +11618,13 @@ async function readSurfaceSnapshot(page) {
11494
11618
  };
11495
11619
  const normalize2 = (value) => value.replace(/\s+/g, " ").trim();
11496
11620
  const normalizeComparable = (value) => normalize2(value).toLocaleLowerCase();
11497
- const wantedSurfaceLabels = new Set(surfaceOptionLabels.map(normalizeComparable));
11498
- const composerRoots = Array.from(document.querySelectorAll(
11621
+ const chatSurfaceLabels = new Set(surfaceOptionLabels.chat.map(normalizeComparable));
11622
+ const workSurfaceLabels = new Set(surfaceOptionLabels.work.map(normalizeComparable));
11623
+ const wantedSurfaceLabels = /* @__PURE__ */ new Set([...chatSurfaceLabels, ...workSurfaceLabels]);
11624
+ const currentComposerRoots = Array.from(document.querySelectorAll(
11625
+ 'main form[data-thread-find-composer="true"]'
11626
+ )).filter(visible);
11627
+ const composerRoots = currentComposerRoots.length > 0 ? currentComposerRoots : Array.from(document.querySelectorAll(
11499
11628
  "main form, main [data-testid*='composer' i], main [class*='composer' i]"
11500
11629
  )).filter(visible);
11501
11630
  const main = document.querySelector("main");
@@ -11542,14 +11671,33 @@ async function readSurfaceSnapshot(page) {
11542
11671
  "h1, h2, h3, form, [data-testid*='composer' i], [class*='composer' i]"
11543
11672
  )).filter(visible).slice(0, 32);
11544
11673
  const mainText = normalize2(surfaceTextNodes.map(labelFor).join(" ")).slice(0, 2e3);
11545
- const selectedSurfaceLabels = Array.from(new Set(Array.from(document.querySelectorAll(
11674
+ const selectedRadioLabels = Array.from(document.querySelectorAll(
11546
11675
  "[role='radio'][aria-checked='true'], [role='radio'][data-state='checked'], input[type='radio']:checked"
11547
- )).filter(visible).map(labelFor).map(normalize2).filter((label) => wantedSurfaceLabels.has(normalizeComparable(label))))).slice(0, 4);
11548
- return { composerLabels, mainControls, composerControls, controlGroups, mainText, selectedSurfaceLabels };
11549
- }, [
11550
- ...localeLabels.experienceOptions.chat,
11551
- ...localeLabels.experienceOptions.work
11552
- ]).catch(() => ({ composerLabels: [], mainControls: [], mainText: "", selectedSurfaceLabels: [] }));
11676
+ )).filter(visible).map(labelFor).map(normalize2).filter((label) => wantedSurfaceLabels.has(normalizeComparable(label)));
11677
+ const pressedGroups = Array.from(document.querySelectorAll("main [role='group']")).filter(visible).filter((group) => {
11678
+ let ancestor = group;
11679
+ for (let depth = 0; ancestor !== null && depth < 64; depth += 1) {
11680
+ if (ancestor.hasAttribute("data-message-author-role") || ancestor.tagName === "ARTICLE" || ["dialog", "menu", "listbox"].includes(ancestor.getAttribute("role") ?? "")) return false;
11681
+ ancestor = ancestor.parentElement;
11682
+ }
11683
+ return ancestor === null;
11684
+ }).map((group) => Array.from(group.querySelectorAll("button[aria-pressed]")).filter((button) => button.parentElement === group && visible(button) && button.getAttribute("disabled") === null && button.getAttribute("aria-disabled") !== "true")).filter((buttons) => buttons.length === 2 && new Set(buttons.map((button) => normalizeComparable(labelFor(button)))).size === 2 && buttons.every((button) => wantedSurfaceLabels.has(normalizeComparable(labelFor(button))) && ["true", "false"].includes(button.getAttribute("aria-pressed") ?? "")) && buttons.filter((button) => chatSurfaceLabels.has(normalizeComparable(labelFor(button)))).length === 1 && buttons.filter((button) => workSurfaceLabels.has(normalizeComparable(labelFor(button)))).length === 1 && buttons.filter((button) => button.getAttribute("aria-pressed") === "true").length === 1);
11685
+ const selectedButtonLabels = pressedGroups.length === 1 ? pressedGroups[0].filter((button) => button.getAttribute("aria-pressed") === "true").map(labelFor).map(normalize2) : [];
11686
+ const selectedSurfaceLabels = Array.from(/* @__PURE__ */ new Set([...selectedRadioLabels, ...selectedButtonLabels])).slice(0, 4);
11687
+ const workPopoverOpen = Array.from(document.querySelectorAll(
11688
+ '[data-testid="composer-intelligence-picker-content"]'
11689
+ )).filter(visible).some((root) => {
11690
+ const speed = Array.from(root.querySelectorAll(
11691
+ '[role="menuitemcheckbox"][data-fast-mode-enabled]'
11692
+ )).filter(visible);
11693
+ const sliders = Array.from(root.querySelectorAll('[role="slider"]'));
11694
+ return speed.length === 1 && sliders.length === 1;
11695
+ });
11696
+ return { composerLabels, mainControls, composerControls, controlGroups, mainText, selectedSurfaceLabels, workPopoverOpen };
11697
+ }, {
11698
+ chat: localeLabels.experienceOptions.chat,
11699
+ work: localeLabels.experienceOptions.work
11700
+ }).catch(() => ({ composerLabels: [], mainControls: [], mainText: "", selectedSurfaceLabels: [] }));
11553
11701
  return { url, ...snapshot };
11554
11702
  }
11555
11703
  function profileFromSnapshot(snapshot, experience) {
@@ -12191,7 +12339,7 @@ async function readChatPopover(page) {
12191
12339
  return current2 === null;
12192
12340
  };
12193
12341
  const normalize2 = (value) => value.replace(/\s+/g, " ").trim();
12194
- const roots = document.querySelectorAll('[data-testid="composer-intelligence-picker-content"]');
12342
+ const roots = Array.from(document.querySelectorAll('[data-testid="composer-intelligence-picker-content"]')).concat(Array.from(document.querySelectorAll("[data-model-picker-view]")));
12195
12343
  if (roots.length > 8) return { acted: false };
12196
12344
  const activeRoots = Array.from(roots).filter((node) => visible(node));
12197
12345
  if (activeRoots.length !== 1) return { acted: false };
@@ -12207,7 +12355,12 @@ async function readChatPopover(page) {
12207
12355
  ancestor = ancestor.parentNode;
12208
12356
  }
12209
12357
  if (menu?.getAttribute("data-state") !== "open" || !visible(menu)) return { acted: false };
12210
- const nodes = [];
12358
+ const currentProfile = root.hasAttribute("data-model-picker-view");
12359
+ if (currentProfile) {
12360
+ const triggers = Array.from(document.querySelectorAll('button[data-codex-intelligence-trigger="true"]')).filter((trigger) => trigger.getAttribute("id") === menu.getAttribute("aria-labelledby") && trigger.getAttribute("aria-haspopup") === "menu" && trigger.getAttribute("aria-expanded") === "true");
12361
+ if (triggers.length !== 1) return { acted: false };
12362
+ }
12363
+ const nodes = [root];
12211
12364
  const text = /* @__PURE__ */ new Map();
12212
12365
  let current = root.firstChild;
12213
12366
  let count = 0;
@@ -12241,25 +12394,28 @@ async function readChatPopover(page) {
12241
12394
  }
12242
12395
  return false;
12243
12396
  };
12244
- const owners = nodes.filter((node) => node.getAttribute("data-has-slider") === "true" && node.getAttribute("data-has-advanced-view") === "true" && node.getAttribute("data-model-selection-view") === "true" && visible(node));
12397
+ const owners = currentProfile ? [root] : nodes.filter((node) => node.getAttribute("data-has-slider") === "true" && node.getAttribute("data-has-advanced-view") === "true" && node.getAttribute("data-model-selection-view") === "true" && visible(node));
12245
12398
  if (owners.length !== 1) return { acted: false };
12246
12399
  const owner = owners[0];
12247
- const view = owner.getAttribute("data-view");
12400
+ const view = owner.getAttribute(currentProfile ? "data-model-picker-view" : "data-view");
12248
12401
  if (view !== "simple" && view !== "advanced") return { acted: false };
12249
- const panels = nodes.filter((node) => node.getAttribute("data-testid") === `composer-model-picker-slider-${view}-view` && within(node, owner) && node.getAttribute("data-active") === "true" && visible(node));
12402
+ const panels = nodes.filter((node) => (currentProfile ? node.parentNode === owner : node.getAttribute("data-testid") === `composer-model-picker-slider-${view}-view` && within(node, owner)) && node.getAttribute("data-active") === "true" && visible(node));
12250
12403
  if (panels.length !== 1) return { acted: false };
12251
12404
  const panel = panels[0];
12252
- const toggles = nodes.filter((node) => node.getAttribute("role") === "menuitem" && node.getAttribute("data-interactive") === "true" && node.getAttribute("aria-expanded") === String(view === "advanced") && within(node, owner) && visible(node));
12405
+ const toggles = nodes.filter((node) => node.getAttribute("role") === "menuitem" && node.getAttribute("data-interactive") === "true" && (currentProfile ? node.getAttribute("data-model-picker-view-toggle") === "true" : node.getAttribute("aria-expanded") === String(view === "advanced")) && within(node, owner) && visible(node));
12253
12406
  if (toggles.length > 1 || view === "simple" && toggles.length !== 1) return { acted: false };
12254
12407
  const modelNodes = view === "advanced" ? nodes.filter((node) => within(node, panel) && node.getAttribute("role") === "menuitemradio" && visible(node)) : [];
12255
12408
  if (modelNodes.length > 32) return { acted: false };
12256
12409
  const modelLabel = (node) => {
12257
- const primary = nodes.filter((child) => within(child, node) && (child.getAttribute("class") ?? "").split(/\s+/).includes("truncate"));
12410
+ const primary = nodes.filter((child) => {
12411
+ const classes = (child.getAttribute("class") ?? "").split(/\s+/);
12412
+ return within(child, node) && classes.includes("truncate") && !classes.includes("text-xs");
12413
+ });
12258
12414
  return normalize2(primary.length === 1 ? text.get(primary[0]) ?? "" : text.get(node) ?? "");
12259
12415
  };
12260
12416
  const snapshot = {
12261
12417
  view,
12262
- rootIndex: Array.from(roots).indexOf(root),
12418
+ rootIndex: currentProfile ? Array.from(document.querySelectorAll("[data-model-picker-view]")).indexOf(root) : Array.from(document.querySelectorAll('[data-testid="composer-intelligence-picker-content"]')).indexOf(root),
12263
12419
  toggleIndex: nodes.filter((node) => node.getAttribute("role") === "menuitem" && node.getAttribute("data-interactive") === "true").indexOf(toggles[0]),
12264
12420
  modelOptions: modelNodes.map((node) => ({
12265
12421
  label: modelLabel(node),
@@ -12267,6 +12423,7 @@ async function readChatPopover(page) {
12267
12423
  index: nodes.filter((row) => within(row, panel) && row.getAttribute("role") === "menuitemradio").indexOf(node)
12268
12424
  })).filter((option) => option.label.length > 0)
12269
12425
  };
12426
+ if (currentProfile) snapshot.profile = "model_picker_v2";
12270
12427
  const triggerId = menu.getAttribute("aria-labelledby");
12271
12428
  if (triggerId !== null && triggerId.length > 0 && triggerId.length < 240 && !/\s/.test(triggerId)) snapshot.triggerId = triggerId;
12272
12429
  const checked = snapshot.modelOptions.filter((option) => option.checked);
@@ -12285,7 +12442,7 @@ async function readChatPopover(page) {
12285
12442
  if (sliders.length === 1) {
12286
12443
  const slider = sliders[0];
12287
12444
  const powers = nodes.filter((node) => within(slider, node) && within(node, panel) && node.getAttribute("role") === "menuitem" && visible(node) && config.powerLabels.some((label) => normalize2(node.getAttribute("aria-label") ?? "").toLocaleLowerCase() === label.toLocaleLowerCase()));
12288
- const sliderOwners = nodes.filter((node) => within(slider, node) && within(node, panel) && node.hasAttribute("data-model-reasoning-effort-slider"));
12445
+ const sliderOwners = nodes.filter((node) => within(slider, node) && within(node, panel) && node.hasAttribute(currentProfile ? "data-model-picker-power-slider" : "data-model-reasoning-effort-slider"));
12289
12446
  const integer = (name) => {
12290
12447
  const raw = slider.getAttribute(name);
12291
12448
  return raw !== null && /^-?\d+$/.test(raw) && Number.isSafeInteger(Number(raw)) ? Number(raw) : void 0;
@@ -12314,11 +12471,46 @@ async function readChatPopover(page) {
12314
12471
  return observation !== void 0 && observation !== null && typeof observation.acted === "boolean" ? observation : { acted: false };
12315
12472
  }
12316
12473
  function observedRoot(page, snapshot) {
12317
- const roots = page.locator?.('[data-testid="composer-intelligence-picker-content"]');
12474
+ const roots = page.locator?.(snapshot.profile === "model_picker_v2" ? "[data-model-picker-view]" : '[data-testid="composer-intelligence-picker-content"]');
12318
12475
  return roots?.nth?.(snapshot.rootIndex) ?? (snapshot.rootIndex === 0 ? roots : void 0);
12319
12476
  }
12477
+ async function openChatPopover(page) {
12478
+ if ((await readChatPopover(page)).snapshot !== void 0) return true;
12479
+ let trigger = page.locator?.('button[data-codex-intelligence-trigger="true"][aria-haspopup="menu"]');
12480
+ let count = await trigger?.count?.().catch(() => 0) ?? 0;
12481
+ if (count === 0) return void 0;
12482
+ if (count > 1 && count <= 8 && typeof trigger?.filter === "function") {
12483
+ trigger = trigger.filter({ visible: true });
12484
+ count = await trigger.count?.().catch(() => 0) ?? 0;
12485
+ }
12486
+ if (count !== 1) return false;
12487
+ if (trigger?.click === void 0 || trigger.evaluate === void 0) return void 0;
12488
+ const actionable = await trigger.evaluate((element) => {
12489
+ if (element.tagName !== "BUTTON" || element.getAttribute("data-codex-intelligence-trigger") !== "true" || element.getAttribute("aria-haspopup") !== "menu") return void 0;
12490
+ let current = element;
12491
+ for (let depth = 0; current !== null && depth < 64; depth += 1) {
12492
+ if (current.nodeType !== 1) break;
12493
+ const node = current;
12494
+ if (node.hidden || node.hasAttribute("hidden") || node.hasAttribute("inert") || node.disabled || node.getAttribute("aria-hidden") === "true" || node.getAttribute("aria-disabled") === "true") return false;
12495
+ const style = window.getComputedStyle(node);
12496
+ if (style.display === "none" || style.visibility === "hidden" || style.opacity === "0" || current === element && style.pointerEvents === "none") return false;
12497
+ current = current.parentNode;
12498
+ }
12499
+ if (current?.nodeType === 1) return false;
12500
+ const rect = element.getBoundingClientRect();
12501
+ return rect.width > 0 && rect.height > 0 && element.getAttribute("aria-expanded") === "false";
12502
+ }).catch(() => void 0);
12503
+ if (actionable === void 0) return void 0;
12504
+ if (!actionable) return false;
12505
+ await trigger.click();
12506
+ for (let attempt = 0; attempt < 5; attempt += 1) {
12507
+ await waitForPopoverTransition(page, 100);
12508
+ if ((await readChatPopover(page)).snapshot !== void 0) return true;
12509
+ }
12510
+ return false;
12511
+ }
12320
12512
  async function clickObservedControl(page, snapshot, modelIndex) {
12321
- const selector = modelIndex === void 0 ? '[role="menuitem"][data-interactive="true"]' : '[data-testid="composer-model-picker-slider-advanced-view"][data-active="true"] [role="menuitemradio"]';
12513
+ const selector = modelIndex === void 0 ? '[role="menuitem"][data-interactive="true"]' : snapshot.profile === "model_picker_v2" ? ':scope > [data-active="true"] [role="menuitemradio"]' : '[data-testid="composer-model-picker-slider-advanced-view"][data-active="true"] [role="menuitemradio"]';
12322
12514
  const candidates = observedRoot(page, snapshot)?.locator?.(selector);
12323
12515
  const index = modelIndex ?? snapshot.toggleIndex;
12324
12516
  const target = candidates?.nth?.(index) ?? (index === 0 ? candidates : void 0);
@@ -12332,7 +12524,7 @@ async function clickObservedControl(page, snapshot, modelIndex) {
12332
12524
  if (node.hidden || node.hasAttribute("hidden") || node.hasAttribute("inert") || node.getAttribute("aria-hidden") === "true" || node.getAttribute("aria-disabled") === "true" || node.getAttribute("data-active") === "false") return void 0;
12333
12525
  const style = window.getComputedStyle(node);
12334
12526
  if (style.display === "none" || style.visibility === "hidden" || style.opacity === "0" || style.pointerEvents === "none") return void 0;
12335
- if (node.getAttribute("data-testid") === "composer-intelligence-picker-content") owned = true;
12527
+ if (node.getAttribute("data-testid") === "composer-intelligence-picker-content" || node.getAttribute("data-model-picker-view") === "simple" || node.getAttribute("data-model-picker-view") === "advanced") owned = true;
12336
12528
  current = current.parentNode;
12337
12529
  }
12338
12530
  const rect = element.getBoundingClientRect();
@@ -12348,7 +12540,8 @@ async function clickObservedControl(page, snapshot, modelIndex) {
12348
12540
  if (label.length > 512) return void 0;
12349
12541
  let parent = child.parentNode;
12350
12542
  for (let depth = 0; parent !== null && parent !== element && depth < 64; depth += 1) {
12351
- if (parent.nodeType === 1 && (parent.getAttribute("class") ?? "").split(/\s+/).includes("truncate")) {
12543
+ const classes = parent.nodeType === 1 ? (parent.getAttribute("class") ?? "").split(/\s+/) : [];
12544
+ if (classes.includes("truncate") && !classes.includes("text-xs")) {
12352
12545
  primary.set(parent, (primary.get(parent) ?? "") + (child.nodeValue ?? ""));
12353
12546
  }
12354
12547
  parent = parent.parentNode;
@@ -12362,9 +12555,9 @@ async function clickObservedControl(page, snapshot, modelIndex) {
12362
12555
  if (child === element || child === null) break;
12363
12556
  child = child.nextSibling;
12364
12557
  }
12365
- return { role: element.getAttribute("role"), expanded: element.getAttribute("aria-expanded"), label: (primary.size === 1 ? [...primary.values()][0] : label).replace(/\s+/g, " ").trim() };
12558
+ return { role: element.getAttribute("role"), expanded: element.getAttribute("aria-expanded"), viewToggle: element.getAttribute("data-model-picker-view-toggle"), label: (primary.size === 1 ? [...primary.values()][0] : label).replace(/\s+/g, " ").trim() };
12366
12559
  }).catch(() => void 0);
12367
- if (state === void 0 || state.role !== (modelIndex === void 0 ? "menuitem" : "menuitemradio") || modelIndex === void 0 && state.expanded !== String(snapshot.view === "advanced")) return false;
12560
+ if (state === void 0 || state.role !== (modelIndex === void 0 ? "menuitem" : "menuitemradio") || modelIndex === void 0 && (snapshot.profile === "model_picker_v2" ? state.viewToggle !== "true" : state.expanded !== String(snapshot.view === "advanced"))) return false;
12368
12561
  const expectedModel = snapshot.modelOptions.find((option) => option.index === modelIndex);
12369
12562
  if (modelIndex !== void 0 && (expectedModel === void 0 || state.label !== expectedModel.label)) return false;
12370
12563
  await target.click();
@@ -12375,9 +12568,9 @@ async function closeChatPopover(page, before) {
12375
12568
  if (snapshot === void 0) return false;
12376
12569
  const escapedId = snapshot.triggerId?.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
12377
12570
  const menu = escapedId === void 0 ? void 0 : page.locator?.(`[role="menu"][aria-labelledby="${escapedId}"]`);
12378
- if (menu?.press !== void 0 && await menu.count?.() === 1) await menu.press("Escape");
12379
- else if (page.keyboard?.press !== void 0) await page.keyboard.press("Escape");
12571
+ if (page.keyboard?.press !== void 0) await page.keyboard.press("Escape");
12380
12572
  else if (page.cua?.keypress !== void 0) await page.cua.keypress({ keys: ["ESC"] });
12573
+ else if (menu?.press !== void 0 && await menu.count?.() === 1) await menu.press("Escape");
12381
12574
  else return false;
12382
12575
  for (let attempt = 0; attempt < 5; attempt += 1) {
12383
12576
  await waitForPopoverTransition(page, 100);
@@ -12392,6 +12585,7 @@ async function waitForPopoverTransition(page, milliseconds) {
12392
12585
  async function reopenChatPopover(page, before) {
12393
12586
  if (before.triggerId === void 0) return void 0;
12394
12587
  if (!await closeChatPopover(page, before)) return void 0;
12588
+ if (before.profile === "model_picker_v2") await waitForPopoverTransition(page, 250);
12395
12589
  const trigger = page.locator?.(`[id="${before.triggerId.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"]`);
12396
12590
  if (trigger?.click === void 0 || trigger.evaluate === void 0 || await trigger.count?.() !== 1) return void 0;
12397
12591
  const isVisible = () => trigger.evaluate((element) => {
@@ -12488,7 +12682,7 @@ async function selectChatPopoverEffort(page, labels) {
12488
12682
  return void 0;
12489
12683
  }
12490
12684
  if (before.slider.current === target) return before;
12491
- const candidates = observedRoot(page, before)?.locator?.('[data-testid="composer-model-picker-slider-simple-view"][data-active="true"] [role="slider"]');
12685
+ const candidates = observedRoot(page, before)?.locator?.(before.profile === "model_picker_v2" ? ':scope > [data-active="true"] [role="slider"]' : '[data-testid="composer-model-picker-slider-simple-view"][data-active="true"] [role="slider"]');
12492
12686
  const locator = candidates?.nth?.(before.slider.index) ?? (before.slider.index === 0 ? candidates : void 0);
12493
12687
  if (locator?.press === void 0 || locator.evaluate === void 0 || await locator.count?.() !== 1) return void 0;
12494
12688
  const locatorState = await locator.evaluate((element) => {
@@ -12502,6 +12696,12 @@ async function selectChatPopoverEffort(page, labels) {
12502
12696
  if (style.display === "none" || style.visibility === "hidden" || style.opacity === "0" || style.pointerEvents === "none") return void 0;
12503
12697
  if (node.getAttribute("data-testid") === "composer-model-picker-slider-simple-view" && node.getAttribute("data-active") === "true") panel = true;
12504
12698
  if (node.getAttribute("data-testid") === "composer-intelligence-picker-content") owned = true;
12699
+ if (node.getAttribute("data-model-picker-view") === "simple") {
12700
+ owned = true;
12701
+ let track = element;
12702
+ while (track !== null && track.parentNode !== node) track = track.parentNode;
12703
+ if (track?.nodeType === 1 && track.getAttribute("data-active") === "true") panel = true;
12704
+ }
12505
12705
  current = current.parentNode;
12506
12706
  }
12507
12707
  const rect = element.getBoundingClientRect();
@@ -12548,7 +12748,10 @@ async function selectChatPopoverSpeed(page, labels) {
12548
12748
  const initial = (await readChatPopover(page)).snapshot;
12549
12749
  if (initial === void 0) return void 0;
12550
12750
  try {
12551
- const simple = await setChatPopoverView(page, "simple");
12751
+ const opened = await setChatPopoverView(page, "simple");
12752
+ if (opened?.speed === void 0 || opened.speedIndex === void 0) return void 0;
12753
+ await waitForPopoverTransition(page, 200);
12754
+ const simple = (await readChatPopover(page)).snapshot;
12552
12755
  if (simple?.speed === void 0 || simple.speedIndex === void 0) return void 0;
12553
12756
  const desired = ["Standard", "Fast"].filter((value) => labels.some((label) => normalizeForLabelMatch(label) === normalizeForLabelMatch(value)));
12554
12757
  if (desired.length !== 1) return void 0;
@@ -12556,7 +12759,7 @@ async function selectChatPopoverSpeed(page, labels) {
12556
12759
  const candidates = observedRoot(page, simple)?.locator?.('[role="menuitemcheckbox"][data-fast-mode-enabled]');
12557
12760
  const locator = candidates?.nth?.(simple.speedIndex) ?? (simple.speedIndex === 0 ? candidates : void 0);
12558
12761
  if (locator?.click === void 0 || locator.evaluate === void 0 || await locator.count?.() !== 1) return void 0;
12559
- const state = await locator.evaluate((element) => {
12762
+ const readActionableState = () => locator.evaluate((element) => {
12560
12763
  let current = element;
12561
12764
  let owned = false, simple2 = false, open6 = false;
12562
12765
  for (let depth = 0; current !== null && depth < 64; depth += 1) {
@@ -12565,7 +12768,10 @@ async function selectChatPopoverSpeed(page, labels) {
12565
12768
  if (node.hidden || node.hasAttribute("hidden") || node.hasAttribute("inert") || node.getAttribute("aria-hidden") === "true" || node.getAttribute("aria-disabled") === "true" || node.getAttribute("data-active") === "false" || node.getAttribute("data-locked") === "true") return void 0;
12566
12769
  const style = window.getComputedStyle(node);
12567
12770
  if (style.display === "none" || style.visibility === "hidden" || style.opacity === "0" || style.pointerEvents === "none") return void 0;
12568
- if (node.getAttribute("role") === "menu" && node.getAttribute("data-state") === "open") open6 = true;
12771
+ if (node.getAttribute("role") === "menu" && node.getAttribute("data-state") === "open") {
12772
+ open6 = true;
12773
+ if (style.opacity !== "1") return void 0;
12774
+ }
12569
12775
  if (node.getAttribute("data-testid") === "composer-intelligence-picker-content") owned = true;
12570
12776
  if (node.getAttribute("data-view") === "simple" && node.getAttribute("data-model-selection-view") === "true") simple2 = true;
12571
12777
  current = current.parentNode;
@@ -12573,13 +12779,22 @@ async function selectChatPopoverSpeed(page, labels) {
12573
12779
  const rect = element.getBoundingClientRect();
12574
12780
  if (current?.nodeType === 1 || !owned || !simple2 || !open6 || rect.width <= 0 || rect.height <= 0 || element.getAttribute("role") !== "menuitemcheckbox" || element.getAttribute("data-visible") !== "true") return void 0;
12575
12781
  const checked = element.getAttribute("aria-checked");
12576
- return element.getAttribute("data-fast-mode-enabled") === checked ? checked : void 0;
12782
+ return element.getAttribute("data-fast-mode-enabled") === checked ? checked ?? void 0 : void 0;
12577
12783
  }).catch(() => void 0);
12784
+ let state;
12785
+ for (let attempt = 0; attempt < 8; attempt += 1) {
12786
+ state = await readActionableState();
12787
+ if (state === String(simple.speed === "Fast")) break;
12788
+ if (attempt + 1 < 8) await waitForPopoverTransition(page, 100);
12789
+ }
12578
12790
  if (state !== String(simple.speed === "Fast")) return void 0;
12579
12791
  await locator.click();
12580
- await waitForPopoverTransition(page, 150);
12581
- const after = (await readChatPopover(page)).snapshot;
12582
- return after !== void 0 && after.speed === desired[0] ? after.speed : void 0;
12792
+ for (let attempt = 0; attempt < 6; attempt += 1) {
12793
+ await waitForPopoverTransition(page, attempt === 0 ? 150 : 100);
12794
+ const after = (await readChatPopover(page)).snapshot;
12795
+ if (after?.speed === desired[0]) return desired[0];
12796
+ }
12797
+ return void 0;
12583
12798
  } finally {
12584
12799
  await setChatPopoverView(page, initial.view);
12585
12800
  }
@@ -12827,7 +13042,8 @@ async function getMode(env, args = {}) {
12827
13042
  }
12828
13043
  const page = env.page;
12829
13044
  try {
12830
- const modes = await visibleModeButtonLabelList(page);
13045
+ const popover = (await readChatPopover(page)).snapshot;
13046
+ const modes = popover?.effort === void 0 ? await visibleModeButtonLabelList(page) : [popover.effort];
12831
13047
  const warnings = modes.length === 0 ? ["No mode-labelled composer control is currently visible, so the active ChatGPT mode could not be read."] : [];
12832
13048
  return resultOk({ modes }, await contextFromPage(page), warnings);
12833
13049
  } catch (error) {
@@ -12914,6 +13130,8 @@ async function clickFirstUniqueButton(page, labels) {
12914
13130
  return false;
12915
13131
  }
12916
13132
  async function clickModeOpener(page, modeButtons) {
13133
+ const currentPicker = await openChatPopover(page);
13134
+ if (currentPicker !== void 0) return currentPicker;
12917
13135
  if (await clickFirstUniqueButton(page, modeButtons)) {
12918
13136
  return true;
12919
13137
  }
@@ -13379,14 +13597,30 @@ async function inspectConfiguration(env, args = {}) {
13379
13597
  }
13380
13598
  const page = env.page;
13381
13599
  try {
13382
- const detected = await detectExperience(
13600
+ let detected = await detectExperience(
13383
13601
  env,
13384
13602
  args.timeoutMs === void 0 ? {} : { timeoutMs: args.timeoutMs }
13385
13603
  );
13386
13604
  if (!detected.ok || detected.data === void 0) {
13387
13605
  return forwardFailure2(detected);
13388
13606
  }
13389
- if (args.experience !== void 0 && detected.data.experience !== args.experience) {
13607
+ let detectedData = detected.data;
13608
+ if (args.experience !== void 0 && detectedData.experience !== args.experience) {
13609
+ const retryMs = Math.min(
13610
+ args.timeoutMs ?? CONFIGURATION_CONTROL_DISCOVERY_TIMEOUT_MS,
13611
+ CONFIGURATION_CONTROL_DISCOVERY_TIMEOUT_MS
13612
+ );
13613
+ const attempts = Math.max(1, Math.ceil(Math.max(0, retryMs) / CONFIGURATION_CONTROL_POLL_MS));
13614
+ for (let attempt = 1; attempt < attempts; attempt += 1) {
13615
+ await page.waitForTimeout?.(CONFIGURATION_CONTROL_POLL_MS);
13616
+ const retried = await detectExperience(env, { timeoutMs: 0 });
13617
+ if (!retried.ok || retried.data === void 0) return forwardFailure2(retried);
13618
+ detected = retried;
13619
+ detectedData = retried.data;
13620
+ if (detectedData.experience === args.experience) break;
13621
+ }
13622
+ }
13623
+ if (args.experience !== void 0 && detectedData.experience !== args.experience) {
13390
13624
  return {
13391
13625
  ok: false,
13392
13626
  status: "unsupported",
@@ -13395,16 +13629,16 @@ async function inspectConfiguration(env, args = {}) {
13395
13629
  kind: "selector_drift",
13396
13630
  code: "experience_mismatch",
13397
13631
  fieldPath: "experience",
13398
- message: `Configuration inspection expected ${args.experience}, but the visible composer is ${detected.data.experience}. Call experience.open first or omit the expected experience.`,
13632
+ message: `Configuration inspection expected ${args.experience}, but the visible composer is ${detectedData.experience}. Call experience.open first or omit the expected experience.`,
13399
13633
  resumable: true
13400
13634
  },
13401
13635
  context: await contextFromPage(page, {
13402
- experience: detected.data.experience,
13403
- selectorProfile: detected.data.selectorProfile
13636
+ experience: detectedData.experience,
13637
+ selectorProfile: detectedData.selectorProfile
13404
13638
  })
13405
13639
  };
13406
13640
  }
13407
- const experience = detected.data.experience;
13641
+ const experience = detectedData.experience;
13408
13642
  const initialChatPopover = experience !== "unknown" ? (await readChatPopover(page)).snapshot : void 0;
13409
13643
  const initialPanel = await readConfigurationPanel(page);
13410
13644
  const rootOpened = experience !== "unknown" && await waitForConfigurationRoot(
@@ -13412,13 +13646,11 @@ async function inspectConfiguration(env, args = {}) {
13412
13646
  experience,
13413
13647
  args.timeoutMs
13414
13648
  );
13415
- if (rootOpened) {
13416
- await page.waitForTimeout?.(150);
13417
- }
13418
- if (experience !== "unknown" && (await readChatPopover(page)).snapshot !== void 0) {
13649
+ const openedPopover = rootOpened ? await waitForObservedChatPopover(page) : void 0;
13650
+ if (experience !== "unknown" && openedPopover !== void 0) {
13419
13651
  try {
13420
13652
  const chat = await inspectChatPopover(page);
13421
- const data2 = configurationInspectionFromPopover(experience, detected.data.evidence, chat);
13653
+ const data2 = configurationInspectionFromPopover(experience, detectedData.evidence, chat);
13422
13654
  if (args.includeOptions === false) data2.options = {};
13423
13655
  return resultOk(
13424
13656
  data2,
@@ -13440,8 +13672,8 @@ async function inspectConfiguration(env, args = {}) {
13440
13672
  const rootItems = rootOpened ? await enumerateVisibleMenuItems(page) : [];
13441
13673
  const data = configurationInspectionFromSurface(
13442
13674
  experience,
13443
- detected.data.selectorProfile,
13444
- detected.data.evidence,
13675
+ detectedData.selectorProfile,
13676
+ detectedData.evidence,
13445
13677
  panel,
13446
13678
  rootItems
13447
13679
  );
@@ -13565,7 +13797,11 @@ async function applyConfiguration(env, args) {
13565
13797
  }
13566
13798
  const selected = [];
13567
13799
  for (const [axis, requested] of selectionEntries(desired)) {
13568
- const currentResult = selected.length === 0 ? beforeResult : await inspectConfiguration(env, { includeOptions: false });
13800
+ const currentResult = selected.length === 0 ? beforeResult : await inspectConfiguration(env, {
13801
+ experience: before.experience,
13802
+ includeOptions: false,
13803
+ ...args.timeoutMs === void 0 ? {} : { timeoutMs: args.timeoutMs }
13804
+ });
13569
13805
  if (!currentResult.ok || currentResult.data === void 0) return forwardFailure2(currentResult);
13570
13806
  const current = currentResult.data;
13571
13807
  if (current.experience !== before.experience) return configurationFailure(page, before, desired, selected, "The composer experience changed during configuration selection.", "experience_mismatch");
@@ -13646,7 +13882,7 @@ function configurationInspectionFromSurface(experience, detectedProfile, evidenc
13646
13882
  const modelRows = menuItems.filter((item) => item.role === "menuitemradio" && item.hasPopup !== true && (/^(?:gpt[\s-]|o\d+(?:\b|$)|\d+(?:\.\d+)?$)/i.test(item.label) || localeLabels.modeOptions.latest.some((label) => visibleLabelMatches(item.label, label))));
13647
13883
  const chatOptions = menuItems.filter((item) => !isConfigurationAxisRow(item.label) && !modelRows.includes(item) && item.hasPopup !== true && !/^gpt[\s-]/i.test(item.label) && item.ariaLabel !== "Select model").map(menuItemToOption);
13648
13884
  const selectedEffort = chatOptions.filter((option) => option.selected === true);
13649
- const openerValue = panel.openerValue ?? panel.openerLabel;
13885
+ const openerValue = chatOpenerEffortValue(panel.openerValue ?? panel.openerLabel);
13650
13886
  if (chatOptions.length > 0 || openerValue !== void 0) availableAxes.push(axis);
13651
13887
  if (selectedEffort.length === 1) active[axis] = selectedEffort[0].label;
13652
13888
  else if (openerValue !== void 0 && !isConfigurationAxisRow(openerValue) && !/^(?:thinking effort|select model|power)$/i.test(openerValue)) active[axis] = openerValue;
@@ -13669,6 +13905,24 @@ function configurationInspectionFromSurface(experience, detectedProfile, evidenc
13669
13905
  evidence
13670
13906
  };
13671
13907
  }
13908
+ function chatOpenerEffortValue(value) {
13909
+ if (value === void 0) return void 0;
13910
+ const combined = /^(?:gpt[-\s]*)?[\p{N}]+(?:[.,][\p{N}]+)?\s+(.+)$/u.exec(value.trim());
13911
+ if (combined === null) return value;
13912
+ const effort = combined[1]?.trim();
13913
+ if (effort === void 0 || effort.length === 0) return void 0;
13914
+ const labels = [
13915
+ ...localeLabels.configurationOptions.instant,
13916
+ ...localeLabels.configurationOptions.light,
13917
+ ...localeLabels.configurationOptions.medium,
13918
+ ...localeLabels.configurationOptions.high,
13919
+ ...localeLabels.configurationOptions.extraHigh,
13920
+ ...localeLabels.configurationOptions.max,
13921
+ ...localeLabels.configurationOptions.ultra,
13922
+ ...localeLabels.configurationOptions.pro
13923
+ ];
13924
+ return labels.some((label) => normalizeForLabelMatch(label) === normalizeForLabelMatch(effort)) ? effort : void 0;
13925
+ }
13672
13926
  async function inspectWorkAxisOptions(env, axis) {
13673
13927
  const page = env.page;
13674
13928
  const options = (await openWorkAxisOptions(env, axis)).map(menuItemToOption);
@@ -13682,12 +13936,24 @@ async function selectWorkAxis(env, axis, requested, timeoutMs) {
13682
13936
  }
13683
13937
  const initialPopover = (await readChatPopover(page)).snapshot;
13684
13938
  await openConfigurationRoot(page, "work");
13685
- if ((await readChatPopover(page)).snapshot !== void 0) {
13939
+ if (await waitForObservedChatPopover(page) !== void 0) {
13686
13940
  try {
13687
13941
  const labels = configurationSemanticLabels(requested);
13688
13942
  if (axis === "model") return await selectChatPopoverModel(page, labels);
13689
13943
  if (axis === "effort") return await selectChatPopoverEffort(page, labels);
13690
- if (axis === "speed") return await selectChatPopoverSpeed(page, labels);
13944
+ if (axis === "speed") {
13945
+ for (let attempt = 0; attempt < 3; attempt += 1) {
13946
+ const selected = await selectChatPopoverSpeed(page, labels);
13947
+ if (selected !== void 0) return selected;
13948
+ if (attempt + 1 < 3) {
13949
+ await closeConfigurationMenus(page);
13950
+ await page.waitForTimeout?.(CONFIGURATION_SELECTION_RETRY_MS);
13951
+ await openConfigurationRoot(page, "work");
13952
+ if (await waitForObservedChatPopover(page) === void 0) return void 0;
13953
+ }
13954
+ }
13955
+ return void 0;
13956
+ }
13691
13957
  return void 0;
13692
13958
  } finally {
13693
13959
  if (initialPopover === void 0) await closeConfigurationMenus(page);
@@ -13820,7 +14086,7 @@ async function selectChatAxis(env, axis, requested, timeoutMs) {
13820
14086
  const page = env.page;
13821
14087
  const initialPopover = (await readChatPopover(page)).snapshot;
13822
14088
  await openConfigurationRoot(page, "chat");
13823
- if ((await readChatPopover(page)).snapshot !== void 0) {
14089
+ if (await waitForObservedChatPopover(page) !== void 0) {
13824
14090
  try {
13825
14091
  if (axis === "modelVersion") return await selectChatPopoverModel(page, configurationSemanticLabels(requested));
13826
14092
  if (axis === "effort" || axis === "intelligence" || axis === "model") return await selectChatPopoverEffort(page, configurationSemanticLabels(requested));
@@ -13841,6 +14107,10 @@ async function selectChatAxis(env, axis, requested, timeoutMs) {
13841
14107
  }
13842
14108
  async function openConfigurationRoot(page, experience) {
13843
14109
  if (experience !== "unknown" && (await readChatPopover(page)).snapshot !== void 0) return true;
14110
+ if (experience !== "unknown") {
14111
+ const currentPicker = await openChatPopover(page);
14112
+ if (currentPicker !== void 0) return currentPicker;
14113
+ }
13844
14114
  const existing = await readConfigurationPanel(page);
13845
14115
  if (existing.axisRows.length > 0) {
13846
14116
  return true;
@@ -13915,6 +14185,14 @@ async function openConfigurationRoot(page, experience) {
13915
14185
  }
13916
14186
  return false;
13917
14187
  }
14188
+ async function waitForObservedChatPopover(page) {
14189
+ for (let attempt = 0; attempt < 6; attempt += 1) {
14190
+ const snapshot = (await readChatPopover(page)).snapshot;
14191
+ if (snapshot !== void 0) return snapshot;
14192
+ if (attempt + 1 < 6) await page.waitForTimeout?.(100);
14193
+ }
14194
+ return void 0;
14195
+ }
13918
14196
  function configurationMenuLooksRecognized(items, experience, openerLabel) {
13919
14197
  if (items.some((item) => /(?:model|mode|effort|speed)-(?:switcher|selector)|model-switcher/i.test(item.testId ?? ""))) {
13920
14198
  return true;
@@ -14190,6 +14468,7 @@ function normalizeConfigurationId(value) {
14190
14468
  async function closeConfigurationMenus(page) {
14191
14469
  if ((await readChatPopover(page)).snapshot !== void 0) {
14192
14470
  await closeChatPopover(page);
14471
+ await page.waitForTimeout?.(350);
14193
14472
  return;
14194
14473
  }
14195
14474
  if (!await pressConfigurationEscape(page)) return;
@@ -15341,12 +15620,16 @@ async function tryGeneratedFilePreviewDownload(page, args) {
15341
15620
  const selected = selectGeneratedFileAffordance(candidates, args);
15342
15621
  if (selected === void 0) return void 0;
15343
15622
  try {
15344
- const assistantMessages = requiredLocator(page, cssSelectors.assistantMessages);
15345
- const assistantCount = await locatorCountWithTimeout(
15623
+ let assistantMessages = requiredLocator(page, cssSelectors.assistantMessages);
15624
+ let assistantCount = await locatorCountWithTimeout(
15346
15625
  assistantMessages,
15347
15626
  localGuardTimeout(timeoutMs, 5e3),
15348
15627
  "generated_file_assistant_count_timeout"
15349
15628
  );
15629
+ if (assistantCount === 0) {
15630
+ assistantMessages = requiredLocator(page, cssSelectors.currentAssistantMessages);
15631
+ assistantCount = await locatorCountWithTimeout(assistantMessages, localGuardTimeout(timeoutMs, 5e3), "generated_file_assistant_count_timeout");
15632
+ }
15350
15633
  if (selected.assistantIndex < 0 || selected.assistantIndex >= assistantCount) {
15351
15634
  throw new Error("The selected generated-file assistant turn is no longer present.");
15352
15635
  }
@@ -15374,11 +15657,12 @@ async function tryGeneratedFilePreviewDownload(page, args) {
15374
15657
  }
15375
15658
  await affordance.click({ timeoutMs: localGuardTimeout(timeoutMs, 1e4) });
15376
15659
  const labelledPreview = requiredLocator(page, `section[aria-label="${escapeCssAttribute(selected.filename)}"]`);
15660
+ const currentPreview = page.getByRole?.("tabpanel", { name: selected.filename, exact: true });
15377
15661
  const workbookPreviews = requiredLocator(page, "section[data-testid^='popcorn-']");
15378
15662
  const workbookPreview = typeof workbookPreviews.filter === "function" ? workbookPreviews.filter({ hasText: selected.filename }) : void 0;
15379
15663
  const download = await waitForPreviewDownloadControl(
15380
15664
  page,
15381
- workbookPreview === void 0 ? [labelledPreview] : [labelledPreview, workbookPreview],
15665
+ [...currentPreview === void 0 ? [] : [currentPreview], labelledPreview, ...workbookPreview === void 0 ? [] : [workbookPreview]],
15382
15666
  timeoutMs
15383
15667
  );
15384
15668
  if (download === void 0) {
@@ -15419,17 +15703,20 @@ async function inspectGeneratedFileAffordances(page, timeoutMs) {
15419
15703
  const prefix = downloadLabels.map((label) => label.trim()).filter(Boolean).sort((left, right) => right.length - left.length).find((label) => lowered.startsWith(`${label.toLocaleLowerCase()} `));
15420
15704
  return prefix === void 0 ? trimmed : trimmed.slice(prefix.length).trim();
15421
15705
  };
15422
- const assistants = Array.from(document.querySelectorAll("[data-message-author-role='assistant']"));
15706
+ const legacyAssistants = Array.from(document.querySelectorAll("[data-message-author-role='assistant']"));
15707
+ const assistants = legacyAssistants.length > 0 ? legacyAssistants : Array.from(document.querySelectorAll(
15708
+ 'main [data-chatgpt-search-unit-key$=":assistant"][data-chatgpt-search-message-ids]'
15709
+ ));
15423
15710
  return assistants.flatMap(
15424
15711
  (assistant, assistantIndex) => Array.from(assistant.querySelectorAll("button[aria-label], a[download], a[href*='/backend-api/files/']")).filter(visible).map((element) => {
15425
15712
  const controlLabel = (element.getAttribute("aria-label") ?? element.textContent ?? "").trim();
15426
15713
  const text = (element.textContent ?? "").trim();
15427
15714
  return {
15428
15715
  assistantIndex,
15429
- filename: normalizedFilename(controlLabel),
15716
+ filename: controlLabel.startsWith("Open preview of ") ? controlLabel.slice("Open preview of ".length) : normalizedFilename(controlLabel),
15430
15717
  controlLabel,
15431
15718
  tag: element.tagName.toLocaleLowerCase(),
15432
- textFilename: normalizedFilename(text)
15719
+ textFilename: controlLabel.startsWith("Open preview of ") ? element.parentElement?.querySelector("[title]")?.getAttribute("title") ?? "" : normalizedFilename(text)
15433
15720
  };
15434
15721
  }).filter((item) => (item.tag === "button" || item.tag === "a") && fileLike(item.filename) && item.filename === item.textFilename).map(({ assistantIndex: index, filename, controlLabel, tag }) => ({
15435
15722
  assistantIndex: index,
@@ -51380,11 +51667,18 @@ var optionalScenarios = [
51380
51667
  read: true
51381
51668
  });
51382
51669
  if (!generatedFileAskCanProceed(asked)) return fail2(meta, asked);
51383
- const result3 = await downloadLatestAttachment({
51384
- destDir: context.reportDir,
51385
- filenamePattern: "^chatgpt-live-smoke\\.csv$",
51386
- timeoutMs: 12e4
51387
- }, env);
51670
+ const downloadDeadline = Date.now() + 12e4;
51671
+ let result3;
51672
+ do {
51673
+ result3 = await downloadLatestAttachment({
51674
+ destDir: context.reportDir,
51675
+ filenamePattern: "^chatgpt-live-smoke\\.csv$",
51676
+ timeoutMs: Math.max(1e3, downloadDeadline - Date.now())
51677
+ }, env);
51678
+ if (!generatedFileDownloadShouldRetry(result3) || Date.now() >= downloadDeadline) break;
51679
+ if (env.page?.waitForTimeout !== void 0) await env.page.waitForTimeout(1e3);
51680
+ else await new Promise((resolve8) => setTimeout(resolve8, 1e3));
51681
+ } while (true);
51388
51682
  const download = typeof result3.data === "object" && result3.data !== null ? result3.data : void 0;
51389
51683
  const path3 = download?.path;
51390
51684
  const bytes = path3 === void 0 ? 0 : (await stat7(path3).catch(() => void 0))?.size ?? 0;
@@ -51447,7 +51741,10 @@ var optionalScenarios = [
51447
51741
  })
51448
51742
  ];
51449
51743
  function generatedFileAskCanProceed(result3) {
51450
- return result3.ok || result3.status === "partial" && result3.data?.generationActive !== true;
51744
+ return result3.ok || result3.status === "partial" && (result3.data?.generationActive !== true || result3.data?.submissionState === "submitted");
51745
+ }
51746
+ function generatedFileDownloadShouldRetry(result3) {
51747
+ return !result3.ok && result3.blocker?.kind === "download_unavailable" && result3.blocker.code === "download_filename_not_found";
51451
51748
  }
51452
51749
  function scenario(name, required, enabled, run) {
51453
51750
  return {