π File detail
components/diff/DiffFileList.tsx
π§© .tsxπ 292 linesπΎ 25,342 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 DiffFileList β mainly types, interfaces, or factory objects. Dependencies touch React UI and figures. It composes internal code from hooks, ink, 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 figures from 'figures'; import React, { useMemo } from 'react'; import type { DiffFile } from '../../hooks/useDiffData.js'; import { useTerminalSize } from '../../hooks/useTerminalSize.js';
π€ Exports (heuristic)
DiffFileList
π External import roots
Package roots from from "β¦" (relative paths omitted).
reactfigures
π₯οΈ Source preview
import { c as _c } from "react/compiler-runtime";
import figures from 'figures';
import React, { useMemo } from 'react';
import type { DiffFile } from '../../hooks/useDiffData.js';
import { useTerminalSize } from '../../hooks/useTerminalSize.js';
import { Box, Text } from '../../ink.js';
import { truncateStartToWidth } from '../../utils/format.js';
import { plural } from '../../utils/stringUtils.js';
const MAX_VISIBLE_FILES = 5;
type Props = {
files: DiffFile[];
selectedIndex: number;
};
export function DiffFileList(t0) {
const $ = _c(36);
const {
files,
selectedIndex
} = t0;
const {
columns
} = useTerminalSize();
let t1;
bb0: {
if (files.length === 0 || files.length <= MAX_VISIBLE_FILES) {
let t2;
if ($[0] !== files.length) {
t2 = {
startIndex: 0,
endIndex: files.length
};
$[0] = files.length;
$[1] = t2;
} else {
t2 = $[1];
}
t1 = t2;
break bb0;
}
let start = Math.max(0, selectedIndex - Math.floor(MAX_VISIBLE_FILES / 2));
let end = start + MAX_VISIBLE_FILES;
if (end > files.length) {
end = files.length;
start = Math.max(0, end - MAX_VISIBLE_FILES);
}
let t2;
if ($[2] !== end || $[3] !== start) {
t2 = {
startIndex: start,
endIndex: end
};
$[2] = end;
$[3] = start;
$[4] = t2;
} else {
t2 = $[4];
}
t1 = t2;
}
const {
startIndex,
endIndex
} = t1;
if (files.length === 0) {
let t2;
if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
t2 = <Text dimColor={true}>No changed files</Text>;
$[5] = t2;
} else {
t2 = $[5];
}
return t2;
}
let T0;
let hasMoreBelow;
let needsPagination;
let t2;
let t3;
let t4;
if ($[6] !== columns || $[7] !== endIndex || $[8] !== files || $[9] !== selectedIndex || $[10] !== startIndex) {
const visibleFiles = files.slice(startIndex, endIndex);
const hasMoreAbove = startIndex > 0;
hasMoreBelow = endIndex < files.length;
needsPagination = files.length > MAX_VISIBLE_FILES;
const maxPathWidth = Math.max(20, columns - 16 - 3 - 4);
T0 = Box;
t2 = "column";
if ($[17] !== hasMoreAbove || $[18] !== needsPagination || $[19] !== startIndex) {
t3 = needsPagination && <Text dimColor={true}>{hasMoreAbove ? ` β ${startIndex} more ${plural(startIndex, "file")}` : " "}</Text>;
$[17] = hasMoreAbove;
$[18] = needsPagination;
$[19] = startIndex;
$[20] = t3;
} else {
t3 = $[20];
}
let t5;
if ($[21] !== maxPathWidth || $[22] !== selectedIndex || $[23] !== startIndex) {
t5 = (file, index) => <FileItem key={file.path} file={file} isSelected={startIndex + index === selectedIndex} maxPathWidth={maxPathWidth} />;
$[21] = maxPathWidth;
$[22] = selectedIndex;
$[23] = startIndex;
$[24] = t5;
} else {
t5 = $[24];
}
t4 = visibleFiles.map(t5);
$[6] = columns;
$[7] = endIndex;
$[8] = files;
$[9] = selectedIndex;
$[10] = startIndex;
$[11] = T0;
$[12] = hasMoreBelow;
$[13] = needsPagination;
$[14] = t2;
$[15] = t3;
$[16] = t4;
} else {
T0 = $[11];
hasMoreBelow = $[12];
needsPagination = $[13];
t2 = $[14];
t3 = $[15];
t4 = $[16];
}
let t5;
if ($[25] !== endIndex || $[26] !== files.length || $[27] !== hasMoreBelow || $[28] !== needsPagination) {
t5 = needsPagination && <Text dimColor={true}>{hasMoreBelow ? ` β ${files.length - endIndex} more ${plural(files.length - endIndex, "file")}` : " "}</Text>;
$[25] = endIndex;
$[26] = files.length;
$[27] = hasMoreBelow;
$[28] = needsPagination;
$[29] = t5;
} else {
t5 = $[29];
}
let t6;
if ($[30] !== T0 || $[31] !== t2 || $[32] !== t3 || $[33] !== t4 || $[34] !== t5) {
t6 = <T0 flexDirection={t2}>{t3}{t4}{t5}</T0>;
$[30] = T0;
$[31] = t2;
$[32] = t3;
$[33] = t4;
$[34] = t5;
$[35] = t6;
} else {
t6 = $[35];
}
return t6;
}
function FileItem(t0) {
const $ = _c(14);
const {
file,
isSelected,
maxPathWidth
} = t0;
let t1;
if ($[0] !== file.path || $[1] !== maxPathWidth) {
t1 = truncateStartToWidth(file.path, maxPathWidth);
$[0] = file.path;
$[1] = maxPathWidth;
$[2] = t1;
} else {
t1 = $[2];
}
const displayPath = t1;
const pointer = isSelected ? figures.pointer + " " : " ";
const line = `${pointer}${displayPath}`;
const t2 = isSelected ? "background" : undefined;
let t3;
if ($[3] !== isSelected || $[4] !== line || $[5] !== t2) {
t3 = <Text bold={isSelected} color={t2} inverse={isSelected}>{line}</Text>;
$[3] = isSelected;
$[4] = line;
$[5] = t2;
$[6] = t3;
} else {
t3 = $[6];
}
let t4;
if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
t4 = <Box flexGrow={1} />;
$[7] = t4;
} else {
t4 = $[7];
}
let t5;
if ($[8] !== file || $[9] !== isSelected) {
t5 = <FileStats file={file} isSelected={isSelected} />;
$[8] = file;
$[9] = isSelected;
$[10] = t5;
} else {
t5 = $[10];
}
let t6;
if ($[11] !== t3 || $[12] !== t5) {
t6 = <Box flexDirection="row">{t3}{t4}{t5}</Box>;
$[11] = t3;
$[12] = t5;
$[13] = t6;
} else {
t6 = $[13];
}
return t6;
}
function FileStats(t0) {
const $ = _c(20);
const {
file,
isSelected
} = t0;
if (file.isUntracked) {
const t1 = !isSelected;
let t2;
if ($[0] !== t1) {
t2 = <Text dimColor={t1} italic={true}>untracked</Text>;
$[0] = t1;
$[1] = t2;
} else {
t2 = $[1];
}
return t2;
}
if (file.isBinary) {
const t1 = !isSelected;
let t2;
if ($[2] !== t1) {
t2 = <Text dimColor={t1} italic={true}>Binary file</Text>;
$[2] = t1;
$[3] = t2;
} else {
t2 = $[3];
}
return t2;
}
if (file.isLargeFile) {
const t1 = !isSelected;
let t2;
if ($[4] !== t1) {
t2 = <Text dimColor={t1} italic={true}>Large file modified</Text>;
$[4] = t1;
$[5] = t2;
} else {
t2 = $[5];
}
return t2;
}
let t1;
if ($[6] !== file.linesAdded || $[7] !== isSelected) {
t1 = file.linesAdded > 0 && <Text color="diffAddedWord" bold={isSelected}>+{file.linesAdded}</Text>;
$[6] = file.linesAdded;
$[7] = isSelected;
$[8] = t1;
} else {
t1 = $[8];
}
const t2 = file.linesAdded > 0 && file.linesRemoved > 0 && " ";
let t3;
if ($[9] !== file.linesRemoved || $[10] !== isSelected) {
t3 = file.linesRemoved > 0 && <Text color="diffRemovedWord" bold={isSelected}>-{file.linesRemoved}</Text>;
$[9] = file.linesRemoved;
$[10] = isSelected;
$[11] = t3;
} else {
t3 = $[11];
}
let t4;
if ($[12] !== file.isTruncated || $[13] !== isSelected) {
t4 = file.isTruncated && <Text dimColor={!isSelected}> (truncated)</Text>;
$[12] = file.isTruncated;
$[13] = isSelected;
$[14] = t4;
} else {
t4 = $[14];
}
let t5;
if ($[15] !== t1 || $[16] !== t2 || $[17] !== t3 || $[18] !== t4) {
t5 = <Text>{t1}{t2}{t3}{t4}</Text>;
$[15] = t1;
$[16] = t2;
$[17] = t3;
$[18] = t4;
$[19] = t5;
} else {
t5 = $[19];
}
return t5;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaWd1cmVzIiwiUmVhY3QiLCJ1c2VNZW1vIiwiRGlmZkZpbGUiLCJ1c2VUZXJtaW5hbFNpemUiLCJCb3giLCJUZXh0IiwidHJ1bmNhdGVTdGFydFRvV2lkdGgiLCJwbHVyYWwiLCJNQVhfVklTSUJMRV9GSUxFUyIsIlByb3BzIiwiZmlsZXMiLCJzZWxlY3RlZEluZGV4IiwiRGlmZkZpbGVMaXN0IiwidDAiLCIkIiwiX2MiLCJjb2x1bW5zIiwidDEiLCJiYjAiLCJsZW5ndGgiLCJ0MiIsInN0YXJ0SW5kZXgiLCJlbmRJbmRleCIsInN0YXJ0IiwiTWF0aCIsIm1heCIsImZsb29yIiwiZW5kIiwiU3ltYm9sIiwiZm9yIiwiVDAiLCJoYXNNb3JlQmVsb3ciLCJuZWVkc1BhZ2luYXRpb24iLCJ0MyIsInQ0IiwidmlzaWJsZUZpbGVzIiwic2xpY2UiLCJoYXNNb3JlQWJvdmUiLCJtYXhQYXRoV2lkdGgiLCJ0NSIsImZpbGUiLCJpbmRleCIsInBhdGgiLCJtYXAiLCJ0NiIsIkZpbGVJdGVtIiwiaXNTZWxlY3RlZCIsImRpc3BsYXlQYXRoIiwicG9pbnRlciIsImxpbmUiLCJ1bmRlZmluZWQiLCJGaWxlU3RhdHMiLCJpc1VudHJhY2tlZCIsImlzQmluYXJ5IiwiaXNMYXJnZUZpbGUiLCJsaW5lc0FkZGVkIiwibGluZXNSZW1vdmVkIiwiaXNUcnVuY2F0ZWQiXSwic291cmNlcyI6WyJEaWZmRmlsZUxpc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmaWd1cmVzIGZyb20gJ2ZpZ3VyZXMnXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHR5cGUgeyBEaWZmRmlsZSB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZURpZmZEYXRhLmpzJ1xuaW1wb3J0IHsgdXNlVGVybWluYWxTaXplIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlVGVybWluYWxTaXplLmpzJ1xuaW1wb3J0IHsgQm94LCBUZXh0IH0gZnJvbSAnLi4vLi4vaW5rLmpzJ1xuaW1wb3J0IHsgdHJ1bmNhdGVTdGFydFRvV2lkdGggfSBmcm9tICcuLi8uLi91dGlscy9mb3JtYXQuanMnXG5pbXBvcnQgeyBwbHVyYWwgfSBmcm9tICcuLi8uLi91dGlscy9zdHJpbmdVdGlscy5qcydcblxuY29uc3QgTUFYX1ZJU0lCTEVfRklMRVMgPSA1XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGZpbGVzOiBEaWZmRmlsZVtdXG4gIHNlbGVjdGVkSW5kZXg6IG51bWJlclxufVxuXG5leHBvcnQgZnVuY3Rpb24gRGlmZkZpbGVMaXN0KHsgZmlsZXMsIHNlbGVjdGVkSW5kZXggfTogUHJvcHMpOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCB7IGNvbHVtbnMgfSA9IHVzZVRlcm1pbmFsU2l6ZSgpXG5cbiAgLy8gQ2FsY3VsYXRlIHNjcm9sbCB3aW5kb3cgLSBtdXN0IGJlIGJlZm9yZSBlYXJseSByZXR1cm4gZm9yIGhvb2tzIHJ1bGVzXG4gIGNvbnN0IHsgc3RhcnRJbmRleCwgZW5kSW5kZXggfSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChmaWxlcy5sZW5ndGggPT09IDAgfHwgZmlsZXMubGVuZ3RoIDw9IE1BWF9WSVNJQkxFX0ZJTEVTKSB7XG4gICAgICByZXR1cm4geyBzdGFydEluZGV4OiAwLCBlbmRJbmRleDogZmlsZXMubGVuZ3RoIH1cbiAgICB9XG5cbiAgICAvLyBLZWVwIHNlbGVjdGVkIGl0ZW0gcm91Z2hseSBpbiB0aGUgbWlkZGxlXG4gICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgc2VsZWN0ZWRJbmRleCAtIE1hdGguZmxvb3IoTUFYX1ZJU0lCTEVfRklMRVMgLyAyKSlcbiAgICBsZXQgZW5kID0gc3RhcnQgKyBNQVhfVklTSUJMRV9GSUxFU1xuXG4gICAgLy8gQWRqdXN0IGlmIHdlJ3JlIGF0IHRoZSBlbmRcbiAgICBpZiAoZW5kID4gZmlsZXMubGVuZ3RoKSB7XG4gICAgICBlbmQgPSBmaWxlcy5sZW5ndGhcbiAgICAgIHN0YXJ0ID0gTWF0aC5tYXgoMCwgZW5kIC0gTUFYX1ZJU0lCTEVfRklMRVMpXG4gICAgfVxuXG4gICAgcmV0dXJuIHsgc3RhcnRJbmRleDogc3RhcnQsIGVuZEluZGV4OiBlbmQgfVxuICB9LCBbZmlsZXMubGVuZ3RoLCBzZWxlY3RlZEluZGV4XSlcblxuICBpZiAoZmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIDxUZXh0IGRpbUNvbG9yPk5vIGNoYW5nZWQgZmlsZXM8L1RleHQ+XG4gIH1cblxuICBjb25zdCB2aXNpYmxlRmlsZXMgPSBmaWxlcy5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleClcbiAgY29uc3QgaGFzTW9yZUFib3ZlID0gc3RhcnRJbmRleCA+IDBcbiAgY29uc3QgaGFzTW9yZUJlbG93ID0gZW5kSW5kZXggPCBmaWxlcy5sZW5ndGhcbiAgY29uc3QgbmVlZHNQYWdpbmF0aW9uID0gZmlsZXMubGVuZ3RoID4gTUFYX1ZJU0lCTEVfRklMRVNcblxuICBjb25zdCBzdGF0c1dpZHRoID0gMTZcbiAgY29uc3QgcG9pbnRlcldpZHRoID0gM1xuICBjb25zdCBtYXhQYXRoV2lkdGggPSBNYXRoLm1heCgyMCwgY29sdW1ucyAtIHN0YXRzV2lkdGggLSBwb2ludGVyV2lkdGggLSA0KVxuXG4gIHJldHVybiAoXG4gICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICB7bmVlZHNQYWdpbmF0aW9uICYmIChcbiAgICAgICAgPFRleHQgZGltQ29sb3I+XG4gICAgICAgICAge2hhc01vcmVBYm92ZVxuICAgICAgICAgICAgPyBgIOKGkSAke3N0YXJ0SW5kZXh9IG1vcmUgJHtwbHVyYWwoc3RhcnRJbmRleCwgJ2ZpbGUnKX1gXG4gICAgICAgICAgICA6ICcgJ31cbiAgICAgICAgPC9UZXh0PlxuICAgICAgKX1cbiAgICAgIHt2aXNpYmxlRmlsZXMubWFwKChmaWxlLCBpbmRleCkgPT4gKFxuICAgICAgICA8RmlsZUl0ZW1cbiAgICAgICAgICBrZXk9e2ZpbGUucGF0aH1cbiAgICAgICAgICBmaWxlPXtmaWxlfVxuICAgICAgICAgIGlzU2VsZWN0ZWQ9e3N0YXJ0SW5kZXggKyBpbmRleCA9PT0gc2VsZWN0ZWRJbmRleH1cbiAgICAgICAgICBtYXhQYXRoV2lkdGg9e21heFBhdGhXaWR0aH1cbiAgICAgICAgLz5cbiAgICAgICkpfVxuICAgICAge25lZWRzUGFnaW5hdGlvbiAmJiAoXG4gICAgICAgIDxUZXh0IGRpbUNvbG9yPlxuICAgICAgICAgIHtoYXNNb3JlQmVsb3dcbiAgICAgICAgICAgID8gYCDihpMgJHtmaWxlcy5sZW5ndGggLSBlbmRJbmRleH0gbW9yZSAke3BsdXJhbChmaWxlcy5sZW5ndGggLSBlbmRJbmRleCwgJ2ZpbGUnKX1gXG4gICAgICAgICAgICA6ICcgJ31cbiAgICAgICAgPC9UZXh0PlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKVxufVxuXG5mdW5jdGlvbiBGaWxlSXRlbSh7XG4gIGZpbGUsXG4gIGlzU2VsZWN0ZWQsXG4gIG1heFBhdGhXaWR0aCxcbn06IHtcbiAgZmlsZTogRGlmZkZpbGVcbiAgaXNTZWxlY3RlZDogYm9vbGVhblxuICBtYXhQYXRoV2lkdGg6IG51bWJlclxufSk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IGRpc3BsYXlQYXRoID0gdHJ1bmNhdGVTdGFydFRvV2lkdGgoZmlsZS5wYXRoLCBtYXhQYXRoV2lkdGgpXG5cbiAgY29uc3QgcG9pbnRlciA9IGlzU2VsZWN0ZWQgPyBmaWd1cmVzLnBvaW50ZXIgKyAnICcgOiAnICAnXG4gIGNvbnN0IGxpbmUgPSBgJHtwb2ludGVyfSR7ZGlzcGxheVBhdGh9YFxuXG4gIHJldHVybiAoXG4gICAgPEJveCBmbGV4RGlyZWN0aW9uPVwicm93XCI+XG4gICAgICA8VGV4dFxuICAgICAgICBib2xkPXtpc1NlbGVjdGVkfVxuICAgICAgICBjb2xvcj17aXNTZWxlY3RlZCA/ICdiYWNrZ3JvdW5kJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgaW52ZXJzZT17aXNTZWxlY3RlZH1cbiAgICAgID5cbiAgICAgICAge2xpbmV9XG4gICAgICA8L1RleHQ+XG4gICAgICA8Qm94IGZsZXhHcm93PXsxfSAvPlxuICAgICAgPEZpbGVTdGF0cyBmaWxlPXtmaWxlfSBpc1NlbGVjdGVkPXtpc1NlbGVjdGVkfSAvPlxuICAgIDwvQm94PlxuICApXG59XG5cbmZ1bmN0aW9uIEZpbGVTdGF0cyh7XG4gIGZpbGUsXG4gIGlzU2VsZWN0ZWQsXG59OiB7XG4gIGZpbGU6IERpZmZGaWxlXG4gIGlzU2VsZWN0ZWQ6IGJvb2xlYW5cbn0pOiBSZWFjdC5SZWFjdE5vZGUge1xuICBpZiAoZmlsZS5pc1VudHJhY2tlZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8VGV4dCBkaW1Db2xvcj17IWlzU2VsZWN0ZWR9IGl0YWxpYz5cbiAgICAgICAgdW50cmFja2VkXG4gICAgICA8L1RleHQ+XG4gICAgKVxuICB9XG4gIGlmIChmaWxlLmlzQmluYXJ5KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxUZXh0IGRpbUNvbG9yPXshaXNTZWxlY3RlZH0gaXRhbGljPlxuICAgICAgICBCaW5hcnkgZmlsZVxuICAgICAgPC9UZXh0PlxuICAgIClcbiAgfVxuICBpZiAoZmlsZS5pc0xhcmdlRmlsZSkge1xuICAgIHJldHVybiAoXG4gICAgICA8VGV4dCBkaW1Db2xvcj17IWlzU2VsZWN0ZWR9IGl0YWxpYz5cbiAgICAgICAgTGFyZ2UgZmlsZSBtb2RpZmllZFxuICAgICAgPC9UZXh0PlxuICAgIClcbiAgfVxuICAvLyBOb3JtYWwgb3IgdHJ1bmNhdGVkIGZpbGUgLSBzaG93IGxpbmUgY291bnRzXG4gIHJldHVybiAoXG4gICAgPFRleHQ+XG4gICAgICB7ZmlsZS5saW5lc0FkZGVkID4gMCAmJiAoXG4gICAgICAgIDxUZXh0IGNvbG9yPVwiZGlmZkFkZGVkV29yZFwiIGJvbGQ9e2lzU2VsZWN0ZWR9PlxuICAgICAgICAgICt7ZmlsZS5saW5lc0FkZGVkfVxuICAgICAgICA8L1RleHQ+XG4gICAgICApfVxuICAgICAge2ZpbGUubGluZXNBZGRlZCA+IDAgJiYgZmlsZS5saW5lc1JlbW92ZWQgPiAwICYmICcgJ31cbiAgICAgIHtmaWxlLmxpbmVzUmVtb3ZlZCA+IDAgJiYgKFxuICAgICAgICA8VGV4dCBjb2xvcj1cImRpZmZSZW1vdmVkV29yZFwiIGJvbGQ9e2lzU2VsZWN0ZWR9PlxuICAgICAgICAgIC17ZmlsZS5saW5lc1JlbW92ZWR9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgICl9XG4gICAgICB7ZmlsZS5pc1RydW5jYXRlZCAmJiA8VGV4dCBkaW1Db2xvcj17IWlzU2VsZWN0ZWR9PiAodHJ1bmNhdGVkKTwvVGV4dD59XG4gICAgPC9UZXh0PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPQSxPQUFPLE1BQU0sU0FBUztBQUM3QixPQUFPQyxLQUFLLElBQUlDLE9BQU8sUUFBUSxPQUFPO0FBQ3RDLGNBQWNDLFFBQVEsUUFBUSw0QkFBNEI7QUFDMUQsU0FBU0MsZUFBZSxRQUFRLGdDQUFnQztBQUNoRSxTQUFTQyxHQUFHLEVBQUVDLElBQUksUUFBUSxjQUFjO0FBQ3hDLFNBQVNDLG9CQUFvQixRQUFRLHVCQUF1QjtBQUM1RCxTQUFTQyxNQUFNLFFBQVEsNEJBQTRCO0FBRW5ELE1BQU1DLGlCQUFpQixHQUFHLENBQUM7QUFFM0IsS0FBS0MsS0FBSyxHQUFHO0VBQ1hDLEtBQUssRUFBRVIsUUFBUSxFQUFFO0VBQ2pCUyxhQUFhLEVBQUUsTUFBTTtBQUN2QixDQUFDO0FBRUQsT0FBTyxTQUFBQyxhQUFBQyxFQUFBO0VBQUEsTUFBQUMsQ0FBQSxHQUFBQyxFQUFBO0VBQXNCO0lBQUFMLEtBQUE7SUFBQUM7RUFBQSxJQUFBRSxFQUErQjtFQUMxRDtJQUFBRztFQUFBLElBQW9CYixlQUFlLENBQUMsQ0FBQztFQUFBLElBQUFjLEVBQUE7RUFBQUMsR0FBQTtJQUluQyxJQUFJUixLQUFLLENBQUFTLE1BQU8sS0FBSyxDQUFzQyxJQUFqQ1QsS0FBSyxDQUFBUyxNQUFPLElBQUlYLGlCQUFpQjtNQUFBLElBQUFZLEVBQUE7TUFBQSxJQUFBTixDQUFBLFFBQUFKLEtBQUEsQ0FB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