πŸ“„ File detail

components/PromptInput/PromptInputHelpMenu.tsx

🧩 .tsxπŸ“ 358 linesπŸ’Ύ 32,811 bytesπŸ“ text
← Back to All Files

🎯 Use case

This file lives under β€œcomponents/”, which covers shared React UI pieces. On the API surface it exposes PromptInputHelpMenu β€” mainly types, interfaces, or factory objects. Dependencies touch React UI, bun:bundle, and src. It composes internal code from keybindings, services, and utils (relative imports).

Generated from folder role, exports, dependency roots, and inline comments β€” not hand-reviewed for every path.

🧠 Inline summary

import { c as _c } from "react/compiler-runtime"; import { feature } from 'bun:bundle'; import * as React from 'react'; import { Box, Text } from 'src/ink.js'; import { getPlatform } from 'src/utils/platform.js';

πŸ“€ Exports (heuristic)

  • PromptInputHelpMenu

πŸ“š External import roots

Package roots from from "…" (relative paths omitted).

  • react
  • bun:bundle
  • src

πŸ–₯️ Source preview

import { c as _c } from "react/compiler-runtime";
import { feature } from 'bun:bundle';
import * as React from 'react';
import { Box, Text } from 'src/ink.js';
import { getPlatform } from 'src/utils/platform.js';
import { isKeybindingCustomizationEnabled } from '../../keybindings/loadUserBindings.js';
import { useShortcutDisplay } from '../../keybindings/useShortcutDisplay.js';
import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js';
import { isFastModeAvailable, isFastModeEnabled } from '../../utils/fastMode.js';
import { getNewlineInstructions } from './utils.js';

