From 43d8ee586f254b463ae20d7458bc3714138518a5 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Tue, 17 Jan 2023 16:43:16 +0100 Subject: [PATCH 1/4] Upgrade cmake to 3.12 Prior to this version, we cannot use target_link_libraries() with OBJECT libraries. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 116b8a55d2..d168aa746e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ # Author: laurent THOMAS, Lionel GAUTHIER -cmake_minimum_required (VERSION 3.5) +cmake_minimum_required (VERSION 3.12) project (OpenAirInterface LANGUAGES C CXX) ######################################################### From 2debc770ec7e5b0a3a60f1d4fd7c886796e14d65 Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Fri, 17 Feb 2023 23:10:41 +0100 Subject: [PATCH 2/4] add repo for ubuntu 18 to install cmake >= 3.12 --- cmake_targets/tools/build_helper | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index 5af626b182..b45579f525 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -523,7 +523,15 @@ check_install_soapy () { install_soapy_from_source #fi install_soapy_iris_from_source +} +# for ubuntu 18 we need a special repository to install cmake >= 3.12 +add_cmake_repo () { + wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null + echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null + $SUDO apt-get update + $SUDO rm /usr/share/keyrings/kitware-archive-keyring.gpg + $SUDO apt-get install kitware-archive-keyring } check_install_additional_tools (){ @@ -578,6 +586,7 @@ check_install_oai_software() { $SUDO apt install -y software-properties-common case "$(get_distribution_release)" in "ubuntu18.04") + add_cmake_repo specific_packages="libgcrypt11-dev guile-2.0-dev" ;; "ubuntu20.04") From c6d880329d40618517a8b969687a52824fa3286a Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Tue, 21 Feb 2023 12:07:28 +0100 Subject: [PATCH 3/4] Install cmake >= 3.12 on Ubuntu 18 fix, link to repo added --- cmake_targets/tools/build_helper | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index b45579f525..4c951890d9 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -525,13 +525,14 @@ check_install_soapy () { install_soapy_iris_from_source } -# for ubuntu 18 we need a special repository to install cmake >= 3.12 +# for ubuntu 18 we need a special repository (https://apt.kitware.com/) to install cmake >= 3.12 add_cmake_repo () { - wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null - echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null - $SUDO apt-get update + $SUDO $INSTALLER -y install wget + wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | $SUDO tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null + echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic main' | $SUDO tee /etc/apt/sources.list.d/kitware.list >/dev/null + $SUDO $INSTALLER -y update $SUDO rm /usr/share/keyrings/kitware-archive-keyring.gpg - $SUDO apt-get install kitware-archive-keyring + $SUDO $INSTALLER -y install kitware-archive-keyring } check_install_additional_tools (){ From 9a0dd7c1b3a8bf5c320ecfc2627af4321437c911 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Fri, 13 Jan 2023 13:42:13 +0100 Subject: [PATCH 4/4] Update for webserver; cleanup in CMakeLists.txt - Add oai header to typescript and html sources, add support to commands requiring two parameters, add more helpfiles - Fix help bug (html comments not removed from tooltips) - Fix backend build problem and 2 warnings - Correctly initialize variables in nr_phy_scope.c - Use add_subdirectory for websrv cmake build - correctly link to asn1_lte_rrc and asn1_nr_rrc - fix bug: correctly recognize npm packet - only configure targets if explicitly asked for by users - use add_subdirectory - Use add_subdirectory for telnet cmake build - Minor cleanup in build_oai - Move softscope build in dedicated CMakeLists, and comment out DEBUG_MAC_INTERFACE option (not found in code) - Make DEBUG_ASN1 a cmake only option ( no C macro) as it's not used as a C macro in the code, and develop align --- CMakeLists.txt | 120 +- cmake_targets/build_oai | 51 +- cmake_targets/macros.cmake | 6 +- common/utils/CMakeLists.txt | 9 + common/utils/telnetsrv/CMakeLists.txt | 61 + .../utils/telnetsrv/telnetsrv_CMakeLists.txt | 37 - common/utils/websrv/CMakeLists.txt | 93 + common/utils/websrv/DOC/logscfg.png | Bin 0 -> 71969 bytes common/utils/websrv/DOC/main.png | Bin 0 -> 70222 bytes common/utils/websrv/DOC/scope.png | Bin 0 -> 158034 bytes common/utils/websrv/DOC/websrvuse.md | 156 +- .../utils/websrv/frontend/package-lock.json | 5453 ++++++++++------- common/utils/websrv/frontend/package.json | 5 +- .../frontend/src/app/api/commands.api.ts | 60 +- .../websrv/frontend/src/app/api/help.api.ts | 38 +- .../websrv/frontend/src/app/api/info.api.ts | 47 + .../websrv/frontend/src/app/api/scope.api.ts | 39 +- .../frontend/src/app/app-routing.module.ts | 31 + .../frontend/src/app/app.component.html | 39 +- .../websrv/frontend/src/app/app.module.ts | 39 +- .../commands/commands.component.html | 66 +- .../components/commands/commands.component.ts | 77 +- .../app/components/info/info.component.html | 58 + .../app/components/info/info.component.scss | 15 + .../src/app/components/info/info.component.ts | 76 + .../question/question.component.html | 53 +- .../components/question/question.component.ts | 39 +- .../app/components/scope/scope.component.html | 34 + .../app/components/scope/scope.component.ts | 32 + .../frontend/src/app/controls/cmd.control.ts | 65 +- .../frontend/src/app/controls/info.control.ts | 35 +- .../src/app/controls/module.control.ts | 32 + .../src/app/controls/param.control.ts | 35 +- .../frontend/src/app/controls/row.control.ts | 35 +- .../frontend/src/app/controls/var.control.ts | 35 +- .../src/app/interceptors/error.interceptor.ts | 34 +- .../src/app/services/download.service.ts | 34 +- .../src/app/services/websocket.service.ts | 31 + .../utils/websrv/frontend/src/commondefs.ts | 51 + common/utils/websrv/frontend/src/main.ts | 32 + .../cmd_channelmod_show_channelid.html | 33 + .../cmd_channelmod_show_current.html | 33 + .../helpfiles/cmd_channelmod_show_predef.html | 33 + .../helpfiles/question_setdistance_input.html | 37 + .../question_show_channelid_input.html | 34 + .../rfsimu_show_models_algorithm.html | 33 + .../rfsimu_show_models_model_index.html | 33 + .../rfsimu_show_models_model_name.html | 33 + .../rfsimu_show_models_module_owner.html | 33 + .../helpfiles/scope_control_dataack.html | 33 + .../softmodem_show_threadsched_nice.html | 33 + ...ftmodem_show_threadsched_oai_priority.html | 33 + .../softmodem_show_threadsched_priority.html | 33 + ...ftmodem_show_threadsched_sched_policy.html | 33 + common/utils/websrv/websrv.c | 97 +- common/utils/websrv/websrv_CMakeLists.txt | 90 - common/utils/websrv/websrv_noforms.h | 2 +- doc/CMakeLists.txt | 2 +- openair1/CMakeLists.txt | 1 + openair1/PHY/CMakeLists.txt | 6 + openair1/PHY/TOOLS/CMakeLists.txt | 50 + openair1/PHY/TOOLS/nr_phy_scope.c | 16 +- openair1/SIMULATION/TOOLS/random_channel.c | 2 +- radio/rfsimulator/simulator.c | 2 +- 64 files changed, 5159 insertions(+), 2729 deletions(-) create mode 100644 common/utils/telnetsrv/CMakeLists.txt delete mode 100644 common/utils/telnetsrv/telnetsrv_CMakeLists.txt create mode 100644 common/utils/websrv/CMakeLists.txt create mode 100644 common/utils/websrv/DOC/logscfg.png create mode 100644 common/utils/websrv/DOC/main.png create mode 100644 common/utils/websrv/DOC/scope.png create mode 100644 common/utils/websrv/frontend/src/app/api/info.api.ts create mode 100644 common/utils/websrv/frontend/src/app/components/info/info.component.html create mode 100644 common/utils/websrv/frontend/src/app/components/info/info.component.scss create mode 100644 common/utils/websrv/frontend/src/app/components/info/info.component.ts create mode 100644 common/utils/websrv/frontend/src/commondefs.ts create mode 100644 common/utils/websrv/helpfiles/question_setdistance_input.html create mode 100644 common/utils/websrv/helpfiles/question_show_channelid_input.html delete mode 100644 common/utils/websrv/websrv_CMakeLists.txt create mode 100644 openair1/CMakeLists.txt create mode 100644 openair1/PHY/CMakeLists.txt create mode 100644 openair1/PHY/TOOLS/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 7da5bbc5e5..4dea0a0d54 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -163,10 +163,10 @@ else() endif() eval_boolean(AUTODETECT_AVX512 DEFINED CPUFLAGS AND CPUFLAGS MATCHES "avx512") -add_boolean_option(AVX512 ${AUTODETECT_AVX512} "Whether AVX512 intrinsics is available on the host processor") +add_boolean_option(AVX512 ${AUTODETECT_AVX512} "Whether AVX512 intrinsics is available on the host processor" ON) eval_boolean(AUTODETECT_AVX2 DEFINED CPUFLAGS AND CPUFLAGS MATCHES "avx2") -add_boolean_option(AVX2 ${AUTODETECT_AVX2} "Whether AVX2 intrinsics is available on the host processor") +add_boolean_option(AVX2 ${AUTODETECT_AVX2} "Whether AVX2 intrinsics is available on the host processor" ON) if(${CPUARCH} STREQUAL "x86_64" AND DEFINED CPUFLAGS) # The following intrinsics are assumed to be available on any x86 system @@ -208,7 +208,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${C_FLAGS_PROCESSOR} ${commonOpts} -std=c++11") -add_boolean_option(SANITIZE_ADDRESS False "enable the address sanitizer (ASan)") +add_boolean_option(SANITIZE_ADDRESS False "enable the address sanitizer (ASan)" ON) if (SANITIZE_ADDRESS) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fno-common") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fno-common") @@ -230,7 +230,7 @@ if (SANITIZE_ADDRESS) # wrong in the pthread library, or something subtly wrong in this CMakeLists.txt. Use Ubuntu 20.04 instead. endif () -add_boolean_option(SANITIZE_UNDEFINED False "enable the undefined behavior sanitizer (UBSan)") +add_boolean_option(SANITIZE_UNDEFINED False "enable the undefined behavior sanitizer (UBSan)" ON) if (SANITIZE_UNDEFINED) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined -fno-sanitize-recover=all") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined -fno-sanitize-recover=all") @@ -292,12 +292,12 @@ add_definitions("-DPACKAGE_BUGREPORT=\"openair4g-devel@lists.eurecom.fr\"") # Debug related options ######################################### -add_boolean_option(DEBUG_ASN1 False "ASN1 coder/decoder Debug") -add_boolean_option(DEBUG_MAC_INTERFACE False "print MAC-RLC PDU exchange to stdout") # if true, make sure that global and PDCP log levels are trace -add_boolean_option(T_TRACER True "Activate the T tracer, a debugging/monitoring framework" ) -add_boolean_option(UE_AUTOTEST_TRACE False "Activate UE autotest specific logs") -add_boolean_option(UE_DEBUG_TRACE False "Activate UE debug trace") -add_boolean_option(UE_TIMING_TRACE False "Activate UE timing trace") +add_boolean_option(DEBUG_ASN1 False "ASN1 coder/decoder Debug" OFF) +#add_boolean_option(DEBUG_MAC_INTERFACE False "print MAC-RLC PDU exchange to stdout") # if true, make sure that global and PDCP log levels are trace, not found in code, commented out, to be removed +add_boolean_option(T_TRACER True "Activate the T tracer, a debugging/monitoring framework" ON) +add_boolean_option(UE_AUTOTEST_TRACE False "Activate UE autotest specific logs" ON) +add_boolean_option(UE_DEBUG_TRACE False "Activate UE debug trace" ON) +add_boolean_option(UE_TIMING_TRACE False "Activate UE timing trace" ON) set (OCP_ITTI ${OPENAIR_DIR}/common/utils/ocp_itti) add_library(ITTI @@ -595,7 +595,7 @@ target_link_libraries(benetel_5g PRIVATE asn1_nr_rrc asn1_lte_rrc) # LDPC offload library ########################################################## -add_boolean_option(ENABLE_LDPC_T1 OFF "Build support for LDPC Offload to T1 library") +add_boolean_option(ENABLE_LDPC_T1 OFF "Build support for LDPC Offload to T1 library" OFF) if (ENABLE_LDPC_T1) pkg_check_modules(LIBDPDK_T1 REQUIRED libdpdk=20.05.0) find_library(T1 NAMES rte_pmd_hpac_sdfec_pmd REQUIRED) @@ -616,53 +616,52 @@ include_directories ("${OPENAIR_DIR}/radio/COMMON") # ???!!! TO BE DOCUMENTED OPTIONS !!!??? ############################################################## -add_boolean_option(OAI_NW_DRIVER_TYPE_ETHERNET False "????") -add_boolean_option(NAS_NETLINK False "useless ??? Must be True to compile nasmesh driver without rtai ????") -add_boolean_option(OAI_NW_DRIVER_USE_NETLINK True "????") +add_boolean_option(OAI_NW_DRIVER_TYPE_ETHERNET False "????" ON) +add_boolean_option(NAS_NETLINK False "useless ??? Must be True to compile nasmesh driver without rtai ????" ON) +add_boolean_option(OAI_NW_DRIVER_USE_NETLINK True "????" ON) -add_boolean_option(UE_EXPANSION False "enable UE_EXPANSION with max 256 UE") -add_boolean_option(PHY_TX_THREAD False "enable UE_EXPANSION with max 256 UE") -add_boolean_option(PRE_SCD_THREAD False "enable UE_EXPANSION with max 256 UE") -add_boolean_option(UESIM_EXPANSION False "enable UESIM_EXPANSION with max 256 UE") +add_boolean_option(UE_EXPANSION False "enable UE_EXPANSION with max 256 UE" ON) +add_boolean_option(PHY_TX_THREAD False "enable UE_EXPANSION with max 256 UE" ON) +add_boolean_option(PRE_SCD_THREAD False "enable UE_EXPANSION with max 256 UE" ON) +add_boolean_option(UESIM_EXPANSION False "enable UESIM_EXPANSION with max 256 UE" ON) ######################## # Include order ########################## -add_boolean_option(ENB_MODE True "Swap the include directories between openair2 and openair3" ) +add_boolean_option(ENB_MODE True "Swap the include directories between openair2 and openair3" ON) ########################## # SCHEDULING/REAL-TIME/PERF options ########################## -add_boolean_option(ENABLE_USE_CPU_EXECUTION_TIME False "Add data in vcd traces: disable it if perf issues") -add_boolean_option(ENABLE_VCD False "always true now, time measurements of proc calls and var displays") -add_boolean_option(ENABLE_VCD_FIFO False "time measurements of proc calls and var displays sent to FIFO (one more thread)") -add_boolean_option(LINUX False "used in weird memcpy() in pdcp.c ???") -add_boolean_option(LINUX_LIST False "used only in lists.c: either use OAI implementation of lists or Linux one (should be True, but it is False") +add_boolean_option(ENABLE_USE_CPU_EXECUTION_TIME False "Add data in vcd traces: disable it if perf issues" ON) +add_boolean_option(ENABLE_VCD False "always true now, time measurements of proc calls and var displays" ON) +add_boolean_option(ENABLE_VCD_FIFO False "time measurements of proc calls and var displays sent to FIFO (one more thread)" ON) +add_boolean_option(LINUX False "used in weird memcpy() in pdcp.c ???" ON) +add_boolean_option(LINUX_LIST False "used only in lists.c: either use OAI implementation of lists or Linux one (should be ON, but it is False" ON) ########################## # PHY options ########################## -add_boolean_option(LOCALIZATION False "???") -add_integer_option(MAX_NUM_CCs 1 "????") -add_boolean_option(SMBV False "Rohde&Schwarz SMBV100A vector signal generator") -add_boolean_option(DEBUG_PHY False "Enable PHY layer debugging options") -add_boolean_option(DEBUG_PHY_PROC False "Enable debugging of PHY layer procedures") -add_boolean_option(DEBUG_DLSCH False "Enable debugging of DLSCH physical layer channel") -add_boolean_option(MEX False "Enabling compilation with mex") +add_boolean_option(LOCALIZATION False "???" ON) +add_integer_option(MAX_NUM_CCs 1 "????" ON) +add_boolean_option(SMBV False "Rohde&Schwarz SMBV100A vector signal generator" ON) +add_boolean_option(DEBUG_PHY False "Enable PHY layer debugging options" ON) +add_boolean_option(DEBUG_PHY_PROC False "Enable debugging of PHY layer procedures" ON) +add_boolean_option(DEBUG_DLSCH False "Enable debugging of DLSCH physical layer channel" ON) +add_boolean_option(MEX False "Enabling compilation with mex" ON) ########################## # NAS LAYER OPTIONS ########################## -add_boolean_option(ENABLE_NAS_UE_LOGGING True "????") -add_boolean_option(NAS_BUILT_IN_UE True "UE NAS layer present in this executable") -add_boolean_option(NAS_UE True "NAS UE INSTANCE (<> NAS_MME)") +add_boolean_option(ENABLE_NAS_UE_LOGGING True "????" ON) +add_boolean_option(NAS_BUILT_IN_UE True "UE NAS layer present in this executable" ON) +add_boolean_option(NAS_UE True "NAS UE INSTANCE (<> NAS_MME)" ON) ########################## # ACCESS STRATUM LAYER2 OPTIONS ########################## -add_boolean_option(JUMBO_FRAME True "ENABLE LARGE SDU in ACCESS STRATUM (larger than common MTU)") - +add_boolean_option(JUMBO_FRAME True "ENABLE LARGE SDU in ACCESS STRATUM (larger than common MTU)" ON) ########################## # PDCP LAYER OPTIONS @@ -673,7 +672,7 @@ add_boolean_option(JUMBO_FRAME True "ENABLE LARGE SDU in ACCESS STR ########################## # RRC LAYER OPTIONS ########################## -add_boolean_option(RRC_DEFAULT_RAB_IS_AM True "set the RLC mode to AM for the default bearer, otherwise it is UM.") +add_boolean_option(RRC_DEFAULT_RAB_IS_AM True "set the RLC mode to AM for the default bearer, otherwise it is UM." ON) ########################## @@ -1008,7 +1007,7 @@ add_dependencies(ldpc_cl nrLDPC_decoder_kernels_CL) # Base CUDA setting ############################################## -add_boolean_option(BUILD_CUDA False "Build support for CUDA") +add_boolean_option(BUILD_CUDA False "Build support for CUDA" OFF) if (ENABLE_LDPC_CUDA) find_package(CUDA REQUIRED) SET(CUDA_NVCC_FLAG "${CUDA_NVCC_FLAGS};-arch=sm_60;") @@ -2060,38 +2059,6 @@ include_directories("${NFAPI_DIR}/pnf_sim/inc") list(APPEND ATLAS_LIBRARIES lapack lapacke) -include_directories ("/usr/include/X11") -set(XFORMS_SOURCE - ${OPENAIR1_DIR}/PHY/TOOLS/lte_phy_scope.c - ) -set(XFORMS_ENB_SOURCE - ${OPENAIR1_DIR}/PHY/TOOLS/lte_enb_scope.c - ) -set(XFORMS_UE_SOURCE - ${OPENAIR1_DIR}/PHY/TOOLS/lte_ue_scope.c - ) -set(XFORMS_SOURCE_NR - ${OPENAIR1_DIR}/PHY/TOOLS/nr_phy_scope.c - ) -set(XFORMS_SOURCE_SOFTMODEM - ${OPENAIR_DIR}/executables/stats.c - ) -set(XFORMSINTERFACE_SOURCE - ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c - ) -set(XFORMS_LIBRARIES "forms") - -add_library(enbscope MODULE ${XFORMS_SOURCE} ${XFORMS_SOURCE_SOFTMODEM} ${XFORMS_ENB_SOURCE}) -add_library(uescope MODULE ${XFORMS_SOURCE} ${XFORMS_SOURCE_SOFTMODEM} ${XFORMS_UE_SOURCE}) -target_link_libraries(enbscope PRIVATE ${XFORMS_LIBRARIES}) -target_link_libraries(enbscope PRIVATE asn1_nr_rrc asn1_lte_rrc) -target_link_libraries(uescope PRIVATE ${XFORMS_LIBRARIES}) -target_link_libraries(uescope PRIVATE asn1_nr_rrc asn1_lte_rrc) - -add_library(nrscope MODULE ${XFORMS_SOURCE_NR}) -target_link_libraries(nrscope PRIVATE ${XFORMS_LIBRARIES}) -target_link_libraries(nrscope PRIVATE asn1_nr_rrc asn1_lte_rrc) - add_library(rfsimulator MODULE ${OPENAIR_DIR}/radio/rfsimulator/simulator.c @@ -2201,7 +2168,7 @@ add_executable(lte-softmodem ${PHY_INTERFACE_DIR}/queue_t.c ${OPENAIR_DIR}/common/utils/lte/ue_power.c ${OPENAIR_DIR}/common/utils/lte/prach_utils.c - ${XFORMSINTERFACE_SOURCE} + ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c ${T_SOURCE} ${SHLIB_LOADER_SOURCES} ) @@ -2240,7 +2207,7 @@ add_executable(ocp-enb ${OPENAIR_DIR}/common/utils/lte/ue_power.c ${OPENAIR_DIR}/common/utils/lte/prach_utils.c ${PHY_INTERFACE_DIR}/queue_t.c - ${XFORMSINTERFACE_SOURCE} + ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c ${T_SOURCE} ${SHLIB_LOADER_SOURCES} ) @@ -2298,7 +2265,7 @@ add_executable(lte-uesoftmodem ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c ${OPENAIR_DIR}/common/utils/lte/ue_power.c ${OPENAIR_DIR}/common/utils/lte/prach_utils.c - ${XFORMSINTERFACE_SOURCE} + ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c ${T_SOURCE} ${SHLIB_LOADER_SOURCES} ) @@ -2345,7 +2312,7 @@ add_executable(nr-softmodem ${OPENAIR_DIR}/common/utils/lte/prach_utils.c ${OPENAIR_DIR}/common/utils/nr/nr_common.c ${PHY_INTERFACE_DIR}/queue_t.c - ${XFORMSINTERFACE_SOURCE} + ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c ${T_SOURCE} ${SHLIB_LOADER_SOURCES} ) @@ -2411,7 +2378,7 @@ add_executable(nr-uesoftmodem ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c ${OPENAIR_DIR}/common/utils/nr/nr_common.c - ${XFORMSINTERFACE_SOURCE} + ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c ${T_SOURCE} ${SHLIB_LOADER_SOURCES} ) @@ -2775,11 +2742,10 @@ if(OAI_NW_DRIVER_USE_NETLINK) endif() make_driver(ue_ip ${OPENAIR2_DIR}/NETWORK_DRIVER/UE_IP ${ue_ip_src}) -include (common/utils/telnetsrv/telnetsrv_CMakeLists.txt) include(${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/CMakeLists.txt) -include (${OPENAIR_DIR}/common/utils/websrv/websrv_CMakeLists.txt) add_subdirectory(common) add_subdirectory(doc) +add_subdirectory(openair1) add_subdirectory(openair2) add_subdirectory(openair3) diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai index f27a0cb315..578eaed570 100755 --- a/cmake_targets/build_oai +++ b/cmake_targets/build_oai @@ -55,14 +55,7 @@ CMAKE_BUILD_TYPE="RelWithDebInfo" CMAKE_CMD="$CMAKE" BUILD_ECLIPSE=0 NR="False" -OPTIONAL_LIBRARIES="telnetsrv enbscope uescope nrscope ldpc_cuda ldpc_t1" -ulfiusdep=$(basename ./`find /usr/lib* -name libulfius.so`) -jssondep=$(basename ./`find /usr/lib* -name libjansson.so`) -if [ "$ulfiusdep" == "libulfius.so" -a "$jssondep" == "libjansson.so" ] ; then - OPTIONAL_LIBRARIES+=" websrv" -else - echo_warning " websrv optional build not included in build-lib option as dependencies requirements not met " -fi +OPTIONAL_LIBRARIES="telnetsrv enbscope uescope nrscope ldpc_cuda ldpc_t1 websrv" RU=0 CMAKE_C_FLAGS=() CMAKE_CXX_FLAGS=() @@ -85,7 +78,7 @@ Options: -d | --build-dir Sets build directory (will be /cmake_targets//build) -I | --install-external-packages - Installs required packages such as LibXML, asn1.1 compiler, freediameter, ... + Installs required packages such as LibXML, asn1.1 compiler, ... This option will require root password --install-optional-packages Install useful but not mandatory packages such as valgrind @@ -392,16 +385,16 @@ function main() { if [ "$alib" = "$oklib" ] ; then BUILD_OPTLIB="$BUILD_OPTLIB $alib" echo_info "Enabling build of lib${alib}.so" - fi - done - done - if [ "${BUILD_OPTLIB## }" != "$2" ] ; then + fi + done + done + if [ "${BUILD_OPTLIB## }" != "$2" ] ; then echo_fatal "Unknown optional library in $2, valid libraries are $OPTIONAL_LIBRARIES" fi fi - for oklib in $BUILD_OPTLIB ; do - CMAKE_CMD="$CMAKE_CMD -DENABLE_${oklib^^}=ON" - done + for oklib in $BUILD_OPTLIB ; do + CMAKE_CMD="$CMAKE_CMD -DENABLE_${oklib^^}=ON" + done shift 2;; --noavx512) CMAKE_CMD="$CMAKE_CMD -DAVX512=OFF" @@ -476,8 +469,6 @@ function main() { # Setting and printing OAI envs, we should check here # ####################################################### - echo_info "2. Setting the OAI PATHS ..." - cecho "OPENAIR_DIR = $OPENAIR_DIR" $green # for conf files copy in this bash script @@ -554,8 +545,6 @@ function main() { SKIP_SHARED_LIB_FLAG="True" fi - echo_info "3. building the compilation directives ..." - DIR=$OPENAIR_DIR/cmake_targets [ "$CLEAN" = "1" ] && rm -rf $DIR/$BUILD_DIR/build @@ -658,27 +647,9 @@ function main() { if [ ! -z "$BUILD_OPTLIB" ] ; then for oklib in $BUILD_OPTLIB ; do compilations $BUILD_DIR $oklib - if [ "$oklib" == "websrv" ] ; then - BUILD_WEBSRVFRONT=1 - echo_info "Build of websrv frontend enabled" - fi done fi - - ############################################ - # Optional targets (others than libraries) # - ############################################ - if [ "$BUILD_WEBSRVFRONT" = "1" ] ; then - npmv=`command npm -v` - npms=$? - nodev=`command node -v` - nodes=$? - if [ "$npms" == "0" -a "$nodes" == "0" ] ; then - compilations $BUILD_DIR websrvfront - else - echo_warning "build of websrv front-end skipped, dependencies not met : " $npmv " " $nodev - fi - fi + #################################################### # Build RF device and transport protocol libraries # #################################################### @@ -767,7 +738,6 @@ function main() { # Auto-tests # ############## if [ "$OAI_TEST" = "1" ] ; then - echo_info "10. Running OAI pre commit tests (pre-ci) ..." echo_error "These scripts ASSUME that user is in /etc/sudoers and can execute commands without PASSWORD prompt" echo_error "Add the following lines in /etc/sudoers file to make your __user_name__ sudo without password prompt" echo_error " __your_user_name__ ALL = (ALL:ALL) NOPASSWD: ALL" @@ -787,7 +757,6 @@ function main() { fi wait else - echo_info "10. Bypassing the Tests ..." echo_success "BUILD SHOULD BE SUCCESSFUL" fi diff --git a/cmake_targets/macros.cmake b/cmake_targets/macros.cmake index cbdd221623..0a2dbab182 100644 --- a/cmake_targets/macros.cmake +++ b/cmake_targets/macros.cmake @@ -11,7 +11,7 @@ macro(add_option name val helpstr) add_definitions("-D${name}=${value}") endmacro(add_option) -macro(add_boolean_option name val helpstr) +macro(add_boolean_option name val helpstr adddef) if(DEFINED ${name}) set(value ${${name}}) else(DEFINED ${name}) @@ -19,9 +19,9 @@ macro(add_boolean_option name val helpstr) endif() set(${name} ${value} CACHE STRING "${helpstr}") set_property(CACHE ${name} PROPERTY TYPE BOOL) - if (${value}) + if (${value} AND ${adddef}) add_definitions("-D${name}") - endif (${value}) + endif (${value} AND ${adddef}) endmacro(add_boolean_option) macro(add_integer_option name val helpstr) diff --git a/common/utils/CMakeLists.txt b/common/utils/CMakeLists.txt index eb6a119968..2acf78c9c2 100644 --- a/common/utils/CMakeLists.txt +++ b/common/utils/CMakeLists.txt @@ -1 +1,10 @@ add_subdirectory(ds) +add_boolean_option(ENABLE_TELNETSRV OFF "Whether to build telnet support in modems" OFF) +if(ENABLE_TELNETSRV) + add_subdirectory(telnetsrv) +endif() +add_boolean_option(ENABLE_WEBSRV OFF "Whether to build the webserver" OFF) +if(ENABLE_WEBSRV) + add_subdirectory(websrv) +endif() + diff --git a/common/utils/telnetsrv/CMakeLists.txt b/common/utils/telnetsrv/CMakeLists.txt new file mode 100644 index 0000000000..f87a65b509 --- /dev/null +++ b/common/utils/telnetsrv/CMakeLists.txt @@ -0,0 +1,61 @@ +#/* +# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more +# * contributor license agreements. See the NOTICE file distributed with +# * this work for additional information regarding copyright ownership. +# * The OpenAirInterface Software Alliance licenses this file to You under +# * the OAI Public License, Version 1.1 (the "License"); you may not use this file +# * except in compliance with the License. +# * You may obtain a copy of the License at +# * +# * http://www.openairinterface.org/?page_id=698 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# *------------------------------------------------------------------------------- +# * For more information about the OpenAirInterface (OAI) Software Alliance: +# * contact@openairinterface.org +# */ +#! \file common/utils/telnetsrv/CMakelists.txt +#* \brief: build rules and checks for web server shared libraries +#* \author Francois TABURET +#* \date 2023 +#* \version 1.0 +#* \company NOKIA BellLabs France +#* \email: francois.taburet@nokia-bell-labs.com +#* \note +#* \warning +#*/ +add_library(telnetsrv MODULE + telnetsrv.c + telnetsrv_proccmd.c + telnetsrv_loader.c + telnetsrv_measurements.c +) +target_link_libraries(telnetsrv PRIVATE history) +target_link_libraries(telnetsrv PRIVATE asn1_nr_rrc asn1_lte_rrc) + +message(STATUS "Add enb specific telnet functions in libtelnetsrv_enb.so") +add_library(telnetsrv_enb MODULE + telnetsrv_enb_measurements.c + telnetsrv_enb_phycmd.c +) +add_dependencies(telnetsrv telnetsrv_enb) +target_link_libraries(telnetsrv_enb PRIVATE asn1_nr_rrc asn1_lte_rrc) + +message(STATUS "No specific telnet functions for gnb") + +message(STATUS "No specific telnet functions for 4Gue") + +message(STATUS "Add 5Gue specific telnet functions in libtelnetsrv_5Gue.so") +add_library(telnetsrv_5Gue MODULE telnetsrv_5Gue_measurements.c) +add_dependencies(telnetsrv telnetsrv_5Gue) +target_link_libraries(telnetsrv_5Gue PRIVATE asn1_nr_rrc asn1_lte_rrc) + +# all libraries should be written to root build dir +set_target_properties(telnetsrv telnetsrv_enb telnetsrv_5Gue + PROPERTIES LIBRARY_OUTPUT_DIRECTORY ../../.. +) + diff --git a/common/utils/telnetsrv/telnetsrv_CMakeLists.txt b/common/utils/telnetsrv/telnetsrv_CMakeLists.txt deleted file mode 100644 index e8da916339..0000000000 --- a/common/utils/telnetsrv/telnetsrv_CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -set(TELNETROOT ${OPENAIR_DIR}/common/utils/telnetsrv ) - -set(TELNETSRV_SOURCE - ${TELNETROOT}/telnetsrv.c - ${TELNETROOT}/telnetsrv_proccmd.c - ${TELNETROOT}/telnetsrv_loader.c - ${TELNETROOT}/telnetsrv_measurements.c - ) - -add_library(telnetsrv MODULE ${TELNETSRV_SOURCE} ) -target_link_libraries(telnetsrv PRIVATE history ncurses form ) -target_link_libraries(telnetsrv PRIVATE asn1_nr_rrc asn1_lte_rrc) - -foreach(TELNETLIB enb gnb 4Gue 5Gue) - set(TELNETLIB_SRCS "") - foreach(TELNETLIB_ASRC measurements phycmd) - set(TELNETLIB_SRC ${OPENAIR_DIR}/common/utils/telnetsrv/telnetsrv_${TELNETLIB}_${TELNETLIB_ASRC}.c) - if (EXISTS ${TELNETLIB_SRC}) - set( TELNETLIB_SRCS "${TELNETLIB_SRC};${TELNETLIB_SRCS}") - endif() - endforeach() - if(NOT "${TELNETLIB_SRCS}" STREQUAL "") - message("Add ${TELNETLIB} specific telnet functions in libtelnetsrv_${TELNETLIB}.so") - add_library(telnetsrv_${TELNETLIB} MODULE ${TELNETLIB_SRCS} ) - add_dependencies(telnetsrv telnetsrv_${TELNETLIB}) - target_link_libraries(telnetsrv_${TELNETLIB} PRIVATE asn1_nr_rrc asn1_lte_rrc) - install(TARGETS telnetsrv_${TELNETLIB} DESTINATION bin) - else() - message("No specific telnet functions for ${TELNETLIB}") - endif() -endforeach() - -install(TARGETS telnetsrv DESTINATION bin) - -if (EXISTS "${OPENAIR_CMAKE}/ran_build/build" AND IS_DIRECTORY "${OPENAIR_CMAKE}/ran_build/build") - install(TARGETS telnetsrv DESTINATION ${OPENAIR_CMAKE}/ran_build/build) -endif (EXISTS "${OPENAIR_CMAKE}/ran_build/build" AND IS_DIRECTORY "${OPENAIR_CMAKE}/ran_build/build") diff --git a/common/utils/websrv/CMakeLists.txt b/common/utils/websrv/CMakeLists.txt new file mode 100644 index 0000000000..dd5576ae79 --- /dev/null +++ b/common/utils/websrv/CMakeLists.txt @@ -0,0 +1,93 @@ +#/* +# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more +# * contributor license agreements. See the NOTICE file distributed with +# * this work for additional information regarding copyright ownership. +# * The OpenAirInterface Software Alliance licenses this file to You under +# * the OAI Public License, Version 1.1 (the "License"); you may not use this file +# * except in compliance with the License. +# * You may obtain a copy of the License at +# * +# * http://www.openairinterface.org/?page_id=698 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# *------------------------------------------------------------------------------- +# * For more information about the OpenAirInterface (OAI) Software Alliance: +# * contact@openairinterface.org +# */ +#! \file common/utils/websrv/CMakelists.txt +#* \brief: build rules and checks for web server shared libraries +#* \author Francois TABURET +#* \date 2023 +#* \version 1.0 +#* \company NOKIA BellLabs France +#* \email: francois.taburet@nokia-bell-labs.com +#* \note +#* \warning +#*/ +find_library(ULFIUS NAMES "libulfius.so" REQUIRED) +if (NOT ULFIUS) + message(FATAL_ERROR "ulfius library (https://github.com/babelouest/ulfius) not found, install libulfius-dev (ubuntu) if you need to build websrv back-end") +else() + message(STATUS "found libulfius for websrv") +endif() + +find_library(JSON NAMES "libjansson.so" REQUIRED) +if (NOT JSON) + message(FATAL_ERROR "libjansson not found, install libjansson-dev for ubuntu, jansson-devel for fedora if you need to build websrv back-end") +else() + message(STATUS "found libjansson for websrv") +endif() + +find_program(NPM NAMES npm REQUIRED) +if (NOT NPM) + message(FATAL_ERROR "npm is not installed, frontend can't be built. Possibly install npm, package is available for ubuntu and fedora") +else() + message(STATUS "found npm for websrv") +endif() + + +# build the backend ( the embedded web server) + +message(STATUS "Configuring webserver backend") +add_library(websrv MODULE + websrv.c + websrv_websockets.c + websrv_scope.c + websrv_noforms.c + websrv_scope.c + websrv_utils.c + ../../../openair1/PHY/TOOLS/nr_phy_scope.c +) +target_link_libraries(websrv PRIVATE asn1_lte_rrc asn1_nr_rrc) +target_link_libraries(websrv PRIVATE ulfius jansson) +target_compile_definitions(websrv PUBLIC WEBSRVSCOPE) +# put websrv into build root and not under build/common/utils/websrv/ +set_target_properties(websrv PROPERTIES LIBRARY_OUTPUT_DIRECTORY ../../..) + +# build the frontend ( loaded from web server by browsers) + +add_custom_target( + websrvfront_installjsdep + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/frontend + COMMAND npm install + DEPENDS frontend/package-lock.json +) + +message(STATUS "Configuring webserver frontend") +add_custom_target( + websrvfront + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/frontend + COMMAND npm run build + #COMMAND npm run builddev + DEPENDS websrvfront_installjsdep +) +add_dependencies(websrv websrvfront) +# copy frontend files to a websrv subdirectory of where oai copy all built files +add_custom_command(TARGET websrvfront + POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/frontend/dist/softmodem-ngx ${OPENAIR_BIN_DIR}/../websrv + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/helpfiles ${OPENAIR_BIN_DIR}/../websrv/helpfiles + COMMENT "Moving frontend files to:\n ${OPENAIR_BIN_DIR}/../websrv \n " ) diff --git a/common/utils/websrv/DOC/logscfg.png b/common/utils/websrv/DOC/logscfg.png new file mode 100644 index 0000000000000000000000000000000000000000..4345bc3eabcf2734bc10293fbbee33c0cbd5ee96 GIT binary patch literal 71969 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 M4W;WD*YuwJ7Xr?fr2qf` literal 0 HcmV?d00001 diff --git a/common/utils/websrv/DOC/main.png b/common/utils/websrv/DOC/main.png new file mode 100644 index 0000000000000000000000000000000000000000..0ee62dd0db882cf8e034f9510d6d06a432275a72 GIT binary patch literal 70222 zcmdqJ1yq#Z`!9+C7=#4~5~3gtN;e`R(h@_%DBVamqavVmcXy9;mq<6mFw!91T|>;> zeAVCYcm8YLb=N)jo^$R!?^-No_PqOj_kLt^q+$Qmd6|my84Uw#;3u=Drlgi!Prs5vg2GP^kFNY$`IWx( zh;}mSp2iQSnQh_Tn#HY2_vhaf3}TU7IL6f$hKiEUqM)~%;n$u&7y0$2vzy(JmH~eX zU7cl_TXVHI&_JnrTD!kKQ1$MF>do&kEh?fBVwbyeH38Z zG5@gdUbnenpxQ%XX^MQir%Z8V+cefPNV`tL1wj=)E9>E0uHkAr*t_&(Ha6>o;irmf zjgM%)ym=#r4f*-Hzc5UfT5M603KP5<)t(WYcllMIv-xw+HFOhZ`p~@K*N@7mdyg>$OH>>6@r5KbW4rb)QAyAhxf@m4ETTO5V&v#4yn& z)t>pWITqGKEXkLm%1)ze6V6V`$eGsd!(N$#0OnvXnp>e*qPM<3iF-tkbE|;TEY+^7>qRg;3cAIo#Ml9R9h+y}h3N{oGi0>-@@}FVlwRoR_wmv*CG& znN&AOc*NlS-@hE`V3*%iIoYCjc6LSFw+L^F#WWtPLRGV_oH#IL+SZOryc~G=_f`tl z?kJ(f55H=(zhgarAbv!6inT*v$dIjltx4qfJ-so_UdN1VObT{ctemeN`~XiQOis-Y zpQif#`=av67y8I}%jRpCOTSyN-gA5gGX49iB>fKi`*|F1=Fda1uq?f|s48EFM@5+( ztc^%XNhvBSh8p%I%BKD4R&_Y(DxZ^+!+EtgHsA>sYoOn$ZJ$uq&W?@H_K&-{+1dST zBP9{BvAOCch9-mQl2ctC!v&gIF&svnmKCtoMV=|Q5=z*qH8wW3HBhpPtG8&R#K^2S zo-dT9W}*=E8=yDlN-NJC6&wrLxq0K>{aX)VFwD)BE>3Rl+@d0d`ucj2_Vc{l+|su* zCmLr-82ZP%A82ySUetO+J*u9_*GitBpLhOD%Hi9c8Z3c1`A(v|*Coet>pfXT^s45& zqE?IAD3zR@t1@NdGHW)f^Z1d%Se*{Sqyr4$V3C(QG9cwYi@KMt-DVa5v3Y`=+1VgUu7B1 zt4`%!EQ1P^8(?A+hO6qh>0Er4NMc6d-=#Ba`Yv9*`H@tk#DPVK(1=s76;C#SAHu-E zFj{GyX4n&peDt31#*M*z^^#JXd8z%S0WmP{{_YqKOqTn?{QLz=$k_GUdCmjJ%FLpk z$i-*x?Cflo2K5P_$jr6|DCz5`<2CmSY}W1uu(LIs7JK7A$ef;j>-G7w@ldwHXsL

