,
+ tempName: string,
+ params: any = {},
+ isNotify: boolean = true,
+ fileType: string = ".xlsx"
+) => {
+ if (isNotify) {
+ ElNotification({
+ title: "温馨提示",
+ message: "如果数据庞大会导致下载缓慢哦,请您耐心等待!",
+ type: "info",
+ duration: 3000
+ });
+ }
+ try {
+ const res = await api(params);
+ // 这个地方的 type,经测试不传也没事,因为会自动识别文件类型
+ // const blob = new Blob([res], {
+ // type: "application/vnd.ms-excel;charset=UTF-8"
+ // });
+ const blob = new Blob([res]);
+ // 兼容edge不支持createObjectURL方法
+ if ("msSaveOrOpenBlob" in navigator) return window.navigator.msSaveOrOpenBlob(blob, tempName + fileType);
+ const blobUrl = window.URL.createObjectURL(blob);
+ const exportFile = document.createElement("a");
+ exportFile.style.display = "none";
+ exportFile.download = `${tempName}${fileType}`;
+ exportFile.href = blobUrl;
+ document.body.appendChild(exportFile);
+ exportFile.click();
+ // 去除下载对url的影响
+ document.body.removeChild(exportFile);
+ window.URL.revokeObjectURL(blobUrl);
+ } catch (error) {
+ console.log(error);
+ }
+};
diff --git a/src/hooks/useEcharts.ts b/src/hooks/useEcharts.ts
new file mode 100644
index 0000000..67a9d4c
--- /dev/null
+++ b/src/hooks/useEcharts.ts
@@ -0,0 +1,31 @@
+import { onActivated, onDeactivated, onBeforeUnmount } from "vue";
+import * as echarts from "echarts";
+
+/**
+ * @description 使用Echarts(只是为了添加图表响应式)
+ * @param {Element} myChart Echarts实例(必传)
+ * @param {Object} options 绘制Echarts的参数(必传)
+ * @return void
+ * */
+export const useEcharts = (myChart: echarts.ECharts, options: echarts.EChartsCoreOption) => {
+ if (options && typeof options === "object") {
+ myChart.setOption(options);
+ }
+ const echartsResize = () => {
+ myChart && myChart.resize();
+ };
+
+ window.addEventListener("resize", echartsResize);
+
+ onActivated(() => {
+ window.addEventListener("resize", echartsResize);
+ });
+
+ onDeactivated(() => {
+ window.removeEventListener("resize", echartsResize);
+ });
+
+ onBeforeUnmount(() => {
+ window.removeEventListener("resize", echartsResize);
+ });
+};
diff --git a/src/hooks/useHandleData.ts b/src/hooks/useHandleData.ts
new file mode 100644
index 0000000..aa47919
--- /dev/null
+++ b/src/hooks/useHandleData.ts
@@ -0,0 +1,34 @@
+import { ElMessageBox, ElMessage } from "element-plus";
+import { HandleData } from "./interface";
+
+/**
+ * @description 操作单条数据信息(二次确认【删除、禁用、启用、重置密码】)
+ * @param {Function} api 操作数据接口的api方法(必传)
+ * @param {Object} params 携带的操作数据参数 {id,params}(必传)
+ * @param {String} message 提示信息(必传)
+ * @param {String} confirmType icon类型(不必传,默认为 warning)
+ * @return Promise
+ */
+export const useHandleData = (
+ api: (params: P) => Promise,
+ params: Parameters[0],
+ message: string,
+ confirmType: HandleData.MessageType = "warning"
+) => {
+ return new Promise((resolve, reject) => {
+ ElMessageBox.confirm(`是否${message}?`, "温馨提示", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: confirmType,
+ draggable: true
+ }).then(async () => {
+ const res = await api(params);
+ if (!res) return reject(false);
+ ElMessage({
+ type: "success",
+ message: `${message}成功!`
+ });
+ resolve(true);
+ });
+ });
+};
diff --git a/src/hooks/useOnline.ts b/src/hooks/useOnline.ts
new file mode 100644
index 0000000..ab6af36
--- /dev/null
+++ b/src/hooks/useOnline.ts
@@ -0,0 +1,27 @@
+import { ref, onMounted, onUnmounted } from "vue";
+
+/**
+ * @description 网络是否可用
+ * */
+export const useOnline = () => {
+ const online = ref(true);
+ const showStatus = (val: any) => {
+ online.value = typeof val == "boolean" ? val : val.target.online;
+ };
+ // 在页面加载后,设置正确的网络状态
+ navigator.onLine ? showStatus(true) : showStatus(false);
+
+ onMounted(() => {
+ // 开始监听网络状态的变化
+ window.addEventListener("online", showStatus);
+ window.addEventListener("offline", showStatus);
+ });
+
+ onUnmounted(() => {
+ // 移除监听网络状态的变化
+ window.removeEventListener("online", showStatus);
+ window.removeEventListener("offline", showStatus);
+ });
+
+ return { online };
+};
diff --git a/src/hooks/useSelection.ts b/src/hooks/useSelection.ts
new file mode 100644
index 0000000..bf9bb37
--- /dev/null
+++ b/src/hooks/useSelection.ts
@@ -0,0 +1,44 @@
+import { ref, computed } from "vue";
+
+/**
+ * @description 表格多选数据操作
+ * @param {String} selectId 当表格可以多选时,所指定的 id
+ * */
+export const useSelection = (selectId: string = "id") => {
+ // 是否选中数据
+ const isSelected = ref(false);
+ // 选中的数据列表
+ const selectedList = ref([]);
+
+ // 当前选中的所有ids(数组),可根据项目自行配置id字段
+ const selectedListIds = computed((): string[] => {
+ let ids: string[] = [];
+ selectedList.value.forEach(item => {
+ ids.push(item[selectId]);
+ });
+ return ids;
+ });
+
+ // 获取行数据的 Key,用来优化 Table 的渲染;在使用跨页多选时,该属性是必填的
+ const getRowKeys = (row: any) => {
+ return row[selectId];
+ };
+
+ /**
+ * @description 多选操作
+ * @param {Array} rowArr 当前选择的所有数据
+ * @return void
+ */
+ const selectionChange = (rowArr: any) => {
+ rowArr.length === 0 ? (isSelected.value = false) : (isSelected.value = true);
+ selectedList.value = rowArr;
+ };
+
+ return {
+ isSelected,
+ selectedList,
+ selectedListIds,
+ selectionChange,
+ getRowKeys
+ };
+};
diff --git a/src/hooks/useTable.ts b/src/hooks/useTable.ts
new file mode 100644
index 0000000..2cbcce5
--- /dev/null
+++ b/src/hooks/useTable.ts
@@ -0,0 +1,157 @@
+import { Table } from "./interface";
+import { reactive, computed, onMounted, toRefs } from "vue";
+
+/**
+ * @description table 页面操作方法封装
+ * @param {Function} api 获取表格数据 api 方法(必传)
+ * @param {Object} initParam 获取数据初始化参数(非必传,默认为{})
+ * @param {Boolean} isPageable 是否有分页(非必传,默认为true)
+ * @param {Function} dataCallBack 对后台返回的数据进行处理的方法(非必传)
+ * */
+export const useTable = (
+ api: (params: any) => Promise,
+ initParam: object = {},
+ isPageable: boolean = true,
+ dataCallBack?: (data: any) => any
+) => {
+ const state = reactive({
+ // 表格数据
+ tableData: [],
+ // 分页数据
+ pageable: {
+ // 当前页数
+ pageNum: 1,
+ // 每页显示条数
+ pageSize: 10,
+ // 总条数
+ total: 0
+ },
+ // 查询参数(只包括查询)
+ searchParam: {},
+ // 初始化默认的查询参数
+ searchInitParam: {},
+ // 总参数(包含分页和查询参数)
+ totalParam: {}
+ });
+
+ /**
+ * @description 分页查询参数(只包括分页和表格字段排序,其他排序方式可自行配置)
+ * */
+ const pageParam = computed({
+ get: () => {
+ return {
+ pageNum: state.pageable.pageNum,
+ pageSize: state.pageable.pageSize
+ };
+ },
+ set: (newVal: any) => {
+ console.log("我是分页更新之后的值", newVal);
+ }
+ });
+
+ // 初始化的时候需要做的事情就是 设置表单查询默认值 && 获取表格数据(reset函数的作用刚好是这两个功能)
+ onMounted(() => {
+ reset();
+ });
+
+ /**
+ * @description 获取表格数据
+ * @return void
+ * */
+ const getTableList = async () => {
+ try {
+ // 先把初始化参数和分页参数放到总参数里面
+ Object.assign(state.totalParam, initParam, isPageable ? pageParam.value : {});
+ let { data } = await api(state.totalParam);
+ dataCallBack && (data = dataCallBack(data));
+ state.tableData = isPageable ? data.datalist : data;
+ // 解构后台返回的分页数据 (如果有分页更新分页信息)
+ const { pageNum, pageSize, total } = data;
+ isPageable && updatePageable({ pageNum, pageSize, total });
+ } catch (error) {
+ console.log(error);
+ }
+ };
+
+ /**
+ * @description 更新查询参数
+ * @return void
+ * */
+ const updatedTotalParam = () => {
+ state.totalParam = {};
+ // 处理查询参数,可以给查询参数加自定义前缀操作
+ let nowSearchParam: { [key: string]: any } = {};
+ // 防止手动清空输入框携带参数(这里可以自定义查询参数前缀)
+ for (let key in state.searchParam) {
+ // * 某些情况下参数为 false/0 也应该携带参数
+ if (state.searchParam[key] || state.searchParam[key] === false || state.searchParam[key] === 0) {
+ nowSearchParam[key] = state.searchParam[key];
+ }
+ }
+ Object.assign(state.totalParam, nowSearchParam, isPageable ? pageParam.value : {});
+ };
+
+ /**
+ * @description 更新分页信息
+ * @param {Object} resPageable 后台返回的分页数据
+ * @return void
+ * */
+ const updatePageable = (resPageable: Table.Pageable) => {
+ Object.assign(state.pageable, resPageable);
+ };
+
+ /**
+ * @description 表格数据查询
+ * @return void
+ * */
+ const search = () => {
+ state.pageable.pageNum = 1;
+ updatedTotalParam();
+ getTableList();
+ };
+
+ /**
+ * @description 表格数据重置
+ * @return void
+ * */
+ const reset = () => {
+ state.pageable.pageNum = 1;
+ state.searchParam = {};
+ // 重置搜索表单的时,如果有默认搜索参数,则重置默认的搜索参数
+ Object.keys(state.searchInitParam).forEach(key => {
+ state.searchParam[key] = state.searchInitParam[key];
+ });
+ updatedTotalParam();
+ getTableList();
+ };
+
+ /**
+ * @description 每页条数改变
+ * @param {Number} val 当前条数
+ * @return void
+ * */
+ const handleSizeChange = (val: number) => {
+ state.pageable.pageNum = 1;
+ state.pageable.pageSize = val;
+ getTableList();
+ };
+
+ /**
+ * @description 当前页改变
+ * @param {Number} val 当前页
+ * @return void
+ * */
+ const handleCurrentChange = (val: number) => {
+ state.pageable.pageNum = val;
+ getTableList();
+ };
+ // toRefs 设置响应式
+ return {
+ ...toRefs(state),
+ getTableList,
+ search,
+ reset,
+ handleSizeChange,
+ handleCurrentChange
+ };
+};
diff --git a/src/hooks/useTheme.ts b/src/hooks/useTheme.ts
new file mode 100644
index 0000000..aae69ca
--- /dev/null
+++ b/src/hooks/useTheme.ts
@@ -0,0 +1,70 @@
+import { computed, onBeforeMount } from "vue";
+import { getLightColor, getDarkColor } from "@/utils/theme/tool";
+import { GlobalStore } from "@/stores";
+import { DEFAULT_PRIMARY } from "@/config/config";
+import { ElMessage } from "element-plus";
+
+/**
+ * @description 切换主题
+ * */
+export const useTheme = () => {
+ const globalStore = GlobalStore();
+ const themeConfig = computed(() => globalStore.themeConfig);
+
+ // 切换暗黑模式
+ const switchDark = () => {
+ const body = document.documentElement as HTMLElement;
+ if (themeConfig.value.isDark) body.setAttribute("class", "dark");
+ else body.setAttribute("class", "");
+ changePrimary(themeConfig.value.primary);
+ };
+
+ // 修改主题颜色
+ const changePrimary = (val: string) => {
+ if (!val) {
+ val = DEFAULT_PRIMARY;
+ ElMessage({ type: "success", message: `主题颜色已重置为 ${DEFAULT_PRIMARY}` });
+ }
+ globalStore.setThemeConfig({ ...themeConfig.value, primary: val });
+ // 为了兼容暗黑模式下主题颜色也正常,以下方法计算主题颜色 由深到浅 的具体颜色
+ document.documentElement.style.setProperty("--el-color-primary", themeConfig.value.primary);
+ document.documentElement.style.setProperty(
+ "--el-color-primary-dark-2",
+ themeConfig.value.isDark
+ ? `${getLightColor(themeConfig.value.primary, 0.2)}`
+ : `${getDarkColor(themeConfig.value.primary, 0.3)}`
+ );
+ // 颜色加深或变浅
+ for (let i = 1; i <= 9; i++) {
+ document.documentElement.style.setProperty(
+ `--el-color-primary-light-${i}`,
+ themeConfig.value.isDark
+ ? `${getDarkColor(themeConfig.value.primary, i / 10)}`
+ : `${getLightColor(themeConfig.value.primary, i / 10)}`
+ );
+ }
+ };
+
+ // 灰色和弱色切换
+ const changeGreyOrWeak = (value: boolean, type: string) => {
+ const body = document.body as HTMLElement;
+ if (!value) return body.setAttribute("style", "");
+ if (type === "grey") body.setAttribute("style", "filter: grayscale(1)");
+ if (type === "weak") body.setAttribute("style", "filter: invert(80%)");
+ let propName = type == "grey" ? "isWeak" : "isGrey";
+ globalStore.setThemeConfig({ ...themeConfig.value, [propName]: false });
+ };
+
+ onBeforeMount(() => {
+ switchDark();
+ changePrimary(themeConfig.value.primary);
+ if (themeConfig.value.isGrey) changeGreyOrWeak(true, "grey");
+ if (themeConfig.value.isWeak) changeGreyOrWeak(true, "weak");
+ });
+
+ return {
+ switchDark,
+ changePrimary,
+ changeGreyOrWeak
+ };
+};
diff --git a/src/hooks/useTime.ts b/src/hooks/useTime.ts
new file mode 100644
index 0000000..747c5a1
--- /dev/null
+++ b/src/hooks/useTime.ts
@@ -0,0 +1,38 @@
+import { ref } from "vue";
+
+/**
+ * @description 获取本地时间
+ */
+export const useTime = () => {
+ const year = ref(0); // 年份
+ const month = ref(0); // 月份
+ const week = ref(""); // 星期几
+ const day = ref(0); // 天数
+ const hour = ref(0); // 小时
+ const minute = ref(0); // 分钟
+ const second = ref(0); // 秒
+ const nowTime = ref(""); // 当前时间
+
+ // 更新时间
+ const updateTime = () => {
+ const date = new Date();
+ year.value = date.getFullYear();
+ month.value = date.getMonth() + 1;
+ week.value = "日一二三四五六".charAt(date.getDay());
+ day.value = date.getDate();
+ hour.value =
+ (date.getHours() + "")?.padStart(2, "0") ||
+ new Intl.NumberFormat(undefined, { minimumIntegerDigits: 2 }).format(date.getHours());
+ minute.value =
+ (date.getMinutes() + "")?.padStart(2, "0") ||
+ new Intl.NumberFormat(undefined, { minimumIntegerDigits: 2 }).format(date.getMinutes());
+ second.value =
+ (date.getSeconds() + "")?.padStart(2, "0") ||
+ new Intl.NumberFormat(undefined, { minimumIntegerDigits: 2 }).format(date.getSeconds());
+ nowTime.value = `${year.value}年${month.value}月${day.value} ${hour.value}:${minute.value}:${second.value}`;
+ };
+
+ updateTime();
+
+ return { year, month, day, hour, minute, second, week, nowTime };
+};
diff --git a/src/languages/index.ts b/src/languages/index.ts
new file mode 100644
index 0000000..51b2375
--- /dev/null
+++ b/src/languages/index.ts
@@ -0,0 +1,15 @@
+import { createI18n } from "vue-i18n";
+import zh from "./modules/zh";
+import en from "./modules/en";
+
+const i18n = createI18n({
+ legacy: false, // 如果要支持 compositionAPI,此项必须设置为 false
+ locale: "zh", // 设置语言类型
+ globalInjection: true, // 全局注册$t方法
+ messages: {
+ zh,
+ en
+ }
+});
+
+export default i18n;
diff --git a/src/languages/modules/en.ts b/src/languages/modules/en.ts
new file mode 100644
index 0000000..0c68e01
--- /dev/null
+++ b/src/languages/modules/en.ts
@@ -0,0 +1,28 @@
+export default {
+ home: {
+ welcome: "Welcome"
+ },
+ tabs: {
+ more: "More",
+ refresh: "Refresh",
+ maximize: "Maximize",
+ closeCurrent: "Close current",
+ closeOther: "Close other",
+ closeAll: "Close All"
+ },
+ header: {
+ componentSize: "Component size",
+ language: "Language",
+ theme: "theme",
+ layoutConfig: "Layout config",
+ primary: "primary",
+ darkMode: "Dark Mode",
+ greyMode: "Grey mode",
+ weakMode: "Weak mode",
+ fullScreen: "Full Screen",
+ exitFullScreen: "Exit Full Screen",
+ personalData: "Personal Data",
+ changePassword: "Change Password",
+ logout: "Logout"
+ }
+};
diff --git a/src/languages/modules/zh.ts b/src/languages/modules/zh.ts
new file mode 100644
index 0000000..e551276
--- /dev/null
+++ b/src/languages/modules/zh.ts
@@ -0,0 +1,28 @@
+export default {
+ home: {
+ welcome: "欢迎使用"
+ },
+ tabs: {
+ more: "更多",
+ refresh: "刷新",
+ maximize: "最大化",
+ closeCurrent: "关闭当前",
+ closeOther: "关闭其它",
+ closeAll: "关闭所有"
+ },
+ header: {
+ componentSize: "组件大小",
+ language: "国际化",
+ theme: "全局主题",
+ layoutConfig: "布局设置",
+ primary: "primary",
+ darkMode: "暗黑模式",
+ greyMode: "灰色模式",
+ weakMode: "色弱模式",
+ fullScreen: "全屏",
+ exitFullScreen: "退出全屏",
+ personalData: "个人信息",
+ changePassword: "修改密码",
+ logout: "退出登录"
+ }
+};
diff --git a/src/layouts/LayoutClassic/index.scss b/src/layouts/LayoutClassic/index.scss
new file mode 100644
index 0000000..5278534
--- /dev/null
+++ b/src/layouts/LayoutClassic/index.scss
@@ -0,0 +1,72 @@
+.el-container {
+ width: 100%;
+ height: 100%;
+ .el-header {
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ height: 55px;
+ padding: 0 15px 0 0;
+ background-color: #191a20;
+ border-bottom: 1px solid #f1f1f1;
+ .header-lf {
+ display: flex;
+ align-items: center;
+ overflow: hidden;
+ white-space: nowrap;
+ .logo {
+ flex-shrink: 0;
+ width: 210px;
+ margin-right: 16px;
+ span {
+ font-size: 21.5px;
+ font-weight: bold;
+ color: #dadada;
+ white-space: nowrap;
+ }
+ img {
+ width: 28px;
+ object-fit: contain;
+ margin-right: 6px;
+ }
+ }
+ }
+ :deep(.tool-bar-lf) {
+ color: #ffffff;
+ .el-breadcrumb__inner.is-link {
+ color: #e5eaf3;
+ &:hover {
+ color: var(--el-color-primary);
+ }
+ }
+ .el-breadcrumb__item:last-child .el-breadcrumb__inner,
+ .el-breadcrumb__item:last-child .el-breadcrumb__inner:hover {
+ color: #cfd3dc;
+ }
+ }
+ :deep(.tool-bar-ri) {
+ .toolBar-icon,
+ .username {
+ color: #e5eaf3;
+ }
+ }
+ }
+ .el-aside {
+ width: auto;
+ overflow: inherit;
+ background-color: #ffffff;
+ border-right: 1px solid var(--el-border-color);
+ transition: all 0.3s ease;
+ .menu {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ transition: all 0.3s ease;
+ .el-menu {
+ overflow-x: hidden;
+ border-right: none;
+ }
+ }
+ }
+}
diff --git a/src/layouts/LayoutClassic/index.vue b/src/layouts/LayoutClassic/index.vue
new file mode 100644
index 0000000..aa621c2
--- /dev/null
+++ b/src/layouts/LayoutClassic/index.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/LayoutColumns/index.scss b/src/layouts/LayoutColumns/index.scss
new file mode 100644
index 0000000..a71283f
--- /dev/null
+++ b/src/layouts/LayoutColumns/index.scss
@@ -0,0 +1,105 @@
+.el-container {
+ width: 100%;
+ height: 100%;
+ .aside-split {
+ display: flex;
+ flex-direction: column;
+ flex-shrink: 0;
+ width: 70px;
+ height: 100%;
+ background-color: #191a20;
+ border-right: 1px solid #ffffff;
+ .logo {
+ box-sizing: border-box;
+ height: 55px;
+ border-bottom: 1px solid #282a35;
+ img {
+ width: 32px;
+ object-fit: contain;
+ }
+ }
+ .el-scrollbar {
+ height: calc(100% - 55px);
+ .split-list {
+ flex: 1;
+ .split-item {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ height: 70px;
+ cursor: pointer;
+ transition: all 0.3s ease;
+ &:hover {
+ background-color: #292b35;
+ }
+ .el-icon {
+ font-size: 21px;
+ }
+ .title {
+ margin-top: 6px;
+ font-size: 12px;
+ transform: scale(0.96);
+ }
+ .el-icon,
+ .title {
+ color: #e5eaf3;
+ }
+ }
+ .split-active {
+ background-color: $primary-color !important;
+ .el-icon,
+ .title {
+ color: #ffffff;
+ }
+ }
+ }
+ }
+ }
+ .el-aside {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ overflow: hidden;
+ background-color: #ffffff;
+ border-right: 1px solid #f0eded;
+ transition: all 0.3s ease;
+ .el-scrollbar {
+ height: calc(100% - 55px);
+ .el-menu {
+ overflow-x: hidden;
+ border-right: none;
+ }
+ }
+ .logo {
+ box-sizing: border-box;
+ height: 55px;
+ border-bottom: 1px solid #f0eded;
+ span {
+ font-size: 24px;
+ font-weight: bold;
+ color: var(--el-menu-text-color);
+ white-space: nowrap;
+ }
+ }
+ }
+ .not-aside {
+ width: 0 !important;
+ }
+ .el-header {
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ height: 55px;
+ padding: 0 15px;
+ background-color: #ffffff;
+ border-bottom: 1px solid #f1f1f1;
+ :deep(.tool-bar-ri) {
+ .toolBar-icon,
+ .username {
+ color: var(--el-text-color-primary);
+ }
+ }
+ }
+}
diff --git a/src/layouts/LayoutColumns/index.vue b/src/layouts/LayoutColumns/index.vue
new file mode 100644
index 0000000..d30bc28
--- /dev/null
+++ b/src/layouts/LayoutColumns/index.vue
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.meta.title }}
+
+
+
+
+
+
+ {{ isCollapse ? "G" : "susu system" }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/LayoutTransverse/index.scss b/src/layouts/LayoutTransverse/index.scss
new file mode 100644
index 0000000..04bb0ea
--- /dev/null
+++ b/src/layouts/LayoutTransverse/index.scss
@@ -0,0 +1,52 @@
+.el-container {
+ width: 100%;
+ height: 100%;
+ .el-header {
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ height: 55px;
+ padding: 0 15px 0 0;
+ background-color: #191a20;
+ border-bottom: 1px solid #f1f1f1;
+ .logo {
+ width: 210px;
+ margin-right: 30px;
+ span {
+ font-size: 21.5px;
+ font-weight: bold;
+ color: #dadada;
+ white-space: nowrap;
+ }
+ img {
+ width: 28px;
+ object-fit: contain;
+ margin-right: 6px;
+ }
+ }
+ :deep(.el-menu) {
+ flex: 1;
+ overflow: hidden;
+ border-bottom: none;
+ .is-active {
+ background-color: var(--el-color-primary) !important;
+ border-bottom-color: var(--el-color-primary) !important;
+ .el-sub-menu__title {
+ color: #ffffff !important;
+ background-color: var(--el-color-primary) !important;
+ border-bottom-color: var(--el-color-primary) !important;
+ }
+ &:hover {
+ color: #ffffff !important;
+ }
+ }
+ }
+ :deep(.tool-bar-ri) {
+ .toolBar-icon,
+ .username {
+ color: #e5eaf3;
+ }
+ }
+ }
+}
diff --git a/src/layouts/LayoutTransverse/index.vue b/src/layouts/LayoutTransverse/index.vue
new file mode 100644
index 0000000..92acd0d
--- /dev/null
+++ b/src/layouts/LayoutTransverse/index.vue
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
susu system
+
+
+
+
+
+
+
+
+
+ {{ subItem.meta.title }}
+
+
+
+
+
+
+
+
+ {{ subItem.meta.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/LayoutVertical/index.scss b/src/layouts/LayoutVertical/index.scss
new file mode 100644
index 0000000..b69d7a5
--- /dev/null
+++ b/src/layouts/LayoutVertical/index.scss
@@ -0,0 +1,55 @@
+.el-container {
+ width: 100%;
+ height: 100%;
+ .el-aside {
+ width: auto;
+ overflow: inherit;
+ background-color: #191a20;
+ border-right: 1px solid #191a20;
+ .menu {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ transition: all 0.3s ease;
+ .el-scrollbar {
+ height: calc(100% - 55px);
+ .el-menu {
+ overflow-x: hidden;
+ border-right: none;
+ }
+ }
+ .logo {
+ box-sizing: border-box;
+ height: 55px;
+ border-bottom: 1px solid #282a35;
+ span {
+ font-size: 21.5px;
+ font-weight: bold;
+ color: #dadada;
+ white-space: nowrap;
+ }
+ img {
+ width: 28px;
+ object-fit: contain;
+ margin-right: 6px;
+ }
+ }
+ }
+ }
+ .el-header {
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ height: 55px;
+ padding: 0 15px;
+ background-color: #ffffff;
+ border-bottom: 1px solid #f1f1f1;
+ :deep(.tool-bar-ri) {
+ .toolBar-icon,
+ .username {
+ color: var(--el-text-color-primary);
+ }
+ }
+ }
+}
diff --git a/src/layouts/LayoutVertical/index.vue b/src/layouts/LayoutVertical/index.vue
new file mode 100644
index 0000000..f43aab5
--- /dev/null
+++ b/src/layouts/LayoutVertical/index.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/Footer/index.scss b/src/layouts/components/Footer/index.scss
new file mode 100644
index 0000000..480a42b
--- /dev/null
+++ b/src/layouts/components/Footer/index.scss
@@ -0,0 +1,11 @@
+.footer {
+ height: 30px;
+ background: #ffffff;
+ border-top: 1px solid #e4e7ed;
+ a {
+ font-size: 14px;
+ color: #858585;
+ text-decoration: none;
+ letter-spacing: 0.5px;
+ }
+}
diff --git a/src/layouts/components/Footer/index.vue b/src/layouts/components/Footer/index.vue
new file mode 100644
index 0000000..0959df2
--- /dev/null
+++ b/src/layouts/components/Footer/index.vue
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/src/layouts/components/Header/ToolBarLeft.vue b/src/layouts/components/Header/ToolBarLeft.vue
new file mode 100644
index 0000000..35b4183
--- /dev/null
+++ b/src/layouts/components/Header/ToolBarLeft.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/Header/ToolBarRight.vue b/src/layouts/components/Header/ToolBarRight.vue
new file mode 100644
index 0000000..ed91522
--- /dev/null
+++ b/src/layouts/components/Header/ToolBarRight.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
diff --git a/src/layouts/components/Header/components/AssemblySize.vue b/src/layouts/components/Header/components/AssemblySize.vue
new file mode 100644
index 0000000..9260aad
--- /dev/null
+++ b/src/layouts/components/Header/components/AssemblySize.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+ {{ assemblySizeListCh[item] }}
+
+
+
+
+
+
+
diff --git a/src/layouts/components/Header/components/Avatar.vue b/src/layouts/components/Header/components/Avatar.vue
new file mode 100644
index 0000000..dda1660
--- /dev/null
+++ b/src/layouts/components/Header/components/Avatar.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+ {{ $t("header.personalData") }}
+
+
+ {{ $t("header.changePassword") }}
+
+
+ {{ $t("header.logout") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/Header/components/Breadcrumb.vue b/src/layouts/components/Header/components/Breadcrumb.vue
new file mode 100644
index 0000000..d3c0e48
--- /dev/null
+++ b/src/layouts/components/Header/components/Breadcrumb.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+ 首页
+
+
+
+
+
+
+
+
+ {{ item.meta.title }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/Header/components/CollapseIcon.vue b/src/layouts/components/Header/components/CollapseIcon.vue
new file mode 100644
index 0000000..45ea816
--- /dev/null
+++ b/src/layouts/components/Header/components/CollapseIcon.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/Header/components/Fullscreen.vue b/src/layouts/components/Header/components/Fullscreen.vue
new file mode 100644
index 0000000..e92aa9b
--- /dev/null
+++ b/src/layouts/components/Header/components/Fullscreen.vue
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/src/layouts/components/Header/components/InfoDialog.vue b/src/layouts/components/Header/components/InfoDialog.vue
new file mode 100644
index 0000000..ca7c3c9
--- /dev/null
+++ b/src/layouts/components/Header/components/InfoDialog.vue
@@ -0,0 +1,23 @@
+
+
+ This is userInfo
+
+
+
+
+
+
+
diff --git a/src/layouts/components/Header/components/Language.vue b/src/layouts/components/Header/components/Language.vue
new file mode 100644
index 0000000..e70d50e
--- /dev/null
+++ b/src/layouts/components/Header/components/Language.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
+ 简体中文
+ English
+
+
+
+
+
+
diff --git a/src/layouts/components/Header/components/Message.vue b/src/layouts/components/Header/components/Message.vue
new file mode 100644
index 0000000..f7779f9
--- /dev/null
+++ b/src/layouts/components/Header/components/Message.vue
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 一键三连 susu-system 🧡
+ 一分钟前
+
+
+
+
+
+ 一键三连 susu-system 💙
+ 一小时前
+
+
+
+
+
+ 一键三连 susu-system 💚
+ 半天前
+
+
+
+
+
+ 一键三连 susu-system 💜
+ 一星期前
+
+
+
+
+
+ 一键三连 susu-system 💛
+ 一个月前
+
+
+
+
+
+
+
+
暂无消息
+
+
+
+
+
+
暂无代办
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/Header/components/PasswordDialog.vue b/src/layouts/components/Header/components/PasswordDialog.vue
new file mode 100644
index 0000000..f8cede2
--- /dev/null
+++ b/src/layouts/components/Header/components/PasswordDialog.vue
@@ -0,0 +1,23 @@
+
+
+ This is Password
+
+
+
+
+
+
+
diff --git a/src/layouts/components/Header/components/SearchMenu.vue b/src/layouts/components/Header/components/SearchMenu.vue
new file mode 100644
index 0000000..32e7f37
--- /dev/null
+++ b/src/layouts/components/Header/components/SearchMenu.vue
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.meta.title }}
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/Header/components/ThemeSetting.vue b/src/layouts/components/Header/components/ThemeSetting.vue
new file mode 100644
index 0000000..9498e47
--- /dev/null
+++ b/src/layouts/components/Header/components/ThemeSetting.vue
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
diff --git a/src/layouts/components/Main/components/Maximize.vue b/src/layouts/components/Main/components/Maximize.vue
new file mode 100644
index 0000000..121a1db
--- /dev/null
+++ b/src/layouts/components/Main/components/Maximize.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/Main/index.scss b/src/layouts/components/Main/index.scss
new file mode 100644
index 0000000..2dba5d4
--- /dev/null
+++ b/src/layouts/components/Main/index.scss
@@ -0,0 +1,13 @@
+.el-main {
+ box-sizing: border-box;
+ padding: 10px 12px;
+ overflow-x: hidden;
+ background-color: #f0f2f5;
+ &::-webkit-scrollbar {
+ background-color: #f0f2f5;
+ }
+}
+.el-footer {
+ height: auto;
+ padding: 0;
+}
diff --git a/src/layouts/components/Main/index.vue b/src/layouts/components/Main/index.vue
new file mode 100644
index 0000000..5d39f54
--- /dev/null
+++ b/src/layouts/components/Main/index.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/Menu/SubMenu.vue b/src/layouts/components/Menu/SubMenu.vue
new file mode 100644
index 0000000..2dd7223
--- /dev/null
+++ b/src/layouts/components/Menu/SubMenu.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+ {{ subItem.meta.title }}
+
+
+
+
+
+
+
+
+ {{ subItem.meta.title }}
+
+
+
+
+
+
diff --git a/src/layouts/components/Tabs/components/MoreButton.vue b/src/layouts/components/Tabs/components/MoreButton.vue
new file mode 100644
index 0000000..a8ef0ee
--- /dev/null
+++ b/src/layouts/components/Tabs/components/MoreButton.vue
@@ -0,0 +1,85 @@
+
+
+
+ {{ $t("tabs.more") }}
+
+
+
+
+
+ {{ $t("tabs.refresh") }}
+
+
+ {{ $t("tabs.maximize") }}
+
+
+ {{ $t("tabs.closeCurrent") }}
+
+
+ {{ $t("tabs.closeOther") }}
+
+
+ {{ $t("tabs.closeAll") }}
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/Tabs/index.scss b/src/layouts/components/Tabs/index.scss
new file mode 100644
index 0000000..8d43d2b
--- /dev/null
+++ b/src/layouts/components/Tabs/index.scss
@@ -0,0 +1,40 @@
+.tabs-box {
+ background-color: #ffffff;
+ :deep(.tabs-menu) {
+ position: relative;
+ width: 100%;
+ .el-dropdown {
+ position: absolute;
+ top: 8px;
+ right: 13px;
+ }
+ .tabs-icon {
+ top: 2px;
+ font-size: 15px;
+ }
+ .el-tabs__nav-wrap {
+ position: absolute;
+ width: calc(100% - 110px);
+ }
+ .el-tabs--card > .el-tabs__header {
+ box-sizing: border-box;
+ height: 40px;
+ padding: 0 10px;
+ margin: 0;
+ }
+ .el-tabs--card > .el-tabs__header .el-tabs__nav {
+ border: none;
+ }
+ .el-tabs--card > .el-tabs__header .el-tabs__item {
+ color: #cccccc;
+ border: none;
+ }
+ .el-tabs--card > .el-tabs__header .el-tabs__item.is-active {
+ color: var(--el-color-primary);
+ border-bottom: 2px solid var(--el-color-primary);
+ }
+ .el-tabs__item .is-icon-close svg {
+ margin-top: 0.5px;
+ }
+ }
+}
diff --git a/src/layouts/components/Tabs/index.vue b/src/layouts/components/Tabs/index.vue
new file mode 100644
index 0000000..6608ab4
--- /dev/null
+++ b/src/layouts/components/Tabs/index.vue
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/ThemeDrawer/index.scss b/src/layouts/components/ThemeDrawer/index.scss
new file mode 100644
index 0000000..a6a7877
--- /dev/null
+++ b/src/layouts/components/ThemeDrawer/index.scss
@@ -0,0 +1,125 @@
+.divider {
+ margin-top: 15px;
+ .el-icon {
+ position: relative;
+ top: 2px;
+ right: 5px;
+ font-size: 15px;
+ }
+}
+.theme-item {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin: 14px 0;
+ span {
+ font-size: 14px;
+ }
+}
+.layout-box {
+ position: relative;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-around;
+ padding: 10px 0 0;
+ .layout-item {
+ position: relative;
+ box-sizing: border-box;
+ width: 95px;
+ height: 67px;
+ padding: 6px;
+ margin-bottom: 20px;
+ cursor: pointer;
+ border-radius: 5px;
+ box-shadow: 0 0 5px 1px var(--el-border-color-lighter);
+ transition: all 0.2s;
+ .layout-dark {
+ background-color: var(--el-color-primary);
+ border-radius: 3px;
+ }
+ .layout-light {
+ background-color: var(--el-color-primary-light-5);
+ border-radius: 3px;
+ }
+ .layout-content {
+ background-color: var(--el-color-primary-light-8);
+ border: 1px dashed var(--el-color-primary);
+ border-radius: 3px;
+ }
+ .el-icon {
+ position: absolute;
+ right: 10px;
+ bottom: 10px;
+ color: var(--el-color-primary);
+ transition: all 0.2s;
+ }
+ &:hover {
+ box-shadow: 0 0 5px 1px var(--el-border-color-darker);
+ }
+ }
+ .is-active {
+ box-shadow: 0 0 0 2px var(--el-color-primary) !important;
+ }
+ .layout-vertical {
+ display: flex;
+ justify-content: space-between;
+ .layout-dark {
+ width: 20%;
+ }
+ .layout-container {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ width: 72%;
+ .layout-light {
+ height: 20%;
+ }
+ .layout-content {
+ height: 67%;
+ }
+ }
+ }
+ .layout-classic {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ .layout-dark {
+ height: 22%;
+ }
+ .layout-container {
+ display: flex;
+ justify-content: space-between;
+ height: 70%;
+ .layout-light {
+ width: 20%;
+ }
+ .layout-content {
+ width: 70%;
+ }
+ }
+ }
+ .layout-transverse {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ .layout-dark {
+ height: 20%;
+ }
+ .layout-content {
+ height: 67%;
+ }
+ }
+ .layout-columns {
+ display: flex;
+ justify-content: space-between;
+ .layout-dark {
+ width: 14%;
+ }
+ .layout-light {
+ width: 17%;
+ }
+ .layout-content {
+ width: 55%;
+ }
+ }
+}
diff --git a/src/layouts/components/ThemeDrawer/index.vue b/src/layouts/components/ThemeDrawer/index.vue
new file mode 100644
index 0000000..220f58a
--- /dev/null
+++ b/src/layouts/components/ThemeDrawer/index.vue
@@ -0,0 +1,163 @@
+
+
+
+
+
+ 布局切换
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 全局主题
+
+
+ 主题颜色
+
+
+
+ 暗黑模式
+
+
+
+ 灰色模式
+
+
+
+ 色弱模式
+
+
+
+
+
+
+
+ 界面设置
+
+
+ 折叠菜单
+
+
+
+ 面包屑
+
+
+
+ 面包屑图标
+
+
+
+ 标签栏
+
+
+
+ 标签栏图标
+
+
+
+ 页脚
+
+
+
+
+
+
+
+
diff --git a/src/layouts/index.vue b/src/layouts/index.vue
new file mode 100644
index 0000000..cbb1c27
--- /dev/null
+++ b/src/layouts/index.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/indexAsync.vue b/src/layouts/indexAsync.vue
new file mode 100644
index 0000000..b99b9d4
--- /dev/null
+++ b/src/layouts/indexAsync.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main.ts b/src/main.ts
new file mode 100644
index 0000000..a22ece1
--- /dev/null
+++ b/src/main.ts
@@ -0,0 +1,45 @@
+import { createApp } from "vue";
+import App from "./App.vue";
+// reset style sheet
+import "@/styles/reset.scss";
+// CSS common style sheet
+import "@/styles/common.scss";
+// iconfont css
+import "@/assets/iconfont/iconfont.scss";
+// font css
+import "@/assets/fonts/font.scss";
+// element plus
+import ElementPlus from "element-plus";
+// element icons
+import * as Icons from "@element-plus/icons-vue";
+// element css
+import "element-plus/dist/index.css";
+// element dark(内置暗黑模式)
+import "element-plus/theme-chalk/dark/css-vars.css";
+// custom element dark(自定义暗黑模式)
+import "@/styles/theme/element-dark.scss";
+// custom element css
+import "@/styles/element.scss";
+// custom directives
+import directives from "@/directives/index";
+// vue Router
+import router from "@/routers/index";
+// vue i18n
+import I18n from "@/languages/index";
+// pinia store
+import pinia from "@/stores/index";
+// svg icons
+import "virtual:svg-icons-register";
+// errorHandler
+import errorHandler from "@/utils/errorHandler";
+
+const app = createApp(App);
+
+app.config.errorHandler = errorHandler;
+
+// 注册element Icons组件
+Object.keys(Icons).forEach(key => {
+ app.component(key, Icons[key as keyof typeof Icons]);
+});
+
+app.use(router).use(I18n).use(pinia).use(directives).use(ElementPlus).mount("#app");
diff --git a/src/routers/index.ts b/src/routers/index.ts
new file mode 100644
index 0000000..b3fe1cc
--- /dev/null
+++ b/src/routers/index.ts
@@ -0,0 +1,96 @@
+import { createRouter, createWebHashHistory } from "vue-router";
+import { GlobalStore } from "@/stores";
+import { AuthStore } from "@/stores/modules/auth";
+import { LOGIN_URL, ROUTER_WHITE_LIST } from "@/config/config";
+import { initDynamicRouter } from "@/routers/modules/dynamicRouter";
+import { staticRouter, errorRouter } from "@/routers/modules/staticRouter";
+import NProgress from "@/config/nprogress";
+
+/**
+ * @description 动态路由参数配置简介 📚
+ * @param path ==> 菜单路径
+ * @param name ==> 菜单别名
+ * @param redirect ==> 重定向地址
+ * @param component ==> 视图文件路径
+ * @param meta ==> 菜单信息
+ * @param meta.icon ==> 菜单图标
+ * @param meta.title ==> 菜单标题
+ * @param meta.activeMenu ==> 当前路由为详情页时,需要高亮的菜单
+ * @param meta.isLink ==> 是否外链
+ * @param meta.isHide ==> 是否隐藏
+ * @param meta.isFull ==> 是否全屏(示例:数据大屏页面)
+ * @param meta.isAffix ==> 是否固定在 tabs nav
+ * @param meta.isKeepAlive ==> 是否缓存
+ * */
+const router = createRouter({
+ history: createWebHashHistory(),
+ routes: [...staticRouter, ...errorRouter],
+ strict: false,
+ scrollBehavior: () => ({ left: 0, top: 0 })
+});
+
+/**
+ * @description 路由拦截 beforeEach
+ * */
+router.beforeEach(async (to, from, next) => {
+ const globalStore = GlobalStore();
+
+ // 1.NProgress 开始
+ NProgress.start();
+
+ // 2.动态设置标题
+ const title = import.meta.env.VITE_GLOB_APP_TITLE;
+ document.title = to.meta.title ? `${to.meta.title} - ${title}` : title;
+
+ // 3.判断是访问登陆页,有 Token 就在当前页面,没有 Token 重置路由并放行到登陆页
+ if (to.path === LOGIN_URL) {
+ if (globalStore.token) return next(from.fullPath);
+ resetRouter();
+ return next();
+ }
+
+ // 4.判断访问页面是否在路由白名单地址中,如果存在直接放行
+ if (ROUTER_WHITE_LIST.includes(to.path)) return next();
+
+ // 5.判断是否有 Token,没有重定向到 login
+ if (!globalStore.token) return next({ path: LOGIN_URL, replace: true });
+
+ // 6.如果没有菜单列表,就重新请求菜单列表并添加动态路由
+ const authStore = AuthStore();
+ authStore.setRouteName(to.name as string);
+ if (!authStore.authMenuListGet.length) {
+ await initDynamicRouter();
+ return next({ ...to, replace: true });
+ }
+
+ // 7.正常访问页面
+ next();
+});
+
+/**
+ * @description 重置路由
+ * */
+export const resetRouter = () => {
+ const authStore = AuthStore();
+ authStore.flatMenuListGet.forEach(route => {
+ const { name } = route;
+ if (name && router.hasRoute(name)) router.removeRoute(name);
+ });
+};
+
+/**
+ * @description 路由跳转结束
+ * */
+router.afterEach(() => {
+ NProgress.done();
+});
+
+/**
+ * @description 路由跳转错误
+ * */
+router.onError(error => {
+ NProgress.done();
+ console.warn("路由错误", error.message);
+});
+
+export default router;
diff --git a/src/routers/modules/dynamicRouter.ts b/src/routers/modules/dynamicRouter.ts
new file mode 100644
index 0000000..ba0b0e7
--- /dev/null
+++ b/src/routers/modules/dynamicRouter.ts
@@ -0,0 +1,57 @@
+import router from "@/routers/index";
+import { isType } from "@/utils/util";
+import { LOGIN_URL } from "@/config/config";
+import { ElNotification } from "element-plus";
+import { GlobalStore } from "@/stores";
+import { AuthStore } from "@/stores/modules/auth";
+import { notFoundRouter } from "@/routers/modules/staticRouter";
+
+// 引入 views 文件夹下所有 vue 文件
+const modules = import.meta.glob("@/views/**/*.vue");
+
+/**
+ * 初始化动态路由
+ */
+export const initDynamicRouter = async () => {
+ const authStore = AuthStore();
+ const globalStore = GlobalStore();
+ try {
+ // 1.获取菜单列表 && 按钮权限(可合并到一个接口获取,根据后端不同可自行改造)
+ await authStore.getAuthMenuList();
+ await authStore.getAuthButtonList();
+
+ // 2.判断当前用户有没有菜单权限
+ if (!authStore.authMenuListGet.length) {
+ ElNotification({
+ title: "无权限访问",
+ message: "当前账号无任何菜单权限,请联系系统管理员!",
+ type: "warning",
+ duration: 3000
+ });
+ globalStore.setToken("");
+ router.replace(LOGIN_URL);
+ return Promise.reject("No permission");
+ }
+
+ // 3.添加动态路由
+ authStore.flatMenuListGet.forEach((item: any) => {
+ item.children && delete item.children;
+ if (item.component && isType(item.component) == "string") {
+ item.component = modules["/src/views" + item.component + ".vue"];
+ }
+ if (item.meta.isFull) {
+ router.addRoute(item);
+ } else {
+ router.addRoute("layout", item);
+ }
+ });
+
+ // 4.最后添加 notFoundRouter
+ router.addRoute(notFoundRouter);
+ } catch (error) {
+ // 💢 当按钮 || 菜单请求出错时,重定向到登陆页
+ globalStore.setToken("");
+ router.replace(LOGIN_URL);
+ return Promise.reject(error);
+ }
+};
diff --git a/src/routers/modules/staticRouter.ts b/src/routers/modules/staticRouter.ts
new file mode 100644
index 0000000..0ad7f5e
--- /dev/null
+++ b/src/routers/modules/staticRouter.ts
@@ -0,0 +1,67 @@
+import { RouteRecordRaw } from "vue-router";
+import { HOME_URL, LOGIN_URL } from "@/config/config";
+
+/**
+ * staticRouter(静态路由)
+ */
+export const staticRouter: RouteRecordRaw[] = [
+ {
+ path: "/",
+ redirect: HOME_URL
+ },
+ {
+ path: LOGIN_URL,
+ name: "login",
+ component: () => import("@/views/login/index.vue"),
+ meta: {
+ title: "登录"
+ }
+ },
+ {
+ path: "/layout",
+ name: "layout",
+ component: () => import("@/layouts/index.vue"),
+ // component: () => import("@/layouts/indexAsync.vue"),
+ redirect: HOME_URL,
+ children: []
+ }
+];
+
+/**
+ * errorRouter(错误页面路由)
+ */
+export const errorRouter = [
+ {
+ path: "/403",
+ name: "403",
+ component: () => import("@/components/ErrorMessage/403.vue"),
+ meta: {
+ title: "403页面"
+ }
+ },
+ {
+ path: "/404",
+ name: "404",
+ component: () => import("@/components/ErrorMessage/404.vue"),
+ meta: {
+ title: "404页面"
+ }
+ },
+ {
+ path: "/500",
+ name: "500",
+ component: () => import("@/components/ErrorMessage/500.vue"),
+ meta: {
+ title: "500页面"
+ }
+ }
+];
+
+/**
+ * notFoundRouter(找不到路由)
+ */
+export const notFoundRouter = {
+ path: "/:pathMatch(.*)*",
+ name: "notFound",
+ redirect: { name: "404" }
+};
diff --git a/src/stores/index.ts b/src/stores/index.ts
new file mode 100644
index 0000000..e2c1869
--- /dev/null
+++ b/src/stores/index.ts
@@ -0,0 +1,79 @@
+import { defineStore, createPinia } from "pinia";
+import { GlobalState, ThemeConfigProps } from "./interface";
+import { DEFAULT_PRIMARY } from "@/config/config";
+import piniaPersistConfig from "@/config/piniaPersist";
+import piniaPluginPersistedstate from "pinia-plugin-persistedstate";
+
+// defineStore 调用后返回一个函数,调用该函数获得 Store 实体
+export const GlobalStore = defineStore({
+ // id: 必须的,在所有 Store 中唯一
+ id: "GlobalState",
+ // state: 返回对象的函数
+ state: (): GlobalState => ({
+ // token
+ token: "",
+ // userInfo
+ userInfo: "",
+ // element组件大小
+ assemblySize: "default",
+ // language
+ language: "",
+ // themeConfig
+ themeConfig: {
+ // 布局切换 ==> 纵向:vertical | 经典:classic | 横向:transverse | 分栏:columns
+ layout: "vertical",
+ // 默认 primary 主题颜色
+ primary: DEFAULT_PRIMARY,
+ // 深色模式
+ isDark: false,
+ // 灰色模式
+ isGrey: false,
+ // 色弱模式
+ isWeak: false,
+ // 折叠菜单
+ isCollapse: false,
+ // 面包屑导航
+ breadcrumb: true,
+ // 面包屑导航图标
+ breadcrumbIcon: true,
+ // 标签页
+ tabs: true,
+ // 标签页图标
+ tabsIcon: true,
+ // 页脚
+ footer: true,
+ // 当前页面是否全屏
+ maximize: false
+ }
+ }),
+ getters: {},
+ actions: {
+ // setToken
+ setToken(token: string) {
+ this.token = token;
+ },
+ // setUserInfo
+ setUserInfo(userInfo: any) {
+ this.userInfo = userInfo;
+ },
+ // setAssemblySizeSize
+ setAssemblySizeSize(assemblySize: string) {
+ this.assemblySize = assemblySize;
+ },
+ // updateLanguage
+ updateLanguage(language: string) {
+ this.language = language;
+ },
+ // setThemeConfig
+ setThemeConfig(themeConfig: ThemeConfigProps) {
+ this.themeConfig = themeConfig;
+ }
+ },
+ persist: piniaPersistConfig("GlobalState")
+});
+
+// piniaPersist(持久化)
+const pinia = createPinia();
+pinia.use(piniaPluginPersistedstate);
+
+export default pinia;
diff --git a/src/stores/interface/index.ts b/src/stores/interface/index.ts
new file mode 100644
index 0000000..559aeda
--- /dev/null
+++ b/src/stores/interface/index.ts
@@ -0,0 +1,52 @@
+/* themeConfigProp */
+export interface ThemeConfigProps {
+ layout: string;
+ primary: string;
+ isDark: boolean;
+ isGrey: boolean;
+ isCollapse: boolean;
+ isWeak: boolean;
+ breadcrumb: boolean;
+ breadcrumbIcon: boolean;
+ tabs: boolean;
+ tabsIcon: boolean;
+ footer: boolean;
+ maximize: boolean;
+}
+
+/* GlobalState */
+export interface GlobalState {
+ token: string;
+ userInfo: any;
+ assemblySize: string;
+ language: string;
+ themeConfig: ThemeConfigProps;
+}
+
+/* tabsMenuProps */
+export interface TabsMenuProps {
+ icon: string;
+ title: string;
+ path: string;
+ name: string;
+ close: boolean;
+}
+
+/* TabsState */
+export interface TabsState {
+ tabsMenuList: TabsMenuProps[];
+}
+
+/* AuthState */
+export interface AuthState {
+ routeName: string;
+ authButtonList: {
+ [key: string]: string[];
+ };
+ authMenuList: Menu.MenuOptions[];
+}
+
+/* keepAliveState */
+export interface keepAliveState {
+ keepAliveName: string[];
+}
diff --git a/src/stores/modules/auth.ts b/src/stores/modules/auth.ts
new file mode 100644
index 0000000..8b8b22c
--- /dev/null
+++ b/src/stores/modules/auth.ts
@@ -0,0 +1,46 @@
+import { defineStore } from "pinia";
+import { AuthState } from "@/stores/interface";
+import { getFlatArr } from "@/utils/util";
+import { getAuthButtonListApi, getAuthMenuListApi } from "@/api/modules/login";
+import { getShowMenuList, getAllBreadcrumbList } from "@/utils/util";
+
+// AuthStore
+export const AuthStore = defineStore({
+ id: "AuthState",
+ state: (): AuthState => ({
+ // 当前页面的 router name,用来做按钮权限筛选
+ routeName: "",
+ // 按钮权限列表
+ authButtonList: {},
+ // 菜单权限列表
+ authMenuList: []
+ }),
+ getters: {
+ // 按钮权限列表
+ authButtonListGet: state => state.authButtonList,
+ // 后端返回的菜单列表 ==> 这里没有经过任何处理
+ authMenuListGet: state => state.authMenuList,
+ // 后端返回的菜单列表 ==> 左侧菜单栏渲染,需要去除 isHide == true
+ showMenuListGet: state => getShowMenuList(state.authMenuList),
+ // 扁平化之后的一维数组路由,主要用来添加动态路由
+ flatMenuListGet: state => getFlatArr(state.authMenuList),
+ // 所有面包屑导航列表
+ breadcrumbListGet: state => getAllBreadcrumbList(state.authMenuList)
+ },
+ actions: {
+ // getAuthButtonList
+ async getAuthButtonList() {
+ const { data } = await getAuthButtonListApi();
+ this.authButtonList = data;
+ },
+ // getAuthMenuList
+ async getAuthMenuList() {
+ const { data } = await getAuthMenuListApi();
+ this.authMenuList = data;
+ },
+ // setRouteName
+ async setRouteName(name: string) {
+ this.routeName = name;
+ }
+ }
+});
diff --git a/src/stores/modules/keepAlive.ts b/src/stores/modules/keepAlive.ts
new file mode 100644
index 0000000..4cc9590
--- /dev/null
+++ b/src/stores/modules/keepAlive.ts
@@ -0,0 +1,25 @@
+import { defineStore } from "pinia";
+import { keepAliveState } from "@/stores/interface";
+
+// KeepAliveStore
+export const KeepAliveStore = defineStore({
+ id: "keepAliveStore",
+ state: (): keepAliveState => ({
+ // 当前缓存的 routerName
+ keepAliveName: []
+ }),
+ actions: {
+ // addKeepAliveName
+ async addKeepAliveName(name: string) {
+ !this.keepAliveName.includes(name) && this.keepAliveName.push(name);
+ },
+ // removeKeepAliveName
+ async removeKeepAliveName(name: string) {
+ this.keepAliveName = this.keepAliveName.filter(item => item !== name);
+ },
+ // setKeepAliveName
+ async setKeepAliveName(nameArr: string[] = []) {
+ this.keepAliveName = nameArr;
+ }
+ }
+});
diff --git a/src/stores/modules/tabs.ts b/src/stores/modules/tabs.ts
new file mode 100644
index 0000000..9988ec4
--- /dev/null
+++ b/src/stores/modules/tabs.ts
@@ -0,0 +1,51 @@
+import { defineStore } from "pinia";
+import { TabsState, TabsMenuProps } from "@/stores/interface";
+import piniaPersistConfig from "@/config/piniaPersist";
+import router from "@/routers/index";
+
+// TabsStore
+export const TabsStore = defineStore({
+ id: "TabsState",
+ state: (): TabsState => ({
+ tabsMenuList: []
+ }),
+ actions: {
+ // Add Tabs
+ async addTabs(tabItem: TabsMenuProps) {
+ if (this.tabsMenuList.every(item => item.path !== tabItem.path)) {
+ this.tabsMenuList.push(tabItem);
+ }
+ },
+ // Remove Tabs
+ async removeTabs(tabPath: string, isCurrent: boolean = true) {
+ const tabsMenuList = this.tabsMenuList;
+ if (isCurrent) {
+ tabsMenuList.forEach((item, index) => {
+ if (item.path !== tabPath) return;
+ const nextTab = tabsMenuList[index + 1] || tabsMenuList[index - 1];
+ if (!nextTab) return;
+ router.push(nextTab.path);
+ });
+ }
+ this.tabsMenuList = tabsMenuList.filter(item => item.path !== tabPath);
+ },
+ // Close MultipleTab
+ async closeMultipleTab(tabsMenuValue?: string) {
+ this.tabsMenuList = this.tabsMenuList.filter(item => {
+ return item.path === tabsMenuValue || !item.close;
+ });
+ },
+ // Set Tabs
+ async setTabs(tabsMenuList: TabsMenuProps[]) {
+ this.tabsMenuList = tabsMenuList;
+ },
+ // Set Tabs Title
+ async setTabsTitle(title: string) {
+ const nowFullPath = location.hash.substring(1);
+ this.tabsMenuList.forEach(item => {
+ if (item.path == nowFullPath) item.title = title;
+ });
+ }
+ },
+ persist: piniaPersistConfig("TabsState")
+});
diff --git a/src/styles/common.scss b/src/styles/common.scss
new file mode 100644
index 0000000..2aa8594
--- /dev/null
+++ b/src/styles/common.scss
@@ -0,0 +1,122 @@
+/* flex */
+.flx-center {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.flx-justify-between {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+.flx-align-center {
+ display: flex;
+ align-items: center;
+}
+
+/* clearfix */
+.clearfix::after {
+ display: block;
+ height: 0;
+ overflow: hidden;
+ clear: both;
+ content: "";
+}
+
+/* 文字单行省略号 */
+.sle {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+/* 文字多行省略号 */
+.mle {
+ display: -webkit-box;
+ overflow: hidden;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 2;
+}
+
+/* 文字多了自動換行 */
+.break-word {
+ word-break: break-all;
+ word-wrap: break-word;
+}
+
+/* fade-transform */
+.fade-transform-leave-active,
+.fade-transform-enter-active {
+ transition: all 0.2s;
+}
+.fade-transform-enter-from {
+ opacity: 0;
+ transition: all 0.2s;
+ transform: translateX(-30px);
+}
+.fade-transform-leave-to {
+ opacity: 0;
+ transition: all 0.2s;
+ transform: translateX(30px);
+}
+
+/* Breadcrumb */
+.breadcrumb-enter-active {
+ transition: all 0.2s;
+}
+.breadcrumb-enter-from,
+.breadcrumb-leave-active {
+ opacity: 0;
+ transform: translateX(10px);
+}
+
+/* scroll bar */
+::-webkit-scrollbar {
+ width: 8px;
+ height: 8px;
+}
+::-webkit-scrollbar-thumb {
+ background-color: #d3d3d3;
+ border-radius: 20px;
+ box-shadow: inset 0 0 0 white;
+}
+
+/* nprogress样式 */
+#nprogress .bar {
+ background: var(--el-color-primary) !important;
+}
+#nprogress .spinner-icon {
+ border-top-color: var(--el-color-primary) !important;
+ border-left-color: var(--el-color-primary) !important;
+}
+#nprogress .peg {
+ box-shadow: 0 0 10px var(--el-color-primary), 0 0 5px var(--el-color-primary) !important;
+}
+
+/* 外边距、内边距全局样式 */
+@for $i from 0 through 40 {
+ .mt#{$i} {
+ margin-top: #{$i}px !important;
+ }
+ .mr#{$i} {
+ margin-right: #{$i}px !important;
+ }
+ .mb#{$i} {
+ margin-bottom: #{$i}px !important;
+ }
+ .ml#{$i} {
+ margin-left: #{$i}px !important;
+ }
+ .pt#{$i} {
+ padding-top: #{$i}px !important;
+ }
+ .pr#{$i} {
+ padding-right: #{$i}px !important;
+ }
+ .pb#{$i} {
+ padding-bottom: #{$i}px !important;
+ }
+ .pl#{$i} {
+ padding-left: #{$i}px !important;
+ }
+}
diff --git a/src/styles/element.scss b/src/styles/element.scss
new file mode 100644
index 0000000..b4a8704
--- /dev/null
+++ b/src/styles/element.scss
@@ -0,0 +1,246 @@
+// * 设置 notification/message 层级在 loading 之上
+.el-message,
+.el-notification {
+ z-index: 99999 !important;
+}
+
+// * 设置 el-alert 边框
+.el-alert {
+ border: 1px solid;
+}
+
+// * 当前页面最大化 css
+.main-maximize {
+ .aside-split,
+ .el-aside,
+ .el-header,
+ .el-footer,
+ .tabs-box {
+ display: none !important;
+ }
+}
+
+// * card 卡片样式
+.card {
+ box-sizing: border-box;
+ padding: 20px;
+ overflow-x: hidden;
+ background-color: var(--el-fill-color-blank);
+ border: 1px solid var(--el-border-color-light);
+ border-radius: 4px;
+ box-shadow: 0 0 12px rgb(0 0 0 / 5%);
+}
+
+// * 不需要 card 卡片样式(在组件内使用 proTable 会使用到)
+.no-card {
+ .card {
+ padding: 0;
+ background-color: transparent;
+ border: none;
+ border-radius: 0;
+ box-shadow: none;
+ }
+}
+
+// * content-box (常用内容盒子)
+.content-box {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ height: 100%;
+ .text {
+ margin: 20px 0 30px;
+ font-size: 23px;
+ font-weight: bold;
+ color: var(--el-text-color-regular);
+ }
+ .el-descriptions {
+ width: 100%;
+ padding: 40px 0 0;
+ .el-descriptions__title {
+ font-size: 18px;
+ }
+ .el-descriptions__label {
+ width: 200px;
+ }
+ }
+}
+
+// * main-box (树形表格 treeFilter 页面会使用,左右布局 flex)
+.main-box {
+ display: flex;
+ width: 100%;
+ height: 100%;
+ .table-box {
+ width: calc(100% - 230px);
+ }
+}
+
+// * table-box 表格页面样式
+.table,
+.table-box {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ width: 100%;
+ height: 100%;
+
+ // table-search 表格搜索样式
+ .table-search {
+ padding: 18px 18px 0;
+ margin-bottom: 10px;
+ .el-form {
+ .el-form-item__content > * {
+ width: 100%;
+ }
+
+ // 去除时间选择器上下 padding
+ .el-range-editor.el-input__wrapper {
+ padding: 0 10px;
+ }
+
+ // el-select 为多选时不换行显示
+ .el-select__tags {
+ overflow: hidden;
+ white-space: nowrap;
+ }
+ }
+ .operation {
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+ margin-bottom: 18px;
+ }
+ }
+
+ // 表格 header 样式
+ .table-header {
+ .header-button-lf {
+ float: left;
+ }
+ .header-button-ri {
+ float: right;
+ }
+ .el-button {
+ margin-bottom: 15px;
+ }
+ }
+
+ // el-table 表格样式
+ .el-table {
+ flex: 1;
+
+ // 修复 safari 浏览器表格错位 https://github.com/HalseySpicy/susu-system/issues/83
+ table {
+ width: 100%;
+ }
+ .el-table__header th {
+ height: 45px;
+ font-size: 15px;
+ font-weight: bold;
+ color: var(--el-text-color-primary);
+ background: var(--el-fill-color-light);
+ }
+ .el-table__row {
+ height: 45px;
+ font-size: 14px;
+ }
+
+ // 设置 el-table 中 header 文字不换行,并省略
+ .el-table__header .el-table__cell > .cell {
+ white-space: nowrap;
+ }
+
+ // 解决表格数据为空时样式不居中问题(仅在element-plus中)
+ .el-table__empty-block {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ .table-empty {
+ line-height: 30px;
+ }
+ }
+
+ // table 中 image 图片样式
+ .table-image {
+ width: 50px;
+ height: 50px;
+ border-radius: 50%;
+ }
+ }
+
+ // 表格 pagination 样式
+ .el-pagination {
+ display: flex;
+ justify-content: flex-end;
+ margin-top: 20px;
+ }
+}
+
+// * el-table 组件大小切换样式
+.el-table--small {
+ .el-table__header th {
+ height: 40px !important;
+ font-size: 14px !important;
+ }
+ .el-table__row {
+ height: 40px !important;
+ font-size: 13px !important;
+ }
+}
+.el-table--large {
+ .el-table__header th {
+ height: 50px !important;
+ font-size: 16px !important;
+ }
+ .el-table__row {
+ height: 50px !important;
+ font-size: 15px !important;
+ }
+}
+
+// * el-drawer 样式
+.el-drawer {
+ .el-drawer__header {
+ padding: 15px 20px 14px;
+ margin-bottom: 0;
+ border-bottom: 1px solid var(--el-border-color-lighter);
+ span {
+ font-size: 17px;
+ color: var(--el-text-color-primary) !important;
+ }
+ }
+ .el-drawer__footer {
+ border-top: 1px solid var(--el-border-color-lighter);
+ }
+
+ // drawer select 样式
+ .el-select {
+ width: 100%;
+ }
+
+ // drawer-form 中两列 form-item
+ .drawer-multiColumn-form {
+ display: flex;
+ flex-wrap: wrap;
+ .el-form-item {
+ width: 47%;
+ &:nth-child(2n-1) {
+ margin-right: 5%;
+ }
+ }
+ }
+}
+
+// * el-dialog 样式
+.el-dialog {
+ .el-dialog__header {
+ padding: 15px 20px;
+ margin: 0;
+ border-bottom: 1px solid var(--el-border-color-lighter);
+ .el-dialog__title {
+ font-size: 17px;
+ }
+ }
+}
diff --git a/src/styles/reset.scss b/src/styles/reset.scss
new file mode 100644
index 0000000..321dc7d
--- /dev/null
+++ b/src/styles/reset.scss
@@ -0,0 +1,142 @@
+/* Reset style sheet */
+
+/* 因为使用富文本编辑器才注释掉,如果你项目没有使用富文本编辑器,可以取消注释 */
+// html,
+// body,
+// div,
+// span,
+// applet,
+// object,
+// iframe,
+// h1,
+// h2,
+// h3,
+// h4,
+// h5,
+// h6,
+// p,
+// blockquote,
+// pre,
+// a,
+// abbr,
+// acronym,
+// address,
+// big,
+// cite,
+// code,
+// del,
+// dfn,
+// em,
+// img,
+// ins,
+// kbd,
+// q,
+// s,
+// samp,
+// small,
+// strike,
+// strong,
+// sub,
+// sup,
+// tt,
+// var,
+// b,
+// u,
+// i,
+// center,
+// dl,
+// dt,
+// dd,
+// ol,
+// ul,
+// li,
+// fieldset,
+// form,
+// label,
+// legend,
+// table,
+// caption,
+// tbody,
+// tfoot,
+// thead,
+// tr,
+// th,
+// td,
+// article,
+// aside,
+// canvas,
+// details,
+// embed,
+// figure,
+// figcaption,
+// footer,
+// header,
+// hgroup,
+// menu,
+// nav,
+// output,
+// ruby,
+// section,
+// summary,
+// time,
+// mark,
+// audio,
+// video {
+// padding: 0;
+// margin: 0;
+// font: inherit;
+// font-size: 100%;
+// vertical-align: baseline;
+// border: 0;
+// }
+
+// /* HTML5 display-role reset for older browsers */
+// article,
+// aside,
+// details,
+// figcaption,
+// figure,
+// footer,
+// header,
+// hgroup,
+// menu,
+// nav,
+// section {
+// display: block;
+// }
+// body {
+// padding: 0;
+// margin: 0;
+// }
+// ol,
+// ul {
+// list-style: none;
+// }
+// blockquote,
+// q {
+// quotes: none;
+// }
+// blockquote::before,
+// blockquote::after,
+// q::before,
+// q::after {
+// content: "";
+// content: none;
+// }
+// table {
+// border-spacing: 0;
+// border-collapse: collapse;
+// }
+html,
+body,
+#app {
+ width: 100%;
+ height: 100%;
+ padding: 0;
+ margin: 0;
+}
+
+/* 解决 h1 标签在 webkit 内核浏览器中文字大小失效问题 */
+:-webkit-any(article, aside, nav, section) h1 {
+ font-size: 2em;
+}
diff --git a/src/styles/theme/element-dark.scss b/src/styles/theme/element-dark.scss
new file mode 100644
index 0000000..e433431
--- /dev/null
+++ b/src/styles/theme/element-dark.scss
@@ -0,0 +1,103 @@
+/* 自定义 element 暗黑模式样式 */
+html.dark {
+ // * susu-system
+ --susu-bg-color: #141414;
+ --susu-main-bg-color: #0d0d0d;
+ --susu-border-light: 1px solid #4c4c4d;
+
+ // * wangEditor
+ --w-e-toolbar-color: #595959;
+ --w-e-toolbar-bg-color: #eeeeee;
+ --w-e-textarea-bg-color: #141414;
+ --w-e-textarea-color: #eeeeee;
+
+ // * 以下为自定义暗黑模式内容
+ // login
+ .login-container {
+ background-color: var(--el-fill-color-extra-light) !important;
+ .login-box {
+ background-color: var(--el-mask-color) !important;
+ .login-form {
+ background-color: var(--el-bg-color) !important;
+ box-shadow: 5px 5px 15px rgb(161 161 161 / 20%) !important;
+ .logo-text {
+ color: var(--el-text-color-primary) !important;
+ }
+ }
+ }
+ }
+
+ // scroll-bar
+ ::-webkit-scrollbar {
+ background-color: var(--el-scrollbar-bg-color) !important;
+ }
+ ::-webkit-scrollbar-thumb {
+ background-color: var(--el-border-color-darker) !important;
+ }
+
+ // layout
+ .el-container {
+ .el-aside {
+ background-color: var(--susu-bg-color) !important;
+ border-right: var(--susu-border-light) !important;
+ .logo {
+ border-bottom: var(--susu-border-light) !important;
+ }
+ }
+ .not-aside {
+ border-right: none !important;
+ }
+ .el-header {
+ background-color: var(--susu-bg-color) !important;
+ border-bottom-color: var(--el-border-color-light) !important;
+ }
+ .el-main {
+ background-color: var(--susu-main-bg-color) !important;
+ .card {
+ background-color: var(--susu-bg-color) !important;
+ }
+ }
+ .el-tabs {
+ background-color: var(--susu-bg-color) !important;
+ }
+ .el-footer {
+ .footer {
+ background-color: var(--susu-bg-color) !important;
+ border-top-color: var(--el-border-color-light) !important;
+ a {
+ color: var(--el-text-color-regular) !important;
+ }
+ }
+ }
+ }
+
+ // menu
+ .el-menu,
+ .el-sub-menu,
+ .el-menu-item,
+ .el-sub-menu__title {
+ background-color: var(--susu-bg-color) !important;
+ &:not(.is-active) {
+ color: #bdbdc0 !important;
+ }
+ &.is-active {
+ color: #ffffff !important;
+ background-color: #000000 !important;
+ }
+ }
+ .el-menu-item:not(.is-active):hover {
+ background-color: var(--susu-main-bg-color) !important;
+ }
+ .aside-split {
+ background-color: var(--susu-bg-color) !important;
+ border-right: var(--susu-border-light) !important;
+ .logo {
+ border-bottom: var(--susu-border-light) !important;
+ }
+ }
+
+ // guide
+ #driver-highlighted-element-stage {
+ background-color: var(--el-color-info-light-5) !important;
+ }
+}
diff --git a/src/styles/var.scss b/src/styles/var.scss
new file mode 100644
index 0000000..bb87cba
--- /dev/null
+++ b/src/styles/var.scss
@@ -0,0 +1,2 @@
+/* 全局 css 变量 */
+$primary-color: var(--el-color-primary);
diff --git a/src/typings/global.d.ts b/src/typings/global.d.ts
new file mode 100644
index 0000000..87d0a0e
--- /dev/null
+++ b/src/typings/global.d.ts
@@ -0,0 +1,35 @@
+// * Menu
+declare namespace Menu {
+ interface MenuOptions {
+ path: string;
+ name: string;
+ component?: string | (() => Promise);
+ redirect?: string;
+ meta: MetaProps;
+ children?: MenuOptions[];
+ }
+ interface MetaProps {
+ icon: string;
+ title: string;
+ activeMenu?: string;
+ isLink?: string;
+ isHide: boolean;
+ isFull: boolean;
+ isAffix: boolean;
+ isKeepAlive: boolean;
+ }
+}
+
+// * Vite
+declare type Recordable = Record;
+
+declare interface ViteEnv {
+ VITE_API_URL: string;
+ VITE_PORT: number;
+ VITE_OPEN: boolean;
+ VITE_GLOB_APP_TITLE: string;
+ VITE_DROP_CONSOLE: boolean;
+ VITE_PROXY_URL: string;
+ VITE_BUILD_GZIP: boolean;
+ VITE_REPORT: boolean;
+}
diff --git a/src/typings/plugins.d.ts b/src/typings/plugins.d.ts
new file mode 100644
index 0000000..7c09f70
--- /dev/null
+++ b/src/typings/plugins.d.ts
@@ -0,0 +1,4 @@
+declare module "nprogress";
+declare module "js-md5";
+declare module "echarts-liquidfill";
+declare module "qs";
diff --git a/src/typings/window.d.ts b/src/typings/window.d.ts
new file mode 100644
index 0000000..dc0b405
--- /dev/null
+++ b/src/typings/window.d.ts
@@ -0,0 +1,9 @@
+// * global
+declare global {
+ interface Navigator {
+ msSaveOrOpenBlob: (blob: Blob, fileName: string) => void;
+ browserLanguage: string;
+ }
+}
+
+export {};
diff --git a/src/utils/echarts/index.ts b/src/utils/echarts/index.ts
new file mode 100644
index 0000000..945eaa3
--- /dev/null
+++ b/src/utils/echarts/index.ts
@@ -0,0 +1,53 @@
+// * Echarts 按需引入
+import * as echarts from "echarts/core";
+import {
+ BarChart,
+ // 系列类型的定义后缀都为 SeriesOption
+ BarSeriesOption,
+ LineChart,
+ LineSeriesOption
+} from "echarts/charts";
+import { LegendComponent } from "echarts/components";
+import {
+ TitleComponent,
+ // 组件类型的定义后缀都为 ComponentOption
+ TitleComponentOption,
+ TooltipComponent,
+ TooltipComponentOption,
+ GridComponent,
+ GridComponentOption,
+ // 数据集组件
+ DatasetComponent,
+ DatasetComponentOption,
+ // 内置数据转换器组件 (filter, sort)
+ TransformComponent
+} from "echarts/components";
+import { LabelLayout, UniversalTransition } from "echarts/features";
+import { CanvasRenderer } from "echarts/renderers";
+
+// 通过 ComposeOption 来组合出一个只有必须组件和图表的 Option 类型
+export type ECOption = echarts.ComposeOption<
+ | BarSeriesOption
+ | LineSeriesOption
+ | TitleComponentOption
+ | TooltipComponentOption
+ | GridComponentOption
+ | DatasetComponentOption
+>;
+
+// 注册必须的组件
+echarts.use([
+ LegendComponent,
+ TitleComponent,
+ TooltipComponent,
+ GridComponent,
+ DatasetComponent,
+ TransformComponent,
+ BarChart,
+ LineChart,
+ LabelLayout,
+ UniversalTransition,
+ CanvasRenderer
+]);
+
+export default echarts;
diff --git a/src/utils/eleValidate.ts b/src/utils/eleValidate.ts
new file mode 100644
index 0000000..fd02509
--- /dev/null
+++ b/src/utils/eleValidate.ts
@@ -0,0 +1,14 @@
+// * Element 常用表单校验规则
+
+/**
+ * @rule 手机号
+ */
+export function checkPhoneNumber(rule: any, value: any, callback: any) {
+ const regexp = /^(((13[0-9]{1})|(15[0-9]{1})|(16[0-9]{1})|(17[3-8]{1})|(18[0-9]{1})|(19[0-9]{1})|(14[5-7]{1}))+\d{8})$/;
+ if (value === "") callback("请输入手机号码");
+ if (!regexp.test(value)) {
+ callback(new Error("请输入正确的手机号码"));
+ } else {
+ return callback();
+ }
+}
diff --git a/src/utils/errorHandler.ts b/src/utils/errorHandler.ts
new file mode 100644
index 0000000..3afc94e
--- /dev/null
+++ b/src/utils/errorHandler.ts
@@ -0,0 +1,27 @@
+import { ElNotification } from "element-plus";
+
+/**
+ * @description 全局代码错误捕捉
+ * */
+const errorHandler = (error: any) => {
+ // 过滤 HTTP 请求错误
+ if (error.status || error.status == 0) return false;
+ let errorMap: { [key: string]: string } = {
+ InternalError: "Javascript引擎内部错误",
+ ReferenceError: "未找到对象",
+ TypeError: "使用了错误的类型或对象",
+ RangeError: "使用内置对象时,参数超范围",
+ SyntaxError: "语法错误",
+ EvalError: "错误的使用了Eval",
+ URIError: "URI错误"
+ };
+ let errorName = errorMap[error.name] || "未知错误";
+ ElNotification({
+ title: errorName,
+ message: error,
+ type: "error",
+ duration: 3000
+ });
+};
+
+export default errorHandler;
diff --git a/src/utils/getEnv.ts b/src/utils/getEnv.ts
new file mode 100644
index 0000000..9b9447c
--- /dev/null
+++ b/src/utils/getEnv.ts
@@ -0,0 +1,73 @@
+import fs from "fs";
+import path from "path";
+import dotenv from "dotenv";
+
+export function isDevFn(mode: string): boolean {
+ return mode === "development";
+}
+
+export function isProdFn(mode: string): boolean {
+ return mode === "production";
+}
+
+/**
+ * Whether to generate package preview
+ */
+export function isReportMode(): boolean {
+ return process.env.VITE_REPORT === "true";
+}
+
+// Read all environment variable configuration files to process.env
+export function wrapperEnv(envConf: Recordable): ViteEnv {
+ const ret: any = {};
+
+ for (const envName of Object.keys(envConf)) {
+ let realName = envConf[envName].replace(/\\n/g, "\n");
+ realName = realName === "true" ? true : realName === "false" ? false : realName;
+
+ if (envName === "VITE_PORT") {
+ realName = Number(realName);
+ }
+ if (envName === "VITE_PROXY") {
+ try {
+ realName = JSON.parse(realName);
+ } catch (error) {}
+ }
+ ret[envName] = realName;
+ process.env[envName] = realName;
+ }
+ return ret;
+}
+
+/**
+ * Get the environment variables starting with the specified prefix
+ * @param match prefix
+ * @param confFiles ext
+ */
+export function getEnvConfig(match = "VITE_GLOB_", confFiles = [".env", ".env.production"]) {
+ let envConfig = {};
+ confFiles.forEach(item => {
+ try {
+ const env = dotenv.parse(fs.readFileSync(path.resolve(process.cwd(), item)));
+ envConfig = { ...envConfig, ...env };
+ } catch (error) {
+ console.error(`Error in parsing ${item}`, error);
+ }
+ });
+
+ Object.keys(envConfig).forEach(key => {
+ const reg = new RegExp(`^(${match})`);
+ if (!reg.test(key)) {
+ Reflect.deleteProperty(envConfig, key);
+ }
+ });
+ return envConfig;
+}
+
+/**
+ * Get user root directory
+ * @param dir file path
+ */
+export function getRootPath(...dir: string[]) {
+ return path.resolve(process.cwd(), ...dir);
+}
diff --git a/src/utils/is/index.ts b/src/utils/is/index.ts
new file mode 100644
index 0000000..e74f502
--- /dev/null
+++ b/src/utils/is/index.ts
@@ -0,0 +1,118 @@
+const toString = Object.prototype.toString;
+
+/**
+ * @description: 判断值是否未某个类型
+ */
+export function is(val: unknown, type: string) {
+ return toString.call(val) === `[object ${type}]`;
+}
+
+/**
+ * @description: 是否为函数
+ */
+export function isFunction(val: unknown): val is T {
+ return is(val, "Function");
+}
+
+/**
+ * @description: 是否已定义
+ */
+export const isDef = (val?: T): val is T => {
+ return typeof val !== "undefined";
+};
+
+export const isUnDef = (val?: T): val is T => {
+ return !isDef(val);
+};
+/**
+ * @description: 是否为对象
+ */
+export const isObject = (val: any): val is Record => {
+ return val !== null && is(val, "Object");
+};
+
+/**
+ * @description: 是否为时间
+ */
+export function isDate(val: unknown): val is Date {
+ return is(val, "Date");
+}
+
+/**
+ * @description: 是否为数值
+ */
+export function isNumber(val: unknown): val is number {
+ return is(val, "Number");
+}
+
+/**
+ * @description: 是否为AsyncFunction
+ */
+export function isAsyncFunction(val: unknown): val is Promise {
+ return is(val, "AsyncFunction");
+}
+
+/**
+ * @description: 是否为promise
+ */
+export function isPromise(val: unknown): val is Promise {
+ return is(val, "Promise") && isObject(val) && isFunction(val.then) && isFunction(val.catch);
+}
+
+/**
+ * @description: 是否为字符串
+ */
+export function isString(val: unknown): val is string {
+ return is(val, "String");
+}
+
+/**
+ * @description: 是否为boolean类型
+ */
+export function isBoolean(val: unknown): val is boolean {
+ return is(val, "Boolean");
+}
+
+/**
+ * @description: 是否为数组
+ */
+export function isArray(val: any): val is Array {
+ return val && Array.isArray(val);
+}
+
+/**
+ * @description: 是否客户端
+ */
+export const isClient = () => {
+ return typeof window !== "undefined";
+};
+
+/**
+ * @description: 是否为浏览器
+ */
+export const isWindow = (val: any): val is Window => {
+ return typeof window !== "undefined" && is(val, "Window");
+};
+
+export const isElement = (val: unknown): val is Element => {
+ return isObject(val) && !!val.tagName;
+};
+
+export const isServer = typeof window === "undefined";
+
+// 是否为图片节点
+export function isImageDom(o: Element) {
+ return o && ["IMAGE", "IMG"].includes(o.tagName);
+}
+
+export function isNull(val: unknown): val is null {
+ return val === null;
+}
+
+export function isNullAndUnDef(val: unknown): val is null | undefined {
+ return isUnDef(val) && isNull(val);
+}
+
+export function isNullOrUnDef(val: unknown): val is null | undefined {
+ return isUnDef(val) || isNull(val);
+}
diff --git a/src/utils/mittBus.ts b/src/utils/mittBus.ts
new file mode 100644
index 0000000..1ab1228
--- /dev/null
+++ b/src/utils/mittBus.ts
@@ -0,0 +1,5 @@
+import mitt from "mitt";
+
+const mittBus = mitt();
+
+export default mittBus;
diff --git a/src/utils/serviceDict.ts b/src/utils/serviceDict.ts
new file mode 100644
index 0000000..eb11d2d
--- /dev/null
+++ b/src/utils/serviceDict.ts
@@ -0,0 +1,17 @@
+// * 系统全局字典
+
+/**
+ * @description:用户性别
+ */
+export const genderType = [
+ { label: "男", value: 1 },
+ { label: "女", value: 2 }
+];
+
+/**
+ * @description:用户状态
+ */
+export const userStatus = [
+ { label: "启用", value: 1 },
+ { label: "禁用", value: 0 }
+];
diff --git a/src/utils/svg.ts b/src/utils/svg.ts
new file mode 100644
index 0000000..6633dd0
--- /dev/null
+++ b/src/utils/svg.ts
@@ -0,0 +1,13 @@
+/**
+ * @description 自定义 loading svg
+ */
+export const loadingSvg = `
+
+`;
diff --git a/src/utils/theme/tool.ts b/src/utils/theme/tool.ts
new file mode 100644
index 0000000..d9a3697
--- /dev/null
+++ b/src/utils/theme/tool.ts
@@ -0,0 +1,59 @@
+import { ElMessage } from "element-plus";
+
+/**
+ * hex颜色转rgb颜色
+ * @param str 颜色值字符串
+ * @returns 返回处理后的颜色值
+ */
+export function hexToRgb(str: any) {
+ let hexs: any = "";
+ let reg = /^\#?[0-9A-Fa-f]{6}$/;
+ if (!reg.test(str)) return ElMessage.warning("输入错误的hex");
+ str = str.replace("#", "");
+ hexs = str.match(/../g);
+ for (let i = 0; i < 3; i++) hexs[i] = parseInt(hexs[i], 16);
+ return hexs;
+}
+
+/**
+ * rgb颜色转Hex颜色
+ * @param r 代表红色
+ * @param g 代表绿色
+ * @param b 代表蓝色
+ * @returns 返回处理后的颜色值
+ */
+export function rgbToHex(r: any, g: any, b: any) {
+ let reg = /^\d{1,3}$/;
+ if (!reg.test(r) || !reg.test(g) || !reg.test(b)) return ElMessage.warning("输入错误的rgb颜色值");
+ let hexs = [r.toString(16), g.toString(16), b.toString(16)];
+ for (let i = 0; i < 3; i++) if (hexs[i].length == 1) hexs[i] = `0${hexs[i]}`;
+ return `#${hexs.join("")}`;
+}
+
+/**
+ * 加深颜色值
+ * @param color 颜色值字符串
+ * @param level 加深的程度,限0-1之间
+ * @returns 返回处理后的颜色值
+ */
+export function getDarkColor(color: string, level: number) {
+ let reg = /^\#?[0-9A-Fa-f]{6}$/;
+ if (!reg.test(color)) return ElMessage.warning("输入错误的hex颜色值");
+ let rgb = hexToRgb(color);
+ for (let i = 0; i < 3; i++) rgb[i] = Math.round(20.5 * level + rgb[i] * (1 - level));
+ return rgbToHex(rgb[0], rgb[1], rgb[2]);
+}
+
+/**
+ * 变浅颜色值
+ * @param color 颜色值字符串
+ * @param level 加深的程度,限0-1之间
+ * @returns 返回处理后的颜色值
+ */
+export function getLightColor(color: string, level: number) {
+ let reg = /^\#?[0-9A-Fa-f]{6}$/;
+ if (!reg.test(color)) return ElMessage.warning("输入错误的hex颜色值");
+ let rgb = hexToRgb(color);
+ for (let i = 0; i < 3; i++) rgb[i] = Math.round(255 * level + rgb[i] * (1 - level));
+ return rgbToHex(rgb[0], rgb[1], rgb[2]);
+}
diff --git a/src/utils/util.ts b/src/utils/util.ts
new file mode 100644
index 0000000..d1e387d
--- /dev/null
+++ b/src/utils/util.ts
@@ -0,0 +1,310 @@
+import { isArray } from "@/utils/is";
+
+/**
+ * @description 获取localStorage
+ * @param {String} key Storage名称
+ * @return string
+ */
+export function localGet(key: string) {
+ const value = window.localStorage.getItem(key);
+ try {
+ return JSON.parse(window.localStorage.getItem(key) as string);
+ } catch (error) {
+ return value;
+ }
+}
+
+/**
+ * @description 存储localStorage
+ * @param {String} key Storage名称
+ * @param {Any} value Storage值
+ * @return void
+ */
+export function localSet(key: string, value: any) {
+ window.localStorage.setItem(key, JSON.stringify(value));
+}
+
+/**
+ * @description 清除localStorage
+ * @param {String} key Storage名称
+ * @return void
+ */
+export function localRemove(key: string) {
+ window.localStorage.removeItem(key);
+}
+
+/**
+ * @description 清除所有localStorage
+ * @return void
+ */
+export function localClear() {
+ window.localStorage.clear();
+}
+
+/**
+ * @description 判断数据类型
+ * @param {Any} val 需要判断类型的数据
+ * @return string
+ */
+export function isType(val: any) {
+ if (val === null) return "null";
+ if (typeof val !== "object") return typeof val;
+ else return Object.prototype.toString.call(val).slice(8, -1).toLocaleLowerCase();
+}
+
+/**
+ * @description 生成唯一 uuid
+ * @return string
+ */
+export function generateUUID() {
+ if (typeof crypto === "object") {
+ if (typeof crypto.randomUUID === "function") {
+ return crypto.randomUUID();
+ }
+ if (typeof crypto.getRandomValues === "function" && typeof Uint8Array === "function") {
+ const callback = (c: any) => {
+ const num = Number(c);
+ return (num ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (num / 4)))).toString(16);
+ };
+ return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, callback);
+ }
+ }
+ let timestamp = new Date().getTime();
+ let performanceNow = (typeof performance !== "undefined" && performance.now && performance.now() * 1000) || 0;
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, c => {
+ let random = Math.random() * 16;
+ if (timestamp > 0) {
+ random = (timestamp + random) % 16 | 0;
+ timestamp = Math.floor(timestamp / 16);
+ } else {
+ random = (performanceNow + random) % 16 | 0;
+ performanceNow = Math.floor(performanceNow / 16);
+ }
+ return (c === "x" ? random : (random & 0x3) | 0x8).toString(16);
+ });
+}
+
+/**
+ * 判断两个对象是否相同
+ * @param a 要比较的对象一
+ * @param b 要比较的对象二
+ * @returns 相同返回 true,反之则反
+ */
+export function isObjectValueEqual(a: { [key: string]: any }, b: { [key: string]: any }) {
+ if (!a || !b) return false;
+ let aProps = Object.getOwnPropertyNames(a);
+ let bProps = Object.getOwnPropertyNames(b);
+ if (aProps.length != bProps.length) return false;
+ for (let i = 0; i < aProps.length; i++) {
+ let propName = aProps[i];
+ let propA = a[propName];
+ let propB = b[propName];
+ if (!b.hasOwnProperty(propName)) return false;
+ if (propA instanceof Object) {
+ if (!isObjectValueEqual(propA, propB)) return false;
+ } else if (propA !== propB) {
+ return false;
+ }
+ }
+ return true;
+}
+
+/**
+ * @description 生成随机数
+ * @param {Number} min 最小值
+ * @param {Number} max 最大值
+ * @return number
+ */
+export function randomNum(min: number, max: number): number {
+ let num = Math.floor(Math.random() * (min - max) + max);
+ return num;
+}
+
+/**
+ * @description 获取当前时间对应的提示语
+ * @return string
+ */
+export function getTimeState() {
+ // 获取当前时间
+ let timeNow = new Date();
+ // 获取当前小时
+ let hours = timeNow.getHours();
+ // 判断当前时间段
+ if (hours >= 6 && hours <= 10) return `早上好 ⛅`;
+ if (hours >= 10 && hours <= 14) return `中午好 🌞`;
+ if (hours >= 14 && hours <= 18) return `下午好 🌞`;
+ if (hours >= 18 && hours <= 24) return `晚上好 🌛`;
+ if (hours >= 0 && hours <= 6) return `凌晨好 🌛`;
+}
+
+/**
+ * @description 获取浏览器默认语言
+ * @return string
+ */
+export function getBrowserLang() {
+ let browserLang = navigator.language ? navigator.language : navigator.browserLanguage;
+ let defaultBrowserLang = "";
+ if (browserLang.toLowerCase() === "cn" || browserLang.toLowerCase() === "zh" || browserLang.toLowerCase() === "zh-cn") {
+ defaultBrowserLang = "zh";
+ } else {
+ defaultBrowserLang = "en";
+ }
+ return defaultBrowserLang;
+}
+
+/**
+ * @description 递归查询当前路由所对应的路由
+ * @param {Array} menuList 所有菜单列表
+ * @param {String} path 当前访问地址
+ * @return array
+ */
+export function filterCurrentRoute(menuList: Menu.MenuOptions[], path: string) {
+ let result = {};
+ for (let item of menuList) {
+ if (item.path === path) return item;
+ if (item.children) {
+ const res = filterCurrentRoute(item.children, path);
+ if (Object.keys(res).length) result = res;
+ }
+ }
+ return result;
+}
+
+/**
+ * @description 扁平化数组对象(主要用来处理路由菜单)
+ * @param {Array} menuList 所有菜单列表
+ * @return array
+ */
+export function getFlatArr(menuList: Menu.MenuOptions[]) {
+ let newMenuList: Menu.MenuOptions[] = JSON.parse(JSON.stringify(menuList));
+ return newMenuList.reduce((pre: Menu.MenuOptions[], current: Menu.MenuOptions) => {
+ let flatArr = [...pre, current];
+ if (current.children) flatArr = [...flatArr, ...getFlatArr(current.children)];
+ return flatArr;
+ }, []);
+}
+
+/**
+ * @description 使用递归,过滤需要缓存的路由(暂时没有使用)
+ * @param {Array} menuList 所有菜单列表
+ * @param {Array} cacheArr 缓存的路由菜单 name ['**','**']
+ * @return array
+ * */
+export function getKeepAliveRouterName(menuList: Menu.MenuOptions[], keepAliveArr: string[] = []) {
+ menuList.forEach(item => {
+ item.meta.isKeepAlive && item.name && keepAliveArr.push(item.name);
+ item.children?.length && getKeepAliveRouterName(item.children, keepAliveArr);
+ });
+ return keepAliveArr;
+}
+
+/**
+ * @description 使用递归,过滤出需要渲染在左侧菜单的列表(剔除 isHide == true 的菜单)
+ * @param {Array} menuList 所有菜单列表
+ * @return array
+ * */
+export function getShowMenuList(menuList: Menu.MenuOptions[]) {
+ let newMenuList: Menu.MenuOptions[] = JSON.parse(JSON.stringify(menuList));
+ return newMenuList.filter(item => {
+ item.children?.length && (item.children = getShowMenuList(item.children));
+ return !item.meta?.isHide;
+ });
+}
+
+/**
+ * @description 使用递归处理路由菜单 path,生成一维数组(第一版本地路由鉴权会用到)
+ * @param {Array} menuList 所有菜单列表
+ * @param {Array} menuPathArr 菜单地址的一维数组 ['**','**']
+ * @return array
+ */
+export function getMenuListPath(menuList: Menu.MenuOptions[], menuPathArr: string[] = []) {
+ menuList.forEach((item: Menu.MenuOptions) => {
+ typeof item === "object" && item.path && menuPathArr.push(item.path);
+ item.children?.length && getMenuListPath(item.children, menuPathArr);
+ });
+ return menuPathArr;
+}
+
+/**
+ * @description 递归找出所有面包屑存储到 pinia/vuex 中
+ * @param {Array} menuList 所有菜单列表
+ * @param {Object} result 输出的结果
+ * @param {Array} parent 父级菜单
+ * @returns object
+ */
+export const getAllBreadcrumbList = (menuList: Menu.MenuOptions[], result: { [key: string]: any } = {}, parent = []) => {
+ for (const item of menuList) {
+ result[item.path] = [...parent, item];
+ if (item.children) getAllBreadcrumbList(item.children, result, result[item.path]);
+ }
+ return result;
+};
+
+/**
+ * @description 格式化表格单元格默认值(el-table-column)
+ * @param {Number} row 行
+ * @param {Number} col 列
+ * @param {String} callValue 当前单元格值
+ * @return string
+ * */
+export function defaultFormat(row: number, col: number, callValue: any) {
+ // 如果当前值为数组,使用 / 拼接(根据需求自定义)
+ if (isArray(callValue)) return callValue.length ? callValue.join(" / ") : "--";
+ return callValue ?? "--";
+}
+
+/**
+ * @description 处理无数据情况
+ * @param {String} callValue 需要处理的值
+ * @return string
+ * */
+export function formatValue(callValue: any) {
+ // 如果当前值为数组,使用 / 拼接(根据需求自定义)
+ if (isArray(callValue)) return callValue.length ? callValue.join(" / ") : "--";
+ return callValue ?? "--";
+}
+
+/**
+ * @description 处理 prop 为多级嵌套的情况(列如: prop:user.name)
+ * @param {Object} row 当前行数据
+ * @param {String} prop 当前 prop
+ * @return any
+ * */
+export function handleRowAccordingToProp(row: { [key: string]: any }, prop: string) {
+ if (!prop.includes(".")) return row[prop] ?? "--";
+ prop.split(".").forEach(item => (row = row[item] ?? "--"));
+ return row;
+}
+
+/**
+ * @description 处理 prop,当 prop 为多级嵌套时 ==> 返回最后一级 prop
+ * @param {String} prop 当前 prop
+ * @return string
+ * */
+export function handleProp(prop: string) {
+ const propArr = prop.split(".");
+ if (propArr.length == 1) return prop;
+ return propArr[propArr.length - 1];
+}
+
+/**
+ * @description 根据枚举列表查询当需要的数据(如果指定了 label 和 value 的 key值,会自动识别格式化)
+ * @param {String} callValue 当前单元格值
+ * @param {Array} enumData 字典列表
+ * @param {Array} fieldNames 指定 label && value 的 key 值
+ * @param {String} type 过滤类型(目前只有 tag)
+ * @return string
+ * */
+export function filterEnum(
+ callValue: any,
+ enumData: any[] | undefined,
+ fieldNames?: { label: string; value: string },
+ type?: string
+): string {
+ const value = fieldNames?.value ?? "value";
+ const label = fieldNames?.label ?? "label";
+ let filterData: { [key: string]: any } = {};
+ if (Array.isArray(enumData)) filterData = enumData.find((item: any) => item[value] === callValue);
+ if (type == "tag") return filterData?.tagType ? filterData.tagType : "";
+ return filterData ? filterData[label] : "--";
+}
diff --git a/src/views/home/index.scss b/src/views/home/index.scss
new file mode 100644
index 0000000..b081682
--- /dev/null
+++ b/src/views/home/index.scss
@@ -0,0 +1,11 @@
+.home {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 100%;
+ height: 100%;
+ .home-bg {
+ width: 70%;
+ margin-bottom: 20px;
+ }
+}
diff --git a/src/views/home/index.vue b/src/views/home/index.vue
new file mode 100644
index 0000000..bf043d3
--- /dev/null
+++ b/src/views/home/index.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/login/components/LoginForm.vue b/src/views/login/components/LoginForm.vue
new file mode 100644
index 0000000..5aff83e
--- /dev/null
+++ b/src/views/login/components/LoginForm.vue
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 重置
+
+ 登录
+
+
+
+
+
+
+
diff --git a/src/views/login/index.scss b/src/views/login/index.scss
new file mode 100644
index 0000000..c11b0ed
--- /dev/null
+++ b/src/views/login/index.scss
@@ -0,0 +1,71 @@
+.login-container {
+ position: relative;
+ min-width: 550px;
+ height: 100%;
+ min-height: 500px;
+ background-color: #eeeeee;
+ background-image: url("@/assets/images/login_bg.svg");
+ background-position: 50%;
+ background-size: 100% 100%;
+ background-size: cover;
+ .dark {
+ position: absolute;
+ top: 4.5%;
+ right: 3.2%;
+ }
+ .login-box {
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-around;
+ width: 96%;
+ height: 94%;
+ padding: 0 50px;
+ background-color: hsl(0deg 0% 100% / 80%);
+ border-radius: 10px;
+ .login-left {
+ width: 800px;
+ img {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ .login-form {
+ width: 420px;
+ padding: 50px 40px 45px;
+ border-radius: 10px;
+ box-shadow: 2px 3px 7px rgb(0 0 0 / 20%);
+ .login-logo {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 45px;
+ .login-icon {
+ width: 60px;
+ height: 52px;
+ }
+ .logo-text {
+ padding: 0 0 0 25px;
+ margin: 0;
+ font-size: 42px;
+ font-weight: bold;
+ color: #34495e;
+ white-space: nowrap;
+ }
+ }
+ .el-form-item {
+ margin-bottom: 40px;
+ }
+ .login-btn {
+ display: flex;
+ justify-content: space-between;
+ width: 100%;
+ margin-top: 40px;
+ white-space: nowrap;
+ .el-button {
+ width: 185px;
+ }
+ }
+ }
+ }
+}
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
new file mode 100644
index 0000000..64454f3
--- /dev/null
+++ b/src/views/login/index.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/proTable/complexProTable/index.vue b/src/views/proTable/complexProTable/index.vue
new file mode 100644
index 0000000..969574c
--- /dev/null
+++ b/src/views/proTable/complexProTable/index.vue
@@ -0,0 +1,187 @@
+
+
+
+
+
+ 全选 / 全不选
+ 选中第五行
+
+ 批量删除用户
+
+
+
+
+ {{ scope.row }}
+
+
+
+ 重置密码
+ 删除
+
+
+ 我是插入在表格最后的内容。若表格有合计行,该内容会位于合计行之上。
+
+
+
+
+
+
+
+
diff --git a/src/views/proTable/components/UserDrawer.vue b/src/views/proTable/components/UserDrawer.vue
new file mode 100644
index 0000000..abae965
--- /dev/null
+++ b/src/views/proTable/components/UserDrawer.vue
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+ 请上传头像
+
+ 头像大小不能超过 3M
+
+
+
+
+
+
+ 请上传照片
+
+ 照片大小不能超过 5M
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确定
+
+
+
+
+
diff --git a/src/views/proTable/document/index.vue b/src/views/proTable/document/index.vue
new file mode 100644
index 0000000..34168b1
--- /dev/null
+++ b/src/views/proTable/document/index.vue
@@ -0,0 +1,10 @@
+
+
+
+
+
diff --git a/src/views/proTable/useProTable/detail.vue b/src/views/proTable/useProTable/detail.vue
new file mode 100644
index 0000000..681861b
--- /dev/null
+++ b/src/views/proTable/useProTable/detail.vue
@@ -0,0 +1,12 @@
+
+
+ 我是 ProTable 详情页,属于 ProTable 下面的子集 🍓🍇🍈🍉
+ params:{{ route.params }}
+ query:{{ route.query }}
+
+
+
+
diff --git a/src/views/proTable/useProTable/index.vue b/src/views/proTable/useProTable/index.vue
new file mode 100644
index 0000000..748154c
--- /dev/null
+++ b/src/views/proTable/useProTable/index.vue
@@ -0,0 +1,250 @@
+
+
+
+
+
+ 新增用户
+ 批量添加用户
+ 导出用户数据
+ To 子集详情页面
+
+ 批量删除用户
+
+
+
+
+ {{ scope.row }}
+
+
+
+
+ {{ scope.row.label }}
+
+
+
+
+
+ {{ scope.row.createTime }}
+
+
+
+
+ 查看
+ 编辑
+ 重置密码
+ 删除
+
+
+
+
+
+
+
+
diff --git a/src/views/proTable/useSelectFilter/index.vue b/src/views/proTable/useSelectFilter/index.vue
new file mode 100644
index 0000000..1b0ec77
--- /dev/null
+++ b/src/views/proTable/useSelectFilter/index.vue
@@ -0,0 +1,193 @@
+
+
+
+
+
+
+
+
+
+
+ 新增用户
+ 批量添加用户
+ 导出用户数据
+
+
+
+ 查看
+ 编辑
+ 重置密码
+ 删除
+
+
+
+
+
+
+
+
diff --git a/src/views/proTable/useTreeFilter/detail.vue b/src/views/proTable/useTreeFilter/detail.vue
new file mode 100644
index 0000000..c117c65
--- /dev/null
+++ b/src/views/proTable/useTreeFilter/detail.vue
@@ -0,0 +1,12 @@
+
+
+ 我是 TreeFilter 详情页,和 TreeFilter 是同一级路由 🍓🍇🍈🍉
+ params:{{ route.params }}
+ query:{{ route.query }}
+
+
+
+
diff --git a/src/views/proTable/useTreeFilter/index.vue b/src/views/proTable/useTreeFilter/index.vue
new file mode 100644
index 0000000..7c75482
--- /dev/null
+++ b/src/views/proTable/useTreeFilter/index.vue
@@ -0,0 +1,159 @@
+
+
+
+
+
+
+
+ 新增用户
+ 批量添加用户
+ 导出用户数据
+ To 平级详情页面
+
+
+
+ 查看
+ 编辑
+ 重置密码
+ 删除
+
+
+
+
+
+
+
+
diff --git a/tsconfig.node.json b/tsconfig.node.json
new file mode 100644
index 0000000..f1c365a
--- /dev/null
+++ b/tsconfig.node.json
@@ -0,0 +1,38 @@
+{
+ "compilerOptions": {
+ "target": "esnext",
+ "useDefineForClassFields": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ // element 类型提示
+ // "types": ["element-plus/global"],
+
+ /* Strict Type-Checking Options */
+ // "strict": true /* Enable all strict type-checking options. */,
+ // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
+ // "strictNullChecks": true, /* Enable strict null checks. */
+ // "strictFunctionTypes": true, /* Enable strict checking of function types. */
+ // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
+ // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
+ // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
+ // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
+
+ "jsx": "preserve",
+ "sourceMap": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "esModuleInterop": true,
+ // 跳过第三方库检查,解决打包失败
+ "skipLibCheck": true,
+ "lib": ["esnext", "dom"],
+ // 解析非相对模块名的基准目录
+ "baseUrl": "./",
+ // 模块名到基于 baseUrl 的路径映射的列表。
+ "paths": {
+ "@": ["src"],
+ "@/*": ["src/*"]
+ }
+ },
+ "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue", "vite.config.ts"],
+ "exclude": ["node_modules", "dist", "**/*.js"]
+}
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 0000000..149399f
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,136 @@
+import { defineConfig, loadEnv, ConfigEnv, UserConfig } from "vite";
+import { createHtmlPlugin } from "vite-plugin-html";
+import vue from "@vitejs/plugin-vue";
+import { resolve } from "path";
+import { wrapperEnv } from "./src/utils/getEnv";
+import { visualizer } from "rollup-plugin-visualizer";
+import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
+import viteCompression from "vite-plugin-compression";
+import VueSetupExtend from "vite-plugin-vue-setup-extend";
+// import eslintPlugin from "vite-plugin-eslint";
+import vueJsx from "@vitejs/plugin-vue-jsx";
+// import importToCDN from "vite-plugin-cdn-import";
+import { Plugin as importToCDN }from "vite-plugin-cdn-import";
+import AutoImport from 'unplugin-auto-import/vite'
+import Components from 'unplugin-vue-components/vite'
+import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
+
+// @see: https://vitejs.dev/config/
+export default defineConfig(({ mode }: ConfigEnv): UserConfig => {
+ const env = loadEnv(mode, process.cwd());
+ const viteEnv = wrapperEnv(env);
+
+ return {
+ base: "./",
+ resolve: {
+ alias: {
+ "@": resolve(__dirname, "./src"),
+ "vue-i18n": "vue-i18n/dist/vue-i18n.cjs.js"
+ }
+ },
+ css: {
+ preprocessorOptions: {
+ scss: {
+ additionalData: `@import "@/styles/var.scss";`
+ }
+ }
+ },
+ server: {
+ // 服务器主机名,如果允许外部访问,可设置为 "0.0.0.0"
+ host: "0.0.0.0",
+ port: viteEnv.VITE_PORT,
+ open: viteEnv.VITE_OPEN,
+ cors: true,
+ // 跨域代理配置
+ proxy: {
+ "/api": {
+ target: "https://mock.mengxuegu.com/mock/629d727e6163854a32e8307e", // easymock
+ // target: "https://www.fastmock.site/mock/f81e8333c1a9276214bcdbc170d9e0a0", // fastmock
+ changeOrigin: true,
+ rewrite: path => path.replace(/^\/api/, "")
+ }
+ }
+ },
+ plugins: [
+ vue(),
+ createHtmlPlugin({
+ inject: {
+ data: {
+ title: viteEnv.VITE_GLOB_APP_TITLE
+ }
+ }
+ }),
+ // * 使用 svg 图标
+ createSvgIconsPlugin({
+ iconDirs: [resolve(process.cwd(), "src/assets/icons")],
+ symbolId: "icon-[dir]-[name]"
+ }),
+ // * EsLint 报错信息显示在浏览器界面上
+ // eslintPlugin(),
+ // * vite 可以使用 jsx/tsx 语法
+ vueJsx(),
+ // * name 可以写在 script 标签上
+ VueSetupExtend(),
+ // * 是否生成包预览(分析依赖包大小,方便做优化处理)
+ viteEnv.VITE_REPORT && visualizer(),
+ // * gzip compress
+ viteEnv.VITE_BUILD_GZIP &&
+ viteCompression({
+ verbose: true,
+ disable: false,
+ threshold: 10240,
+ algorithm: "gzip",
+ ext: ".gz"
+ }),
+ // * cdn 引入(vue按需引入会导致依赖vue的插件出现问题(列如:pinia/vuex))
+ importToCDN({
+ modules: [
+ // {
+ // name: "vue",
+ // var: "Vue",
+ // path: "https://unpkg.com/vue@next"
+ // },
+ // 使用cdn引入element-plus时,开发环境还是需要在main.js中引入element-plus,可以不用引入css
+ // {
+ // name: "element-plus",
+ // var: "ElementPlus",
+ // path: "https://unpkg.com/element-plus",
+ // css: "https://unpkg.com/element-plus/dist/index.css"
+ // }
+ ]
+ }),
+ // * demand import element
+ AutoImport({
+ resolvers: [ElementPlusResolver()]
+ }),
+ Components({
+ resolvers: [ElementPlusResolver()]
+ })
+ ],
+ // * 打包去除 console.log && debugger
+ esbuild: {
+ pure: viteEnv.VITE_DROP_CONSOLE ? ["console.log", "debugger"] : []
+ },
+ build: {
+ outDir: "dist",
+ minify: "esbuild",
+ // esbuild 打包更快,但是不能去除 console.log,terser打包慢,但能去除 console.log
+ // minify: "terser",
+ // terserOptions: {
+ // compress: {
+ // drop_console: viteEnv.VITE_DROP_CONSOLE,
+ // drop_debugger: true
+ // }
+ // },
+ chunkSizeWarningLimit: 1500,
+ rollupOptions: {
+ output: {
+ // Static resource classification and packaging
+ chunkFileNames: "assets/js/[name]-[hash].js",
+ entryFileNames: "assets/js/[name]-[hash].js",
+ assetFileNames: "assets/[ext]/[name]-[hash].[ext]"
+ }
+ }
+ }
+ };
+});
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..41b13a8
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,3681 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@ampproject/remapping@^2.1.0":
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d"
+ integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.1.0"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
+"@antfu/utils@^0.7.2":
+ version "0.7.2"
+ resolved "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.2.tgz#3bb6f37a6b188056fe9e2f363b6aa735ed65d7ca"
+ integrity sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g==
+
+"@babel/code-frame@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
+ integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==
+ dependencies:
+ "@babel/highlight" "^7.18.6"
+
+"@babel/compat-data@^7.20.5":
+ version "7.20.10"
+ resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.20.10.tgz#9d92fa81b87542fff50e848ed585b4212c1d34ec"
+ integrity sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==
+
+"@babel/core@^7.17.9":
+ version "7.20.12"
+ resolved "https://registry.npmmirror.com/@babel/core/-/core-7.20.12.tgz#7930db57443c6714ad216953d1356dac0eb8496d"
+ integrity sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==
+ dependencies:
+ "@ampproject/remapping" "^2.1.0"
+ "@babel/code-frame" "^7.18.6"
+ "@babel/generator" "^7.20.7"
+ "@babel/helper-compilation-targets" "^7.20.7"
+ "@babel/helper-module-transforms" "^7.20.11"
+ "@babel/helpers" "^7.20.7"
+ "@babel/parser" "^7.20.7"
+ "@babel/template" "^7.20.7"
+ "@babel/traverse" "^7.20.12"
+ "@babel/types" "^7.20.7"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.2"
+ semver "^6.3.0"
+
+"@babel/generator@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.npmmirror.com/@babel/generator/-/generator-7.20.7.tgz#f8ef57c8242665c5929fe2e8d82ba75460187b4a"
+ integrity sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==
+ dependencies:
+ "@babel/types" "^7.20.7"
+ "@jridgewell/gen-mapping" "^0.3.2"
+ jsesc "^2.5.1"
+
+"@babel/helper-annotate-as-pure@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb"
+ integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==
+ dependencies:
+ "@babel/types" "^7.18.6"
+
+"@babel/helper-compilation-targets@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb"
+ integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==
+ dependencies:
+ "@babel/compat-data" "^7.20.5"
+ "@babel/helper-validator-option" "^7.18.6"
+ browserslist "^4.21.3"
+ lru-cache "^5.1.1"
+ semver "^6.3.0"
+
+"@babel/helper-create-class-features-plugin@^7.20.7":
+ version "7.20.12"
+ resolved "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz#4349b928e79be05ed2d1643b20b99bb87c503819"
+ integrity sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.18.6"
+ "@babel/helper-environment-visitor" "^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.20.7"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0"
+ "@babel/helper-split-export-declaration" "^7.18.6"
+
+"@babel/helper-environment-visitor@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be"
+ integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==
+
+"@babel/helper-function-name@^7.19.0":
+ version "7.19.0"
+ resolved "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c"
+ integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==
+ dependencies:
+ "@babel/template" "^7.18.10"
+ "@babel/types" "^7.19.0"
+
+"@babel/helper-hoist-variables@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678"
+ integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==
+ dependencies:
+ "@babel/types" "^7.18.6"
+
+"@babel/helper-member-expression-to-functions@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz#a6f26e919582275a93c3aa6594756d71b0bb7f05"
+ integrity sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==
+ dependencies:
+ "@babel/types" "^7.20.7"
+
+"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e"
+ integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==
+ dependencies:
+ "@babel/types" "^7.18.6"
+
+"@babel/helper-module-transforms@^7.20.11":
+ version "7.20.11"
+ resolved "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz#df4c7af713c557938c50ea3ad0117a7944b2f1b0"
+ integrity sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-module-imports" "^7.18.6"
+ "@babel/helper-simple-access" "^7.20.2"
+ "@babel/helper-split-export-declaration" "^7.18.6"
+ "@babel/helper-validator-identifier" "^7.19.1"
+ "@babel/template" "^7.20.7"
+ "@babel/traverse" "^7.20.10"
+ "@babel/types" "^7.20.7"
+
+"@babel/helper-optimise-call-expression@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe"
+ integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==
+ dependencies:
+ "@babel/types" "^7.18.6"
+
+"@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2":
+ version "7.20.2"
+ resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629"
+ integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==
+
+"@babel/helper-replace-supers@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331"
+ integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-member-expression-to-functions" "^7.20.7"
+ "@babel/helper-optimise-call-expression" "^7.18.6"
+ "@babel/template" "^7.20.7"
+ "@babel/traverse" "^7.20.7"
+ "@babel/types" "^7.20.7"
+
+"@babel/helper-simple-access@^7.20.2":
+ version "7.20.2"
+ resolved "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9"
+ integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==
+ dependencies:
+ "@babel/types" "^7.20.2"
+
+"@babel/helper-skip-transparent-expression-wrappers@^7.20.0":
+ version "7.20.0"
+ resolved "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684"
+ integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==
+ dependencies:
+ "@babel/types" "^7.20.0"
+
+"@babel/helper-split-export-declaration@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075"
+ integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==
+ dependencies:
+ "@babel/types" "^7.18.6"
+
+"@babel/helper-string-parser@^7.19.4":
+ version "7.19.4"
+ resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63"
+ integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==
+
+"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1":
+ version "7.19.1"
+ resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
+ integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
+
+"@babel/helper-validator-option@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8"
+ integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==
+
+"@babel/helpers@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.20.7.tgz#04502ff0feecc9f20ecfaad120a18f011a8e6dce"
+ integrity sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==
+ dependencies:
+ "@babel/template" "^7.20.7"
+ "@babel/traverse" "^7.20.7"
+ "@babel/types" "^7.20.7"
+
+"@babel/highlight@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
+ integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.18.6"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.16.4", "@babel/parser@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b"
+ integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==
+
+"@babel/plugin-syntax-import-meta@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51"
+ integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-jsx@^7.0.0":
+ version "7.18.6"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0"
+ integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-syntax-typescript@^7.20.0":
+ version "7.20.0"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7"
+ integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.19.0"
+
+"@babel/plugin-transform-typescript@^7.16.8":
+ version "7.20.7"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.7.tgz#673f49499cd810ae32a1ea5f3f8fab370987e055"
+ integrity sha512-m3wVKEvf6SoszD8pu4NZz3PvfKRCMgk6D6d0Qi9hNnlM5M6CFS92EgF4EiHVLKbU0r/r7ty1hg7NPZwE7WRbYw==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.20.7"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/plugin-syntax-typescript" "^7.20.0"
+
+"@babel/runtime@^7.12.0":
+ version "7.20.7"
+ resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.20.7.tgz#fcb41a5a70550e04a7b708037c7c32f7f356d8fd"
+ integrity sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==
+ dependencies:
+ regenerator-runtime "^0.13.11"
+
+"@babel/template@^7.0.0", "@babel/template@^7.18.10", "@babel/template@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.npmmirror.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8"
+ integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==
+ dependencies:
+ "@babel/code-frame" "^7.18.6"
+ "@babel/parser" "^7.20.7"
+ "@babel/types" "^7.20.7"
+
+"@babel/traverse@^7.0.0", "@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.7":
+ version "7.20.12"
+ resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.20.12.tgz#7f0f787b3a67ca4475adef1f56cb94f6abd4a4b5"
+ integrity sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==
+ dependencies:
+ "@babel/code-frame" "^7.18.6"
+ "@babel/generator" "^7.20.7"
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-function-name" "^7.19.0"
+ "@babel/helper-hoist-variables" "^7.18.6"
+ "@babel/helper-split-export-declaration" "^7.18.6"
+ "@babel/parser" "^7.20.7"
+ "@babel/types" "^7.20.7"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
+"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.npmmirror.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f"
+ integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==
+ dependencies:
+ "@babel/helper-string-parser" "^7.19.4"
+ "@babel/helper-validator-identifier" "^7.19.1"
+ to-fast-properties "^2.0.0"
+
+"@ctrl/tinycolor@^3.4.1":
+ version "3.5.0"
+ resolved "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.5.0.tgz#6e52b3d1c38d13130101771821e09cdd414a16bc"
+ integrity sha512-tlJpwF40DEQcfR/QF+wNMVyGMaO9FQp6Z1Wahj4Gk3CJQYHwA2xVG7iKDFdW6zuxZY9XWOpGcfNCTsX4McOsOg==
+
+"@element-plus/icons-vue@^2.0.10", "@element-plus/icons-vue@^2.0.6":
+ version "2.0.10"
+ resolved "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.0.10.tgz#60808d613c3dbdad025577022be8a972739ade21"
+ integrity sha512-ygEZ1mwPjcPo/OulhzLE7mtDrQBWI8vZzEWSNB2W/RNCRjoQGwbaK4N8lV4rid7Ts4qvySU3njMN7YCiSlSaTQ==
+
+"@esbuild/android-arm64@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.16.16.tgz#833184b8a0a96f9c85105c53d0a67e6d3c5c3f07"
+ integrity sha512-hFHVAzUKp9Tf8psGq+bDVv+6hTy1bAOoV/jJMUWwhUnIHsh6WbFMhw0ZTkqDuh7TdpffFoHOiIOIxmHc7oYRBQ==
+
+"@esbuild/android-arm@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.16.16.tgz#23761b2fd1dfa4806161dbfc9e0824f04061cb95"
+ integrity sha512-BUuWMlt4WSXod1HSl7aGK8fJOsi+Tab/M0IDK1V1/GstzoOpqc/v3DqmN8MkuapPKQ9Br1WtLAN4uEgWR8x64A==
+
+"@esbuild/android-x64@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.16.16.tgz#ffa09f04c0ffea5b594ab7655fc9ca1220365e9b"
+ integrity sha512-9WhxJpeb6XumlfivldxqmkJepEcELekmSw3NkGrs+Edq6sS5KRxtUBQuKYDD7KqP59dDkxVbaoPIQFKWQG0KLg==
+
+"@esbuild/darwin-arm64@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.16.tgz#62ed2b4bfab594b9e5e708580361f1d059b53b26"
+ integrity sha512-8Z+wld+vr/prHPi2O0X7o1zQOfMbXWGAw9hT0jEyU/l/Yrg+0Z3FO9pjPho72dVkZs4ewZk0bDOFLdZHm8jEfw==
+
+"@esbuild/darwin-x64@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.16.16.tgz#e9756d34cd9b3737a5354e89ca0fdca32d8df64c"
+ integrity sha512-CYkxVvkZzGCqFrt7EgjFxQKhlUPyDkuR9P0Y5wEcmJqVI8ncerOIY5Kej52MhZyzOBXkYrJgZeVZC9xXXoEg9A==
+
+"@esbuild/freebsd-arm64@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.16.tgz#db7bce444d372e5a213a3f359c42aee3acc0dd45"
+ integrity sha512-fxrw4BYqQ39z/3Ja9xj/a1gMsVq0xEjhSyI4a9MjfvDDD8fUV8IYliac96i7tzZc3+VytyXX+XNsnpEk5sw5Wg==
+
+"@esbuild/freebsd-x64@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.16.tgz#02e8a81b7e56040b5eb883896de445a6cd3501f0"
+ integrity sha512-8p3v1D+du2jiDvSoNVimHhj7leSfST9YlKsAEO7etBfuqjaBMndo0fmjNLp0JCMld+XIx9L80tooOkyUv1a1PQ==
+
+"@esbuild/linux-arm64@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.16.16.tgz#ea8c3df172644fa6437f0083c2a38b50f89e5b98"
+ integrity sha512-N3u6BBbCVY3xeP2D8Db7QY8I+nZ+2AgOopUIqk+5yCoLnsWkcVxD2ay5E9iIdvApFi1Vg1lZiiwaVp8bOpAc4A==
+
+"@esbuild/linux-arm@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.16.16.tgz#c1c2e97e67bb7247e6f60e2644de057bfedb8cbb"
+ integrity sha512-bYaocE1/PTMRmkgSckZ0D0Xn2nox8v2qlk+MVVqm+VECNKDdZvghVZtH41dNtBbwADSvA6qkCHGYeWm9LrNCBw==
+
+"@esbuild/linux-ia32@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.16.16.tgz#9a0b0e926926f891a3e7f7c50bb38e3db49c2c9a"
+ integrity sha512-dxjqLKUW8GqGemoRT9v8IgHk+T4tRm1rn1gUcArsp26W9EkK/27VSjBVUXhEG5NInHZ92JaQ3SSMdTwv/r9a2A==
+
+"@esbuild/linux-loong64@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.16.16.tgz#c5a50ff5981d457ed45f42c3f06a60086759c79b"
+ integrity sha512-MdUFggHjRiCCwNE9+1AibewoNq6wf94GLB9Q9aXwl+a75UlRmbRK3h6WJyrSGA6ZstDJgaD2wiTSP7tQNUYxwA==
+
+"@esbuild/linux-mips64el@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.16.tgz#e85b7e3c25000be2ae373e5208e55e282a9763e0"
+ integrity sha512-CO3YmO7jYMlGqGoeFeKzdwx/bx8Vtq/SZaMAi+ZLDUnDUdfC7GmGwXzIwDJ70Sg+P9pAemjJyJ1icKJ9R3q/Fg==
+
+"@esbuild/linux-ppc64@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.16.tgz#24a0013bf727830df44fece571172ebe31b5c5e6"
+ integrity sha512-DSl5Czh5hCy/7azX0Wl9IdzPHX2H8clC6G87tBnZnzUpNgRxPFhfmArbaHoAysu4JfqCqbB/33u/GL9dUgCBAw==
+
+"@esbuild/linux-riscv64@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.16.tgz#b080998d8d0480e8235f1384c585ae505e98a19d"
+ integrity sha512-sSVVMEXsqf1fQu0j7kkhXMViroixU5XoaJXl1u/u+jbXvvhhCt9YvA/B6VM3aM/77HuRQ94neS5bcisijGnKFQ==
+
+"@esbuild/linux-s390x@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.16.16.tgz#5042de05b9b653dfd134f05e1b37b61704c14c42"
+ integrity sha512-jRqBCre9gZGoCdCN/UWCCMwCMsOg65IpY9Pyj56mKCF5zXy9d60kkNRdDN6YXGjr3rzcC4DXnS/kQVCGcC4yPQ==
+
+"@esbuild/linux-x64@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.16.16.tgz#b7c0750f2276c9dcf41f0f2229adca46ef22f698"
+ integrity sha512-G1+09TopOzo59/55lk5Q0UokghYLyHTKKzD5lXsAOOlGDbieGEFJpJBr3BLDbf7cz89KX04sBeExAR/pL/26sA==
+
+"@esbuild/netbsd-x64@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.16.tgz#e2a0ee181fbbe834174d26e24ce1b258232bb3eb"
+ integrity sha512-xwjGJB5wwDEujLaJIrSMRqWkbigALpBNcsF9SqszoNKc+wY4kPTdKrSxiY5ik3IatojePP+WV108MvF6q6np4w==
+
+"@esbuild/openbsd-x64@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.16.tgz#87a84c1932e00f52ab3380c31facf0e48086ffb9"
+ integrity sha512-yeERkoxG2nR2oxO5n+Ms7MsCeNk23zrby2GXCqnfCpPp7KNc0vxaaacIxb21wPMfXXRhGBrNP4YLIupUBrWdlg==
+
+"@esbuild/sunos-x64@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.16.16.tgz#996bcd2603cd345733c3aa5f52bfd5b8fa7d1d36"
+ integrity sha512-nHfbEym0IObXPhtX6Va3H5GaKBty2kdhlAhKmyCj9u255ktAj0b1YACUs9j5H88NRn9cJCthD1Ik/k9wn8YKVg==
+
+"@esbuild/win32-arm64@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.16.16.tgz#404a9411d12533d0f2ce0a85df6ddb32e851ef04"
+ integrity sha512-pdD+M1ZOFy4hE15ZyPX09fd5g4DqbbL1wXGY90YmleVS6Y5YlraW4BvHjim/X/4yuCpTsAFvsT4Nca2lbyDH/A==
+
+"@esbuild/win32-ia32@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.16.16.tgz#bb5655a48f5f87fee870061883411f5149bc5e44"
+ integrity sha512-IPEMfU9p0c3Vb8PqxaPX6BM9rYwlTZGYOf9u+kMdhoILZkVKEjq6PKZO0lB+isojWwAnAqh4ZxshD96njTXajg==
+
+"@esbuild/win32-x64@0.16.16":
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.16.16.tgz#ee22fed0b2e0c00ce895cdfae9d32ef069a12e04"
+ integrity sha512-1YYpoJ39WV/2bnShPwgdzJklc+XS0bysN6Tpnt1cWPdeoKOG4RMEY1g7i534QxXX/rPvNx/NLJQTTCeORYzipg==
+
+"@floating-ui/core@^1.0.5":
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/@floating-ui/core/-/core-1.1.0.tgz#0a1dee4bbce87ff71602625d33f711cafd8afc08"
+ integrity sha512-zbsLwtnHo84w1Kc8rScAo5GMk1GdecSlrflIbfnEBJwvTSj1SL6kkOYV+nHraMCPEy+RNZZUaZyL8JosDGCtGQ==
+
+"@floating-ui/dom@^1.0.1":
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.1.0.tgz#29fea1344fdef15b6ba270a733d20b7134fee5c2"
+ integrity sha512-TSogMPVxbRe77QCj1dt8NmRiJasPvuc+eT5jnJ6YpLqgOD2zXc5UA3S1qwybN+GVCDNdKfpKy1oj8RpzLJvh6A==
+ dependencies:
+ "@floating-ui/core" "^1.0.5"
+
+"@intlify/core-base@9.2.2":
+ version "9.2.2"
+ resolved "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.2.2.tgz#5353369b05cc9fe35cab95fe20afeb8a4481f939"
+ integrity sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==
+ dependencies:
+ "@intlify/devtools-if" "9.2.2"
+ "@intlify/message-compiler" "9.2.2"
+ "@intlify/shared" "9.2.2"
+ "@intlify/vue-devtools" "9.2.2"
+
+"@intlify/devtools-if@9.2.2":
+ version "9.2.2"
+ resolved "https://registry.npmmirror.com/@intlify/devtools-if/-/devtools-if-9.2.2.tgz#b13d9ac4b4e2fe6d2e7daa556517a8061fe8bd39"
+ integrity sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==
+ dependencies:
+ "@intlify/shared" "9.2.2"
+
+"@intlify/message-compiler@9.2.2":
+ version "9.2.2"
+ resolved "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.2.2.tgz#e42ab6939b8ae5b3d21faf6a44045667a18bba1c"
+ integrity sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==
+ dependencies:
+ "@intlify/shared" "9.2.2"
+ source-map "0.6.1"
+
+"@intlify/shared@9.2.2":
+ version "9.2.2"
+ resolved "https://registry.npmmirror.com/@intlify/shared/-/shared-9.2.2.tgz#5011be9ca2b4ab86f8660739286e2707f9abb4a5"
+ integrity sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==
+
+"@intlify/vue-devtools@9.2.2":
+ version "9.2.2"
+ resolved "https://registry.npmmirror.com/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz#b95701556daf7ebb3a2d45aa3ae9e6415aed8317"
+ integrity sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==
+ dependencies:
+ "@intlify/core-base" "9.2.2"
+ "@intlify/shared" "9.2.2"
+
+"@jridgewell/gen-mapping@^0.1.0":
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996"
+ integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==
+ dependencies:
+ "@jridgewell/set-array" "^1.0.0"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+
+"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
+ version "0.3.2"
+ resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
+ integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
+ dependencies:
+ "@jridgewell/set-array" "^1.0.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
+"@jridgewell/resolve-uri@3.1.0":
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
+ integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
+
+"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1":
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
+ integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
+
+"@jridgewell/source-map@^0.3.2":
+ version "0.3.2"
+ resolved "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb"
+ integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.0"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
+"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13":
+ version "1.4.14"
+ resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
+ integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
+
+"@jridgewell/trace-mapping@^0.3.9":
+ version "0.3.17"
+ resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985"
+ integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==
+ dependencies:
+ "@jridgewell/resolve-uri" "3.1.0"
+ "@jridgewell/sourcemap-codec" "1.4.14"
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.8"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@popperjs/core@npm:@sxzz/popperjs-es@^2.11.7":
+ version "2.11.7"
+ resolved "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz#a7f69e3665d3da9b115f9e71671dae1b97e13671"
+ integrity sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==
+
+"@rollup/pluginutils@^4.0.0", "@rollup/pluginutils@^4.2.0":
+ version "4.2.1"
+ resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d"
+ integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==
+ dependencies:
+ estree-walker "^2.0.1"
+ picomatch "^2.2.2"
+
+"@rollup/pluginutils@^5.0.2":
+ version "5.0.2"
+ resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33"
+ integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==
+ dependencies:
+ "@types/estree" "^1.0.0"
+ estree-walker "^2.0.2"
+ picomatch "^2.3.1"
+
+"@transloadit/prettier-bytes@0.0.7":
+ version "0.0.7"
+ resolved "https://registry.npmmirror.com/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz#cdb5399f445fdd606ed833872fa0cabdbc51686b"
+ integrity sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==
+
+"@trysound/sax@0.2.0":
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
+ integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
+
+"@types/estree@*", "@types/estree@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2"
+ integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==
+
+"@types/event-emitter@^0.3.3":
+ version "0.3.3"
+ resolved "https://registry.npmmirror.com/@types/event-emitter/-/event-emitter-0.3.3.tgz#727032a9fc67565f96bbd78b2e2809275c97d7e7"
+ integrity sha512-UfnOK1pIxO7P+EgPRZXD9jMpimd8QEFcEZ5R67R1UhGbv4zghU5+NE7U8M8G9H5Jc8FI51rqDWQs6FtUfq2e/Q==
+
+"@types/lodash-es@^4.17.6":
+ version "4.17.6"
+ resolved "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz#c2ed4c8320ffa6f11b43eb89e9eaeec65966a0a0"
+ integrity sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==
+ dependencies:
+ "@types/lodash" "*"
+
+"@types/lodash@*", "@types/lodash@^4.14.182":
+ version "4.14.191"
+ resolved "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa"
+ integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==
+
+"@types/node@*":
+ version "18.11.18"
+ resolved "https://registry.npmmirror.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f"
+ integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==
+
+"@types/node@^17.0.31":
+ version "17.0.45"
+ resolved "https://registry.npmmirror.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190"
+ integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==
+
+"@types/sortablejs@^1.15.0":
+ version "1.15.0"
+ resolved "https://registry.npmmirror.com/@types/sortablejs/-/sortablejs-1.15.0.tgz#695e481752e2a0a311c5e73b51d5f666fc202f93"
+ integrity sha512-qrhtM7M41EhH4tZQTNw2/RJkxllBx3reiJpTbgWCM2Dx0U1sZ6LwKp9lfNln9uqE26ZMKUaPEYaD4rzvOWYtZw==
+
+"@types/svgo@^2.6.1":
+ version "2.6.4"
+ resolved "https://registry.npmmirror.com/@types/svgo/-/svgo-2.6.4.tgz#b7298fc1dd687539fd63fc818b00146d96e68836"
+ integrity sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==
+ dependencies:
+ "@types/node" "*"
+
+"@types/web-bluetooth@^0.0.14":
+ version "0.0.14"
+ resolved "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.14.tgz#94e175b53623384bff1f354cdb3197a8d63cdbe5"
+ integrity sha512-5d2RhCard1nQUC3aHcq/gHzWYO6K0WJmAbjO7mQJgCQKtZpgXxv1rOM6O/dBDhDYYVutk1sciOgNSe+5YyfM8A==
+
+"@types/web-bluetooth@^0.0.16":
+ version "0.0.16"
+ resolved "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz#1d12873a8e49567371f2a75fe3e7f7edca6662d8"
+ integrity sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==
+
+"@uppy/companion-client@^2.2.2":
+ version "2.2.2"
+ resolved "https://registry.npmmirror.com/@uppy/companion-client/-/companion-client-2.2.2.tgz#c70b42fdcca728ef88b3eebf7ee3e2fa04b4923b"
+ integrity sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==
+ dependencies:
+ "@uppy/utils" "^4.1.2"
+ namespace-emitter "^2.0.1"
+
+"@uppy/core@^2.1.1":
+ version "2.3.4"
+ resolved "https://registry.npmmirror.com/@uppy/core/-/core-2.3.4.tgz#260b85b6bf3aa03cdc67da231f8c69cfbfdcc84a"
+ integrity sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==
+ dependencies:
+ "@transloadit/prettier-bytes" "0.0.7"
+ "@uppy/store-default" "^2.1.1"
+ "@uppy/utils" "^4.1.3"
+ lodash.throttle "^4.1.1"
+ mime-match "^1.0.2"
+ namespace-emitter "^2.0.1"
+ nanoid "^3.1.25"
+ preact "^10.5.13"
+
+"@uppy/store-default@^2.1.1":
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/@uppy/store-default/-/store-default-2.1.1.tgz#62a656a099bdaa012306e054d093754cb2d36e3e"
+ integrity sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==
+
+"@uppy/utils@^4.1.2", "@uppy/utils@^4.1.3":
+ version "4.1.3"
+ resolved "https://registry.npmmirror.com/@uppy/utils/-/utils-4.1.3.tgz#9d0be6ece4df25f228d30ef40be0f14208258ce3"
+ integrity sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==
+ dependencies:
+ lodash.throttle "^4.1.1"
+
+"@uppy/xhr-upload@^2.0.3":
+ version "2.1.3"
+ resolved "https://registry.npmmirror.com/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz#0d4e355332fe0c6eb372d7731315e04d02aeeb18"
+ integrity sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==
+ dependencies:
+ "@uppy/companion-client" "^2.2.2"
+ "@uppy/utils" "^4.1.2"
+ nanoid "^3.1.25"
+
+"@vitejs/plugin-vue-jsx@^1.3.10":
+ version "1.3.10"
+ resolved "https://registry.npmmirror.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-1.3.10.tgz#5b61294ed4334fbc5f5679243fd3ccc448b26044"
+ integrity sha512-Cf5zznh4yNMiEMBfTOztaDVDmK1XXfgxClzOSUVUc8WAmHzogrCUeM8B05ABzuGtg0D1amfng+mUmSIOFGP3Pw==
+ dependencies:
+ "@babel/core" "^7.17.9"
+ "@babel/plugin-syntax-import-meta" "^7.10.4"
+ "@babel/plugin-transform-typescript" "^7.16.8"
+ "@rollup/pluginutils" "^4.2.0"
+ "@vue/babel-plugin-jsx" "^1.1.1"
+ hash-sum "^2.0.0"
+
+"@vitejs/plugin-vue@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.0.0.tgz#93815beffd23db46288c787352a8ea31a0c03e5e"
+ integrity sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==
+
+"@volar/language-core@1.0.24":
+ version "1.0.24"
+ resolved "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.0.24.tgz#5d767571e77728464635e61af1debca944811fe0"
+ integrity sha512-vTN+alJiWwK0Pax6POqrmevbtFW2dXhjwWiW/MW4f48eDYPLdyURWcr8TixO7EN/nHsUBj2udT7igFKPtjyAKg==
+ dependencies:
+ "@volar/source-map" "1.0.24"
+ muggle-string "^0.1.0"
+
+"@volar/source-map@1.0.24":
+ version "1.0.24"
+ resolved "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.0.24.tgz#ad4c827fea5c26b4bf38a86d983e7deb65b1c61e"
+ integrity sha512-Qsv/tkplx18pgBr8lKAbM1vcDqgkGKQzbChg6NW+v0CZc3G7FLmK+WrqEPzKlN7Cwdc6XVL559Nod8WKAfKr4A==
+ dependencies:
+ muggle-string "^0.1.0"
+
+"@volar/typescript@1.0.24":
+ version "1.0.24"
+ resolved "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.0.24.tgz#f934eda9774b31abdff53efc56782cd2623723d5"
+ integrity sha512-f8hCSk+PfKR1/RQHxZ79V1NpDImHoivqoizK+mstphm25tn/YJ/JnKNjZHB+o21fuW0yKlI26NV3jkVb2Cc/7A==
+ dependencies:
+ "@volar/language-core" "1.0.24"
+
+"@volar/vue-language-core@1.0.24":
+ version "1.0.24"
+ resolved "https://registry.npmmirror.com/@volar/vue-language-core/-/vue-language-core-1.0.24.tgz#81d180a8e09a53cb575e83acb79a31493891a1a4"
+ integrity sha512-2NTJzSgrwKu6uYwPqLiTMuAzi7fAY3yFy5PJ255bGJc82If0Xr+cW8pC80vpjG0D/aVLmlwAdO4+Ya2BI8GdDg==
+ dependencies:
+ "@volar/language-core" "1.0.24"
+ "@volar/source-map" "1.0.24"
+ "@vue/compiler-dom" "^3.2.45"
+ "@vue/compiler-sfc" "^3.2.45"
+ "@vue/reactivity" "^3.2.45"
+ "@vue/shared" "^3.2.45"
+ minimatch "^5.1.1"
+ vue-template-compiler "^2.7.14"
+
+"@volar/vue-typescript@1.0.24":
+ version "1.0.24"
+ resolved "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-1.0.24.tgz#bef9b2bfb1b108c0f6cb12ec6fbf449b43fc8257"
+ integrity sha512-9a25oHDvGaNC0okRS47uqJI6FxY4hUQZUsxeOUFHcqVxZEv8s17LPuP/pMMXyz7jPygrZubB/qXqHY5jEu/akA==
+ dependencies:
+ "@volar/typescript" "1.0.24"
+ "@volar/vue-language-core" "1.0.24"
+
+"@vue/babel-helper-vue-transform-on@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz#9b9c691cd06fc855221a2475c3cc831d774bc7dc"
+ integrity sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==
+
+"@vue/babel-plugin-jsx@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz#0c5bac27880d23f89894cd036a37b55ef61ddfc1"
+ integrity sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@babel/plugin-syntax-jsx" "^7.0.0"
+ "@babel/template" "^7.0.0"
+ "@babel/traverse" "^7.0.0"
+ "@babel/types" "^7.0.0"
+ "@vue/babel-helper-vue-transform-on" "^1.0.2"
+ camelcase "^6.0.0"
+ html-tags "^3.1.0"
+ svg-tags "^1.0.0"
+
+"@vue/compiler-core@3.2.45":
+ version "3.2.45"
+ resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.45.tgz#d9311207d96f6ebd5f4660be129fb99f01ddb41b"
+ integrity sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/shared" "3.2.45"
+ estree-walker "^2.0.2"
+ source-map "^0.6.1"
+
+"@vue/compiler-dom@3.2.45", "@vue/compiler-dom@^3.2.45":
+ version "3.2.45"
+ resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz#c43cc15e50da62ecc16a42f2622d25dc5fd97dce"
+ integrity sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==
+ dependencies:
+ "@vue/compiler-core" "3.2.45"
+ "@vue/shared" "3.2.45"
+
+"@vue/compiler-sfc@3.2.45", "@vue/compiler-sfc@^3.2.29", "@vue/compiler-sfc@^3.2.45":
+ version "3.2.45"
+ resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz#7f7989cc04ec9e7c55acd406827a2c4e96872c70"
+ integrity sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/compiler-core" "3.2.45"
+ "@vue/compiler-dom" "3.2.45"
+ "@vue/compiler-ssr" "3.2.45"
+ "@vue/reactivity-transform" "3.2.45"
+ "@vue/shared" "3.2.45"
+ estree-walker "^2.0.2"
+ magic-string "^0.25.7"
+ postcss "^8.1.10"
+ source-map "^0.6.1"
+
+"@vue/compiler-ssr@3.2.45":
+ version "3.2.45"
+ resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz#bd20604b6e64ea15344d5b6278c4141191c983b2"
+ integrity sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==
+ dependencies:
+ "@vue/compiler-dom" "3.2.45"
+ "@vue/shared" "3.2.45"
+
+"@vue/devtools-api@^6.2.1", "@vue/devtools-api@^6.4.5":
+ version "6.4.5"
+ resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.4.5.tgz#d54e844c1adbb1e677c81c665ecef1a2b4bb8380"
+ integrity sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==
+
+"@vue/reactivity-transform@3.2.45":
+ version "3.2.45"
+ resolved "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz#07ac83b8138550c83dfb50db43cde1e0e5e8124d"
+ integrity sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/compiler-core" "3.2.45"
+ "@vue/shared" "3.2.45"
+ estree-walker "^2.0.2"
+ magic-string "^0.25.7"
+
+"@vue/reactivity@3.2.45", "@vue/reactivity@^3.2.45":
+ version "3.2.45"
+ resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.45.tgz#412a45b574de601be5a4a5d9a8cbd4dee4662ff0"
+ integrity sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==
+ dependencies:
+ "@vue/shared" "3.2.45"
+
+"@vue/runtime-core@3.2.45":
+ version "3.2.45"
+ resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.45.tgz#7ad7ef9b2519d41062a30c6fa001ec43ac549c7f"
+ integrity sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==
+ dependencies:
+ "@vue/reactivity" "3.2.45"
+ "@vue/shared" "3.2.45"
+
+"@vue/runtime-dom@3.2.45":
+ version "3.2.45"
+ resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz#1a2ef6ee2ad876206fbbe2a884554bba2d0faf59"
+ integrity sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==
+ dependencies:
+ "@vue/runtime-core" "3.2.45"
+ "@vue/shared" "3.2.45"
+ csstype "^2.6.8"
+
+"@vue/server-renderer@3.2.45":
+ version "3.2.45"
+ resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.45.tgz#ca9306a0c12b0530a1a250e44f4a0abac6b81f3f"
+ integrity sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==
+ dependencies:
+ "@vue/compiler-ssr" "3.2.45"
+ "@vue/shared" "3.2.45"
+
+"@vue/shared@3.2.45", "@vue/shared@^3.2.45":
+ version "3.2.45"
+ resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz#a3fffa7489eafff38d984e23d0236e230c818bc2"
+ integrity sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==
+
+"@vueuse/core@^8.0.1":
+ version "8.9.4"
+ resolved "https://registry.npmmirror.com/@vueuse/core/-/core-8.9.4.tgz#c7db40f19390b3c9f4ff9294a30461497f62ec19"
+ integrity sha512-B/Mdj9TK1peFyWaPof+Zf/mP9XuGAngaJZBwPaXBvU3aCTZlx3ltlrFFFyMV4iGBwsjSCeUCgZrtkEj9dS2Y3Q==
+ dependencies:
+ "@types/web-bluetooth" "^0.0.14"
+ "@vueuse/metadata" "8.9.4"
+ "@vueuse/shared" "8.9.4"
+ vue-demi "*"
+
+"@vueuse/core@^9.1.0":
+ version "9.10.0"
+ resolved "https://registry.npmmirror.com/@vueuse/core/-/core-9.10.0.tgz#2ef6e55ca773c5b2db1e3f13b8292af96dd32214"
+ integrity sha512-CxMewME07qeuzuT/AOIQGv0EhhDoojniqU6pC3F8m5VC76L47UT18DcX88kWlP3I7d3qMJ4u/PD8iSRsy3bmNA==
+ dependencies:
+ "@types/web-bluetooth" "^0.0.16"
+ "@vueuse/metadata" "9.10.0"
+ "@vueuse/shared" "9.10.0"
+ vue-demi "*"
+
+"@vueuse/metadata@8.9.4":
+ version "8.9.4"
+ resolved "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-8.9.4.tgz#a4132db33e4c1b1023636acfa20aa7b37ab3d978"
+ integrity sha512-IwSfzH80bnJMzqhaapqJl9JRIiyQU0zsRGEgnxN6jhq7992cPUJIRfV+JHRIZXjYqbwt07E1gTEp0R0zPJ1aqw==
+
+"@vueuse/metadata@9.10.0":
+ version "9.10.0"
+ resolved "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.10.0.tgz#1a5eb94ca755bd8e666505f47da7d88969cffdc7"
+ integrity sha512-G5VZhgTCapzU9rv0Iq2HBrVOSGzOKb+OE668NxhXNcTjUjwYxULkEhAw70FtRLMZc+hxcFAzDZlKYA0xcwNMuw==
+
+"@vueuse/shared@8.9.4":
+ version "8.9.4"
+ resolved "https://registry.npmmirror.com/@vueuse/shared/-/shared-8.9.4.tgz#c9741c30ffb666b50d62f0dd80b76119fd47573e"
+ integrity sha512-wt+T30c4K6dGRMVqPddexEVLa28YwxW5OFIPmzUHICjphfAuBFTTdDoyqREZNDOFJZ44ARH1WWQNCUK8koJ+Ag==
+ dependencies:
+ vue-demi "*"
+
+"@vueuse/shared@9.10.0":
+ version "9.10.0"
+ resolved "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.10.0.tgz#49874a0f9955d28689b3133de660367c63dbc030"
+ integrity sha512-vakHJ2ZRklAzqmcVBL38RS7BxdBA4+5poG9NsSyqJxrt9kz0zX3P5CXMy0Hm6LFbZXUgvKdqAS3pUH1zX/5qTQ==
+ dependencies:
+ vue-demi "*"
+
+"@wangeditor/basic-modules@^1.1.7":
+ version "1.1.7"
+ resolved "https://registry.npmmirror.com/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz#a9c3ccf4ef53332f29550d59d3676e15f395946f"
+ integrity sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==
+ dependencies:
+ is-url "^1.2.4"
+
+"@wangeditor/code-highlight@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz#90256857714d5c0cf83ac475aea64db7bf29a7cd"
+ integrity sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==
+ dependencies:
+ prismjs "^1.23.0"
+
+"@wangeditor/core@^1.1.19":
+ version "1.1.19"
+ resolved "https://registry.npmmirror.com/@wangeditor/core/-/core-1.1.19.tgz#f9155f7fd92d03cb1982405b3b82e54c31f1c2b0"
+ integrity sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==
+ dependencies:
+ "@types/event-emitter" "^0.3.3"
+ event-emitter "^0.3.5"
+ html-void-elements "^2.0.0"
+ i18next "^20.4.0"
+ scroll-into-view-if-needed "^2.2.28"
+ slate-history "^0.66.0"
+
+"@wangeditor/editor-for-vue@^5.1.12":
+ version "5.1.12"
+ resolved "https://registry.npmmirror.com/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz#f7d5f239b39cdfc01d31151488de8443fe6edc64"
+ integrity sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==
+
+"@wangeditor/editor@^5.1.12":
+ version "5.1.23"
+ resolved "https://registry.npmmirror.com/@wangeditor/editor/-/editor-5.1.23.tgz#c9d2007b7cb0ceef6b72692b4ee87b01ee2367b3"
+ integrity sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==
+ dependencies:
+ "@uppy/core" "^2.1.1"
+ "@uppy/xhr-upload" "^2.0.3"
+ "@wangeditor/basic-modules" "^1.1.7"
+ "@wangeditor/code-highlight" "^1.0.3"
+ "@wangeditor/core" "^1.1.19"
+ "@wangeditor/list-module" "^1.0.5"
+ "@wangeditor/table-module" "^1.1.4"
+ "@wangeditor/upload-image-module" "^1.0.2"
+ "@wangeditor/video-module" "^1.1.4"
+ dom7 "^3.0.0"
+ is-hotkey "^0.2.0"
+ lodash.camelcase "^4.3.0"
+ lodash.clonedeep "^4.5.0"
+ lodash.debounce "^4.0.8"
+ lodash.foreach "^4.5.0"
+ lodash.isequal "^4.5.0"
+ lodash.throttle "^4.1.1"
+ lodash.toarray "^4.4.0"
+ nanoid "^3.2.0"
+ slate "^0.72.0"
+ snabbdom "^3.1.0"
+
+"@wangeditor/list-module@^1.0.5":
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/@wangeditor/list-module/-/list-module-1.0.5.tgz#3fc0b167acddf885536b45fa0c127f9c6adaea33"
+ integrity sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==
+
+"@wangeditor/table-module@^1.1.4":
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/@wangeditor/table-module/-/table-module-1.1.4.tgz#757d4a5868b2b658041cd323854a4d707c8347e9"
+ integrity sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==
+
+"@wangeditor/upload-image-module@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz#89e9b9467e10cbc6b11dc5748e08dd23aaebee30"
+ integrity sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==
+
+"@wangeditor/video-module@^1.1.4":
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/@wangeditor/video-module/-/video-module-1.1.4.tgz#b9df1b3ab2cd53f678b19b4d927e200774a6f532"
+ integrity sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==
+
+acorn@^8.5.0, acorn@^8.8.1:
+ version "8.8.1"
+ resolved "https://registry.npmmirror.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73"
+ integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==
+
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+ integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==
+
+ansi-regex@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
+ansi-styles@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+ integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+anymatch@~3.1.2:
+ version "3.1.3"
+ resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
+ integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+ integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==
+
+arr-flatten@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+ integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
+
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+ integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==
+
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+ integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==
+
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+ integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==
+
+async-validator@^4.2.5:
+ version "4.2.5"
+ resolved "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz#c96ea3332a521699d0afaaceed510a54656c6339"
+ integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==
+
+async@^3.2.3:
+ version "3.2.4"
+ resolved "https://registry.npmmirror.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
+ integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
+
+atob@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+autoprefixer@^10.4.7:
+ version "10.4.13"
+ resolved "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.13.tgz#b5136b59930209a321e9fa3dca2e7c4d223e83a8"
+ integrity sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==
+ dependencies:
+ 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@^1.2.1:
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/axios/-/axios-1.2.2.tgz#72681724c6e6a43a9fea860fc558127dbe32f9f1"
+ integrity sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==
+ dependencies:
+ follow-redirects "^1.15.0"
+ form-data "^4.0.0"
+ proxy-from-env "^1.1.0"
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.npmmirror.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
+ dependencies:
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
+
+big.js@^5.2.2:
+ version "5.2.2"
+ resolved "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
+ integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
+
+binary-extensions@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+
+bluebird@^3.5.0:
+ version "3.7.2"
+ resolved "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
+boolbase@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+ integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+brace-expansion@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
+ integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+ dependencies:
+ balanced-match "^1.0.0"
+
+braces@^2.2.2:
+ version "2.3.2"
+ resolved "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+ integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
+ dependencies:
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
+braces@^3.0.2, braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+browserslist@^4.21.3, browserslist@^4.21.4:
+ version "4.21.4"
+ resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987"
+ integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==
+ dependencies:
+ caniuse-lite "^1.0.30001400"
+ electron-to-chromium "^1.4.251"
+ node-releases "^2.0.6"
+ update-browserslist-db "^1.0.9"
+
+buffer-from@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
+ integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
+
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
+ dependencies:
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
+call-bind@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
+ integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
+ dependencies:
+ function-bind "^1.1.1"
+ get-intrinsic "^1.0.2"
+
+camel-case@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.npmmirror.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a"
+ integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==
+ dependencies:
+ pascal-case "^3.1.2"
+ tslib "^2.0.3"
+
+camelcase@^6.0.0:
+ version "6.3.0"
+ resolved "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
+ integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
+
+caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001426:
+ version "1.0.30001442"
+ resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz#40337f1cf3be7c637b061e2f78582dc1daec0614"
+ integrity sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow==
+
+chalk@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+ integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==
+ dependencies:
+ ansi-styles "^2.2.1"
+ escape-string-regexp "^1.0.2"
+ has-ansi "^2.0.0"
+ strip-ansi "^3.0.0"
+ supports-color "^2.0.0"
+
+chalk@^2.0.0:
+ version "2.4.2"
+ resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^4.0.2, chalk@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3:
+ version "3.5.3"
+ resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
+ integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+ integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
+clean-css@^5.2.2:
+ version "5.3.1"
+ resolved "https://registry.npmmirror.com/clean-css/-/clean-css-5.3.1.tgz#d0610b0b90d125196a2894d35366f734e5d7aa32"
+ integrity sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==
+ dependencies:
+ source-map "~0.6.0"
+
+cliui@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
+ integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.1"
+ wrap-ansi "^7.0.0"
+
+clone@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
+ integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==
+
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+ integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==
+ dependencies:
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+colorette@^2.0.16:
+ version "2.0.19"
+ resolved "https://registry.npmmirror.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798"
+ integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==
+
+combined-stream@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@^2.20.0:
+ version "2.20.3"
+ resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+commander@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
+ integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
+
+commander@^8.3.0:
+ version "8.3.0"
+ resolved "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66"
+ integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
+
+component-emitter@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
+ integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
+
+compute-scroll-into-view@^1.0.20:
+ version "1.0.20"
+ resolved "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz#1768b5522d1172754f5d0c9b02de3af6be506a43"
+ integrity sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
+
+connect-history-api-fallback@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
+ integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
+
+consola@^2.15.3:
+ version "2.15.3"
+ resolved "https://registry.npmmirror.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550"
+ integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==
+
+convert-source-map@^1.7.0:
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
+ integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
+
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+ integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==
+
+cors@^2.8.5:
+ version "2.8.5"
+ resolved "https://registry.npmmirror.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
+ integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
+ dependencies:
+ object-assign "^4"
+ vary "^1"
+
+css-select@^4.1.3, css-select@^4.2.1:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b"
+ integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==
+ dependencies:
+ boolbase "^1.0.0"
+ css-what "^6.0.1"
+ domhandler "^4.3.1"
+ domutils "^2.8.0"
+ nth-check "^2.0.1"
+
+css-tree@^1.1.2, css-tree@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
+ integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
+ dependencies:
+ mdn-data "2.0.14"
+ source-map "^0.6.1"
+
+css-what@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4"
+ integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==
+
+csso@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
+ integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
+ dependencies:
+ css-tree "^1.1.2"
+
+csstype@^2.6.8:
+ version "2.6.21"
+ resolved "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz#2efb85b7cc55c80017c66a5ad7cbd931fda3a90e"
+ integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==
+
+d@1, d@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
+ integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
+ dependencies:
+ es5-ext "^0.10.50"
+ type "^1.0.1"
+
+dayjs@^1.11.3:
+ version "1.11.7"
+ resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2"
+ integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==
+
+de-indent@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
+ integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
+
+debug@^2.2.0, debug@^2.3.3:
+ version "2.6.9"
+ resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^4.1.0, debug@^4.3.3, debug@^4.3.4:
+ version "4.3.4"
+ resolved "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+decode-uri-component@^0.2.0:
+ version "0.2.2"
+ resolved "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
+ integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
+
+define-lazy-prop@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
+ integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
+
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+ integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
+
+dom-serializer@0:
+ version "0.2.2"
+ resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
+ integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
+ dependencies:
+ domelementtype "^2.0.1"
+ entities "^2.0.0"
+
+dom-serializer@^1.0.1:
+ version "1.4.1"
+ resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30"
+ integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.2.0"
+ entities "^2.0.0"
+
+dom-serializer@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53"
+ integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==
+ dependencies:
+ domelementtype "^2.3.0"
+ domhandler "^5.0.2"
+ entities "^4.2.0"
+
+dom7@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/dom7/-/dom7-3.0.0.tgz#b861ce5d67a6becd7aaa3ad02942ff14b1240331"
+ integrity sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==
+ dependencies:
+ ssr-window "^3.0.0-alpha.1"
+
+domelementtype@1, domelementtype@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
+ integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
+
+domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
+ integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
+
+domhandler@^2.3.0:
+ version "2.4.2"
+ resolved "https://registry.npmmirror.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
+ integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==
+ dependencies:
+ domelementtype "1"
+
+domhandler@^4.2.0, domhandler@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c"
+ integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==
+ dependencies:
+ domelementtype "^2.2.0"
+
+domhandler@^5.0.1, domhandler@^5.0.2:
+ version "5.0.3"
+ resolved "https://registry.npmmirror.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31"
+ integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==
+ dependencies:
+ domelementtype "^2.3.0"
+
+domutils@^1.5.1:
+ version "1.7.0"
+ resolved "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
+ integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
+domutils@^2.8.0:
+ version "2.8.0"
+ resolved "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
+ integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
+ dependencies:
+ dom-serializer "^1.0.1"
+ domelementtype "^2.2.0"
+ domhandler "^4.2.0"
+
+domutils@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c"
+ integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==
+ dependencies:
+ dom-serializer "^2.0.0"
+ domelementtype "^2.3.0"
+ domhandler "^5.0.1"
+
+dot-case@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmmirror.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751"
+ integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==
+ dependencies:
+ no-case "^3.0.4"
+ tslib "^2.0.3"
+
+dotenv-expand@^8.0.2:
+ version "8.0.3"
+ resolved "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-8.0.3.tgz#29016757455bcc748469c83a19b36aaf2b83dd6e"
+ integrity sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==
+
+dotenv@^16.0.0:
+ version "16.0.3"
+ resolved "https://registry.npmmirror.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07"
+ integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==
+
+echarts-liquidfill@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/echarts-liquidfill/-/echarts-liquidfill-3.1.0.tgz#4ec70f3697382d0404c95fff9f3e8dd85c8377da"
+ integrity sha512-5Dlqs/jTsdTUAsd+K5LPLLTgrbbNORUSBQyk8PSy1Mg2zgHDWm83FmvA4s0ooNepCJojFYRITTQ4GU1UUSKYLw==
+
+echarts@^5.3.0:
+ version "5.4.1"
+ resolved "https://registry.npmmirror.com/echarts/-/echarts-5.4.1.tgz#d7f65a584d78beff62568d878b16151b3381811c"
+ integrity sha512-9ltS3M2JB0w2EhcYjCdmtrJ+6haZcW6acBolMGIuf01Hql1yrIV01L1aRj7jsaaIULJslEP9Z3vKlEmnJaWJVQ==
+ dependencies:
+ tslib "2.3.0"
+ zrender "5.4.1"
+
+ejs@^3.1.6:
+ version "3.1.8"
+ resolved "https://registry.npmmirror.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b"
+ integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==
+ dependencies:
+ jake "^10.8.5"
+
+electron-to-chromium@^1.4.251:
+ version "1.4.284"
+ resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592"
+ integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==
+
+element-plus@^2.2.27:
+ version "2.2.28"
+ resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.28.tgz#855441976e82da597faecaf6ed74fc4650a970b2"
+ integrity sha512-BsxF7iEaBydmRfw1Tt++EO9jRBjbtJr7ZRIrnEwz4J3Cwa1IzHCNCcx3ZwcYTlJq9CYFxv94JnbNr1EbkTou3A==
+ dependencies:
+ "@ctrl/tinycolor" "^3.4.1"
+ "@element-plus/icons-vue" "^2.0.6"
+ "@floating-ui/dom" "^1.0.1"
+ "@popperjs/core" "npm:@sxzz/popperjs-es@^2.11.7"
+ "@types/lodash" "^4.14.182"
+ "@types/lodash-es" "^4.17.6"
+ "@vueuse/core" "^9.1.0"
+ async-validator "^4.2.5"
+ dayjs "^1.11.3"
+ escape-html "^1.0.3"
+ lodash "^4.17.21"
+ lodash-es "^4.17.21"
+ lodash-unified "^1.0.2"
+ memoize-one "^6.0.0"
+ normalize-wheel-es "^1.2.0"
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+emojis-list@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
+ integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
+
+entities@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
+ integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
+
+entities@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
+ integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
+
+entities@^4.2.0, entities@^4.3.0:
+ version "4.4.0"
+ resolved "https://registry.npmmirror.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174"
+ integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==
+
+es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.14:
+ version "0.10.62"
+ resolved "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5"
+ integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==
+ dependencies:
+ es6-iterator "^2.0.3"
+ es6-symbol "^3.1.3"
+ next-tick "^1.1.0"
+
+es6-iterator@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
+ integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==
+ dependencies:
+ d "1"
+ es5-ext "^0.10.35"
+ es6-symbol "^3.1.1"
+
+es6-symbol@^3.1.1, es6-symbol@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
+ integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
+ dependencies:
+ d "^1.0.1"
+ ext "^1.1.2"
+
+esbuild@^0.16.3:
+ version "0.16.16"
+ resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.16.16.tgz#e8a27820a30cc1449066f9bbe8916b145dbc9046"
+ integrity sha512-24JyKq10KXM5EBIgPotYIJ2fInNWVVqflv3gicIyQqfmUqi4HvDW1VR790cBgLJHCl96Syy7lhoz7tLFcmuRmg==
+ optionalDependencies:
+ "@esbuild/android-arm" "0.16.16"
+ "@esbuild/android-arm64" "0.16.16"
+ "@esbuild/android-x64" "0.16.16"
+ "@esbuild/darwin-arm64" "0.16.16"
+ "@esbuild/darwin-x64" "0.16.16"
+ "@esbuild/freebsd-arm64" "0.16.16"
+ "@esbuild/freebsd-x64" "0.16.16"
+ "@esbuild/linux-arm" "0.16.16"
+ "@esbuild/linux-arm64" "0.16.16"
+ "@esbuild/linux-ia32" "0.16.16"
+ "@esbuild/linux-loong64" "0.16.16"
+ "@esbuild/linux-mips64el" "0.16.16"
+ "@esbuild/linux-ppc64" "0.16.16"
+ "@esbuild/linux-riscv64" "0.16.16"
+ "@esbuild/linux-s390x" "0.16.16"
+ "@esbuild/linux-x64" "0.16.16"
+ "@esbuild/netbsd-x64" "0.16.16"
+ "@esbuild/openbsd-x64" "0.16.16"
+ "@esbuild/sunos-x64" "0.16.16"
+ "@esbuild/win32-arm64" "0.16.16"
+ "@esbuild/win32-ia32" "0.16.16"
+ "@esbuild/win32-x64" "0.16.16"
+
+escalade@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+
+escape-html@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+ integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
+
+escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
+escape-string-regexp@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8"
+ integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
+
+estree-walker@^2.0.1, estree-walker@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
+ integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
+etag@^1.8.1:
+ version "1.8.1"
+ resolved "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+ integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
+
+event-emitter@^0.3.5:
+ version "0.3.5"
+ resolved "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
+ integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==
+ dependencies:
+ d "1"
+ es5-ext "~0.10.14"
+
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+ext@^1.1.2:
+ version "1.7.0"
+ resolved "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f"
+ integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==
+ dependencies:
+ type "^2.7.2"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
+extglob@^2.0.2:
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+ integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
+ dependencies:
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+fast-glob@^3.2.11, fast-glob@^3.2.12:
+ version "3.2.12"
+ resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
+ integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.4"
+
+fastq@^1.6.0:
+ version "1.15.0"
+ resolved "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
+ integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
+ dependencies:
+ reusify "^1.0.4"
+
+filelist@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5"
+ integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==
+ dependencies:
+ minimatch "^5.0.1"
+
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+follow-redirects@^1.15.0:
+ version "1.15.2"
+ resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
+ integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
+
+for-in@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+ integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==
+
+form-data@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
+ integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
+fraction.js@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950"
+ integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==
+
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==
+ dependencies:
+ map-cache "^0.2.2"
+
+fs-extra@^10.0.0, fs-extra@^10.0.1:
+ version "10.1.0"
+ resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
+ integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
+fsevents@~2.3.2:
+ version "2.3.2"
+ resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
+ integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+gensync@^1.0.0-beta.2:
+ version "1.0.0-beta.2"
+ resolved "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
+get-caller-file@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-intrinsic@^1.0.2:
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385"
+ integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==
+ dependencies:
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.3"
+
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+ integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==
+
+glob-parent@^5.1.2, glob-parent@~5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+graceful-fs@^4.1.6, graceful-fs@^4.2.0:
+ version "4.2.10"
+ resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
+ integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
+
+has-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+ integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==
+ dependencies:
+ ansi-regex "^2.0.0"
+
+has-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
+ integrity sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has-symbols@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
+ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+ integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==
+ dependencies:
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
+
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+ integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==
+ dependencies:
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+ integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+hash-sum@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a"
+ integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==
+
+he@1.2.0, he@^1.1.1, he@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
+ integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+
+html-minifier-terser@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.npmmirror.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab"
+ integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==
+ dependencies:
+ camel-case "^4.1.2"
+ clean-css "^5.2.2"
+ commander "^8.3.0"
+ he "^1.2.0"
+ param-case "^3.0.4"
+ relateurl "^0.2.7"
+ terser "^5.10.0"
+
+html-tags@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961"
+ integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==
+
+html-void-elements@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz#29459b8b05c200b6c5ee98743c41b979d577549f"
+ integrity sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==
+
+htmlparser2@^3.8.3:
+ version "3.10.1"
+ resolved "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
+ integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
+ dependencies:
+ domelementtype "^1.3.1"
+ domhandler "^2.3.0"
+ domutils "^1.5.1"
+ entities "^1.1.1"
+ inherits "^2.0.1"
+ readable-stream "^3.1.1"
+
+htmlparser2@^8.0.0:
+ version "8.0.1"
+ resolved "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-8.0.1.tgz#abaa985474fcefe269bc761a779b544d7196d010"
+ integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==
+ dependencies:
+ domelementtype "^2.3.0"
+ domhandler "^5.0.2"
+ domutils "^3.0.1"
+ entities "^4.3.0"
+
+i18next@^20.4.0:
+ version "20.6.1"
+ resolved "https://registry.npmmirror.com/i18next/-/i18next-20.6.1.tgz#535e5f6e5baeb685c7d25df70db63bf3cc0aa345"
+ integrity sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==
+ dependencies:
+ "@babel/runtime" "^7.12.0"
+
+image-size@^0.5.1:
+ version "0.5.5"
+ resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
+ integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==
+
+immer@^9.0.6:
+ version "9.0.17"
+ resolved "https://registry.npmmirror.com/immer/-/immer-9.0.17.tgz#7cfe8fbb8b461096444e9da7a5ec4a67c6c4adf4"
+ integrity sha512-+hBruaLSQvkPfxRiTLK/mi4vLH+/VQS6z2KJahdoxlleFOI8ARqzOF17uy12eFDlqWmPoygwc5evgwcp+dlHhg==
+
+immutable@^4.0.0:
+ version "4.2.2"
+ resolved "https://registry.npmmirror.com/immutable/-/immutable-4.2.2.tgz#2da9ff4384a4330c36d4d1bc88e90f9e0b0ccd16"
+ integrity sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==
+
+inherits@^2.0.1, inherits@^2.0.3:
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-buffer@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+ integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
+is-core-module@^2.9.0:
+ version "2.11.0"
+ resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
+ integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
+ dependencies:
+ has "^1.0.3"
+
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
+is-docker@^2.0.0, is-docker@^2.1.1:
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
+ integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==
+
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+ dependencies:
+ is-plain-object "^2.0.4"
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-glob@^4.0.1, is-glob@~4.0.1:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-hotkey@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/is-hotkey/-/is-hotkey-0.2.0.tgz#1835a68171a91e5c9460869d96336947c8340cef"
+ integrity sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==
+
+is-number@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+ integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-plain-obj@^1.1:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+ integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==
+
+is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+ dependencies:
+ isobject "^3.0.1"
+
+is-plain-object@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
+ integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
+
+is-reference@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7"
+ integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==
+ dependencies:
+ "@types/estree" "*"
+
+is-url@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.npmmirror.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52"
+ integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==
+
+is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
+is-wsl@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
+ integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
+ dependencies:
+ is-docker "^2.0.0"
+
+isarray@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
+
+isobject@^2.0.0, isobject@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==
+ dependencies:
+ isarray "1.0.0"
+
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+ integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
+
+jake@^10.8.5:
+ version "10.8.5"
+ resolved "https://registry.npmmirror.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46"
+ integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==
+ dependencies:
+ async "^3.2.3"
+ chalk "^4.0.2"
+ filelist "^1.0.1"
+ minimatch "^3.0.4"
+
+js-base64@^2.1.9:
+ version "2.6.4"
+ resolved "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4"
+ integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==
+
+js-md5@^0.7.3:
+ version "0.7.3"
+ resolved "https://registry.npmmirror.com/js-md5/-/js-md5-0.7.3.tgz#b4f2fbb0b327455f598d6727e38ec272cd09c3f2"
+ integrity sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ==
+
+js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-tokens@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-8.0.0.tgz#5dbe2cdfa9afc93251d3a77bf18c3ad6fa8a4de4"
+ integrity sha512-PC7MzqInq9OqKyTXfIvQNcjMkODJYC8A17kAaQgeW79yfhqTWSOfjHYQ2mDDcwJ96Iibtwkfh0C7R/OvqPlgVA==
+
+jsesc@^2.5.1:
+ version "2.5.2"
+ resolved "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
+json5@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
+ integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
+ dependencies:
+ minimist "^1.2.0"
+
+json5@^2.2.2:
+ version "2.2.3"
+ resolved "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+
+jsonc-parser@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76"
+ integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
+
+jsonfile@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
+ integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
+ dependencies:
+ universalify "^2.0.0"
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
+ version "3.2.2"
+ resolved "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+ integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
+ integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^5.0.0, kind-of@^5.0.2:
+ version "5.1.0"
+ resolved "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+ integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.3"
+ resolved "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+
+loader-utils@^1.1.0:
+ version "1.4.2"
+ resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3"
+ integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^1.0.1"
+
+local-pkg@^0.4.2:
+ version "0.4.2"
+ resolved "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.2.tgz#13107310b77e74a0e513147a131a2ba288176c2f"
+ integrity sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==
+
+lodash-es@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
+ integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
+
+lodash-unified@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz#80b1eac10ed2eb02ed189f08614a29c27d07c894"
+ integrity sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==
+
+lodash.camelcase@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+ integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==
+
+lodash.clonedeep@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+ integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==
+
+lodash.debounce@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+ integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
+
+lodash.foreach@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.npmmirror.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53"
+ integrity sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==
+
+lodash.isequal@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
+ integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==
+
+lodash.throttle@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
+ integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==
+
+lodash.toarray@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.npmmirror.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561"
+ integrity sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==
+
+lodash@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+lower-case@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
+ integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
+ dependencies:
+ tslib "^2.0.3"
+
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
+magic-string@^0.25.7:
+ version "0.25.9"
+ resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
+ integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
+ dependencies:
+ sourcemap-codec "^1.4.8"
+
+magic-string@^0.27.0:
+ version "0.27.0"
+ resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3"
+ integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==
+ dependencies:
+ "@jridgewell/sourcemap-codec" "^1.4.13"
+
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+ integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==
+
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==
+ dependencies:
+ object-visit "^1.0.0"
+
+mdn-data@2.0.14:
+ version "2.0.14"
+ resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
+ integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
+
+memoize-one@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045"
+ integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==
+
+merge-options@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/merge-options/-/merge-options-1.0.1.tgz#2a64b24457becd4e4dc608283247e94ce589aa32"
+ integrity sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==
+ dependencies:
+ is-plain-obj "^1.1"
+
+merge2@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+micromatch@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.0.tgz#5102d4eaf20b6997d6008e3acfe1c44a3fa815e2"
+ integrity sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.2.2"
+ define-property "^1.0.0"
+ extend-shallow "^2.0.1"
+ extglob "^2.0.2"
+ fragment-cache "^0.2.1"
+ kind-of "^5.0.2"
+ nanomatch "^1.2.1"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+micromatch@^4.0.4:
+ version "4.0.5"
+ resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
+ integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
+ dependencies:
+ braces "^3.0.2"
+ picomatch "^2.3.1"
+
+mime-db@1.52.0:
+ version "1.52.0"
+ resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
+ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+
+mime-match@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/mime-match/-/mime-match-1.0.2.tgz#3f87c31e9af1a5fd485fb9db134428b23bbb7ba8"
+ integrity sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==
+ dependencies:
+ wildcard "^1.1.0"
+
+mime-types@^2.1.12:
+ version "2.1.35"
+ resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+ dependencies:
+ mime-db "1.52.0"
+
+minimatch@^3.0.4:
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimatch@^5.0.1, minimatch@^5.1.1:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.2.tgz#0939d7d6f0898acbd1508abe534d1929368a8fff"
+ integrity sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==
+ dependencies:
+ brace-expansion "^2.0.1"
+
+minimist@^1.2.0:
+ version "1.2.7"
+ resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
+ integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
+
+mitt@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/mitt/-/mitt-3.0.0.tgz#69ef9bd5c80ff6f57473e8d89326d01c414be0bd"
+ integrity sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==
+
+mixin-deep@^1.2.0:
+ version "1.3.2"
+ resolved "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
+ integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
+mlly@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/mlly/-/mlly-1.1.0.tgz#9e23c5e675ef7b10cc47ee6281795cb1a7aa3aa2"
+ integrity sha512-cwzBrBfwGC1gYJyfcy8TcZU1f+dbH/T+TuOhtYP2wLv/Fb51/uV7HJQfBPtEupZ2ORLRU1EKFS/QfS3eo9+kBQ==
+ dependencies:
+ acorn "^8.8.1"
+ pathe "^1.0.0"
+ pkg-types "^1.0.1"
+ ufo "^1.0.1"
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+muggle-string@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.1.0.tgz#1fda8a281c8b27bb8b70466dbc9f27586a8baa6c"
+ integrity sha512-Tr1knR3d2mKvvWthlk7202rywKbiOm4rVFLsfAaSIhJ6dt9o47W4S+JMtWhd/PW9Wrdew2/S2fSvhz3E2gkfEg==
+
+namespace-emitter@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/namespace-emitter/-/namespace-emitter-2.0.1.tgz#978d51361c61313b4e6b8cf6f3853d08dfa2b17c"
+ integrity sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==
+
+nanoid@^3.1.25, nanoid@^3.2.0, nanoid@^3.3.4:
+ version "3.3.4"
+ resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
+ integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
+
+nanomatch@^1.2.1:
+ version "1.2.13"
+ resolved "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
+ integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ fragment-cache "^0.2.1"
+ is-windows "^1.0.2"
+ kind-of "^6.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+next-tick@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb"
+ integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==
+
+no-case@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
+ integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
+ dependencies:
+ lower-case "^2.0.2"
+ tslib "^2.0.3"
+
+node-html-parser@^5.3.3:
+ version "5.4.2"
+ resolved "https://registry.npmmirror.com/node-html-parser/-/node-html-parser-5.4.2.tgz#93e004038c17af80226c942336990a0eaed8136a"
+ integrity sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==
+ dependencies:
+ css-select "^4.2.1"
+ he "1.2.0"
+
+node-releases@^2.0.6:
+ version "2.0.8"
+ resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.8.tgz#0f349cdc8fcfa39a92ac0be9bc48b7706292b9ae"
+ integrity sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+normalize-range@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+ integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
+
+normalize-wheel-es@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz#0fa2593d619f7245a541652619105ab076acf09e"
+ integrity sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==
+
+nprogress@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1"
+ integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==
+
+nth-check@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d"
+ integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
+ dependencies:
+ boolbase "^1.0.0"
+
+object-assign@^4, object-assign@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
+object-inspect@^1.9.0:
+ version "1.12.2"
+ resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea"
+ integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
+
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==
+ dependencies:
+ isobject "^3.0.0"
+
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==
+ dependencies:
+ isobject "^3.0.1"
+
+open@^8.4.0:
+ version "8.4.0"
+ resolved "https://registry.npmmirror.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8"
+ integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==
+ dependencies:
+ define-lazy-prop "^2.0.0"
+ is-docker "^2.1.1"
+ is-wsl "^2.2.0"
+
+param-case@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5"
+ integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==
+ dependencies:
+ dot-case "^3.0.4"
+ tslib "^2.0.3"
+
+pascal-case@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
+ integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
+ dependencies:
+ no-case "^3.0.4"
+ tslib "^2.0.3"
+
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+ integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==
+
+path-parse@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+pathe@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/pathe/-/pathe-0.2.0.tgz#30fd7bbe0a0d91f0e60bae621f5d19e9e225c339"
+ integrity sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==
+
+pathe@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/pathe/-/pathe-1.0.0.tgz#135fc11464fc57c84ef93d5c5ed21247e24571df"
+ integrity sha512-nPdMG0Pd09HuSsr7QOKUXO2Jr9eqaDiZvDwdyIhNG5SHYujkQHYKDfGQkulBxvbDHz8oHLsTgKN86LSwYzSHAg==
+
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+pinia-plugin-persistedstate@^3.0.1:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.0.2.tgz#c604591442d23ba3a86eaf8156f019812d59038e"
+ integrity sha512-84vPyUhPA/8Pr+1mT1ioNb2d8z4tvdgYRqMQf8xyauOVBKjo0ZcRBwPQBV7ZAJG43Kwar43nXG2jU+ZMvAFFRQ==
+
+pinia@^2.0.28:
+ version "2.0.28"
+ resolved "https://registry.npmmirror.com/pinia/-/pinia-2.0.28.tgz#887c982d854972042d9bdfd5bc4fad3b9d6ab02a"
+ integrity sha512-YClq9DkqCblq9rlyUual7ezMu/iICWdBtfJrDt4oWU9Zxpijyz7xB2xTwx57DaBQ96UGvvTMORzALr+iO5PVMw==
+ dependencies:
+ "@vue/devtools-api" "^6.4.5"
+ vue-demi "*"
+
+pkg-types@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.0.1.tgz#25234407f9dc63409af45ced9407625ff446a761"
+ integrity sha512-jHv9HB+Ho7dj6ItwppRDDl0iZRYBD0jsakHXtFgoLr+cHSF6xC+QL54sJmWxyGxOLYSHm0afhXhXcQDQqH9z8g==
+ dependencies:
+ jsonc-parser "^3.2.0"
+ mlly "^1.0.0"
+ pathe "^1.0.0"
+
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+ integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==
+
+postcss-html@^1.4.1:
+ version "1.5.0"
+ resolved "https://registry.npmmirror.com/postcss-html/-/postcss-html-1.5.0.tgz#57a43bc9e336f516ecc448a37d2e8c2290170a6f"
+ integrity sha512-kCMRWJRHKicpA166kc2lAVUGxDZL324bkj/pVOb6RhjB0Z5Krl7mN0AsVkBhVIRZZirY0lyQXG38HCVaoKVNoA==
+ dependencies:
+ htmlparser2 "^8.0.0"
+ js-tokens "^8.0.0"
+ postcss "^8.4.0"
+ postcss-safe-parser "^6.0.0"
+
+postcss-prefix-selector@^1.6.0:
+ version "1.16.0"
+ resolved "https://registry.npmmirror.com/postcss-prefix-selector/-/postcss-prefix-selector-1.16.0.tgz#ad5b56f9a73a2c090ca7161049632c9d89bcb404"
+ integrity sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==
+
+postcss-safe-parser@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz#bb4c29894171a94bc5c996b9a30317ef402adaa1"
+ integrity sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==
+
+postcss-value-parser@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
+ integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
+
+postcss@^5.2.17:
+ version "5.2.18"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5"
+ integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==
+ dependencies:
+ chalk "^1.1.3"
+ js-base64 "^2.1.9"
+ source-map "^0.5.6"
+ supports-color "^3.2.3"
+
+postcss@^8.1.10, postcss@^8.4.0, postcss@^8.4.14, postcss@^8.4.20:
+ version "8.4.21"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4"
+ integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==
+ dependencies:
+ nanoid "^3.3.4"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
+posthtml-parser@^0.2.0, posthtml-parser@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.npmmirror.com/posthtml-parser/-/posthtml-parser-0.2.1.tgz#35d530de386740c2ba24ff2eb2faf39ccdf271dd"
+ integrity sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==
+ dependencies:
+ htmlparser2 "^3.8.3"
+ isobject "^2.1.0"
+
+posthtml-rename-id@^1.0:
+ version "1.0.12"
+ resolved "https://registry.npmmirror.com/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz#cf7f6eb37146bf1afac31e68f18c6cc19ae61433"
+ integrity sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==
+ dependencies:
+ escape-string-regexp "1.0.5"
+
+posthtml-render@^1.0.5, posthtml-render@^1.0.6:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/posthtml-render/-/posthtml-render-1.4.0.tgz#40114070c45881cacb93347dae3eff53afbcff13"
+ integrity sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==
+
+posthtml-svg-mode@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz#abd554face81223cab0cb367e18e4efd2a4e74b0"
+ integrity sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==
+ dependencies:
+ merge-options "1.0.1"
+ posthtml "^0.9.2"
+ posthtml-parser "^0.2.1"
+ posthtml-render "^1.0.6"
+
+posthtml@^0.9.2:
+ version "0.9.2"
+ resolved "https://registry.npmmirror.com/posthtml/-/posthtml-0.9.2.tgz#f4c06db9f67b61fd17c4e256e7e3d9515bf726fd"
+ integrity sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==
+ dependencies:
+ posthtml-parser "^0.2.0"
+ posthtml-render "^1.0.5"
+
+preact@^10.5.13:
+ version "10.11.3"
+ resolved "https://registry.npmmirror.com/preact/-/preact-10.11.3.tgz#8a7e4ba19d3992c488b0785afcc0f8aa13c78d19"
+ integrity sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==
+
+print-js@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/print-js/-/print-js-1.6.0.tgz#692b046cf31992b46afa6c6d8a9db1c69d431d1f"
+ integrity sha512-BfnOIzSKbqGRtO4o0rnj/K3681BSd2QUrsIZy/+WdCIugjIswjmx3lDEZpXB2ruGf9d4b3YNINri81+J0FsBWg==
+
+prismjs@^1.23.0:
+ version "1.29.0"
+ resolved "https://registry.npmmirror.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12"
+ integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==
+
+proxy-from-env@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
+ integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+
+qs@^6.11.0:
+ version "6.11.0"
+ resolved "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
+ integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
+ dependencies:
+ side-channel "^1.0.4"
+
+query-string@^4.3.2:
+ version "4.3.4"
+ resolved "https://registry.npmmirror.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
+ integrity sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==
+ dependencies:
+ object-assign "^4.1.0"
+ strict-uri-encode "^1.0.0"
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+readable-stream@^3.1.1:
+ version "3.6.0"
+ resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readdirp@~3.6.0:
+ version "3.6.0"
+ resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+ dependencies:
+ picomatch "^2.2.1"
+
+regenerator-runtime@^0.13.11:
+ version "0.13.11"
+ resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
+ integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
+
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+ integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
+
+relateurl@^0.2.7:
+ version "0.2.7"
+ resolved "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
+ integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==
+
+repeat-element@^1.1.2:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9"
+ integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==
+
+repeat-string@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
+
+resolve-url@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+ integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==
+
+resolve@^1.22.1:
+ version "1.22.1"
+ resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
+ integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
+ dependencies:
+ is-core-module "^2.9.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+ret@~0.1.10:
+ version "0.1.15"
+ resolved "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+ integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rollup-plugin-external-globals@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.npmmirror.com/rollup-plugin-external-globals/-/rollup-plugin-external-globals-0.6.1.tgz#861c260b5727144e0fd1b424b103f9f0282fc365"
+ integrity sha512-mlp3KNa5sE4Sp9UUR2rjBrxjG79OyZAh/QC18RHIjM+iYkbBwNXSo8DHRMZWtzJTrH8GxQ+SJvCTN3i14uMXIA==
+ dependencies:
+ "@rollup/pluginutils" "^4.0.0"
+ estree-walker "^2.0.1"
+ is-reference "^1.2.1"
+ magic-string "^0.25.7"
+
+rollup-plugin-visualizer@^5.5.4:
+ version "5.9.0"
+ resolved "https://registry.npmmirror.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.0.tgz#013ac54fb6a9d7c9019e7eb77eced673399e5a0b"
+ integrity sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==
+ dependencies:
+ open "^8.4.0"
+ picomatch "^2.3.1"
+ source-map "^0.7.4"
+ yargs "^17.5.1"
+
+rollup@^3.7.0:
+ version "3.9.1"
+ resolved "https://registry.npmmirror.com/rollup/-/rollup-3.9.1.tgz#27501d3d026418765fe379d5620d25954ff2a011"
+ integrity sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w==
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+safe-buffer@~5.2.0:
+ version "5.2.1"
+ resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+ integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==
+ dependencies:
+ ret "~0.1.10"
+
+sass@^1.49.7:
+ version "1.57.1"
+ resolved "https://registry.npmmirror.com/sass/-/sass-1.57.1.tgz#dfafd46eb3ab94817145e8825208ecf7281119b5"
+ integrity sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==
+ dependencies:
+ chokidar ">=3.0.0 <4.0.0"
+ immutable "^4.0.0"
+ source-map-js ">=0.6.2 <2.0.0"
+
+scroll-into-view-if-needed@^2.2.28:
+ version "2.2.31"
+ resolved "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz#d3c482959dc483e37962d1521254e3295d0d1587"
+ integrity sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==
+ dependencies:
+ compute-scroll-into-view "^1.0.20"
+
+scule@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/scule/-/scule-1.0.0.tgz#895e6f4ba887e78d8b9b4111e23ae84fef82376d"
+ integrity sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ==
+
+semver@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+set-value@^2.0.0, set-value@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
+ integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
+side-channel@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
+ integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
+ dependencies:
+ call-bind "^1.0.0"
+ get-intrinsic "^1.0.2"
+ object-inspect "^1.9.0"
+
+slate-history@^0.66.0:
+ version "0.66.0"
+ resolved "https://registry.npmmirror.com/slate-history/-/slate-history-0.66.0.tgz#ac63fddb903098ceb4c944433e3f75fe63acf940"
+ integrity sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==
+ dependencies:
+ is-plain-object "^5.0.0"
+
+slate@^0.72.0:
+ version "0.72.8"
+ resolved "https://registry.npmmirror.com/slate/-/slate-0.72.8.tgz#5a018edf24e45448655293a68bfbcf563aa5ba81"
+ integrity sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==
+ dependencies:
+ immer "^9.0.6"
+ is-plain-object "^5.0.0"
+ tiny-warning "^1.0.3"
+
+snabbdom@^3.1.0:
+ version "3.5.1"
+ resolved "https://registry.npmmirror.com/snabbdom/-/snabbdom-3.5.1.tgz#25f80ef15b194baea703d9d5441892e369de18e1"
+ integrity sha512-wHMNIOjkm/YNE5EM3RCbr/+DVgPg6AqQAX1eOxO46zYNvCXjKP5Y865tqQj3EXnaMBjkxmQA5jFuDpDK/dbfiA==
+
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+ integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^3.1.0"
+
+sortablejs@1.14.0:
+ version "1.14.0"
+ resolved "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz#6d2e17ccbdb25f464734df621d4f35d4ab35b3d8"
+ integrity sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==
+
+sortablejs@^1.15.0:
+ version "1.15.0"
+ resolved "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz#53230b8aa3502bb77a29e2005808ffdb4a5f7e2a"
+ integrity sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==
+
+"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
+ integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+
+source-map-resolve@^0.5.0:
+ version "0.5.3"
+ resolved "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
+ integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
+ dependencies:
+ atob "^2.1.2"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
+
+source-map-support@~0.5.20:
+ version "0.5.21"
+ resolved "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
+ integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map-url@^0.4.0:
+ version "0.4.1"
+ resolved "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56"
+ integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
+
+source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0:
+ version "0.6.1"
+ resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+source-map@^0.5.6:
+ version "0.5.7"
+ resolved "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
+
+source-map@^0.7.4:
+ version "0.7.4"
+ resolved "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656"
+ integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
+
+sourcemap-codec@^1.4.8:
+ version "1.4.8"
+ resolved "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
+ integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
+
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
+ dependencies:
+ extend-shallow "^3.0.0"
+
+ssr-window@^3.0.0-alpha.1:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/ssr-window/-/ssr-window-3.0.0.tgz#fd5b82801638943e0cc704c4691801435af7ac37"
+ integrity sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==
+
+stable@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
+ integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
+strict-uri-encode@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
+ integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==
+
+string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
+strip-ansi@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
+strip-literal@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/strip-literal/-/strip-literal-1.0.0.tgz#0a484ed5a978cd9d2becf3cf8f4f2cb5ab0e1e74"
+ integrity sha512-5o4LsH1lzBzO9UFH63AJ2ad2/S2AVx6NtjOcaz+VTT2h1RiRvbipW72z8M/lxEhcPHDBQwpDrnTF7sXy/7OwCQ==
+ dependencies:
+ acorn "^8.8.1"
+
+supports-color@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+ integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==
+
+supports-color@^3.2.3:
+ version "3.2.3"
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
+ integrity sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==
+ dependencies:
+ has-flag "^1.0.0"
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
+
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
+svg-baker@1.7.0:
+ version "1.7.0"
+ resolved "https://registry.npmmirror.com/svg-baker/-/svg-baker-1.7.0.tgz#8367f78d875550c52fe4756f7303d5c5d7c2e9a7"
+ integrity sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==
+ dependencies:
+ bluebird "^3.5.0"
+ clone "^2.1.1"
+ he "^1.1.1"
+ image-size "^0.5.1"
+ loader-utils "^1.1.0"
+ merge-options "1.0.1"
+ micromatch "3.1.0"
+ postcss "^5.2.17"
+ postcss-prefix-selector "^1.6.0"
+ posthtml-rename-id "^1.0"
+ posthtml-svg-mode "^1.0.3"
+ query-string "^4.3.2"
+ traverse "^0.6.6"
+
+svg-tags@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764"
+ integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==
+
+svgo@^2.8.0:
+ version "2.8.0"
+ resolved "https://registry.npmmirror.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
+ integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==
+ dependencies:
+ "@trysound/sax" "0.2.0"
+ commander "^7.2.0"
+ css-select "^4.1.3"
+ css-tree "^1.1.3"
+ csso "^4.2.0"
+ picocolors "^1.0.0"
+ stable "^0.1.8"
+
+terser@^5.10.0:
+ version "5.16.1"
+ resolved "https://registry.npmmirror.com/terser/-/terser-5.16.1.tgz#5af3bc3d0f24241c7fb2024199d5c461a1075880"
+ integrity sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==
+ dependencies:
+ "@jridgewell/source-map" "^0.3.2"
+ acorn "^8.5.0"
+ commander "^2.20.0"
+ source-map-support "~0.5.20"
+
+throttle-debounce@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb"
+ integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==
+
+tiny-warning@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
+ integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
+
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+ integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==
+ dependencies:
+ kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+to-regex@^3.0.1:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+ integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
+
+traverse@^0.6.6:
+ version "0.6.7"
+ resolved "https://registry.npmmirror.com/traverse/-/traverse-0.6.7.tgz#46961cd2d57dd8706c36664acde06a248f1173fe"
+ integrity sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==
+
+tslib@2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e"
+ integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
+
+tslib@^2.0.3:
+ version "2.4.1"
+ resolved "https://registry.npmmirror.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e"
+ integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==
+
+type@^1.0.1:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
+ integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
+
+type@^2.7.2:
+ version "2.7.2"
+ resolved "https://registry.npmmirror.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0"
+ integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==
+
+typescript@^4.5.4:
+ version "4.9.4"
+ resolved "https://registry.npmmirror.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78"
+ integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==
+
+ufo@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/ufo/-/ufo-1.0.1.tgz#64ed43b530706bda2e4892f911f568cf4cf67d29"
+ integrity sha512-boAm74ubXHY7KJQZLlXrtMz52qFvpsbOxDcZOnw/Wf+LS4Mmyu7JxmzD4tDLtUQtmZECypJ0FrCz4QIe6dvKRA==
+
+unimport@^1.0.2:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/unimport/-/unimport-1.2.0.tgz#93231d45e871a35c0858d30cc189ecb2b3f4a380"
+ integrity sha512-yMok/ubppurBE7Png1QH70Om96AxIoWCcfdxW3J/pziozShMc1UGpPgWpSckfo9ndAO5M74yNnRDdLAZy/gWQg==
+ dependencies:
+ "@rollup/pluginutils" "^5.0.2"
+ escape-string-regexp "^5.0.0"
+ fast-glob "^3.2.12"
+ local-pkg "^0.4.2"
+ magic-string "^0.27.0"
+ mlly "^1.0.0"
+ pathe "^1.0.0"
+ pkg-types "^1.0.1"
+ scule "^1.0.0"
+ strip-literal "^1.0.0"
+ unplugin "^1.0.1"
+
+union-value@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
+ integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^2.0.1"
+
+universalify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
+ integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
+
+unplugin-auto-import@^0.12.1:
+ version "0.12.1"
+ resolved "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.12.1.tgz#eea943ff85e4230110a302451e7df1e584ecd480"
+ integrity sha512-J/3ZORq5YGKG+8D5vLLOgqaHNK77izlVN07mQ752yRLqBNDbJiwPRSnUwwYqH5N6rDay1SqnJCHaUdbJ9QMI2w==
+ dependencies:
+ "@antfu/utils" "^0.7.2"
+ "@rollup/pluginutils" "^5.0.2"
+ local-pkg "^0.4.2"
+ magic-string "^0.27.0"
+ unimport "^1.0.2"
+ unplugin "^1.0.1"
+
+unplugin-vue-components@^0.22.12:
+ version "0.22.12"
+ resolved "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.22.12.tgz#39013f77be72d32df9d6ca1599e592a484015612"
+ integrity sha512-FxyzsuBvMCYPIk+8cgscGBQ345tvwVu+qY5IhE++eorkyvA4Z1TiD/HCiim+Kbqozl10i4K+z+NCa2WO2jexRA==
+ dependencies:
+ "@antfu/utils" "^0.7.2"
+ "@rollup/pluginutils" "^5.0.2"
+ chokidar "^3.5.3"
+ debug "^4.3.4"
+ fast-glob "^3.2.12"
+ local-pkg "^0.4.2"
+ magic-string "^0.27.0"
+ minimatch "^5.1.1"
+ resolve "^1.22.1"
+ unplugin "^1.0.1"
+
+unplugin@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/unplugin/-/unplugin-1.0.1.tgz#83b528b981cdcea1cad422a12cd02e695195ef3f"
+ integrity sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==
+ dependencies:
+ acorn "^8.8.1"
+ chokidar "^3.5.3"
+ webpack-sources "^3.2.3"
+ webpack-virtual-modules "^0.5.0"
+
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
+update-browserslist-db@^1.0.9:
+ version "1.0.10"
+ resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3"
+ integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==
+ dependencies:
+ escalade "^3.1.1"
+ picocolors "^1.0.0"
+
+urix@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+ integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==
+
+use@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
+ integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+
+util-deprecate@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
+
+vary@^1:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
+ integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
+
+vite-plugin-cdn-import@^0.3.5:
+ version "0.3.5"
+ resolved "https://registry.npmmirror.com/vite-plugin-cdn-import/-/vite-plugin-cdn-import-0.3.5.tgz#b9cfbb076fd2bc1e8ae666e65450a864972dee81"
+ integrity sha512-e1raoalfBiIhv+hnMeSp1UNjloDDBhHpeFxkwRRdPBmTdDRqdEEn8owUmT5u8UBSVCs4xN3n/od4a91vXEhXPQ==
+ dependencies:
+ rollup-plugin-external-globals "^0.6.1"
+
+vite-plugin-compression@^0.5.1:
+ version "0.5.1"
+ resolved "https://registry.npmmirror.com/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz#a75b0d8f48357ebb377b65016da9f20885ef39b6"
+ integrity sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==
+ dependencies:
+ chalk "^4.1.2"
+ debug "^4.3.3"
+ fs-extra "^10.0.0"
+
+vite-plugin-html@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/vite-plugin-html/-/vite-plugin-html-3.2.0.tgz#0d4df9900642a321a139f1c25c05195ba9d0ec79"
+ integrity sha512-2VLCeDiHmV/BqqNn5h2V+4280KRgQzCFN47cst3WiNK848klESPQnzuC3okH5XHtgwHH/6s1Ho/YV6yIO0pgoQ==
+ dependencies:
+ "@rollup/pluginutils" "^4.2.0"
+ colorette "^2.0.16"
+ connect-history-api-fallback "^1.6.0"
+ consola "^2.15.3"
+ dotenv "^16.0.0"
+ dotenv-expand "^8.0.2"
+ ejs "^3.1.6"
+ fast-glob "^3.2.11"
+ fs-extra "^10.0.1"
+ html-minifier-terser "^6.1.0"
+ node-html-parser "^5.3.3"
+ pathe "^0.2.0"
+
+vite-plugin-svg-icons@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/vite-plugin-svg-icons/-/vite-plugin-svg-icons-2.0.1.tgz#7269a0962593509f371b9e2bb344d469db2c6df9"
+ integrity sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==
+ dependencies:
+ "@types/svgo" "^2.6.1"
+ cors "^2.8.5"
+ debug "^4.3.3"
+ etag "^1.8.1"
+ fs-extra "^10.0.0"
+ pathe "^0.2.0"
+ svg-baker "1.7.0"
+ svgo "^2.8.0"
+
+vite-plugin-vue-setup-extend@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmmirror.com/vite-plugin-vue-setup-extend/-/vite-plugin-vue-setup-extend-0.4.0.tgz#ebbbe265320039b8c6a3b9fcae3b8d152ecf4a13"
+ integrity sha512-WMbjPCui75fboFoUTHhdbXzu4Y/bJMv5N9QT9a7do3wNMNHHqrk+Tn2jrSJU0LS5fGl/EG+FEDBYVUeWIkDqXQ==
+ dependencies:
+ "@vue/compiler-sfc" "^3.2.29"
+ magic-string "^0.25.7"
+
+vite@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.npmmirror.com/vite/-/vite-4.0.4.tgz#4612ce0b47bbb233a887a54a4ae0c6e240a0da31"
+ integrity sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==
+ dependencies:
+ esbuild "^0.16.3"
+ postcss "^8.4.20"
+ resolve "^1.22.1"
+ rollup "^3.7.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+vue-demi@*:
+ version "0.13.11"
+ resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz#7d90369bdae8974d87b1973564ad390182410d99"
+ integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==
+
+vue-i18n@^9.1.9:
+ version "9.2.2"
+ resolved "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.2.2.tgz#aeb49d9424923c77e0d6441e3f21dafcecd0e666"
+ integrity sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==
+ dependencies:
+ "@intlify/core-base" "9.2.2"
+ "@intlify/shared" "9.2.2"
+ "@intlify/vue-devtools" "9.2.2"
+ "@vue/devtools-api" "^6.2.1"
+
+vue-router@^4.1.6:
+ version "4.1.6"
+ resolved "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.6.tgz#b70303737e12b4814578d21d68d21618469375a1"
+ integrity sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==
+ dependencies:
+ "@vue/devtools-api" "^6.4.5"
+
+vue-template-compiler@^2.7.14:
+ version "2.7.14"
+ resolved "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz#4545b7dfb88090744c1577ae5ac3f964e61634b1"
+ integrity sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==
+ dependencies:
+ de-indent "^1.0.2"
+ he "^1.2.0"
+
+vue-tsc@^1.0.22:
+ version "1.0.24"
+ resolved "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.0.24.tgz#c0b270a7c8422408d3b6694fee61b39a4b9e4740"
+ integrity sha512-mmU1s5SAqE1nByQAiQnao9oU4vX+mSdsgI8H57SfKH6UVzq/jP9+Dbi2GaV+0b4Cn361d2ln8m6xeU60ApiEXg==
+ dependencies:
+ "@volar/vue-language-core" "1.0.24"
+ "@volar/vue-typescript" "1.0.24"
+
+vue3-seamless-scroll@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/vue3-seamless-scroll/-/vue3-seamless-scroll-1.2.0.tgz#8685c597d1d143b1e5c119b600422baa6252b6b6"
+ integrity sha512-2cKeIN5XjnYI08R0RVbvgpc1kgxp2zmE8CNeRVXvPk9lWox8m6bvYDCXrjl7q1qXXFh0KccBbJ7iFa1n5tu0RQ==
+ dependencies:
+ throttle-debounce "^3.0.1"
+
+vue@^3.2.45:
+ version "3.2.45"
+ resolved "https://registry.npmmirror.com/vue/-/vue-3.2.45.tgz#94a116784447eb7dbd892167784619fef379b3c8"
+ integrity sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==
+ dependencies:
+ "@vue/compiler-dom" "3.2.45"
+ "@vue/compiler-sfc" "3.2.45"
+ "@vue/runtime-dom" "3.2.45"
+ "@vue/server-renderer" "3.2.45"
+ "@vue/shared" "3.2.45"
+
+vuedraggable@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz#edece68adb8a4d9e06accff9dfc9040e66852270"
+ integrity sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==
+ dependencies:
+ sortablejs "1.14.0"
+
+webpack-sources@^3.2.3:
+ version "3.2.3"
+ resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
+ integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
+
+webpack-virtual-modules@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c"
+ integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==
+
+wildcard@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/wildcard/-/wildcard-1.1.2.tgz#a7020453084d8cd2efe70ba9d3696263de1710a5"
+ integrity sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==
+
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+y18n@^5.0.5:
+ version "5.0.8"
+ resolved "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
+ integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
+
+yallist@^3.0.2:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+
+yargs-parser@^21.1.1:
+ version "21.1.1"
+ resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
+ integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
+
+yargs@^17.5.1:
+ version "17.6.2"
+ resolved "https://registry.npmmirror.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541"
+ integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==
+ dependencies:
+ cliui "^8.0.1"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.3"
+ y18n "^5.0.5"
+ yargs-parser "^21.1.1"
+
+zrender@5.4.1:
+ version "5.4.1"
+ resolved "https://registry.npmmirror.com/zrender/-/zrender-5.4.1.tgz#892f864b885c71e1dc25dcb3c7a4ba42678d3f11"
+ integrity sha512-M4Z05BHWtajY2241EmMPHglDQAJ1UyHQcYsxDNzD9XLSkPDqMq4bB28v9Pb4mvHnVQ0GxyTklZ/69xCFP6RXBA==
+ dependencies:
+ tslib "2.3.0"