/** Format a shortcut for display in the help menu (e.g., "ctrl+o" β†’ "ctrl + o") */
function formatShortcut(shortcut: string): string {
  return shortcut.replace(/\+/g, ' + ');
}
type Props = {
  dimColor?: boolean;
  fixedWidth?: boolean;
  gap?: number;
  paddingX?: number;
};
export function PromptInputHelpMenu(props) {
  const $ = _c(99);
  const {
    dimColor,
    fixedWidth,
    gap,
    paddingX
  } = props;
  const t0 = useShortcutDisplay("app:toggleTranscript", "Global", "ctrl+o");
  let t1;
  if ($[0] !== t0) {
    t1 = formatShortcut(t0);
    $[0] = t0;
    $[1] = t1;
  } else {
    t1 = $[1];
  }
  const transcriptShortcut = t1;
  const t2 = useShortcutDisplay("app:toggleTodos", "Global", "ctrl+t");
  let t3;
  if ($[2] !== t2) {
    t3 = formatShortcut(t2);
    $[2] = t2;
    $[3] = t3;
  } else {
    t3 = $[3];
  }
  const todosShortcut = t3;
  const t4 = useShortcutDisplay("chat:undo", "Chat", "ctrl+_");
  let t5;
  if ($[4] !== t4) {
    t5 = formatShortcut(t4);
    $[4] = t4;
    $[5] = t5;
  } else {
    t5 = $[5];
  }
  const undoShortcut = t5;
  const t6 = useShortcutDisplay("chat:stash", "Chat", "ctrl+s");
  let t7;
  if ($[6] !== t6) {
    t7 = formatShortcut(t6);
    $[6] = t6;
    $[7] = t7;
  } else {
    t7 = $[7];
  }
  const stashShortcut = t7;
  const t8 = useShortcutDisplay("chat:cycleMode", "Chat", "shift+tab");
  let t9;
  if ($[8] !== t8) {
    t9 = formatShortcut(t8);
    $[8] = t8;
    $[9] = t9;
  } else {
    t9 = $[9];
  }
  const cycleModeShortcut = t9;
  const t10 = useShortcutDisplay("chat:modelPicker", "Chat", "alt+p");
  let t11;
  if ($[10] !== t10) {
    t11 = formatShortcut(t10);
    $[10] = t10;
    $[11] = t11;
  } else {
    t11 = $[11];
  }
  const modelPickerShortcut = t11;
  const t12 = useShortcutDisplay("chat:fastMode", "Chat", "alt+o");
  let t13;
  if ($[12] !== t12) {
    t13 = formatShortcut(t12);
    $[12] = t12;
    $[13] = t13;
  } else {
    t13 = $[13];
  }
  const fastModeShortcut = t13;
  const t14 = useShortcutDisplay("chat:externalEditor", "Chat", "ctrl+g");
  let t15;
  if ($[14] !== t14) {
    t15 = formatShortcut(t14);
    $[14] = t14;
    $[15] = t15;
  } else {
    t15 = $[15];
  }
  const externalEditorShortcut = t15;
  const t16 = useShortcutDisplay("app:toggleTerminal", "Global", "meta+j");
  let t17;
  if ($[16] !== t16) {
    t17 = formatShortcut(t16);
    $[16] = t16;
    $[17] = t17;
  } else {
    t17 = $[17];
  }
  const terminalShortcut = t17;
  const t18 = useShortcutDisplay("chat:imagePaste", "Chat", "ctrl+v");
  let t19;
  if ($[18] !== t18) {
    t19 = formatShortcut(t18);
    $[18] = t18;
    $[19] = t19;
  } else {
    t19 = $[19];
  }
  const imagePasteShortcut = t19;
  let t20;
  if ($[20] !== dimColor || $[21] !== terminalShortcut) {
    t20 = feature("TERMINAL_PANEL") ? getFeatureValue_CACHED_MAY_BE_STALE("tengu_terminal_panel", false) ? <Box><Text dimColor={dimColor}>{terminalShortcut} for terminal</Text></Box> : null : null;
    $[20] = dimColor;
    $[21] = terminalShortcut;
    $[22] = t20;
  } else {
    t20 = $[22];
  }
  const terminalShortcutElement = t20;
  const t21 = fixedWidth ? 24 : undefined;
  let t22;
  if ($[23] !== dimColor) {
    t22 = <Box><Text dimColor={dimColor}>! for bash mode</Text></Box>;
    $[23] = dimColor;
    $[24] = t22;
  } else {
    t22 = $[24];
  }
  let t23;
  if ($[25] !== dimColor) {
    t23 = <Box><Text dimColor={dimColor}>/ for commands</Text></Box>;
    $[25] = dimColor;
    $[26] = t23;
  } else {
    t23 = $[26];
  }
  let t24;
  if ($[27] !== dimColor) {
    t24 = <Box><Text dimColor={dimColor}>@ for file paths</Text></Box>;
    $[27] = dimColor;
    $[28] = t24;
  } else {
    t24 = $[28];
  }
  let t25;
  if ($[29] !== dimColor) {
    t25 = <Box><Text dimColor={dimColor}>{"& for background"}</Text></Box>;
    $[29] = dimColor;
    $[30] = t25;
  } else {
    t25 = $[30];
  }
  let t26;
  if ($[31] !== dimColor) {
    t26 = <Box><Text dimColor={dimColor}>/btw for side question</Text></Box>;
    $[31] = dimColor;
    $[32] = t26;
  } else {
    t26 = $[32];
  }
  let t27;
  if ($[33] !== t21 || $[34] !== t22 || $[35] !== t23 || $[36] !== t24 || $[37] !== t25 || $[38] !== t26) {
    t27 = <Box flexDirection="column" width={t21}>{t22}{t23}{t24}{t25}{t26}</Box>;
    $[33] = t21;
    $[34] = t22;
    $[35] = t23;
    $[36] = t24;
    $[37] = t25;
    $[38] = t26;
    $[39] = t27;
  } else {
    t27 = $[39];
  }
  const t28 = fixedWidth ? 35 : undefined;
  let t29;
  if ($[40] !== dimColor) {
    t29 = <Box><Text dimColor={dimColor}>double tap esc to clear input</Text></Box>;
    $[40] = dimColor;
    $[41] = t29;
  } else {
    t29 = $[41];
  }
  let t30;
  if ($[42] !== cycleModeShortcut || $[43] !== dimColor) {
    t30 = <Box><Text dimColor={dimColor}>{cycleModeShortcut}{" "}{false ? "to cycle modes" : "to auto-accept edits"}</Text></Box>;
    $[42] = cycleModeShortcut;
    $[43] = dimColor;
    $[44] = t30;
  } else {
    t30 = $[44];
  }
  let t31;
  if ($[45] !== dimColor || $[46] !== transcriptShortcut) {
    t31 = <Box><Text dimColor={dimColor}>{transcriptShortcut} for verbose output</Text></Box>;
    $[45] = dimColor;
    $[46] = transcriptShortcut;
    $[47] = t31;
  } else {
    t31 = $[47];
  }
  let t32;
  if ($[48] !== dimColor || $[49] !== todosShortcut) {
    t32 = <Box><Text dimColor={dimColor}>{todosShortcut} to toggle tasks</Text></Box>;
    $[48] = dimColor;
    $[49] = todosShortcut;
    $[50] = t32;
  } else {
    t32 = $[50];
  }
  let t33;
  if ($[51] === Symbol.for("react.memo_cache_sentinel")) {
    t33 = getNewlineInstructions();
    $[51] = t33;
  } else {
    t33 = $[51];
  }
  let t34;
  if ($[52] !== dimColor) {
    t34 = <Box><Text dimColor={dimColor}>{t33}</Text></Box>;
    $[52] = dimColor;
    $[53] = t34;
  } else {
    t34 = $[53];
  }
  let t35;
  if ($[54] !== t28 || $[55] !== t29 || $[56] !== t30 || $[57] !== t31 || $[58] !== t32 || $[59] !== t34 || $[60] !== terminalShortcutElement) {
    t35 = <Box flexDirection="column" width={t28}>{t29}{t30}{t31}{t32}{terminalShortcutElement}{t34}</Box>;
    $[54] = t28;
    $[55] = t29;
    $[56] = t30;
    $[57] = t31;
    $[58] = t32;
    $[59] = t34;
    $[60] = terminalShortcutElement;
    $[61] = t35;
  } else {
    t35 = $[61];
  }
  let t36;
  if ($[62] !== dimColor || $[63] !== undoShortcut) {
    t36 = <Box><Text dimColor={dimColor}>{undoShortcut} to undo</Text></Box>;
    $[62] = dimColor;
    $[63] = undoShortcut;
    $[64] = t36;
  } else {
    t36 = $[64];
  }
  let t37;
  if ($[65] !== dimColor) {
    t37 = getPlatform() !== "windows" && <Box><Text dimColor={dimColor}>ctrl + z to suspend</Text></Box>;
    $[65] = dimColor;
    $[66] = t37;
  } else {
    t37 = $[66];
  }
  let t38;
  if ($[67] !== dimColor || $[68] !== imagePasteShortcut) {
    t38 = <Box><Text dimColor={dimColor}>{imagePasteShortcut} to paste images</Text></Box>;
    $[67] = dimColor;
    $[68] = imagePasteShortcut;
    $[69] = t38;
  } else {
    t38 = $[69];
  }
  let t39;
  if ($[70] !== dimColor || $[71] !== modelPickerShortcut) {
    t39 = <Box><Text dimColor={dimColor}>{modelPickerShortcut} to switch model</Text></Box>;
    $[70] = dimColor;
    $[71] = modelPickerShortcut;
    $[72] = t39;
  } else {
    t39 = $[72];
  }
  let t40;
  if ($[73] !== dimColor || $[74] !== fastModeShortcut) {
    t40 = isFastModeEnabled() && isFastModeAvailable() && <Box><Text dimColor={dimColor}>{fastModeShortcut} to toggle fast mode</Text></Box>;
    $[73] = dimColor;
    $[74] = fastModeShortcut;
    $[75] = t40;
  } else {
    t40 = $[75];
  }
  let t41;
  if ($[76] !== dimColor || $[77] !== stashShortcut) {
    t41 = <Box><Text dimColor={dimColor}>{stashShortcut} to stash prompt</Text></Box>;
    $[76] = dimColor;
    $[77] = stashShortcut;
    $[78] = t41;
  } else {
    t41 = $[78];
  }
  let t42;
  if ($[79] !== dimColor || $[80] !== externalEditorShortcut) {
    t42 = <Box><Text dimColor={dimColor}>{externalEditorShortcut} to edit in $EDITOR</Text></Box>;
    $[79] = dimColor;
    $[80] = externalEditorShortcut;
    $[81] = t42;
  } else {
    t42 = $[81];
  }
  let t43;
  if ($[82] !== dimColor) {
    t43 = isKeybindingCustomizationEnabled() && <Box><Text dimColor={dimColor}>/keybindings to customize</Text></Box>;
    $[82] = dimColor;
    $[83] = t43;
  } else {
    t43 = $[83];
  }
  let t44;
  if ($[84] !== t36 || $[85] !== t37 || $[86] !== t38 || $[87] !== t39 || $[88] !== t40 || $[89] !== t41 || $[90] !== t42 || $[91] !== t43) {
    t44 = <Box flexDirection="column">{t36}{t37}{t38}{t39}{t40}{t41}{t42}{t43}</Box>;
    $[84] = t36;
    $[85] = t37;
    $[86] = t38;
    $[87] = t39;
    $[88] = t40;
    $[89] = t41;
    $[90] = t42;
    $[91] = t43;
    $[92] = t44;
  } else {
    t44 = $[92];
  }
  let t45;
  if ($[93] !== gap || $[94] !== paddingX || $[95] !== t27 || $[96] !== t35 || $[97] !== t44) {
    t45 = <Box paddingX={paddingX} flexDirection="row" gap={gap}>{t27}{t35}{t44}</Box>;
    $[93] = gap;
    $[94] = paddingX;
    $[95] = t27;
    $[96] = t35;
    $[97] = t44;
    $[98] = t45;
  } else {
    t45 = $[98];
  }
  return t45;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmZWF0dXJlIiwiUmVhY3QiLCJCb3giLCJUZXh0IiwiZ2V0UGxhdGZvcm0iLCJpc0tleWJpbmRpbmdDdXN0b21pemF0aW9uRW5hYmxlZCIsInVzZVNob3J0Y3V0RGlzcGxheSIsImdldEZlYXR1cmVWYWx1ZV9DQUNIRURfTUFZX0JFX1NUQUxFIiwiaXNGYXN0TW9kZUF2YWlsYWJsZSIsImlzRmFzdE1vZGVFbmFibGVkIiwiZ2V0TmV3bGluZUluc3RydWN0aW9ucyIsImZvcm1hdFNob3J0Y3V0Iiwic2hvcnRjdXQiLCJyZXBsYWNlIiwiUHJvcHMiLCJkaW1Db2xvciIsImZpeGVkV2lkdGgiLCJnYXAiLCJwYWRkaW5nWCIsIlByb21wdElucHV0SGVscE1lbnUiLCJwcm9wcyIsIiQiLCJfYyIsInQwIiwidDEiLCJ0cmFuc2NyaXB0U2hvcnRjdXQiLCJ0MiIsInQzIiwidG9kb3NTaG9ydGN1dCIsInQ0IiwidDUiLCJ1bmRvU2hvcnRjdXQiLCJ0NiIsInQ3Iiwic3Rhc2hTaG9ydGN1dCIsInQ4IiwidDkiLCJjeWNsZU1vZGVTaG9ydGN1dCIsInQxMCIsInQxMSIsIm1vZGVsUGlja2VyU2hvcnRjdXQiLCJ0MTIiLCJ0MTMiLCJmYXN0TW9kZVNob3J0Y3V0IiwidDE0IiwidDE1IiwiZXh0ZXJuYWxFZGl0b3JTaG9ydGN1dCIsInQxNiIsInQxNyIsInRlcm1pbmFsU2hvcnRjdXQiLCJ0MTgiLCJ0MTkiLCJpbWFnZVBhc3RlU2hvcnRjdXQiLCJ0MjAiLCJ0ZXJtaW5hbFNob3J0Y3V0RWxlbWVudCIsInQyMSIsInVuZGVmaW5lZCIsInQyMiIsInQyMyIsInQyNCIsInQyNSIsInQyNiIsInQyNyIsInQyOCIsInQyOSIsInQzMCIsInQzMSIsInQzMiIsInQzMyIsIlN5bWJvbCIsImZvciIsInQzNCIsInQzNSIsInQzNiIsInQzNyIsInQzOCIsInQzOSIsInQ0MCIsInQ0MSIsInQ0MiIsInQ0MyIsInQ0NCIsInQ0NSJdLCJzb3VyY2VzIjpbIlByb21wdElucHV0SGVscE1lbnUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZlYXR1cmUgfSBmcm9tICdidW46YnVuZGxlJ1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBCb3gsIFRleHQgfSBmcm9tICdzcmMvaW5rLmpzJ1xuaW1wb3J0IHsgZ2V0UGxhdGZvcm0gfSBmcm9tICdzcmMvdXRpbHMvcGxhdGZvcm0uanMnXG5pbXBvcnQgeyBpc0tleWJpbmRpbmdDdXN0b21pemF0aW9uRW5hYmxlZCB9IGZyb20gJy4uLy4uL2tleWJpbmRpbmdzL2xvYWRVc2VyQmluZGluZ3MuanMnXG5pbXBvcnQgeyB1c2VTaG9ydGN1dERpc3BsYXkgfSBmcm9tICcuLi8uLi9rZXliaW5kaW5ncy91c2VTaG9ydGN1dERpc3BsYXkuanMnXG5pbXBvcnQgeyBnZXRGZWF0dXJlVmFsdWVfQ0FDSEVEX01BWV9CRV9TVEFMRSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FuYWx5dGljcy9ncm93dGhib29rLmpzJ1xuaW1wb3J0IHsgaXNGYXN0TW9kZUF2YWlsYWJsZSwgaXNGYXN0TW9kZUVuYWJsZWQgfSBmcm9tICcuLi8uLi91dGlscy9mYXN0TW9kZS5qcydcbmltcG9ydCB7IGdldE5ld2xpbmVJbnN0cnVjdGlvbnMgfSBmcm9tICcuL3V0aWxzLmpzJ1xuXG4vKiogRm9ybWF0IGEgc2hvcnRjdXQgZm9yIGRpc3BsYXkgaW4gdGhlIGhlbHAgbWVudSAoZS5nLiwgXCJjdHJsK29cIiDihpIgXCJjdHJsICsgb1wiKSAqL1xuZnVuY3Rpb24gZm9ybWF0U2hvcnRjdXQoc2hvcnRjdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzaG9ydGN1dC5yZXBsYWNlKC9cXCsvZywgJyArICcpXG59XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGRpbUNvbG9yPzogYm9vbGVhblxuICBmaXhlZFdpZHRoPzogYm9vbGVhblxuICBnYXA/OiBudW1iZXJcbiAgcGFkZGluZ1g/OiBudW1iZXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFByb21wdElucHV0SGVscE1lbnUocHJvcHM6IFByb3BzKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgY29uc3QgeyBkaW1Db2xvciwgZml4ZWRXaWR0aCwgZ2FwLCBwYWRkaW5nWCB9ID0gcHJvcHNcblxuICAvLyBHZXQgY29uZmlndXJlZCBzaG9ydGN1dHMgZnJvbSBrZXliaW5kaW5nIHN5c3RlbVxuICBjb25zdCB0cmFuc2NyaXB0U2hvcnRjdXQgPSBmb3JtYXRTaG9ydGN1dChcbiAgICB1c2VTaG9ydGN1dERpc3BsYXkoJ2FwcDp0b2dnbGVUcmFuc2NyaXB0JywgJ0dsb2JhbCcsICdjdHJsK28nKSxcbiAgKVxuICBjb25zdCB0b2Rvc1Nob3J0Y3V0ID0gZm9ybWF0U2hvcnRjdXQoXG4gICAgdXNlU2hvcnRjdXREaXNwbGF5KCdhcHA6dG9nZ2xlVG9kb3MnLCAnR2xvYmFsJywgJ2N0cmwrdCcpLFxuICApXG4gIGNvbnN0IHVuZG9TaG9ydGN1dCA9IGZvcm1hdFNob3J0Y3V0KFxuICAgIHVzZVNob3J0Y3V0RGlzcGxheSgnY2hhdDp1bmRvJywgJ0NoYXQnLCAnY3RybCtfJyksXG4gIClcbiAgY29uc3Qgc3Rhc2hTaG9ydGN1dCA9IGZvcm1hdFNob3J0Y3V0KFxuICAgIHVzZVNob3J0Y3V0RGlzcGxheSgnY2hhdDpzdGFzaCcsICdDaGF0JywgJ2N0cmwrcycpLFxuICApXG4gIGNvbnN0IGN5Y2xlTW9kZVNob3J0Y3V0ID0gZm9ybWF0U2hvcnRjdXQoXG4gICAgdXNlU2hvcnRjdXREaXNwbGF5KCdjaGF0OmN5Y2xlTW9kZScsICdDaGF0JywgJ3NoaWZ0K3RhYicpLFxuICApXG4gIGNvbnN0IG1vZGVsUGlja2VyU2hvcnRjdXQgPSBmb3JtYXRTaG9ydGN1dChcbiAgICB1c2VTaG9ydGN1dERpc3BsYXkoJ2NoYXQ6bW9kZWxQaWNrZXInLCAnQ2hhdCcsICdhbHQrcCcpLFxuICApXG4gIGNvbnN0IGZhc3RNb2RlU2hvcnRjdXQgPSBmb3JtYXRTaG9ydGN1dChcbiAgICB1c2VTaG9ydGN1dERpc3BsYXkoJ2NoYXQ6ZmFzdE1vZGUnLCAnQ2hhdCcsICdhbHQrbycpLFxuICApXG4gIGNvbnN0IGV4dGVybmFsRWRpdG9yU2hvcnRjdXQgPSBmb3JtYXRTaG9ydGN1dChcbiAgICB1c2VTaG9ydGN1dERpc3BsYXkoJ2NoYXQ6ZXh0ZXJuYWxFZGl0b3InLCAnQ2hhdCcsICdjdHJsK2cnKSxcbiAgKVxuICBjb25zdCB0ZXJtaW5hbFNob3J0Y3V0ID0gZm9ybWF0U2hvcnRjdXQoXG4gICAgdXNlU2hvcnRjdXREaXNwbGF5KCdhcHA6dG9nZ2xlVGVybWluYWwnLCAnR2xvYmFsJywgJ21ldGEraicpLFxuICApXG4gIGNvbnN0IGltYWdlUGFzdGVTaG9ydGN1dCA9IGZvcm1hdFNob3J0Y3V0KFxuICAgIHVzZVNob3J0Y3V0RGlzcGxheSgnY2hhdDppbWFnZVBhc3RlJywgJ0NoYXQnLCAnY3RybCt2JyksXG4gIClcblxuICAvLyBDb21wdXRlIHRlcm1pbmFsIHNob3J0Y3V0IGVsZW1lbnQgb3V0c2lkZSBKU1ggdG8gc2F0aXNmeSBmZWF0dXJlKCkgY29uc3RyYWludFxuICBjb25zdCB0ZXJtaW5hbFNob3J0Y3V0RWxlbWVudCA9IGZlYXR1cmUoJ1RFUk1JTkFMX1BBTkVMJykgPyAoXG4gICAgZ2V0RmVhdHVyZVZhbHVlX0NBQ0hFRF9NQVlfQkVfU1RBTEUoJ3Rlbmd1X3Rlcm1pbmFsX3BhbmVsJywgZmFsc2UpID8gKFxuICAgICAgPEJveD5cbiAgICAgICAgPFRleHQgZGltQ29sb3I9e2RpbUNvbG9yfT57dGVybWluYWxTaG9ydGN1dH0gZm9yIHRlcm1pbmFsPC9UZXh0PlxuICAgICAgPC9Cb3g+XG4gICAgKSA6IG51bGxcbiAgKSA6IG51bGxcblxuICByZXR1cm4gKFxuICAgIDxCb3ggcGFkZGluZ1g9e3BhZGRpbmdYfSBmbGV4RGlyZWN0aW9uPVwicm93XCIgZ2FwPXtnYXB9PlxuICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgd2lkdGg9e2ZpeGVkV2lkdGggPyAyNCA6IHVuZGVmaW5lZH0+XG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I9e2RpbUNvbG9yfT4hIGZvciBiYXNoIG1vZGU8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPXtkaW1Db2xvcn0+LyBmb3IgY29tbWFuZHM8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPXtkaW1Db2xvcn0+QCBmb3IgZmlsZSBwYXRoczwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I9e2RpbUNvbG9yfT4mIGZvciBiYWNrZ3JvdW5kPC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VGV4dCBkaW1Db2xvcj17ZGltQ29sb3J9Pi9idHcgZm9yIHNpZGUgcXVlc3Rpb248L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiB3aWR0aD17Zml4ZWRXaWR0aCA/IDM1IDogdW5kZWZpbmVkfT5cbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VGV4dCBkaW1Db2xvcj17ZGltQ29sb3J9PmRvdWJsZSB0YXAgZXNjIHRvIGNsZWFyIGlucHV0PC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VGV4dCBkaW1Db2xvcj17ZGltQ29sb3J9PlxuICAgICAgICAgICAge2N5Y2xlTW9kZVNob3J0Y3V0fXsnICd9XG4gICAgICAgICAgICB7XCJleHRlcm5hbFwiID09PSAnYW50J1xuICAgICAgICAgICAgICA/ICd0byBjeWNsZSBtb2RlcydcbiAgICAgICAgICAgICAgOiAndG8gYXV0by1hY2NlcHQgZWRpdHMnfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I9e2RpbUNvbG9yfT5cbiAgICAgICAgICAgIHt0cmFuc2NyaXB0U2hvcnRjdXR9IGZvciB2ZXJib3NlIG91dHB1dFxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I9e2RpbUNvbG9yfT57dG9kb3NTaG9ydGN1dH0gdG8gdG9nZ2xlIHRhc2tzPC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgICAge3Rlcm1pbmFsU2hvcnRjdXRFbGVtZW50fVxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPXtkaW1Db2xvcn0+e2dldE5ld2xpbmVJbnN0cnVjdGlvbnMoKX08L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VGV4dCBkaW1Db2xvcj17ZGltQ29sb3J9Pnt1bmRvU2hvcnRjdXR9IHRvIHVuZG88L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgICB7Z2V0UGxhdGZvcm0oKSAhPT0gJ3dpbmRvd3MnICYmIChcbiAgICAgICAgICA8Qm94PlxuICAgICAgICAgICAgPFRleHQgZGltQ29sb3I9e2RpbUNvbG9yfT5jdHJsICsgeiB0byBzdXNwZW5kPC9UZXh0PlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICApfVxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPXtkaW1Db2xvcn0+e2ltYWdlUGFzdGVTaG9ydGN1dH0gdG8gcGFzdGUgaW1hZ2VzPC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VGV4dCBkaW1Db2xvcj17ZGltQ29sb3J9Pnttb2RlbFBpY2tlclNob3J0Y3V0fSB0byBzd2l0Y2ggbW9kZWw8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgICB7aXNGYXN0TW9kZUVuYWJsZWQoKSAmJiBpc0Zhc3RNb2RlQXZhaWxhYmxlKCkgJiYgKFxuICAgICAgICAgIDxCb3g+XG4gICAgICAgICAgICA8VGV4dCBkaW1Db2xvcj17ZGltQ29sb3J9PlxuICAgICAgICAgICAgICB7ZmFzdE1vZGVTaG9ydGN1dH0gdG8gdG9nZ2xlIGZhc3QgbW9kZVxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICApfVxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPXtkaW1Db2xvcn0+e3N0YXNoU2hvcnRjdXR9IHRvIHN0YXNoIHByb21wdDwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I9e2RpbUNvbG9yfT5cbiAgICAgICAgICAgIHtleHRlcm5hbEVkaXRvclNob3J0Y3V0fSB0byBlZGl0IGluICRFRElUT1JcbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgICB7aXNLZXliaW5kaW5nQ3VzdG9taXphdGlvbkVuYWJsZWQoKSAmJiAoXG4gICAgICAgICAgPEJveD5cbiAgICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPXtkaW1Db2xvcn0+L2tleWJpbmRpbmdzIHRvIGN1c3RvbWl6ZTwvVGV4dD5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxPQUFPLFFBQVEsWUFBWTtBQUNwQyxPQUFPLEtBQUtDLEtBQUssTUFBTSxPQUFPO0FBQzlCLFNBQVNDLEdBQUcsRUFBRUMsSUFBSSxRQUFRLFlBQVk7QUFDdEMsU0FBU0MsV0FBVyxRQUFRLHVCQUF1QjtBQUNuRCxTQUFTQyxnQ0FBZ0MsUUFBUSx1Q0FBdUM7QUFDeEYsU0FBU0Msa0JBQWtCLFFBQVEseUNBQXlDO0FBQzVFLFNBQVNDLG1DQUFtQyxR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QUF1RCxHQUFBLElBQUF2RCxDQUFBLFNBQUF3RCxHQUFBLElBQUF4RCxDQUFBLFNBQUF5RCxHQUFBLElBQUF6RCxDQUFBLFNBQUEwRCxHQUFBLElBQUExRCxDQUFBLFNBQUEyRCxHQUFBO0lBbENIQyxHQUFBLElBQUMsR0FBRyxDQUFlLGFBQVEsQ0FBUixRQUFRLENBQ3pCLENBQUFSLEdBRUssQ0FDSixDQUFBQyxHQUlELENBQ0EsQ0FBQUMsR0FFSyxDQUNMLENBQUFDLEdBRUssQ0FDSixDQUFBQyxHQU1ELENBQ0EsQ0FBQUMsR0FFSyxDQUNMLENBQUFDLEdBSUssQ0FDSixDQUFBQyxHQUlELENBQ0YsRUFuQ0MsR0FBRyxDQW1DRTtJQUFBM0QsQ0FBQSxPQUFBb0QsR0FBQTtJQUFBcEQsQ0FBQSxPQUFBcUQsR0FBQTtJQUFBckQsQ0FBQSxPQUFBc0QsR0FBQTtJQUFBdEQsQ0FBQSxPQUFBdUQsR0FBQTtJQUFBdkQsQ0FBQSxPQUFBd0QsR0FBQTtJQUFBeEQsQ0FBQSxPQUFBeUQsR0FBQTtJQUFBekQsQ0FBQSxPQUFBMEQsR0FBQTtJQUFBMUQsQ0FBQSxPQUFBMkQsR0FBQTtJQUFBM0QsQ0FBQSxPQUFBNEQsR0FBQTtFQUFBO0lBQUFBLEdBQUEsR0FBQTVELENBQUE7RUFBQTtFQUFBLElBQUE2RCxHQUFBO0VBQUEsSUFBQTdELENBQUEsU0FBQUosR0FBQSxJQUFBSSxDQUFBLFNBQUFILFFBQUEsSUFBQUcsQ0FBQSxTQUFBeUMsR0FBQSxJQUFBekMsQ0FBQSxTQUFBbUQsR0FBQSxJQUFBbkQsQ0FBQSxTQUFBNEQsR0FBQTtJQTlFUkMsR0FBQSxJQUFDLEdBQUcsQ0FBV2hFLFFBQVEsQ0FBUkEsU0FBTyxDQUFDLENBQWdCLGFBQUssQ0FBTCxLQUFLLENBQU1ELEdBQUcsQ0FBSEEsSUFBRSxDQUFDLENBQ25ELENBQUE2QyxHQWdCSyxDQUNMLENBQUFVLEdBd0JLLENBQ0wsQ0FBQVMsR0FtQ0ssQ0FDUCxFQS9FQyxHQUFHLENBK0VFO0lBQUE1RCxDQUFBLE9BQUFKLEdBQUE7SUFBQUksQ0FBQSxPQUFBSCxRQUFBO0lBQUFHLENBQUEsT0FBQXlDLEdBQUE7SUFBQXpDLENBQUEsT0FBQW1ELEdBQUE7SUFBQW5ELENBQUEsT0FBQTRELEdBQUE7SUFBQTVELENBQUEsT0FBQTZELEdBQUE7RUFBQTtJQUFBQSxHQUFBLEdBQUE3RCxDQUFBO0VBQUE7RUFBQSxPQS9FTjZELEdBK0VNO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=