4uzhIML~s?!{}sd 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�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 Q7GGl/openairinterface5g/cmake_targets/ran_build/build @@ -143,7 +136,8 @@ Built target websrvfront -# Building and installing the web server back-end +# Building and installing the web server back-end after cmake has been configured + The back-end has two dependencies: 1. the [ulfius library](https://github.com/babelouest/ulfius) and the corresponding include files which are provided by the ubuntu libulfius-dev package: `sudo apt-get install -y libulfius-dev` @@ -151,7 +145,7 @@ The back-end has two dependencies: Dependencies can also be installed on fedora distribution, the jansson package is `jansson-devel`, ulfius has to be installed as explained [here](https://github.com/babelouest/ulfius/blob/master/INSTALL.md#pre-compiled-packages). -By default the embedded web server back-end , which is implemented in a shared library, is not built. It can be built after compiling the softmodem executable using the `build_oai` script: +The websrv targets won't be available till cmake has been successfully configured with the websrv option enabled ```bash cd \/openairinterface5g @@ -159,7 +153,11 @@ By default the embedded web server back-end , which is implemented in a shared l cd cmake_targets ./build_oai --build-lib websrv ``` - +or, without the help of the `build_oai` script: +```bash + cd \/openairinterface5g/cmake_targets/ran_build/build + make websrv +``` This will create the `libwebsrv.so` file in the `targets/bin` and `cmake_targets/ran_build/build` sub directories of the oai repository. When starting the softmodem, you must specify the **_\-\-websrv_** option to load and start the web server. The web server is loaded via the [oai shared library loader](loader). @@ -203,4 +201,8 @@ The interface should be intuitive enough, keeping in mind the following restrict Some front-end objects, which usage are less intuitive provide a tooltip to help interface usage. +## some webserver screenshots +![main page](/usr/local/oai/websrv3/openairinterface5g/common/utils/websrv/DOC/main.png "main page") +![Configuring logs](/usr/local/oai/websrv3/openairinterface5g/common/utils/websrv/DOC/logscfg.png "Configuring logs") +![scope interface](/usr/local/oai/websrv3/openairinterface5g/common/utils/websrv/DOC/scope.png "scope interface") [oai web serverinterface home](websrv.md) diff --git a/common/utils/websrv/frontend/package-lock.json b/common/utils/websrv/frontend/package-lock.json index c44e437efc..0e2b61cf70 100644 --- a/common/utils/websrv/frontend/package-lock.json +++ b/common/utils/websrv/frontend/package-lock.json @@ -21,9 +21,12 @@ "@angular/platform-browser-dynamic": "^14.1.0", "@angular/router": "^14.1.0", "chart.js": "^3.8.2", + "json5": "^2.2.2", + "loader-utils": "^3.2.1", "moment": "^2.29.3", "ng2-charts": "^4.0.0", "rxjs": "^6.6.6", + "tsconfig-paths": "^4.0.0", "tslib": "^2.0.0", "zone.js": "^0.11.4" }, @@ -56,6 +59,12 @@ "typescript": "~4.6.4" } }, + "node_modules/@adobe/css-tools": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", + "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", + "dev": true + }, "node_modules/@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -70,12 +79,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1401.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1401.0.tgz", - "integrity": "sha512-dHgP2/5EXkJpdf6Y1QHQX2RP8xTli/CFZH3uNnTh+EuAib/kwu+Z6K3UttZWB5VGhAF1u/xf97Vly/UkXvjKAg==", + "version": "0.1401.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1401.3.tgz", + "integrity": "sha512-DQvKfl8Q9c02jpGqZX1nOL4mAnRBU6BSqPlhi1q17ZrB8sQpYtDBb8Epn2DDq48l7SQVFnRg6Zgje9L1LObURg==", "dev": true, "dependencies": { - "@angular-devkit/core": "14.1.0", + "@angular-devkit/core": "14.1.3", "rxjs": "6.6.7" }, "engines": { @@ -85,35 +94,35 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.1.0.tgz", - "integrity": "sha512-AtecSuDEPLYd3p7uFVKpoA0XNcq+NvVYFJK8h90BG+IRZtzEm7ZJeYdohXVeVfTO5GvpNFN1XoHxR5rxiXeBhg==", + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.10.tgz", + "integrity": "sha512-VCeZAyq4uPCJukKInaSiD4i/GgxgcU4jFlLFQtoYNmaBS4xbPOymL19forRIihiV0dwNEa2L694vRTAPMBxIfw==", "dev": true, "dependencies": { "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1401.0", - "@angular-devkit/build-webpack": "0.1401.0", - "@angular-devkit/core": "14.1.0", - "@babel/core": "7.18.6", - "@babel/generator": "7.18.7", + "@angular-devkit/architect": "0.1402.10", + "@angular-devkit/build-webpack": "0.1402.10", + "@angular-devkit/core": "14.2.10", + "@babel/core": "7.18.10", + "@babel/generator": "7.18.12", "@babel/helper-annotate-as-pure": "7.18.6", - "@babel/plugin-proposal-async-generator-functions": "7.18.6", + "@babel/plugin-proposal-async-generator-functions": "7.18.10", "@babel/plugin-transform-async-to-generator": "7.18.6", - "@babel/plugin-transform-runtime": "7.18.6", - "@babel/preset-env": "7.18.6", - "@babel/runtime": "7.18.6", - "@babel/template": "7.18.6", + "@babel/plugin-transform-runtime": "7.18.10", + "@babel/preset-env": "7.18.10", + "@babel/runtime": "7.18.9", + "@babel/template": "7.18.10", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.1.0", + "@ngtools/webpack": "14.2.10", "ansi-colors": "4.1.3", "babel-loader": "8.2.5", "babel-plugin-istanbul": "6.1.1", "browserslist": "^4.9.1", - "cacache": "16.1.1", + "cacache": "16.1.2", "copy-webpack-plugin": "11.0.0", "critters": "0.0.16", "css-loader": "6.7.1", - "esbuild-wasm": "0.14.49", + "esbuild-wasm": "0.15.5", "glob": "8.0.3", "https-proxy-agent": "5.0.1", "inquirer": "8.2.4", @@ -122,34 +131,34 @@ "less": "4.1.3", "less-loader": "11.0.0", "license-webpack-plugin": "4.0.2", - "loader-utils": "3.2.0", + "loader-utils": "3.2.1", "mini-css-extract-plugin": "2.6.1", "minimatch": "5.1.0", "open": "8.4.0", "ora": "5.4.1", "parse5-html-rewriting-stream": "6.0.1", "piscina": "3.2.0", - "postcss": "8.4.14", - "postcss-import": "14.1.0", + "postcss": "8.4.16", + "postcss-import": "15.0.0", "postcss-loader": "7.0.1", - "postcss-preset-env": "7.7.2", + "postcss-preset-env": "7.8.0", "regenerator-runtime": "0.13.9", "resolve-url-loader": "5.0.0", "rxjs": "6.6.7", - "sass": "1.53.0", + "sass": "1.54.4", "sass-loader": "13.0.2", "semver": "7.3.7", "source-map-loader": "4.0.0", "source-map-support": "0.5.21", - "stylus": "0.58.1", + "stylus": "0.59.0", "stylus-loader": "7.0.0", "terser": "5.14.2", "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.4.0", - "webpack": "5.73.0", + "webpack": "5.74.0", "webpack-dev-middleware": "5.3.3", - "webpack-dev-server": "4.9.3", + "webpack-dev-server": "4.11.0", "webpack-merge": "5.8.0", "webpack-subresource-integrity": "5.1.0" }, @@ -159,7 +168,7 @@ "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.14.49" + "esbuild": "0.15.5" }, "peerDependencies": { "@angular/compiler-cli": "^14.0.0", @@ -169,7 +178,7 @@ "ng-packagr": "^14.0.0", "protractor": "^7.0.0", "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=4.6.2 <4.8" + "typescript": ">=4.6.2 <4.9" }, "peerDependenciesMeta": { "@angular/localize": { @@ -192,6 +201,47 @@ } } }, + "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/architect": { + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.10.tgz", + "integrity": "sha512-/6YmPrgataj1jD2Uqd1ED+CG4DaZGacoeZd/89hH7hF76Nno8K18DrSOqJAEmDnOWegpSRGVLd0qP09IHmaG5w==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "14.2.10", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "dependencies": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, "node_modules/@angular-devkit/build-angular/node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -328,9 +378,9 @@ } }, "node_modules/@angular-devkit/build-angular/node_modules/inquirer/node_modules/rxjs": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", - "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", "dev": true, "dependencies": { "tslib": "^2.1.0" @@ -345,6 +395,12 @@ "node": ">=8" } }, + "node_modules/@angular-devkit/build-angular/node_modules/jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, "node_modules/@angular-devkit/build-angular/node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -431,13 +487,19 @@ "node": ">=8" } }, + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1401.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1401.0.tgz", - "integrity": "sha512-jKfnHal09mVnEapmNrAHXL/00LfafmfEUtlOPzQMgGJL7MWCeMcFthsbcOnGuzUerbiiquRk/KmLTERYjH+ZrQ==", + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.10.tgz", + "integrity": "sha512-h+2MaSY7QSvoJ3R+Hvin21jVCfPGOTLdASIUk4Jmq6J3y5BSku3KSSaV8dWoBOBkFCwQyPQMRjiHoHKLpC1K7g==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1401.0", + "@angular-devkit/architect": "0.1402.10", "rxjs": "6.6.7" }, "engines": { @@ -450,10 +512,25 @@ "webpack-dev-server": "^4.0.0" } }, - "node_modules/@angular-devkit/core": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.0.tgz", - "integrity": "sha512-Y2d/+nFmjjY4eatc3cwdDDAnpnhG3KTX2OVW7dXSUxW3eY5e3vdMlVUbFiKwvwAshlrJy85Y6RMvZSBN4VrpnA==", + "node_modules/@angular-devkit/build-webpack/node_modules/@angular-devkit/architect": { + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.10.tgz", + "integrity": "sha512-/6YmPrgataj1jD2Uqd1ED+CG4DaZGacoeZd/89hH7hF76Nno8K18DrSOqJAEmDnOWegpSRGVLd0qP09IHmaG5w==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "14.2.10", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/build-webpack/node_modules/@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", "dev": true, "dependencies": { "ajv": "8.11.0", @@ -476,13 +553,51 @@ } } }, - "node_modules/@angular-devkit/schematics": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.1.0.tgz", - "integrity": "sha512-5QC01k9eznuQSiqxijKhVkAEmA8sioYuLhBzyffaPszSySH8kPMNxhAc8zJhBTNLumbS6iDaGkSqTQl5Kv9fOw==", + "node_modules/@angular-devkit/build-webpack/node_modules/jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, + "node_modules/@angular-devkit/core": { + "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.3.tgz", + "integrity": "sha512-YBxhRl7hKgirjcKeurfejVrIgmw31GcfKKCyQiIudoLCYjonnSMdDEx2y8BNMANvxe5YmuZsIYJtgVlqp3mMDg==", "dev": true, "dependencies": { - "@angular-devkit/core": "14.1.0", + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/core/node_modules/jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, + "node_modules/@angular-devkit/schematics": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.10.tgz", + "integrity": "sha512-MMp31KpJTwKHisXOq+6VOXYApq97hZxFaFmZk396X5aIFTCELUwjcezQDk+u2nEs5iK/COUfnN3plGcfJxYhQA==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "14.2.10", "jsonc-parser": "3.1.0", "magic-string": "0.26.2", "ora": "5.4.1", @@ -494,6 +609,38 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "dependencies": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics/node_modules/jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, "node_modules/@angular-eslint/builder": { "version": "14.0.2", "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-14.0.2.tgz", @@ -609,9 +756,9 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@angular/animations": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.1.0.tgz", - "integrity": "sha512-OhEXi1u/M4QyltDCxSqo7YzF7ELgNDWNqbbM7vtWIcrc4c+Yiu1GXhW/GQRosF3WAuQVfdQzEI0VTeNoo98Kvw==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.12.tgz", + "integrity": "sha512-gwdnFZkvVUr+enUNfhfCGRGGqNHn1+vTA81apLfHYhJxgjiLUtETc4KTOrQevtDm022pEd+LSrvr8r+7ag+jkw==", "dependencies": { "tslib": "^2.3.0" }, @@ -619,13 +766,13 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.1.0" + "@angular/core": "14.2.12" } }, "node_modules/@angular/cdk": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.1.0.tgz", - "integrity": "sha512-EOQZmlTgj5Tc6/s50kEQUYKWH0S748rzbymBYkvyJs864lP9A8khz83IINmm+PD2sMADKtBETD3aEa5yQRhVAA==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.7.tgz", + "integrity": "sha512-/tEsYaUbDSnfEmKVvAMramIptmhI67O+9STjOV0i+74XR2NospeK0fkbywIANu1n3w6AHGMotvRWJrjmbCElFg==", "dependencies": { "tslib": "^2.3.0" }, @@ -639,15 +786,15 @@ } }, "node_modules/@angular/cli": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.1.0.tgz", - "integrity": "sha512-W/t2PkGHu9r87po1ZXQRYU81VtjzNMuGsP5tmoW1pGuibK7Kj+25G+jrXK/WADTi+pjTMXHNXYn8PlMNAIrZ/w==", + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.10.tgz", + "integrity": "sha512-gX9sAKOwq4lKdPWeABB7TzKDHdjQXvkUU8NmPJA6mEAVXvm3lhQtFvHDalZstwK8au2LY0LaXTcEtcKYOt3AXQ==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1401.0", - "@angular-devkit/core": "14.1.0", - "@angular-devkit/schematics": "14.1.0", - "@schematics/angular": "14.1.0", + "@angular-devkit/architect": "0.1402.10", + "@angular-devkit/core": "14.2.10", + "@angular-devkit/schematics": "14.2.10", + "@schematics/angular": "14.2.10", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "debug": "4.3.4", @@ -658,7 +805,7 @@ "npm-pick-manifest": "7.0.1", "open": "8.4.0", "ora": "5.4.1", - "pacote": "13.6.1", + "pacote": "13.6.2", "resolve": "1.22.1", "semver": "7.3.7", "symbol-observable": "4.0.0", @@ -674,6 +821,47 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular/cli/node_modules/@angular-devkit/architect": { + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.10.tgz", + "integrity": "sha512-/6YmPrgataj1jD2Uqd1ED+CG4DaZGacoeZd/89hH7hF76Nno8K18DrSOqJAEmDnOWegpSRGVLd0qP09IHmaG5w==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "14.2.10", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/cli/node_modules/@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "dependencies": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, "node_modules/@angular/cli/node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -809,6 +997,15 @@ "node": ">=12.0.0" } }, + "node_modules/@angular/cli/node_modules/inquirer/node_modules/rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/@angular/cli/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -818,6 +1015,12 @@ "node": ">=8" } }, + "node_modules/@angular/cli/node_modules/jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, "node_modules/@angular/cli/node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -878,15 +1081,6 @@ "node": ">=8" } }, - "node_modules/@angular/cli/node_modules/rxjs": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", - "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular/cli/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -914,9 +1108,9 @@ } }, "node_modules/@angular/common": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.1.0.tgz", - "integrity": "sha512-leethDtLbA3qySaOEBUto602DF0qH1maK9u2zHncrUFOpnHAYUEd7N9MFMdIYASurTnwOSglEoIDCML94qzImQ==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.12.tgz", + "integrity": "sha512-oZunh9wfInFWhNO1P8uoEs/o4u8kerKMhw8GruywKm1TV7gHDP2Fi5WHGjFqq3XYptgBTPCTSEfyLX6Cwq1PUw==", "dependencies": { "tslib": "^2.3.0" }, @@ -924,14 +1118,14 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.1.0", + "@angular/core": "14.2.12", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.1.0.tgz", - "integrity": "sha512-aLbtpFDF3fp/DOEsWSdpszmoNZAb0To/zoKhHVmEReuUKkMtlPNd3+e6wkR2vrvR/cWgbKwdb7RQ1IQtGDu74A==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.12.tgz", + "integrity": "sha512-u2MH9+NRwbbFDRNiPWPexed9CnCq9+pGHLuyACSP2uR6Ik68cE6cayeZbIeoEV5vWpda/XsLmJgPJysw7dAZLQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -939,7 +1133,7 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.1.0" + "@angular/core": "14.2.12" }, "peerDependenciesMeta": { "@angular/core": { @@ -948,9 +1142,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.1.0.tgz", - "integrity": "sha512-llJkDnv0+riTdRPdOJv/FToz4X9ZO1URnalW+tIe2RyfOzkEqM+VLD/x+3cVgnsaFKuoPxIjZEkMoppGwVB4kg==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.12.tgz", + "integrity": "sha512-9Gkb9KFkaQPz8XaS8ZwwTioRZ4ywykdAWyceICEi78/Y9ConYrTX2SbFogzI2dPUZU8a04tMlbqTSmHjVbJftQ==", "dev": true, "dependencies": { "@babel/core": "^7.17.2", @@ -973,14 +1167,14 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/compiler": "14.1.0", - "typescript": ">=4.6.2 <4.8" + "@angular/compiler": "14.2.12", + "typescript": ">=4.6.2 <4.9" } }, "node_modules/@angular/core": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.1.0.tgz", - "integrity": "sha512-3quEsHmQifJOQ2oij5K+cjGjmhsKsyZI1+OTHWNZ6IXeuYviZv4U/Cui9fUJ1RN3CZxH3NzWB3gB/5qYFQfOgg==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.12.tgz", + "integrity": "sha512-sGQxU5u4uawwvJa6jOTmGoisJiQ5HIN/RoBw99CmoqZIVyUSg9IRJJC1KVdH8gbpWBNLkElZv21lwJTL/msWyg==", "dependencies": { "tslib": "^2.3.0" }, @@ -989,13 +1183,14 @@ }, "peerDependencies": { "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.11.4" + "zone.js": "~0.11.4 || ~0.12.0" } }, "node_modules/@angular/flex-layout": { - "version": "14.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-14.0.0-beta.40.tgz", - "integrity": "sha512-lYi2BKovNk5u2wmj/AMIMqfUzCBEt99Wu/Gfa+1mUIlw3voKCmIsV2XYBhX4adRdD+dRagY3Opger43JR7PXEw==", + "version": "14.0.0-beta.41", + "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-14.0.0-beta.41.tgz", + "integrity": "sha512-x1YcxqkdFlcbVXEy9ebCgW/F+7n/MXkEkwEcVEIPf5v5qn7HZsjQxgIj35Lf0amvMyF7h35prpoxO1uX5+ntFg==", + "deprecated": "This package has been deprecated. Please see https://blog.angular.io/modern-css-in-angular-layouts-4a259dca9127", "dependencies": { "tslib": "^2.3.0" }, @@ -1008,9 +1203,9 @@ } }, "node_modules/@angular/forms": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.1.0.tgz", - "integrity": "sha512-y7VQ2t+/ASEjzt8zXg4y5b03lMSPHmnhy4XzjDT14ZFrALaSxyhkSqoBfAksPkTeKmsFMnP/VgLboRsE8TLs0Q==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.12.tgz", + "integrity": "sha512-7abYlGIT2JnAtutQUlH3fQS6QEpbfftgvsVcZJCyvX0rXL3u2w2vUQkDHJH4YJJp3AHFVCH4/l7R4VcaPnrwvA==", "dependencies": { "tslib": "^2.3.0" }, @@ -1018,31 +1213,31 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.1.0", - "@angular/core": "14.1.0", - "@angular/platform-browser": "14.1.0", + "@angular/common": "14.2.12", + "@angular/core": "14.2.12", + "@angular/platform-browser": "14.2.12", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.1.0.tgz", - "integrity": "sha512-ldL4xMDjXYZ93FCEIBVGipx9Qfgr7NuBNO+e25d+nWikXrUOnLfvF4UOL/TSUwSwqN4jxDI2KMNQIF6SecZfvQ==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.2.12.tgz", + "integrity": "sha512-YmW6simyEVmpDmbYVUhZ2IxSP6pmsWrV120rB9Y21/BeM39WIXA4NCNirVWlAd/KAKY9O7Sbn1nXI6rSDfhopQ==", "dev": true, "engines": { "node": "^14.15.0 || >=16.10.0" } }, "node_modules/@angular/material": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.1.0.tgz", - "integrity": "sha512-0UXfMqP5+Nzd6gbLplQpUX3E0rRRwhVEnAo8Z1hllGdJIY0meunMnTZCWsvYQ7SU/W+VbqnmtBmg5EOfYsjpiQ==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.2.7.tgz", + "integrity": "sha512-WXHh8pEStpgkXZJmYOg2cI8BSHkV82ET4XTJCNPdveumaCn1UYnaNzsXD13kw5z+zmy8CufhFEzdXTrv/yt7KQ==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { "@angular/animations": "^14.0.0 || ^15.0.0", - "@angular/cdk": "14.1.0", + "@angular/cdk": "14.2.7", "@angular/common": "^14.0.0 || ^15.0.0", "@angular/core": "^14.0.0 || ^15.0.0", "@angular/forms": "^14.0.0 || ^15.0.0", @@ -1051,9 +1246,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.1.0.tgz", - "integrity": "sha512-axNXUSqxsP0QSdNskd1pFo2uMo1UNoFaSAB02eDWwLkWQ1pWel+T78HiQY2bNeI3elgzjwPTT4vCCDQKNVTNig==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.12.tgz", + "integrity": "sha512-vOarWym8ucl1gjYWCzdwyBha+MTvL381mvTTUu8aUx6nVhHFjv4bvpjlZnZgojecqUPyxOwmPLLHvCZPJVHZYg==", "dependencies": { "tslib": "^2.3.0" }, @@ -1061,9 +1256,9 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/animations": "14.1.0", - "@angular/common": "14.1.0", - "@angular/core": "14.1.0" + "@angular/animations": "14.2.12", + "@angular/common": "14.2.12", + "@angular/core": "14.2.12" }, "peerDependenciesMeta": { "@angular/animations": { @@ -1072,9 +1267,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.1.0.tgz", - "integrity": "sha512-0Lxz3HJ9qTOyMTp5Qud2tycP7wqe+tnHOSUqDywrbNRozTKGX0z3i+l0KMku3BtUbuMi3tJomqV914/dtbCvIw==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.12.tgz", + "integrity": "sha512-oZhNJeaBmgw8+KBSYpKz2RYqEDyETC+HJXH8dwIFcP6BqqwL2NE70FdSR7EnOa5c41MEtTmMCGhrJSFR60x5/w==", "dependencies": { "tslib": "^2.3.0" }, @@ -1082,16 +1277,16 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.1.0", - "@angular/compiler": "14.1.0", - "@angular/core": "14.1.0", - "@angular/platform-browser": "14.1.0" + "@angular/common": "14.2.12", + "@angular/compiler": "14.2.12", + "@angular/core": "14.2.12", + "@angular/platform-browser": "14.2.12" } }, "node_modules/@angular/router": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.1.0.tgz", - "integrity": "sha512-WBC1E+d9RS8vy57zJ6LVtWT3AM12mEHY7SCMBRJNBcrmBYJwojxeV8IVkUoW4Ds910gG/w3LjIN0eNHg5qRtNA==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.12.tgz", + "integrity": "sha512-r5tVus5RJDNc4U2v0jMtjPiAS1xDsVsJ70lS313DgZmBDHIVZP1cWIehdxwgNlGwQQtAA36eG7toBwqUU3gb/A==", "dependencies": { "tslib": "^2.3.0" }, @@ -1099,9 +1294,9 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.1.0", - "@angular/core": "14.1.0", - "@angular/platform-browser": "14.1.0", + "@angular/common": "14.2.12", + "@angular/core": "14.2.12", + "@angular/platform-browser": "14.2.12", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -1124,30 +1319,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -1172,12 +1367,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "version": "7.18.12", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", + "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.7", + "@babel/types": "^7.18.10", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -1225,14 +1420,15 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.8", + "@babel/compat-data": "^7.20.5", "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" }, "engines": { @@ -1252,17 +1448,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", - "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.7.tgz", + "integrity": "sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6" }, "engines": { @@ -1273,13 +1469,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", - "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" + "regexpu-core": "^5.2.1" }, "engines": { "node": ">=6.9.0" @@ -1289,9 +1485,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", - "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.17.7", @@ -1336,13 +1532,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "dependencies": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -1361,12 +1557,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -1385,19 +1581,33 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", "dev": true, "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.20.2", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -1416,9 +1626,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -1443,40 +1653,55 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", - "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers/node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.20.2" }, "engines": { "node": ">=6.9.0" } }, "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==", "dev": true, "dependencies": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.0" }, "engines": { "node": ">=6.9.0" @@ -1494,10 +1719,19 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true, "engines": { "node": ">=6.9.0" @@ -1513,29 +1747,43 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.9.tgz", - "integrity": "sha512-cG2ru3TRAL6a60tfQflpEfs4ldiPwF6YW3zfJiRgmoFVIaC1vGnBBgatfec+ZUziPHkHSaXAuEck3Cdkf3eRpQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.18.9", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", - "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", + "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", "dev": true, "dependencies": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -1556,9 +1804,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", - "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1583,14 +1831,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -1600,14 +1848,14 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz", - "integrity": "sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", + "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -1634,13 +1882,13 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", + "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -1699,12 +1947,12 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1747,16 +1995,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" + "@babel/plugin-transform-parameters": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -1782,13 +2030,13 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1815,14 +2063,14 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1912,12 +2160,12 @@ } }, "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==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -2041,12 +2289,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -2088,12 +2336,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", + "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -2103,17 +2351,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", - "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" }, @@ -2125,12 +2374,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/template": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -2139,13 +2389,27 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", - "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", + "node_modules/@babel/plugin-transform-computed-properties/node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -2264,14 +2528,13 @@ } }, "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.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", "dev": true, "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.20.11", + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -2281,15 +2544,14 @@ } }, "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.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", "dev": true, "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.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-simple-access": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -2299,16 +2561,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", - "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-identifier": "^7.19.1" }, "engines": { "node": ">=6.9.0" @@ -2334,13 +2595,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", - "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -2381,12 +2642,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -2411,13 +2672,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" }, "engines": { "node": ">=6.9.0" @@ -2442,16 +2703,16 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.6.tgz", - "integrity": "sha512-8uRHk9ZmRSnWqUgyae249EJZ94b0yAGLBIqzZzl+0iEdbno55Pmlt/32JZsHwXD9k/uZj18Aqqk35wBX4CBTXA==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz", + "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==", "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-polyfill-corejs2": "^0.3.1", - "babel-plugin-polyfill-corejs3": "^0.5.2", - "babel-plugin-polyfill-regenerator": "^0.3.1", + "@babel/helper-plugin-utils": "^7.18.9", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", "semver": "^6.3.0" }, "engines": { @@ -2486,13 +2747,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", - "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" }, "engines": { "node": ">=6.9.0" @@ -2547,12 +2808,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz", - "integrity": "sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -2578,29 +2839,29 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.6.tgz", - "integrity": "sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", + "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/helper-validator-option": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.6", - "@babel/plugin-proposal-async-generator-functions": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.18.10", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-class-static-block": "^7.18.6", "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", "@babel/plugin-proposal-private-methods": "^7.18.6", "@babel/plugin-proposal-private-property-in-object": "^7.18.6", "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", @@ -2622,40 +2883,40 @@ "@babel/plugin-transform-arrow-functions": "^7.18.6", "@babel/plugin-transform-async-to-generator": "^7.18.6", "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.6", - "@babel/plugin-transform-classes": "^7.18.6", - "@babel/plugin-transform-computed-properties": "^7.18.6", - "@babel/plugin-transform-destructuring": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-classes": "^7.18.9", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.9", "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.6", - "@babel/plugin-transform-function-name": "^7.18.6", - "@babel/plugin-transform-literals": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", "@babel/plugin-transform-member-expression-literals": "^7.18.6", "@babel/plugin-transform-modules-amd": "^7.18.6", "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.18.9", "@babel/plugin-transform-modules-umd": "^7.18.6", "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", "@babel/plugin-transform-new-target": "^7.18.6", "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", "@babel/plugin-transform-property-literals": "^7.18.6", "@babel/plugin-transform-regenerator": "^7.18.6", "@babel/plugin-transform-reserved-words": "^7.18.6", "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.18.6", + "@babel/plugin-transform-spread": "^7.18.9", "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.6", - "@babel/plugin-transform-typeof-symbol": "^7.18.6", - "@babel/plugin-transform-unicode-escapes": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.6", - "babel-plugin-polyfill-corejs2": "^0.3.1", - "babel-plugin-polyfill-corejs3": "^0.5.2", - "babel-plugin-polyfill-regenerator": "^0.3.1", + "@babel/types": "^7.18.10", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", "core-js-compat": "^3.22.1", "semver": "^6.3.0" }, @@ -2692,9 +2953,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz", - "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" @@ -2704,33 +2965,33 @@ } }, "node_modules/@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", - "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz", + "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", + "@babel/generator": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^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.18.9", - "@babel/types": "^7.18.9", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2739,12 +3000,12 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", - "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.9", + "@babel/types": "^7.20.7", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -2767,12 +3028,13 @@ } }, "node_modules/@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2780,9 +3042,9 @@ } }, "node_modules/@csstools/postcss-cascade-layers": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.0.5.tgz", - "integrity": "sha512-Id/9wBT7FkgFzdEpiEWrsVd4ltDxN0rI0QS0SChbeQiSuux3z21SJCRLu6h2cvCEUmaRi+VD0mHFj+GJD4GFnw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", "dev": true, "dependencies": { "@csstools/selector-specificity": "^2.0.2", @@ -2897,6 +3159,25 @@ "postcss": "^8.2" } }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, "node_modules/@csstools/postcss-normalize-display-values": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", @@ -2970,6 +3251,25 @@ "postcss": "^8.2" } }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, "node_modules/@csstools/postcss-trigonometric-functions": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", @@ -3031,16 +3331,32 @@ "node": ">=10.0.0" } }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz", + "integrity": "sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.0", + "espree": "^9.4.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -3049,6 +3365,9 @@ }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/eslintrc/node_modules/ajv": { @@ -3084,9 +3403,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3147,14 +3466,14 @@ "dev": true }, "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" @@ -3182,6 +3501,19 @@ "node": "*" } }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -3275,13 +3607,13 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "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==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "node_modules/@leichtgewicht/ip-codec": { @@ -3291,9 +3623,9 @@ "dev": true }, "node_modules/@ngtools/webpack": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.1.0.tgz", - "integrity": "sha512-d4U6ymDCXckVgfjYEv1Wjzd78ZSm0NKgq8mN6FdlrCupg02LPIODjeKyNr4c4zwMAOJeHkVNEZ+USoDEK3XSsw==", + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.10.tgz", + "integrity": "sha512-sLHapZLVub6mEz5b19tf1VfIV1w3tYfg7FNPLeni79aldxu1FbP1v2WmiFAnMzrswqyK0bhTtxrl+Z/CLKqyoQ==", "dev": true, "engines": { "node": "^14.15.0 || >=16.10.0", @@ -3302,7 +3634,7 @@ }, "peerDependencies": { "@angular/compiler-cli": "^14.0.0", - "typescript": ">=4.6.2 <4.8", + "typescript": ">=4.6.2 <4.9", "webpack": "^5.54.0" } }, @@ -3342,9 +3674,9 @@ } }, "node_modules/@npmcli/fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.1.tgz", - "integrity": "sha512-1Q0uzx6c/NVNGszePbr5Gc2riSU1zLpNlo/1YWntH+eaPmMgBssAW0qXofCVkpdj3ce4swZtlDYQu+NKiYcptg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, "dependencies": { "@gar/promisify": "^1.1.3", @@ -3355,9 +3687,9 @@ } }, "node_modules/@npmcli/git": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.1.tgz", - "integrity": "sha512-UU85F/T+F1oVn3IsB/L6k9zXIMpXBuUBE25QDH0SsURwT6IOBqkC7M16uqo2vVZIyji3X1K4XH9luip7YekH1A==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", "dev": true, "dependencies": { "@npmcli/promise-spawn": "^3.0.0", @@ -3374,6 +3706,15 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/@npmcli/installed-package-contents": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", @@ -3391,9 +3732,10 @@ } }, "node_modules/@npmcli/move-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", - "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, "dependencies": { "mkdirp": "^1.0.4", @@ -3425,9 +3767,9 @@ } }, "node_modules/@npmcli/run-script": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.1.7.tgz", - "integrity": "sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", "dev": true, "dependencies": { "@npmcli/node-gyp": "^2.0.0", @@ -3441,64 +3783,36 @@ } }, "node_modules/@nrwl/cli": { - "version": "14.4.3", - "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.4.3.tgz", - "integrity": "sha512-9WzOOXgdf9YJxqte5e8KNkM3NWOuBgM7hz9jEOyw53Ht1Y2H8xLDPVkqDTS9kROgcyMQxHIjIcw80wZNaZL8Mw==", + "version": "14.8.6", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.8.6.tgz", + "integrity": "sha512-R4udxekMd4jhoRPEksJu+224DocOIrAqenFo0D2R36epE5FaCnZQX7xg+b3TjRbdS10e426i4D9LuXdQmP5jJg==", "dev": true, "dependencies": { - "nx": "14.4.3" + "nx": "14.8.6" } }, "node_modules/@nrwl/devkit": { - "version": "14.4.3", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.4.3.tgz", - "integrity": "sha512-CFGWQyzrqs4q7YUk37E5Ca+HDj9qbhfw6oI/Omf42MitEpoEnWxVKy/h1pua6ykHn8ZDVvS7sp6nrmg+r6OmDA==", + "version": "14.8.6", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.8.6.tgz", + "integrity": "sha512-+3KqohOKeUuyS176jrwY0yeB3E2IFQ3jMkS0KizzsHGsZWdZbQ2WQ46hZ0/bvRh9Efl8CAg6n4fUWR0BXUePMA==", "dev": true, "dependencies": { + "@phenomnomnominal/tsquery": "4.1.1", "ejs": "^3.1.7", "ignore": "^5.0.4", - "rxjs": "^6.5.4", - "semver": "7.3.4", "tslib": "^2.3.0" }, "peerDependencies": { "nx": ">= 13.10 <= 15" } }, - "node_modules/@nrwl/devkit/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@nrwl/devkit/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@nrwl/tao": { - "version": "14.4.3", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.4.3.tgz", - "integrity": "sha512-sHlnqTlJ/XEc/lv0MIKYI1R643CWFvYL6QyZD7f38FvP1RblZ6eVqvOJcrkpwcvRWcZNEY+GrQpb1Io1ZvMEmQ==", + "version": "14.8.6", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.8.6.tgz", + "integrity": "sha512-CByqrsfSJeonOd7TLAHP8bRYNWgDksxA7j+yncSzgQnFLEbZdJGG/AqqIovx8g6g2v0JS+nRgGC+w5UPf04UrQ==", "dev": true, "dependencies": { - "nx": "14.4.3" + "nx": "14.8.6" }, "bin": { "tao": "index.js" @@ -3522,14 +3836,26 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/@schematics/angular": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.1.0.tgz", - "integrity": "sha512-lhqNZzA+iT3XwlwRU757mhYmd5WE9XB2OKFhosvvszou2zuNUJMDPR9P01ZVNCOa2fScOeCMg2q3ZDgGTBl96Q==", + "node_modules/@phenomnomnominal/tsquery": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz", + "integrity": "sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ==", "dev": true, "dependencies": { - "@angular-devkit/core": "14.1.0", - "@angular-devkit/schematics": "14.1.0", + "esquery": "^1.0.1" + }, + "peerDependencies": { + "typescript": "^3 || ^4" + } + }, + "node_modules/@schematics/angular": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.10.tgz", + "integrity": "sha512-YFTc/9QJdx422XcApizEcVLKoyknu8b9zHIlAepZCu7WkV8GPT0hvVEHQ7KBWys5aQ7pPZMT0JpZLeAz0F2xYQ==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "14.2.10", + "@angular-devkit/schematics": "14.2.10", "jsonc-parser": "3.1.0" }, "engines": { @@ -3538,6 +3864,38 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@schematics/angular/node_modules/@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "dependencies": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@schematics/angular/node_modules/jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -3586,9 +3944,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "version": "8.4.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", + "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", "dev": true, "dependencies": { "@types/estree": "*", @@ -3612,21 +3970,21 @@ "dev": true }, "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz", + "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==", "dev": true, "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.31", "@types/qs": "*", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.29", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", - "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", + "version": "4.17.32", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz", + "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==", "dev": true, "dependencies": { "@types/node": "*", @@ -3656,9 +4014,9 @@ "dev": true }, "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", "dev": true }, "node_modules/@types/node": { @@ -3691,6 +4049,12 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "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==", + "dev": true + }, "node_modules/@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -3701,12 +4065,12 @@ } }, "node_modules/@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", "dev": true, "dependencies": { - "@types/mime": "^1", + "@types/mime": "*", "@types/node": "*" } }, @@ -3720,26 +4084,26 @@ } }, "node_modules/@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", + "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.31.0.tgz", - "integrity": "sha512-VKW4JPHzG5yhYQrQ1AzXgVgX8ZAJEvCz0QI6mLRX4tf7rnFfh5D8SKm0Pq6w5PyNfAWJk6sv313+nEt3ohWMBQ==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.0.tgz", + "integrity": "sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.31.0", - "@typescript-eslint/type-utils": "5.31.0", - "@typescript-eslint/utils": "5.31.0", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/type-utils": "5.48.0", + "@typescript-eslint/utils": "5.48.0", "debug": "^4.3.4", - "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", "regexpp": "^3.2.0", "semver": "^7.3.7", "tsutils": "^3.21.0" @@ -3762,17 +4126,19 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.31.0.tgz", - "integrity": "sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.0.tgz", + "integrity": "sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.31.0", - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/typescript-estree": "5.31.0", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.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" @@ -3786,14 +4152,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.31.0.tgz", - "integrity": "sha512-UStjQiZ9OFTFReTrN+iGrC6O/ko9LVDhreEK5S3edmXgR396JGq7CoX2TWIptqt/ESzU2iRKXAHfSF2WJFcWHw==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.0.tgz", + "integrity": "sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.31.0", - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/typescript-estree": "5.31.0", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.0", "debug": "^4.3.4" }, "engines": { @@ -3813,13 +4179,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz", - "integrity": "sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz", + "integrity": "sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/visitor-keys": "5.31.0" + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/visitor-keys": "5.48.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3830,12 +4196,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.31.0.tgz", - "integrity": "sha512-7ZYqFbvEvYXFn9ax02GsPcEOmuWNg+14HIf4q+oUuLnMbpJ6eHAivCg7tZMVwzrIuzX3QCeAOqKoyMZCv5xe+w==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.0.tgz", + "integrity": "sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.31.0", + "@typescript-eslint/typescript-estree": "5.48.0", + "@typescript-eslint/utils": "5.48.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -3856,17 +4223,19 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.31.0.tgz", - "integrity": "sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.0.tgz", + "integrity": "sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.31.0", - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/typescript-estree": "5.31.0", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.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" @@ -3880,9 +4249,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz", - "integrity": "sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.0.tgz", + "integrity": "sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3893,13 +4262,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz", - "integrity": "sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz", + "integrity": "sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/visitor-keys": "5.31.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/visitor-keys": "5.48.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4018,12 +4387,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz", - "integrity": "sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz", + "integrity": "sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/types": "5.48.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -4198,6 +4567,37 @@ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "dev": true }, + "node_modules/@yarnpkg/parsers": { + "version": "3.0.0-rc.34", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.34.tgz", + "integrity": "sha512-NhEA0BusInyk7EiJ7i7qF1Mkrb6gGjZcQQ/W1xxGazxapubEmGO7v5WSll6hWxFXE2ngtLj8lflq1Ff5VtqEww==", + "dev": true, + "dependencies": { + "js-yaml": "^3.10.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.15.0" + } + }, + "node_modules/@zkochan/js-yaml": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", + "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@zkochan/js-yaml/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", @@ -4224,9 +4624,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==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -4267,9 +4667,9 @@ } }, "node_modules/adjust-sourcemap-loader/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.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "dependencies": { "big.js": "^5.2.2", @@ -4416,9 +4816,9 @@ } }, "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", @@ -4445,16 +4845,16 @@ "dev": true }, "node_modules/are-we-there-yet": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/arg": { @@ -4475,7 +4875,7 @@ "node_modules/argparse/node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "node_modules/aria-query": { @@ -4515,22 +4915,16 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "node_modules/autoprefixer": { - "version": "10.4.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", - "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", "dev": true, "funding": [ { @@ -4543,8 +4937,8 @@ } ], "dependencies": { - "browserslist": "^4.20.3", - "caniuse-lite": "^1.0.30001335", + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -4560,6 +4954,17 @@ "postcss": "^8.1.0" } }, + "node_modules/axios": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz", + "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/axobject-query": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.0.1.tgz", @@ -4589,9 +4994,9 @@ } }, "node_modules/babel-loader/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.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "dependencies": { "big.js": "^5.2.2", @@ -4602,15 +5007,6 @@ "node": ">=8.9.0" } }, - "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==", - "dev": true, - "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", @@ -4628,13 +5024,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", - "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", "dev": true, "dependencies": { "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.2", + "@babel/helper-define-polyfill-provider": "^0.3.3", "semver": "^6.1.1" }, "peerDependencies": { @@ -4664,12 +5060,12 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1" + "@babel/helper-define-polyfill-provider": "^0.3.3" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -4737,9 +5133,9 @@ } }, "node_modules/body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -4750,7 +5146,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.10.3", + "qs": "6.11.0", "raw-body": "2.5.1", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -4794,9 +5190,9 @@ "dev": true }, "node_modules/bonjour-service": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", - "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", + "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", "dev": true, "dependencies": { "array-flatten": "^2.1.2", @@ -4833,9 +5229,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz", - "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, "funding": [ { @@ -4848,10 +5244,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001366", - "electron-to-chromium": "^1.4.188", + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.4" + "update-browserslist-db": "^1.0.9" }, "bin": { "browserslist": "cli.js" @@ -4919,9 +5315,9 @@ } }, "node_modules/cacache": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", - "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", + "version": "16.1.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.2.tgz", + "integrity": "sha512-Xx+xPlfCZIUHagysjjOAje9nRo8pRDczQCcXb4J2O0BLtH+xeVue6ba4y1kfJfQMAnM2mkcoMIAyOctlaRGWYA==", "dev": true, "dependencies": { "@npmcli/fs": "^2.1.0", @@ -4947,6 +5343,15 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -4979,9 +5384,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001370", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz", - "integrity": "sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g==", + "version": "1.0.30001441", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz", + "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==", "dev": true, "funding": [ { @@ -5015,9 +5420,9 @@ "dev": true }, "node_modules/chart.js": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.8.2.tgz", - "integrity": "sha512-7rqSlHWMUKFyBDOJvmFGW2lxULtcwaPLegDjX/Nu5j6QybY+GCiQkEY+6cqHw62S5tcwXMD8Y+H5OBGoR7d+ZQ==" + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.9.1.tgz", + "integrity": "sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w==" }, "node_modules/chokidar": { "version": "3.5.3", @@ -5076,7 +5481,7 @@ "node_modules/cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", "dev": true, "dependencies": { "restore-cursor": "^2.0.0" @@ -5294,6 +5699,18 @@ "node": ">=0.1.90" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -5351,6 +5768,12 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "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==", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -5384,26 +5807,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==", - "dev": true, - "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", @@ -5414,13 +5817,10 @@ } }, "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==", - "dev": true, - "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==", + "dev": true }, "node_modules/cookie": { "version": "0.5.0", @@ -5486,9 +5886,9 @@ } }, "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", "dev": true, "dependencies": { "dir-glob": "^3.0.1", @@ -5536,28 +5936,18 @@ } }, "node_modules/core-js-compat": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.0.tgz", - "integrity": "sha512-F+2E63X3ff/nj8uIrf8Rf24UDGIz7p838+xjEp+Bx3y8OWXj+VTPPZNCtdqovPaS9o7Tka5mCH01Zn5vOd6UQg==", + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz", + "integrity": "sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==", "dev": true, "dependencies": { - "browserslist": "^4.21.2", - "semver": "7.0.0" + "browserslist": "^4.21.4" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -5565,9 +5955,9 @@ "dev": true }, "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, "dependencies": { "@types/parse-json": "^4.0.0", @@ -5684,17 +6074,6 @@ "node": ">= 8" } }, - "node_modules/css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - } - }, "node_modules/css-blank-pseudo": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", @@ -5811,15 +6190,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cssauron": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", @@ -5831,9 +6201,9 @@ } }, "node_modules/cssdb": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.3.tgz", - "integrity": "sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.2.0.tgz", + "integrity": "sha512-JYlIsE7eKHSi0UNuCyo96YuIDFqvhGgHw4Ck6lsN+DP0Tp8M64UTDT2trGbkMDqnCoEjks7CkS0XcjU0rkvBdg==", "dev": true, "funding": { "type": "opencollective", @@ -5876,15 +6246,6 @@ } } }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -5904,12 +6265,15 @@ } }, "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "dependencies": { "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/define-lazy-prop": { @@ -5921,20 +6285,13 @@ "node": ">=8" } }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.4.0" } }, "node_modules/delegates": { @@ -5946,7 +6303,7 @@ "node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, "engines": { "node": ">= 0.6" @@ -6105,6 +6462,12 @@ "node": ">=10" } }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -6127,9 +6490,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.200", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.200.tgz", - "integrity": "sha512-nPyI7oHc8T64oSqRXrAt99gNMpk0SAgPHw/o+hkNKyb5+bcdnFtZcSO9FUJES5cVkVZvo8u4qiZ1gQILl8UXsA==", + "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==", "dev": true }, "node_modules/emoji-regex": { @@ -6189,9 +6552,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -6266,9 +6629,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz", - "integrity": "sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz", + "integrity": "sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg==", "dev": true, "hasInstallScript": true, "optional": true, @@ -6279,32 +6642,33 @@ "node": ">=12" }, "optionalDependencies": { - "esbuild-android-64": "0.14.49", - "esbuild-android-arm64": "0.14.49", - "esbuild-darwin-64": "0.14.49", - "esbuild-darwin-arm64": "0.14.49", - "esbuild-freebsd-64": "0.14.49", - "esbuild-freebsd-arm64": "0.14.49", - "esbuild-linux-32": "0.14.49", - "esbuild-linux-64": "0.14.49", - "esbuild-linux-arm": "0.14.49", - "esbuild-linux-arm64": "0.14.49", - "esbuild-linux-mips64le": "0.14.49", - "esbuild-linux-ppc64le": "0.14.49", - "esbuild-linux-riscv64": "0.14.49", - "esbuild-linux-s390x": "0.14.49", - "esbuild-netbsd-64": "0.14.49", - "esbuild-openbsd-64": "0.14.49", - "esbuild-sunos-64": "0.14.49", - "esbuild-windows-32": "0.14.49", - "esbuild-windows-64": "0.14.49", - "esbuild-windows-arm64": "0.14.49" + "@esbuild/linux-loong64": "0.15.5", + "esbuild-android-64": "0.15.5", + "esbuild-android-arm64": "0.15.5", + "esbuild-darwin-64": "0.15.5", + "esbuild-darwin-arm64": "0.15.5", + "esbuild-freebsd-64": "0.15.5", + "esbuild-freebsd-arm64": "0.15.5", + "esbuild-linux-32": "0.15.5", + "esbuild-linux-64": "0.15.5", + "esbuild-linux-arm": "0.15.5", + "esbuild-linux-arm64": "0.15.5", + "esbuild-linux-mips64le": "0.15.5", + "esbuild-linux-ppc64le": "0.15.5", + "esbuild-linux-riscv64": "0.15.5", + "esbuild-linux-s390x": "0.15.5", + "esbuild-netbsd-64": "0.15.5", + "esbuild-openbsd-64": "0.15.5", + "esbuild-sunos-64": "0.15.5", + "esbuild-windows-32": "0.15.5", + "esbuild-windows-64": "0.15.5", + "esbuild-windows-arm64": "0.15.5" } }, "node_modules/esbuild-android-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz", - "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.5.tgz", + "integrity": "sha512-dYPPkiGNskvZqmIK29OPxolyY3tp+c47+Fsc2WYSOVjEPWNCHNyqhtFqQadcXMJDQt8eN0NMDukbyQgFcHquXg==", "cpu": [ "x64" ], @@ -6318,9 +6682,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz", - "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.5.tgz", + "integrity": "sha512-YyEkaQl08ze3cBzI/4Cm1S+rVh8HMOpCdq8B78JLbNFHhzi4NixVN93xDrHZLztlocEYqi45rHHCgA8kZFidFg==", "cpu": [ "arm64" ], @@ -6334,9 +6698,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz", - "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.5.tgz", + "integrity": "sha512-Cr0iIqnWKx3ZTvDUAzG0H/u9dWjLE4c2gTtRLz4pqOBGjfjqdcZSfAObFzKTInLLSmD0ZV1I/mshhPoYSBMMCQ==", "cpu": [ "x64" ], @@ -6350,9 +6714,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz", - "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.5.tgz", + "integrity": "sha512-WIfQkocGtFrz7vCu44ypY5YmiFXpsxvz2xqwe688jFfSVCnUsCn2qkEVDo7gT8EpsLOz1J/OmqjExePL1dr1Kg==", "cpu": [ "arm64" ], @@ -6366,9 +6730,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz", - "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.5.tgz", + "integrity": "sha512-M5/EfzV2RsMd/wqwR18CELcenZ8+fFxQAAEO7TJKDmP3knhWSbD72ILzrXFMMwshlPAS1ShCZ90jsxkm+8FlaA==", "cpu": [ "x64" ], @@ -6382,9 +6746,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz", - "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.5.tgz", + "integrity": "sha512-2JQQ5Qs9J0440F/n/aUBNvY6lTo4XP/4lt1TwDfHuo0DY3w5++anw+jTjfouLzbJmFFiwmX7SmUhMnysocx96w==", "cpu": [ "arm64" ], @@ -6398,9 +6762,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz", - "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.5.tgz", + "integrity": "sha512-gO9vNnIN0FTUGjvTFucIXtBSr1Woymmx/aHQtuU+2OllGU6YFLs99960UD4Dib1kFovVgs59MTXwpFdVoSMZoQ==", "cpu": [ "ia32" ], @@ -6414,9 +6778,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz", - "integrity": "sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz", + "integrity": "sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg==", "cpu": [ "x64" ], @@ -6430,9 +6794,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz", - "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.5.tgz", + "integrity": "sha512-wvAoHEN+gJ/22gnvhZnS/+2H14HyAxM07m59RSLn3iXrQsdS518jnEWRBnJz3fR6BJa+VUTo0NxYjGaNt7RA7Q==", "cpu": [ "arm" ], @@ -6446,9 +6810,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz", - "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.5.tgz", + "integrity": "sha512-7EgFyP2zjO065XTfdCxiXVEk+f83RQ1JsryN1X/VSX2li9rnHAt2swRbpoz5Vlrl6qjHrCmq5b6yxD13z6RheA==", "cpu": [ "arm64" ], @@ -6462,9 +6826,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz", - "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.5.tgz", + "integrity": "sha512-KdnSkHxWrJ6Y40ABu+ipTZeRhFtc8dowGyFsZY5prsmMSr1ZTG9zQawguN4/tunJ0wy3+kD54GaGwdcpwWAvZQ==", "cpu": [ "mips64el" ], @@ -6478,9 +6842,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz", - "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.5.tgz", + "integrity": "sha512-QdRHGeZ2ykl5P0KRmfGBZIHmqcwIsUKWmmpZTOq573jRWwmpfRmS7xOhmDHBj9pxv+6qRMH8tLr2fe+ZKQvCYw==", "cpu": [ "ppc64" ], @@ -6494,9 +6858,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz", - "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.5.tgz", + "integrity": "sha512-p+WE6RX+jNILsf+exR29DwgV6B73khEQV0qWUbzxaycxawZ8NE0wA6HnnTxbiw5f4Gx9sJDUBemh9v49lKOORA==", "cpu": [ "riscv64" ], @@ -6510,9 +6874,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz", - "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.5.tgz", + "integrity": "sha512-J2ngOB4cNzmqLHh6TYMM/ips8aoZIuzxJnDdWutBw5482jGXiOzsPoEF4j2WJ2mGnm7FBCO4StGcwzOgic70JQ==", "cpu": [ "s390x" ], @@ -6526,9 +6890,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz", - "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.5.tgz", + "integrity": "sha512-MmKUYGDizYjFia0Rwt8oOgmiFH7zaYlsoQ3tIOfPxOqLssAsEgG0MUdRDm5lliqjiuoog8LyDu9srQk5YwWF3w==", "cpu": [ "x64" ], @@ -6542,9 +6906,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz", - "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.5.tgz", + "integrity": "sha512-2mMFfkLk3oPWfopA9Plj4hyhqHNuGyp5KQyTT9Rc8hFd8wAn5ZrbJg+gNcLMo2yzf8Uiu0RT6G9B15YN9WQyMA==", "cpu": [ "x64" ], @@ -6558,9 +6922,9 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz", - "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.5.tgz", + "integrity": "sha512-2sIzhMUfLNoD+rdmV6AacilCHSxZIoGAU2oT7XmJ0lXcZWnCvCtObvO6D4puxX9YRE97GodciRGDLBaiC6x1SA==", "cpu": [ "x64" ], @@ -6574,9 +6938,9 @@ } }, "node_modules/esbuild-wasm": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.49.tgz", - "integrity": "sha512-5ddzZv8M3WI1fWZ5rEfK5cSA9swlWJcceKgqjKLLERC7FnlNW50kF7hxhpkyC0Z/4w7Xeyt3yUJ9QWNMDXLk2Q==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.5.tgz", + "integrity": "sha512-lTJOEKekN/4JI/eOEq0wLcx53co2N6vaT/XjBz46D1tvIVoUEyM0o2K6txW6gEotf31szFD/J1PbxmnbkGlK9A==", "dev": true, "bin": { "esbuild": "bin/esbuild" @@ -6586,9 +6950,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz", - "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.5.tgz", + "integrity": "sha512-e+duNED9UBop7Vnlap6XKedA/53lIi12xv2ebeNS4gFmu7aKyTrok7DPIZyU5w/ftHD4MUDs5PJUkQPP9xJRzg==", "cpu": [ "ia32" ], @@ -6602,9 +6966,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz", - "integrity": "sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.5.tgz", + "integrity": "sha512-v+PjvNtSASHOjPDMIai9Yi+aP+Vwox+3WVdg2JB8N9aivJ7lyhp4NVU+J0MV2OkWFPnVO8AE/7xH+72ibUUEnw==", "cpu": [ "x64" ], @@ -6618,9 +6982,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz", - "integrity": "sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.5.tgz", + "integrity": "sha512-Yz8w/D8CUPYstvVQujByu6mlf48lKmXkq6bkeSZZxTA626efQOJb26aDGLzmFWx6eg/FwrXgt6SZs9V8Pwy/aA==", "cpu": [ "arm64" ], @@ -6658,13 +7022,15 @@ } }, "node_modules/eslint": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz", - "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz", + "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", + "@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", @@ -6674,18 +7040,21 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", + "espree": "^9.4.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.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", "levn": "^0.4.1", @@ -6696,8 +7065,7 @@ "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" @@ -6873,6 +7241,22 @@ "node": ">=4.0" } }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -6886,9 +7270,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -6927,6 +7311,21 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -6939,6 +7338,36 @@ "node": "*" } }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6964,17 +7393,20 @@ } }, "node_modules/espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", "dev": true, "dependencies": { - "acorn": "^8.7.1", + "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { @@ -7128,14 +7560,14 @@ } }, "node_modules/express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.0", + "body-parser": "1.20.1", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.5.0", @@ -7154,7 +7586,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.10.3", + "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.18.0", @@ -7199,26 +7631,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "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==", - "dev": true, - "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/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -7252,9 +7664,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -7287,9 +7699,9 @@ "peer": true }, "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -7310,7 +7722,7 @@ "node_modules/figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "dev": true, "dependencies": { "escape-string-regexp": "^1.0.5" @@ -7438,15 +7850,15 @@ } }, "node_modules/flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true, "funding": [ { @@ -7463,6 +7875,20 @@ } } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -7558,12 +7984,6 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, "node_modules/fuzzy": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz", @@ -7634,9 +8054,9 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "dependencies": { "function-bind": "^1.1.1", @@ -7740,6 +8160,12 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -7767,18 +8193,6 @@ "node": ">=4" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -7815,15 +8229,24 @@ "dev": true }, "node_modules/hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, "dependencies": { "lru-cache": "^7.5.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" } }, "node_modules/hpack.js": { @@ -7853,6 +8276,12 @@ "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==", + "dev": true + }, "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", @@ -8095,9 +8524,9 @@ } }, "node_modules/immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.1.tgz", + "integrity": "sha512-7WYV7Q5BTs0nlQm7tl92rDYYoyELLKHoDMBKhrxEoiV4mrfVdRz8hzPiYOzH7yWjzoVEamxRuAqhxL2PLRwZYQ==", "dev": true }, "node_modules/import-fresh": { @@ -8372,9 +8801,9 @@ } }, "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -8410,7 +8839,7 @@ "node_modules/is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, "engines": { "node": ">=4" @@ -8452,6 +8881,15 @@ "node": ">=0.12.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==", + "dev": true, + "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", @@ -8549,9 +8987,9 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "dependencies": { "@babel/core": "^7.12.3", @@ -8736,6 +9174,16 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/js-sdsl": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -8786,10 +9234,9 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true, + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "bin": { "json5": "lib/cli.js" }, @@ -8798,9 +9245,9 @@ } }, "node_modules/jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, "node_modules/jsonfile": { @@ -8987,10 +9434,9 @@ } }, "node_modules/loader-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", - "dev": true, + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", "engines": { "node": ">= 12.13.0" } @@ -9117,12 +9563,12 @@ } }, "node_modules/lru-cache": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.13.1.tgz", - "integrity": "sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "engines": { - "node": ">=12" + "dependencies": { + "yallist": "^3.0.2" } }, "node_modules/magic-string": { @@ -9168,9 +9614,9 @@ "dev": true }, "node_modules/make-fetch-happen": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.0.tgz", - "integrity": "sha512-OnEfCLofQVJ5zgKwGk55GaqosqKjaR6khQlJY3dBAA+hM25Bc5CmX5rKUfVut+rYA3uidA7zb7AvcglU87rPRg==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, "dependencies": { "agentkeepalive": "^4.2.1", @@ -9194,6 +9640,15 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -9204,9 +9659,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.12", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.12.tgz", + "integrity": "sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==", "dev": true, "dependencies": { "fs-monkey": "^1.0.3" @@ -9357,15 +9812,17 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "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/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "dependencies": { "yallist": "^4.0.0" @@ -9387,9 +9844,9 @@ } }, "node_modules/minipass-fetch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", - "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, "dependencies": { "minipass": "^3.1.6", @@ -9449,6 +9906,12 @@ "node": ">=8" } }, + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", @@ -9462,6 +9925,12 @@ "node": ">= 8" } }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -9504,7 +9973,7 @@ "node_modules/mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", "dev": true }, "node_modules/nanoid": { @@ -9525,10 +9994,16 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "node_modules/needle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", - "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", "dev": true, "optional": true, "dependencies": { @@ -9582,17 +10057,18 @@ "dev": true }, "node_modules/ng2-charts": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-4.0.0.tgz", - "integrity": "sha512-1COLMs1UH8XIurk9C3pBQW3zH4RM3ggPtaC5vGjEmRGZ2cK/j8DqpzN4xMqyk0KB4D2vw/ZejgXmxxZ4Ie58Rw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-4.1.1.tgz", + "integrity": "sha512-iHwXDbmX86lfeH8VRcsaW2tJATsuAZo4kvvC/Yk2l35zOHjevja1qBvO6BAibiDazi9r9aS6ZRJOqWPsz1pP2w==", "dependencies": { "lodash-es": "^4.17.15", "tslib": "^2.3.0" }, "peerDependencies": { + "@angular/cdk": ">=14.0.0", "@angular/common": ">=14.0.0", "@angular/core": ">=14.0.0", - "chart.js": "^3.4.0", + "chart.js": "^3.4.0 || ^4.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -9627,16 +10103,16 @@ } }, "node_modules/node-gyp": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.1.0.tgz", - "integrity": "sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.1.tgz", + "integrity": "sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==", "dev": true, "dependencies": { "env-paths": "^2.2.0", "glob": "^7.1.4", "graceful-fs": "^4.2.6", "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", + "nopt": "^6.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", "semver": "^7.3.5", @@ -9647,7 +10123,7 @@ "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": "^12.22 || ^14.13 || >=16" + "node": "^12.13 || ^14.13 || >=16" } }, "node_modules/node-gyp-build": { @@ -9704,30 +10180,30 @@ } }, "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", "dev": true }, "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, "dependencies": { - "abbrev": "1" + "abbrev": "^1.0.0" }, "bin": { "nopt": "bin/nopt.js" }, "engines": { - "node": ">=6" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/normalize-package-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.0.tgz", - "integrity": "sha512-m+GL22VXJKkKbw62ZaBBjv8u6IE3UI4Mh5QakIqs3fWiKe0Xyi6L97hakwZK41/LD4R/2ly71Bayx0NLMwLA/g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", "dev": true, "dependencies": { "hosted-git-info": "^5.0.0", @@ -9736,7 +10212,7 @@ "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/normalize-path": { @@ -9800,15 +10276,15 @@ } }, "node_modules/npm-packlist": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz", - "integrity": "sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", + "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", "dev": true, "dependencies": { "glob": "^8.0.1", "ignore-walk": "^5.0.1", - "npm-bundled": "^1.1.2", - "npm-normalize-package-bin": "^1.0.1" + "npm-bundled": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0" }, "bin": { "npm-packlist": "bin/index.js" @@ -9817,6 +10293,27 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/npm-packlist/node_modules/npm-bundled": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", + "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/npm-pick-manifest": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", @@ -9833,9 +10330,9 @@ } }, "node_modules/npm-registry-fetch": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.0.tgz", - "integrity": "sha512-10LJQ/1+VhKrZjIuY9I/+gQTvumqqlgnsCufoXETHAPFTS3+M+Z5CFhZRDHGavmJ6rOye3UvNga88vl8n1r6gg==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", "dev": true, "dependencies": { "make-fetch-happen": "^10.0.6", @@ -9890,15 +10387,19 @@ } }, "node_modules/nx": { - "version": "14.4.3", - "resolved": "https://registry.npmjs.org/nx/-/nx-14.4.3.tgz", - "integrity": "sha512-XPaoEAfJI9056qdwTvkutQSwwA3iihqNDwhvk3dmgpT35j8Uzm/y67goACaCUBCjP2dIQqXfNfJVWQIpcG3MTw==", + "version": "14.8.6", + "resolved": "https://registry.npmjs.org/nx/-/nx-14.8.6.tgz", + "integrity": "sha512-QLU3sip/g3JdNO8n5Nw2esN+0G26Jsy3u1LlrB9Giu4zf/+KsfN8CcXMbEVqOnPR1FkCS52xliaq7IBQfvvMQA==", "dev": true, "hasInstallScript": true, "dependencies": { - "@nrwl/cli": "14.4.3", - "@nrwl/tao": "14.4.3", + "@nrwl/cli": "14.8.6", + "@nrwl/tao": "14.8.6", "@parcel/watcher": "2.0.4", + "@yarnpkg/lockfile": "^1.1.0", + "@yarnpkg/parsers": "^3.0.0-rc.18", + "@zkochan/js-yaml": "0.0.6", + "axios": "^1.0.0", "chalk": "4.1.0", "chokidar": "^3.5.1", "cli-cursor": "3.1.0", @@ -9913,12 +10414,13 @@ "glob": "7.1.4", "ignore": "^5.0.4", "js-yaml": "4.1.0", - "jsonc-parser": "3.0.0", + "jsonc-parser": "3.2.0", "minimatch": "3.0.5", "npm-run-path": "^4.0.1", "open": "^8.4.0", "semver": "7.3.4", "string-width": "^4.2.3", + "strong-log-transformer": "^2.1.0", "tar-stream": "~2.2.0", "tmp": "~0.2.1", "tsconfig-paths": "^3.9.0", @@ -10098,11 +10600,17 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/nx/node_modules/jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true + "node_modules/nx/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } }, "node_modules/nx/node_modules/lru-cache": { "version": "6.0.0", @@ -10223,6 +10731,24 @@ "node": ">=8" } }, + "node_modules/nx/node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/nx/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", @@ -10232,33 +10758,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -10298,7 +10797,7 @@ "node_modules/onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", "dev": true, "dependencies": { "mimic-fn": "^1.0.0" @@ -10565,9 +11064,9 @@ } }, "node_modules/pacote": { - "version": "13.6.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.1.tgz", - "integrity": "sha512-L+2BI1ougAPsFjXRyBhcKmfT016NscRFLv6Pz5EiNf1CCFJFU0pSKKQwsZTyAQB+sTuUL4TyFyp6J1Ork3dOqw==", + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", "dev": true, "dependencies": { "@npmcli/git": "^3.0.0", @@ -10774,7 +11273,7 @@ "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "engines": { "node": ">=0.10.0" @@ -10807,9 +11306,9 @@ } }, "node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", "dev": true, "funding": [ { @@ -10941,9 +11440,9 @@ } }, "node_modules/postcss-custom-properties": { - "version": "12.1.8", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.8.tgz", - "integrity": "sha512-8rbj8kVu00RQh2fQF81oBqtduiANu4MIxhyf0HbbStgPtnFlWn0yiaYTpLHrPnJbffVY1s9apWsIoVZcc68FxA==", + "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -10956,7 +11455,7 @@ "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.4" + "postcss": "^8.2" } }, "node_modules/postcss-custom-selectors": { @@ -11107,9 +11606,9 @@ } }, "node_modules/postcss-import": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.0.0.tgz", + "integrity": "sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==", "dev": true, "dependencies": { "postcss-value-parser": "^4.0.0", @@ -11117,7 +11616,7 @@ "resolve": "^1.1.7" }, "engines": { - "node": ">=10.0.0" + "node": ">=14.0.0" }, "peerDependencies": { "postcss": "^8.0.0" @@ -11258,9 +11757,9 @@ } }, "node_modules/postcss-nesting": { - "version": "10.1.10", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.10.tgz", - "integrity": "sha512-lqd7LXCq0gWc0wKXtoKDru5wEUNjm3OryLVNRZ8OnW8km6fSNUuFrjEhU3nklxXE2jvd4qrox566acgh+xQt8w==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", "dev": true, "dependencies": { "@csstools/selector-specificity": "^2.0.0", @@ -11278,9 +11777,9 @@ } }, "node_modules/postcss-opacity-percentage": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", - "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", "dev": true, "funding": [ { @@ -11294,6 +11793,9 @@ ], "engines": { "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.2" } }, "node_modules/postcss-overflow-shorthand": { @@ -11344,57 +11846,59 @@ } }, "node_modules/postcss-preset-env": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.7.2.tgz", - "integrity": "sha512-1q0ih7EDsZmCb/FMDRvosna7Gsbdx8CvYO5hYT120hcp2ZAuOHpSzibujZ4JpIUcAC02PG6b+eftxqjTFh5BNA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.0.tgz", + "integrity": "sha512-leqiqLOellpLKfbHkD06E04P6d9ZQ24mat6hu4NSqun7WG0UhspHR5Myiv/510qouCjoo4+YJtNOqg5xHaFnCA==", "dev": true, "dependencies": { - "@csstools/postcss-cascade-layers": "^1.0.4", - "@csstools/postcss-color-function": "^1.1.0", - "@csstools/postcss-font-format-keywords": "^1.0.0", - "@csstools/postcss-hwb-function": "^1.0.1", - "@csstools/postcss-ic-unit": "^1.0.0", - "@csstools/postcss-is-pseudo-class": "^2.0.6", - "@csstools/postcss-normalize-display-values": "^1.0.0", - "@csstools/postcss-oklab-function": "^1.1.0", + "@csstools/postcss-cascade-layers": "^1.0.5", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.1", - "@csstools/postcss-unset-value": "^1.0.1", - "autoprefixer": "^10.4.7", - "browserslist": "^4.21.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.8", + "browserslist": "^4.21.3", "css-blank-pseudo": "^3.0.3", "css-has-pseudo": "^3.0.4", "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^6.6.3", - "postcss-attribute-case-insensitive": "^5.0.1", + "cssdb": "^7.0.0", + "postcss-attribute-case-insensitive": "^5.0.2", "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.3", + "postcss-color-functional-notation": "^4.2.4", "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.0", + "postcss-color-rebeccapurple": "^7.1.1", "postcss-custom-media": "^8.0.2", "postcss-custom-properties": "^12.1.8", "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.4", - "postcss-double-position-gradients": "^3.1.1", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", "postcss-env-function": "^4.0.6", "postcss-focus-visible": "^6.0.4", "postcss-focus-within": "^5.0.4", "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.3", - "postcss-image-set-function": "^4.0.6", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.0", + "postcss-lab-function": "^4.2.1", "postcss-logical": "^5.0.4", "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.1.9", + "postcss-nesting": "^10.1.10", "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.3", + "postcss-overflow-shorthand": "^3.0.4", "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.4", - "postcss-pseudo-class-any-link": "^7.1.5", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.0", + "postcss-selector-not": "^6.0.1", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -11456,9 +11960,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -11551,6 +12055,12 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -11568,9 +12078,9 @@ } }, "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, "dependencies": { "side-channel": "^1.0.4" @@ -11654,15 +12164,15 @@ } }, "node_modules/read-package-json": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz", - "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", "dev": true, "dependencies": { "glob": "^8.0.1", "json-parse-even-better-errors": "^2.3.1", "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1" + "npm-normalize-package-bin": "^2.0.0" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" @@ -11681,6 +12191,15 @@ "node": ">=10" } }, + "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -11720,9 +12239,9 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, "dependencies": { "regenerate": "^1.4.2" @@ -11738,9 +12257,9 @@ "dev": true }, "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" @@ -11765,32 +12284,32 @@ } }, "node_modules/regexpu-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", - "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", "dev": true, "dependencies": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" + "unicode-match-property-value-ecmascript": "^2.1.0" }, "engines": { "node": ">=4" } }, "node_modules/regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", "dev": true }, "node_modules/regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -11875,9 +12394,9 @@ } }, "node_modules/resolve-url-loader/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.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "dependencies": { "big.js": "^5.2.2", @@ -11900,7 +12419,7 @@ "node_modules/restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "dev": true, "dependencies": { "onetime": "^2.0.0", @@ -12035,10 +12554,24 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "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==", - "dev": true + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "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/safer-buffer": { "version": "2.1.2", @@ -12047,9 +12580,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", - "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", + "version": "1.54.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz", + "integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -12163,9 +12696,9 @@ "dev": true }, "node_modules/selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dev": true, "dependencies": { "node-forge": "^1" @@ -12221,6 +12754,12 @@ "node": ">=10" } }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -12464,9 +13003,9 @@ } }, "node_modules/socks": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", - "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "dev": true, "dependencies": { "ip": "^2.0.0", @@ -12542,17 +13081,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -12576,6 +13104,7 @@ "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", "dev": true }, "node_modules/spdx-correct": { @@ -12605,9 +13134,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, "node_modules/spdy": { @@ -12677,26 +13206,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==", - "dev": true, - "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-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -12722,7 +13231,7 @@ "node_modules/string-width/node_modules/strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "dependencies": { "ansi-regex": "^3.0.0" @@ -12747,7 +13256,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, "engines": { "node": ">=4" } @@ -12773,13 +13281,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylus": { - "version": "0.58.1", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.58.1.tgz", - "integrity": "sha512-AYiCHm5ogczdCPMfe9aeQa4NklB2gcf4D/IhzYPddJjTgPc+k4D/EVE0yfQbZD43MHP3lPy+8NZ9fcFxkrgs/w==", + "node_modules/strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", "dev": true, "dependencies": { - "css": "^3.0.0", + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + }, + "bin": { + "sl-log-transformer": "bin/sl-log-transformer.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/stylus": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", + "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", + "dev": true, + "dependencies": { + "@adobe/css-tools": "^4.0.1", "debug": "^4.3.2", "glob": "^7.1.6", "sax": "~1.2.4", @@ -12790,6 +13315,9 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://opencollective.com/stylus" } }, "node_modules/stylus-loader": { @@ -12899,20 +13427,20 @@ } }, "node_modules/tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", "dev": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^4.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" }, "engines": { - "node": ">= 10" + "node": ">=10" } }, "node_modules/tar-stream": { @@ -12931,6 +13459,24 @@ "node": ">=6" } }, + "node_modules/tar/node_modules/minipass": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/terser": { "version": "5.14.2", "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", @@ -12950,16 +13496,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "terser": "^5.14.1" }, "engines": { "node": ">= 10.13.0" @@ -13183,33 +13729,22 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.1.2.tgz", + "integrity": "sha512-uhxiMgnXQp1IR622dUXI+9Ehnws7i/y6xvpZB9IbUVOPy0muvdvgXeZOn88UcGPiT98Vp3rJPTa8bFoalZ3Qhw==", "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^2.2.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" }, - "bin": { - "json5": "lib/cli.js" + "engines": { + "node": ">=6" } }, "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, "node_modules/tslint": { "version": "6.1.3", @@ -13441,18 +13976,18 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, "engines": { "node": ">=4" @@ -13495,9 +14030,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "dev": true, "funding": [ { @@ -13622,9 +14157,9 @@ } }, "node_modules/webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -13632,11 +14167,11 @@ "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", + "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", + "enhanced-resolve": "^5.10.0", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -13649,7 +14184,7 @@ "schema-utils": "^3.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "bin": { @@ -13711,9 +14246,9 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.3.tgz", - "integrity": "sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz", + "integrity": "sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw==", "dev": true, "dependencies": { "@types/bonjour": "^3.5.9", @@ -14035,9 +14570,9 @@ "dev": true }, "node_modules/ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, "engines": { "node": ">=10.0.0" @@ -14065,9 +14600,9 @@ } }, "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "node_modules/yaml": { @@ -14138,16 +14673,34 @@ "node": ">=6" } }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zone.js": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.7.tgz", - "integrity": "sha512-e39K2EdK5JfA3FDuUTVRvPlYV4aBfnOOcGuILhQAT7nzeV12uSrLBzImUM9CDVoncDSX4brR/gwqu0heQ3BQ0g==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", + "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", "dependencies": { "tslib": "^2.3.0" } } }, "dependencies": { + "@adobe/css-tools": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", + "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", + "dev": true + }, "@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -14159,46 +14712,46 @@ } }, "@angular-devkit/architect": { - "version": "0.1401.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1401.0.tgz", - "integrity": "sha512-dHgP2/5EXkJpdf6Y1QHQX2RP8xTli/CFZH3uNnTh+EuAib/kwu+Z6K3UttZWB5VGhAF1u/xf97Vly/UkXvjKAg==", + "version": "0.1401.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1401.3.tgz", + "integrity": "sha512-DQvKfl8Q9c02jpGqZX1nOL4mAnRBU6BSqPlhi1q17ZrB8sQpYtDBb8Epn2DDq48l7SQVFnRg6Zgje9L1LObURg==", "dev": true, "requires": { - "@angular-devkit/core": "14.1.0", + "@angular-devkit/core": "14.1.3", "rxjs": "6.6.7" } }, "@angular-devkit/build-angular": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.1.0.tgz", - "integrity": "sha512-AtecSuDEPLYd3p7uFVKpoA0XNcq+NvVYFJK8h90BG+IRZtzEm7ZJeYdohXVeVfTO5GvpNFN1XoHxR5rxiXeBhg==", + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.10.tgz", + "integrity": "sha512-VCeZAyq4uPCJukKInaSiD4i/GgxgcU4jFlLFQtoYNmaBS4xbPOymL19forRIihiV0dwNEa2L694vRTAPMBxIfw==", "dev": true, "requires": { "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1401.0", - "@angular-devkit/build-webpack": "0.1401.0", - "@angular-devkit/core": "14.1.0", - "@babel/core": "7.18.6", - "@babel/generator": "7.18.7", + "@angular-devkit/architect": "0.1402.10", + "@angular-devkit/build-webpack": "0.1402.10", + "@angular-devkit/core": "14.2.10", + "@babel/core": "7.18.10", + "@babel/generator": "7.18.12", "@babel/helper-annotate-as-pure": "7.18.6", - "@babel/plugin-proposal-async-generator-functions": "7.18.6", + "@babel/plugin-proposal-async-generator-functions": "7.18.10", "@babel/plugin-transform-async-to-generator": "7.18.6", - "@babel/plugin-transform-runtime": "7.18.6", - "@babel/preset-env": "7.18.6", - "@babel/runtime": "7.18.6", - "@babel/template": "7.18.6", + "@babel/plugin-transform-runtime": "7.18.10", + "@babel/preset-env": "7.18.10", + "@babel/runtime": "7.18.9", + "@babel/template": "7.18.10", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.1.0", + "@ngtools/webpack": "14.2.10", "ansi-colors": "4.1.3", "babel-loader": "8.2.5", "babel-plugin-istanbul": "6.1.1", "browserslist": "^4.9.1", - "cacache": "16.1.1", + "cacache": "16.1.2", "copy-webpack-plugin": "11.0.0", "critters": "0.0.16", "css-loader": "6.7.1", - "esbuild": "0.14.49", - "esbuild-wasm": "0.14.49", + "esbuild": "0.15.5", + "esbuild-wasm": "0.15.5", "glob": "8.0.3", "https-proxy-agent": "5.0.1", "inquirer": "8.2.4", @@ -14207,38 +14760,61 @@ "less": "4.1.3", "less-loader": "11.0.0", "license-webpack-plugin": "4.0.2", - "loader-utils": "3.2.0", + "loader-utils": "3.2.1", "mini-css-extract-plugin": "2.6.1", "minimatch": "5.1.0", "open": "8.4.0", "ora": "5.4.1", "parse5-html-rewriting-stream": "6.0.1", "piscina": "3.2.0", - "postcss": "8.4.14", - "postcss-import": "14.1.0", + "postcss": "8.4.16", + "postcss-import": "15.0.0", "postcss-loader": "7.0.1", - "postcss-preset-env": "7.7.2", + "postcss-preset-env": "7.8.0", "regenerator-runtime": "0.13.9", "resolve-url-loader": "5.0.0", "rxjs": "6.6.7", - "sass": "1.53.0", + "sass": "1.54.4", "sass-loader": "13.0.2", "semver": "7.3.7", "source-map-loader": "4.0.0", "source-map-support": "0.5.21", - "stylus": "0.58.1", + "stylus": "0.59.0", "stylus-loader": "7.0.0", "terser": "5.14.2", "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.4.0", - "webpack": "5.73.0", + "webpack": "5.74.0", "webpack-dev-middleware": "5.3.3", - "webpack-dev-server": "4.9.3", + "webpack-dev-server": "4.11.0", "webpack-merge": "5.8.0", "webpack-subresource-integrity": "5.1.0" }, "dependencies": { + "@angular-devkit/architect": { + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.10.tgz", + "integrity": "sha512-/6YmPrgataj1jD2Uqd1ED+CG4DaZGacoeZd/89hH7hF76Nno8K18DrSOqJAEmDnOWegpSRGVLd0qP09IHmaG5w==", + "dev": true, + "requires": { + "@angular-devkit/core": "14.2.10", + "rxjs": "6.6.7" + } + }, + "@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "requires": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + } + }, "ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -14336,9 +14912,9 @@ }, "dependencies": { "rxjs": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", - "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", "dev": true, "requires": { "tslib": "^2.1.0" @@ -14352,6 +14928,12 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, + "jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -14413,23 +14995,60 @@ "requires": { "has-flag": "^4.0.0" } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true } } }, "@angular-devkit/build-webpack": { - "version": "0.1401.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1401.0.tgz", - "integrity": "sha512-jKfnHal09mVnEapmNrAHXL/00LfafmfEUtlOPzQMgGJL7MWCeMcFthsbcOnGuzUerbiiquRk/KmLTERYjH+ZrQ==", + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.10.tgz", + "integrity": "sha512-h+2MaSY7QSvoJ3R+Hvin21jVCfPGOTLdASIUk4Jmq6J3y5BSku3KSSaV8dWoBOBkFCwQyPQMRjiHoHKLpC1K7g==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1401.0", + "@angular-devkit/architect": "0.1402.10", "rxjs": "6.6.7" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.10.tgz", + "integrity": "sha512-/6YmPrgataj1jD2Uqd1ED+CG4DaZGacoeZd/89hH7hF76Nno8K18DrSOqJAEmDnOWegpSRGVLd0qP09IHmaG5w==", + "dev": true, + "requires": { + "@angular-devkit/core": "14.2.10", + "rxjs": "6.6.7" + } + }, + "@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "requires": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + } + }, + "jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + } } }, "@angular-devkit/core": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.0.tgz", - "integrity": "sha512-Y2d/+nFmjjY4eatc3cwdDDAnpnhG3KTX2OVW7dXSUxW3eY5e3vdMlVUbFiKwvwAshlrJy85Y6RMvZSBN4VrpnA==", + "version": "14.1.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.3.tgz", + "integrity": "sha512-YBxhRl7hKgirjcKeurfejVrIgmw31GcfKKCyQiIudoLCYjonnSMdDEx2y8BNMANvxe5YmuZsIYJtgVlqp3mMDg==", "dev": true, "requires": { "ajv": "8.11.0", @@ -14437,19 +15056,48 @@ "jsonc-parser": "3.1.0", "rxjs": "6.6.7", "source-map": "0.7.4" + }, + "dependencies": { + "jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + } } }, "@angular-devkit/schematics": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.1.0.tgz", - "integrity": "sha512-5QC01k9eznuQSiqxijKhVkAEmA8sioYuLhBzyffaPszSySH8kPMNxhAc8zJhBTNLumbS6iDaGkSqTQl5Kv9fOw==", + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.10.tgz", + "integrity": "sha512-MMp31KpJTwKHisXOq+6VOXYApq97hZxFaFmZk396X5aIFTCELUwjcezQDk+u2nEs5iK/COUfnN3plGcfJxYhQA==", "dev": true, "requires": { - "@angular-devkit/core": "14.1.0", + "@angular-devkit/core": "14.2.10", "jsonc-parser": "3.1.0", "magic-string": "0.26.2", "ora": "5.4.1", "rxjs": "6.6.7" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "requires": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + } + }, + "jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + } } }, "@angular-eslint/builder": { @@ -14541,32 +15189,32 @@ } }, "@angular/animations": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.1.0.tgz", - "integrity": "sha512-OhEXi1u/M4QyltDCxSqo7YzF7ELgNDWNqbbM7vtWIcrc4c+Yiu1GXhW/GQRosF3WAuQVfdQzEI0VTeNoo98Kvw==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.12.tgz", + "integrity": "sha512-gwdnFZkvVUr+enUNfhfCGRGGqNHn1+vTA81apLfHYhJxgjiLUtETc4KTOrQevtDm022pEd+LSrvr8r+7ag+jkw==", "requires": { "tslib": "^2.3.0" } }, "@angular/cdk": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.1.0.tgz", - "integrity": "sha512-EOQZmlTgj5Tc6/s50kEQUYKWH0S748rzbymBYkvyJs864lP9A8khz83IINmm+PD2sMADKtBETD3aEa5yQRhVAA==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.7.tgz", + "integrity": "sha512-/tEsYaUbDSnfEmKVvAMramIptmhI67O+9STjOV0i+74XR2NospeK0fkbywIANu1n3w6AHGMotvRWJrjmbCElFg==", "requires": { "parse5": "^5.0.0", "tslib": "^2.3.0" } }, "@angular/cli": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.1.0.tgz", - "integrity": "sha512-W/t2PkGHu9r87po1ZXQRYU81VtjzNMuGsP5tmoW1pGuibK7Kj+25G+jrXK/WADTi+pjTMXHNXYn8PlMNAIrZ/w==", + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.10.tgz", + "integrity": "sha512-gX9sAKOwq4lKdPWeABB7TzKDHdjQXvkUU8NmPJA6mEAVXvm3lhQtFvHDalZstwK8au2LY0LaXTcEtcKYOt3AXQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1401.0", - "@angular-devkit/core": "14.1.0", - "@angular-devkit/schematics": "14.1.0", - "@schematics/angular": "14.1.0", + "@angular-devkit/architect": "0.1402.10", + "@angular-devkit/core": "14.2.10", + "@angular-devkit/schematics": "14.2.10", + "@schematics/angular": "14.2.10", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "debug": "4.3.4", @@ -14577,7 +15225,7 @@ "npm-pick-manifest": "7.0.1", "open": "8.4.0", "ora": "5.4.1", - "pacote": "13.6.1", + "pacote": "13.6.2", "resolve": "1.22.1", "semver": "7.3.7", "symbol-observable": "4.0.0", @@ -14585,6 +15233,29 @@ "yargs": "17.5.1" }, "dependencies": { + "@angular-devkit/architect": { + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.10.tgz", + "integrity": "sha512-/6YmPrgataj1jD2Uqd1ED+CG4DaZGacoeZd/89hH7hF76Nno8K18DrSOqJAEmDnOWegpSRGVLd0qP09IHmaG5w==", + "dev": true, + "requires": { + "@angular-devkit/core": "14.2.10", + "rxjs": "6.6.7" + } + }, + "@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "requires": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + } + }, "ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -14679,6 +15350,17 @@ "strip-ansi": "^6.0.0", "through": "^2.3.6", "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + } } }, "is-fullwidth-code-point": { @@ -14687,6 +15369,12 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, + "jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -14729,15 +15417,6 @@ "signal-exit": "^3.0.2" } }, - "rxjs": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", - "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", - "dev": true, - "requires": { - "tslib": "^2.1.0" - } - }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -14761,25 +15440,25 @@ } }, "@angular/common": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.1.0.tgz", - "integrity": "sha512-leethDtLbA3qySaOEBUto602DF0qH1maK9u2zHncrUFOpnHAYUEd7N9MFMdIYASurTnwOSglEoIDCML94qzImQ==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.12.tgz", + "integrity": "sha512-oZunh9wfInFWhNO1P8uoEs/o4u8kerKMhw8GruywKm1TV7gHDP2Fi5WHGjFqq3XYptgBTPCTSEfyLX6Cwq1PUw==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.1.0.tgz", - "integrity": "sha512-aLbtpFDF3fp/DOEsWSdpszmoNZAb0To/zoKhHVmEReuUKkMtlPNd3+e6wkR2vrvR/cWgbKwdb7RQ1IQtGDu74A==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.12.tgz", + "integrity": "sha512-u2MH9+NRwbbFDRNiPWPexed9CnCq9+pGHLuyACSP2uR6Ik68cE6cayeZbIeoEV5vWpda/XsLmJgPJysw7dAZLQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler-cli": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.1.0.tgz", - "integrity": "sha512-llJkDnv0+riTdRPdOJv/FToz4X9ZO1URnalW+tIe2RyfOzkEqM+VLD/x+3cVgnsaFKuoPxIjZEkMoppGwVB4kg==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.12.tgz", + "integrity": "sha512-9Gkb9KFkaQPz8XaS8ZwwTioRZ4ywykdAWyceICEi78/Y9ConYrTX2SbFogzI2dPUZU8a04tMlbqTSmHjVbJftQ==", "dev": true, "requires": { "@babel/core": "^7.17.2", @@ -14795,63 +15474,63 @@ } }, "@angular/core": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.1.0.tgz", - "integrity": "sha512-3quEsHmQifJOQ2oij5K+cjGjmhsKsyZI1+OTHWNZ6IXeuYviZv4U/Cui9fUJ1RN3CZxH3NzWB3gB/5qYFQfOgg==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.12.tgz", + "integrity": "sha512-sGQxU5u4uawwvJa6jOTmGoisJiQ5HIN/RoBw99CmoqZIVyUSg9IRJJC1KVdH8gbpWBNLkElZv21lwJTL/msWyg==", "requires": { "tslib": "^2.3.0" } }, "@angular/flex-layout": { - "version": "14.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-14.0.0-beta.40.tgz", - "integrity": "sha512-lYi2BKovNk5u2wmj/AMIMqfUzCBEt99Wu/Gfa+1mUIlw3voKCmIsV2XYBhX4adRdD+dRagY3Opger43JR7PXEw==", + "version": "14.0.0-beta.41", + "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-14.0.0-beta.41.tgz", + "integrity": "sha512-x1YcxqkdFlcbVXEy9ebCgW/F+7n/MXkEkwEcVEIPf5v5qn7HZsjQxgIj35Lf0amvMyF7h35prpoxO1uX5+ntFg==", "requires": { "tslib": "^2.3.0" } }, "@angular/forms": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.1.0.tgz", - "integrity": "sha512-y7VQ2t+/ASEjzt8zXg4y5b03lMSPHmnhy4XzjDT14ZFrALaSxyhkSqoBfAksPkTeKmsFMnP/VgLboRsE8TLs0Q==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.12.tgz", + "integrity": "sha512-7abYlGIT2JnAtutQUlH3fQS6QEpbfftgvsVcZJCyvX0rXL3u2w2vUQkDHJH4YJJp3AHFVCH4/l7R4VcaPnrwvA==", "requires": { "tslib": "^2.3.0" } }, "@angular/language-service": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.1.0.tgz", - "integrity": "sha512-ldL4xMDjXYZ93FCEIBVGipx9Qfgr7NuBNO+e25d+nWikXrUOnLfvF4UOL/TSUwSwqN4jxDI2KMNQIF6SecZfvQ==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.2.12.tgz", + "integrity": "sha512-YmW6simyEVmpDmbYVUhZ2IxSP6pmsWrV120rB9Y21/BeM39WIXA4NCNirVWlAd/KAKY9O7Sbn1nXI6rSDfhopQ==", "dev": true }, "@angular/material": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.1.0.tgz", - "integrity": "sha512-0UXfMqP5+Nzd6gbLplQpUX3E0rRRwhVEnAo8Z1hllGdJIY0meunMnTZCWsvYQ7SU/W+VbqnmtBmg5EOfYsjpiQ==", + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.2.7.tgz", + "integrity": "sha512-WXHh8pEStpgkXZJmYOg2cI8BSHkV82ET4XTJCNPdveumaCn1UYnaNzsXD13kw5z+zmy8CufhFEzdXTrv/yt7KQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.1.0.tgz", - "integrity": "sha512-axNXUSqxsP0QSdNskd1pFo2uMo1UNoFaSAB02eDWwLkWQ1pWel+T78HiQY2bNeI3elgzjwPTT4vCCDQKNVTNig==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.12.tgz", + "integrity": "sha512-vOarWym8ucl1gjYWCzdwyBha+MTvL381mvTTUu8aUx6nVhHFjv4bvpjlZnZgojecqUPyxOwmPLLHvCZPJVHZYg==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser-dynamic": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.1.0.tgz", - "integrity": "sha512-0Lxz3HJ9qTOyMTp5Qud2tycP7wqe+tnHOSUqDywrbNRozTKGX0z3i+l0KMku3BtUbuMi3tJomqV914/dtbCvIw==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.12.tgz", + "integrity": "sha512-oZhNJeaBmgw8+KBSYpKz2RYqEDyETC+HJXH8dwIFcP6BqqwL2NE70FdSR7EnOa5c41MEtTmMCGhrJSFR60x5/w==", "requires": { "tslib": "^2.3.0" } }, "@angular/router": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.1.0.tgz", - "integrity": "sha512-WBC1E+d9RS8vy57zJ6LVtWT3AM12mEHY7SCMBRJNBcrmBYJwojxeV8IVkUoW4Ds910gG/w3LjIN0eNHg5qRtNA==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.12.tgz", + "integrity": "sha512-r5tVus5RJDNc4U2v0jMtjPiAS1xDsVsJ70lS313DgZmBDHIVZP1cWIehdxwgNlGwQQtAA36eG7toBwqUU3gb/A==", "requires": { "tslib": "^2.3.0" } @@ -14872,27 +15551,27 @@ } }, "@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", "dev": true }, "@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -14909,12 +15588,12 @@ } }, "@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "version": "7.18.12", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", + "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", "dev": true, "requires": { - "@babel/types": "^7.18.7", + "@babel/types": "^7.18.10", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -14952,14 +15631,15 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.8", + "@babel/compat-data": "^7.20.5", "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" }, "dependencies": { @@ -14972,34 +15652,34 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", - "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.7.tgz", + "integrity": "sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", - "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" + "regexpu-core": "^5.2.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", - "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.17.7", @@ -15034,13 +15714,13 @@ } }, "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" } }, "@babel/helper-hoist-variables": { @@ -15053,12 +15733,12 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", "dev": true, "requires": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.7" } }, "@babel/helper-module-imports": { @@ -15071,19 +15751,32 @@ } }, "@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", "dev": true, "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.20.2", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" + }, + "dependencies": { + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + } } }, "@babel/helper-optimise-call-expression": { @@ -15096,9 +15789,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { @@ -15114,34 +15807,48 @@ } }, "@babel/helper-replace-supers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", - "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "dependencies": { + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + } } }, "@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.20.2" } }, "@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==", "dev": true, "requires": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.0" } }, "@babel/helper-split-export-declaration": { @@ -15153,10 +15860,16 @@ "@babel/types": "^7.18.6" } }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, "@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true }, "@babel/helper-validator-option": { @@ -15166,26 +15879,39 @@ "dev": true }, "@babel/helper-wrap-function": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.9.tgz", - "integrity": "sha512-cG2ru3TRAL6a60tfQflpEfs4ldiPwF6YW3zfJiRgmoFVIaC1vGnBBgatfec+ZUziPHkHSaXAuEck3Cdkf3eRpQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.18.9", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" } }, "@babel/helpers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", - "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", + "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", "dev": true, "requires": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "dependencies": { + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + } } }, "@babel/highlight": { @@ -15200,9 +15926,9 @@ } }, "@babel/parser": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", - "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -15215,25 +15941,25 @@ } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz", - "integrity": "sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", + "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, @@ -15248,13 +15974,13 @@ } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", + "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, @@ -15289,12 +16015,12 @@ } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, @@ -15319,16 +16045,16 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" + "@babel/plugin-transform-parameters": "^7.20.7" } }, "@babel/plugin-proposal-optional-catch-binding": { @@ -15342,13 +16068,13 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, @@ -15363,14 +16089,14 @@ } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, @@ -15430,12 +16156,12 @@ } }, "@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==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-syntax-json-strings": { @@ -15520,12 +16246,12 @@ } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-async-to-generator": { @@ -15549,46 +16275,61 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", + "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-classes": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", - "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/template": "^7.20.7" + }, + "dependencies": { + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + } } }, "@babel/plugin-transform-destructuring": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", - "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-dotall-regex": { @@ -15659,39 +16400,36 @@ } }, "@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.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", "dev": true, "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.20.11", + "@babel/helper-plugin-utils": "^7.20.2" } }, "@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.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", "dev": true, "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.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-simple-access": "^7.20.2" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", - "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-identifier": "^7.19.1" } }, "@babel/plugin-transform-modules-umd": { @@ -15705,13 +16443,13 @@ } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", - "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-new-target": { @@ -15734,12 +16472,12 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-property-literals": { @@ -15752,13 +16490,13 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" } }, "@babel/plugin-transform-reserved-words": { @@ -15771,16 +16509,16 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.6.tgz", - "integrity": "sha512-8uRHk9ZmRSnWqUgyae249EJZ94b0yAGLBIqzZzl+0iEdbno55Pmlt/32JZsHwXD9k/uZj18Aqqk35wBX4CBTXA==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz", + "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-polyfill-corejs2": "^0.3.1", - "babel-plugin-polyfill-corejs3": "^0.5.2", - "babel-plugin-polyfill-regenerator": "^0.3.1", + "@babel/helper-plugin-utils": "^7.18.9", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", "semver": "^6.3.0" }, "dependencies": { @@ -15802,13 +16540,13 @@ } }, "@babel/plugin-transform-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", - "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" } }, "@babel/plugin-transform-sticky-regex": { @@ -15839,12 +16577,12 @@ } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz", - "integrity": "sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-unicode-regex": { @@ -15858,29 +16596,29 @@ } }, "@babel/preset-env": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.6.tgz", - "integrity": "sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", + "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/helper-validator-option": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.6", - "@babel/plugin-proposal-async-generator-functions": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.18.10", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-class-static-block": "^7.18.6", "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", "@babel/plugin-proposal-private-methods": "^7.18.6", "@babel/plugin-proposal-private-property-in-object": "^7.18.6", "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", @@ -15902,40 +16640,40 @@ "@babel/plugin-transform-arrow-functions": "^7.18.6", "@babel/plugin-transform-async-to-generator": "^7.18.6", "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.6", - "@babel/plugin-transform-classes": "^7.18.6", - "@babel/plugin-transform-computed-properties": "^7.18.6", - "@babel/plugin-transform-destructuring": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-classes": "^7.18.9", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.9", "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.6", - "@babel/plugin-transform-function-name": "^7.18.6", - "@babel/plugin-transform-literals": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", "@babel/plugin-transform-member-expression-literals": "^7.18.6", "@babel/plugin-transform-modules-amd": "^7.18.6", "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.18.9", "@babel/plugin-transform-modules-umd": "^7.18.6", "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", "@babel/plugin-transform-new-target": "^7.18.6", "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", "@babel/plugin-transform-property-literals": "^7.18.6", "@babel/plugin-transform-regenerator": "^7.18.6", "@babel/plugin-transform-reserved-words": "^7.18.6", "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.18.6", + "@babel/plugin-transform-spread": "^7.18.9", "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.6", - "@babel/plugin-transform-typeof-symbol": "^7.18.6", - "@babel/plugin-transform-unicode-escapes": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.6", - "babel-plugin-polyfill-corejs2": "^0.3.1", - "babel-plugin-polyfill-corejs3": "^0.5.2", - "babel-plugin-polyfill-regenerator": "^0.3.1", + "@babel/types": "^7.18.10", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", "core-js-compat": "^3.22.1", "semver": "^6.3.0" }, @@ -15962,50 +16700,50 @@ } }, "@babel/runtime": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz", - "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" } }, "@babel/traverse": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", - "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz", + "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", + "@babel/generator": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^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.18.9", - "@babel/types": "^7.18.9", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" }, "dependencies": { "@babel/generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", - "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", "dev": true, "requires": { - "@babel/types": "^7.18.9", + "@babel/types": "^7.20.7", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" } @@ -16024,19 +16762,20 @@ } }, "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" } }, "@csstools/postcss-cascade-layers": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.0.5.tgz", - "integrity": "sha512-Id/9wBT7FkgFzdEpiEWrsVd4ltDxN0rI0QS0SChbeQiSuux3z21SJCRLu6h2cvCEUmaRi+VD0mHFj+GJD4GFnw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", "dev": true, "requires": { "@csstools/selector-specificity": "^2.0.2", @@ -16091,6 +16830,15 @@ "postcss-selector-parser": "^6.0.10" } }, + "@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, "@csstools/postcss-normalize-display-values": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", @@ -16128,6 +16876,15 @@ "postcss-value-parser": "^4.2.0" } }, + "@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, "@csstools/postcss-trigonometric-functions": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", @@ -16157,16 +16914,23 @@ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, + "@esbuild/linux-loong64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz", + "integrity": "sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A==", + "dev": true, + "optional": true + }, "@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.0", + "espree": "^9.4.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -16203,9 +16967,9 @@ } }, "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -16250,14 +17014,14 @@ "dev": true }, "@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" }, "dependencies": { "brace-expansion": { @@ -16281,6 +17045,12 @@ } } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, "@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -16358,13 +17128,13 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "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==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "@leichtgewicht/ip-codec": { @@ -16374,9 +17144,9 @@ "dev": true }, "@ngtools/webpack": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.1.0.tgz", - "integrity": "sha512-d4U6ymDCXckVgfjYEv1Wjzd78ZSm0NKgq8mN6FdlrCupg02LPIODjeKyNr4c4zwMAOJeHkVNEZ+USoDEK3XSsw==", + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.10.tgz", + "integrity": "sha512-sLHapZLVub6mEz5b19tf1VfIV1w3tYfg7FNPLeni79aldxu1FbP1v2WmiFAnMzrswqyK0bhTtxrl+Z/CLKqyoQ==", "dev": true, "requires": {} }, @@ -16407,9 +17177,9 @@ } }, "@npmcli/fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.1.tgz", - "integrity": "sha512-1Q0uzx6c/NVNGszePbr5Gc2riSU1zLpNlo/1YWntH+eaPmMgBssAW0qXofCVkpdj3ce4swZtlDYQu+NKiYcptg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, "requires": { "@gar/promisify": "^1.1.3", @@ -16417,9 +17187,9 @@ } }, "@npmcli/git": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.1.tgz", - "integrity": "sha512-UU85F/T+F1oVn3IsB/L6k9zXIMpXBuUBE25QDH0SsURwT6IOBqkC7M16uqo2vVZIyji3X1K4XH9luip7YekH1A==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", "dev": true, "requires": { "@npmcli/promise-spawn": "^3.0.0", @@ -16431,6 +17201,14 @@ "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^2.0.2" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + } } }, "@npmcli/installed-package-contents": { @@ -16444,9 +17222,9 @@ } }, "@npmcli/move-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", - "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", "dev": true, "requires": { "mkdirp": "^1.0.4", @@ -16469,9 +17247,9 @@ } }, "@npmcli/run-script": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.1.7.tgz", - "integrity": "sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", "dev": true, "requires": { "@npmcli/node-gyp": "^2.0.0", @@ -16482,54 +17260,33 @@ } }, "@nrwl/cli": { - "version": "14.4.3", - "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.4.3.tgz", - "integrity": "sha512-9WzOOXgdf9YJxqte5e8KNkM3NWOuBgM7hz9jEOyw53Ht1Y2H8xLDPVkqDTS9kROgcyMQxHIjIcw80wZNaZL8Mw==", + "version": "14.8.6", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.8.6.tgz", + "integrity": "sha512-R4udxekMd4jhoRPEksJu+224DocOIrAqenFo0D2R36epE5FaCnZQX7xg+b3TjRbdS10e426i4D9LuXdQmP5jJg==", "dev": true, "requires": { - "nx": "14.4.3" + "nx": "14.8.6" } }, "@nrwl/devkit": { - "version": "14.4.3", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.4.3.tgz", - "integrity": "sha512-CFGWQyzrqs4q7YUk37E5Ca+HDj9qbhfw6oI/Omf42MitEpoEnWxVKy/h1pua6ykHn8ZDVvS7sp6nrmg+r6OmDA==", + "version": "14.8.6", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.8.6.tgz", + "integrity": "sha512-+3KqohOKeUuyS176jrwY0yeB3E2IFQ3jMkS0KizzsHGsZWdZbQ2WQ46hZ0/bvRh9Efl8CAg6n4fUWR0BXUePMA==", "dev": true, "requires": { + "@phenomnomnominal/tsquery": "4.1.1", "ejs": "^3.1.7", "ignore": "^5.0.4", - "rxjs": "^6.5.4", - "semver": "7.3.4", "tslib": "^2.3.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } } }, "@nrwl/tao": { - "version": "14.4.3", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.4.3.tgz", - "integrity": "sha512-sHlnqTlJ/XEc/lv0MIKYI1R643CWFvYL6QyZD7f38FvP1RblZ6eVqvOJcrkpwcvRWcZNEY+GrQpb1Io1ZvMEmQ==", + "version": "14.8.6", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.8.6.tgz", + "integrity": "sha512-CByqrsfSJeonOd7TLAHP8bRYNWgDksxA7j+yncSzgQnFLEbZdJGG/AqqIovx8g6g2v0JS+nRgGC+w5UPf04UrQ==", "dev": true, "requires": { - "nx": "14.4.3" + "nx": "14.8.6" } }, "@parcel/watcher": { @@ -16542,15 +17299,45 @@ "node-gyp-build": "^4.3.0" } }, - "@schematics/angular": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.1.0.tgz", - "integrity": "sha512-lhqNZzA+iT3XwlwRU757mhYmd5WE9XB2OKFhosvvszou2zuNUJMDPR9P01ZVNCOa2fScOeCMg2q3ZDgGTBl96Q==", + "@phenomnomnominal/tsquery": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz", + "integrity": "sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ==", "dev": true, "requires": { - "@angular-devkit/core": "14.1.0", - "@angular-devkit/schematics": "14.1.0", + "esquery": "^1.0.1" + } + }, + "@schematics/angular": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.10.tgz", + "integrity": "sha512-YFTc/9QJdx422XcApizEcVLKoyknu8b9zHIlAepZCu7WkV8GPT0hvVEHQ7KBWys5aQ7pPZMT0JpZLeAz0F2xYQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "14.2.10", + "@angular-devkit/schematics": "14.2.10", "jsonc-parser": "3.1.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "requires": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + } + }, + "jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + } } }, "@tootallnate/once": { @@ -16598,9 +17385,9 @@ } }, "@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "version": "8.4.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", + "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", "dev": true, "requires": { "@types/estree": "*", @@ -16624,21 +17411,21 @@ "dev": true }, "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz", + "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==", "dev": true, "requires": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.31", "@types/qs": "*", "@types/serve-static": "*" } }, "@types/express-serve-static-core": { - "version": "4.17.29", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", - "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", + "version": "4.17.32", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz", + "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==", "dev": true, "requires": { "@types/node": "*", @@ -16668,9 +17455,9 @@ "dev": true }, "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", "dev": true }, "@types/node": { @@ -16703,6 +17490,12 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, "@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -16713,12 +17506,12 @@ } }, "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", "dev": true, "requires": { - "@types/mime": "^1", + "@types/mime": "*", "@types/node": "*" } }, @@ -16732,110 +17525,115 @@ } }, "@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", + "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", "dev": true, "requires": { "@types/node": "*" } }, "@typescript-eslint/eslint-plugin": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.31.0.tgz", - "integrity": "sha512-VKW4JPHzG5yhYQrQ1AzXgVgX8ZAJEvCz0QI6mLRX4tf7rnFfh5D8SKm0Pq6w5PyNfAWJk6sv313+nEt3ohWMBQ==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.0.tgz", + "integrity": "sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.31.0", - "@typescript-eslint/type-utils": "5.31.0", - "@typescript-eslint/utils": "5.31.0", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/type-utils": "5.48.0", + "@typescript-eslint/utils": "5.48.0", "debug": "^4.3.4", - "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", "regexpp": "^3.2.0", "semver": "^7.3.7", "tsutils": "^3.21.0" }, "dependencies": { "@typescript-eslint/utils": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.31.0.tgz", - "integrity": "sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.0.tgz", + "integrity": "sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.31.0", - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/typescript-estree": "5.31.0", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" } } } }, "@typescript-eslint/parser": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.31.0.tgz", - "integrity": "sha512-UStjQiZ9OFTFReTrN+iGrC6O/ko9LVDhreEK5S3edmXgR396JGq7CoX2TWIptqt/ESzU2iRKXAHfSF2WJFcWHw==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.0.tgz", + "integrity": "sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.31.0", - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/typescript-estree": "5.31.0", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz", - "integrity": "sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz", + "integrity": "sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==", "dev": true, "requires": { - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/visitor-keys": "5.31.0" + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/visitor-keys": "5.48.0" } }, "@typescript-eslint/type-utils": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.31.0.tgz", - "integrity": "sha512-7ZYqFbvEvYXFn9ax02GsPcEOmuWNg+14HIf4q+oUuLnMbpJ6eHAivCg7tZMVwzrIuzX3QCeAOqKoyMZCv5xe+w==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.0.tgz", + "integrity": "sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.31.0", + "@typescript-eslint/typescript-estree": "5.48.0", + "@typescript-eslint/utils": "5.48.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, "dependencies": { "@typescript-eslint/utils": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.31.0.tgz", - "integrity": "sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.0.tgz", + "integrity": "sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.31.0", - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/typescript-estree": "5.31.0", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.48.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" } } } }, "@typescript-eslint/types": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz", - "integrity": "sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.0.tgz", + "integrity": "sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz", - "integrity": "sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz", + "integrity": "sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/visitor-keys": "5.31.0", + "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/visitor-keys": "5.48.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -16901,12 +17699,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz", - "integrity": "sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz", + "integrity": "sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==", "dev": true, "requires": { - "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/types": "5.48.0", "eslint-visitor-keys": "^3.3.0" } }, @@ -17074,6 +17872,33 @@ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "dev": true }, + "@yarnpkg/parsers": { + "version": "3.0.0-rc.34", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.34.tgz", + "integrity": "sha512-NhEA0BusInyk7EiJ7i7qF1Mkrb6gGjZcQQ/W1xxGazxapubEmGO7v5WSll6hWxFXE2ngtLj8lflq1Ff5VtqEww==", + "dev": true, + "requires": { + "js-yaml": "^3.10.0", + "tslib": "^2.4.0" + } + }, + "@zkochan/js-yaml": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", + "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + } + } + }, "abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", @@ -17097,9 +17922,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==", "dev": true }, "acorn-import-assertions": { @@ -17127,9 +17952,9 @@ }, "dependencies": { "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.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -17233,9 +18058,9 @@ } }, "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -17256,9 +18081,9 @@ "dev": true }, "are-we-there-yet": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, "requires": { "delegates": "^1.0.0", @@ -17283,7 +18108,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true } } @@ -17319,26 +18144,37 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "autoprefixer": { - "version": "10.4.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", - "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", "dev": true, "requires": { - "browserslist": "^4.20.3", - "caniuse-lite": "^1.0.30001335", + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" } }, + "axios": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz", + "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", + "dev": true, + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "axobject-query": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.0.1.tgz", @@ -17358,9 +18194,9 @@ }, "dependencies": { "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.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -17370,15 +18206,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==", - "dev": true, - "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", @@ -17393,13 +18220,13 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", - "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", "dev": true, "requires": { "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.2", + "@babel/helper-define-polyfill-provider": "^0.3.3", "semver": "^6.1.1" }, "dependencies": { @@ -17422,12 +18249,12 @@ } }, "babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1" + "@babel/helper-define-polyfill-provider": "^0.3.3" } }, "balanced-match": { @@ -17472,9 +18299,9 @@ } }, "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "requires": { "bytes": "3.1.2", @@ -17485,7 +18312,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.10.3", + "qs": "6.11.0", "raw-body": "2.5.1", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -17521,9 +18348,9 @@ } }, "bonjour-service": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", - "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", + "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", "dev": true, "requires": { "array-flatten": "^2.1.2", @@ -17557,15 +18384,15 @@ } }, "browserslist": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz", - "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001366", - "electron-to-chromium": "^1.4.188", + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.4" + "update-browserslist-db": "^1.0.9" } }, "buffer": { @@ -17607,9 +18434,9 @@ "dev": true }, "cacache": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", - "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", + "version": "16.1.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.2.tgz", + "integrity": "sha512-Xx+xPlfCZIUHagysjjOAje9nRo8pRDczQCcXb4J2O0BLtH+xeVue6ba4y1kfJfQMAnM2mkcoMIAyOctlaRGWYA==", "dev": true, "requires": { "@npmcli/fs": "^2.1.0", @@ -17630,6 +18457,14 @@ "ssri": "^9.0.0", "tar": "^6.1.11", "unique-filename": "^1.1.1" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + } } }, "call-bind": { @@ -17655,9 +18490,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001370", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz", - "integrity": "sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g==", + "version": "1.0.30001441", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz", + "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==", "dev": true }, "chalk": { @@ -17678,9 +18513,9 @@ "dev": true }, "chart.js": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.8.2.tgz", - "integrity": "sha512-7rqSlHWMUKFyBDOJvmFGW2lxULtcwaPLegDjX/Nu5j6QybY+GCiQkEY+6cqHw62S5tcwXMD8Y+H5OBGoR7d+ZQ==" + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.9.1.tgz", + "integrity": "sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w==" }, "chokidar": { "version": "3.5.3", @@ -17719,7 +18554,7 @@ "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", "dev": true, "requires": { "restore-cursor": "^2.0.0" @@ -17900,6 +18735,15 @@ "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -17950,6 +18794,12 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true + }, + "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==", + "dev": true } } }, @@ -17978,14 +18828,6 @@ "dev": true, "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==", - "dev": true - } } }, "content-type": { @@ -17995,13 +18837,10 @@ "dev": true }, "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==", - "dev": true, - "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==", + "dev": true }, "cookie": { "version": "0.5.0", @@ -18048,9 +18887,9 @@ } }, "globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", "dev": true, "requires": { "dir-glob": "^3.0.1", @@ -18081,21 +18920,12 @@ } }, "core-js-compat": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.0.tgz", - "integrity": "sha512-F+2E63X3ff/nj8uIrf8Rf24UDGIz7p838+xjEp+Bx3y8OWXj+VTPPZNCtdqovPaS9o7Tka5mCH01Zn5vOd6UQg==", + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz", + "integrity": "sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==", "dev": true, "requires": { - "browserslist": "^4.21.2", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } + "browserslist": "^4.21.4" } }, "core-util-is": { @@ -18105,9 +18935,9 @@ "dev": true }, "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, "requires": { "@types/parse-json": "^4.0.0", @@ -18199,25 +19029,6 @@ "which": "^2.0.1" } }, - "css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "css-blank-pseudo": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", @@ -18300,9 +19111,9 @@ } }, "cssdb": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.3.tgz", - "integrity": "sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.2.0.tgz", + "integrity": "sha512-JYlIsE7eKHSi0UNuCyo96YuIDFqvhGgHw4Ck6lsN+DP0Tp8M64UTDT2trGbkMDqnCoEjks7CkS0XcjU0rkvBdg==", "dev": true }, "cssesc": { @@ -18327,12 +19138,6 @@ "ms": "2.1.2" } }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", - "dev": true - }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -18349,9 +19154,9 @@ } }, "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "requires": { "clone": "^1.0.2" @@ -18363,15 +19168,11 @@ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true }, "delegates": { "version": "1.0.0", @@ -18382,7 +19183,7 @@ "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true }, "dependency-graph": { @@ -18498,6 +19299,12 @@ "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", "dev": true }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -18514,9 +19321,9 @@ } }, "electron-to-chromium": { - "version": "1.4.200", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.200.tgz", - "integrity": "sha512-nPyI7oHc8T64oSqRXrAt99gNMpk0SAgPHw/o+hkNKyb5+bcdnFtZcSO9FUJES5cVkVZvo8u4qiZ1gQILl8UXsA==", + "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==", "dev": true }, "emoji-regex": { @@ -18569,9 +19376,9 @@ } }, "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -18631,177 +19438,178 @@ "dev": true }, "esbuild": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz", - "integrity": "sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz", + "integrity": "sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg==", "dev": true, "optional": true, "requires": { - "esbuild-android-64": "0.14.49", - "esbuild-android-arm64": "0.14.49", - "esbuild-darwin-64": "0.14.49", - "esbuild-darwin-arm64": "0.14.49", - "esbuild-freebsd-64": "0.14.49", - "esbuild-freebsd-arm64": "0.14.49", - "esbuild-linux-32": "0.14.49", - "esbuild-linux-64": "0.14.49", - "esbuild-linux-arm": "0.14.49", - "esbuild-linux-arm64": "0.14.49", - "esbuild-linux-mips64le": "0.14.49", - "esbuild-linux-ppc64le": "0.14.49", - "esbuild-linux-riscv64": "0.14.49", - "esbuild-linux-s390x": "0.14.49", - "esbuild-netbsd-64": "0.14.49", - "esbuild-openbsd-64": "0.14.49", - "esbuild-sunos-64": "0.14.49", - "esbuild-windows-32": "0.14.49", - "esbuild-windows-64": "0.14.49", - "esbuild-windows-arm64": "0.14.49" + "@esbuild/linux-loong64": "0.15.5", + "esbuild-android-64": "0.15.5", + "esbuild-android-arm64": "0.15.5", + "esbuild-darwin-64": "0.15.5", + "esbuild-darwin-arm64": "0.15.5", + "esbuild-freebsd-64": "0.15.5", + "esbuild-freebsd-arm64": "0.15.5", + "esbuild-linux-32": "0.15.5", + "esbuild-linux-64": "0.15.5", + "esbuild-linux-arm": "0.15.5", + "esbuild-linux-arm64": "0.15.5", + "esbuild-linux-mips64le": "0.15.5", + "esbuild-linux-ppc64le": "0.15.5", + "esbuild-linux-riscv64": "0.15.5", + "esbuild-linux-s390x": "0.15.5", + "esbuild-netbsd-64": "0.15.5", + "esbuild-openbsd-64": "0.15.5", + "esbuild-sunos-64": "0.15.5", + "esbuild-windows-32": "0.15.5", + "esbuild-windows-64": "0.15.5", + "esbuild-windows-arm64": "0.15.5" } }, "esbuild-android-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz", - "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.5.tgz", + "integrity": "sha512-dYPPkiGNskvZqmIK29OPxolyY3tp+c47+Fsc2WYSOVjEPWNCHNyqhtFqQadcXMJDQt8eN0NMDukbyQgFcHquXg==", "dev": true, "optional": true }, "esbuild-android-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz", - "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.5.tgz", + "integrity": "sha512-YyEkaQl08ze3cBzI/4Cm1S+rVh8HMOpCdq8B78JLbNFHhzi4NixVN93xDrHZLztlocEYqi45rHHCgA8kZFidFg==", "dev": true, "optional": true }, "esbuild-darwin-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz", - "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.5.tgz", + "integrity": "sha512-Cr0iIqnWKx3ZTvDUAzG0H/u9dWjLE4c2gTtRLz4pqOBGjfjqdcZSfAObFzKTInLLSmD0ZV1I/mshhPoYSBMMCQ==", "dev": true, "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz", - "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.5.tgz", + "integrity": "sha512-WIfQkocGtFrz7vCu44ypY5YmiFXpsxvz2xqwe688jFfSVCnUsCn2qkEVDo7gT8EpsLOz1J/OmqjExePL1dr1Kg==", "dev": true, "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz", - "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.5.tgz", + "integrity": "sha512-M5/EfzV2RsMd/wqwR18CELcenZ8+fFxQAAEO7TJKDmP3knhWSbD72ILzrXFMMwshlPAS1ShCZ90jsxkm+8FlaA==", "dev": true, "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz", - "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.5.tgz", + "integrity": "sha512-2JQQ5Qs9J0440F/n/aUBNvY6lTo4XP/4lt1TwDfHuo0DY3w5++anw+jTjfouLzbJmFFiwmX7SmUhMnysocx96w==", "dev": true, "optional": true }, "esbuild-linux-32": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz", - "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.5.tgz", + "integrity": "sha512-gO9vNnIN0FTUGjvTFucIXtBSr1Woymmx/aHQtuU+2OllGU6YFLs99960UD4Dib1kFovVgs59MTXwpFdVoSMZoQ==", "dev": true, "optional": true }, "esbuild-linux-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz", - "integrity": "sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz", + "integrity": "sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg==", "dev": true, "optional": true }, "esbuild-linux-arm": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz", - "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.5.tgz", + "integrity": "sha512-wvAoHEN+gJ/22gnvhZnS/+2H14HyAxM07m59RSLn3iXrQsdS518jnEWRBnJz3fR6BJa+VUTo0NxYjGaNt7RA7Q==", "dev": true, "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz", - "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.5.tgz", + "integrity": "sha512-7EgFyP2zjO065XTfdCxiXVEk+f83RQ1JsryN1X/VSX2li9rnHAt2swRbpoz5Vlrl6qjHrCmq5b6yxD13z6RheA==", "dev": true, "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz", - "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.5.tgz", + "integrity": "sha512-KdnSkHxWrJ6Y40ABu+ipTZeRhFtc8dowGyFsZY5prsmMSr1ZTG9zQawguN4/tunJ0wy3+kD54GaGwdcpwWAvZQ==", "dev": true, "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz", - "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.5.tgz", + "integrity": "sha512-QdRHGeZ2ykl5P0KRmfGBZIHmqcwIsUKWmmpZTOq573jRWwmpfRmS7xOhmDHBj9pxv+6qRMH8tLr2fe+ZKQvCYw==", "dev": true, "optional": true }, "esbuild-linux-riscv64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz", - "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.5.tgz", + "integrity": "sha512-p+WE6RX+jNILsf+exR29DwgV6B73khEQV0qWUbzxaycxawZ8NE0wA6HnnTxbiw5f4Gx9sJDUBemh9v49lKOORA==", "dev": true, "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz", - "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.5.tgz", + "integrity": "sha512-J2ngOB4cNzmqLHh6TYMM/ips8aoZIuzxJnDdWutBw5482jGXiOzsPoEF4j2WJ2mGnm7FBCO4StGcwzOgic70JQ==", "dev": true, "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz", - "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.5.tgz", + "integrity": "sha512-MmKUYGDizYjFia0Rwt8oOgmiFH7zaYlsoQ3tIOfPxOqLssAsEgG0MUdRDm5lliqjiuoog8LyDu9srQk5YwWF3w==", "dev": true, "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz", - "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.5.tgz", + "integrity": "sha512-2mMFfkLk3oPWfopA9Plj4hyhqHNuGyp5KQyTT9Rc8hFd8wAn5ZrbJg+gNcLMo2yzf8Uiu0RT6G9B15YN9WQyMA==", "dev": true, "optional": true }, "esbuild-sunos-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz", - "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.5.tgz", + "integrity": "sha512-2sIzhMUfLNoD+rdmV6AacilCHSxZIoGAU2oT7XmJ0lXcZWnCvCtObvO6D4puxX9YRE97GodciRGDLBaiC6x1SA==", "dev": true, "optional": true }, "esbuild-wasm": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.49.tgz", - "integrity": "sha512-5ddzZv8M3WI1fWZ5rEfK5cSA9swlWJcceKgqjKLLERC7FnlNW50kF7hxhpkyC0Z/4w7Xeyt3yUJ9QWNMDXLk2Q==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.5.tgz", + "integrity": "sha512-lTJOEKekN/4JI/eOEq0wLcx53co2N6vaT/XjBz46D1tvIVoUEyM0o2K6txW6gEotf31szFD/J1PbxmnbkGlK9A==", "dev": true }, "esbuild-windows-32": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz", - "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.5.tgz", + "integrity": "sha512-e+duNED9UBop7Vnlap6XKedA/53lIi12xv2ebeNS4gFmu7aKyTrok7DPIZyU5w/ftHD4MUDs5PJUkQPP9xJRzg==", "dev": true, "optional": true }, "esbuild-windows-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz", - "integrity": "sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.5.tgz", + "integrity": "sha512-v+PjvNtSASHOjPDMIai9Yi+aP+Vwox+3WVdg2JB8N9aivJ7lyhp4NVU+J0MV2OkWFPnVO8AE/7xH+72ibUUEnw==", "dev": true, "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz", - "integrity": "sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.5.tgz", + "integrity": "sha512-Yz8w/D8CUPYstvVQujByu6mlf48lKmXkq6bkeSZZxTA626efQOJb26aDGLzmFWx6eg/FwrXgt6SZs9V8Pwy/aA==", "dev": true, "optional": true }, @@ -18824,13 +19632,15 @@ "dev": true }, "eslint": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz", - "integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz", + "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", + "@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", @@ -18840,18 +19650,21 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", + "espree": "^9.4.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.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", "levn": "^0.4.1", @@ -18862,8 +19675,7 @@ "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "dependencies": { "ajv": { @@ -18950,6 +19762,16 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, "glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -18960,9 +19782,9 @@ } }, "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -18989,6 +19811,15 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -18998,6 +19829,24 @@ "brace-expansion": "^1.1.7" } }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -19049,12 +19898,12 @@ "dev": true }, "espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", "dev": true, "requires": { - "acorn": "^8.7.1", + "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" } @@ -19170,14 +20019,14 @@ } }, "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.0", + "body-parser": "1.20.1", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.5.0", @@ -19196,7 +20045,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.10.3", + "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.18.0", @@ -19234,12 +20083,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true - }, - "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==", - "dev": true } } }, @@ -19272,9 +20115,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -19304,9 +20147,9 @@ "peer": true }, "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -19324,7 +20167,7 @@ "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" @@ -19427,17 +20270,28 @@ } }, "flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -19507,12 +20361,6 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, "fuzzy": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz", @@ -19567,9 +20415,9 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -19643,6 +20491,12 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, "handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -19664,15 +20518,6 @@ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -19703,12 +20548,20 @@ "dev": true }, "hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, "requires": { "lru-cache": "^7.5.1" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + } } }, "hpack.js": { @@ -19738,6 +20591,12 @@ "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==", + "dev": true + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -19905,9 +20764,9 @@ "optional": true }, "immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.1.tgz", + "integrity": "sha512-7WYV7Q5BTs0nlQm7tl92rDYYoyELLKHoDMBKhrxEoiV4mrfVdRz8hzPiYOzH7yWjzoVEamxRuAqhxL2PLRwZYQ==", "dev": true }, "import-fresh": { @@ -20116,9 +20975,9 @@ } }, "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "requires": { "has": "^1.0.3" @@ -20139,7 +20998,7 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true }, "is-glob": { @@ -20169,6 +21028,12 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "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==", + "dev": true + }, "is-plain-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", @@ -20236,9 +21101,9 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "requires": { "@babel/core": "^7.12.3", @@ -20381,6 +21246,12 @@ } } }, + "js-sdsl": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -20422,15 +21293,14 @@ "dev": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" }, "jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, "jsonfile": { @@ -20563,10 +21433,9 @@ "dev": true }, "loader-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", - "dev": true + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==" }, "locate-path": { "version": "5.0.0", @@ -20662,10 +21531,13 @@ } }, "lru-cache": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.13.1.tgz", - "integrity": "sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ==", - "dev": true + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } }, "magic-string": { "version": "0.26.2", @@ -20700,9 +21572,9 @@ "dev": true }, "make-fetch-happen": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.0.tgz", - "integrity": "sha512-OnEfCLofQVJ5zgKwGk55GaqosqKjaR6khQlJY3dBAA+hM25Bc5CmX5rKUfVut+rYA3uidA7zb7AvcglU87rPRg==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, "requires": { "agentkeepalive": "^4.2.1", @@ -20721,6 +21593,14 @@ "promise-retry": "^2.0.1", "socks-proxy-agent": "^7.0.0", "ssri": "^9.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + } } }, "media-typer": { @@ -20730,9 +21610,9 @@ "dev": true }, "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.12", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.12.tgz", + "integrity": "sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==", "dev": true, "requires": { "fs-monkey": "^1.0.3" @@ -20838,18 +21718,25 @@ } }, "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" }, "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "requires": { "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, "minipass-collect": { @@ -20862,9 +21749,9 @@ } }, "minipass-fetch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", - "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, "requires": { "encoding": "^0.1.13", @@ -20918,6 +21805,14 @@ "requires": { "minipass": "^3.0.0", "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, "mkdirp": { @@ -20950,7 +21845,7 @@ "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", "dev": true }, "nanoid": { @@ -20965,10 +21860,16 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "needle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", - "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", "dev": true, "optional": true, "requires": { @@ -21012,9 +21913,9 @@ "dev": true }, "ng2-charts": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-4.0.0.tgz", - "integrity": "sha512-1COLMs1UH8XIurk9C3pBQW3zH4RM3ggPtaC5vGjEmRGZ2cK/j8DqpzN4xMqyk0KB4D2vw/ZejgXmxxZ4Ie58Rw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-4.1.1.tgz", + "integrity": "sha512-iHwXDbmX86lfeH8VRcsaW2tJATsuAZo4kvvC/Yk2l35zOHjevja1qBvO6BAibiDazi9r9aS6ZRJOqWPsz1pP2w==", "requires": { "lodash-es": "^4.17.15", "tslib": "^2.3.0" @@ -21044,16 +21945,16 @@ "dev": true }, "node-gyp": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.1.0.tgz", - "integrity": "sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.1.tgz", + "integrity": "sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==", "dev": true, "requires": { "env-paths": "^2.2.0", "glob": "^7.1.4", "graceful-fs": "^4.2.6", "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", + "nopt": "^6.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", "semver": "^7.3.5", @@ -21103,24 +22004,24 @@ "dev": true }, "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", "dev": true }, "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, "requires": { - "abbrev": "1" + "abbrev": "^1.0.0" } }, "normalize-package-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.0.tgz", - "integrity": "sha512-m+GL22VXJKkKbw62ZaBBjv8u6IE3UI4Mh5QakIqs3fWiKe0Xyi6L97hakwZK41/LD4R/2ly71Bayx0NLMwLA/g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", "dev": true, "requires": { "hosted-git-info": "^5.0.0", @@ -21178,15 +22079,32 @@ } }, "npm-packlist": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz", - "integrity": "sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", + "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", "dev": true, "requires": { "glob": "^8.0.1", "ignore-walk": "^5.0.1", - "npm-bundled": "^1.1.2", - "npm-normalize-package-bin": "^1.0.1" + "npm-bundled": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "dependencies": { + "npm-bundled": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", + "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^2.0.0" + } + }, + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true + } } }, "npm-pick-manifest": { @@ -21202,9 +22120,9 @@ } }, "npm-registry-fetch": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.0.tgz", - "integrity": "sha512-10LJQ/1+VhKrZjIuY9I/+gQTvumqqlgnsCufoXETHAPFTS3+M+Z5CFhZRDHGavmJ6rOye3UvNga88vl8n1r6gg==", + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", "dev": true, "requires": { "make-fetch-happen": "^10.0.6", @@ -21247,14 +22165,18 @@ } }, "nx": { - "version": "14.4.3", - "resolved": "https://registry.npmjs.org/nx/-/nx-14.4.3.tgz", - "integrity": "sha512-XPaoEAfJI9056qdwTvkutQSwwA3iihqNDwhvk3dmgpT35j8Uzm/y67goACaCUBCjP2dIQqXfNfJVWQIpcG3MTw==", + "version": "14.8.6", + "resolved": "https://registry.npmjs.org/nx/-/nx-14.8.6.tgz", + "integrity": "sha512-QLU3sip/g3JdNO8n5Nw2esN+0G26Jsy3u1LlrB9Giu4zf/+KsfN8CcXMbEVqOnPR1FkCS52xliaq7IBQfvvMQA==", "dev": true, "requires": { - "@nrwl/cli": "14.4.3", - "@nrwl/tao": "14.4.3", + "@nrwl/cli": "14.8.6", + "@nrwl/tao": "14.8.6", "@parcel/watcher": "2.0.4", + "@yarnpkg/lockfile": "^1.1.0", + "@yarnpkg/parsers": "^3.0.0-rc.18", + "@zkochan/js-yaml": "0.0.6", + "axios": "^1.0.0", "chalk": "4.1.0", "chokidar": "^3.5.1", "cli-cursor": "3.1.0", @@ -21269,12 +22191,13 @@ "glob": "7.1.4", "ignore": "^5.0.4", "js-yaml": "4.1.0", - "jsonc-parser": "3.0.0", + "jsonc-parser": "3.2.0", "minimatch": "3.0.5", "npm-run-path": "^4.0.1", "open": "^8.4.0", "semver": "7.3.4", "string-width": "^4.2.3", + "strong-log-transformer": "^2.1.0", "tar-stream": "~2.2.0", "tmp": "~0.2.1", "tsconfig-paths": "^3.9.0", @@ -21400,11 +22323,14 @@ "argparse": "^2.0.1" } }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } }, "lru-cache": { "version": "6.0.0", @@ -21488,6 +22414,24 @@ "requires": { "has-flag": "^4.0.0" } + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -21497,24 +22441,6 @@ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "dev": true }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -21548,7 +22474,7 @@ "onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", "dev": true, "requires": { "mimic-fn": "^1.0.0" @@ -21738,9 +22664,9 @@ "dev": true }, "pacote": { - "version": "13.6.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.1.tgz", - "integrity": "sha512-L+2BI1ougAPsFjXRyBhcKmfT016NscRFLv6Pz5EiNf1CCFJFU0pSKKQwsZTyAQB+sTuUL4TyFyp6J1Ork3dOqw==", + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", "dev": true, "requires": { "@npmcli/git": "^3.0.0", @@ -21914,7 +22840,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, "piscina": { @@ -21939,9 +22865,9 @@ } }, "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", "dev": true, "requires": { "nanoid": "^3.3.4", @@ -22004,9 +22930,9 @@ } }, "postcss-custom-properties": { - "version": "12.1.8", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.8.tgz", - "integrity": "sha512-8rbj8kVu00RQh2fQF81oBqtduiANu4MIxhyf0HbbStgPtnFlWn0yiaYTpLHrPnJbffVY1s9apWsIoVZcc68FxA==", + "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -22091,9 +23017,9 @@ } }, "postcss-import": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.0.0.tgz", + "integrity": "sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==", "dev": true, "requires": { "postcss-value-parser": "^4.0.0", @@ -22180,9 +23106,9 @@ } }, "postcss-nesting": { - "version": "10.1.10", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.10.tgz", - "integrity": "sha512-lqd7LXCq0gWc0wKXtoKDru5wEUNjm3OryLVNRZ8OnW8km6fSNUuFrjEhU3nklxXE2jvd4qrox566acgh+xQt8w==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", "dev": true, "requires": { "@csstools/selector-specificity": "^2.0.0", @@ -22190,10 +23116,11 @@ } }, "postcss-opacity-percentage": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", - "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", - "dev": true + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", + "dev": true, + "requires": {} }, "postcss-overflow-shorthand": { "version": "3.0.4", @@ -22221,57 +23148,59 @@ } }, "postcss-preset-env": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.7.2.tgz", - "integrity": "sha512-1q0ih7EDsZmCb/FMDRvosna7Gsbdx8CvYO5hYT120hcp2ZAuOHpSzibujZ4JpIUcAC02PG6b+eftxqjTFh5BNA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.0.tgz", + "integrity": "sha512-leqiqLOellpLKfbHkD06E04P6d9ZQ24mat6hu4NSqun7WG0UhspHR5Myiv/510qouCjoo4+YJtNOqg5xHaFnCA==", "dev": true, "requires": { - "@csstools/postcss-cascade-layers": "^1.0.4", - "@csstools/postcss-color-function": "^1.1.0", - "@csstools/postcss-font-format-keywords": "^1.0.0", - "@csstools/postcss-hwb-function": "^1.0.1", - "@csstools/postcss-ic-unit": "^1.0.0", - "@csstools/postcss-is-pseudo-class": "^2.0.6", - "@csstools/postcss-normalize-display-values": "^1.0.0", - "@csstools/postcss-oklab-function": "^1.1.0", + "@csstools/postcss-cascade-layers": "^1.0.5", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.1", - "@csstools/postcss-unset-value": "^1.0.1", - "autoprefixer": "^10.4.7", - "browserslist": "^4.21.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.8", + "browserslist": "^4.21.3", "css-blank-pseudo": "^3.0.3", "css-has-pseudo": "^3.0.4", "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^6.6.3", - "postcss-attribute-case-insensitive": "^5.0.1", + "cssdb": "^7.0.0", + "postcss-attribute-case-insensitive": "^5.0.2", "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.3", + "postcss-color-functional-notation": "^4.2.4", "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.0", + "postcss-color-rebeccapurple": "^7.1.1", "postcss-custom-media": "^8.0.2", "postcss-custom-properties": "^12.1.8", "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.4", - "postcss-double-position-gradients": "^3.1.1", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", "postcss-env-function": "^4.0.6", "postcss-focus-visible": "^6.0.4", "postcss-focus-within": "^5.0.4", "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.3", - "postcss-image-set-function": "^4.0.6", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.0", + "postcss-lab-function": "^4.2.1", "postcss-logical": "^5.0.4", "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.1.9", + "postcss-nesting": "^10.1.10", "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.3", + "postcss-overflow-shorthand": "^3.0.4", "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.4", - "postcss-pseudo-class-any-link": "^7.1.5", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.0", + "postcss-selector-not": "^6.0.1", "postcss-value-parser": "^4.2.0" } }, @@ -22301,9 +23230,9 @@ } }, "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -22374,6 +23303,12 @@ } } }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -22388,9 +23323,9 @@ "dev": true }, "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, "requires": { "side-channel": "^1.0.4" @@ -22447,15 +23382,23 @@ } }, "read-package-json": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz", - "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", "dev": true, "requires": { "glob": "^8.0.1", "json-parse-even-better-errors": "^2.3.1", "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1" + "npm-normalize-package-bin": "^2.0.0" + }, + "dependencies": { + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true + } } }, "read-package-json-fast": { @@ -22501,9 +23444,9 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, "requires": { "regenerate": "^1.4.2" @@ -22516,9 +23459,9 @@ "dev": true }, "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", "dev": true, "requires": { "@babel/runtime": "^7.8.4" @@ -22537,29 +23480,29 @@ "dev": true }, "regexpu-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", - "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", "dev": true, "requires": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" + "unicode-match-property-value-ecmascript": "^2.1.0" } }, "regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", "dev": true }, "regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -22622,9 +23565,9 @@ }, "dependencies": { "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.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -22643,7 +23586,7 @@ "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "dev": true, "requires": { "onetime": "^2.0.0", @@ -22737,9 +23680,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==", "dev": true }, "safer-buffer": { @@ -22749,9 +23692,9 @@ "dev": true }, "sass": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", - "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", + "version": "1.54.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz", + "integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -22820,9 +23763,9 @@ "dev": true }, "selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dev": true, "requires": { "node-forge": "^1" @@ -22845,6 +23788,12 @@ "requires": { "yallist": "^4.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -23079,9 +24028,9 @@ } }, "socks": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", - "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "dev": true, "requires": { "ip": "^2.0.0", @@ -23133,16 +24082,6 @@ } } }, - "source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -23194,9 +24133,9 @@ } }, "spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, "spdy": { @@ -23255,14 +24194,6 @@ "dev": true, "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==", - "dev": true - } } }, "string-width": { @@ -23284,7 +24215,7 @@ "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -23304,8 +24235,7 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" }, "strip-final-newline": { "version": "2.0.0", @@ -23319,13 +24249,24 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, - "stylus": { - "version": "0.58.1", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.58.1.tgz", - "integrity": "sha512-AYiCHm5ogczdCPMfe9aeQa4NklB2gcf4D/IhzYPddJjTgPc+k4D/EVE0yfQbZD43MHP3lPy+8NZ9fcFxkrgs/w==", + "strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", "dev": true, "requires": { - "css": "^3.0.0", + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + } + }, + "stylus": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", + "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", + "dev": true, + "requires": { + "@adobe/css-tools": "^4.0.1", "debug": "^4.3.2", "glob": "^7.1.6", "sax": "~1.2.4", @@ -23406,17 +24347,34 @@ "dev": true }, "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", "dev": true, "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^4.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, "tar-stream": { @@ -23445,16 +24403,16 @@ } }, "terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "terser": "^5.14.1" }, "dependencies": { "ajv": { @@ -23609,32 +24567,19 @@ } }, "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.1.2.tgz", + "integrity": "sha512-uhxiMgnXQp1IR622dUXI+9Ehnws7i/y6xvpZB9IbUVOPy0muvdvgXeZOn88UcGPiT98Vp3rJPTa8bFoalZ3Qhw==", "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^2.2.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } } }, "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, "tslint": { "version": "6.1.3", @@ -23808,15 +24753,15 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true }, "unique-filename": { @@ -23850,9 +24795,9 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "dev": true, "requires": { "escalade": "^3.1.1", @@ -23946,9 +24891,9 @@ } }, "webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -23956,11 +24901,11 @@ "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", + "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", + "enhanced-resolve": "^5.10.0", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -23973,7 +24918,7 @@ "schema-utils": "^3.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "dependencies": { @@ -24043,9 +24988,9 @@ } }, "webpack-dev-server": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.3.tgz", - "integrity": "sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz", + "integrity": "sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw==", "dev": true, "requires": { "@types/bonjour": "^3.5.9", @@ -24237,9 +25182,9 @@ "dev": true }, "ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, "requires": {} }, @@ -24250,9 +25195,9 @@ "dev": true }, "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "yaml": { @@ -24307,10 +25252,16 @@ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, "zone.js": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.7.tgz", - "integrity": "sha512-e39K2EdK5JfA3FDuUTVRvPlYV4aBfnOOcGuILhQAT7nzeV12uSrLBzImUM9CDVoncDSX4brR/gwqu0heQ3BQ0g==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", + "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", "requires": { "tslib": "^2.3.0" } diff --git a/common/utils/websrv/frontend/package.json b/common/utils/websrv/frontend/package.json index b93872c2c6..7285043f4c 100644 --- a/common/utils/websrv/frontend/package.json +++ b/common/utils/websrv/frontend/package.json @@ -22,11 +22,14 @@ "@angular/platform-browser-dynamic": "^14.1.0", "@angular/router": "^14.1.0", "chart.js": "^3.8.2", + "loader-utils": "^3.2.1", "moment": "^2.29.3", "ng2-charts": "^4.0.0", "rxjs": "^6.6.6", "tslib": "^2.0.0", - "zone.js": "^0.11.4" + "zone.js": "^0.11.4", + "json5": "^2.2.2", + "tsconfig-paths": "^4.0.0" }, "devDependencies": { "@angular-devkit/architect": "^0.1401.0", diff --git a/common/utils/websrv/frontend/src/app/api/commands.api.ts b/common/utils/websrv/frontend/src/app/api/commands.api.ts index 7ebb20dd9c..64d08abe80 100644 --- a/common/utils/websrv/frontend/src/app/api/commands.api.ts +++ b/common/utils/websrv/frontend/src/app/api/commands.api.ts @@ -1,13 +1,39 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/api/commands.api.ts + * \brief: implementation of web interface frontend for oai + * \api's definitions for the commands module, which provides web interface to telnet server commands + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {HttpClient} from "@angular/common/http"; import {Injectable} from "@angular/core"; import {environment} from "src/environments/environment"; -export interface IInfo { - name: string; - value: string; - type: IArgType; - modifiable: boolean; // set command ? -} - +import {route, IArgType, IInfo} from "src/commondefs"; export interface IModule { name: string; } @@ -28,17 +54,6 @@ export enum ILogOutput { file = "/tmp/.log", } -export enum IArgType { - boolean = "boolean", - list = "list", - loglvl = "loglvl", - range = "range", - number = "number", - string = "string", - configfile = "configfile", - simuTypes = "simuTypes", -} - export enum ICommandOptions { update = "update", // result can be updated, triggers update button on result page when set help = "help" // help tooltip available on command buttons @@ -54,8 +69,8 @@ export interface IVariable { export interface ICommand { name: string; confirm?: string; - question?: IQuestion; - param?: IVariable; + question?: IQuestion[]; + param?: IVariable[]; options?: ICommandOptions[]; } export interface ITable { @@ -86,7 +101,6 @@ export interface IRow { param?: IVariable // to transmit the initial command parameter, ex: the channel model index when modify a channel model } -export const route = "oaisoftmodem/"; @Injectable({ providedIn : "root", @@ -96,10 +110,6 @@ export class CommandsApi { { } - public readInfos$ = () => this.httpClient.get(environment.backend + route + "variables/"); - - public setInfo$ = (info: IInfo) => this.httpClient.post(environment.backend + route + "variables/", info); - public readModules$ = () => this.httpClient.get(environment.backend + route + "commands/"); public readVariables$ = (moduleName: string) => this.httpClient.get(environment.backend + route + moduleName + "/variables/"); diff --git a/common/utils/websrv/frontend/src/app/api/help.api.ts b/common/utils/websrv/frontend/src/app/api/help.api.ts index 78b4478532..165ff9efdc 100644 --- a/common/utils/websrv/frontend/src/app/api/help.api.ts +++ b/common/utils/websrv/frontend/src/app/api/help.api.ts @@ -1,8 +1,41 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/api/help.api.ts + * \brief: implementation of web interface frontend for oai + * \api's definitions for the help module, which can be used to provides help text via tooltips + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {HttpClient} from "@angular/common/http"; import {Injectable} from "@angular/core"; import {Observable} from "rxjs"; import {map} from "rxjs/operators"; import {environment} from "src/environments/environment"; +import {route} from "src/commondefs"; export interface HelpRequest { module: string; @@ -13,7 +46,7 @@ export interface HelpRequest { export interface HelpResp { text: string; } -const hlproute = "oaisoftmodem/helpfiles/"; +const hlproute = route + "/helpfiles/"; @Injectable({ providedIn : "root", @@ -28,9 +61,10 @@ export class HelpApi { public getHelpText(module: string, command: string, object: string): Observable { + return this.getHelp$({module : module, command : command.replace(" ", "_"), object : object.replace(" ", "_")}) .pipe(map( - (response => { return (response.status == 201) ? response.body!.text : ""; }), + (response => { return (response.status == 201) ? response.body!.text.replace(//gm, '') : ""; }), )); // pipe } } diff --git a/common/utils/websrv/frontend/src/app/api/info.api.ts b/common/utils/websrv/frontend/src/app/api/info.api.ts new file mode 100644 index 0000000000..3b01ae8a54 --- /dev/null +++ b/common/utils/websrv/frontend/src/app/api/info.api.ts @@ -0,0 +1,47 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/api/info.api.ts + * \brief: implementation of web interface frontend for oai + * \api's definitions for the info module, which provides global info about the connected oai modem + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ +import {HttpClient} from "@angular/common/http"; +import {Injectable} from "@angular/core"; +import {environment} from "src/environments/environment"; +import {route, IInfo} from "src/commondefs"; + +@Injectable({ + providedIn : "root", +}) +export class InfoApi { + constructor(private httpClient: HttpClient) + { + } + + public readInfos$ = () => this.httpClient.get(environment.backend + route + "info/"); +} diff --git a/common/utils/websrv/frontend/src/app/api/scope.api.ts b/common/utils/websrv/frontend/src/app/api/scope.api.ts index 856c7f0e6b..b019804dea 100644 --- a/common/utils/websrv/frontend/src/app/api/scope.api.ts +++ b/common/utils/websrv/frontend/src/app/api/scope.api.ts @@ -1,6 +1,39 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/scope/scope.api.ts + * \brief: implementation of web interface frontend for oai + * \api's definitions for the scope module, which provides a web interface to the oai soft scope + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {HttpClient} from "@angular/common/http"; import {Injectable} from "@angular/core"; import {environment} from "src/environments/environment"; +import {route} from "src/commondefs"; export enum IScopeGraphType { IQs = "IQs", @@ -33,7 +66,7 @@ export interface ISigDesc { antenna_id: number; } -const route = "oaisoftmodem/scopectrl/"; +const scoperoute = route + "/scopectrl/"; @Injectable({ providedIn : "root", @@ -43,7 +76,7 @@ export class ScopeApi { { } - public getScopeInfos$ = () => this.httpClient.get(environment.backend + route); + public getScopeInfos$ = () => this.httpClient.get(environment.backend + scoperoute); - public setScopeParams$ = (cmd: IScopeCmd) => this.httpClient.post(environment.backend + route, cmd, {observe : "response"}); + public setScopeParams$ = (cmd: IScopeCmd) => this.httpClient.post(environment.backend + scoperoute, cmd, {observe : "response"}); } diff --git a/common/utils/websrv/frontend/src/app/app-routing.module.ts b/common/utils/websrv/frontend/src/app/app-routing.module.ts index 14396aaf2d..f47c12a5dc 100644 --- a/common/utils/websrv/frontend/src/app/app-routing.module.ts +++ b/common/utils/websrv/frontend/src/app/app-routing.module.ts @@ -1,3 +1,34 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/app-routing-module.ts + * \brief: implementation of web interface frontend for oai + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {NgModule} from "@angular/core"; import {RouterModule, Routes} from "@angular/router"; diff --git a/common/utils/websrv/frontend/src/app/app.component.html b/common/utils/websrv/frontend/src/app/app.component.html index 0e7d64ae5e..f95891c809 100644 --- a/common/utils/websrv/frontend/src/app/app.component.html +++ b/common/utils/websrv/frontend/src/app/app.component.html @@ -1,8 +1,45 @@ + + + + - \ No newline at end of file + diff --git a/common/utils/websrv/frontend/src/app/app.module.ts b/common/utils/websrv/frontend/src/app/app.module.ts index d750c191c7..b4ca9fab68 100644 --- a/common/utils/websrv/frontend/src/app/app.module.ts +++ b/common/utils/websrv/frontend/src/app/app.module.ts @@ -1,3 +1,35 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/app.module.ts + * \brief: implementation of web interface frontend for oai + * \all components, (externals or devlopped for oai) used by the application are imported from here + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {DragDropModule} from "@angular/cdk/drag-drop"; import {HttpClientModule} from "@angular/common/http"; import {NgModule} from "@angular/core"; @@ -25,19 +57,20 @@ import {BrowserAnimationsModule} from "@angular/platform-browser/animations"; import {NgChartsModule} from "ng2-charts"; import {CommandsApi} from "./api/commands.api"; import {ScopeApi} from "./api/scope.api"; +import {InfoApi} from "./api/info.api"; import {AppRoutingModule} from "./app-routing.module"; import {AppComponent} from "./app.component"; +import {InfoComponent} from "./components/info/info.component"; import {CommandsComponent} from "./components/commands/commands.component"; import {ConfirmDialogComponent} from "./components/confirm/confirm.component"; import {DialogComponent} from "./components/dialog/dialog.component"; import {QuestionDialogComponent} from "./components/question/question.component"; import {ScopeComponent} from "./components/scope/scope.component"; import {InterceptorProviders} from "./interceptors/interceptors"; -import {LoadingService} from "./services/loading.service"; import {WebSocketService} from "./services/websocket.service"; @NgModule({ - declarations : [ AppComponent, CommandsComponent, ConfirmDialogComponent, QuestionDialogComponent, DialogComponent, ScopeComponent ], + declarations : [ AppComponent, CommandsComponent, InfoComponent, ConfirmDialogComponent, QuestionDialogComponent, DialogComponent, ScopeComponent ], imports : [ BrowserModule, AppRoutingModule, FormsModule, ReactiveFormsModule, BrowserAnimationsModule, HttpClientModule, MatButtonModule, FlexLayoutModule, MatDialogModule, DragDropModule, MatSliderModule, MatFormFieldModule, MatInputModule, MatChipsModule, MatProgressSpinnerModule, MatToolbarModule, MatTableModule, MatListModule, MatSelectModule, MatSnackBarModule, @@ -45,10 +78,10 @@ import {WebSocketService} from "./services/websocket.service"; ], providers : [ // services - LoadingService, WebSocketService, // api CommandsApi, + InfoApi, ScopeApi, // interceptors InterceptorProviders, diff --git a/common/utils/websrv/frontend/src/app/components/commands/commands.component.html b/common/utils/websrv/frontend/src/app/components/commands/commands.component.html index cef8fbc4f5..e4aa2f3a13 100644 --- a/common/utils/websrv/frontend/src/app/components/commands/commands.component.html +++ b/common/utils/websrv/frontend/src/app/components/commands/commands.component.html @@ -1,28 +1,40 @@ -

