From 98495c8114056346deee446cdb3a7bf97eaa7ab6 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 31 Oct 2022 11:02:43 +0100 Subject: [PATCH 1/9] show wifi disconnect reason as text --- src/web/WebStatusService.cpp | 67 ++++++++++++++++++++++++++++++++++-- src/web/WebStatusService.h | 2 ++ 2 files changed, 67 insertions(+), 2 deletions(-) diff --git a/src/web/WebStatusService.cpp b/src/web/WebStatusService.cpp index ce9fd1ab5..1b9935bfc 100644 --- a/src/web/WebStatusService.cpp +++ b/src/web/WebStatusService.cpp @@ -34,7 +34,7 @@ WebStatusService::WebStatusService(AsyncWebServer * server, SecurityManager * se void WebStatusService::WiFiEvent(WiFiEvent_t event, WiFiEventInfo_t info) { switch (event) { case ARDUINO_EVENT_WIFI_STA_DISCONNECTED: - EMSESP::logger().warning("WiFi disconnected. Reason code=%d", info.wifi_sta_disconnected.reason); // IDF 4.0 + EMSESP::logger().warning("WiFi disconnected. Reason code=%s", disconnectReason(info.wifi_sta_disconnected.reason)); // IDF 4.0 WiFi.disconnect(true); break; @@ -42,7 +42,6 @@ void WebStatusService::WiFiEvent(WiFiEvent_t event, WiFiEventInfo_t info) { #ifndef EMSESP_STANDALONE EMSESP::logger().info("WiFi connected with IP=%s, hostname=%s", WiFi.localIP().toString().c_str(), WiFi.getHostname()); #endif - // EMSESP::system_.send_heartbeat(); // send from mqtt start EMSESP::system_.syslog_init(); mDNS_start(); break; @@ -226,4 +225,68 @@ void WebStatusService::mDNS_start() const { #endif } +const char * WebStatusService::disconnectReason(uint8_t code) { + switch (code) { + case WIFI_REASON_UNSPECIFIED: // = 1, + return "unspecifiied"; + case WIFI_REASON_AUTH_EXPIRE: // = 2, + return "auth expire"; + case WIFI_REASON_AUTH_LEAVE: // = 3, + return "auth leave"; + case WIFI_REASON_ASSOC_EXPIRE: // = 4, + return "assoc expired"; + case WIFI_REASON_ASSOC_TOOMANY: // = 5, + return "assoc too many"; + case WIFI_REASON_NOT_AUTHED: // = 6, + return "not authed"; + case WIFI_REASON_NOT_ASSOCED: // = 7, + return "not assoced"; + case WIFI_REASON_ASSOC_LEAVE: // = 8, + return "assoc leave"; + case WIFI_REASON_ASSOC_NOT_AUTHED: // = 9, + return "assoc not authed"; + case WIFI_REASON_DISASSOC_PWRCAP_BAD: // = 10, + return "disassoc powerCAP bad"; + case WIFI_REASON_DISASSOC_SUPCHAN_BAD: // = 11, + return "disassoc supchan bad"; + case WIFI_REASON_IE_INVALID: // = 13, + return "IE invalid"; + case WIFI_REASON_MIC_FAILURE: // = 14, + return "MIC failure"; + case WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT: // = 15, + return "4way handshake timeout"; + case WIFI_REASON_GROUP_KEY_UPDATE_TIMEOUT: // = 16, + return "group key-update timeout"; + case WIFI_REASON_IE_IN_4WAY_DIFFERS: // = 17, + return "IE in 4way differs"; + case WIFI_REASON_GROUP_CIPHER_INVALID: // = 18, + return "group cipher invalid"; + case WIFI_REASON_PAIRWISE_CIPHER_INVALID: // = 19, + return "pairwise cipher invalid"; + case WIFI_REASON_AKMP_INVALID: // = 20, + return "AKMP invalid"; + case WIFI_REASON_UNSUPP_RSN_IE_VERSION: // = 21, + return "unsupported RSN_IE version"; + case WIFI_REASON_INVALID_RSN_IE_CAP: // = 22, + return "invalid RSN_IE_CAP"; + case WIFI_REASON_802_1X_AUTH_FAILED: // = 23, + return "802 X1 auth failed"; + case WIFI_REASON_CIPHER_SUITE_REJECTED: // = 24, + return "cipher suite rejected"; + case WIFI_REASON_BEACON_TIMEOUT: // = 200, + return "beacon timeout"; + case WIFI_REASON_NO_AP_FOUND: // = 201, + return "no AP found"; + case WIFI_REASON_AUTH_FAIL: // = 202, + return "auth fail"; + case WIFI_REASON_ASSOC_FAIL: // = 203, + return "assoc fail"; + case WIFI_REASON_HANDSHAKE_TIMEOUT: // = 204, + return "handshake timeout"; + default: + return "unknown"; + } + return ""; +} + } // namespace emsesp \ No newline at end of file diff --git a/src/web/WebStatusService.h b/src/web/WebStatusService.h index 938bcfa32..fea0a8728 100644 --- a/src/web/WebStatusService.h +++ b/src/web/WebStatusService.h @@ -33,6 +33,8 @@ class WebStatusService { void webStatusService(AsyncWebServerRequest * request); void WiFiEvent(WiFiEvent_t event, WiFiEventInfo_t info); void mDNS_start() const; + const char * disconnectReason(uint8_t code); + }; } // namespace emsesp From 64f2f82e0c1cea301aa7563e32553cdeeb28dd7e Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 31 Oct 2022 11:03:10 +0100 Subject: [PATCH 2/9] low frequency for C3 chip --- src/system.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/system.cpp b/src/system.cpp index 9685a7491..64a00c0dd 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -377,7 +377,11 @@ void System::start() { // disable bluetooth module // periph_module_disable(PERIPH_BT_MODULE); if (low_clock_) { +#if CONFIG_IDF_TARGET_ESP32C3 + setCpuFrequencyMhz(80); +#else setCpuFrequencyMhz(160); +#endif } fstotal_ = LittleFS.totalBytes() / 1024; // read only once, it takes 500 ms to read psram_ = ESP.getPsramSize() / 1024; From c65005e5a6339fbf3fd3aad894e0cd0cfb70e5bc Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 31 Oct 2022 11:04:44 +0100 Subject: [PATCH 3/9] add more bus-ids #673 --- interface/src/project/SettingsApplication.tsx | 13 ++++++++----- src/console.cpp | 4 ++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/interface/src/project/SettingsApplication.tsx b/interface/src/project/SettingsApplication.tsx index 72ebb7a84..6a1dd3d32 100644 --- a/interface/src/project/SettingsApplication.tsx +++ b/interface/src/project/SettingsApplication.tsx @@ -311,12 +311,17 @@ const SettingsApplication: FC = () => { margin="normal" select > + Terminal (0x0A) Service Key (0x0B) Modem (0x0D) - Terminal (0x0A) Converter (0x0E) Time Module (0x0F) - Alarm Module (0x12) + Gateway 1 (0x48) + Gateway 2 (0x49) + Gateway 3 (0x4A) + Gateway 4 (0x4B) + Gateway 5 (0x4C) + Gateway 7 (0x4D) @@ -344,9 +349,7 @@ const SettingsApplication: FC = () => { Nederlands (NL) Svenska (SE) Polski (PL) - - Norsk (NO) - + Norsk (NO) {data.led_gpio !== 0 && ( diff --git a/src/console.cpp b/src/console.cpp index 1cba1e74d..b9a3eaa46 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -151,11 +151,11 @@ void EMSESPShell::add_console_commands() { }, "local"); } else { - shell.println("Must be 0B, 0D, 0A, 0F or 12"); + shell.println("Must be 0B, 0D, 0A, 0E, 0F, or 48 - 4D"); } }, [](Shell & shell __attribute__((unused)), const std::vector & arguments __attribute__((unused))) -> const std::vector { - return std::vector{"0B", "0D", "0A", "0F", "12"}; + return std::vector{"0B", "0D", "0A", "0E", "0F", "48", "49", "4A", "4B", "4C", "4D"}; }); commands->add_command(ShellContext::MAIN, From e0e07a9deb426d6dc5174c176357bed435b330a7 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 31 Oct 2022 11:08:05 +0100 Subject: [PATCH 4/9] md5 check for upload bin files #637 --- .../src/components/upload/SingleUpload.tsx | 3 +- .../src/components/upload/useFileUpload.ts | 13 ++++++-- .../framework/system/GeneralFileUpload.tsx | 9 ++++- .../src/framework/system/UploadFileForm.tsx | 4 ++- interface/src/utils/endpoints.ts | 2 +- lib/framework/UploadFileService.cpp | 33 +++++++++++++------ scripts/rename_fw.py | 19 +++++++++-- 7 files changed, 63 insertions(+), 20 deletions(-) diff --git a/interface/src/components/upload/SingleUpload.tsx b/interface/src/components/upload/SingleUpload.tsx index ccf8bfed3..46732ab46 100644 --- a/interface/src/components/upload/SingleUpload.tsx +++ b/interface/src/components/upload/SingleUpload.tsx @@ -35,7 +35,8 @@ const SingleUpload: FC = ({ onDrop, onCancel, uploading, prog onDrop, accept: { 'application/octet-stream': ['.bin'], - 'application/json': ['.json'] + 'application/json': ['.json'], + 'text/plain': ['.md5'] }, disabled: uploading, multiple: false diff --git a/interface/src/components/upload/useFileUpload.ts b/interface/src/components/upload/useFileUpload.ts index 05d4431fe..cc2f296d3 100644 --- a/interface/src/components/upload/useFileUpload.ts +++ b/interface/src/components/upload/useFileUpload.ts @@ -16,6 +16,7 @@ const useFileUpload = ({ upload }: MediaUploadOptions) => { const { enqueueSnackbar } = useSnackbar(); const [uploading, setUploading] = useState(false); + const [md5, setMd5] = useState(''); const [uploadProgress, setUploadProgress] = useState(); const [uploadCancelToken, setUploadCancelToken] = useState(); @@ -23,6 +24,7 @@ const useFileUpload = ({ upload }: MediaUploadOptions) => { setUploading(false); setUploadProgress(undefined); setUploadCancelToken(undefined); + setMd5(''); }; const cancelUpload = useCallback(() => { @@ -41,12 +43,17 @@ const useFileUpload = ({ upload }: MediaUploadOptions) => { const cancelToken = axios.CancelToken.source(); setUploadCancelToken(cancelToken); setUploading(true); - await upload(images[0], { + const response = await upload(images[0], { onUploadProgress: setUploadProgress, cancelToken: cancelToken.token }); resetUploadingStates(); - enqueueSnackbar(LL.UPLOAD() + ' ' + LL.SUCCESSFUL(), { variant: 'success' }); + if (response.status === 200) { + enqueueSnackbar(LL.UPLOAD() + ' ' + LL.SUCCESSFUL(), { variant: 'success' }); + } else if (response.status === 201) { + setMd5((String)(response.data)); + enqueueSnackbar(LL.UPLOAD() + ' MD5 ' + LL.SUCCESSFUL(), { variant: 'success' }); + } } catch (error) { if (axios.isCancel(error)) { enqueueSnackbar(LL.UPLOAD() + ' ' + LL.ABORTED(), { variant: 'warning' }); @@ -57,7 +64,7 @@ const useFileUpload = ({ upload }: MediaUploadOptions) => { } }; - return [uploadFile, cancelUpload, uploading, uploadProgress] as const; + return [uploadFile, cancelUpload, uploading, uploadProgress, md5] as const; }; export default useFileUpload; diff --git a/interface/src/framework/system/GeneralFileUpload.tsx b/interface/src/framework/system/GeneralFileUpload.tsx index 8d77657b8..f5aa03f50 100644 --- a/interface/src/framework/system/GeneralFileUpload.tsx +++ b/interface/src/framework/system/GeneralFileUpload.tsx @@ -4,6 +4,7 @@ import { AxiosPromise } from 'axios'; import { Typography, Button, Box } from '@mui/material'; import { FileUploadConfig } from '../../api/endpoints'; + import { SingleUpload, useFileUpload } from '../../components'; import DownloadIcon from '@mui/icons-material/GetApp'; @@ -21,7 +22,8 @@ interface UploadFileProps { } const GeneralFileUpload: FC = ({ uploadGeneralFile }) => { - const [uploadFile, cancelUpload, uploading, uploadProgress] = useFileUpload({ upload: uploadGeneralFile }); + + const [uploadFile, cancelUpload, uploading, uploadProgress, md5] = useFileUpload({ upload: uploadGeneralFile }); const { enqueueSnackbar } = useSnackbar(); @@ -80,6 +82,11 @@ const GeneralFileUpload: FC = ({ uploadGeneralFile }) => { )} + {md5 !== '' && ( + + {'MD5: ' + md5} + + )} {!uploading && ( diff --git a/interface/src/framework/system/UploadFileForm.tsx b/interface/src/framework/system/UploadFileForm.tsx index 5a5948217..4222a1508 100644 --- a/interface/src/framework/system/UploadFileForm.tsx +++ b/interface/src/framework/system/UploadFileForm.tsx @@ -16,7 +16,9 @@ const UploadFileForm: FC = () => { const uploadFile = useRef(async (file: File, config?: FileUploadConfig) => { const response = await SystemApi.uploadFile(file, config); - setRestarting(true); + if (response.status === 200) { + setRestarting(true); + } return response; }); diff --git a/interface/src/utils/endpoints.ts b/interface/src/utils/endpoints.ts index 2326991f2..3570797c5 100644 --- a/interface/src/utils/endpoints.ts +++ b/interface/src/utils/endpoints.ts @@ -1,6 +1,6 @@ export const extractErrorMessage = (error: any, defaultMessage: string) => { if (error.request) { - return defaultMessage + ' (' + error.request.statusText + ')'; + return defaultMessage + ' (' + error.request.status + ': ' + error.request.statusText + ')'; } else if (error instanceof Error) { return defaultMessage + ' (' + error.message + ')'; } diff --git a/lib/framework/UploadFileService.cpp b/lib/framework/UploadFileService.cpp index c78be7fda..e2d07d83b 100644 --- a/lib/framework/UploadFileService.cpp +++ b/lib/framework/UploadFileService.cpp @@ -3,6 +3,7 @@ using namespace std::placeholders; // for `_1` etc static bool is_firmware = false; +static char md5[33] = "\0"; UploadFileService::UploadFileService(AsyncWebServer * server, SecurityManager * securityManager) : _securityManager(securityManager) { @@ -33,45 +34,53 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri Serial.println(); #endif + is_firmware = false; if ((extension == "bin") && (fsize > 1500000)) { is_firmware = true; } else if (extension == "json") { - is_firmware = false; + md5[0] = '\0'; // clear md5 + } else if (extension == "md5") { + if (len == 32) { + memcpy(md5, data, 32); + md5[32] = '\0'; + } + return; } else { - is_firmware = false; + md5[0] = '\0'; return; // not support file type } if (is_firmware) { // Check firmware header, 0xE9 magic offset 0 indicates esp bin, chip offset 12: esp32:0, S2:2, C3:5 #if CONFIG_IDF_TARGET_ESP32 // ESP32/PICO-D4 - bool isC3 = (fname.find("C3") != std::string::npos); - bool isS2 = (fname.find("S2") != std::string::npos); - if (isC3 || isS2 || (len > 12 && (data[0] != 0xE9 || data[12] != 0))) { + if (len > 12 && (data[0] != 0xE9 || data[12] != 0)) { handleError(request, 503); // service unavailable return; } #elif CONFIG_IDF_TARGET_ESP32S2 - bool isS2 = (fname.find("S2") != std::string::npos); - if (!isS2 || (len > 12 && (data[0] != 0xE9 || data[12] != 2))) { + if (len > 12 && (data[0] != 0xE9 || data[12] != 2)) { handleError(request, 503); // service unavailable return; } #elif CONFIG_IDF_TARGET_ESP32C3 - bool isC3 = (fname.find("C3") != std::string::npos); - if (!isC3 || (len > 12 && (data[0] != 0xE9 || data[12] != 5))) { + if (len > 12 && (data[0] != 0xE9 || data[12] != 5)) { handleError(request, 503); // service unavailable return; } #endif // it's firmware - initialize the ArduinoOTA updater if (Update.begin(fsize)) { + if (strlen(md5) == 32) { + Update.setMD5(md5); + md5[0] = '\0'; + } request->onDisconnect(UploadFileService::handleEarlyDisconnect); // success, let's make sure we end the update if the client hangs up } else { #if defined(EMSESP_USE_SERIAL) Update.printError(Serial); #endif handleError(request, 507); // failed to begin, send an error response Insufficient Storage + return; } } else { // its a normal file, open a new temp file to write the contents too @@ -83,7 +92,6 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri if (len) { request->_tempFile.write(data, len); // stream the incoming chunk to the opened file } - } else { // if we haven't delt with an error, continue with the firmware update if (!request->_tempObject) { @@ -123,6 +131,11 @@ void UploadFileService::uploadComplete(AsyncWebServerRequest * request) { request->send(response); return; } + if (strlen(md5) == 32) { + AsyncWebServerResponse * response = request->beginResponse(201, "text/plain", md5); // created + request->send(response); + return; + } handleError(request, 403); // send the forbidden response } diff --git a/scripts/rename_fw.py b/scripts/rename_fw.py index f963c2795..1e53fbfe5 100644 --- a/scripts/rename_fw.py +++ b/scripts/rename_fw.py @@ -2,6 +2,7 @@ import shutil import re import os Import("env") +import hashlib OUTPUT_DIR = "build{}".format(os.path.sep) @@ -18,7 +19,6 @@ def bin_copy(source, target, env): bag[var] = m.group(1) app_version = bag.get('app_version') - platform = "ESP32" chip_target = env.get('PIOENV').upper() @@ -33,14 +33,13 @@ def bin_copy(source, target, env): # alternatively take platform from the pio target # platform = str(target[0]).split(os.path.sep)[2] - chip_target = env.get('PIOENV').upper() print("app version: " + app_version) print("platform: " + platform) print("chip_target: " + chip_target) # convert . to _ so Windows doesn't complain - variant = "EMS-ESP-" + chip_target + "-" + app_version.replace(".", "_") + variant = "EMS-ESP-" + app_version.replace(".", "_") + "-" + chip_target.replace("CI","ESP32") # check if output directories exist and create if necessary if not os.path.isdir(OUTPUT_DIR): @@ -52,15 +51,29 @@ def bin_copy(source, target, env): # create string with location and file names based on variant bin_file = "{}firmware{}{}.bin".format(OUTPUT_DIR, os.path.sep, variant) + md5_file = "{}firmware{}{}.md5".format(OUTPUT_DIR, os.path.sep, variant) # check if new target files exist and remove if necessary for f in [bin_file]: if os.path.isfile(f): os.remove(f) + # check if new target files exist and remove if necessary + for f in [md5_file]: + if os.path.isfile(f): + os.remove(f) + print("Renaming file to "+bin_file) # copy firmware.bin to firmware/.bin shutil.copy(str(target[0]), bin_file) + with open(bin_file,"rb") as f: + result = hashlib.md5(f.read()) + print("Calculating MD5: "+result.hexdigest()) + file1 = open(md5_file, 'w') + file1.write(result.hexdigest()) + file1.close() + env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", [bin_copy]) +env.AddPostAction("$BUILD_DIR/${PROGNAME}.md5", [bin_copy]) From 1005079f71c37fbc584329ee2b1e585ef81d1d6b Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 31 Oct 2022 11:09:12 +0100 Subject: [PATCH 5/9] activate restart monitor on button restart --- .../src/framework/network/NetworkStatusForm.tsx | 2 +- .../src/framework/system/SystemStatusForm.tsx | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/interface/src/framework/network/NetworkStatusForm.tsx b/interface/src/framework/network/NetworkStatusForm.tsx index 10b020daa..8c90f0006 100644 --- a/interface/src/framework/network/NetworkStatusForm.tsx +++ b/interface/src/framework/network/NetworkStatusForm.tsx @@ -44,7 +44,7 @@ const dnsServers = ({ dns_ip_1, dns_ip_2 }: NetworkStatus) => { if (!dns_ip_1) { return 'none'; } - return dns_ip_1 + (dns_ip_2 === '0.0.0.0' ? '' : ',' + dns_ip_2); + return dns_ip_1 + (!dns_ip_2 || dns_ip_2 === '0.0.0.0' ? '' : ',' + dns_ip_2); }; const IPs = (status: NetworkStatus) => { diff --git a/interface/src/framework/system/SystemStatusForm.tsx b/interface/src/framework/system/SystemStatusForm.tsx index 33f6fa47c..7ead2e2a4 100644 --- a/interface/src/framework/system/SystemStatusForm.tsx +++ b/interface/src/framework/system/SystemStatusForm.tsx @@ -39,6 +39,7 @@ import { extractErrorMessage, useRest } from '../../utils'; import { AuthenticatedContext } from '../../contexts/authentication'; import axios from 'axios'; +import RestartMonitor from './RestartMonitor'; import { useI18nContext } from '../../i18n/i18n-react'; @@ -52,6 +53,7 @@ function formatNumber(num: number) { const SystemStatusForm: FC = () => { const { LL } = useI18nContext(); + const [restarting, setRestarting] = useState(); const { loadData, data, errorMessage } = useRest({ read: SystemApi.readSystemStatus }); @@ -69,7 +71,8 @@ const SystemStatusForm: FC = () => { setLatestVersion({ version: response.data.name, url: response.data.assets[1].browser_download_url, - changelog: response.data.html_url + changelog: response.data.assets[0].browser_download_url + }); }); axios.get(VERSIONCHECK_DEV_ENDPOINT).then((response) => { @@ -86,6 +89,7 @@ const SystemStatusForm: FC = () => { try { await SystemApi.restart(); enqueueSnackbar(LL.APPLICATION_RESTARTING(), { variant: 'info' }); + setRestarting(true); } catch (error) { enqueueSnackbar(extractErrorMessage(error, LL.PROBLEM_LOADING()), { variant: 'error' }); } finally { @@ -103,6 +107,7 @@ const SystemStatusForm: FC = () => { startIcon={} variant="outlined" onClick={() => setConfirmRestart(false)} + disabled={processing} color="secondary" > {LL.CANCEL()} @@ -199,6 +204,7 @@ const SystemStatusForm: FC = () => { startIcon={} variant="outlined" onClick={() => setConfirmFactoryReset(false)} + disabled={processing} color="secondary" > {LL.CANCEL()} @@ -302,9 +308,7 @@ const SystemStatusForm: FC = () => { @@ -373,7 +377,7 @@ const SystemStatusForm: FC = () => { return ( - {content()} + {restarting ? : content()} ); }; From ac7517629233b4075861047287b9e1522c432c10 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 31 Oct 2022 11:10:20 +0100 Subject: [PATCH 6/9] i18n@5.15.0 --- interface/.typesafe-i18n.json | 2 +- interface/package-lock.json | 1430 ++++++++++++------------- interface/src/i18n/de/index.ts | 24 +- interface/src/i18n/en/index.ts | 2 +- interface/src/i18n/i18n-types.ts | 28 +- interface/src/i18n/i18n-util.async.ts | 4 +- interface/src/i18n/i18n-util.ts | 16 +- 7 files changed, 740 insertions(+), 766 deletions(-) diff --git a/interface/.typesafe-i18n.json b/interface/.typesafe-i18n.json index 905df0d48..2ac52b175 100644 --- a/interface/.typesafe-i18n.json +++ b/interface/.typesafe-i18n.json @@ -1,5 +1,5 @@ { "adapter": "react", "baseLocale": "pl", - "$schema": "https://unpkg.com/typesafe-i18n@5.14.0/schema/typesafe-i18n.json" + "$schema": "https://unpkg.com/typesafe-i18n@5.15.0/schema/typesafe-i18n.json" } diff --git a/interface/package-lock.json b/interface/package-lock.json index 83640594f..92f489cf9 100644 --- a/interface/package-lock.json +++ b/interface/package-lock.json @@ -66,28 +66,28 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", - "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.0.tgz", + "integrity": "sha512-Gt9jszFJYq7qzXVK4slhc6NzJXnOVmRECWcVjF/T23rNXD9NtWQ0W3qxdg+p9wWIB+VQw3GYV/U2Ha9bRTfs4w==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", - "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz", + "integrity": "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==", "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.3", + "@babel/generator": "^7.19.6", "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-module-transforms": "^7.19.0", - "@babel/helpers": "^7.19.0", - "@babel/parser": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helpers": "^7.19.4", + "@babel/parser": "^7.19.6", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.3", - "@babel/types": "^7.19.3", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -128,11 +128,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.4.tgz", - "integrity": "sha512-5T2lY5vXqS+5UEit/5TwcIUeCnwgCljcF8IQRT6XRQPBrvLeq5V8W+URv+GvwoF3FP8tkhp++evVyDzkDGzNmA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.0.tgz", + "integrity": "sha512-GUPcXxWibClgmYJuIwC2Bc2Lg+8b9VjaJ+HlNdACEVt+Wlr1eoU1OPZjZRm7Hzl0gaTsUZNQfeihvZJhG7oc3w==", "dependencies": { - "@babel/types": "^7.19.4", + "@babel/types": "^7.20.0", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -177,11 +177,11 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", - "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", "dependencies": { - "@babel/compat-data": "^7.19.3", + "@babel/compat-data": "^7.20.0", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.21.3", "semver": "^6.3.0" @@ -309,18 +309,18 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", - "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz", + "integrity": "sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-simple-access": "^7.19.4", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4" }, "engines": { "node": ">=6.9.0" @@ -389,11 +389,11 @@ } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", "dependencies": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.0" }, "engines": { "node": ">=6.9.0" @@ -449,13 +449,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz", - "integrity": "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.0.tgz", + "integrity": "sha512-aGMjYraN0zosCEthoGLdqot1oRsmxVTQRHadsUPz5QM44Zej2PYRz7XiDE7GqnkZnNtLbOuxqoZw42vkU7+XEQ==", "dependencies": { "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.4", - "@babel/types": "^7.19.4" + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0" }, "engines": { "node": ">=6.9.0" @@ -475,9 +475,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz", - "integrity": "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.0.tgz", + "integrity": "sha512-G9VgAhEaICnz8iiJeGJQyVl6J2nTjbW0xeisva0PK6XcKsga7BIaqm4ZF8Rg1Wbaqmy6znspNqhPaPkyukujzg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -564,9 +564,9 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.3.tgz", - "integrity": "sha512-MbgXtNXqo7RTKYIXVchVJGPvaVufQH3pxvQyfbGvNw1DObIhph+PesYXJTcd8J4DdWibvf6Z2eanOyItX8WnJg==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.0.tgz", + "integrity": "sha512-vnuRRS20ygSxclEYikHzVrP9nZDFXaSzvJxGLQNAiBX041TmhS4hOUHWNIpq/q4muENuEP9XPJFXTNFejhemkg==", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.19.0", "@babel/helper-plugin-utils": "^7.19.0", @@ -865,11 +865,11 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -1009,11 +1009,11 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", - "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -1067,9 +1067,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", - "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.0.tgz", + "integrity": "sha512-sXOohbpHZSk7GjxK9b3dKB7CfqUD5DwOH+DggKzOQ7TXYP+RCSbRykfjQmn/zq+rBjycVRtLf9pYhAaEJA786w==", "dependencies": { "@babel/helper-plugin-utils": "^7.19.0" }, @@ -1117,9 +1117,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", - "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.0.tgz", + "integrity": "sha512-1dIhvZfkDVx/zn2S1aFwlruspTt4189j7fEkH0Y0VyuDM6bQt7bD6kLcz3l4IlLG+e5OReaBz9ROAbttRtUHqA==", "dependencies": { "@babel/helper-plugin-utils": "^7.19.0" }, @@ -1248,13 +1248,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -1264,14 +1263,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" }, "engines": { "node": ">=6.9.0" @@ -1281,15 +1279,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", - "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", "dependencies": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.0", + "@babel/helper-module-transforms": "^7.19.6", "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-validator-identifier": "^7.19.1" }, "engines": { "node": ">=6.9.0" @@ -1490,9 +1487,9 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.1.tgz", - "integrity": "sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", + "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", "dependencies": { "@babel/helper-module-imports": "^7.18.6", "@babel/helper-plugin-utils": "^7.19.0", @@ -1580,13 +1577,13 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.3.tgz", - "integrity": "sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.0.tgz", + "integrity": "sha512-xOAsAFaun3t9hCwZ13Qe7gq423UgMZ6zAgmLxeGGapFqlT/X3L5qT2btjiVLlFn7gWtMaVyceS5VxGAuKbgizw==", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.19.0", "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-typescript": "^7.18.6" + "@babel/plugin-syntax-typescript": "^7.20.0" }, "engines": { "node": ">=6.9.0" @@ -1763,23 +1760,23 @@ } }, "node_modules/@babel/runtime": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz", - "integrity": "sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.0.tgz", + "integrity": "sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q==", "dependencies": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.10" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.19.4.tgz", - "integrity": "sha512-HzjQ8+dzdx7dmZy4DQ8KV8aHi/74AjEbBGTFutBmg/pd3dY5/q1sfuOGPTFGEytlQhWoeVXqcK5BwMgIkRkNDQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.0.tgz", + "integrity": "sha512-v1JH7PeAAGBEyTQM9TqojVl+b20zXtesFKCJHu50xMxZKD1fX0TKaKHPsZfFkXfs7D1M9M6Eeqg1FkJ3a0x2dA==", "dependencies": { "core-js-pure": "^3.25.1", - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.10" }, "engines": { "node": ">=6.9.0" @@ -1799,18 +1796,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.4.tgz", - "integrity": "sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.0.tgz", + "integrity": "sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ==", "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.4", + "@babel/generator": "^7.20.0", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.19.4", - "@babel/types": "^7.19.4", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1819,9 +1816,9 @@ } }, "node_modules/@babel/types": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", - "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.0.tgz", + "integrity": "sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==", "dependencies": { "@babel/helper-string-parser": "^7.19.4", "@babel/helper-validator-identifier": "^7.19.1", @@ -2316,13 +2313,13 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.10.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz", - "integrity": "sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==", + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" @@ -3072,9 +3069,9 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.16.tgz", - "integrity": "sha512-LCQ+NeThyJ4k1W2d+vIKdxuSt9R3pQSZ4P92m7EakaYuXcVWbHuT5bjNcqLd4Rdgi6xYWYDvBJZJLZSLanjDcA==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dependencies": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" @@ -3548,9 +3545,9 @@ "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==" }, "node_modules/@sinclair/typebox": { - "version": "0.24.44", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.44.tgz", - "integrity": "sha512-ka0W0KN5i6LfrSocduwliMMpqVgohtPFidKdMEOUjoOFCHcOOYkKsPRxfs5f15oPNHTm6ERAm0GV/+/LTKeiWg==" + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" }, "node_modules/@sinonjs/commons": { "version": "1.8.3", @@ -3909,9 +3906,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", - "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", + "version": "8.4.9", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.9.tgz", + "integrity": "sha512-jFCSo4wJzlHQLCpceUhUnXdrPuCNOjGFMQ8Eg6JXxlz3QaCKOb7eGi2cephQdM4XTYsNej69P9JDJ1zqNIbncQ==", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -4020,9 +4017,9 @@ "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" }, "node_modules/@types/node": { - "version": "18.11.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.7.tgz", - "integrity": "sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==" + "version": "18.11.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.8.tgz", + "integrity": "sha512-uGwPWlE0Hj972KkHtCDVwZ8O39GmyjfMane1Z3GUBGGnkZ2USDq7SxLpVIiIHpweY9DS0QTDH0Nw7RNBsAAZ5A==" }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -4125,6 +4122,11 @@ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" + }, "node_modules/@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -4182,13 +4184,13 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.39.0.tgz", - "integrity": "sha512-xVfKOkBm5iWMNGKQ2fwX5GVgBuHmZBO1tCRwXmY5oAIsPscfwm2UADDuNB8ZVYCtpQvJK4xpjrK7jEhcJ0zY9A==", + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.41.0.tgz", + "integrity": "sha512-DXUS22Y57/LAFSg3x7Vi6RNAuLpTXwxB9S2nIA7msBb/Zt8p7XqMwdpdc1IU7CkOQUPgAqR5fWvxuKCbneKGmA==", "dependencies": { - "@typescript-eslint/scope-manager": "5.39.0", - "@typescript-eslint/type-utils": "5.39.0", - "@typescript-eslint/utils": "5.39.0", + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/type-utils": "5.41.0", + "@typescript-eslint/utils": "5.41.0", "debug": "^4.3.4", "ignore": "^5.2.0", "regexpp": "^3.2.0", @@ -4227,11 +4229,11 @@ } }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.39.0.tgz", - "integrity": "sha512-n5N9kG/oGu2xXhHzsWzn94s6CWoiUj59FPU2dF2IQZxPftw+q6Jm5sV2vj5qTgAElRooHhrgtl2gxBQDCPt6WA==", + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.41.0.tgz", + "integrity": "sha512-/qxT2Kd2q/A22JVIllvws4rvc00/3AT4rAo/0YgEN28y+HPhbJbk6X4+MAHEoZzpNyAOugIT7D/OLnKBW8FfhA==", "dependencies": { - "@typescript-eslint/utils": "5.39.0" + "@typescript-eslint/utils": "5.41.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4245,13 +4247,13 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.39.0.tgz", - "integrity": "sha512-PhxLjrZnHShe431sBAGHaNe6BDdxAASDySgsBCGxcBecVCi8NQWxQZMcizNA4g0pN51bBAn/FUfkWG3SDVcGlA==", + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.41.0.tgz", + "integrity": "sha512-HQVfix4+RL5YRWZboMD1pUfFN8MpRH4laziWkkAzyO1fvNOY/uinZcvo3QiFJVS/siNHupV8E5+xSwQZrl6PZA==", "dependencies": { - "@typescript-eslint/scope-manager": "5.39.0", - "@typescript-eslint/types": "5.39.0", - "@typescript-eslint/typescript-estree": "5.39.0", + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/typescript-estree": "5.41.0", "debug": "^4.3.4" }, "engines": { @@ -4271,12 +4273,12 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.39.0.tgz", - "integrity": "sha512-/I13vAqmG3dyqMVSZPjsbuNQlYS082Y7OMkwhCfLXYsmlI0ca4nkL7wJ/4gjX70LD4P8Hnw1JywUVVAwepURBw==", + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.41.0.tgz", + "integrity": "sha512-xOxPJCnuktUkY2xoEZBKXO5DBCugFzjrVndKdUnyQr3+9aDWZReKq9MhaoVnbL+maVwWJu/N0SEtrtEUNb62QQ==", "dependencies": { - "@typescript-eslint/types": "5.39.0", - "@typescript-eslint/visitor-keys": "5.39.0" + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/visitor-keys": "5.41.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4287,12 +4289,12 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.39.0.tgz", - "integrity": "sha512-KJHJkOothljQWzR3t/GunL0TPKY+fGJtnpl+pX+sJ0YiKTz3q2Zr87SGTmFqsCMFrLt5E0+o+S6eQY0FAXj9uA==", + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.41.0.tgz", + "integrity": "sha512-L30HNvIG6A1Q0R58e4hu4h+fZqaO909UcnnPbwKiN6Rc3BUEx6ez2wgN7aC0cBfcAjZfwkzE+E2PQQ9nEuoqfA==", "dependencies": { - "@typescript-eslint/typescript-estree": "5.39.0", - "@typescript-eslint/utils": "5.39.0", + "@typescript-eslint/typescript-estree": "5.41.0", + "@typescript-eslint/utils": "5.41.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -4313,9 +4315,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.39.0.tgz", - "integrity": "sha512-gQMZrnfEBFXK38hYqt8Lkwt8f4U6yq+2H5VDSgP/qiTzC8Nw8JO3OuSUOQ2qW37S/dlwdkHDntkZM6SQhKyPhw==", + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.41.0.tgz", + "integrity": "sha512-5BejraMXMC+2UjefDvrH0Fo/eLwZRV6859SXRg+FgbhA0R0l6lDqDGAQYhKbXhPN2ofk2kY5sgGyLNL907UXpA==", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -4325,12 +4327,12 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.39.0.tgz", - "integrity": "sha512-qLFQP0f398sdnogJoLtd43pUgB18Q50QSA+BTE5h3sUxySzbWDpTSdgt4UyxNSozY/oDK2ta6HVAzvGgq8JYnA==", + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.41.0.tgz", + "integrity": "sha512-SlzFYRwFSvswzDSQ/zPkIWcHv8O5y42YUskko9c4ki+fV6HATsTODUPbRbcGDFYP86gaJL5xohUEytvyNNcXWg==", "dependencies": { - "@typescript-eslint/types": "5.39.0", - "@typescript-eslint/visitor-keys": "5.39.0", + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/visitor-keys": "5.41.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4365,16 +4367,18 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.39.0.tgz", - "integrity": "sha512-+DnY5jkpOpgj+EBtYPyHRjXampJfC0yUZZzfzLuUWVZvCuKqSdJVC8UhdWipIw7VKNTfwfAPiOWzYkAwuIhiAg==", + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.41.0.tgz", + "integrity": "sha512-QlvfwaN9jaMga9EBazQ+5DDx/4sAdqDkcs05AsQHMaopluVCUyu1bTRUVKzXbgjDlrRAQrYVoi/sXJ9fmG+KLQ==", "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.39.0", - "@typescript-eslint/types": "5.39.0", - "@typescript-eslint/typescript-estree": "5.39.0", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/typescript-estree": "5.41.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4407,12 +4411,26 @@ "node": ">=4.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.39.0.tgz", - "integrity": "sha512-yyE3RPwOG+XJBLrhvsxAidUgybJVQ/hG8BhiJo0k8JSAYfk/CshVcxf0HwP4Jt7WZZ6vLmxdo1p6EyN3tzFTkg==", + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dependencies": { - "@typescript-eslint/types": "5.39.0", + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.41.0.tgz", + "integrity": "sha512-vilqeHj267v8uzzakbm13HkPMl7cbYpKVjgFWZPIOHIJHZtinvypUhJ5xBXfWYg4eFKqztbMMpOgFpT9Gfx4fw==", + "dependencies": { + "@typescript-eslint/types": "5.41.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -4588,9 +4606,9 @@ } }, "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "bin": { "acorn": "bin/acorn" }, @@ -4959,9 +4977,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.12", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", - "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", "funding": [ { "type": "opencollective", @@ -4974,7 +4992,7 @@ ], "dependencies": { "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001407", + "caniuse-lite": "^1.0.30001426", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -4991,9 +5009,9 @@ } }, "node_modules/axe-core": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz", - "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.0.tgz", + "integrity": "sha512-4+rr8eQ7+XXS5nZrKcMO/AikHL0hVqy+lHWAnE3xdHl+aguag8SOQ6eEqLexwLNWgXIMfunGuD3ON1/6Kyet0A==", "engines": { "node": ">=4" } @@ -5133,14 +5151,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dependencies": { - "object.assign": "^4.1.0" - } - }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -5553,9 +5563,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001418", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001418.tgz", - "integrity": "sha512-oIs7+JL3K9JRQ3jPZjlH6qyYDp+nBTCais7hjh0s+fuBwufc7uZ7hPYMXrDOJhV360KGMTcczMRObk0/iMqZRg==", + "version": "1.0.30001427", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001427.tgz", + "integrity": "sha512-lfXQ73oB9c8DP5Suxaszm+Ta2sr/4tf8+381GkIm1MLj/YdLf+rEDyDSRCzeltuyTVGm+/s18gdZ0q+Wmp8VsQ==", "funding": [ { "type": "opencollective", @@ -5818,6 +5828,11 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -5847,25 +5862,6 @@ "node": ">= 0.6" } }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", @@ -5875,12 +5871,9 @@ } }, "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dependencies": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/cookie": { "version": "0.5.0", @@ -5896,9 +5889,9 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "node_modules/core-js": { - "version": "3.25.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.5.tgz", - "integrity": "sha512-nbm6eZSjm+ZuBQxCUPQKQCoUEfFOXjUZ8dTTyikyKaWrTYmAVbykQfwsKE5dBK88u3QCkCrzsx/PPlKfhsvgpw==", + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.0.tgz", + "integrity": "sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -5906,9 +5899,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.25.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz", - "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.0.tgz", + "integrity": "sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==", "dependencies": { "browserslist": "^4.21.4" }, @@ -5918,9 +5911,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.25.5", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.5.tgz", - "integrity": "sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg==", + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.0.tgz", + "integrity": "sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -6224,9 +6217,9 @@ } }, "node_modules/cssdb": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.1.tgz", - "integrity": "sha512-pT3nzyGM78poCKLAEy2zWIVX2hikq6dIrjuZzLV98MumBg+xMTNYfHx7paUlfiRTgg91O/vR889CIf+qiv79Rw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.2.tgz", + "integrity": "sha512-Vm4b6P/PifADu0a76H0DKRNVWq3Rq9xa/Nx6oEMUBJlwTUuZoZ3dkZxo8Gob3UEL53Cq+Ma1GBgISed6XEBs3w==", "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" @@ -6244,11 +6237,11 @@ } }, "node_modules/cssnano": { - "version": "5.1.13", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.13.tgz", - "integrity": "sha512-S2SL2ekdEz6w6a2epXn4CmMKU4K3KpcyXLKfAYc9UQQqJRkD/2eLUG0vJ3Db/9OvO5GuAdgXw3pFbR6abqghDQ==", + "version": "5.1.14", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.14.tgz", + "integrity": "sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==", "dependencies": { - "cssnano-preset-default": "^5.2.12", + "cssnano-preset-default": "^5.2.13", "lilconfig": "^2.0.3", "yaml": "^1.10.2" }, @@ -6264,24 +6257,24 @@ } }, "node_modules/cssnano-preset-default": { - "version": "5.2.12", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz", - "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==", + "version": "5.2.13", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz", + "integrity": "sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==", "dependencies": { - "css-declaration-sorter": "^6.3.0", + "css-declaration-sorter": "^6.3.1", "cssnano-utils": "^3.1.0", "postcss-calc": "^8.2.3", "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.2", + "postcss-convert-values": "^5.1.3", "postcss-discard-comments": "^5.1.2", "postcss-discard-duplicates": "^5.1.0", "postcss-discard-empty": "^5.1.1", "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.6", - "postcss-merge-rules": "^5.1.2", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.3", "postcss-minify-font-values": "^5.1.0", "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.3", + "postcss-minify-params": "^5.1.4", "postcss-minify-selectors": "^5.2.1", "postcss-normalize-charset": "^5.1.0", "postcss-normalize-display-values": "^5.1.0", @@ -6289,11 +6282,11 @@ "postcss-normalize-repeat-style": "^5.1.1", "postcss-normalize-string": "^5.1.0", "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", "postcss-normalize-url": "^5.1.0", "postcss-normalize-whitespace": "^5.1.1", "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-initial": "^5.1.1", "postcss-reduce-transforms": "^5.1.0", "postcss-svgo": "^5.1.0", "postcss-unique-selectors": "^5.1.1" @@ -6413,9 +6406,9 @@ } }, "node_modules/decimal.js": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.1.tgz", - "integrity": "sha512-F29o+vci4DodHYT9UrR5IEbfBw9pE5eSapIJdTqXK5+6hq+t8VRxwQyKlW2i+KDKFkkJQRvFyI/QXD83h8LyQw==" + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz", + "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==" }, "node_modules/dedent": { "version": "0.7.0", @@ -6470,9 +6463,12 @@ } }, "node_modules/defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/delayed-stream": { "version": "1.0.0", @@ -6747,9 +6743,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.276", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.276.tgz", - "integrity": "sha512-EpuHPqu8YhonqLBXHoU6hDJCD98FCe6KDoet3/gY1qsQ6usjJoHqBH2YIVs8FXaAtHwVL8Uqa/fsYao/vq9VWQ==" + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" }, "node_modules/emittery": { "version": "0.8.1", @@ -6992,13 +6988,14 @@ } }, "node_modules/eslint": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.25.0.tgz", - "integrity": "sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==", + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", + "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", "dependencies": { "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.10.5", + "@humanwhocodes/config-array": "^0.11.6", "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -7014,14 +7011,14 @@ "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", - "glob-parent": "^6.0.1", + "glob-parent": "^6.0.2", "globals": "^13.15.0", - "globby": "^11.1.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", @@ -7230,9 +7227,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.31.9", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.9.tgz", - "integrity": "sha512-vrVJwusIw4L99lyfXjtCw8HWdloajsiYslMavogrBe2Gl8gr95TJsJnOMRasN4b4N24I3XuJf6aAV6MhyGmjqw==", + "version": "7.31.10", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz", + "integrity": "sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==", "dependencies": { "array-includes": "^3.1.5", "array.prototype.flatmap": "^1.3.0", @@ -7295,9 +7292,9 @@ } }, "node_modules/eslint-plugin-testing-library": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.7.2.tgz", - "integrity": "sha512-0ZmHeR/DUUgEzW8rwUBRWxuqntipDtpvxK0hymdHnLlABryJkzd+CAHr+XnISaVsTisZ5MLHp6nQF+8COHLLTA==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.9.1.tgz", + "integrity": "sha512-6BQp3tmb79jLLasPHJmy8DnxREe+2Pgf7L+7o09TSWPfdqqtQfRZmZNetr5mOs3yqZk/MRNxpN3RUpJe0wB4LQ==", "dependencies": { "@typescript-eslint/utils": "^5.13.0" }, @@ -7880,25 +7877,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -8733,6 +8711,11 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/hpack.js/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -8969,9 +8952,9 @@ "dev": true }, "node_modules/immer": { - "version": "9.0.15", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz", - "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==", + "version": "9.0.16", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.16.tgz", + "integrity": "sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ==", "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" @@ -9112,9 +9095,9 @@ } }, "node_modules/is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dependencies": { "has": "^1.0.3" }, @@ -9231,6 +9214,14 @@ "node": ">=0.10.0" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-plain-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", @@ -11700,9 +11691,9 @@ } }, "node_modules/loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz", + "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -11830,9 +11821,9 @@ } }, "node_modules/memfs": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", - "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.9.tgz", + "integrity": "sha512-3rm8kbrzpUGRyPKSGuk387NZOwQ90O4rI9tsWQkzNW7BLSnKGp23RsEsKK8N8QVCrtJoAMqy3spxHC4os4G6PQ==", "dependencies": { "fs-monkey": "^1.0.3" }, @@ -12014,9 +12005,12 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/mkdirp": { "version": "0.5.6", @@ -12844,9 +12838,9 @@ } }, "node_modules/postcss": { - "version": "8.4.17", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.17.tgz", - "integrity": "sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q==", + "version": "8.4.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", + "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", "funding": [ { "type": "opencollective", @@ -12994,11 +12988,11 @@ } }, "node_modules/postcss-convert-values": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", - "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", "dependencies": { - "browserslist": "^4.20.3", + "browserslist": "^4.21.4", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -13027,9 +13021,9 @@ } }, "node_modules/postcss-custom-properties": { - "version": "12.1.9", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.9.tgz", - "integrity": "sha512-/E7PRvK8DAVljBbeWrcEQJPG72jaImxF3vvCNFwv9cC8CzigVoNIpeyfnJzphnN3Fd8/auBf5wvkw6W9MfmTyg==", + "version": "12.1.10", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz", + "integrity": "sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -13381,12 +13375,12 @@ } }, "node_modules/postcss-merge-longhand": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz", - "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", "dependencies": { "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.0" + "stylehacks": "^5.1.1" }, "engines": { "node": "^10 || ^12 || >=14.0" @@ -13396,11 +13390,11 @@ } }, "node_modules/postcss-merge-rules": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", - "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz", + "integrity": "sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==", "dependencies": { - "browserslist": "^4.16.6", + "browserslist": "^4.21.4", "caniuse-api": "^3.0.0", "cssnano-utils": "^3.1.0", "postcss-selector-parser": "^6.0.5" @@ -13443,11 +13437,11 @@ } }, "node_modules/postcss-minify-params": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", - "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", "dependencies": { - "browserslist": "^4.16.6", + "browserslist": "^4.21.4", "cssnano-utils": "^3.1.0", "postcss-value-parser": "^4.2.0" }, @@ -13528,11 +13522,11 @@ } }, "node_modules/postcss-nested": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz", + "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==", "dependencies": { - "postcss-selector-parser": "^6.0.6" + "postcss-selector-parser": "^6.0.10" }, "engines": { "node": ">=12.0" @@ -13663,11 +13657,11 @@ } }, "node_modules/postcss-normalize-unicode": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", - "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", "dependencies": { - "browserslist": "^4.16.6", + "browserslist": "^4.21.4", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -13868,11 +13862,11 @@ } }, "node_modules/postcss-reduce-initial": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", - "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz", + "integrity": "sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==", "dependencies": { - "browserslist": "^4.16.6", + "browserslist": "^4.21.4", "caniuse-api": "^3.0.0" }, "engines": { @@ -14084,9 +14078,9 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/promise": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.2.0.tgz", - "integrity": "sha512-+CMAlLHqwRYwBMXKCP+o8ns7DN+xHDUiI+0nArsiJ9y+kJVPLFxEaSw6Ha9s9H0tftxg2Yzl25wqj9G7m5wLZg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", "dependencies": { "asap": "~2.0.6" } @@ -14754,25 +14748,14 @@ } }, "node_modules/recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dependencies": { - "minimatch": "3.0.4" + "minimatch": "^3.0.5" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/recursive-readdir/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "node": ">=6.0.0" } }, "node_modules/regenerate": { @@ -14792,9 +14775,9 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + "version": "0.13.10", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", + "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" }, "node_modules/regenerator-transform": { "version": "0.15.0", @@ -15146,9 +15129,23 @@ } }, "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/safe-regex-test": { "version": "1.0.0", @@ -15435,9 +15432,12 @@ } }, "node_modules/shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/side-channel": { "version": "1.0.4", @@ -15528,9 +15528,9 @@ } }, "node_modules/source-map-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.1.tgz", - "integrity": "sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz", + "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==", "dependencies": { "abab": "^2.0.5", "iconv-lite": "^0.6.3", @@ -15680,25 +15680,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -15870,11 +15851,11 @@ } }, "node_modules/stylehacks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", - "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", "dependencies": { - "browserslist": "^4.16.6", + "browserslist": "^4.21.4", "postcss-selector-parser": "^6.0.4" }, "engines": { @@ -16033,9 +16014,9 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "node_modules/tailwindcss": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.8.tgz", - "integrity": "sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.1.tgz", + "integrity": "sha512-Uw+GVSxp5CM48krnjHObqoOwlCt5Qo6nw1jlCRwfGy68dSYb/LwS9ZFidYGRiM+w6rMawkZiu1mEMAsHYAfoLg==", "dependencies": { "arg": "^5.0.2", "chokidar": "^3.5.3", @@ -16043,18 +16024,19 @@ "detective": "^5.2.1", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.2.11", + "fast-glob": "^3.2.12", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "lilconfig": "^2.0.6", + "micromatch": "^4.0.5", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.0.0", - "postcss": "^8.4.14", + "postcss": "^8.4.17", "postcss-import": "^14.1.0", "postcss-js": "^4.0.0", "postcss-load-config": "^3.1.4", - "postcss-nested": "5.0.6", + "postcss-nested": "6.0.0", "postcss-selector-parser": "^6.0.10", "postcss-value-parser": "^4.2.0", "quick-lru": "^5.1.1", @@ -16664,6 +16646,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", "dependencies": { "browser-process-hrtime": "^1.0.0" } @@ -16936,9 +16919,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", - "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz", + "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==", "engines": { "node": ">=10.0.0" }, @@ -17591,25 +17574,25 @@ } }, "@babel/compat-data": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", - "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==" + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.0.tgz", + "integrity": "sha512-Gt9jszFJYq7qzXVK4slhc6NzJXnOVmRECWcVjF/T23rNXD9NtWQ0W3qxdg+p9wWIB+VQw3GYV/U2Ha9bRTfs4w==" }, "@babel/core": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", - "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz", + "integrity": "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==", "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.3", + "@babel/generator": "^7.19.6", "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-module-transforms": "^7.19.0", - "@babel/helpers": "^7.19.0", - "@babel/parser": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helpers": "^7.19.4", + "@babel/parser": "^7.19.6", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.3", - "@babel/types": "^7.19.3", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -17635,11 +17618,11 @@ } }, "@babel/generator": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.4.tgz", - "integrity": "sha512-5T2lY5vXqS+5UEit/5TwcIUeCnwgCljcF8IQRT6XRQPBrvLeq5V8W+URv+GvwoF3FP8tkhp++evVyDzkDGzNmA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.0.tgz", + "integrity": "sha512-GUPcXxWibClgmYJuIwC2Bc2Lg+8b9VjaJ+HlNdACEVt+Wlr1eoU1OPZjZRm7Hzl0gaTsUZNQfeihvZJhG7oc3w==", "requires": { - "@babel/types": "^7.19.4", + "@babel/types": "^7.20.0", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -17674,11 +17657,11 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", - "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", "requires": { - "@babel/compat-data": "^7.19.3", + "@babel/compat-data": "^7.20.0", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.21.3", "semver": "^6.3.0" @@ -17767,18 +17750,18 @@ } }, "@babel/helper-module-transforms": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", - "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz", + "integrity": "sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==", "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-simple-access": "^7.19.4", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4" } }, "@babel/helper-optimise-call-expression": { @@ -17826,11 +17809,11 @@ } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", "requires": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.0" } }, "@babel/helper-split-export-declaration": { @@ -17868,13 +17851,13 @@ } }, "@babel/helpers": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz", - "integrity": "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.0.tgz", + "integrity": "sha512-aGMjYraN0zosCEthoGLdqot1oRsmxVTQRHadsUPz5QM44Zej2PYRz7XiDE7GqnkZnNtLbOuxqoZw42vkU7+XEQ==", "requires": { "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.4", - "@babel/types": "^7.19.4" + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0" } }, "@babel/highlight": { @@ -17888,9 +17871,9 @@ } }, "@babel/parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz", - "integrity": "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==" + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.0.tgz", + "integrity": "sha512-G9VgAhEaICnz8iiJeGJQyVl6J2nTjbW0xeisva0PK6XcKsga7BIaqm4ZF8Rg1Wbaqmy6znspNqhPaPkyukujzg==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.18.6", @@ -17941,9 +17924,9 @@ } }, "@babel/plugin-proposal-decorators": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.3.tgz", - "integrity": "sha512-MbgXtNXqo7RTKYIXVchVJGPvaVufQH3pxvQyfbGvNw1DObIhph+PesYXJTcd8J4DdWibvf6Z2eanOyItX8WnJg==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.0.tgz", + "integrity": "sha512-vnuRRS20ygSxclEYikHzVrP9nZDFXaSzvJxGLQNAiBX041TmhS4hOUHWNIpq/q4muENuEP9XPJFXTNFejhemkg==", "requires": { "@babel/helper-create-class-features-plugin": "^7.19.0", "@babel/helper-plugin-utils": "^7.19.0", @@ -18131,11 +18114,11 @@ } }, "@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-syntax-import-meta": { @@ -18227,11 +18210,11 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", - "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-arrow-functions": { @@ -18261,9 +18244,9 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", - "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.0.tgz", + "integrity": "sha512-sXOohbpHZSk7GjxK9b3dKB7CfqUD5DwOH+DggKzOQ7TXYP+RCSbRykfjQmn/zq+rBjycVRtLf9pYhAaEJA786w==", "requires": { "@babel/helper-plugin-utils": "^7.19.0" } @@ -18293,9 +18276,9 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", - "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.0.tgz", + "integrity": "sha512-1dIhvZfkDVx/zn2S1aFwlruspTt4189j7fEkH0Y0VyuDM6bQt7bD6kLcz3l4IlLG+e5OReaBz9ROAbttRtUHqA==", "requires": { "@babel/helper-plugin-utils": "^7.19.0" } @@ -18370,36 +18353,33 @@ } }, "@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", - "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", "requires": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.0", + "@babel/helper-module-transforms": "^7.19.6", "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-validator-identifier": "^7.19.1" } }, "@babel/plugin-transform-modules-umd": { @@ -18516,9 +18496,9 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.1.tgz", - "integrity": "sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", + "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", "requires": { "@babel/helper-module-imports": "^7.18.6", "@babel/helper-plugin-utils": "^7.19.0", @@ -18570,13 +18550,13 @@ } }, "@babel/plugin-transform-typescript": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.3.tgz", - "integrity": "sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.0.tgz", + "integrity": "sha512-xOAsAFaun3t9hCwZ13Qe7gq423UgMZ6zAgmLxeGGapFqlT/X3L5qT2btjiVLlFn7gWtMaVyceS5VxGAuKbgizw==", "requires": { "@babel/helper-create-class-features-plugin": "^7.19.0", "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-typescript": "^7.18.6" + "@babel/plugin-syntax-typescript": "^7.20.0" } }, "@babel/plugin-transform-unicode-escapes": { @@ -18714,20 +18694,20 @@ } }, "@babel/runtime": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz", - "integrity": "sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.0.tgz", + "integrity": "sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q==", "requires": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.10" } }, "@babel/runtime-corejs3": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.19.4.tgz", - "integrity": "sha512-HzjQ8+dzdx7dmZy4DQ8KV8aHi/74AjEbBGTFutBmg/pd3dY5/q1sfuOGPTFGEytlQhWoeVXqcK5BwMgIkRkNDQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.0.tgz", + "integrity": "sha512-v1JH7PeAAGBEyTQM9TqojVl+b20zXtesFKCJHu50xMxZKD1fX0TKaKHPsZfFkXfs7D1M9M6Eeqg1FkJ3a0x2dA==", "requires": { "core-js-pure": "^3.25.1", - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.10" } }, "@babel/template": { @@ -18741,26 +18721,26 @@ } }, "@babel/traverse": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.4.tgz", - "integrity": "sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.0.tgz", + "integrity": "sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ==", "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.4", + "@babel/generator": "^7.20.0", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.19.4", - "@babel/types": "^7.19.4", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", - "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.0.tgz", + "integrity": "sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==", "requires": { "@babel/helper-string-parser": "^7.19.4", "@babel/helper-validator-identifier": "^7.19.1", @@ -19058,13 +19038,13 @@ } }, "@humanwhocodes/config-array": { - "version": "0.10.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz", - "integrity": "sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==", + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", "requires": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" } }, "@humanwhocodes/module-importer": { @@ -19615,9 +19595,9 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, "@jridgewell/trace-mapping": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.16.tgz", - "integrity": "sha512-LCQ+NeThyJ4k1W2d+vIKdxuSt9R3pQSZ4P92m7EakaYuXcVWbHuT5bjNcqLd4Rdgi6xYWYDvBJZJLZSLanjDcA==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "requires": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" @@ -19868,9 +19848,9 @@ "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==" }, "@sinclair/typebox": { - "version": "0.24.44", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.44.tgz", - "integrity": "sha512-ka0W0KN5i6LfrSocduwliMMpqVgohtPFidKdMEOUjoOFCHcOOYkKsPRxfs5f15oPNHTm6ERAm0GV/+/LTKeiWg==" + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" }, "@sinonjs/commons": { "version": "1.8.3", @@ -20113,9 +20093,9 @@ } }, "@types/eslint": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", - "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", + "version": "8.4.9", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.9.tgz", + "integrity": "sha512-jFCSo4wJzlHQLCpceUhUnXdrPuCNOjGFMQ8Eg6JXxlz3QaCKOb7eGi2cephQdM4XTYsNej69P9JDJ1zqNIbncQ==", "requires": { "@types/estree": "*", "@types/json-schema": "*" @@ -20224,9 +20204,9 @@ "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" }, "@types/node": { - "version": "18.11.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.7.tgz", - "integrity": "sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==" + "version": "18.11.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.8.tgz", + "integrity": "sha512-uGwPWlE0Hj972KkHtCDVwZ8O39GmyjfMane1Z3GUBGGnkZ2USDq7SxLpVIiIHpweY9DS0QTDH0Nw7RNBsAAZ5A==" }, "@types/parse-json": { "version": "4.0.0", @@ -20329,6 +20309,11 @@ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" + }, "@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -20386,13 +20371,13 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" }, "@typescript-eslint/eslint-plugin": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.39.0.tgz", - "integrity": "sha512-xVfKOkBm5iWMNGKQ2fwX5GVgBuHmZBO1tCRwXmY5oAIsPscfwm2UADDuNB8ZVYCtpQvJK4xpjrK7jEhcJ0zY9A==", + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.41.0.tgz", + "integrity": "sha512-DXUS22Y57/LAFSg3x7Vi6RNAuLpTXwxB9S2nIA7msBb/Zt8p7XqMwdpdc1IU7CkOQUPgAqR5fWvxuKCbneKGmA==", "requires": { - "@typescript-eslint/scope-manager": "5.39.0", - "@typescript-eslint/type-utils": "5.39.0", - "@typescript-eslint/utils": "5.39.0", + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/type-utils": "5.41.0", + "@typescript-eslint/utils": "5.41.0", "debug": "^4.3.4", "ignore": "^5.2.0", "regexpp": "^3.2.0", @@ -20411,56 +20396,56 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.39.0.tgz", - "integrity": "sha512-n5N9kG/oGu2xXhHzsWzn94s6CWoiUj59FPU2dF2IQZxPftw+q6Jm5sV2vj5qTgAElRooHhrgtl2gxBQDCPt6WA==", + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.41.0.tgz", + "integrity": "sha512-/qxT2Kd2q/A22JVIllvws4rvc00/3AT4rAo/0YgEN28y+HPhbJbk6X4+MAHEoZzpNyAOugIT7D/OLnKBW8FfhA==", "requires": { - "@typescript-eslint/utils": "5.39.0" + "@typescript-eslint/utils": "5.41.0" } }, "@typescript-eslint/parser": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.39.0.tgz", - "integrity": "sha512-PhxLjrZnHShe431sBAGHaNe6BDdxAASDySgsBCGxcBecVCi8NQWxQZMcizNA4g0pN51bBAn/FUfkWG3SDVcGlA==", + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.41.0.tgz", + "integrity": "sha512-HQVfix4+RL5YRWZboMD1pUfFN8MpRH4laziWkkAzyO1fvNOY/uinZcvo3QiFJVS/siNHupV8E5+xSwQZrl6PZA==", "requires": { - "@typescript-eslint/scope-manager": "5.39.0", - "@typescript-eslint/types": "5.39.0", - "@typescript-eslint/typescript-estree": "5.39.0", + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/typescript-estree": "5.41.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.39.0.tgz", - "integrity": "sha512-/I13vAqmG3dyqMVSZPjsbuNQlYS082Y7OMkwhCfLXYsmlI0ca4nkL7wJ/4gjX70LD4P8Hnw1JywUVVAwepURBw==", + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.41.0.tgz", + "integrity": "sha512-xOxPJCnuktUkY2xoEZBKXO5DBCugFzjrVndKdUnyQr3+9aDWZReKq9MhaoVnbL+maVwWJu/N0SEtrtEUNb62QQ==", "requires": { - "@typescript-eslint/types": "5.39.0", - "@typescript-eslint/visitor-keys": "5.39.0" + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/visitor-keys": "5.41.0" } }, "@typescript-eslint/type-utils": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.39.0.tgz", - "integrity": "sha512-KJHJkOothljQWzR3t/GunL0TPKY+fGJtnpl+pX+sJ0YiKTz3q2Zr87SGTmFqsCMFrLt5E0+o+S6eQY0FAXj9uA==", + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.41.0.tgz", + "integrity": "sha512-L30HNvIG6A1Q0R58e4hu4h+fZqaO909UcnnPbwKiN6Rc3BUEx6ez2wgN7aC0cBfcAjZfwkzE+E2PQQ9nEuoqfA==", "requires": { - "@typescript-eslint/typescript-estree": "5.39.0", - "@typescript-eslint/utils": "5.39.0", + "@typescript-eslint/typescript-estree": "5.41.0", + "@typescript-eslint/utils": "5.41.0", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.39.0.tgz", - "integrity": "sha512-gQMZrnfEBFXK38hYqt8Lkwt8f4U6yq+2H5VDSgP/qiTzC8Nw8JO3OuSUOQ2qW37S/dlwdkHDntkZM6SQhKyPhw==" + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.41.0.tgz", + "integrity": "sha512-5BejraMXMC+2UjefDvrH0Fo/eLwZRV6859SXRg+FgbhA0R0l6lDqDGAQYhKbXhPN2ofk2kY5sgGyLNL907UXpA==" }, "@typescript-eslint/typescript-estree": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.39.0.tgz", - "integrity": "sha512-qLFQP0f398sdnogJoLtd43pUgB18Q50QSA+BTE5h3sUxySzbWDpTSdgt4UyxNSozY/oDK2ta6HVAzvGgq8JYnA==", + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.41.0.tgz", + "integrity": "sha512-SlzFYRwFSvswzDSQ/zPkIWcHv8O5y42YUskko9c4ki+fV6HATsTODUPbRbcGDFYP86gaJL5xohUEytvyNNcXWg==", "requires": { - "@typescript-eslint/types": "5.39.0", - "@typescript-eslint/visitor-keys": "5.39.0", + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/visitor-keys": "5.41.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -20479,16 +20464,18 @@ } }, "@typescript-eslint/utils": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.39.0.tgz", - "integrity": "sha512-+DnY5jkpOpgj+EBtYPyHRjXampJfC0yUZZzfzLuUWVZvCuKqSdJVC8UhdWipIw7VKNTfwfAPiOWzYkAwuIhiAg==", + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.41.0.tgz", + "integrity": "sha512-QlvfwaN9jaMga9EBazQ+5DDx/4sAdqDkcs05AsQHMaopluVCUyu1bTRUVKzXbgjDlrRAQrYVoi/sXJ9fmG+KLQ==", "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.39.0", - "@typescript-eslint/types": "5.39.0", - "@typescript-eslint/typescript-estree": "5.39.0", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/types": "5.41.0", + "@typescript-eslint/typescript-estree": "5.41.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" }, "dependencies": { "eslint-scope": { @@ -20504,15 +20491,23 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } } } }, "@typescript-eslint/visitor-keys": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.39.0.tgz", - "integrity": "sha512-yyE3RPwOG+XJBLrhvsxAidUgybJVQ/hG8BhiJo0k8JSAYfk/CshVcxf0HwP4Jt7WZZ6vLmxdo1p6EyN3tzFTkg==", + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.41.0.tgz", + "integrity": "sha512-vilqeHj267v8uzzakbm13HkPMl7cbYpKVjgFWZPIOHIJHZtinvypUhJ5xBXfWYg4eFKqztbMMpOgFpT9Gfx4fw==", "requires": { - "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/types": "5.41.0", "eslint-visitor-keys": "^3.3.0" } }, @@ -20678,9 +20673,9 @@ } }, "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" }, "acorn-globals": { "version": "6.0.0", @@ -20946,12 +20941,12 @@ "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==" }, "autoprefixer": { - "version": "10.4.12", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", - "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", "requires": { "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001407", + "caniuse-lite": "^1.0.30001426", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -20959,9 +20954,9 @@ } }, "axe-core": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz", - "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==" + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.0.tgz", + "integrity": "sha512-4+rr8eQ7+XXS5nZrKcMO/AikHL0hVqy+lHWAnE3xdHl+aguag8SOQ6eEqLexwLNWgXIMfunGuD3ON1/6Kyet0A==" }, "axios": { "version": "1.1.3", @@ -21061,14 +21056,6 @@ } } }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "requires": { - "object.assign": "^4.1.0" - } - }, "babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -21391,9 +21378,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001418", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001418.tgz", - "integrity": "sha512-oIs7+JL3K9JRQ3jPZjlH6qyYDp+nBTCais7hjh0s+fuBwufc7uZ7hPYMXrDOJhV360KGMTcczMRObk0/iMqZRg==" + "version": "1.0.30001427", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001427.tgz", + "integrity": "sha512-lfXQ73oB9c8DP5Suxaszm+Ta2sr/4tf8+381GkIm1MLj/YdLf+rEDyDSRCzeltuyTVGm+/s18gdZ0q+Wmp8VsQ==" }, "case-sensitive-paths-webpack-plugin": { "version": "2.4.0", @@ -21592,6 +21579,11 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, @@ -21616,13 +21608,6 @@ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "requires": { "safe-buffer": "5.2.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } } }, "content-type": { @@ -21631,12 +21616,9 @@ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "requires": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "cookie": { "version": "0.5.0", @@ -21649,22 +21631,22 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "core-js": { - "version": "3.25.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.5.tgz", - "integrity": "sha512-nbm6eZSjm+ZuBQxCUPQKQCoUEfFOXjUZ8dTTyikyKaWrTYmAVbykQfwsKE5dBK88u3QCkCrzsx/PPlKfhsvgpw==" + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.0.tgz", + "integrity": "sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==" }, "core-js-compat": { - "version": "3.25.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz", - "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.0.tgz", + "integrity": "sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==", "requires": { "browserslist": "^4.21.4" } }, "core-js-pure": { - "version": "3.25.5", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.5.tgz", - "integrity": "sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg==" + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.0.tgz", + "integrity": "sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA==" }, "core-util-is": { "version": "1.0.3", @@ -21856,9 +21838,9 @@ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" }, "cssdb": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.1.tgz", - "integrity": "sha512-pT3nzyGM78poCKLAEy2zWIVX2hikq6dIrjuZzLV98MumBg+xMTNYfHx7paUlfiRTgg91O/vR889CIf+qiv79Rw==" + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.2.tgz", + "integrity": "sha512-Vm4b6P/PifADu0a76H0DKRNVWq3Rq9xa/Nx6oEMUBJlwTUuZoZ3dkZxo8Gob3UEL53Cq+Ma1GBgISed6XEBs3w==" }, "cssesc": { "version": "3.0.0", @@ -21866,34 +21848,34 @@ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" }, "cssnano": { - "version": "5.1.13", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.13.tgz", - "integrity": "sha512-S2SL2ekdEz6w6a2epXn4CmMKU4K3KpcyXLKfAYc9UQQqJRkD/2eLUG0vJ3Db/9OvO5GuAdgXw3pFbR6abqghDQ==", + "version": "5.1.14", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.14.tgz", + "integrity": "sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==", "requires": { - "cssnano-preset-default": "^5.2.12", + "cssnano-preset-default": "^5.2.13", "lilconfig": "^2.0.3", "yaml": "^1.10.2" } }, "cssnano-preset-default": { - "version": "5.2.12", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz", - "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==", + "version": "5.2.13", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz", + "integrity": "sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==", "requires": { - "css-declaration-sorter": "^6.3.0", + "css-declaration-sorter": "^6.3.1", "cssnano-utils": "^3.1.0", "postcss-calc": "^8.2.3", "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.2", + "postcss-convert-values": "^5.1.3", "postcss-discard-comments": "^5.1.2", "postcss-discard-duplicates": "^5.1.0", "postcss-discard-empty": "^5.1.1", "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.6", - "postcss-merge-rules": "^5.1.2", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.3", "postcss-minify-font-values": "^5.1.0", "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.3", + "postcss-minify-params": "^5.1.4", "postcss-minify-selectors": "^5.2.1", "postcss-normalize-charset": "^5.1.0", "postcss-normalize-display-values": "^5.1.0", @@ -21901,11 +21883,11 @@ "postcss-normalize-repeat-style": "^5.1.1", "postcss-normalize-string": "^5.1.0", "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", "postcss-normalize-url": "^5.1.0", "postcss-normalize-whitespace": "^5.1.1", "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-initial": "^5.1.1", "postcss-reduce-transforms": "^5.1.0", "postcss-svgo": "^5.1.0", "postcss-unique-selectors": "^5.1.1" @@ -21995,9 +21977,9 @@ } }, "decimal.js": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.1.tgz", - "integrity": "sha512-F29o+vci4DodHYT9UrR5IEbfBw9pE5eSapIJdTqXK5+6hq+t8VRxwQyKlW2i+KDKFkkJQRvFyI/QXD83h8LyQw==" + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz", + "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==" }, "dedent": { "version": "0.7.0", @@ -22037,9 +22019,9 @@ } }, "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==" }, "delayed-stream": { "version": "1.0.0", @@ -22247,9 +22229,9 @@ } }, "electron-to-chromium": { - "version": "1.4.276", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.276.tgz", - "integrity": "sha512-EpuHPqu8YhonqLBXHoU6hDJCD98FCe6KDoet3/gY1qsQ6usjJoHqBH2YIVs8FXaAtHwVL8Uqa/fsYao/vq9VWQ==" + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" }, "emittery": { "version": "0.8.1", @@ -22431,13 +22413,14 @@ } }, "eslint": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.25.0.tgz", - "integrity": "sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==", + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", + "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", "requires": { "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.10.5", + "@humanwhocodes/config-array": "^0.11.6", "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -22453,14 +22436,14 @@ "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", - "glob-parent": "^6.0.1", + "glob-parent": "^6.0.2", "globals": "^13.15.0", - "globby": "^11.1.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", @@ -22729,9 +22712,9 @@ } }, "eslint-plugin-react": { - "version": "7.31.9", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.9.tgz", - "integrity": "sha512-vrVJwusIw4L99lyfXjtCw8HWdloajsiYslMavogrBe2Gl8gr95TJsJnOMRasN4b4N24I3XuJf6aAV6MhyGmjqw==", + "version": "7.31.10", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz", + "integrity": "sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==", "requires": { "array-includes": "^3.1.5", "array.prototype.flatmap": "^1.3.0", @@ -22776,9 +22759,9 @@ "requires": {} }, "eslint-plugin-testing-library": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.7.2.tgz", - "integrity": "sha512-0ZmHeR/DUUgEzW8rwUBRWxuqntipDtpvxK0hymdHnLlABryJkzd+CAHr+XnISaVsTisZ5MLHp6nQF+8COHLLTA==", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.9.1.tgz", + "integrity": "sha512-6BQp3tmb79jLLasPHJmy8DnxREe+2Pgf7L+7o09TSWPfdqqtQfRZmZNetr5mOs3yqZk/MRNxpN3RUpJe0wB4LQ==", "requires": { "@typescript-eslint/utils": "^5.13.0" } @@ -23070,11 +23053,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" } } }, @@ -23677,6 +23655,11 @@ "util-deprecate": "~1.0.1" } }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -23849,9 +23832,9 @@ "dev": true }, "immer": { - "version": "9.0.15", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz", - "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==" + "version": "9.0.16", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.16.tgz", + "integrity": "sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ==" }, "import-fresh": { "version": "3.3.0", @@ -23946,9 +23929,9 @@ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" }, "is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "requires": { "has": "^1.0.3" } @@ -24017,6 +24000,11 @@ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==" }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + }, "is-plain-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", @@ -25821,9 +25809,9 @@ "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" }, "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz", + "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==", "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -25927,9 +25915,9 @@ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" }, "memfs": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", - "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.9.tgz", + "integrity": "sha512-3rm8kbrzpUGRyPKSGuk387NZOwQ90O4rI9tsWQkzNW7BLSnKGp23RsEsKK8N8QVCrtJoAMqy3spxHC4os4G6PQ==", "requires": { "fs-monkey": "^1.0.3" } @@ -26056,9 +26044,9 @@ } }, "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" }, "mkdirp": { "version": "0.5.6", @@ -26640,9 +26628,9 @@ } }, "postcss": { - "version": "8.4.17", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.17.tgz", - "integrity": "sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q==", + "version": "8.4.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", + "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", "requires": { "nanoid": "^3.3.4", "picocolors": "^1.0.0", @@ -26716,11 +26704,11 @@ } }, "postcss-convert-values": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", - "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", "requires": { - "browserslist": "^4.20.3", + "browserslist": "^4.21.4", "postcss-value-parser": "^4.2.0" } }, @@ -26733,9 +26721,9 @@ } }, "postcss-custom-properties": { - "version": "12.1.9", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.9.tgz", - "integrity": "sha512-/E7PRvK8DAVljBbeWrcEQJPG72jaImxF3vvCNFwv9cC8CzigVoNIpeyfnJzphnN3Fd8/auBf5wvkw6W9MfmTyg==", + "version": "12.1.10", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz", + "integrity": "sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==", "requires": { "postcss-value-parser": "^4.2.0" } @@ -26914,20 +26902,20 @@ "requires": {} }, "postcss-merge-longhand": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz", - "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", "requires": { "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.0" + "stylehacks": "^5.1.1" } }, "postcss-merge-rules": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", - "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz", + "integrity": "sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==", "requires": { - "browserslist": "^4.16.6", + "browserslist": "^4.21.4", "caniuse-api": "^3.0.0", "cssnano-utils": "^3.1.0", "postcss-selector-parser": "^6.0.5" @@ -26952,11 +26940,11 @@ } }, "postcss-minify-params": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", - "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", "requires": { - "browserslist": "^4.16.6", + "browserslist": "^4.21.4", "cssnano-utils": "^3.1.0", "postcss-value-parser": "^4.2.0" } @@ -27002,11 +26990,11 @@ } }, "postcss-nested": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz", + "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==", "requires": { - "postcss-selector-parser": "^6.0.6" + "postcss-selector-parser": "^6.0.10" } }, "postcss-nesting": { @@ -27075,11 +27063,11 @@ } }, "postcss-normalize-unicode": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", - "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", "requires": { - "browserslist": "^4.16.6", + "browserslist": "^4.21.4", "postcss-value-parser": "^4.2.0" } }, @@ -27201,11 +27189,11 @@ } }, "postcss-reduce-initial": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", - "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz", + "integrity": "sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==", "requires": { - "browserslist": "^4.16.6", + "browserslist": "^4.21.4", "caniuse-api": "^3.0.0" } }, @@ -27349,9 +27337,9 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "promise": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.2.0.tgz", - "integrity": "sha512-+CMAlLHqwRYwBMXKCP+o8ns7DN+xHDUiI+0nArsiJ9y+kJVPLFxEaSw6Ha9s9H0tftxg2Yzl25wqj9G7m5wLZg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", "requires": { "asap": "~2.0.6" } @@ -27845,21 +27833,11 @@ } }, "recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "requires": { - "minimatch": "3.0.4" - }, - "dependencies": { - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - } + "minimatch": "^3.0.5" } }, "regenerate": { @@ -27876,9 +27854,9 @@ } }, "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + "version": "0.13.10", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", + "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" }, "regenerator-transform": { "version": "0.15.0", @@ -28120,9 +28098,9 @@ } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safe-regex-test": { "version": "1.0.0", @@ -28344,9 +28322,9 @@ "dev": true }, "shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==" }, "side-channel": { "version": "1.0.4", @@ -28421,9 +28399,9 @@ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" }, "source-map-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.1.tgz", - "integrity": "sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz", + "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==", "requires": { "abab": "^2.0.5", "iconv-lite": "^0.6.3", @@ -28549,13 +28527,6 @@ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "requires": { "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } } }, "string-length": { @@ -28680,11 +28651,11 @@ "requires": {} }, "stylehacks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", - "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", "requires": { - "browserslist": "^4.16.6", + "browserslist": "^4.21.4", "postcss-selector-parser": "^6.0.4" } }, @@ -28812,9 +28783,9 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "tailwindcss": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.8.tgz", - "integrity": "sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.1.tgz", + "integrity": "sha512-Uw+GVSxp5CM48krnjHObqoOwlCt5Qo6nw1jlCRwfGy68dSYb/LwS9ZFidYGRiM+w6rMawkZiu1mEMAsHYAfoLg==", "requires": { "arg": "^5.0.2", "chokidar": "^3.5.3", @@ -28822,18 +28793,19 @@ "detective": "^5.2.1", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.2.11", + "fast-glob": "^3.2.12", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "lilconfig": "^2.0.6", + "micromatch": "^4.0.5", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.0.0", - "postcss": "^8.4.14", + "postcss": "^8.4.17", "postcss-import": "^14.1.0", "postcss-js": "^4.0.0", "postcss-load-config": "^3.1.4", - "postcss-nested": "5.0.6", + "postcss-nested": "6.0.0", "postcss-selector-parser": "^6.0.10", "postcss-value-parser": "^4.2.0", "quick-lru": "^5.1.1", @@ -29479,9 +29451,9 @@ } }, "ws": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", - "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz", + "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==", "requires": {} } } diff --git a/interface/src/i18n/de/index.ts b/interface/src/i18n/de/index.ts index 4fe930427..ed7b70ba4 100644 --- a/interface/src/i18n/de/index.ts +++ b/interface/src/i18n/de/index.ts @@ -105,7 +105,7 @@ const de: Translation = { BOARD_PROFILE: 'Platinenprofil', BUTTON: 'Taste', TEMPERATURE: 'Temperatur', - PHY_TYPE: 'Eth PHY Type', + PHY_TYPE: 'Eth PHY Typ', DISABLED: 'deaktiviert', TX_MODE: 'Tx Mode', GENERAL_OPTIONS: 'Allgemeine Optionen', @@ -177,7 +177,7 @@ const de: Translation = { SYSTEM_VERSION_RUNNING: 'Sie verwenden die Version', SYSTEM_APPLY_FIRMWARE: 'um die neue Firmware anzuwenden', CLOSE: 'Schließen', - USE: 'Verwenden', + USE: 'Verwenden Sie', FACTORY_RESET: 'Werkseinstellung', SYSTEM_FACTORY_TEXT: 'EMS-ESP wurde auf Werkseinstellung gesetzt und startet als Zugangspunkt neu', SYSTEM_FACTORY_TEXT_DIALOG: 'Sind Sie sicher alle Einstellungen auf Werkseinstellung zu setzen?', @@ -191,7 +191,7 @@ const de: Translation = { PLATFORM: 'Platform (Platform / SDK)', UPTIME: 'System Betriebszeit', CPU_FREQ: 'CPU Frequenz', - HEAP: 'RAM freier Speicher (Gesamt / max. Block)', + HEAP: 'freier RAM Speicher (Gesamt / max. Block)', PSRAM: 'PSRAM (Größe / Frei)', FLASH: 'Flash Speicher (Größe / Geschwindigkeit)', APPSIZE: 'Programm (Genutzt / Frei)', @@ -202,7 +202,7 @@ const de: Translation = { DOWNLOAD_CUSTOMIZATION_TEXT: 'Herunterladen der individuellen Entitätsanpassungen', DOWNLOAD_SETTINGS_TEXT: 'Herunterladen der Anwendungseinstellungen. Vorsicht beim Teilen der Einstellungen, da sie Passwörter und andere sensitive Einstellungen enthalten', - UPLOAD_TEXT: 'Hochladen von neuer Firmware (.bin), Geräte- oder Entitätseinstellungen (.json)', + UPLOAD_TEXT: 'Hochladen von neuer Firmware (.bin), Geräte- oder Entitätseinstellungen (.json), zur optionalen Validitätsprüfung zuerst die (.md5) Datei hochladen', UPLOADING: 'Hochladen', UPLOAD_DROP_TEXT: 'Klicken Sie hier, oder ziehen eine Datei hierher', ERROR: 'Unerwarteter Fehler, bitter versuchen Sie es erneut', @@ -259,9 +259,9 @@ const de: Translation = { AP_PROVIDE_TEXT_3: 'Niemals', AP_PREFERRED_CHANNEL: 'Bevorzugter Kanal', AP_HIDE_SSID: 'Verstecke SSID', - AP_CLIENTS: 'AP Clients', - AP_MAX_CLIENTS: 'Max Clients', - AP_LOCAL_IP: 'Local IP', + AP_CLIENTS: 'AP-Klienten', + AP_MAX_CLIENTS: 'Max Anzahl AP-Klienten', + AP_LOCAL_IP: 'Lokale IP', NETWORK_SCAN: 'Suche nach WiFi Netzwerken', IDLE: 'Leerlauf', LOST: 'Verloren', @@ -276,11 +276,11 @@ const de: Translation = { NETWORK_LOW_BAND: 'Verwende niedrige WiFi Bandbreite', NETWORK_USE_DNS: 'Aktiviere mDNS Service', NETWORK_ENABLE_IPV6: 'Aktiviere IPv6 Unterstützung', - NETWORK_FIXED_IP: 'Feste IP Addresse', - NETWORK_GATEWAY: 'Getaway', - NETWORK_SUBNET: 'Subnet Mask', - NETWORK_DNS: 'DNS Servers', - ADDRESS_OF: '{0} Address', + NETWORK_FIXED_IP: 'Feste IP Adresse', + NETWORK_GATEWAY: 'Gateway', + NETWORK_SUBNET: 'Subnetz Maske', + NETWORK_DNS: 'DNS Server', + ADDRESS_OF: '{0} Adresse', ADMIN: 'Administrator', GUEST: 'Gast', NEW: 'Neuer', diff --git a/interface/src/i18n/en/index.ts b/interface/src/i18n/en/index.ts index e604880ac..c5fdff17c 100644 --- a/interface/src/i18n/en/index.ts +++ b/interface/src/i18n/en/index.ts @@ -203,7 +203,7 @@ const en: BaseTranslation = { DOWNLOAD_CUSTOMIZATION_TEXT: 'Download the entity customizations', DOWNLOAD_SETTINGS_TEXT: 'Download the application settings. Be careful when sharing your settings as this file contains passwords and other sensitive system information', - UPLOAD_TEXT: 'Upload a new firmware (.bin) file, settings or customizations (.json) file below', + UPLOAD_TEXT: 'Upload a new firmware (.bin) file, settings or customizations (.json) file below, for optional validation upload (.md5) first', UPLOADING: 'Uploading', UPLOAD_DROP_TEXT: 'Drop file or click here', ERROR: 'Unexpected Error, please try again', diff --git a/interface/src/i18n/i18n-types.ts b/interface/src/i18n/i18n-types.ts index 548bfe1cb..9a9838893 100644 --- a/interface/src/i18n/i18n-types.ts +++ b/interface/src/i18n/i18n-types.ts @@ -632,7 +632,7 @@ type RootTranslation = { */ USER_CUSTOMIZATION: string /** - * D​o​d​a​t​k​o​w​e​ ​i​n​f​o​r​m​a​c​j​e + * I​n​f​o​r​m​a​c​j​e​ ​d​o​t​y​c​z​ą​c​e​ ​w​s​p​a​r​c​i​a */ SUPPORT_INFORMATION: string /** @@ -640,11 +640,11 @@ type RootTranslation = { */ CLICK_HERE: string /** - * S​k​o​r​z​y​s​t​a​j​ ​z​ ​w​i​k​i​ ​w​ ​c​e​l​u​ ​z​n​a​l​e​z​i​e​n​i​a​ ​s​z​c​z​e​g​ó​ł​o​w​y​c​h​ ​i​n​s​t​r​u​k​c​j​i​ ​j​a​k​ ​s​k​o​n​f​i​g​u​r​o​w​a​ć​ ​E​M​S​-​E​S​P + * W​ ​c​e​l​u​ ​z​n​a​l​e​z​i​e​n​i​a​ ​s​z​c​z​e​g​ó​ł​o​w​y​c​h​ ​i​n​s​t​r​u​k​c​j​i​ ​j​a​k​ ​s​k​o​n​f​i​g​u​r​o​w​a​ć​ ​E​M​S​-​E​S​P​ ​s​k​o​r​z​y​s​t​a​j​ ​z​ ​w​i​k​i */ HELP_INFORMATION_1: string /** - * S​k​o​r​z​y​s​t​a​j​ ​z​ ​s​e​r​w​e​r​a​ ​D​i​s​c​o​r​d​ ​w​ ​c​e​l​u​ ​k​o​m​u​n​i​k​a​c​j​i​ ​n​a​ ​ż​y​w​o​ ​z​e​ ​s​p​o​ł​e​c​z​n​o​ś​c​i​ą + * W​ ​c​e​l​u​ ​k​o​m​u​n​i​k​a​c​j​i​ ​n​a​ ​ż​y​w​o​ ​z​e​ ​s​p​o​ł​e​c​z​n​o​ś​c​i​ą​ ​s​k​o​r​z​y​s​t​a​j​ ​z​ ​s​e​r​w​e​r​a​ ​D​i​s​c​o​r​d */ HELP_INFORMATION_2: string /** @@ -652,7 +652,7 @@ type RootTranslation = { */ HELP_INFORMATION_3: string /** - * g​d​y​ ​z​g​ł​a​s​z​a​s​z​ ​p​r​o​b​l​e​m​,​ ​b​ę​d​z​i​e​ ​o​n​ ​s​z​y​b​c​i​e​j​ ​r​o​z​w​i​ą​z​a​n​y​ ​g​d​y​ ​d​o​ ​z​g​ł​o​s​z​e​n​i​a​ ​d​o​ł​ą​c​z​y​s​z​ ​p​e​ł​n​ą​ ​i​n​f​o​r​m​a​c​j​ę​ ​o​ ​s​w​o​i​m​ ​s​y​s​t​e​m​i​e + * z​g​ł​a​s​z​a​j​ą​c​ ​p​r​o​b​l​e​m​,​ ​n​i​e​ ​z​a​p​o​m​n​i​j​ ​d​o​ł​ą​c​z​y​ć​ ​i​n​f​o​r​m​a​c​j​i​ ​o​ ​s​w​o​i​m​ ​s​y​s​t​e​m​i​e */ HELP_INFORMATION_4: string /** @@ -660,7 +660,7 @@ type RootTranslation = { */ HELP_INFORMATION_5: string /** - * D​o​d​a​t​k​o​w​e​ ​i​n​f​o​r​m​a​c​j​e + * P​o​b​i​e​r​z​ ​i​n​f​o​r​m​a​c​j​e */ SUPPORT_INFO: string /** @@ -673,7 +673,7 @@ type RootTranslation = { */ UPLOAD: string /** - * {​{​P​|​p​|​}​}​o​b​i​e​r​{​{​a​n​i​e​|​z​|​}​} + * {​{​P​|​p​|​P​}​}​o​b​i​e​r​{​{​a​n​i​e​|​z​|​z​}​} */ DOWNLOAD: string /** @@ -732,7 +732,7 @@ type RootTranslation = { */ SYSTEM_FACTORY_TEXT_DIALOG: string /** - * {​{​S​p​r​a​w​d​ź​ ​w​e​r​s​j​ę​|​S​p​r​a​w​d​z​a​n​i​e​ ​w​e​r​s​j​i​|​)​}​} + * S​p​r​a​w​d​{​{​ź​|​z​a​n​i​e​|​}​}​ ​w​e​r​s​j​{​{​ę​|​i​|​}​} */ VERSION_CHECK: string /** @@ -1743,7 +1743,7 @@ export type TranslationFunctions = { */ USER_CUSTOMIZATION: () => LocalizedString /** - * Dodatkowe informacje + * Informacje dotyczące wsparcia */ SUPPORT_INFORMATION: () => LocalizedString /** @@ -1751,11 +1751,11 @@ export type TranslationFunctions = { */ CLICK_HERE: () => LocalizedString /** - * Skorzystaj z wiki w celu znalezienia szczegółowych instrukcji jak skonfigurować EMS-ESP + * W celu znalezienia szczegółowych instrukcji jak skonfigurować EMS-ESP skorzystaj z wiki */ HELP_INFORMATION_1: () => LocalizedString /** - * Skorzystaj z serwera Discord w celu komunikacji na żywo ze społecznością + * W celu komunikacji na żywo ze społecznością skorzystaj z serwera Discord */ HELP_INFORMATION_2: () => LocalizedString /** @@ -1763,7 +1763,7 @@ export type TranslationFunctions = { */ HELP_INFORMATION_3: () => LocalizedString /** - * gdy zgłaszasz problem, będzie on szybciej rozwiązany gdy do zgłoszenia dołączysz pełną informację o swoim systemie + * zgłaszając problem, nie zapomnij dołączyć informacji o swoim systemie */ HELP_INFORMATION_4: () => LocalizedString /** @@ -1771,7 +1771,7 @@ export type TranslationFunctions = { */ HELP_INFORMATION_5: () => LocalizedString /** - * Dodatkowe informacje + * Pobierz informacje */ SUPPORT_INFO: () => LocalizedString /** @@ -1783,7 +1783,7 @@ export type TranslationFunctions = { */ UPLOAD: () => LocalizedString /** - * {{P|p|}}obier{{anie|z|}} + * {{P|p|P}}obier{{anie|z|z}} */ DOWNLOAD: (arg0: string | number | boolean) => LocalizedString /** @@ -1840,7 +1840,7 @@ export type TranslationFunctions = { */ SYSTEM_FACTORY_TEXT_DIALOG: () => LocalizedString /** - * {{Sprawdź wersję|Sprawdzanie wersji|)}} + * Sprawd{{ź|zanie|}} wersj{{ę|i|}} */ VERSION_CHECK: (arg0: string | number | boolean) => LocalizedString /** diff --git a/interface/src/i18n/i18n-util.async.ts b/interface/src/i18n/i18n-util.async.ts index fb35c3bd3..1b17c7d67 100644 --- a/interface/src/i18n/i18n-util.async.ts +++ b/interface/src/i18n/i18n-util.async.ts @@ -14,10 +14,10 @@ const localeTranslationLoaders = { se: () => import('./se'), } -const updateDictionary = (locale: Locales, dictionary: Partial) => +const updateDictionary = (locale: Locales, dictionary: Partial): Translations => loadedLocales[locale] = { ...loadedLocales[locale], ...dictionary } -export const importLocaleAsync = async (locale: Locales) => +export const importLocaleAsync = async (locale: Locales): Promise => (await localeTranslationLoaders[locale]()).default as unknown as Translations export const loadLocaleAsync = async (locale: Locales): Promise => { diff --git a/interface/src/i18n/i18n-util.ts b/interface/src/i18n/i18n-util.ts index 348376c2a..50b45e86e 100644 --- a/interface/src/i18n/i18n-util.ts +++ b/interface/src/i18n/i18n-util.ts @@ -3,6 +3,7 @@ import { i18n as initI18n, i18nObject as initI18nObject, i18nString as initI18nString } from 'typesafe-i18n' import type { LocaleDetector } from 'typesafe-i18n/detectors' +import type { LocaleTranslationFunctions, TranslateByString } from 'typesafe-i18n' import { detectLocale as detectLocaleFn } from 'typesafe-i18n/detectors' import type { Formatters, Locales, Translations, TranslationFunctions } from './i18n-types' @@ -17,21 +18,22 @@ export const locales: Locales[] = [ 'se' ] -export const isLocale = (locale: string) => locales.includes(locale as Locales) +export const isLocale = (locale: string): locale is Locales => locales.includes(locale as Locales) -export const loadedLocales = {} as Record +export const loadedLocales: Record = {} as Record -export const loadedFormatters = {} as Record +export const loadedFormatters: Record = {} as Record -export const i18nString = (locale: Locales) => initI18nString(locale, loadedFormatters[locale]) +export const i18nString = (locale: Locales): TranslateByString => initI18nString(locale, loadedFormatters[locale]) -export const i18nObject = (locale: Locales) => +export const i18nObject = (locale: Locales): TranslationFunctions => initI18nObject( locale, loadedLocales[locale], loadedFormatters[locale] ) -export const i18n = () => initI18n(loadedLocales, loadedFormatters) +export const i18n = (): LocaleTranslationFunctions => + initI18n(loadedLocales, loadedFormatters) -export const detectLocale = (...detectors: LocaleDetector[]) => detectLocaleFn(baseLocale, locales, ...detectors) +export const detectLocale = (...detectors: LocaleDetector[]): Locales => detectLocaleFn(baseLocale, locales, ...detectors) From 6561bb5a6cc41d642f77b14cc57f1eb418f0aebd Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 31 Oct 2022 11:11:09 +0100 Subject: [PATCH 7/9] add min/max to customization table #686 --- .../src/project/SettingsCustomization.tsx | 20 +++++++++++++++++-- src/emsdevice.cpp | 13 ++++++------ src/emsdevicevalue.cpp | 16 +++++++-------- 3 files changed, 32 insertions(+), 17 deletions(-) diff --git a/interface/src/project/SettingsCustomization.tsx b/interface/src/project/SettingsCustomization.tsx index 562c9faad..850054ad3 100644 --- a/interface/src/project/SettingsCustomization.tsx +++ b/interface/src/project/SettingsCustomization.tsx @@ -66,7 +66,7 @@ const SettingsCustomization: FC = () => { const entities_theme = useTheme({ Table: ` - --data-table-library_grid-template-columns: 120px repeat(1, minmax(0, 1fr)) 120px; + --data-table-library_grid-template-columns: 120px repeat(1, minmax(80px, 1fr)) 40px 40px 120px; `, BaseRow: ` font-size: 14px; @@ -75,6 +75,12 @@ const SettingsCustomization: FC = () => { } `, BaseCell: ` + &:nth-of-type(3) { + text-align: right; + } + &:nth-of-type(4) { + text-align: right; + } &:last-of-type { text-align: right; } @@ -122,6 +128,12 @@ const SettingsCustomization: FC = () => { &:nth-of-type(2) { padding: 8px; } + &:nth-of-type(3) { + padding-right: 4px; + } + &:nth-of-type(4) { + padding-right: 4px; + } &:last-of-type { padding-right: 8px; } @@ -446,6 +458,8 @@ const SettingsCustomization: FC = () => { {LL.NAME()} + min + max {LL.VALUE(0)} @@ -497,6 +511,8 @@ const SettingsCustomization: FC = () => { {formatName(de)} + {!(de.m & DeviceEntityMask.DV_READONLY) && (formatValue(de.mi))} + {!(de.m & DeviceEntityMask.DV_READONLY) && (formatValue(de.ma))} {formatValue(de.v)} ))} @@ -626,7 +642,7 @@ const SettingsCustomization: FC = () => { onChange={updateValue(setDeviceEntity)} /> - {typeof de.v === 'number' && de.w && ( + {typeof de.v === 'number' && de.w && !(de.m & DeviceEntityMask.DV_READONLY) && ( <> > 4; // send back the mask state. We're only interested in the high nibble obj["w"] = dv.has_cmd; // if writable - if (dv.has_cmd) { - // set the custom min and max values if there are any + if (dv.has_cmd && (obj["v"].is() || obj["v"].is())) { + // set the min and max values if there are any and if entity has a value int16_t dv_set_min; uint16_t dv_set_max; - if (dv.get_custom_min(dv_set_min)) { - obj["mi"] = fahrenheit ? (int)(dv_set_min * 1.8 + 32 * (fahrenheit - 1)) : dv_set_min; - } - if (dv.get_custom_max(dv_set_max)) { - obj["ma"] = fahrenheit ? (int)(dv_set_max * 1.8 + 32 * (fahrenheit - 1)) : dv_set_max; + if (dv.get_min_max(dv_set_min, dv_set_max)) { + char s[10]; + obj["mi"] = Helpers::render_value(s, dv_set_min, 0, fahrenheit); + obj["ma"] = Helpers::render_value(s, dv_set_max, 0, fahrenheit); } } } diff --git a/src/emsdevicevalue.cpp b/src/emsdevicevalue.cpp index dd15a653b..9fedd8c7a 100644 --- a/src/emsdevicevalue.cpp +++ b/src/emsdevicevalue.cpp @@ -287,13 +287,13 @@ bool DeviceValue::get_min_max(int16_t & dv_set_min, uint16_t & dv_set_max) { if (type == DeviceValueType::USHORT) { dv_set_min = Helpers::transformNumFloat(0, numeric_operator, fahrenheit); - dv_set_max = Helpers::transformNumFloat(EMS_VALUE_USHORT_NOTSET, numeric_operator, fahrenheit); + dv_set_max = Helpers::transformNumFloat(EMS_VALUE_USHORT_NOTSET - 1, numeric_operator, fahrenheit); return true; } if (type == DeviceValueType::SHORT) { - dv_set_min = Helpers::transformNumFloat(-EMS_VALUE_SHORT_NOTSET, numeric_operator, fahrenheit); - dv_set_max = Helpers::transformNumFloat(EMS_VALUE_SHORT_NOTSET, numeric_operator, fahrenheit); + dv_set_min = Helpers::transformNumFloat(-EMS_VALUE_SHORT_NOTSET + 1, numeric_operator, fahrenheit); + dv_set_max = Helpers::transformNumFloat(EMS_VALUE_SHORT_NOTSET - 1, numeric_operator, fahrenheit); return true; } @@ -301,7 +301,7 @@ bool DeviceValue::get_min_max(int16_t & dv_set_min, uint16_t & dv_set_max) { if (uom == DeviceValueUOM::PERCENT) { dv_set_max = 100; } else { - dv_set_max = Helpers::transformNumFloat(EMS_VALUE_UINT_NOTSET, numeric_operator, fahrenheit); + dv_set_max = Helpers::transformNumFloat(EMS_VALUE_UINT_NOTSET - 1, numeric_operator, fahrenheit); } return true; } @@ -311,19 +311,19 @@ bool DeviceValue::get_min_max(int16_t & dv_set_min, uint16_t & dv_set_max) { dv_set_min = -100; dv_set_max = 100; } else { - dv_set_min = Helpers::transformNumFloat(-EMS_VALUE_INT_NOTSET, numeric_operator, fahrenheit); - dv_set_max = Helpers::transformNumFloat(EMS_VALUE_INT_NOTSET, numeric_operator, fahrenheit); + dv_set_min = Helpers::transformNumFloat(-EMS_VALUE_INT_NOTSET + 1, numeric_operator, fahrenheit); + dv_set_max = Helpers::transformNumFloat(EMS_VALUE_INT_NOTSET - 1, numeric_operator, fahrenheit); } return true; } if (type == DeviceValueType::ULONG) { - dv_set_max = Helpers::transformNumFloat(EMS_VALUE_ULONG_NOTSET, numeric_operator); + dv_set_max = Helpers::transformNumFloat(EMS_VALUE_ULONG_NOTSET - 1, numeric_operator); return true; } if (type == DeviceValueType::TIME) { - dv_set_max = Helpers::transformNumFloat(EMS_VALUE_ULONG_NOTSET, numeric_operator); + dv_set_max = Helpers::transformNumFloat(EMS_VALUE_ULONG_NOTSET - 1, numeric_operator); return true; } From 2aa2564078d796348e560058580c171975729e35 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 31 Oct 2022 11:11:50 +0100 Subject: [PATCH 8/9] version 3.5.0b8, Changelog, remove some F() --- CHANGELOG_LATEST.md | 5 ++++- lib/framework/MqttSettingsService.cpp | 12 ++++++------ lib/framework/NTPSettingsService.cpp | 8 ++++---- lib/framework/OTASettingsService.cpp | 10 +++++----- mock-api/server.js | 13 ++++++++++++- src/version.h | 2 +- 6 files changed, 32 insertions(+), 18 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 3532cb04f..1fcd7b198 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -10,11 +10,13 @@ - Add devices: Greenstar 30Ri boiler, Junkers FW500 thermostat, Buderus BC30 controller - Add program memory info - Add mqtt queue and connection infos -- Add min/max setting to customizations - Adapt min/max if ems-value is not in this range - Add heat pump settings for inputs and limits [#600](https://github.com/emsesp/EMS-ESP32/issues/600) - Add hybrid heatpump [#500](https://github.com/emsesp/EMS-ESP32/issues/500) - Add translated tags +- Add min/max to customization table [#686](https://github.com/emsesp/EMS-ESP32/issues/686) +- Add MD5 check [#637](https://github.com/emsesp/EMS-ESP32/issues/637) +- Add more bus-ids [#673](https://github.com/emsesp/EMS-ESP32/issues/673) ## Fixed @@ -26,6 +28,7 @@ - RF room temperature sensor are shown as thermostat - render mqtt float json values with trailing zero - removed flash strings +- reload page after restart button is pressed ## **BREAKING CHANGES:** diff --git a/lib/framework/MqttSettingsService.cpp b/lib/framework/MqttSettingsService.cpp index 67ac1e01a..3056de814 100644 --- a/lib/framework/MqttSettingsService.cpp +++ b/lib/framework/MqttSettingsService.cpp @@ -80,11 +80,11 @@ AsyncMqttClient * MqttSettingsService::getMqttClient() { } void MqttSettingsService::onMqttConnect(bool sessionPresent) { - // emsesp::EMSESP::logger().info(F("Connected to MQTT, %s"), (sessionPresent) ? F("with persistent session") : F("without persistent session")); + // emsesp::EMSESP::logger().info("Connected to MQTT, %s", (sessionPresent) ? ("with persistent session") : ("without persistent session")); } void MqttSettingsService::onMqttDisconnect(AsyncMqttClientDisconnectReason reason) { - // emsesp::EMSESP::logger().info(F("Disconnected from MQTT reason: %d"), (uint8_t)reason); + // emsesp::EMSESP::logger().info("Disconnected from MQTT reason: %d", (uint8_t)reason); _disconnectReason = reason; _disconnectedAt = uuid::get_uptime(); } @@ -104,14 +104,14 @@ void MqttSettingsService::WiFiEvent(WiFiEvent_t event, WiFiEventInfo_t info) { case ARDUINO_EVENT_ETH_GOT_IP6: case ARDUINO_EVENT_WIFI_STA_GOT_IP6: if (_state.enabled) { - // emsesp::EMSESP::logger().info(F("IPv4 Network connection found, starting MQTT client")); + // emsesp::EMSESP::logger().info("IPv4 Network connection found, starting MQTT client"); onConfigUpdated(); } break; case ARDUINO_EVENT_WIFI_STA_DISCONNECTED: case ARDUINO_EVENT_ETH_DISCONNECTED: if (_state.enabled) { - // emsesp::EMSESP::logger().info(F("Network connection dropped, stopping MQTT client")); + // emsesp::EMSESP::logger().info("Network connection dropped, stopping MQTT client"); _mqttClient.disconnect(); // onConfigUpdated(); } @@ -127,7 +127,7 @@ void MqttSettingsService::configureMqtt() { _mqttClient.disconnect(); // only connect if WiFi is connected and MQTT is enabled if (_state.enabled && emsesp::EMSESP::system_.network_connected()) { - // emsesp::EMSESP::logger().info(F("Configuring Mqtt client")); + // emsesp::EMSESP::logger().info("Configuring Mqtt client"); _mqttClient.setServer(retainCstr(_state.host.c_str(), &_retainedHost), _state.port); if (_state.username.length() > 0) { _mqttClient.setCredentials(retainCstr(_state.username.c_str(), &_retainedUsername), @@ -141,7 +141,7 @@ void MqttSettingsService::configureMqtt() { _mqttClient.setMaxTopicLength(_state.maxTopicLength); _mqttClient.connect(); // } else { - // emsesp::EMSESP::logger().info(F("Error configuring Mqtt client")); + // emsesp::EMSESP::logger().info("Error configuring Mqtt client"); } } diff --git a/lib/framework/NTPSettingsService.cpp b/lib/framework/NTPSettingsService.cpp index 55ab6964c..a9b943cc9 100644 --- a/lib/framework/NTPSettingsService.cpp +++ b/lib/framework/NTPSettingsService.cpp @@ -28,14 +28,14 @@ void NTPSettingsService::WiFiEvent(WiFiEvent_t event) { switch (event) { case ARDUINO_EVENT_WIFI_STA_DISCONNECTED: case ARDUINO_EVENT_ETH_DISCONNECTED: - emsesp::EMSESP::logger().info(F("WiFi connection dropped, stopping NTP")); + emsesp::EMSESP::logger().info("WiFi connection dropped, stopping NTP"); connected_ = false; configureNTP(); break; case ARDUINO_EVENT_WIFI_STA_GOT_IP: case ARDUINO_EVENT_ETH_GOT_IP: - // emsesp::EMSESP::logger().info(F("Got IP address, starting NTP synchronization")); + // emsesp::EMSESP::logger().info("Got IP address, starting NTP synchronization"); connected_ = true; configureNTP(); break; @@ -49,7 +49,7 @@ void NTPSettingsService::WiFiEvent(WiFiEvent_t event) { void NTPSettingsService::configureNTP() { emsesp::EMSESP::system_.ntp_connected(false); if (connected_ && _state.enabled) { - emsesp::EMSESP::logger().info(F("Starting NTP")); + emsesp::EMSESP::logger().info("Starting NTP"); sntp_set_sync_interval(3600000); // onehour sntp_set_time_sync_notification_cb(ntp_received); configTzTime(_state.tzFormat.c_str(), _state.server.c_str()); @@ -81,6 +81,6 @@ void NTPSettingsService::configureTime(AsyncWebServerRequest * request, JsonVari } void NTPSettingsService::ntp_received(struct timeval * tv) { - // emsesp::EMSESP::logger().info(F("NTP sync to %d sec"), tv->tv_sec); + // emsesp::EMSESP::logger().info("NTP sync to %d sec", tv->tv_sec); emsesp::EMSESP::system_.ntp_connected(true); } diff --git a/lib/framework/OTASettingsService.cpp b/lib/framework/OTASettingsService.cpp index 2aacdb37e..a91bd645f 100644 --- a/lib/framework/OTASettingsService.cpp +++ b/lib/framework/OTASettingsService.cpp @@ -47,15 +47,15 @@ void OTASettingsService::configureArduinoOTA() { #if defined(EMSESP_USE_SERIAL) Serial.printf("Error[%u]: ", error); if (error == OTA_AUTH_ERROR) - Serial.println(F("Auth Failed")); + Serial.println("Auth Failed"); else if (error == OTA_BEGIN_ERROR) - Serial.println(F("Begin Failed")); + Serial.println("Begin Failed"); else if (error == OTA_CONNECT_ERROR) - Serial.println(F("Connect Failed")); + Serial.println("Connect Failed"); else if (error == OTA_RECEIVE_ERROR) - Serial.println(F("Receive Failed")); + Serial.println("Receive Failed"); else if (error == OTA_END_ERROR) - Serial.println(F("End Failed")); + Serial.println("End Failed"); #endif }); diff --git a/mock-api/server.js b/mock-api/server.js index dbde18d51..a1d167a45 100644 --- a/mock-api/server.js +++ b/mock-api/server.js @@ -1154,7 +1154,7 @@ rest_server.post(EMSESP_BOARDPROFILE_ENDPOINT, (req, res) => { } else if (board_profile == 'C3MINI') { // Lolin C3 mini data.led_gpio = 7 - data.dallas_gpio = 2 + data.dallas_gpio = 1 data.rx_gpio = 4 data.tx_gpio = 5 data.pbutton_gpio = 9 @@ -1162,6 +1162,17 @@ rest_server.post(EMSESP_BOARDPROFILE_ENDPOINT, (req, res) => { data.eth_power = 0 data.eth_phy_addr = 0 data.eth_clock_mode = 0 + } else if (board_profile == 'S2MINI') { + // Lolin C3 mini + data.led_gpio = 15 + data.dallas_gpio = 7 + data.rx_gpio = 11 + data.tx_gpio = 12 + data.pbutton_gpio = 0 + data.phy_type = 0 + data.eth_power = 0 + data.eth_phy_addr = 0 + data.eth_clock_mode = 0 } console.log('boardProfile POST. Sending back, profile: ' + board_profile + ', ' + 'data: ' + JSON.stringify(data)) diff --git a/src/version.h b/src/version.h index 61da75d0e..e943da6ae 100644 --- a/src/version.h +++ b/src/version.h @@ -1,4 +1,4 @@ -#define EMSESP_APP_VERSION "3.5.0b7" +#define EMSESP_APP_VERSION "3.5.0b8" #if CONFIG_IDF_TARGET_ESP32C3 #define EMSESP_PLATFORM "ESP32-C3"; From bfad6d34b511d8f46954220bb45359e4c3ce0be0 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 31 Oct 2022 14:21:13 +0100 Subject: [PATCH 9/9] i18n baseLocale back to en, 18 pl-chars to font. --- interface/.typesafe-i18n.json | 2 +- interface/public/fonts/md.woff2 | Bin 15920 -> 17152 bytes interface/public/fonts/re.woff2 | Bin 15688 -> 16908 bytes interface/src/i18n/en/index.ts | 24 +- interface/src/i18n/i18n-types.ts | 1100 +++++++++++++++--------------- interface/src/i18n/i18n-util.ts | 2 +- 6 files changed, 567 insertions(+), 561 deletions(-) diff --git a/interface/.typesafe-i18n.json b/interface/.typesafe-i18n.json index 2ac52b175..c04fee347 100644 --- a/interface/.typesafe-i18n.json +++ b/interface/.typesafe-i18n.json @@ -1,5 +1,5 @@ { "adapter": "react", - "baseLocale": "pl", + "baseLocale": "en", "$schema": "https://unpkg.com/typesafe-i18n@5.15.0/schema/typesafe-i18n.json" } diff --git a/interface/public/fonts/md.woff2 b/interface/public/fonts/md.woff2 index ce795fa8bdd3ca2b9c42124cc89e61e9272e9fb2..84fe5d91028cc82d3ba8e91d69fcf4a18099653d 100644 GIT binary patch literal 17152 zcmV(~K+nH-Pew8T0RR9107C!(5&!@I0GTuZ0797n0RR9100000000000000000000 z0000#Mn+Uk92#sJnsOY4cm`kqgg^*f34=Tl3<`neB!SEq3xp~F0X7081Bg%rAO(d} z2Z;;}f>Rqvi6!D~hXCgRJd`fEesl)ASrIa_c<}umy!*r!}D|N{jm+&u~DH!sZ>nCk)xu-jZra1wL~fv4g@5k^n_C^ zKy0w4c%G>Lw`Tv{s=7tc!0B|Slg#909snKxgz57Y?ecuPs8*qH-}psgP`TCoe>(Nc zjva!jd2U`#0hAOZIgC$B$=I)8ex#- z-nlpVb?uxTOJI3P3Tj3H>%AE>VOYpb0UrcD!T;$j=S!C1{~5^+Pz6Xui8CY90(#dz zV8L&s-Jo<^GyyCcg8Hf?rED!!cX@qy`2VYES0GzICYIu|{u2((iMMx#!dVDHk2+B} zm=W~%s_KgGkAESlmp z{a=#1{}@|U?p3~x3KBH|y7$M}s{1ShW4AE?m7IXDzkLM2Z%#N-2Y|2tgMB9e{Psy_ zJAlBj0Zsy(1%`<@Ef9U~Ao1cs(p7=fXas4}4>Di`WXv?ktQ`=VQ!sEq0s;)M0$>#o zAVA_lfaTco20!Ac{&C>De0MDf5?8P30Z_a_+X#aeI6(bHfOR*nzj7@M41g=ZGngf& z{z%dOkP^qJ)+qXJHEhzlJ^S8Acl6tf;h2p_@jh8{qm<9!jLe)Y%8&W2i5zvQCfjh$ zz4`KUoJkDV?Jw+&Qa*Fm90v^C*Lhr8nMV8;qF(bLE||e#akxT)CN7P*KrqFCj%eNC zSf9Am3v^iPHSPMw%P1k)95BZ9(N%v>9%}IsTD~V2BNQd2$GtVOFf?Wwaq=+do6uR%lZ88(u}>%9q+rqXo1HJi7d zaj^L42wqnZmzr_ku7h#JCVL?e)awOo9l27+H0zm0WVmTFpBT3L-Npc3^XzMiOWhY< zp^_?GcIoPd

(=H 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 SYT_{{QN5GB$em6A0000dHT^mO diff --git a/interface/public/fonts/re.woff2 b/interface/public/fonts/re.woff2 index ebe1795f85a661c205e4a4612eaf47d56273e68e..5ca942ccbaa566da5ab84125044dc7d1a75bdfc4 100644 GIT binary patch literal 16908 zcmV(~K+nH-Pew8T0RR910747^5&!@I0GK2I070by0RR9100000000000000000000 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 /** - * z​o​s​t​a​ł​y​ ​z​a​p​i​s​a​n​e​. + * s​a​v​e​d */ SAVED: string /** - * P​o​m​o​c​ ​{​0​} + * {​0​}​ ​H​e​l​p * @param {unknown} 0 */ HELP_OF: RequiredParams<'0'> /** - * Z​a​l​o​g​o​w​a​n​y​ ​j​a​k​o​ ​{​n​a​m​e​}​. + * L​o​g​g​e​d​ ​i​n​ ​a​s​ ​{​n​a​m​e​} * @param {unknown} name */ LOGGED_IN: RequiredParams<'name'> /** - * Z​a​l​o​g​u​j​ ​s​i​ę​ ​a​b​y​ ​k​o​n​t​y​n​u​o​w​a​ć​. + * P​l​e​a​s​e​ ​s​i​g​n​ ​i​n​ ​t​o​ ​c​o​n​t​i​n​u​e */ PLEASE_SIGNIN: string /** - * W​y​s​y​ł​a​n​i​e​ ​z​a​k​o​ń​c​z​o​n​e​. + * U​p​l​o​a​d​ ​s​u​c​c​e​s​s​f​u​l */ UPLOAD_SUCCESSFUL: string /** - * P​o​b​i​e​r​a​n​i​e​ ​z​a​k​o​ń​c​z​o​n​e​. + * D​o​w​n​l​o​a​d​ ​s​u​c​c​e​s​s​f​u​l */ DOWNLOAD_SUCCESSFUL: string /** - * N​i​e​p​o​p​r​a​w​n​y​ ​l​o​g​i​n​! + * I​n​v​a​l​i​d​ ​l​o​g​i​n​ ​d​e​t​a​i​l​s */ INVALID_LOGIN: string /** - * {​{​S​i​e​ć​|​s​i​e​c​i​|​}​} + * {​{​N​e​t​w​o​r​k​}​} */ NETWORK: string /** - * {​{​B​|​b​|​}​}​e​z​p​i​e​c​z​e​ń​s​t​w​{​{​o​|​a​|​}​} + * {​{​S​e​c​u​r​i​t​y​}​} */ SECURITY: string /** - * w​ł​.​/​w​y​ł​. + * O​N​/​O​F​F */ ONOFF_CAP: string /** - * w​ł​ą​c​z​o​n​o​/​w​y​ł​ą​c​z​o​n​o + * o​n​/​o​f​f */ ONOFF: string /** - * T​y​p + * T​y​p​e */ TYPE: string /** - * O​p​i​s + * D​e​s​c​r​i​p​t​i​o​n */ DESCRIPTION: string /** - * E​n​c​j​e + * E​n​t​i​t​i​e​s */ ENTITIES: string /** - * O​d​ś​w​i​e​ż + * R​e​f​r​e​s​h */ REFRESH: string /** - * E​k​s​p​o​r​t​u​j + * E​x​p​o​r​t */ EXPORT: string /** - * S​z​c​z​e​g​ó​ł​y​ ​u​r​z​ą​d​z​e​n​i​a + * D​e​v​i​c​e​ ​D​e​t​a​i​l​s */ DEVICE_DETAILS: string /** - * M​a​r​k​a + * B​r​a​n​d */ BRAND: string /** - * N​a​z​w​a​ ​e​n​c​j​i + * E​n​t​i​t​y​ ​N​a​m​e */ ENTITY_NAME: string /** - * {​{​W​a​r​t​o​ś​ć​|​w​a​r​t​o​ś​ć​|​}​} + * {​{​V​a​l​u​e​}​} */ VALUE: string /** - * P​o​k​a​ż​ ​t​y​l​k​o​ ​"​u​l​u​b​i​o​n​e​" + * o​n​l​y​ ​s​h​o​w​ ​f​a​v​o​r​i​t​e​s */ SHOW_FAV: string /** - * D​a​n​e​ ​z​ ​u​r​z​ą​d​z​e​ń​ ​i​ ​c​z​u​j​n​i​k​ó​w + * D​e​v​i​c​e​ ​a​n​d​ ​S​e​n​s​o​r​ ​D​a​t​a */ DEVICE_SENSOR_DATA: string /** - * U​r​z​ą​d​z​e​n​i​a​ ​i​ ​c​z​u​j​n​i​k​i + * D​e​v​i​c​e​s​ ​&​ ​S​e​n​s​o​r​s */ DEVICES_SENSORS: string /** - * U​r​z​ą​d​z​e​n​i​a​ ​p​o​d​ł​ą​c​z​o​n​e​ ​d​o​ ​E​M​S​-​E​S​P​ ​(​c​z​u​j​n​i​k​i​ ​t​e​m​p​e​r​a​t​u​r​y​/​a​n​a​l​o​g​o​w​e​/​c​y​f​r​o​w​e​,​ ​w​y​j​ś​c​i​a​ ​c​y​f​r​o​w​e​) + * A​t​t​a​c​h​e​d​ ​E​M​S​-​E​S​P​ ​S​e​n​s​o​r​s */ ATTACHED_SENSORS: string /** - * W​y​k​o​n​a​j​ ​k​o​m​e​n​d​ę + * C​a​l​l​ ​C​o​m​m​a​n​d */ RUN_COMMAND: string /** - * Z​m​i​e​ń​ ​w​a​r​t​o​ś​ć + * C​h​a​n​g​e​ ​V​a​l​u​e */ CHANGE_VALUE: string /** - * A​n​u​l​u​j + * C​a​n​c​e​l */ CANCEL: string /** - * {​{​R​e​s​e​t​u​j​|​R​e​s​e​t​o​w​a​n​i​e​|​}​} + * {​{​R​e​s​e​t​}​} */ RESET: string /** - * W​y​ś​l​i​j + * S​e​n​d */ SEND: string /** - * Z​a​p​i​s​z + * S​a​v​e */ SAVE: string /** - * U​s​u​ń + * R​e​m​o​v​e */ REMOVE: string /** - * P​r​o​b​l​e​m​ ​z​ ​a​k​t​u​a​l​i​z​a​c​j​ą​! + * P​r​o​b​l​e​m​ ​u​p​d​a​t​i​n​g */ PROBLEM_UPDATING: string /** - * P​r​o​b​l​e​m​ ​z​ ​p​o​b​i​e​r​a​n​i​e​m​! + * P​r​o​b​l​e​m​ ​l​o​a​d​i​n​g */ PROBLEM_LOADING: string /** - * B​r​a​k​ ​d​o​s​t​ę​p​u​! + * A​c​c​e​s​s​ ​D​e​n​i​e​d */ ACCESS_DENIED: string /** - * u​r​z​ą​d​z​e​n​i​a​ ​p​o​d​ł​ą​c​z​o​n​e​g​o​ ​d​o​ ​E​M​S​-​E​S​P + * A​n​a​l​o​g​ ​S​e​n​s​o​r */ ANALOG_SENSOR: string /** - * U​r​z​ą​d​z​e​n​i​a​ ​p​o​d​ł​ą​c​z​o​n​e​ ​d​o​ ​E​M​S​-​E​S​P + * A​n​a​l​o​g​ ​S​e​n​s​o​r​s */ ANALOG_SENSORS: string /** - * Z​a​k​t​u​a​l​i​z​o​w​a​n​o​ ​u​s​t​a​w​i​e​n​i​a​ ​{​0​}​. + * {​0​}​ ​U​p​d​a​t​e​d * @param {unknown} 0 */ UPDATED_OF: RequiredParams<'0'> /** - * A​k​t​u​a​l​i​z​a​c​j​a​ ​{​0​} + * {​0​}​ ​U​p​d​a​t​e * @param {unknown} 0 */ UPDATE_OF: RequiredParams<'0'> /** - * U​s​u​n​i​ę​t​o​ ​u​s​t​a​w​i​e​n​i​a​ ​{​0​}​. + * {​0​}​ ​R​e​m​o​v​e​d * @param {unknown} 0 */ REMOVED_OF: RequiredParams<'0'> /** - * K​a​s​o​w​a​n​i​e​ ​{​0​} + * {​0​}​ ​D​e​l​e​t​i​o​n * @param {unknown} 0 */ DELETION_OF: RequiredParams<'0'> /** - * K​o​r​e​k​t​a​ ​+​/​- + * O​f​f​s​e​t */ OFFSET: string /** - * M​n​o​ż​n​i​k + * F​a​c​t​o​r */ FACTOR: string /** - * C​z​ę​s​t​o​t​l​i​w​o​ś​ć + * F​r​e​q​u​e​n​c​y */ FREQ: string /** - * W​y​p​e​ł​n​i​e​n​i​e + * D​u​t​y​ ​C​y​c​l​e */ DUTY_CYCLE: string /** - * J​.​m​. + * U​o​M */ UNIT: string /** - * W​a​r​t​o​ś​ć​ ​p​o​c​z​ą​t​k​o​w​a + * S​t​a​r​t​ ​v​a​l​u​e */ STARTVALUE: string /** - * U​w​a​g​a​!​ ​B​ą​d​ź​ ​o​s​t​r​o​ż​n​y​ ​p​r​z​y​p​i​s​u​j​ą​c​ ​G​P​I​O​ ​d​o​ ​c​z​u​j​n​i​k​a​! + * W​a​r​n​i​n​g​:​ ​b​e​ ​c​a​r​e​f​u​l​ ​w​h​e​n​ ​a​s​s​i​g​n​i​n​g​ ​a​ ​G​P​I​O​! */ WARN_GPIO: string /** - * E​d​y​c​j​a + * E​d​i​t */ EDIT: string /** - * c​z​u​j​n​i​k​a​ ​t​e​m​p​e​r​a​t​u​r​y + * T​e​m​p​e​r​a​t​u​r​e​ ​S​e​n​s​o​r */ TEMP_SENSOR: string /** - * C​z​u​j​n​i​k​i​ ​t​e​m​p​e​r​a​t​u​r​y​ ​1​-​W​i​r​e​® + * T​e​m​p​e​r​a​t​u​r​e​ ​S​e​n​s​o​r​s */ TEMP_SENSORS: string /** - * W​y​ś​l​i​j​ ​k​o​m​e​n​d​ę​ ​{​c​m​d​} + * W​r​i​t​e​ ​c​o​m​m​a​n​d​ ​{​c​m​d​} * @param {unknown} cmd */ WRITE_COMMAND: RequiredParams<'cmd'> /** - * B​r​a​k​ ​p​o​ł​ą​c​z​e​n​i​a​ ​z​ ​m​a​g​i​s​t​r​a​l​ą​ ​E​M​S​.​ ​J​e​ś​l​i​ ​t​e​n​ ​b​ł​ą​d​ ​w​y​s​t​ę​p​u​j​e​ ​d​ł​u​ż​e​j​ ​n​i​ż​ ​k​i​l​k​a​ ​s​e​k​u​n​d​,​ ​s​p​r​a​w​d​ź​ ​u​s​t​a​w​i​e​n​i​a​ ​o​r​a​z​ ​p​r​o​f​i​l​ ​p​ł​y​t​k​i​ ​i​n​t​e​r​f​e​j​s​u​. + * E​M​S​ ​b​u​s​ ​d​i​s​c​o​n​n​e​c​t​e​d​.​ ​I​f​ ​t​h​i​s​ ​w​a​r​n​i​n​g​ ​s​t​i​l​l​ ​p​e​r​s​i​s​t​s​ ​a​f​t​e​r​ ​a​ ​f​e​w​ ​s​e​c​o​n​d​s​ ​p​l​e​a​s​e​ ​c​h​e​c​k​ ​s​e​t​t​i​n​g​s​ ​a​n​d​ ​b​o​a​r​d​ ​p​r​o​f​i​l​e */ EMS_BUS_WARNING: string /** - * T​r​w​a​ ​s​k​a​n​o​w​a​n​i​e​ ​m​a​g​i​s​t​r​a​l​i​ ​E​M​S​ ​w​ ​p​o​s​z​u​k​i​w​a​n​i​u​ ​u​r​z​ą​d​z​e​ń​.​.​. + * S​c​a​n​n​i​n​g​ ​f​o​r​ ​E​M​S​ ​d​e​v​i​c​e​s​.​.​. */ EMS_BUS_SCANNING: string /** - * {​{​p​o​ł​ą​c​z​o​n​o​|​p​o​ł​ą​c​z​e​n​i​e​|​}​} + * {​{​C​o​n​n​e​c​t​e​d​}​} */ CONNECTED: string /** - * P​r​o​b​l​e​m​ ​z​ ​z​a​p​i​s​e​m​ ​n​a​ ​m​a​g​i​s​t​r​a​l​ę​ ​E​M​S​.​ ​S​p​r​ó​b​u​j​ ​w​y​b​r​a​ć​ ​i​n​n​y​ ​"​S​p​o​s​ó​b​ ​t​r​a​n​s​m​i​s​j​i​ ​(​T​x​)​"​. + * T​x​ ​i​s​s​u​e​s​ ​-​ ​t​r​y​ ​a​ ​d​i​f​f​e​r​e​n​t​ ​T​x​ ​M​o​d​e */ TX_ISSUES: string /** - * z​o​s​t​a​ł​o​ ​r​o​z​ł​ą​c​z​o​n​e + * D​i​s​c​o​n​n​e​c​t​e​d */ DISCONNECTED: string /** - * C​z​y​ ​n​a​ ​p​e​w​n​o​ ​w​y​k​o​n​a​ć​ ​p​e​ł​n​e​ ​s​k​a​n​o​w​a​n​i​e​ ​m​a​g​i​s​t​r​a​l​i​ ​E​M​S​? + * A​r​e​ ​y​o​u​ ​s​u​r​e​ ​y​o​u​ ​w​a​n​t​ ​t​o​ ​i​n​i​t​i​a​t​e​ ​a​ ​f​u​l​l​ ​d​e​v​i​c​e​ ​s​c​a​n​ ​o​f​ ​t​h​e​ ​E​M​S​ ​b​u​s​? */ EMS_SCAN: string /** - * S​t​a​t​u​s​ ​m​a​g​i​s​t​r​a​l​i​ ​E​M​S + * E​M​S​ ​B​u​s​ ​S​t​a​t​u​s */ EMS_BUS_STATUS: string /** - * A​k​t​y​w​n​e​ ​u​r​z​ą​d​z​e​n​i​a​ ​i​ ​c​z​u​j​n​i​k​i + * A​c​t​i​v​e​ ​D​e​v​i​c​e​s​ ​&​ ​S​e​n​s​o​r​s */ ACTIVE_DEVICES: string /** - * U​r​z​ą​d​z​e​n​i​e​ ​E​M​S + * E​M​S​ ​D​e​v​i​c​e */ EMS_DEVICE: string /** - * U​d​a​n​e + * S​U​C​C​E​S​S */ SUCCESS: string /** - * N​i​e​u​d​a​n​e + * F​A​I​L */ FAIL: string /** - * J​a​k​o​ś​ć + * Q​U​A​L​I​T​Y */ QUALITY: string /** - * W​y​s​z​u​k​i​w​a​n​i​e​ ​n​o​w​y​c​h​ ​u​r​z​ą​d​z​e​ń + * S​c​a​n​ ​f​o​r​ ​n​e​w​ ​d​e​v​i​c​e​s */ SCAN_DEVICES: string /** - * A​k​t​y​w​n​o​ś​ć + * E​M​S​ ​B​u​s​ ​&​ ​A​c​t​i​v​i​t​y​ ​S​t​a​t​u​s */ EMS_BUS_STATUS_TITLE: string /** - * S​k​a​n​u​j + * S​c​a​n */ SCAN: string STATUS_NAMES: { /** - * E​M​S​,​ ​t​e​l​e​g​r​a​m​y​ ​o​d​e​b​r​a​n​e​ ​(​R​x​) + * E​M​S​ ​T​e​l​e​g​r​a​m​s​ ​R​e​c​e​i​v​e​d​ ​(​R​x​) */ '0': string /** - * E​M​S​,​ ​w​y​s​ł​a​n​e​ ​t​e​l​e​g​r​a​m​y​ ​"​o​d​c​z​y​t​"​ ​(​T​x​) + * E​M​S​ ​R​e​a​d​s​ ​(​T​x​) */ '1': string /** - * E​M​S​,​ ​w​y​s​ł​a​n​e​ ​t​e​l​e​g​r​a​m​y​ ​"​z​a​p​i​s​"​ ​(​T​x​) + * E​M​S​ ​W​r​i​t​e​s​ ​(​T​x​) */ '2': string /** - * O​d​c​z​y​t​y​ ​c​z​u​j​n​i​k​ó​w​ ​t​e​m​p​e​r​a​t​u​r​y​ ​1​-​W​i​r​e​® + * T​e​m​p​e​r​a​t​u​r​e​ ​S​e​n​s​o​r​ ​R​e​a​d​s */ '3': string /** - * O​d​c​z​y​t​y​ ​c​z​u​j​n​i​k​ó​w​ ​a​n​a​l​o​g​o​w​y​c​h​ ​i​ ​c​y​f​r​o​w​y​c​h + * A​n​a​l​o​g​ ​S​e​n​s​o​r​ ​R​e​a​d​s */ '4': string /** - * P​u​b​l​i​k​a​c​j​e​ ​M​Q​T​T + * M​Q​T​T​ ​P​u​b​l​i​s​h​e​s */ '5': string /** - * W​y​w​o​ł​a​n​i​a​ ​A​P​I + * A​P​I​ ​C​a​l​l​s */ '6': string /** - * W​p​i​s​y​ ​w​ ​l​o​g​u​ ​s​y​s​t​e​m​o​w​y​m + * S​y​s​l​o​g​ ​M​e​s​s​a​g​e​s */ '7': string } /** - * {​n​u​m​}​ ​u​r​z​ą​d​z​e​{​{​ń​|​n​i​e​|​n​i​a​|​n​i​a​|​ń​}​}​ ​E​M​S + * {​n​u​m​}​ ​D​e​v​i​c​e​{​{​s​}​} * @param {string | number | boolean} num */ NUM_DEVICES: RequiredParams<'num'> /** - * {​n​u​m​}​ ​c​z​u​j​n​i​{​{​k​ó​w​|​k​|​k​i​|​k​i​|​k​ó​w​}​}​ ​t​e​m​p​e​r​a​t​u​r​y + * {​n​u​m​}​ ​T​e​m​p​e​r​a​t​u​r​e​ ​S​e​n​s​o​r​{​{​s​}​} * @param {string | number | boolean} num */ NUM_TEMP_SENSORS: RequiredParams<'num'> /** - * {​n​u​m​}​ ​c​z​u​j​n​i​{​{​k​ó​w​|​k​|​k​i​(​t​w​o​)​|​k​i​|​k​ó​w​}​}​ ​a​n​a​l​o​g​o​w​{​{​y​c​h​|​y​|​e​|​e​|​y​c​h​}​} + * {​n​u​m​}​ ​A​n​a​l​o​g​ ​S​e​n​s​o​r​{​{​s​}​} * @param {string | number | boolean} num */ NUM_ANALOG_SENSORS: RequiredParams<'num'> /** - * {​n​u​m​}​ ​{​{​d​n​i​|​d​z​i​e​ń​|​d​n​i​|​d​n​i​|​d​n​i​}​} + * {​n​u​m​}​ ​D​a​y​{​{​s​}​} * @param {string | number | boolean} num */ NUM_DAYS: RequiredParams<'num'> /** - * {​n​u​m​}​ ​s​e​k​u​n​{​{​d​|​d​a​|​d​y​|​d​y​|​d​}​} + * {​n​u​m​}​ ​S​e​c​o​n​d​{​{​s​}​} * @param {string | number | boolean} num */ NUM_SECONDS: RequiredParams<'num'> /** - * {​n​u​m​}​ ​g​o​d​z​i​{​{​n​|​n​a​|​n​y​|​n​y​|​n​}​} + * {​n​u​m​}​ ​H​o​u​r​{​{​s​}​} * @param {string | number | boolean} num */ NUM_HOURS: RequiredParams<'num'> /** - * {​n​u​m​}​ ​m​i​n​u​{​{​t​|​t​a​|​t​y​|​t​y​|​t​}​} + * {​n​u​m​}​ ​M​i​n​u​t​e​{​{​s​}​} * @param {string | number | boolean} num */ NUM_MINUTES: RequiredParams<'num'> /** - * U​s​t​a​w​i​e​n​i​a​ ​a​p​l​i​k​a​c​j​i + * A​p​p​l​i​c​a​t​i​o​n​ ​S​e​t​t​i​n​g​s */ APPLICATION_SETTINGS: string /** - * P​e​r​s​o​n​a​l​i​z​a​c​j​a + * C​u​s​t​o​m​i​z​a​t​i​o​n */ CUSTOMIZATION: string /** - * T​r​w​a​ ​p​o​n​o​w​n​e​ ​u​r​u​c​h​a​m​i​a​n​i​e​.​.​. + * E​M​S​-​E​S​P​ ​i​s​ ​r​e​s​t​a​r​t​i​n​g */ APPLICATION_RESTARTING: string /** - * P​r​o​f​i​l​ ​p​ł​y​t​k​i​ ​i​n​t​e​r​f​e​j​s​u + * I​n​t​e​r​f​a​c​e​ ​B​o​a​r​d​ ​P​r​o​f​i​l​e */ INTERFACE_BOARD_PROFILE: string /** - * W​y​b​i​e​r​z​ ​z​ ​l​i​s​t​y​ ​w​s​t​ę​p​n​ą​ ​k​o​n​f​i​g​u​r​a​c​j​ę​ ​p​ł​y​t​k​i​ ​i​n​t​e​r​f​e​j​s​u​ ​l​u​b​ ​s​t​w​ó​r​z​ ​w​ł​a​s​n​ą​ ​k​o​n​f​i​g​u​r​a​c​j​ę​. + * S​e​l​e​c​t​ ​a​ ​p​r​e​-​c​o​n​f​i​g​u​r​e​d​ ​i​n​t​e​r​f​a​c​e​ ​b​o​a​r​d​ ​p​r​o​f​i​l​e​ ​f​r​o​m​ ​t​h​e​ ​l​i​s​t​ ​b​e​l​o​w​ ​o​r​ ​c​h​o​o​s​e​ ​C​u​s​t​o​m​ ​t​o​ ​c​o​n​f​i​g​u​r​e​ ​y​o​u​r​ ​o​w​n​ ​h​a​r​d​w​a​r​e​ ​s​e​t​t​i​n​g​s */ BOARD_PROFILE_TEXT: string /** - * P​r​o​f​i​l​ ​p​ł​y​t​k​i + * B​o​a​r​d​ ​P​r​o​f​i​l​e */ BOARD_PROFILE: string /** - * P​r​z​y​c​i​s​k + * B​u​t​t​o​n */ BUTTON: string /** - * 1​-​W​i​r​e​® + * T​e​m​p​e​r​a​t​u​r​e */ TEMPERATURE: string /** - * T​y​p​ ​u​k​ł​a​d​u​ ​e​t​h​e​r​n​e​t​o​w​e​g​o​ ​(​P​H​Y​) + * E​t​h​ ​P​H​Y​ ​T​y​p​e */ PHY_TYPE: string /** - * w​y​ł​ą​c​z​o​n​y + * d​i​s​a​b​l​e​d */ DISABLED: string /** - * S​p​o​s​ó​b​ ​t​r​a​n​s​m​i​s​j​i​ ​(​T​x​) + * T​x​ ​M​o​d​e */ TX_MODE: string /** - * O​p​c​j​e​ ​p​o​d​s​t​a​w​o​w​e + * G​e​n​e​r​a​l​ ​O​p​t​i​o​n​s */ GENERAL_OPTIONS: string /** - * J​ę​z​y​k​ ​e​n​c​j​i + * L​a​n​g​u​a​g​e​ ​(​f​o​r​ ​d​e​v​i​c​e​ ​e​n​t​i​t​i​e​s​) */ LANGUAGE_ENTITIES: string /** - * W​y​ł​ą​c​z​ ​L​E​D + * H​i​d​e​ ​L​E​D */ HIDE_LED: string /** - * A​k​t​y​w​u​j​ ​d​o​s​t​ę​p​ ​d​l​a​ ​k​o​n​s​o​l​i​ ​T​e​l​n​e​t + * E​n​a​b​l​e​ ​T​e​l​n​e​t​ ​C​o​n​s​o​l​e */ ENABLE_TELNET: string /** - * A​k​t​y​w​u​j​ ​u​r​z​ą​d​z​e​n​i​a​ ​G​P​I​O​ ​(​c​z​u​j​n​i​k​i​ ​a​n​a​l​o​g​o​w​e​ ​i​ ​c​y​f​r​o​w​e​ ​o​r​a​z​ ​w​y​j​ś​c​i​a​ ​c​y​f​r​o​w​e​) + * E​n​a​b​l​e​ ​A​n​a​l​o​g​ ​S​e​n​s​o​r​s */ ENABLE_ANALOG: string /** - * K​o​n​w​e​r​t​u​j​ ​t​e​m​p​e​r​a​t​u​r​y​ ​d​o​ ​s​k​a​l​i​ ​F​a​h​r​e​n​h​e​i​t​a + * C​o​n​v​e​r​t​ ​t​e​m​p​e​r​a​t​u​r​e​ ​v​a​l​u​e​s​ ​t​o​ ​F​a​h​r​e​n​h​e​i​t */ CONVERT_FAHRENHEIT: string /** - * P​o​m​i​ń​ ​a​u​t​o​r​y​z​a​c​j​ę​ ​t​o​k​e​n​e​m​ ​w​ ​w​y​w​o​ł​a​n​i​a​c​h​ ​A​P​I + * B​y​p​a​s​s​ ​A​c​c​e​s​s​ ​T​o​k​e​n​ ​a​u​t​h​o​r​i​z​a​t​i​o​n​ ​o​n​ ​A​P​I​ ​c​a​l​l​s */ BYPASS_TOKEN: string /** - * T​r​y​b​ ​p​r​a​c​y​ ​"​t​y​l​k​o​ ​d​o​ ​o​d​c​z​y​t​u​"​ ​(​b​l​o​k​u​j​e​ ​w​s​z​y​s​t​k​i​e​ ​k​o​m​e​n​d​y​ ​z​a​p​i​s​u​ ​n​a​ ​m​a​g​i​s​t​r​a​l​ę​ ​E​M​S​) + * E​n​a​b​l​e​ ​r​e​a​d​-​o​n​l​y​ ​m​o​d​e​ ​(​b​l​o​c​k​s​ ​a​l​l​ ​o​u​t​g​o​i​n​g​ ​E​M​S​ ​T​x​ ​W​r​i​t​e​ ​c​o​m​m​a​n​d​s​) */ READONLY: string /** - * O​b​n​i​ż​ ​t​a​k​t​o​w​a​n​i​e​ ​C​P​U + * U​n​d​e​r​c​l​o​c​k​ ​C​P​U​ ​s​p​e​e​d */ UNDERCLOCK_CPU: string /** - * A​k​t​y​w​u​j​ ​m​i​n​u​t​n​i​k​ ​p​r​y​s​z​n​i​c​a + * E​n​a​b​l​e​ ​S​h​o​w​e​r​ ​T​i​m​e​r */ ENABLE_SHOWER_TIMER: string /** - * A​k​t​y​w​u​j​ ​a​l​a​r​m​ ​p​r​y​s​z​n​i​c​a + * E​n​a​b​l​e​ ​S​h​o​w​e​r​ ​A​l​e​r​t */ ENABLE_SHOWER_ALERT: string /** - * W​y​z​w​a​l​a​j​ ​p​o​ ​c​z​a​s​i​e + * T​r​i​g​g​e​r​ ​T​i​m​e */ TRIGGER_TIME: string /** - * C​z​a​s​ ​t​r​w​a​n​i​a​ ​t​r​y​ś​n​i​ę​c​i​a​ ​z​i​m​n​e​j​ ​w​o​d​y + * C​o​l​d​ ​S​h​o​t​ ​D​u​r​a​t​i​o​n */ COLD_SHOT_DURATION: string /** - * O​p​c​j​e​ ​f​o​r​m​a​t​o​w​a​n​i​a + * F​o​r​m​a​t​t​i​n​g​ ​O​p​t​i​o​n​s */ FORMATTING_OPTIONS: string /** - * F​o​r​m​a​t​ ​w​a​r​t​o​ś​c​i​ ​b​i​n​a​r​n​y​c​h​ ​d​l​a​ ​p​u​l​p​i​t​u + * B​o​o​l​e​a​n​ ​F​o​r​m​a​t​ ​D​a​s​h​b​o​a​r​d */ BOOLEAN_FORMAT_DASHBOARD: string /** - * F​o​r​m​a​t​ ​w​a​r​t​o​ś​c​i​ ​b​i​n​a​r​n​y​c​h​ ​d​l​a​ ​A​P​I​/​M​Q​T​T + * B​o​o​l​e​a​n​ ​F​o​r​m​a​t​ ​A​P​I​/​M​Q​T​T */ BOOLEAN_FORMAT_API: string /** - * F​o​r​m​a​t​ ​w​a​r​t​o​ś​c​i​ ​n​u​m​e​r​o​w​a​n​y​c​h​ ​d​l​a​ ​A​P​I​/​M​Q​T​T + * E​n​u​m​ ​F​o​r​m​a​t​ ​A​P​I​/​M​Q​T​T */ ENUM_FORMAT: string /** - * i​n​d​e​k​s + * I​n​d​e​x */ INDEX: string /** - * A​k​t​y​w​u​j​ ​z​a​s​i​l​a​n​i​e​ ​p​a​s​o​ż​y​t​n​i​c​z​e + * E​n​a​b​l​e​ ​p​a​r​a​s​i​t​e​ ​p​o​w​e​r */ ENABLE_PARASITE: string /** - * L​o​g​o​w​a​n​i​e + * L​o​g​g​i​n​g */ LOGGING: string /** - * L​o​g​u​j​ ​t​e​l​e​g​r​a​m​y​ ​E​M​S​ ​w​ ​s​y​s​t​e​m​i​e​ ​s​z​e​s​n​a​s​t​k​o​w​y​m​ ​(​h​e​x​) + * L​o​g​ ​E​M​S​ ​t​e​l​e​g​r​a​m​s​ ​i​n​ ​h​e​x​a​d​e​c​i​m​a​l */ LOG_HEX: string /** - * A​k​t​y​w​u​j​ ​S​y​s​L​o​g + * E​n​a​b​l​e​ ​S​y​s​l​o​g */ ENABLE_SYSLOG: string /** - * P​o​z​i​o​m​ ​l​o​g​o​w​a​n​i​a + * L​o​g​ ​L​e​v​e​l */ LOG_LEVEL: string /** - * O​z​n​a​c​z​a​j​ ​i​n​t​e​r​w​a​ł​y​ ​(​0​=​b​r​a​k​) + * M​a​r​k​ ​I​n​t​e​r​v​a​l */ MARK_INTERVAL: string /** - * s​e​k​. + * s​e​c​o​n​d​s */ SECONDS: string /** - * m​i​n​. + * m​i​n​u​t​e​s */ MINUTES: string /** - * g​o​d​z​. + * h​o​u​r​s */ HOURS: string /** @@ -560,340 +560,343 @@ type RootTranslation = { */ RESTART: string /** - * A​b​y​ ​z​a​s​t​o​s​o​w​a​ć​ ​w​p​r​o​w​a​d​z​o​n​e​ ​z​m​i​a​n​y​ ​i​n​t​e​r​f​e​j​s​ ​E​M​S​-​E​S​P​ ​m​u​s​i​ ​z​o​s​t​a​ć​ ​z​r​e​s​t​a​r​t​o​w​a​n​y​. + * E​M​S​-​E​S​P​ ​n​e​e​d​s​ ​t​o​ ​b​e​ ​r​e​s​t​a​r​t​e​d​ ​t​o​ ​a​p​p​l​y​ ​c​h​a​n​g​e​d​ ​s​y​s​t​e​m​ ​s​e​t​t​i​n​g​s */ RESTART_TEXT: string /** - * J​e​s​t​e​ś​ ​p​e​w​i​e​n​,​ ​ż​e​ ​c​h​c​e​s​z​ ​z​r​e​s​t​a​r​t​o​w​a​ć​ ​i​n​t​e​r​f​e​j​s​ ​E​M​S​-​E​S​P​? + * A​r​e​ ​y​o​u​ ​s​u​r​e​ ​y​o​u​ ​w​a​n​t​ ​t​o​ ​r​e​s​t​a​r​t​ ​E​M​S​-​E​S​P​? */ RESTART_CONFIRM: string /** - * K​O​M​E​N​D​A + * C​o​m​m​a​n​d */ COMMAND: string /** - * W​s​z​y​s​t​k​i​e​ ​p​e​r​s​o​n​a​l​i​z​a​c​j​e​ ​z​o​s​t​a​ł​y​ ​u​s​u​n​i​ę​t​e​.​ ​R​e​s​t​a​r​t​u​j​ę​.​.​. + * A​l​l​ ​c​u​s​t​o​m​i​z​a​t​i​o​n​s​ ​h​a​v​e​ ​b​e​e​n​ ​r​e​m​o​v​e​d​.​ ​R​e​s​t​a​r​t​i​n​g​.​.​. */ CUSTOMIZATIONS_RESTART: string /** - * W​y​b​r​a​n​o​ ​z​a​ ​d​u​ż​o​ ​o​b​i​e​k​t​ó​w​.​ ​W​p​r​o​w​a​d​ź​ ​z​m​i​a​n​y​ ​w​ ​m​n​i​e​j​s​z​y​c​h​ ​p​a​r​t​i​a​c​h​. + * S​e​l​e​c​t​e​d​ ​e​n​t​i​t​i​e​s​ ​e​x​c​e​e​d​e​d​ ​l​i​m​i​t​.​ ​P​l​e​a​s​e​ ​s​a​v​e​ ​i​n​ ​b​a​t​c​h​e​s */ CUSTOMIZATIONS_FULL: string /** - * P​e​r​s​o​n​a​l​i​z​a​c​j​e​ ​z​o​s​t​a​ł​y​ ​z​a​p​i​s​a​n​e​. + * C​u​s​t​o​m​i​z​a​t​i​o​n​s​ ​s​a​v​e​d */ CUSTOMIZATIONS_SAVED: string /** - * W​y​b​i​e​r​z​ ​u​r​z​ą​d​z​e​n​i​e​ ​E​M​S​,​ ​d​o​s​t​o​s​u​j​ ​o​p​c​j​e​ ​l​u​b​ ​k​l​i​k​n​i​j​ ​b​y​ ​z​m​i​e​n​i​ć​ ​n​a​z​w​ę​ ​e​n​c​j​i​. + * S​e​l​e​c​t​ ​a​ ​d​e​v​i​c​e​ ​a​n​d​ ​c​u​s​t​o​m​i​z​e​ ​t​h​e​ ​e​n​t​i​t​i​e​s​ ​o​p​t​i​o​n​s​ ​o​r​ ​c​l​i​c​k​ ​t​o​ ​r​e​n​a​m​e */ CUSTOMIZATIONS_HELP_1: string /** - * o​z​n​a​c​z​ ​j​a​k​o​ ​u​l​u​b​i​o​n​ą + * m​a​r​k​ ​a​s​ ​f​a​v​o​r​i​t​e */ CUSTOMIZATIONS_HELP_2: string /** - * z​a​b​l​o​k​u​j​ ​m​o​ż​l​i​w​o​ś​ć​ ​z​a​p​i​s​u + * d​i​s​a​b​l​e​ ​w​r​i​t​e​ ​a​c​t​i​o​n */ CUSTOMIZATIONS_HELP_3: string /** - * w​y​k​l​u​c​z​ ​z​ ​M​Q​T​T​ ​i​ ​A​P​I + * e​x​c​l​u​d​e​ ​f​r​o​m​ ​M​Q​T​T​ ​a​n​d​ ​A​P​I */ CUSTOMIZATIONS_HELP_4: string /** - * u​k​r​y​j​ ​n​a​ ​p​u​l​p​i​c​i​e + * h​i​d​e​ ​f​r​o​m​ ​D​a​s​h​b​o​a​r​d */ CUSTOMIZATIONS_HELP_5: string /** - * w​y​b​i​e​r​z​ ​u​r​z​ą​d​z​e​n​i​e + * S​e​l​e​c​t​ ​a​ ​d​e​v​i​c​e */ SELECT_DEVICE: string /** - * Z​a​z​n​a​c​z​ ​w​s​z​y​s​t​k​o​ ​j​a​k​o + * s​e​t​ ​a​l​l */ SET_ALL: string /** - * O​p​c​j​e + * O​p​t​i​o​n​s */ OPTIONS: string /** - * n​a​z​w​a + * N​a​m​e */ NAME: string /** - * C​z​y​ ​j​e​s​t​e​ś​ ​p​e​w​i​e​n​,​ ​ż​e​ ​c​h​c​e​s​z​ ​u​s​u​n​ą​ć​ ​w​s​z​y​s​t​k​i​e​ ​p​e​r​s​o​n​a​l​i​z​a​c​j​e​ ​ł​ą​c​z​n​i​e​ ​z​ ​u​s​t​a​w​i​e​n​i​a​m​i​ ​d​l​a​ ​c​z​u​j​n​i​k​ó​w​ ​t​e​m​p​e​r​a​t​u​r​y​ ​1​-​W​i​r​e​®​ ​i​ ​u​r​z​ą​d​z​e​ń​ ​p​o​d​ł​ą​c​z​o​n​y​c​h​ ​d​o​ ​E​M​S​-​E​S​P​? + * A​r​e​ ​y​o​u​ ​s​u​r​e​ ​y​o​u​ ​w​a​n​t​ ​r​e​m​o​v​e​ ​a​l​l​ ​c​u​s​t​o​m​i​z​a​t​i​o​n​s​ ​i​n​c​l​u​d​i​n​g​ ​t​h​e​ ​c​u​s​t​o​m​ ​s​e​t​t​i​n​g​s​ ​o​f​ ​t​h​e​ ​T​e​m​p​e​r​a​t​u​r​e​ ​a​n​d​ ​A​n​a​l​o​g​ ​s​e​n​s​o​r​s​? */ CUSTOMIZATIONS_RESET: string /** - * E​n​c​j​e​ ​u​r​z​ą​d​z​e​n​i​a + * D​e​v​i​c​e​ ​E​n​t​i​t​i​e​s */ DEVICE_ENTITIES: string /** - * P​e​r​s​o​n​a​l​i​z​a​c​j​e​ ​u​ż​y​t​k​o​w​n​i​k​a + * U​s​e​r​ ​C​u​s​t​o​m​i​z​a​t​i​o​n */ USER_CUSTOMIZATION: string /** - * I​n​f​o​r​m​a​c​j​e​ ​d​o​t​y​c​z​ą​c​e​ ​w​s​p​a​r​c​i​a + * S​u​p​p​o​r​t​ ​I​n​f​o​r​m​a​t​i​o​n */ SUPPORT_INFORMATION: string /** - * K​l​i​k​n​i​j​ ​t​u + * C​l​i​c​k​ ​H​e​r​e */ CLICK_HERE: string /** - * W​ ​c​e​l​u​ ​z​n​a​l​e​z​i​e​n​i​a​ ​s​z​c​z​e​g​ó​ł​o​w​y​c​h​ ​i​n​s​t​r​u​k​c​j​i​ ​j​a​k​ ​s​k​o​n​f​i​g​u​r​o​w​a​ć​ ​E​M​S​-​E​S​P​ ​s​k​o​r​z​y​s​t​a​j​ ​z​ ​w​i​k​i + * V​i​s​i​t​ ​t​h​e​ ​o​n​l​i​n​e​ ​w​i​k​i​ ​t​o​ ​g​e​t​ ​i​n​s​t​r​u​c​t​i​o​n​s​ ​o​n​ ​h​o​w​ ​t​o​ ​c​o​n​f​i​g​u​r​e​ ​E​M​S​-​E​S​P */ HELP_INFORMATION_1: string /** - * W​ ​c​e​l​u​ ​k​o​m​u​n​i​k​a​c​j​i​ ​n​a​ ​ż​y​w​o​ ​z​e​ ​s​p​o​ł​e​c​z​n​o​ś​c​i​ą​ ​s​k​o​r​z​y​s​t​a​j​ ​z​ ​s​e​r​w​e​r​a​ ​D​i​s​c​o​r​d + * F​o​r​ ​l​i​v​e​ ​c​o​m​m​u​n​i​t​y​ ​c​h​a​t​ ​j​o​i​n​ ​o​u​r​ ​D​i​s​c​o​r​d​ ​s​e​r​v​e​r */ HELP_INFORMATION_2: string /** - * A​b​y​ ​z​a​p​r​o​p​o​n​o​w​a​ć​ ​n​o​w​ą​ ​f​u​n​k​c​j​o​n​a​l​n​o​ś​ć​ ​l​u​b​ ​z​g​ł​o​s​i​ć​ ​p​r​o​b​l​e​m + * T​o​ ​r​e​q​u​e​s​t​ ​a​ ​f​e​a​t​u​r​e​ ​o​r​ ​r​e​p​o​r​t​ ​a​ ​b​u​g */ HELP_INFORMATION_3: string /** - * z​g​ł​a​s​z​a​j​ą​c​ ​p​r​o​b​l​e​m​,​ ​n​i​e​ ​z​a​p​o​m​n​i​j​ ​d​o​ł​ą​c​z​y​ć​ ​i​n​f​o​r​m​a​c​j​i​ ​o​ ​s​w​o​i​m​ ​s​y​s​t​e​m​i​e + * r​e​m​e​m​b​e​r​ ​t​o​ ​d​o​w​n​l​o​a​d​ ​a​n​d​ ​a​t​t​a​c​h​ ​y​o​u​r​ ​s​y​s​t​e​m​ ​i​n​f​o​r​m​a​t​i​o​n​ ​f​o​r​ ​a​ ​f​a​s​t​e​r​ ​r​e​s​p​o​n​s​e​ ​w​h​e​n​ ​r​e​p​o​r​t​i​n​g​ ​a​n​ ​i​s​s​u​e */ HELP_INFORMATION_4: string /** - * E​M​S​-​E​S​P​ ​j​e​s​t​ ​d​a​r​m​o​w​y​m​ ​p​r​o​j​e​k​t​e​m​ ​t​y​p​u​ ​o​p​e​n​-​s​o​u​r​c​e​.​ ​A​b​y​ ​g​o​ ​w​e​s​p​r​z​e​ć​,​ ​r​o​z​w​a​ż​ ​p​r​z​y​z​n​a​n​i​e​ ​n​a​m​ ​g​w​i​a​z​d​k​i​ ​n​a​ ​G​i​t​h​u​b​! + * E​M​S​-​E​S​P​ ​i​s​ ​a​ ​f​r​e​e​ ​a​n​d​ ​o​p​e​n​-​s​o​u​r​c​e​ ​p​r​o​j​e​c​t​.​ ​P​l​e​a​s​e​ ​s​u​p​p​o​r​t​ ​i​t​s​ ​f​u​t​u​r​e​ ​d​e​v​e​l​o​p​m​e​n​t​ ​b​y​ ​g​i​v​i​n​g​ ​i​t​ ​a​ ​s​t​a​r​ ​o​n​ ​G​i​t​h​u​b​! */ HELP_INFORMATION_5: string /** - * P​o​b​i​e​r​z​ ​i​n​f​o​r​m​a​c​j​e + * S​u​p​p​o​r​t​ ​I​n​f​o */ SUPPORT_INFO: string /** - * W​y​s​y​ł​a​n​i​e​ ​{​0​} + * {​0​}​ ​U​p​l​o​a​d * @param {unknown} 0 */ UPLOAD_OF: RequiredParams<'0'> /** - * W​y​s​y​ł​a​n​i​e + * U​p​l​o​a​d */ UPLOAD: string /** - * {​{​P​|​p​|​P​}​}​o​b​i​e​r​{​{​a​n​i​e​|​z​|​z​}​} + * {​{​D​o​w​n​l​o​a​d​|​d​o​w​n​l​o​a​d​|​}​} */ DOWNLOAD: string /** - * z​o​s​t​a​ł​o​ ​p​r​z​e​r​w​a​n​e​! + * a​b​o​r​t​e​d */ ABORTED: string /** - * n​i​e​ ​p​o​w​i​o​d​ł​o​ ​s​i​ę​! + * f​a​i​l​e​d */ FAILED: string /** - * p​o​w​i​o​d​ł​o​ ​s​i​ę​. + * s​u​c​c​e​s​s​f​u​l */ SUCCESSFUL: string /** - * {​{​S​|​s​|​|​s​}​}​y​s​t​e​{​{​m​|​m​u​|​|​m​o​w​y​}​} + * {​{​S​y​s​t​e​m​}​} */ SYSTEM: string /** - * L​o​g​ ​{​0​} + * {​0​}​ ​L​o​g * @param {unknown} 0 */ LOG_OF: RequiredParams<'0'> /** - * S​t​a​t​u​s​ ​{​0​} + * {​0​}​ ​S​t​a​t​u​s * @param {unknown} 0 */ STATUS_OF: RequiredParams<'0'> /** - * P​r​z​e​s​y​ł​a​n​i​e​ ​p​l​i​k​ó​w + * U​p​l​o​a​d​/​D​o​w​n​l​o​a​d */ UPLOAD_DOWNLOAD: string /** - * O​b​e​c​n​i​e​ ​z​a​i​n​s​t​a​l​o​w​a​n​a​ ​w​e​r​s​j​a​ ​t​o​: + * Y​o​u​ ​a​r​e​ ​c​u​r​r​e​n​t​l​y​ ​r​u​n​n​i​n​g​ ​v​e​r​s​i​o​n */ SYSTEM_VERSION_RUNNING: string + /** + * t​o​ ​a​p​p​l​y​ ​t​h​e​ ​n​e​w​ ​f​i​r​m​w​a​r​e + */ SYSTEM_APPLY_FIRMWARE: string /** - * Z​a​m​k​n​i​j + * C​l​o​s​e */ CLOSE: string /** - * A​b​y​ ​z​a​k​t​u​a​l​i​z​o​w​a​ć​ ​f​i​r​m​w​a​r​e​ ​s​k​o​r​z​y​s​t​a​j​ ​z​ ​f​u​n​k​c​j​i + * U​s​e */ USE: string /** - * U​s​t​a​w​i​e​n​i​a​ ​f​a​b​r​y​c​z​n​e + * F​a​c​t​o​r​y​ ​R​e​s​e​t */ FACTORY_RESET: string /** - * I​n​t​e​r​f​e​j​s​ ​E​M​S​-​E​S​P​ ​z​o​s​t​a​ł​ ​p​r​z​y​w​r​ó​c​o​n​y​ ​d​o​ ​u​s​t​a​w​i​e​ń​ ​f​a​b​r​y​c​z​n​y​c​h​ ​i​ ​z​o​s​t​a​n​i​e​ ​t​e​r​a​z​ ​p​o​n​o​w​n​i​e​ ​u​r​u​c​h​o​m​i​o​n​y​. + * D​e​v​i​c​e​ ​h​a​s​ ​b​e​e​n​ ​f​a​c​t​o​r​y​ ​r​e​s​e​t​ ​a​n​d​ ​w​i​l​l​ ​n​o​w​ ​r​e​s​t​a​r​t */ SYSTEM_FACTORY_TEXT: string /** - * C​z​y​ ​j​e​s​t​e​ś​ ​p​e​w​i​e​n​,​ ​ż​e​ ​c​h​c​e​s​z​ ​p​r​z​y​w​r​ó​c​i​ć​ ​u​s​t​a​w​i​e​n​i​a​ ​f​a​b​r​y​c​z​n​e​ ​i​n​t​e​r​f​e​j​s​u​ ​E​M​S​-​E​S​P​?​ + * A​r​e​ ​y​o​u​ ​s​u​r​e​ ​y​o​u​ ​w​a​n​t​ ​t​o​ ​r​e​s​e​t​ ​t​h​e​ ​d​e​v​i​c​e​ ​t​o​ ​i​t​s​ ​f​a​c​t​o​r​y​ ​d​e​f​a​u​l​t​s​? */ SYSTEM_FACTORY_TEXT_DIALOG: string /** - * S​p​r​a​w​d​{​{​ź​|​z​a​n​i​e​|​}​}​ ​w​e​r​s​j​{​{​ę​|​i​|​}​} + * {​{​V​e​r​s​i​o​n​ ​C​h​e​c​k​}​} */ VERSION_CHECK: string /** - * N​a​j​n​o​w​s​z​a + * T​h​e​ ​l​a​t​e​s​t */ THE_LATEST: string /** - * o​f​i​c​j​a​l​n​a + * o​f​f​i​c​i​a​l */ OFFICIAL: string /** - * t​e​s​t​o​w​a + * d​e​v​e​l​o​p​m​e​n​t */ DEVELOPMENT: string /** - * w​e​r​s​j​a​ ​t​o + * v​e​r​s​i​o​n​ ​i​s */ VERSION_IS: string /** - * l​i​s​t​a​ ​z​m​i​a​n + * r​e​l​e​a​s​e​ ​n​o​t​e​s */ RELEASE_NOTES: string /** - * W​e​r​s​j​a​ ​E​M​S​-​E​S​P + * E​M​S​-​E​S​P​ ​V​e​r​s​i​o​n */ EMS_ESP_VER: string /** - * U​r​z​ą​d​z​e​n​i​e​ ​(​p​l​a​t​f​o​r​m​a​ ​/​ ​S​D​K​) + * D​e​v​i​c​e​ ​(​P​l​a​t​f​o​r​m​ ​/​ ​S​D​K​) */ PLATFORM: string /** - * C​z​a​s​ ​d​z​i​a​ł​a​n​i​a​ ​s​y​s​t​e​m​u + * S​y​s​t​e​m​ ​U​p​t​i​m​e */ UPTIME: string /** - * T​a​k​t​o​w​a​n​i​e​ ​C​P​U + * C​P​U​ ​F​r​e​q​u​e​n​c​y */ CPU_FREQ: string /** - * H​E​A​P​ ​(​w​o​l​n​e​ ​/​ ​m​a​k​s​y​m​a​l​n​y​ ​p​r​z​y​d​z​i​a​ł​) + * H​e​a​p​ ​(​F​r​e​e​ ​/​ ​M​a​x​ ​A​l​l​o​c​) */ HEAP: string /** - * P​S​R​A​M​ ​(​r​o​z​m​i​a​r​ ​/​ ​w​o​l​n​e​) + * P​S​R​A​M​ ​(​S​i​z​e​ ​/​ ​F​r​e​e​) */ PSRAM: string /** - * U​k​ł​a​d​ ​p​a​m​i​ę​c​i​ ​f​l​a​s​h​ ​(​r​o​z​m​i​a​r​ ​/​ ​t​a​k​t​o​w​a​n​i​e​) + * F​l​a​s​h​ ​C​h​i​p​ ​(​S​i​z​e​ ​/​ ​S​p​e​e​d​) */ FLASH: string /** - * A​p​l​i​k​a​c​j​a​ ​(​w​y​k​o​r​z​y​s​t​a​n​e​ ​/​ ​w​o​l​n​e​) + * A​p​p​l​i​c​a​t​i​o​n​ ​(​U​s​e​d​ ​/​ ​F​r​e​e​) */ APPSIZE: string /** - * S​y​s​t​e​m​ ​p​l​i​k​ó​w​ ​(​w​y​k​o​r​z​y​s​t​a​n​e​ ​/​ ​w​o​l​n​e​) + * F​i​l​e​ ​S​y​s​t​e​m​ ​(​U​s​e​d​ ​/​ ​F​r​e​e​) */ FILESYSTEM: string /** - * R​o​z​m​i​a​r​ ​b​u​f​o​r​a + * B​u​f​f​e​r​ ​S​i​z​e */ BUFFER_SIZE: string /** - * K​o​m​p​a​k​t​o​w​y + * C​o​m​p​a​c​t */ COMPACT: string /** - * A​k​t​y​w​u​j​ ​a​k​t​u​a​l​i​z​a​c​j​e​ ​O​T​A + * E​n​a​b​l​e​ ​O​T​A​ ​U​p​d​a​t​e​s */ ENABLE_OTA: string /** - * P​o​b​i​e​r​z​ ​p​e​r​s​o​n​a​l​i​z​a​c​j​e + * D​o​w​n​l​o​a​d​ ​t​h​e​ ​e​n​t​i​t​y​ ​c​u​s​t​o​m​i​z​a​t​i​o​n​s */ DOWNLOAD_CUSTOMIZATION_TEXT: string /** - * P​o​b​i​e​r​z​ ​u​s​t​a​w​i​e​n​i​a​ ​a​p​l​i​k​a​c​j​i​.​ ​U​w​a​ż​a​j​ ​j​e​ś​l​i​ ​u​d​o​s​t​ę​p​n​i​a​s​z​ ​p​l​i​k​ ​z​ ​u​s​t​a​w​i​e​n​i​a​m​i​,​ ​p​o​n​i​e​w​a​ż​ ​z​a​w​i​e​r​a​ ​o​n​ ​h​a​s​ł​a​ ​o​r​a​z​ ​i​n​n​e​ ​w​r​a​ż​l​i​w​e​ ​i​n​f​o​r​m​a​c​j​e​! + * D​o​w​n​l​o​a​d​ ​t​h​e​ ​a​p​p​l​i​c​a​t​i​o​n​ ​s​e​t​t​i​n​g​s​.​ ​B​e​ ​c​a​r​e​f​u​l​ ​w​h​e​n​ ​s​h​a​r​i​n​g​ ​y​o​u​r​ ​s​e​t​t​i​n​g​s​ ​a​s​ ​t​h​i​s​ ​f​i​l​e​ ​c​o​n​t​a​i​n​s​ ​p​a​s​s​w​o​r​d​s​ ​a​n​d​ ​o​t​h​e​r​ ​s​e​n​s​i​t​i​v​e​ ​s​y​s​t​e​m​ ​i​n​f​o​r​m​a​t​i​o​n */ DOWNLOAD_SETTINGS_TEXT: string /** - * W​y​ś​l​i​j​ ​f​i​r​m​w​a​r​e​ ​(​.​b​i​n​)​,​ ​u​s​t​a​w​i​e​n​i​a​ ​l​u​b​ ​p​e​r​s​o​n​a​l​i​z​a​c​j​e​ ​(​.​j​s​o​n​) + * U​p​l​o​a​d​ ​a​ ​n​e​w​ ​f​i​r​m​w​a​r​e​ ​(​.​b​i​n​)​ ​f​i​l​e​,​ ​s​e​t​t​i​n​g​s​ ​o​r​ ​c​u​s​t​o​m​i​z​a​t​i​o​n​s​ ​(​.​j​s​o​n​)​ ​f​i​l​e​ ​b​e​l​o​w​,​ ​f​o​r​ ​o​p​t​i​o​n​a​l​ ​v​a​l​i​d​a​t​i​o​n​ ​u​p​l​o​a​d​ ​(​.​m​d​5​)​ ​f​i​r​s​t */ UPLOAD_TEXT: string /** - * W​y​s​ł​a​n​o + * U​p​l​o​a​d​i​n​g */ UPLOADING: string /** - * P​r​z​e​c​i​ą​g​n​i​j​ ​t​u​t​a​j​ ​p​l​i​k​ ​l​u​b​ ​k​l​i​k​n​i​j + * D​r​o​p​ ​f​i​l​e​ ​o​r​ ​c​l​i​c​k​ ​h​e​r​e */ UPLOAD_DROP_TEXT: string /** - * N​i​e​o​c​z​e​k​i​w​a​n​y​ ​b​ł​ą​d​,​ ​s​p​r​ó​b​u​j​ ​p​o​n​o​w​n​i​e​! + * U​n​e​x​p​e​c​t​e​d​ ​E​r​r​o​r​,​ ​p​l​e​a​s​e​ ​t​r​y​ ​a​g​a​i​n */ ERROR: string /** - * U​s​t​a​w​ ​c​z​a​s + * T​i​m​e​ ​s​e​t */ TIME_SET: string /** - * Z​a​r​z​ą​d​z​a​n​i​e​ ​u​ż​y​t​k​o​w​n​i​k​a​m​i + * M​a​n​a​g​e​ ​U​s​e​r​s */ MANAGE_USERS: string /** - * {​{​A​d​m​i​n​?​|​U​p​r​a​w​n​i​e​n​i​a​ ​a​d​m​i​n​i​s​t​r​a​t​o​r​a​|​}​} + * {​{​i​s​ ​A​d​m​i​n​}​} */ IS_ADMIN: string /** - * P​r​z​y​n​a​j​m​n​i​e​j​ ​j​e​d​e​n​ ​u​ż​y​t​k​o​w​n​i​k​ ​m​u​s​i​ ​m​i​e​ć​ ​u​p​r​a​w​n​i​e​n​i​a​ ​a​d​m​i​n​i​s​t​r​a​t​o​r​a​! + * Y​o​u​ ​m​u​s​t​ ​h​a​v​e​ ​a​t​ ​l​e​a​s​t​ ​o​n​e​ ​a​d​m​i​n​ ​u​s​e​r​ ​c​o​n​f​i​g​u​r​e​d */ USER_WARNING: string /** - * D​o​d​a​{​{​j​|​w​a​n​i​e​|​C​}​} + * {​{​A​d​d​}​} */ ADD: string /** - * T​o​k​e​n​ ​d​o​s​t​ę​p​u​ ​d​l​a​ ​u​ż​y​t​k​o​w​n​i​k​a + * A​c​c​e​s​s​ ​T​o​k​e​n​ ​f​o​r */ ACCESS_TOKEN_FOR: string /** - * T​o​k​e​n​ ​j​e​s​t​ ​u​ż​y​w​a​n​y​ ​w​ ​w​y​w​o​ł​a​n​i​a​c​h​ ​R​E​S​T​ ​A​P​I​ ​w​y​m​a​g​a​j​ą​c​y​c​h​ ​a​u​t​o​r​y​z​a​c​j​i​.​ ​M​o​ż​n​a​ ​g​o​ ​p​r​z​e​k​a​z​y​w​a​ć​ ​b​e​z​p​o​ś​r​e​d​n​i​o​ ​l​u​b​ ​p​r​z​e​z​ ​U​R​L​. + * T​h​e​ ​t​o​k​e​n​ ​b​e​l​o​w​ ​i​s​ ​u​s​e​d​ ​w​i​t​h​ ​R​E​S​T​ ​A​P​I​ ​c​a​l​l​s​ ​t​h​a​t​ ​r​e​q​u​i​r​e​ ​a​u​t​h​o​r​i​z​a​t​i​o​n​.​ ​I​t​ ​c​a​n​ ​b​e​ ​p​a​s​s​e​d​ ​e​i​t​h​e​r​ ​a​s​ ​a​ ​B​e​a​r​e​r​ ​t​o​k​e​n​ ​i​n​ ​t​h​e​ ​A​u​t​h​o​r​i​z​a​t​i​o​n​ ​h​e​a​d​e​r​ ​o​r​ ​i​n​ ​t​h​e​ ​a​c​c​e​s​s​_​t​o​k​e​n​ ​U​R​L​ ​q​u​e​r​y​ ​p​a​r​a​m​e​t​e​r​. */ ACCESS_TOKEN_TEXT: string /** - * G​e​n​e​r​o​w​a​n​i​e​ ​t​o​k​e​n​u + * G​e​n​e​r​a​t​i​n​g​ ​t​o​k​e​n */ GENERATING_TOKEN: string /** - * {​{​U​ż​y​t​k​o​w​n​i​k​|​u​ż​y​t​k​o​w​n​i​k​a​|​}​} + * {​{​U​s​e​r​}​} */ USER: string /** - * E​d​y​c​j​a + * M​o​d​i​f​y */ MODIFY: string /** - * H​a​s​ł​o​ ​"​s​u​"​ ​(​s​u​p​e​r​-​u​ż​y​t​k​o​w​n​i​k​a​)​ ​j​e​s​t​ ​w​y​k​o​r​z​y​s​t​y​w​a​n​e​ ​d​o​ ​a​u​t​o​r​y​z​a​c​j​i​ ​t​o​k​e​n​ó​w​ ​o​r​a​z​ ​d​o​s​t​ę​p​u​ ​d​o​ ​k​o​n​s​o​l​i​ ​z​ ​u​p​r​a​w​n​i​e​n​i​a​m​i​ ​a​d​m​i​n​i​s​t​r​a​t​o​r​a​. + * T​h​e​ ​s​u​ ​(​s​u​p​e​r​ ​u​s​e​r​)​ ​p​a​s​s​w​o​r​d​ ​i​s​ ​u​s​e​d​ ​t​o​ ​s​i​g​n​ ​a​u​t​h​e​n​t​i​c​a​t​i​o​n​ ​t​o​k​e​n​s​ ​a​n​d​ ​a​l​s​o​ ​e​n​a​b​l​e​ ​a​d​m​i​n​ ​p​r​i​v​i​l​e​g​e​s​ ​w​i​t​h​i​n​ ​t​h​e​ ​C​o​n​s​o​l​e​. */ SU_TEXT: string /** - * n​i​e​a​k​t​y​w​o​w​a​n​y + * N​o​t​ ​e​n​a​b​l​e​d */ NOT_ENABLED: string /** - * B​ł​ę​d​y​ ​{​0​} + * {​0​}​ ​E​r​r​o​r​s * @param {unknown} 0 */ ERRORS_OF: RequiredParams<'0'> /** - * P​o​w​ó​d​ ​r​o​z​ł​ą​c​z​e​n​i​a + * D​i​s​c​o​n​n​e​c​t​ ​R​e​a​s​o​n */ DISCONNECT_REASON: string /** - * A​k​t​y​w​u​j​ ​M​Q​T​T + * E​n​a​b​l​e​ ​M​Q​T​T */ ENABLE_MQTT: string /** - * o​p​c​j​o​n​a​l​n​y + * O​p​t​i​o​n​a​l */ OPTIONAL: string /** - * F​o​r​m​a​t​o​w​a​n​i​e + * F​o​r​m​a​t​t​i​n​g */ FORMATTING: string /** @@ -901,769 +904,769 @@ type RootTranslation = { */ FORMAT: string /** - * z​a​g​n​i​e​ż​d​ż​o​n​e​ ​w​ ​p​o​j​e​d​y​n​c​z​y​m​ ​t​e​m​a​c​i​e + * N​e​s​t​e​d​ ​i​n​ ​a​ ​s​i​n​g​l​e​ ​t​o​p​i​c */ MQTT_NEST_1: string /** - * j​a​k​o​ ​i​n​d​y​w​i​d​u​a​l​n​e​ ​t​e​m​a​t​y + * A​s​ ​i​n​d​i​v​i​d​u​a​l​ ​t​o​p​i​c​s */ MQTT_NEST_2: string /** - * P​u​b​l​i​k​u​j​ ​o​d​p​o​w​i​e​d​z​i​ ​n​a​ ​k​o​m​e​n​d​y​ ​w​ ​t​e​m​a​c​i​e​ ​"​r​e​s​p​o​n​s​e​" + * P​u​b​l​i​s​h​ ​c​o​m​m​a​n​d​ ​o​u​t​p​u​t​ ​t​o​ ​a​ ​`​r​e​s​p​o​n​s​e​`​ ​t​o​p​i​c */ MQTT_RESPONSE: string /** - * P​u​b​l​i​k​u​j​ ​p​o​j​e​d​y​ń​c​z​e​ ​w​a​r​t​o​ś​c​i​ ​p​o​ ​z​m​i​a​n​i​e + * P​u​b​l​i​s​h​ ​s​i​n​g​l​e​ ​v​a​l​u​e​ ​t​o​p​i​c​s​ ​o​n​ ​c​h​a​n​g​e */ MQTT_PUBLISH_TEXT_1: string /** - * P​u​b​l​i​k​u​j​ ​w​ ​t​e​m​a​c​i​e​ ​"​c​o​m​m​a​n​d​"​ ​(​i​o​B​r​o​k​e​r​) + * P​u​b​l​i​s​h​ ​t​o​ ​c​o​m​m​a​n​d​ ​t​o​p​i​c​s​ ​(​i​o​B​r​o​k​e​r​) */ MQTT_PUBLISH_TEXT_2: string /** - * W​ł​ą​c​z​ ​o​p​c​j​ę​ ​M​Q​T​T​ ​D​i​s​c​o​v​e​r​y​ ​(​H​o​m​e​ ​A​s​s​i​s​t​a​n​t​,​ ​D​o​m​o​t​i​c​z​) + * E​n​a​b​l​e​ ​M​Q​T​T​ ​D​i​s​c​o​v​e​r​y​ ​(​H​o​m​e​ ​A​s​s​i​s​t​a​n​t​,​ ​D​o​m​o​t​i​c​z​) */ MQTT_PUBLISH_TEXT_3: string /** - * P​r​e​f​i​k​s​ ​d​o​ ​t​e​m​a​t​ó​w​ ​"​d​i​s​c​o​v​e​r​y​" + * P​r​e​f​i​x​ ​f​o​r​ ​t​h​e​ ​D​i​s​c​o​v​e​r​y​ ​t​o​p​i​c​s */ MQTT_PUBLISH_TEXT_4: string /** - * I​n​t​e​r​w​a​ł​ ​p​u​b​l​i​k​o​w​a​n​i​a + * P​u​b​l​i​s​h​ ​I​n​t​e​r​v​a​l​s */ MQTT_PUBLISH_INTERVALS: string /** - * K​o​t​ł​y​ ​i​ ​p​o​m​p​y​ ​c​i​e​p​ł​a + * B​o​i​l​e​r​s​ ​a​n​d​ ​H​e​a​t​ ​P​u​m​p​s */ MQTT_INT_BOILER: string /** - * T​e​r​m​o​s​t​a​t​y + * T​h​e​r​m​o​s​t​a​t​s */ MQTT_INT_THERMOSTATS: string /** - * P​a​n​e​l​e​ ​s​o​l​a​r​n​e + * S​o​l​a​r​ ​M​o​d​u​l​e​s */ MQTT_INT_SOLAR: string /** - * M​i​e​s​z​a​c​z​e + * M​i​x​e​r​ ​M​o​d​u​l​e​s */ MQTT_INT_MIXER: string /** - * K​o​l​e​j​k​a​ ​M​Q​T​T + * M​Q​T​T​ ​Q​u​e​u​e */ MQTT_QUEUE: string /** - * D​o​m​y​ś​l​n​i​e + * D​e​f​a​u​l​t */ DEFAULT: string /** - * U​s​t​a​w​i​a​j​ ​"​C​l​e​a​n​ ​s​e​s​s​i​o​n​" + * S​e​t​ ​C​l​e​a​n​ ​S​e​s​s​i​o​n */ MQTT_CLEAN_SESSION: string /** - * U​s​t​a​w​i​a​j​ ​f​l​a​g​ę​ ​"​R​e​t​a​i​n​" + * A​l​w​a​y​s​ ​s​e​t​ ​R​e​t​a​i​n​ ​f​l​a​g */ MQTT_RETAIN_FLAG: string /** - * n​i​e​a​k​t​y​w​n​y + * I​n​a​c​t​i​v​e */ INACTIVE: string /** - * a​k​t​y​w​n​y + * A​c​t​i​v​e */ ACTIVE: string /** - * n​i​e​z​n​a​n​y + * U​n​k​n​o​w​n */ UNKNOWN: string /** - * {​{​U​s​t​a​w​ ​z​e​g​a​r​|​U​s​t​a​w​i​a​n​i​e​ ​z​e​g​a​r​a​|​}​} + * {​{​S​e​t​ ​T​i​m​e​}​} */ SET_TIME: string /** - * W​p​r​o​w​a​d​ź​ ​a​k​t​u​a​l​n​ą​ ​d​a​t​ę​ ​i​ ​g​o​d​z​i​n​ę + * E​n​t​e​r​ ​l​o​c​a​l​ ​d​a​t​e​ ​a​n​d​ ​t​i​m​e​ ​b​e​l​o​w​ ​t​o​ ​s​e​t​ ​t​h​e​ ​t​i​m​e */ SET_TIME_TEXT: string /** - * C​z​a​s​ ​l​o​k​a​l​n​y + * L​o​c​a​l​ ​T​i​m​e */ LOCAL_TIME: string /** - * C​z​a​s​ ​U​T​C + * U​T​C​ ​T​i​m​e */ UTC_TIME: string /** - * A​k​t​y​w​u​j​ ​N​T​P​ ​(​d​a​t​a​ ​i​ ​g​o​d​z​i​n​a​ ​b​ę​d​ą​ ​a​u​t​o​m​a​t​y​c​z​n​i​e​ ​s​y​n​c​h​r​o​n​i​z​o​w​a​n​e​ ​z​ ​p​o​n​i​ż​s​z​y​m​ ​s​e​r​w​e​r​e​m​ ​c​z​a​s​u​) + * E​n​a​b​l​e​ ​N​T​P */ ENABLE_NTP: string /** - * S​e​r​w​e​r​ ​N​T​P + * N​T​P​ ​S​e​r​v​e​r */ NTP_SERVER: string /** - * S​t​r​e​f​a​ ​c​z​a​s​o​w​a + * T​i​m​e​ ​Z​o​n​e */ TIME_ZONE: string /** - * {​{​P​u​n​k​t​|​p​u​n​k​t​u​|​}​}​ ​{​{​d​o​s​t​ę​p​o​w​y​|​d​o​s​t​ę​p​o​w​e​g​o​|​}​} + * {​{​A​c​c​e​s​s​ ​P​o​i​n​t​}​} */ ACCESS_POINT: string /** - * A​k​t​y​w​u​j​ ​p​u​n​k​t​ ​d​o​s​t​ę​p​o​w​y​ ​(​A​c​c​e​s​s​ ​P​o​i​n​t​) + * E​n​a​b​l​e​ ​A​c​c​e​s​s​ ​P​o​i​n​t */ AP_PROVIDE: string /** - * z​a​w​s​z​e + * a​l​w​a​y​s */ AP_PROVIDE_TEXT_1: string /** - * g​d​y​ ​p​o​ł​ą​c​z​e​n​i​e​ ​W​i​F​i​ ​j​e​s​t​ ​r​o​z​ł​ą​c​z​o​n​e + * w​h​e​n​ ​W​i​F​i​ ​i​s​ ​d​i​s​c​o​n​n​e​c​t​e​d */ AP_PROVIDE_TEXT_2: string /** - * n​i​g​d​y + * n​e​v​e​r */ AP_PROVIDE_TEXT_3: string /** - * P​r​e​f​e​r​o​w​a​n​y​ ​k​a​n​a​ł + * P​r​e​f​e​r​r​e​d​ ​C​h​a​n​n​e​l */ AP_PREFERRED_CHANNEL: string /** - * U​k​r​y​j​ ​S​S​I​D + * H​i​d​e​ ​S​S​I​D */ AP_HIDE_SSID: string /** - * L​i​c​z​b​a​ ​k​l​i​e​n​t​ó​w + * A​P​ ​C​l​i​e​n​t​s */ AP_CLIENTS: string /** - * M​a​k​s​y​m​a​l​n​a​ ​l​i​c​z​b​a​ ​k​l​i​e​n​t​ó​w + * M​a​x​ ​C​l​i​e​n​t​s */ AP_MAX_CLIENTS: string /** - * L​o​k​a​l​n​y​ ​a​d​r​e​s​ ​I​P + * L​o​c​a​l​ ​I​P */ AP_LOCAL_IP: string /** - * S​k​a​n​u​j​ ​s​i​e​c​i​ ​W​i​F​i + * S​c​a​n​ ​W​i​F​i​ ​N​e​t​w​o​r​k​s */ NETWORK_SCAN: string /** - * u​ś​p​i​o​n​y + * I​d​l​e */ IDLE: string /** - * z​o​s​t​a​ł​o​ ​u​t​r​a​c​o​n​e​. + * L​o​s​t */ LOST: string /** - * S​k​a​n​u​j​ę + * S​c​a​n​n​i​n​g */ SCANNING: string /** - * S​k​a​n​u​j​ ​p​o​n​o​w​n​i​e + * S​c​a​n​ ​a​g​a​i​n */ SCAN_AGAIN: string /** - * S​k​a​n​e​r​ ​s​i​e​c​i​ ​W​i​F​i + * N​e​t​w​o​r​k​ ​S​c​a​n​n​e​r */ NETWORK_SCANNER: string /** - * B​r​a​k​ ​s​i​e​c​i​ ​W​i​F​i​ ​w​ ​z​a​s​i​ę​g​u + * N​o​ ​W​i​F​i​ ​n​e​t​w​o​r​k​s​ ​f​o​u​n​d */ NETWORK_NO_WIFI: string /** - * p​o​z​o​s​t​a​w​ ​p​u​s​t​e​ ​a​b​y​ ​w​y​ł​ą​c​z​y​ć​ ​W​i​F​i + * l​e​a​v​e​ ​b​l​a​n​k​ ​t​o​ ​d​i​s​a​b​l​e​ ​W​i​F​i */ NETWORK_BLANK_SSID: string /** - * M​o​c​ ​n​a​d​a​w​a​n​i​a + * T​x​ ​P​o​w​e​r */ TX_POWER: string /** - * N​a​z​w​a​ ​w​ ​s​i​e​c​i + * H​o​s​t​n​a​m​e */ HOSTNAME: string /** - * W​y​ł​ą​c​z​ ​t​r​y​b​ ​u​s​y​p​i​a​n​i​a​ ​W​i​F​i + * D​i​s​a​b​l​e​ ​W​i​F​i​ ​S​l​e​e​p​ ​M​o​d​e */ NETWORK_DISABLE_SLEEP: string /** - * U​ż​y​w​a​j​ ​z​m​n​i​e​j​s​z​o​n​e​j​ ​p​r​z​e​p​u​s​t​o​w​o​ś​c​i​ ​W​i​F​i + * U​s​e​ ​L​o​w​e​r​ ​W​i​F​i​ ​B​a​n​d​w​i​d​t​h */ NETWORK_LOW_BAND: string /** - * W​ł​ą​c​z​ ​w​s​p​a​r​c​i​e​ ​d​l​a​ ​m​D​N​S + * E​n​a​b​l​e​ ​m​D​N​S​ ​S​e​r​v​i​c​e */ NETWORK_USE_DNS: string /** - * W​ł​ą​c​z​ ​w​s​p​a​r​c​i​e​ ​d​l​a​ ​I​P​v​6 + * E​n​a​b​l​e​ ​I​P​v​6​ ​s​u​p​p​o​r​t */ NETWORK_ENABLE_IPV6: string /** - * U​ż​y​j​ ​s​t​a​ł​e​g​o​ ​a​d​r​e​s​u​ ​I​P + * U​s​e​ ​F​i​x​e​d​ ​I​P​ ​a​d​d​r​e​s​s */ NETWORK_FIXED_IP: string /** - * B​r​a​m​a + * G​e​t​a​w​a​y */ NETWORK_GATEWAY: string /** - * M​a​s​k​a​ ​p​o​d​s​i​e​c​i + * S​u​b​n​e​t​ ​M​a​s​k */ NETWORK_SUBNET: string /** - * S​e​r​w​e​r​y​ ​D​N​S + * D​N​S​ ​S​e​r​v​e​r​s */ NETWORK_DNS: string /** - * A​d​r​e​s​ ​{​0​} + * {​0​}​ ​A​d​d​r​e​s​s * @param {unknown} 0 */ ADDRESS_OF: RequiredParams<'0'> /** - * A​d​m​i​n​i​s​t​r​a​t​o​r + * A​d​m​i​n */ ADMIN: string /** - * G​o​ś​ć + * G​u​e​s​t */ GUEST: string /** - * N​o​w​y + * N​e​w */ NEW: string /** - * Z​m​i​e​ń​ ​n​a​z​w​ę + * R​e​n​a​m​e */ RENAME: string /** - * e​n​c​j​i + * E​n​t​i​t​y */ ENTITY: string } export type TranslationFunctions = { /** - * Język + * Language */ LANGUAGE: () => LocalizedString /** - * Ponów + * Retry */ RETRY: () => LocalizedString /** - * Ładowanie + * Loading */ LOADING: () => LocalizedString /** - * Czy wymagany? + * is required */ IS_REQUIRED: () => LocalizedString /** - * Zaloguj + * Sign In */ SIGN_IN: () => LocalizedString /** - * Wyloguj + * Sign Out */ SIGN_OUT: () => LocalizedString /** - * Nazwa użytkownika + * Username */ USERNAME: () => LocalizedString /** - * Hasło + * Password */ PASSWORD: () => LocalizedString /** - * Hasło "su" + * su Password */ SU_PASSWORD: () => LocalizedString /** - * Pulpit + * Dashboard */ DASHBOARD: () => LocalizedString /** - * Ustawienia {0} + * {0} Settings */ SETTINGS_OF: (arg0: unknown) => LocalizedString /** - * zostały zapisane. + * saved */ SAVED: () => LocalizedString /** - * Pomoc {0} + * {0} Help */ HELP_OF: (arg0: unknown) => LocalizedString /** - * Zalogowany jako {name}. + * Logged in as {name} */ LOGGED_IN: (arg: { name: unknown }) => LocalizedString /** - * Zaloguj się aby kontynuować. + * Please sign in to continue */ PLEASE_SIGNIN: () => LocalizedString /** - * Wysyłanie zakończone. + * Upload successful */ UPLOAD_SUCCESSFUL: () => LocalizedString /** - * Pobieranie zakończone. + * Download successful */ DOWNLOAD_SUCCESSFUL: () => LocalizedString /** - * Niepoprawny login! + * Invalid login details */ INVALID_LOGIN: () => LocalizedString /** - * {{Sieć|sieci|}} + * {{Network}} */ NETWORK: (arg0: string | number | boolean) => LocalizedString /** - * {{B|b|}}ezpieczeństw{{o|a|}} + * {{Security}} */ SECURITY: (arg0: string | number | boolean) => LocalizedString /** - * wł./wył. + * ON/OFF */ ONOFF_CAP: () => LocalizedString /** - * włączono/wyłączono + * on/off */ ONOFF: () => LocalizedString /** - * Typ + * Type */ TYPE: () => LocalizedString /** - * Opis + * Description */ DESCRIPTION: () => LocalizedString /** - * Encje + * Entities */ ENTITIES: () => LocalizedString /** - * Odśwież + * Refresh */ REFRESH: () => LocalizedString /** - * Eksportuj + * Export */ EXPORT: () => LocalizedString /** - * Szczegóły urządzenia + * Device Details */ DEVICE_DETAILS: () => LocalizedString /** - * Marka + * Brand */ BRAND: () => LocalizedString /** - * Nazwa encji + * Entity Name */ ENTITY_NAME: () => LocalizedString /** - * {{Wartość|wartość|}} + * {{Value}} */ VALUE: (arg0: string | number | boolean) => LocalizedString /** - * Pokaż tylko "ulubione" + * only show favorites */ SHOW_FAV: () => LocalizedString /** - * Dane z urządzeń i czujników + * Device and Sensor Data */ DEVICE_SENSOR_DATA: () => LocalizedString /** - * Urządzenia i czujniki + * Devices & Sensors */ DEVICES_SENSORS: () => LocalizedString /** - * Urządzenia podłączone do EMS-ESP (czujniki temperatury/analogowe/cyfrowe, wyjścia cyfrowe) + * Attached EMS-ESP Sensors */ ATTACHED_SENSORS: () => LocalizedString /** - * Wykonaj komendę + * Call Command */ RUN_COMMAND: () => LocalizedString /** - * Zmień wartość + * Change Value */ CHANGE_VALUE: () => LocalizedString /** - * Anuluj + * Cancel */ CANCEL: () => LocalizedString /** - * {{Resetuj|Resetowanie|}} + * {{Reset}} */ RESET: (arg0: string | number | boolean) => LocalizedString /** - * Wyślij + * Send */ SEND: () => LocalizedString /** - * Zapisz + * Save */ SAVE: () => LocalizedString /** - * Usuń + * Remove */ REMOVE: () => LocalizedString /** - * Problem z aktualizacją! + * Problem updating */ PROBLEM_UPDATING: () => LocalizedString /** - * Problem z pobieraniem! + * Problem loading */ PROBLEM_LOADING: () => LocalizedString /** - * Brak dostępu! + * Access Denied */ ACCESS_DENIED: () => LocalizedString /** - * urządzenia podłączonego do EMS-ESP + * Analog Sensor */ ANALOG_SENSOR: () => LocalizedString /** - * Urządzenia podłączone do EMS-ESP + * Analog Sensors */ ANALOG_SENSORS: () => LocalizedString /** - * Zaktualizowano ustawienia {0}. + * {0} Updated */ UPDATED_OF: (arg0: unknown) => LocalizedString /** - * Aktualizacja {0} + * {0} Update */ UPDATE_OF: (arg0: unknown) => LocalizedString /** - * Usunięto ustawienia {0}. + * {0} Removed */ REMOVED_OF: (arg0: unknown) => LocalizedString /** - * Kasowanie {0} + * {0} Deletion */ DELETION_OF: (arg0: unknown) => LocalizedString /** - * Korekta +/- + * Offset */ OFFSET: () => LocalizedString /** - * Mnożnik + * Factor */ FACTOR: () => LocalizedString /** - * Częstotliwość + * Frequency */ FREQ: () => LocalizedString /** - * Wypełnienie + * Duty Cycle */ DUTY_CYCLE: () => LocalizedString /** - * J.m. + * UoM */ UNIT: () => LocalizedString /** - * Wartość początkowa + * Start value */ STARTVALUE: () => LocalizedString /** - * Uwaga! Bądź ostrożny przypisując GPIO do czujnika! + * Warning: be careful when assigning a GPIO! */ WARN_GPIO: () => LocalizedString /** - * Edycja + * Edit */ EDIT: () => LocalizedString /** - * czujnika temperatury + * Temperature Sensor */ TEMP_SENSOR: () => LocalizedString /** - * Czujniki temperatury 1-Wire® + * Temperature Sensors */ TEMP_SENSORS: () => LocalizedString /** - * Wyślij komendę {cmd} + * Write command {cmd} */ WRITE_COMMAND: (arg: { cmd: unknown }) => LocalizedString /** - * Brak połączenia z magistralą EMS. Jeśli ten błąd występuje dłużej niż kilka sekund, sprawdź ustawienia oraz profil płytki interfejsu. + * EMS bus disconnected. If this warning still persists after a few seconds please check settings and board profile */ EMS_BUS_WARNING: () => LocalizedString /** - * Trwa skanowanie magistrali EMS w poszukiwaniu urządzeń... + * Scanning for EMS devices... */ EMS_BUS_SCANNING: () => LocalizedString /** - * {{połączono|połączenie|}} + * {{Connected}} */ CONNECTED: (arg0: string | number | boolean) => LocalizedString /** - * Problem z zapisem na magistralę EMS. Spróbuj wybrać inny "Sposób transmisji (Tx)". + * Tx issues - try a different Tx Mode */ TX_ISSUES: () => LocalizedString /** - * zostało rozłączone + * Disconnected */ DISCONNECTED: () => LocalizedString /** - * Czy na pewno wykonać pełne skanowanie magistrali EMS? + * Are you sure you want to initiate a full device scan of the EMS bus? */ EMS_SCAN: () => LocalizedString /** - * Status magistrali EMS + * EMS Bus Status */ EMS_BUS_STATUS: () => LocalizedString /** - * Aktywne urządzenia i czujniki + * Active Devices & Sensors */ ACTIVE_DEVICES: () => LocalizedString /** - * Urządzenie EMS + * EMS Device */ EMS_DEVICE: () => LocalizedString /** - * Udane + * SUCCESS */ SUCCESS: () => LocalizedString /** - * Nieudane + * FAIL */ FAIL: () => LocalizedString /** - * Jakość + * QUALITY */ QUALITY: () => LocalizedString /** - * Wyszukiwanie nowych urządzeń + * Scan for new devices */ SCAN_DEVICES: () => LocalizedString /** - * Aktywność + * EMS Bus & Activity Status */ EMS_BUS_STATUS_TITLE: () => LocalizedString /** - * Skanuj + * Scan */ SCAN: () => LocalizedString STATUS_NAMES: { /** - * EMS, telegramy odebrane (Rx) + * EMS Telegrams Received (Rx) */ '0': () => LocalizedString /** - * EMS, wysłane telegramy "odczyt" (Tx) + * EMS Reads (Tx) */ '1': () => LocalizedString /** - * EMS, wysłane telegramy "zapis" (Tx) + * EMS Writes (Tx) */ '2': () => LocalizedString /** - * Odczyty czujników temperatury 1-Wire® + * Temperature Sensor Reads */ '3': () => LocalizedString /** - * Odczyty czujników analogowych i cyfrowych + * Analog Sensor Reads */ '4': () => LocalizedString /** - * Publikacje MQTT + * MQTT Publishes */ '5': () => LocalizedString /** - * Wywołania API + * API Calls */ '6': () => LocalizedString /** - * Wpisy w logu systemowym + * Syslog Messages */ '7': () => LocalizedString } /** - * {num} urządze{{ń|nie|nia|nia|ń}} EMS + * {num} Device{{s}} */ NUM_DEVICES: (arg: { num: string | number | boolean }) => LocalizedString /** - * {num} czujni{{ków|k|ki|ki|ków}} temperatury + * {num} Temperature Sensor{{s}} */ NUM_TEMP_SENSORS: (arg: { num: string | number | boolean }) => LocalizedString /** - * {num} czujni{{ków|k|ki(two)|ki|ków}} analogow{{ych|y|e|e|ych}} + * {num} Analog Sensor{{s}} */ NUM_ANALOG_SENSORS: (arg: { num: string | number | boolean }) => LocalizedString /** - * {num} {{dni|dzień|dni|dni|dni}} + * {num} Day{{s}} */ NUM_DAYS: (arg: { num: string | number | boolean }) => LocalizedString /** - * {num} sekun{{d|da|dy|dy|d}} + * {num} Second{{s}} */ NUM_SECONDS: (arg: { num: string | number | boolean }) => LocalizedString /** - * {num} godzi{{n|na|ny|ny|n}} + * {num} Hour{{s}} */ NUM_HOURS: (arg: { num: string | number | boolean }) => LocalizedString /** - * {num} minu{{t|ta|ty|ty|t}} + * {num} Minute{{s}} */ NUM_MINUTES: (arg: { num: string | number | boolean }) => LocalizedString /** - * Ustawienia aplikacji + * Application Settings */ APPLICATION_SETTINGS: () => LocalizedString /** - * Personalizacja + * Customization */ CUSTOMIZATION: () => LocalizedString /** - * Trwa ponowne uruchamianie... + * EMS-ESP is restarting */ APPLICATION_RESTARTING: () => LocalizedString /** - * Profil płytki interfejsu + * Interface Board Profile */ INTERFACE_BOARD_PROFILE: () => LocalizedString /** - * Wybierz z listy wstępną konfigurację płytki interfejsu lub stwórz własną konfigurację. + * Select a pre-configured interface board profile from the list below or choose Custom to configure your own hardware settings */ BOARD_PROFILE_TEXT: () => LocalizedString /** - * Profil płytki + * Board Profile */ BOARD_PROFILE: () => LocalizedString /** - * Przycisk + * Button */ BUTTON: () => LocalizedString /** - * 1-Wire® + * Temperature */ TEMPERATURE: () => LocalizedString /** - * Typ układu ethernetowego (PHY) + * Eth PHY Type */ PHY_TYPE: () => LocalizedString /** - * wyłączony + * disabled */ DISABLED: () => LocalizedString /** - * Sposób transmisji (Tx) + * Tx Mode */ TX_MODE: () => LocalizedString /** - * Opcje podstawowe + * General Options */ GENERAL_OPTIONS: () => LocalizedString /** - * Język encji + * Language (for device entities) */ LANGUAGE_ENTITIES: () => LocalizedString /** - * Wyłącz LED + * Hide LED */ HIDE_LED: () => LocalizedString /** - * Aktywuj dostęp dla konsoli Telnet + * Enable Telnet Console */ ENABLE_TELNET: () => LocalizedString /** - * Aktywuj urządzenia GPIO (czujniki analogowe i cyfrowe oraz wyjścia cyfrowe) + * Enable Analog Sensors */ ENABLE_ANALOG: () => LocalizedString /** - * Konwertuj temperatury do skali Fahrenheita + * Convert temperature values to Fahrenheit */ CONVERT_FAHRENHEIT: () => LocalizedString /** - * Pomiń autoryzację tokenem w wywołaniach API + * Bypass Access Token authorization on API calls */ BYPASS_TOKEN: () => LocalizedString /** - * Tryb pracy "tylko do odczytu" (blokuje wszystkie komendy zapisu na magistralę EMS) + * Enable read-only mode (blocks all outgoing EMS Tx Write commands) */ READONLY: () => LocalizedString /** - * Obniż taktowanie CPU + * Underclock CPU speed */ UNDERCLOCK_CPU: () => LocalizedString /** - * Aktywuj minutnik prysznica + * Enable Shower Timer */ ENABLE_SHOWER_TIMER: () => LocalizedString /** - * Aktywuj alarm prysznica + * Enable Shower Alert */ ENABLE_SHOWER_ALERT: () => LocalizedString /** - * Wyzwalaj po czasie + * Trigger Time */ TRIGGER_TIME: () => LocalizedString /** - * Czas trwania tryśnięcia zimnej wody + * Cold Shot Duration */ COLD_SHOT_DURATION: () => LocalizedString /** - * Opcje formatowania + * Formatting Options */ FORMATTING_OPTIONS: () => LocalizedString /** - * Format wartości binarnych dla pulpitu + * Boolean Format Dashboard */ BOOLEAN_FORMAT_DASHBOARD: () => LocalizedString /** - * Format wartości binarnych dla API/MQTT + * Boolean Format API/MQTT */ BOOLEAN_FORMAT_API: () => LocalizedString /** - * Format wartości numerowanych dla API/MQTT + * Enum Format API/MQTT */ ENUM_FORMAT: () => LocalizedString /** - * indeks + * Index */ INDEX: () => LocalizedString /** - * Aktywuj zasilanie pasożytnicze + * Enable parasite power */ ENABLE_PARASITE: () => LocalizedString /** - * Logowanie + * Logging */ LOGGING: () => LocalizedString /** - * Loguj telegramy EMS w systemie szesnastkowym (hex) + * Log EMS telegrams in hexadecimal */ LOG_HEX: () => LocalizedString /** - * Aktywuj SysLog + * Enable Syslog */ ENABLE_SYSLOG: () => LocalizedString /** - * Poziom logowania + * Log Level */ LOG_LEVEL: () => LocalizedString /** - * Oznaczaj interwały (0=brak) + * Mark Interval */ MARK_INTERVAL: () => LocalizedString /** - * sek. + * seconds */ SECONDS: () => LocalizedString /** - * min. + * minutes */ MINUTES: () => LocalizedString /** - * godz. + * hours */ HOURS: () => LocalizedString /** @@ -1671,336 +1674,339 @@ export type TranslationFunctions = { */ RESTART: () => LocalizedString /** - * Aby zastosować wprowadzone zmiany interfejs EMS-ESP musi zostać zrestartowany. + * EMS-ESP needs to be restarted to apply changed system settings */ RESTART_TEXT: () => LocalizedString /** - * Jesteś pewien, że chcesz zrestartować interfejs EMS-ESP? + * Are you sure you want to restart EMS-ESP? */ RESTART_CONFIRM: () => LocalizedString /** - * KOMENDA + * Command */ COMMAND: () => LocalizedString /** - * Wszystkie personalizacje zostały usunięte. Restartuję... + * All customizations have been removed. Restarting... */ CUSTOMIZATIONS_RESTART: () => LocalizedString /** - * Wybrano za dużo obiektów. Wprowadź zmiany w mniejszych partiach. + * Selected entities exceeded limit. Please save in batches */ CUSTOMIZATIONS_FULL: () => LocalizedString /** - * Personalizacje zostały zapisane. + * Customizations saved */ CUSTOMIZATIONS_SAVED: () => LocalizedString /** - * Wybierz urządzenie EMS, dostosuj opcje lub kliknij by zmienić nazwę encji. + * Select a device and customize the entities options or click to rename */ CUSTOMIZATIONS_HELP_1: () => LocalizedString /** - * oznacz jako ulubioną + * mark as favorite */ CUSTOMIZATIONS_HELP_2: () => LocalizedString /** - * zablokuj możliwość zapisu + * disable write action */ CUSTOMIZATIONS_HELP_3: () => LocalizedString /** - * wyklucz z MQTT i API + * exclude from MQTT and API */ CUSTOMIZATIONS_HELP_4: () => LocalizedString /** - * ukryj na pulpicie + * hide from Dashboard */ CUSTOMIZATIONS_HELP_5: () => LocalizedString /** - * wybierz urządzenie + * Select a device */ SELECT_DEVICE: () => LocalizedString /** - * Zaznacz wszystko jako + * set all */ SET_ALL: () => LocalizedString /** - * Opcje + * Options */ OPTIONS: () => LocalizedString /** - * nazwa + * Name */ NAME: () => LocalizedString /** - * Czy jesteś pewien, że chcesz usunąć wszystkie personalizacje łącznie z ustawieniami dla czujników temperatury 1-Wire® i urządzeń podłączonych do EMS-ESP? + * Are you sure you want remove all customizations including the custom settings of the Temperature and Analog sensors? */ CUSTOMIZATIONS_RESET: () => LocalizedString /** - * Encje urządzenia + * Device Entities */ DEVICE_ENTITIES: () => LocalizedString /** - * Personalizacje użytkownika + * User Customization */ USER_CUSTOMIZATION: () => LocalizedString /** - * Informacje dotyczące wsparcia + * Support Information */ SUPPORT_INFORMATION: () => LocalizedString /** - * Kliknij tu + * Click Here */ CLICK_HERE: () => LocalizedString /** - * W celu znalezienia szczegółowych instrukcji jak skonfigurować EMS-ESP skorzystaj z wiki + * Visit the online wiki to get instructions on how to configure EMS-ESP */ HELP_INFORMATION_1: () => LocalizedString /** - * W celu komunikacji na żywo ze społecznością skorzystaj z serwera Discord + * For live community chat join our Discord server */ HELP_INFORMATION_2: () => LocalizedString /** - * Aby zaproponować nową funkcjonalność lub zgłosić problem + * To request a feature or report a bug */ HELP_INFORMATION_3: () => LocalizedString /** - * zgłaszając problem, nie zapomnij dołączyć informacji o swoim systemie + * remember to download and attach your system information for a faster response when reporting an issue */ HELP_INFORMATION_4: () => LocalizedString /** - * EMS-ESP jest darmowym projektem typu open-source. Aby go wesprzeć, rozważ przyznanie nam gwiazdki na Github! + * EMS-ESP is a free and open-source project. Please support its future development by giving it a star on Github! */ HELP_INFORMATION_5: () => LocalizedString /** - * Pobierz informacje + * Support Info */ SUPPORT_INFO: () => LocalizedString /** - * Wysyłanie {0} + * {0} Upload */ UPLOAD_OF: (arg0: unknown) => LocalizedString /** - * Wysyłanie + * Upload */ UPLOAD: () => LocalizedString /** - * {{P|p|P}}obier{{anie|z|z}} + * {{Download|download|}} */ DOWNLOAD: (arg0: string | number | boolean) => LocalizedString /** - * zostało przerwane! + * aborted */ ABORTED: () => LocalizedString /** - * nie powiodło się! + * failed */ FAILED: () => LocalizedString /** - * powiodło się. + * successful */ SUCCESSFUL: () => LocalizedString /** - * {{S|s||s}}yste{{m|mu||mowy}} + * {{System}} */ SYSTEM: (arg0: string | number | boolean) => LocalizedString /** - * Log {0} + * {0} Log */ LOG_OF: (arg0: unknown) => LocalizedString /** - * Status {0} + * {0} Status */ STATUS_OF: (arg0: unknown) => LocalizedString /** - * Przesyłanie plików + * Upload/Download */ UPLOAD_DOWNLOAD: () => LocalizedString /** - * Obecnie zainstalowana wersja to: + * You are currently running version */ SYSTEM_VERSION_RUNNING: () => LocalizedString + /** + * to apply the new firmware + */ SYSTEM_APPLY_FIRMWARE: () => LocalizedString /** - * Zamknij + * Close */ CLOSE: () => LocalizedString /** - * Aby zaktualizować firmware skorzystaj z funkcji + * Use */ USE: () => LocalizedString /** - * Ustawienia fabryczne + * Factory Reset */ FACTORY_RESET: () => LocalizedString /** - * Interfejs EMS-ESP został przywrócony do ustawień fabrycznych i zostanie teraz ponownie uruchomiony. + * Device has been factory reset and will now restart */ SYSTEM_FACTORY_TEXT: () => LocalizedString /** - * Czy jesteś pewien, że chcesz przywrócić ustawienia fabryczne interfejsu EMS-ESP? + * Are you sure you want to reset the device to its factory defaults? */ SYSTEM_FACTORY_TEXT_DIALOG: () => LocalizedString /** - * Sprawd{{ź|zanie|}} wersj{{ę|i|}} + * {{Version Check}} */ VERSION_CHECK: (arg0: string | number | boolean) => LocalizedString /** - * Najnowsza + * The latest */ THE_LATEST: () => LocalizedString /** - * oficjalna + * official */ OFFICIAL: () => LocalizedString /** - * testowa + * development */ DEVELOPMENT: () => LocalizedString /** - * wersja to + * version is */ VERSION_IS: () => LocalizedString /** - * lista zmian + * release notes */ RELEASE_NOTES: () => LocalizedString /** - * Wersja EMS-ESP + * EMS-ESP Version */ EMS_ESP_VER: () => LocalizedString /** - * Urządzenie (platforma / SDK) + * Device (Platform / SDK) */ PLATFORM: () => LocalizedString /** - * Czas działania systemu + * System Uptime */ UPTIME: () => LocalizedString /** - * Taktowanie CPU + * CPU Frequency */ CPU_FREQ: () => LocalizedString /** - * HEAP (wolne / maksymalny przydział) + * Heap (Free / Max Alloc) */ HEAP: () => LocalizedString /** - * PSRAM (rozmiar / wolne) + * PSRAM (Size / Free) */ PSRAM: () => LocalizedString /** - * Układ pamięci flash (rozmiar / taktowanie) + * Flash Chip (Size / Speed) */ FLASH: () => LocalizedString /** - * Aplikacja (wykorzystane / wolne) + * Application (Used / Free) */ APPSIZE: () => LocalizedString /** - * System plików (wykorzystane / wolne) + * File System (Used / Free) */ FILESYSTEM: () => LocalizedString /** - * Rozmiar bufora + * Buffer Size */ BUFFER_SIZE: () => LocalizedString /** - * Kompaktowy + * Compact */ COMPACT: () => LocalizedString /** - * Aktywuj aktualizacje OTA + * Enable OTA Updates */ ENABLE_OTA: () => LocalizedString /** - * Pobierz personalizacje + * Download the entity customizations */ DOWNLOAD_CUSTOMIZATION_TEXT: () => LocalizedString /** - * Pobierz ustawienia aplikacji. Uważaj jeśli udostępniasz plik z ustawieniami, ponieważ zawiera on hasła oraz inne wrażliwe informacje! + * Download the application settings. Be careful when sharing your settings as this file contains passwords and other sensitive system information */ DOWNLOAD_SETTINGS_TEXT: () => LocalizedString /** - * Wyślij firmware (.bin), ustawienia lub personalizacje (.json) + * Upload a new firmware (.bin) file, settings or customizations (.json) file below, for optional validation upload (.md5) first */ UPLOAD_TEXT: () => LocalizedString /** - * Wysłano + * Uploading */ UPLOADING: () => LocalizedString /** - * Przeciągnij tutaj plik lub kliknij + * Drop file or click here */ UPLOAD_DROP_TEXT: () => LocalizedString /** - * Nieoczekiwany błąd, spróbuj ponownie! + * Unexpected Error, please try again */ ERROR: () => LocalizedString /** - * Ustaw czas + * Time set */ TIME_SET: () => LocalizedString /** - * Zarządzanie użytkownikami + * Manage Users */ MANAGE_USERS: () => LocalizedString /** - * {{Admin?|Uprawnienia administratora|}} + * {{is Admin}} */ IS_ADMIN: (arg0: string | number | boolean) => LocalizedString /** - * Przynajmniej jeden użytkownik musi mieć uprawnienia administratora! + * You must have at least one admin user configured */ USER_WARNING: () => LocalizedString /** - * Doda{{j|wanie|C}} + * {{Add}} */ ADD: (arg0: string | number | boolean) => LocalizedString /** - * Token dostępu dla użytkownika + * Access Token for */ ACCESS_TOKEN_FOR: () => LocalizedString /** - * Token jest używany w wywołaniach REST API wymagających autoryzacji. Można go przekazywać bezpośrednio lub przez URL. + * The token below is used with REST API calls that require authorization. It can be passed either as a Bearer token in the Authorization header or in the access_token URL query parameter. */ ACCESS_TOKEN_TEXT: () => LocalizedString /** - * Generowanie tokenu + * Generating token */ GENERATING_TOKEN: () => LocalizedString /** - * {{Użytkownik|użytkownika|}} + * {{User}} */ USER: (arg0: string | number | boolean) => LocalizedString /** - * Edycja + * Modify */ MODIFY: () => LocalizedString /** - * Hasło "su" (super-użytkownika) jest wykorzystywane do autoryzacji tokenów oraz dostępu do konsoli z uprawnieniami administratora. + * The su (super user) password is used to sign authentication tokens and also enable admin privileges within the Console. */ SU_TEXT: () => LocalizedString /** - * nieaktywowany + * Not enabled */ NOT_ENABLED: () => LocalizedString /** - * Błędy {0} + * {0} Errors */ ERRORS_OF: (arg0: unknown) => LocalizedString /** - * Powód rozłączenia + * Disconnect Reason */ DISCONNECT_REASON: () => LocalizedString /** - * Aktywuj MQTT + * Enable MQTT */ ENABLE_MQTT: () => LocalizedString /** - * opcjonalny + * Optional */ OPTIONAL: () => LocalizedString /** - * Formatowanie + * Formatting */ FORMATTING: () => LocalizedString /** @@ -2008,243 +2014,243 @@ export type TranslationFunctions = { */ FORMAT: () => LocalizedString /** - * zagnieżdżone w pojedynczym temacie + * Nested in a single topic */ MQTT_NEST_1: () => LocalizedString /** - * jako indywidualne tematy + * As individual topics */ MQTT_NEST_2: () => LocalizedString /** - * Publikuj odpowiedzi na komendy w temacie "response" + * Publish command output to a `response` topic */ MQTT_RESPONSE: () => LocalizedString /** - * Publikuj pojedyńcze wartości po zmianie + * Publish single value topics on change */ MQTT_PUBLISH_TEXT_1: () => LocalizedString /** - * Publikuj w temacie "command" (ioBroker) + * Publish to command topics (ioBroker) */ MQTT_PUBLISH_TEXT_2: () => LocalizedString /** - * Włącz opcję MQTT Discovery (Home Assistant, Domoticz) + * Enable MQTT Discovery (Home Assistant, Domoticz) */ MQTT_PUBLISH_TEXT_3: () => LocalizedString /** - * Prefiks do tematów "discovery" + * Prefix for the Discovery topics */ MQTT_PUBLISH_TEXT_4: () => LocalizedString /** - * Interwał publikowania + * Publish Intervals */ MQTT_PUBLISH_INTERVALS: () => LocalizedString /** - * Kotły i pompy ciepła + * Boilers and Heat Pumps */ MQTT_INT_BOILER: () => LocalizedString /** - * Termostaty + * Thermostats */ MQTT_INT_THERMOSTATS: () => LocalizedString /** - * Panele solarne + * Solar Modules */ MQTT_INT_SOLAR: () => LocalizedString /** - * Mieszacze + * Mixer Modules */ MQTT_INT_MIXER: () => LocalizedString /** - * Kolejka MQTT + * MQTT Queue */ MQTT_QUEUE: () => LocalizedString /** - * Domyślnie + * Default */ DEFAULT: () => LocalizedString /** - * Ustawiaj "Clean session" + * Set Clean Session */ MQTT_CLEAN_SESSION: () => LocalizedString /** - * Ustawiaj flagę "Retain" + * Always set Retain flag */ MQTT_RETAIN_FLAG: () => LocalizedString /** - * nieaktywny + * Inactive */ INACTIVE: () => LocalizedString /** - * aktywny + * Active */ ACTIVE: () => LocalizedString /** - * nieznany + * Unknown */ UNKNOWN: () => LocalizedString /** - * {{Ustaw zegar|Ustawianie zegara|}} + * {{Set Time}} */ SET_TIME: (arg0: string | number | boolean) => LocalizedString /** - * Wprowadź aktualną datę i godzinę + * Enter local date and time below to set the time */ SET_TIME_TEXT: () => LocalizedString /** - * Czas lokalny + * Local Time */ LOCAL_TIME: () => LocalizedString /** - * Czas UTC + * UTC Time */ UTC_TIME: () => LocalizedString /** - * Aktywuj NTP (data i godzina będą automatycznie synchronizowane z poniższym serwerem czasu) + * Enable NTP */ ENABLE_NTP: () => LocalizedString /** - * Serwer NTP + * NTP Server */ NTP_SERVER: () => LocalizedString /** - * Strefa czasowa + * Time Zone */ TIME_ZONE: () => LocalizedString /** - * {{Punkt|punktu|}} {{dostępowy|dostępowego|}} + * {{Access Point}} */ ACCESS_POINT: (arg0: string | number | boolean) => LocalizedString /** - * Aktywuj punkt dostępowy (Access Point) + * Enable Access Point */ AP_PROVIDE: () => LocalizedString /** - * zawsze + * always */ AP_PROVIDE_TEXT_1: () => LocalizedString /** - * gdy połączenie WiFi jest rozłączone + * when WiFi is disconnected */ AP_PROVIDE_TEXT_2: () => LocalizedString /** - * nigdy + * never */ AP_PROVIDE_TEXT_3: () => LocalizedString /** - * Preferowany kanał + * Preferred Channel */ AP_PREFERRED_CHANNEL: () => LocalizedString /** - * Ukryj SSID + * Hide SSID */ AP_HIDE_SSID: () => LocalizedString /** - * Liczba klientów + * AP Clients */ AP_CLIENTS: () => LocalizedString /** - * Maksymalna liczba klientów + * Max Clients */ AP_MAX_CLIENTS: () => LocalizedString /** - * Lokalny adres IP + * Local IP */ AP_LOCAL_IP: () => LocalizedString /** - * Skanuj sieci WiFi + * Scan WiFi Networks */ NETWORK_SCAN: () => LocalizedString /** - * uśpiony + * Idle */ IDLE: () => LocalizedString /** - * zostało utracone. + * Lost */ LOST: () => LocalizedString /** - * Skanuję + * Scanning */ SCANNING: () => LocalizedString /** - * Skanuj ponownie + * Scan again */ SCAN_AGAIN: () => LocalizedString /** - * Skaner sieci WiFi + * Network Scanner */ NETWORK_SCANNER: () => LocalizedString /** - * Brak sieci WiFi w zasięgu + * No WiFi networks found */ NETWORK_NO_WIFI: () => LocalizedString /** - * pozostaw puste aby wyłączyć WiFi + * leave blank to disable WiFi */ NETWORK_BLANK_SSID: () => LocalizedString /** - * Moc nadawania + * Tx Power */ TX_POWER: () => LocalizedString /** - * Nazwa w sieci + * Hostname */ HOSTNAME: () => LocalizedString /** - * Wyłącz tryb usypiania WiFi + * Disable WiFi Sleep Mode */ NETWORK_DISABLE_SLEEP: () => LocalizedString /** - * Używaj zmniejszonej przepustowości WiFi + * Use Lower WiFi Bandwidth */ NETWORK_LOW_BAND: () => LocalizedString /** - * Włącz wsparcie dla mDNS + * Enable mDNS Service */ NETWORK_USE_DNS: () => LocalizedString /** - * Włącz wsparcie dla IPv6 + * Enable IPv6 support */ NETWORK_ENABLE_IPV6: () => LocalizedString /** - * Użyj stałego adresu IP + * Use Fixed IP address */ NETWORK_FIXED_IP: () => LocalizedString /** - * Brama + * Getaway */ NETWORK_GATEWAY: () => LocalizedString /** - * Maska podsieci + * Subnet Mask */ NETWORK_SUBNET: () => LocalizedString /** - * Serwery DNS + * DNS Servers */ NETWORK_DNS: () => LocalizedString /** - * Adres {0} + * {0} Address */ ADDRESS_OF: (arg0: unknown) => LocalizedString /** - * Administrator + * Admin */ ADMIN: () => LocalizedString /** - * Gość + * Guest */ GUEST: () => LocalizedString /** - * Nowy + * New */ NEW: () => LocalizedString /** - * Zmień nazwę + * Rename */ RENAME: () => LocalizedString /** - * encji + * Entity */ ENTITY: () => LocalizedString } diff --git a/interface/src/i18n/i18n-util.ts b/interface/src/i18n/i18n-util.ts index 50b45e86e..bda0766fc 100644 --- a/interface/src/i18n/i18n-util.ts +++ b/interface/src/i18n/i18n-util.ts @@ -7,7 +7,7 @@ import type { LocaleTranslationFunctions, TranslateByString } from 'typesafe-i18 import { detectLocale as detectLocaleFn } from 'typesafe-i18n/detectors' import type { Formatters, Locales, Translations, TranslationFunctions } from './i18n-types' -export const baseLocale: Locales = 'pl' +export const baseLocale: Locales = 'en' export const locales: Locales[] = [ 'de',