- - - - - Connection info - - -
-
- - {{ info.nameFC.value }} - - - -
-
-
-
-
+ +
+ + Softmodem commands @@ -49,7 +61,7 @@ - + {{ selectedModule!.name }} variables @@ -69,10 +81,10 @@ - + - {{ selectedModule!.name }} {{ selectedCmd!.name }} {{ selectedCmd!.param?.value}} + {{ selectedModule!.name }} {{ selectedCmd!.name }} {{ title_ptext }}
diff --git a/common/utils/websrv/frontend/src/app/components/commands/commands.component.ts b/common/utils/websrv/frontend/src/app/components/commands/commands.component.ts index 843b78973a..b11e6f446c 100644 --- a/common/utils/websrv/frontend/src/app/components/commands/commands.component.ts +++ b/common/utils/websrv/frontend/src/app/components/commands/commands.component.ts @@ -1,12 +1,44 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/components/commands/commands.component.ts + * \brief: implementation of web interface frontend for oai + * \commands web interface implementation (works with commands.component.html) + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {Component} from "@angular/core"; +import {route, IArgType, IInfo} from "src/commondefs"; import {ViewEncapsulation} from "@angular/core"; import {UntypedFormArray} from "@angular/forms"; import {BehaviorSubject, forkJoin, Observable, of, timer} from "rxjs"; import {filter, map, switchMap, tap} from "rxjs/operators"; -import {CommandsApi, IArgType, IColumn, ICommand, ICommandOptions, IInfo, ILogLvl, IParam, IRow} from "src/app/api/commands.api"; +import {CommandsApi, IColumn, ICommand, ICommandOptions, ILogLvl, IParam, IRow} from "src/app/api/commands.api"; import {HelpApi, HelpRequest, HelpResp} from "src/app/api/help.api"; import {CmdCtrl} from "src/app/controls/cmd.control"; -import {InfoCtrl} from "src/app/controls/info.control"; import {ModuleCtrl} from "src/app/controls/module.control"; import {RowCtrl} from "src/app/controls/row.control"; import {VarCtrl} from "src/app/controls/var.control"; @@ -29,7 +61,7 @@ const PREDEF_CMD = "show predef" logLvlValues = Object.values(ILogLvl); // softmodem - infos$: Observable; + modules$: Observable; // module @@ -42,7 +74,8 @@ const PREDEF_CMD = "show predef" displayedColumns: string[] = []; rows$: BehaviorSubject = new BehaviorSubject([]); columns: IColumn[] = []; - + title_ptext: string =""; //used for possibly add a riminder of command parameters in the result page + constructor( public commandsApi: CommandsApi, public helpApi: HelpApi, @@ -52,8 +85,6 @@ const PREDEF_CMD = "show predef" ) { - this.infos$ = this.commandsApi.readInfos$().pipe(map((infos) => infos.map(info => new InfoCtrl(info)))); - this.modules$ = this.commandsApi.readModules$().pipe( map(imodules => imodules.map(imodule => new ModuleCtrl(imodule))), filter(controls => controls.length > 0), tap(controls => this.onModuleSelect(controls[0]))); } @@ -71,22 +102,13 @@ const PREDEF_CMD = "show predef" // ); // } - onInfoSubmit(control: InfoCtrl) - { - let info: IInfo = control.api(); - - if (info.type === IArgType.configfile) { - this.downloadService.getFile(info.value) - } else { - this.commandsApi.setInfo$(info).subscribe(); - } - } onModuleSelect(module: ModuleCtrl) { this.selectedModule = module this.selectedCmd = undefined - + this.title_ptext=""; + this.cmds$ = this.commandsApi.readCommands$(module.name).pipe( map(icmds => icmds.map(icmd => new CmdCtrl(icmd))), map(cmds => { @@ -134,8 +156,14 @@ const PREDEF_CMD = "show predef" private execCmd$(control: CmdCtrl) { let cmd = control!.api(); - if (this.selectedCmd!.param) - this.selectedCmd!.param!.value = cmd.param!.value; + if (this.selectedCmd!.param) { + this.selectedCmd!.param![0].value = cmd.param![0].value; + this.title_ptext = cmd.param![0].value; + if( this.selectedCmd!.param!.length > 1) { + this.selectedCmd!.param![1].value = cmd.param![1].value; + this.title_ptext = this.title_ptext + " " + cmd.param![1].value; + } + } this.commandsApi.runCommand$(cmd, this.selectedModule!.name) .subscribe( resp => { @@ -153,14 +181,7 @@ const PREDEF_CMD = "show predef" // possibly load help.. for (let i = 0; i < this.columns.length; i = i + 1) { if (this.columns[i].help) { - this.helpApi.getHelp$({module : this.selectedModule!.name, command : control!.api().name.replace(" ", "_"), object : this.columns[i].name.replace(" ", "_")}) - .subscribe( - response => { - if (response.status == 201) - this.hlp_cc[i] = response.body!.text; - }, - err => { this.hlp_cc[i] = ""; }, - ); + this.helpApi.getHelpText(this.selectedModule!.name,control!.api().name,this.columns[i].name).subscribe(resp => { this.hlp_cc[i] = resp; }, err => { this.hlp_cc[i] = ""; }); } else { this.hlp_cc[i] = ""; } @@ -201,7 +222,7 @@ const PREDEF_CMD = "show predef" onParamSubmit(control: RowCtrl) { if (this.selectedCmd!.param) - control.set_cmdparam(this.selectedCmd!.param); + control.set_cmdparam(this.selectedCmd!.param[0]); this.commandsApi.setCmdParams$(control.api(), this.selectedModule!.name).subscribe(() => this.execCmd$(new CmdCtrl(this.selectedCmd!))); } } diff --git a/common/utils/websrv/frontend/src/app/components/info/info.component.html b/common/utils/websrv/frontend/src/app/components/info/info.component.html new file mode 100644 index 0000000000..f1d6a041f1 --- /dev/null +++ b/common/utils/websrv/frontend/src/app/components/info/info.component.html @@ -0,0 +1,58 @@ + +
+ + + + + Connection info + + +
+
+ + {{ info.nameFC.value }} + + + +
+
+
+
+
+
+
diff --git a/common/utils/websrv/frontend/src/app/components/info/info.component.scss b/common/utils/websrv/frontend/src/app/components/info/info.component.scss new file mode 100644 index 0000000000..5c511449ef --- /dev/null +++ b/common/utils/websrv/frontend/src/app/components/info/info.component.scss @@ -0,0 +1,15 @@ +.infodiv { + height: 45px; + width: 80vw; + display: flex; + justify-content: space-between; + margin: 0 auto; + padding: 10px 0; +} + + +.mat-card { + height: 95%; + overflow-y: auto; + overflow-x: scroll; +} diff --git a/common/utils/websrv/frontend/src/app/components/info/info.component.ts b/common/utils/websrv/frontend/src/app/components/info/info.component.ts new file mode 100644 index 0000000000..bf607b76db --- /dev/null +++ b/common/utils/websrv/frontend/src/app/components/info/info.component.ts @@ -0,0 +1,76 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/components/info/info.component.ts + * \brief: implementation of web interface frontend for oai + * \info component web interface implementation (works with info.component.html) + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ +import {Component} from "@angular/core"; +import {IArgType, IInfo} from "src/commondefs"; +import {ViewEncapsulation} from "@angular/core"; +import {UntypedFormArray} from "@angular/forms"; +import {Observable} from "rxjs"; +import {filter, map, switchMap, tap} from "rxjs/operators"; +import {InfoApi} from "src/app/api/info.api"; +import {InfoCtrl} from "src/app/controls/info.control"; +import {ModuleCtrl} from "src/app/controls/module.control"; +import {VarCtrl} from "src/app/controls/var.control"; +import {DialogService} from "src/app/services/dialog.service"; +import {DownloadService} from "src/app/services/download.service"; + + @Component({ + selector : "app-info", + templateUrl : "./info.component.html", + styleUrls : [ "./info.component.scss" ], + encapsulation : ViewEncapsulation.None, + }) export class InfoComponent { + + infos$: Observable; + + + + constructor( + public infoApi: InfoApi, + public downloadService: DownloadService, + + ) + { + this.infos$ = this.infoApi.readInfos$().pipe(map((infos) => infos.map(info => new InfoCtrl(info)))); + } + + + onInfoSubmit(control: InfoCtrl) + { + let info: IInfo = control.api(); + + if (info.type === IArgType.configfile) { + this.downloadService.getFile(info.value) + } + } + +} diff --git a/common/utils/websrv/frontend/src/app/components/question/question.component.html b/common/utils/websrv/frontend/src/app/components/question/question.component.html index 8b8a5e7321..d01bfc1b69 100644 --- a/common/utils/websrv/frontend/src/app/components/question/question.component.html +++ b/common/utils/websrv/frontend/src/app/components/question/question.component.html @@ -1,11 +1,56 @@ -

{{ data.title }}

+ +

{{ data.control.cmdname }} command parameters

- - +
+ + +
+
+ + + + +
- +
+
+
+
diff --git a/common/utils/websrv/frontend/src/app/components/question/question.component.ts b/common/utils/websrv/frontend/src/app/components/question/question.component.ts index f98fc430cc..7d50cc295a 100644 --- a/common/utils/websrv/frontend/src/app/components/question/question.component.ts +++ b/common/utils/websrv/frontend/src/app/components/question/question.component.ts @@ -1,20 +1,57 @@ /* eslint-disable @typescript-eslint/naming-convention */ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/components/question/question.component.ts + * \brief: implementation of web interface frontend for oai + * \utility component used to allow entering parameters before sending a request to the backend + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {Component, Inject} from "@angular/core"; import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog"; import {CmdCtrl} from "src/app/controls/cmd.control"; - +import {HelpApi, HelpRequest, HelpResp} from "src/app/api/help.api"; export interface QuestionDialogData { title: string; control: CmdCtrl; } @Component({selector : "app-question", templateUrl : "./question.component.html", styleUrls : [ "./question.component.css" ]}) export class QuestionDialogComponent { + hlp_question: string = ""; constructor( public dialogRef: MatDialogRef, + public helpApi: HelpApi, @Inject(MAT_DIALOG_DATA) public data: QuestionDialogData, ) { + this.helpApi.getHelpText("question", data.control.cmdname, "input").subscribe( response => { this.hlp_question = response;}) } + + onNoClick() { this.dialogRef.close(); diff --git a/common/utils/websrv/frontend/src/app/components/scope/scope.component.html b/common/utils/websrv/frontend/src/app/components/scope/scope.component.html index 5b0f216140..2cfcdc770c 100644 --- a/common/utils/websrv/frontend/src/app/components/scope/scope.component.html +++ b/common/utils/websrv/frontend/src/app/components/scope/scope.component.html @@ -1,3 +1,37 @@ +
diff --git a/common/utils/websrv/frontend/src/app/components/scope/scope.component.ts b/common/utils/websrv/frontend/src/app/components/scope/scope.component.ts index 3e9d1c4e7c..331e897bcd 100644 --- a/common/utils/websrv/frontend/src/app/components/scope/scope.component.ts +++ b/common/utils/websrv/frontend/src/app/components/scope/scope.component.ts @@ -1,3 +1,35 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/components/scope/scope.component.ts + * \brief: implementation of web interface frontend for oai + * \scope component web interface implementation (works with scope.component.html) + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {Component, EventEmitter, OnDestroy, OnInit, Output, QueryList, ViewChildren} from "@angular/core"; import {Chart, ChartConfiguration} from "chart.js"; import {BaseChartDirective} from "ng2-charts"; diff --git a/common/utils/websrv/frontend/src/app/controls/cmd.control.ts b/common/utils/websrv/frontend/src/app/controls/cmd.control.ts index b14e02d610..3d9b27cbfa 100644 --- a/common/utils/websrv/frontend/src/app/controls/cmd.control.ts +++ b/common/utils/websrv/frontend/src/app/controls/cmd.control.ts @@ -1,19 +1,53 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/controls/cmd.control.ts + * \brief: implementation of web interface frontend for oai + * \implement a command for commands component + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ + import {UntypedFormArray, UntypedFormControl, UntypedFormGroup} from "@angular/forms"; import {Subscription} from "rxjs"; import {Observable} from "rxjs/internal/Observable"; -import {ICommand, ICommandOptions, IQuestion} from "src/app/api/commands.api"; +import {ICommand, ICommandOptions, IQuestion, IVariable} from "src/app/api/commands.api"; import {HelpApi, HelpRequest, HelpResp} from "src/app/api/help.api"; const enum CmdFCN { name = "name", vars = "variables", confirm = "confirm", - answer = "answer" + answer = "answer", + answerb = "answerb" } export class CmdCtrl extends UntypedFormGroup { confirm?: string; - question?: IQuestion; + question?: IQuestion[]; cmdname: string; options?: ICommandOptions[]; public ResUpdTimer?: Observable; @@ -27,26 +61,40 @@ export class CmdCtrl extends UntypedFormGroup { this.addControl(CmdFCN.name, new UntypedFormControl(cmd.name)); this.addControl(CmdFCN.answer, new UntypedFormControl("")); + this.addControl(CmdFCN.answerb, new UntypedFormControl("")); this.addControl(CmdFCN.vars, new UntypedFormArray([])); this.confirm = cmd.confirm; this.question = cmd.question; this.cmdname = cmd.name; this.options = cmd.options; - this.updbtnname = "Start update" + this.updbtnname = "Start update"; } api() { const doc: ICommand = { name : this.nameFC.value, - param : this.question ? {name : this.question!.pname, value : this.answerFC.value, type : this.question!.type, modifiable : false} : undefined, + param : this.question ? this.setParams() : undefined, +// param : this.question ? {name : this.question!.pname, value : this.answerFC.value, type : this.question!.type, modifiable : false} : undefined, options : this.options }; return doc; } - + + setParams () + { + var vars : IVariable[]=new Array(); + for (let i = 0; i < this.question!.length; i++) { + vars.push({name:this.question![i].pname, + value:(i==0)?this.answerFC.value:this.answerbFC.value, + type:this.question![i].type, + modifiable:false }) + } + return vars; + } + isResUpdatable(): boolean { if (this.options) { @@ -88,6 +136,11 @@ export class CmdCtrl extends UntypedFormGroup { { return this.get(CmdFCN.answer) as UntypedFormControl; } + + get answerbFC() + { + return this.get(CmdFCN.answerb) as UntypedFormControl; + } get varsFA() { diff --git a/common/utils/websrv/frontend/src/app/controls/info.control.ts b/common/utils/websrv/frontend/src/app/controls/info.control.ts index e5d372db7e..c3c56bb297 100644 --- a/common/utils/websrv/frontend/src/app/controls/info.control.ts +++ b/common/utils/websrv/frontend/src/app/controls/info.control.ts @@ -1,6 +1,37 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/controls/info.control.ts + * \brief: implementation of web interface frontend for oai + * \implement one info item for info component + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {UntypedFormControl, UntypedFormGroup} from "@angular/forms"; -import {IInfo} from "../api/commands.api"; -import {IArgType} from "../api/commands.api"; +import {IArgType, IInfo} from "src/commondefs"; const enum InfosFCN { name = "name", diff --git a/common/utils/websrv/frontend/src/app/controls/module.control.ts b/common/utils/websrv/frontend/src/app/controls/module.control.ts index 6ba4323553..ef20025f86 100644 --- a/common/utils/websrv/frontend/src/app/controls/module.control.ts +++ b/common/utils/websrv/frontend/src/app/controls/module.control.ts @@ -1,3 +1,35 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/controls/module.control.ts + * \brief: implementation of web interface frontend for oai + * \implement one module item for commands component + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {UntypedFormArray, UntypedFormGroup} from "@angular/forms"; import {IModule} from "../api/commands.api"; diff --git a/common/utils/websrv/frontend/src/app/controls/param.control.ts b/common/utils/websrv/frontend/src/app/controls/param.control.ts index 6c17acd240..f091a7db99 100644 --- a/common/utils/websrv/frontend/src/app/controls/param.control.ts +++ b/common/utils/websrv/frontend/src/app/controls/param.control.ts @@ -1,5 +1,38 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/controls/param.control.ts + * \brief: implementation of web interface frontend for oai + * \implement one parameter in a result row for commands component + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {UntypedFormControl, UntypedFormGroup} from "@angular/forms"; -import {IArgType, IColumn, IParam} from "../api/commands.api"; +import {IArgType, IInfo} from "src/commondefs"; +import { IParam, IColumn,} from "../api/commands.api"; enum ParamFCN { value = "value", diff --git a/common/utils/websrv/frontend/src/app/controls/row.control.ts b/common/utils/websrv/frontend/src/app/controls/row.control.ts index fc28885401..0117981f3e 100644 --- a/common/utils/websrv/frontend/src/app/controls/row.control.ts +++ b/common/utils/websrv/frontend/src/app/controls/row.control.ts @@ -1,7 +1,38 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ +/*! \file common/utils/websrv/frontend/src/app/controls/row.control.ts + * \brief: implementation of web interface frontend for oai + * \implement one row results for commands component + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {FormControl, UntypedFormArray, UntypedFormGroup} from "@angular/forms"; - -import {IArgType, IParam, IRow, IVariable} from "../api/commands.api"; +import {IArgType} from "src/commondefs"; +import {IParam, IRow, IVariable} from "../api/commands.api"; import {ParamCtrl} from "./param.control"; diff --git a/common/utils/websrv/frontend/src/app/controls/var.control.ts b/common/utils/websrv/frontend/src/app/controls/var.control.ts index b78fdb87a3..75a3581719 100644 --- a/common/utils/websrv/frontend/src/app/controls/var.control.ts +++ b/common/utils/websrv/frontend/src/app/controls/var.control.ts @@ -1,6 +1,37 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/controls/var.control.ts + * \brief: implementation of web interface frontend for oai + * \implement one variable item for commands componen + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {UntypedFormControl, UntypedFormGroup} from "@angular/forms"; -import {IInfo} from "../api/commands.api"; -import {IArgType} from "../api/commands.api"; +import {IArgType, IInfo} from "src/commondefs"; const enum VariablesFCN { name = "name", diff --git a/common/utils/websrv/frontend/src/app/interceptors/error.interceptor.ts b/common/utils/websrv/frontend/src/app/interceptors/error.interceptor.ts index 198a70be93..cdb096c6ae 100644 --- a/common/utils/websrv/frontend/src/app/interceptors/error.interceptor.ts +++ b/common/utils/websrv/frontend/src/app/interceptors/error.interceptor.ts @@ -1,3 +1,35 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/interceptors/error.interceptor.ts + * \brief: implementation of web interface frontend for oai + * \utility to intercept error response from backend and possibly dispay an error to user + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse} from "@angular/common/http"; import {Injectable} from "@angular/core"; import {Observable, throwError} from "rxjs"; @@ -52,7 +84,7 @@ export class ErrorInterceptor implements HttpInterceptor { // The response body may contain clues as to what went wrong message = JSON.stringify(error.error); } - this.dialogService.openErrorDialog(prefix + " " + error.status, message); + this.dialogService.openErrorDialog(prefix + " " + request.url, "http status: " + error.status + " " + message); return throwError(error); }), ); diff --git a/common/utils/websrv/frontend/src/app/services/download.service.ts b/common/utils/websrv/frontend/src/app/services/download.service.ts index 6cb326daa8..be19549727 100644 --- a/common/utils/websrv/frontend/src/app/services/download.service.ts +++ b/common/utils/websrv/frontend/src/app/services/download.service.ts @@ -1,8 +1,40 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/app/services/download.service.ts + * \brief: implementation of web interface frontend for oai + * \utility to download a file from backend + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {HttpClient} from "@angular/common/http"; import {HttpHeaders} from "@angular/common/http"; import {HttpParams} from "@angular/common/http"; import {Injectable} from "@angular/core"; -import {route} from "src/app/api/commands.api"; +import {route} from "src/commondefs"; import {environment} from "src/environments/environment"; @Injectable({ diff --git a/common/utils/websrv/frontend/src/app/services/websocket.service.ts b/common/utils/websrv/frontend/src/app/services/websocket.service.ts index ea461602df..afddab9088 100644 --- a/common/utils/websrv/frontend/src/app/services/websocket.service.ts +++ b/common/utils/websrv/frontend/src/app/services/websocket.service.ts @@ -1,4 +1,35 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ +/*! \file common/utils/websrv/frontend/src/app/services/websocket.service.ts + * \brief: implementation of web interface frontend for oai + * \utility implementing a web interface with the backend + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {Injectable} from "@angular/core"; import {webSocket, WebSocketSubject} from "rxjs/webSocket"; import {environment} from "src/environments/environment"; diff --git a/common/utils/websrv/frontend/src/commondefs.ts b/common/utils/websrv/frontend/src/commondefs.ts new file mode 100644 index 0000000000..199c89e542 --- /dev/null +++ b/common/utils/websrv/frontend/src/commondefs.ts @@ -0,0 +1,51 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/commondefs.ts + * \brief: implementation of web interface frontend for oai + * \definitions of constants, enums and interfaces common to the whole frontend + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ +export enum IArgType { + boolean = "boolean", + list = "list", + loglvl = "loglvl", + range = "range", + number = "number", + string = "string", + configfile = "configfile", + simuTypes = "simuTypes", +} + +export interface IInfo { + name: string; + value: string; + type: IArgType; + modifiable: boolean; // set command ? +} + +export const route = "oaisoftmodem/"; diff --git a/common/utils/websrv/frontend/src/main.ts b/common/utils/websrv/frontend/src/main.ts index a612aa1233..4525b8d5b5 100644 --- a/common/utils/websrv/frontend/src/main.ts +++ b/common/utils/websrv/frontend/src/main.ts @@ -1,3 +1,35 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/websrv/frontend/src/main.ts + * \brief: implementation of web interface frontend for oai + * \this is the frontend application main source but interesting things atarts in the app.module import + * \author: Yacine El Mghazli, Francois TABURET + * \date 2022 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: yacine.el_mghazli@nokia-bell-labs.com francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ import {enableProdMode} from "@angular/core"; import {platformBrowserDynamic} from "@angular/platform-browser-dynamic"; diff --git a/common/utils/websrv/helpfiles/cmd_channelmod_show_channelid.html b/common/utils/websrv/helpfiles/cmd_channelmod_show_channelid.html index 8c70f28df6..674b3ee27f 100644 --- a/common/utils/websrv/helpfiles/cmd_channelmod_show_channelid.html +++ b/common/utils/websrv/helpfiles/cmd_channelmod_show_channelid.html @@ -1 +1,34 @@ + This option asks for a model id and lists the parameters of this model. Some parameters can be then modified diff --git a/common/utils/websrv/helpfiles/cmd_channelmod_show_current.html b/common/utils/websrv/helpfiles/cmd_channelmod_show_current.html index fd0677c44f..a1f8bbdf08 100644 --- a/common/utils/websrv/helpfiles/cmd_channelmod_show_current.html +++ b/common/utils/websrv/helpfiles/cmd_channelmod_show_current.html @@ -1 +1,34 @@ + When a oai component, as the rf simulator, instanciates a channel model, the instanciation is added in the list of current models. The id of the instanciation is used when using the "show channelid" option. diff --git a/common/utils/websrv/helpfiles/cmd_channelmod_show_predef.html b/common/utils/websrv/helpfiles/cmd_channelmod_show_predef.html index 8d6a349b4a..63c67449e4 100644 --- a/common/utils/websrv/helpfiles/cmd_channelmod_show_predef.html +++ b/common/utils/websrv/helpfiles/cmd_channelmod_show_predef.html @@ -1 +1,34 @@ + Predefined channel model are a set of modelisation algorithm's, identified by a name, available in oai code. diff --git a/common/utils/websrv/helpfiles/question_setdistance_input.html b/common/utils/websrv/helpfiles/question_setdistance_input.html new file mode 100644 index 0000000000..097987d7fa --- /dev/null +++ b/common/utils/websrv/helpfiles/question_setdistance_input.html @@ -0,0 +1,37 @@ + +
    +
  1. model name: rfsimu_channel_<enB|ue>_<connection id>. For example model applied to the first UE connected to a gNB is "rfsimu_channel_ue0"
  2. +
  3. distance: expressed in meters
  4. +
diff --git a/common/utils/websrv/helpfiles/question_show_channelid_input.html b/common/utils/websrv/helpfiles/question_show_channelid_input.html new file mode 100644 index 0000000000..2a1193d518 --- /dev/null +++ b/common/utils/websrv/helpfiles/question_show_channelid_input.html @@ -0,0 +1,34 @@ + +channel index: channel model index in the channel modelisation module, it is printed when listing all defined models using the "show current" button. diff --git a/common/utils/websrv/helpfiles/rfsimu_show_models_algorithm.html b/common/utils/websrv/helpfiles/rfsimu_show_models_algorithm.html index 5961be1b5d..348399a8a7 100644 --- a/common/utils/websrv/helpfiles/rfsimu_show_models_algorithm.html +++ b/common/utils/websrv/helpfiles/rfsimu_show_models_algorithm.html @@ -1 +1,34 @@ + Available channel modelisation algorithm's can be listed using the "channelmod"/"show predef" command. A more convenient mechanism to select this will be implemented in a next version. diff --git a/common/utils/websrv/helpfiles/rfsimu_show_models_model_index.html b/common/utils/websrv/helpfiles/rfsimu_show_models_model_index.html index 325a9e2042..24fa2b2251 100644 --- a/common/utils/websrv/helpfiles/rfsimu_show_models_model_index.html +++ b/common/utils/websrv/helpfiles/rfsimu_show_models_model_index.html @@ -1 +1,34 @@ + The model index can be used to modify a model parameter, using the "channelmod"/"show channelid" commands diff --git a/common/utils/websrv/helpfiles/rfsimu_show_models_model_name.html b/common/utils/websrv/helpfiles/rfsimu_show_models_model_name.html index d21aa89a4a..544e77c4f6 100644 --- a/common/utils/websrv/helpfiles/rfsimu_show_models_model_name.html +++ b/common/utils/websrv/helpfiles/rfsimu_show_models_model_name.html @@ -1 +1,34 @@ + Models parameters are defined in the oai configuration file under the section "channelmod.". describes the parameters for each . Several can be defined, the loaded list is defined by the "channelmod.modellist" parameter. Model names are defined by the channel modelisation "user": for example the model "rfsmu_channel_ue0" is applied by the gNB rfsimulator on the signal received from ue0, the first connecet UE. diff --git a/common/utils/websrv/helpfiles/rfsimu_show_models_module_owner.html b/common/utils/websrv/helpfiles/rfsimu_show_models_module_owner.html index fe5530d938..79a65c0727 100644 --- a/common/utils/websrv/helpfiles/rfsimu_show_models_module_owner.html +++ b/common/utils/websrv/helpfiles/rfsimu_show_models_module_owner.html @@ -1 +1,34 @@ + When the rfsimulator is effectively using a channel model to modify a received signal he becomes the owner of that model. diff --git a/common/utils/websrv/helpfiles/scope_control_dataack.html b/common/utils/websrv/helpfiles/scope_control_dataack.html index 20d966cf1d..60533f1c03 100644 --- a/common/utils/websrv/helpfiles/scope_control_dataack.html +++ b/common/utils/websrv/helpfiles/scope_control_dataack.html @@ -1 +1,34 @@ + when enabled, back-end will stop sending data when too much data have not been acknowledge by the frontend. Currently the back-end limits to 200 the number of data messages waitting for ack. diff --git a/common/utils/websrv/helpfiles/softmodem_show_threadsched_nice.html b/common/utils/websrv/helpfiles/softmodem_show_threadsched_nice.html index ef0473723b..de9fac89ca 100644 --- a/common/utils/websrv/helpfiles/softmodem_show_threadsched_nice.html +++ b/common/utils/websrv/helpfiles/softmodem_show_threadsched_nice.html @@ -1 +1,34 @@ + Nice value, relevant for other and batch scheduling can be changed via the "oai priority" field diff --git a/common/utils/websrv/helpfiles/softmodem_show_threadsched_oai_priority.html b/common/utils/websrv/helpfiles/softmodem_show_threadsched_oai_priority.html index 19e73db91b..991d1a2434 100644 --- a/common/utils/websrv/helpfiles/softmodem_show_threadsched_oai_priority.html +++ b/common/utils/websrv/helpfiles/softmodem_show_threadsched_oai_priority.html @@ -1,3 +1,36 @@ + the oai priority field is used to provide the linux scheduling mode, priority and nice value in a single field. Priority value is mapped to linux scheduling mode, priority and nice as listed below: -101 to -199: real time, Round-Robin 1 to 99 diff --git a/common/utils/websrv/helpfiles/softmodem_show_threadsched_priority.html b/common/utils/websrv/helpfiles/softmodem_show_threadsched_priority.html index c1cc51745d..751b894efd 100644 --- a/common/utils/websrv/helpfiles/softmodem_show_threadsched_priority.html +++ b/common/utils/websrv/helpfiles/softmodem_show_threadsched_priority.html @@ -1 +1,34 @@ + Linux priority field, relevant for real-time scheduling mode (Round-Robin or fifo) can be modified using the "oai priority" field diff --git a/common/utils/websrv/helpfiles/softmodem_show_threadsched_sched_policy.html b/common/utils/websrv/helpfiles/softmodem_show_threadsched_sched_policy.html index 362fe0109f..3dfcd2633c 100644 --- a/common/utils/websrv/helpfiles/softmodem_show_threadsched_sched_policy.html +++ b/common/utils/websrv/helpfiles/softmodem_show_threadsched_sched_policy.html @@ -1 +1,34 @@ + scheduling policy can be modified using the "oai priority" field. diff --git a/common/utils/websrv/websrv.c b/common/utils/websrv/websrv.c index bcc1e87fca..7e3d8fd524 100644 --- a/common/utils/websrv/websrv.c +++ b/common/utils/websrv/websrv.c @@ -253,7 +253,7 @@ int websrv_callback_set_moduleparams(const struct _u_request *request, struct _u } // for *cmd } // json_unpack_ex(jsbody OK } // user_data - } // sbody + } // jsbody not null websrv_printf_end(httpstatus, websrvparams.dbglvl); return U_CALLBACK_COMPLETE; } @@ -432,40 +432,62 @@ int websrv_callback_set_softmodemvar(const struct _u_request *request, struct _u int websrv_processwebfunc(struct _u_response *response, cmdparser_t *modulestruct, telnetshell_cmddef_t *cmd, json_t *jparams) { LOG_I(UTIL, "[websrv] : executing command %s %s\n", modulestruct->module, cmd->cmdname); + if ((cmd->cmdflags & TELNETSRV_CMDFLAG_NEEDPARAM) && jparams == NULL) { + LOG_W(UTIL, "No parameters sent by frontend for %s %s\n", modulestruct->module, cmd->cmdname); + return 500; + } int http_status = 200; + char *pname[2], *pvalue[2]; + size_t np =0; + if (jparams != NULL) { + int b[2]; + char *ptype[2]; + json_error_t jerror; + np = json_array_size(jparams); + int jrt; + switch(np) { + case 1: + jrt=json_unpack_ex(jparams, &jerror, 0, "[{s:s,s:s,s:s,s,b}]", "name", &pname[0], "value", &pvalue[0], "type", &ptype[0], "modifiable", &b); + break; + case 2: + jrt=json_unpack_ex(jparams, &jerror, 0, "[{s:s,s:s,s:s,s,b},{s:s,s:s,s:s,s,b}]", + "name", &pname[0], "value", &pvalue[0], "type", &ptype[0], "modifiable", &b[0], + "name", &pname[1], "value", &pvalue[1], "type", &ptype[1], "modifiable", &b[1]); + break; + default: + http_status=500; + break; +// json_unpack_ex(jparams, &jerror, 0, "[{s:s,s:s,s:s,s,b}]", "name", &pname, "value", &pvalue, "type", &ptype, "modifiable", &b); + + } + if (jrt <0 || http_status != 200) { + LOG_I(UTIL, "[websrv], couldn't unpack jparams, module %s, command %s: %s\n", modulestruct->module, cmd->cmdname, jerror.text); + websrv_printjson((char *)__FUNCTION__, jparams, websrvparams.dbglvl); + return 500; + } + } + if (cmd->cmdflags & TELNETSRV_CMDFLAG_GETWEBTBLDATA) { webdatadef_t wdata; memset(&wdata, 0, sizeof(wdata)); - if (cmd->cmdflags & TELNETSRV_CMDFLAG_NEEDPARAM) { - if (jparams == NULL) { - LOG_W(UTIL, "No parameters sent by frontend for %s %s\n", modulestruct->module, cmd->cmdname); - } else { - int b; - char *pname, *pvalue, *ptype; - json_error_t jerror; - json_unpack_ex(jparams, &jerror, 0, "{s:s,s:s,s:s,s,b}", "name", &pname, "value", &pvalue, "type", &ptype, "modifiable", &b); - if (pvalue == NULL || pname == NULL || ptype == NULL) { - LOG_I(UTIL, "[websrv], couldn't unpack jparams, module %s, command %s: %s\n", modulestruct->module, cmd->cmdname, jerror.text); - websrv_printjson((char *)__FUNCTION__, jparams, websrvparams.dbglvl); - http_status = 500; - } else { - snprintf(wdata.columns[0].coltitle, sizeof(wdata.columns[0].coltitle) - 1, "%s", pname); - wdata.numcols = 1; - wdata.lines[0].val[0] = pvalue; - wdata.numlines = 1; - } - } + wdata.numlines = 1; + for (int i=0; iwebfunc_getdata(cmd->cmdname, websrvparams.dbglvl, (webdatadef_t *)&wdata, NULL); websrv_gettbldata_response(response, &wdata, modulestruct->module, cmd->cmdname); } else { char *sptr = index(cmd->cmdname, ' '); + char cmdbuff[TELNET_CMD_MAXSIZE*3]; //cmd + 2 parameters + snprintf(cmdbuff,sizeof(cmdbuff)-1, "%s%s%s %s",(sptr == NULL) ? "" : sptr,(sptr == NULL) ? "" : " ",(np>0) ? pvalue[0] : "",(np>1) ? pvalue[1] : ""); if (cmd->qptr != NULL) { websrv_printf_start(response, 16384, true); - telnet_pushcmd(cmd, (sptr == NULL) ? cmd->cmdname : sptr, websrv_async_printf); + telnet_pushcmd(cmd, cmdbuff, websrv_async_printf); } else { websrv_printf_start(response, 16384, false); - cmd->cmdfunc((sptr == NULL) ? cmd->cmdname : sptr, websrvparams.dbglvl, websrv_printf); + cmd->cmdfunc(cmdbuff, websrvparams.dbglvl, websrv_printf); } websrv_printf_end(http_status, websrvparams.dbglvl); } @@ -598,21 +620,35 @@ int websrv_callback_get_softmodemcmd(const struct _u_request *request, struct _u snprintf(confstr, sizeof(confstr), "Confirm %s ?", modulestruct->cmd[j].cmdname); acmd = json_pack("{s:s,s:s}", "name", modulestruct->cmd[j].cmdname, "confirm", confstr); } else if (modulestruct->cmd[j].cmdflags & TELNETSRV_CMDFLAG_NEEDPARAM) { - char *pname = NULL; - char *question = NULL; + char *question[] = {NULL,NULL}; char *helpcp = NULL; + json_t *jQ1=NULL, *jQ2=NULL; + json_t *jQs = json_array(); if (modulestruct->cmd[j].helpstr != NULL) { - char *tokptr; helpcp = strdup(modulestruct->cmd[j].helpstr); - question = strtok_r(helpcp, "<[", &tokptr); - pname = (question != NULL) ? strtok_r(helpcp, ">]", &tokptr) : NULL; + int ns=sscanf(helpcp,"<%m[^<>]> <%m[^<>]>",&question[0],&question[1]); + if (ns == 0) { + LOG_W(UTIL, "[websrv] Cannot find parameters for command %s %s\n", modulestruct->module, modulestruct->cmd[j].cmdname); + continue; + } + jQ1=json_pack("{s:s,s:s,s:s}", "display",question[0], "pname", "P0", "type", "string"); + json_array_append_new(jQs, jQ1); + if (ns >1) { + jQ2=json_pack("{s:s,s:s,s:s}","display", (question[1] == NULL) ? "" : question[1], "pname", "P1" , "type", "string"); + json_array_append_new(jQs, jQ2); + } } - acmd = json_pack( - "{s:s,s:{s:s,s:s,s:s}}", "name", modulestruct->cmd[j].cmdname, "question", "display", (question == NULL) ? "" : question, "pname", (pname == NULL) ? "Px" : pname, "type", "string"); + acmd = json_pack("{s:s,s:o}", "name", modulestruct->cmd[j].cmdname, "question", jQs); free(helpcp); + free(question[0]); + free(question[1]); } else { acmd = json_pack("{s:s}", "name", modulestruct->cmd[j].cmdname); } + if ( acmd == NULL) { + LOG_W(UTIL, "[websrv] interface for command %s %s cannot be built\n", modulestruct->module, modulestruct->cmd[j].cmdname); + continue; + } json_t *jopts = json_array(); if (modulestruct->cmd[j].cmdflags & TELNETSRV_CMDFLAG_AUTOUPDATE) { json_array_append_new(jopts, json_string("update")); @@ -806,7 +842,6 @@ void *websrv_autoinit() websrvparams.instance.max_post_body_size = 1024; // 1: build the first page, when receiving the "oaisoftmodem" url - // ulfius_add_endpoint_by_val(&(websrvparams.instance), "GET", "oaisoftmodem", "variables", 0, &websrv_callback_get_softmodemstatus, NULL); ulfius_add_endpoint_by_val(&(websrvparams.instance), "GET", "oaisoftmodem", "commands", 1, &websrv_callback_get_softmodemmodules, NULL); // 2 default_endpoint declaration, it tries to open the file with the url name as specified in the request.It looks for the file @@ -817,7 +852,7 @@ void *websrv_autoinit() websrv_callback_get_softmodemstatus, websrv_callback_okset_softmodem_cmdvar, websrv_callback_set_softmodemvar}; char *http_methods[3] = {"GET", "OPTIONS", "POST"}; - websrv_add_endpoint(http_methods, 3, "oaisoftmodem", "variables", callback_functions_var, NULL); + websrv_add_endpoint(http_methods, 3, "oaisoftmodem", "info", callback_functions_var, NULL); for (int i = 0; telnetparams->CmdParsers[i].cmd != NULL; i++) { register_module_endpoints(&(telnetparams->CmdParsers[i])); diff --git a/common/utils/websrv/websrv_CMakeLists.txt b/common/utils/websrv/websrv_CMakeLists.txt deleted file mode 100644 index 34b0fb5479..0000000000 --- a/common/utils/websrv/websrv_CMakeLists.txt +++ /dev/null @@ -1,90 +0,0 @@ -if ( "${OPENAIR_CMAKE}" STREQUAL "") - message( FATAL_ERROR "oai Environment variables not set") -endif ( "${OPENAIR_CMAKE}" STREQUAL "") -set(WEBSRVROOT ${OPENAIR_DIR}/common/utils/websrv ) -set (WBACK TRUE) -set (WFRONT TRUE) -# websrv dependencies -unset(ULFIUS) -unset(ULFIUS CACHE) -find_library(ULFIUS NAMES "libulfius.so" NO_CACHE) -if ("${ULFIUS}" STREQUAL "ULFIUS-NOTFOUND") - message( WARNING "ulfius library (https://github.com/babelouest/ulfius) not found, install libulfius-dev (ubuntu) if you need to build websrv back-end") - set (WBACK FALSE) -endif("${ULFIUS}" STREQUAL "ULFIUS-NOTFOUND") - -unset(JSON) -unset(JSON CACHE) -find_library(JSON NAMES "libjansson.so" NO_CACHE ) -if ("${JSON}" STREQUAL "ULFIUS-NOTFOUND") - message( WARNING "libjansson not found, install libjansson-dev for ubuntu, jansson-devel for fedora if you need to build websrv back-end") - set (WBACK FALSE) -endif("${JSON}" STREQUAL "ULFIUS-NOTFOUND") - -unset(NPM) -unset(NPM CACHE) -find_program(NPM NAMES npm NO_CACHE) -if ("${NPM}" STREQUAL "ULFIUS-NOTFOUND") - message( WARNING " npm is not installed, frontend won't be built. Possibly install npm, package is available for ubuntu and fedora") -endif("${NPM}" STREQUAL "ULFIUS-NOTFOUND") - -if ( ${WBACK} ) - message (STATUS "websrv backend can be built") -else ( ${WBACK} ) - message (STATUS "websrv backend build skipped, dependencies not found") -endif ( ${WBACK} ) - -if ( ${WFRONT} ) - message (STATUS "websrv frontend can be built") -else( ${WFRONT} ) - message (STATUS "websrv frontend build skipped, dependencies not found") -endif ( ${WFRONT} ) - - -# build the backend ( the embedded web server) - -set(WEBSRV_SOURCE - ${WEBSRVROOT}/websrv.c ${WEBSRVROOT}/websrv_websockets.c - ${WEBSRVROOT}/websrv_scope.c ${WEBSRVROOT}/websrv_noforms.c - ${WEBSRVROOT}/websrv_scope.c ${WEBSRVROOT}/websrv_utils.c - ${OPENAIR_DIR}/openair1/PHY/TOOLS/nr_phy_scope.c - ) - - - add_library(websrv MODULE ${WEBSRV_SOURCE} ) - target_link_libraries(websrv PRIVATE ulfius jansson) - target_compile_definitions(websrv PUBLIC WEBSRVSCOPE) - -# build the frontend ( loaded from web server by browsers) - -add_custom_target ( - websrvfront_installjsdep - WORKING_DIRECTORY ${WEBSRVROOT}/frontend - COMMAND npm install - DEPENDS ${WEBSRVROOT}/frontend/package-lock.json -) - -add_custom_target ( - websrvfront - WORKING_DIRECTORY ${WEBSRVROOT}/frontend - COMMAND npm run build - #COMMAND npm run builddev - DEPENDS websrvfront_installjsdep -) - - -#install built files, required at exec time -if ( ${WBACK} ) - install(TARGETS websrv DESTINATION bin) -endif ( ${WBACK} ) - -if ( ${WFRONT} ) - if (EXISTS "${OPENAIR_CMAKE}/ran_build/build" AND IS_DIRECTORY "${OPENAIR_CMAKE}/ran_build/build") - add_custom_command(TARGET websrvfront - POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${WEBSRVROOT}/frontend/dist/softmodem-ngx ${OPENAIR_CMAKE}/ran_build/build/websrv - COMMAND ${CMAKE_COMMAND} -E copy_directory ${WEBSRVROOT}/frontend/dist/softmodem-ngx ${OPENAIR_TARGETS}/bin/websrv - COMMAND ${CMAKE_COMMAND} -E copy_directory ${WEBSRVROOT}/helpfiles ${OPENAIR_CMAKE}/ran_build/build/websrv/helpfiles - COMMAND ${CMAKE_COMMAND} -E copy_directory ${WEBSRVROOT}/helpfiles ${OPENAIR_TARGETS}/bin/websrv/helpfiles - COMMENT "Moving frontend files to:\n ${OPENAIR_CMAKE}/ran_build/build/websrv\n ${OPENAIR_TARGETS}/bin/websrv" ) - endif (EXISTS "${OPENAIR_CMAKE}/ran_build/build" AND IS_DIRECTORY "${OPENAIR_CMAKE}/ran_build/build") -endif ( ${WFRONT} ) diff --git a/common/utils/websrv/websrv_noforms.h b/common/utils/websrv/websrv_noforms.h index e250139c0c..c3d3af78d6 100644 --- a/common/utils/websrv/websrv_noforms.h +++ b/common/utils/websrv/websrv_noforms.h @@ -1609,7 +1609,7 @@ __attribute__((unused)) static int fl_vmode; #define fl_get_form_vclass(a) fl_vmode #define fl_get_gc() fl_state[fl_vmode].gc[0] -__attribute__((unused)) static FL_State fl_state[]; +//__attribute__((unused)) static FL_State fl_state[]; __attribute__((unused)) static char *fl_ul_magic_char; diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index acf78e4793..2b6c1dd0bb 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -1,4 +1,4 @@ -add_boolean_option(GENERATE_DOXYGEN False "Generate source code doc using doxygen") +add_boolean_option(GENERATE_DOXYGEN False "Generate source code doc using doxygen" OFF) if(GENERATE_DOXYGEN) find_package(Doxygen REQUIRED) diff --git a/openair1/CMakeLists.txt b/openair1/CMakeLists.txt new file mode 100644 index 0000000000..1ce6debaf1 --- /dev/null +++ b/openair1/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(PHY) diff --git a/openair1/PHY/CMakeLists.txt b/openair1/PHY/CMakeLists.txt new file mode 100644 index 0000000000..0a53c969a7 --- /dev/null +++ b/openair1/PHY/CMakeLists.txt @@ -0,0 +1,6 @@ +add_boolean_option(ENABLE_UESCOPE OFF "Whether to build the lte uescope" OFF) +add_boolean_option(ENABLE_ENBSCOPE OFF "Whether to build the lte enbcope" OFF) +add_boolean_option(ENABLE_NRSCOPE OFF "Whether to build the 5G scope" OFF) +if(ENABLE_UESCOPE OR ENABLE_ENBSCOPE OR ENABLE_NRSCOPE) + add_subdirectory(TOOLS) +endif() diff --git a/openair1/PHY/TOOLS/CMakeLists.txt b/openair1/PHY/TOOLS/CMakeLists.txt new file mode 100644 index 0000000000..0a6026fb25 --- /dev/null +++ b/openair1/PHY/TOOLS/CMakeLists.txt @@ -0,0 +1,50 @@ +#/* +# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more +# * contributor license agreements. See the NOTICE file distributed with +# * this work for additional information regarding copyright ownership. +# * The OpenAirInterface Software Alliance licenses this file to You under +# * the OAI Public License, Version 1.1 (the "License"); you may not use this file +# * except in compliance with the License. +# * You may obtain a copy of the License at +# * +# * http://www.openairinterface.org/?page_id=698 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# *------------------------------------------------------------------------------- +# * For more information about the OpenAirInterface (OAI) Software Alliance: +# * contact@openairinterface.org +# */ +#! \file openair1/PHY/TOOLS/CMakelists.txt +#* \brief: build rules and checks for softscope shared libraries +#* \author Francois TABURET +#* \date 2023 +#* \version 1.0 +#* \company NOKIA BellLabs France +#* \email: francois.taburet@nokia-bell-labs.com +#* \note +#* \warning +#*/ + +include_directories ("/usr/include/X11") +add_library(xforms_common OBJECT + lte_phy_scope.c + ../../../executables/stats.c) +target_link_libraries(xforms_common PRIVATE asn1_nr_rrc PRIVATE asn1_lte_rrc) + +add_library(enbscope MODULE lte_enb_scope.c $) +target_link_libraries(enbscope PUBLIC forms PRIVATE asn1_nr_rrc PRIVATE asn1_lte_rrc) + +add_library(uescope MODULE lte_ue_scope.c $) +target_link_libraries(uescope PUBLIC forms PRIVATE asn1_nr_rrc PRIVATE asn1_lte_rrc) + +add_library(nrscope MODULE nr_phy_scope.c) +target_link_libraries(nrscope PUBLIC forms PRIVATE asn1_nr_rrc PRIVATE asn1_lte_rrc) + +# all libraries should be written to root build dir (default creates the same hierarchie under build as existing for sources) +set_target_properties(enbscope uescope nrscope + PROPERTIES LIBRARY_OUTPUT_DIRECTORY ../../.. +) diff --git a/openair1/PHY/TOOLS/nr_phy_scope.c b/openair1/PHY/TOOLS/nr_phy_scope.c index 23f6f76181..7fd73a1b64 100644 --- a/openair1/PHY/TOOLS/nr_phy_scope.c +++ b/openair1/PHY/TOOLS/nr_phy_scope.c @@ -531,7 +531,7 @@ static void puschLLR (OAIgraph_t *graph, scopeData_t *p, int nb_UEs) { p->gNB->pusch_vars[ue] && p->gNB->pusch_vars[ue]->llr ) { int16_t *pusch_llr = (int16_t *)p->gNB->pusch_vars[ue]->llr; - float *llr, *bit; + float *llr=NULL, *bit=NULL; int nx = coded_bits_per_codeword; #ifdef WEBSRVSCOPE nx = websrv_cpllrbuff_tomsg(graph, pusch_llr, coded_bits_per_codeword, ue, 0, 0); @@ -562,7 +562,7 @@ static void puschIQ (OAIgraph_t *graph, scopeData_t *p, int nb_UEs) { p->gNB->pusch_vars[ue]->rxdataF_comp && p->gNB->pusch_vars[ue]->rxdataF_comp[0] ) { scopeSample_t *pusch_comp = (scopeSample_t *)p->gNB->pusch_vars[ue]->rxdataF_comp[0]; - float *I, *Q; + float *I=NULL, *Q=NULL; #ifdef WEBSRVSCOPE newsz = websrv_cpiqbuff_tomsg(graph, pusch_comp, sz, 0, 0); #else @@ -846,7 +846,7 @@ static void uePbchLLR (scopeGraphData_t **data, OAIgraph_t *graph, PHY_VARS_NR_ //const int antennas=data[pbchLlr]->colSz; // We take the first antenna only for now int16_t *llrs = (int16_t *) (data[pbchLlr]+1); - float *llr_pbch, *bit_pbch; + float *llr_pbch=NULL, *bit_pbch=NULL; int nx = sz; #ifdef WEBSRVSCOPE nx = websrv_cpllrbuff_tomsg(graph, llrs, sz, UE_id, 0, 0); @@ -868,7 +868,7 @@ static void uePbchIQ (scopeGraphData_t **data, OAIgraph_t *graph, PHY_VARS_NR_U scopeSample_t *pbch_comp = (scopeSample_t *) (data[pbchRxdataF_comp]+1); const int sz=data[pbchRxdataF_comp]->lineSz; int newsz = sz; - float *I, *Q; + float *I=NULL, *Q=NULL; #ifdef WEBSRVSCOPE newsz = websrv_cpiqbuff_tomsg(graph, pbch_comp, sz, 0, 0); #else @@ -891,7 +891,7 @@ static void uePcchLLR (scopeGraphData_t **data, OAIgraph_t *graph, PHY_VARS_NR_ //int num_re = 4*273*12; // 12*frame_parms->N_RB_DL*num_pdcch_symbols //int Qm = 2; const int sz=data[pdcchLlr]->lineSz; - float *llr, *bit; + float *llr=NULL, *bit=NULL; int nx = sz; int16_t *pdcch_llr = (int16_t *)(data[pdcchLlr]+1); @@ -915,7 +915,7 @@ static void uePcchIQ (scopeGraphData_t **data, OAIgraph_t *graph, PHY_VARS_NR_U int newsz = sz; //const int antennas=data[pdcchRxdataF_comp]->colSz; // We take the first antenna only for now - float *I, *Q; + float *I=NULL, *Q=NULL; scopeSample_t *pdcch_comp = (scopeSample_t *) (data[pdcchRxdataF_comp]+1); #ifdef WEBSRVSCOPE newsz = websrv_cpiqbuff_tomsg(graph, pdcch_comp, sz, 0, 0); @@ -935,7 +935,7 @@ static void uePdschLLR (scopeGraphData_t **data, OAIgraph_t *graph, PHY_VARS_NR return; const int sz = data[pdschLlr]->lineSz; - float *llr, *bit; + float *llr=NULL, *bit=NULL; int nx = sz; int16_t *pdsch_llr = (int16_t *)(data[pdschLlr]+1); @@ -959,7 +959,7 @@ static void uePdschIQ (scopeGraphData_t **data, OAIgraph_t *graph, PHY_VARS_NR_ const int sz=data[pdschRxdataF_comp]->lineSz; int nz = sz; - float *I, *Q; + float *I=NULL, *Q=NULL; scopeSample_t *pdsch_comp = (scopeSample_t *) (data[pdschRxdataF_comp]+1); #ifdef WEBSRVSCOPE nz += websrv_cpiqbuff_tomsg(graph, pdsch_comp, sz, 0, 0); diff --git a/openair1/SIMULATION/TOOLS/random_channel.c b/openair1/SIMULATION/TOOLS/random_channel.c index 3aad57f015..4fe1d8a84b 100644 --- a/openair1/SIMULATION/TOOLS/random_channel.c +++ b/openair1/SIMULATION/TOOLS/random_channel.c @@ -54,7 +54,7 @@ int get_modchannel_index(char *buf, int debug, void *vdata, telnet_printfunc_t p int get_channel_params(char *buf, int debug, void *tdata, telnet_printfunc_t prnt); int get_currentchannels_type(char *buf, int debug, void *vdata, telnet_printfunc_t prnt); -#define HELP_WEBIF_MODIFCHAN_STRING "Current channel index? " +#define HELP_WEBIF_MODIFCHAN_STRING "" static telnetshell_cmddef_t channelmod_cmdarray[] = { {"help", "", channelmod_print_help, {NULL}, 0, NULL}, {"show", "", channelmod_show_cmd, {NULL}, TELNETSRV_CMDFLAG_TELNETONLY, NULL}, diff --git a/radio/rfsimulator/simulator.c b/radio/rfsimulator/simulator.c index 96483d6f56..1dac4e059a 100644 --- a/radio/rfsimulator/simulator.c +++ b/radio/rfsimulator/simulator.c @@ -96,7 +96,7 @@ static int rfsimu_vtime_cmd(char *buff, int debug, telnet_printfunc_t prnt, void static telnetshell_cmddef_t rfsimu_cmdarray[] = { {"show models", "", (cmdfunc_t)rfsimu_setchanmod_cmd, {(webfunc_t)getset_currentchannels_type}, TELNETSRV_CMDFLAG_WEBSRVONLY | TELNETSRV_CMDFLAG_GETWEBTBLDATA, NULL}, {"setmodel", " ", (cmdfunc_t)rfsimu_setchanmod_cmd, {NULL}, TELNETSRV_CMDFLAG_PUSHINTPOOLQ | TELNETSRV_CMDFLAG_TELNETONLY, NULL}, - {"setdistance", " ", (cmdfunc_t)rfsimu_setdistance_cmd, {NULL}, TELNETSRV_CMDFLAG_PUSHINTPOOLQ}, + {"setdistance", " ", (cmdfunc_t)rfsimu_setdistance_cmd, {NULL}, TELNETSRV_CMDFLAG_PUSHINTPOOLQ | TELNETSRV_CMDFLAG_NEEDPARAM }, {"getdistance", "", (cmdfunc_t)rfsimu_getdistance_cmd, {NULL}, TELNETSRV_CMDFLAG_PUSHINTPOOLQ}, {"vtime", "", (cmdfunc_t)rfsimu_vtime_cmd, {NULL}, TELNETSRV_CMDFLAG_PUSHINTPOOLQ | TELNETSRV_CMDFLAG_AUTOUPDATE}, {"", "", NULL},